Why am I unhappy with Xcode 4 as an IDE?

On May 28, 2011, in General, by Neil Stevens

I was asked today on a forum why I am unhappy with Xcode as an IDE, and how exactly it forces me to do things in a certain way in order to use it. Here was my reply, with minimal editing done.

I’d rather be able to pick and choose what parts of an IDE I’d like to use, and which I’d rather not use. I’m going to use Xcode here as my example since it’s the first IDE I’ve tolerated in years.

What does an IDE do, at core? It integrates different tools. It integrates your core text editor (that if you’re like me you’re going to spend more time in than everything else combined) with your build tool, your debugger, your profiler, your interface designer, your documentation, and even source control.

A good IDE isn’t going to make you use any one particular flavor of any of those tools. The more poorly designed the IDE, the more you’re wedded to one or another.

Xcode 4 just happened to take the one thing I use the most, the text editor, and mandates you use its flavor of that to be able to use any of the other integration. I have to have it bring up things in its text editor to make use of its build logs, and I have to bring up things it its text editor to make use of its debugger, etc, so Xcode 4 has no value to me. Its integration is counterproductive. Ideally I could just close the window… but you can’t close its text editor window even! It’s all one giant, poorly-designed clutter of an interface.

There are other simple but practical reasons this ruins it for me. I like to have many editor windows open. At times I like to have several docs windows open.

So Xcode has been reduced to me to being a way of generating xcodebuild configurations, and a way of uploading iPhone and iPad test builds onto the hardware. I can use nothing else it does without having its single text editor window shoved in my face, with its editor that isn’t the mature, sophisticated one I use for everything else.

So, I blew a lot of my spare development time last week not actually making progress, but rather figuring out how to get by without loading Xcode. I’ve done that now fortunately. For iOS dev I’ve even gotten an xcodebuild + Makefile process going to run things in the simulator. I now only need to load Xcode when I make changes to the build, because Xcode projects are not really written for human readability. [insert rant against XML]

Integration is great when you want to use every single tool that’s integrated together. But just like some people wanted to use MS Windows without MS Internet Explorer, so too do I want to use some of the Xcode tools without its text editor.

Tagged with:
 

Getting by without Xcode

On May 27, 2011, in General, by Neil Stevens

So I’m back to using a Makefile for everyday development. In a manner of speaking. I’m still using Xcode projects because it’s hard to get around that. But when I don’t have to make any changes to my Xcode project, I don’t have to have my Xcode project open. Instead, I’m using xcodebuild. However Xcodebuild command lines get long, so… yup. I’m using a Makefile to store those commands:

TARGET = KhrisaliusTactics
CONFIGURATION = Debug
SDK = iphonesimulator4.3
DSTROOT = ~/"Library/Application Support/iPhone Simulator/4.3.2"

SIM = "/Developer/Platforms/iPhoneSimulator.platform/Developer/Applications/iPhone Simulator.app"
CMD = xcodebuild -target $(TARGET) -configuration $(CONFIGURATION) -sdk $(SDK)
DSTDIR = $(DSTROOT)/Applications/$(TARGET)
DSTAPP = $(DSTDIR)/$(TARGET).app

all:
	$(CMD)

clean:
	$(CMD) clean

install:
	$(CMD) install DSTROOT=$(DSTROOT)
	mkdir -p $(DSTDIR)
	rm -rf $(DSTAPP)
	mv $(DSTROOT)/Applications/$(TARGET).app $(DSTDIR)

simulator:
	open -a $(SIM)

run:
	$(SIM)"/Contents/MacOS/iPhone Simulator" -SimulateApplication $(DSTAPP)/$(TARGET)

kill:
	killall $(TARGET)

debug:
	`xcodebuild -sdk $(SDK) -find gdb` -waitfor $(TARGET)
Tagged with:
 

Say it ain’t so, Apple: The ruining of Xcode

On May 25, 2011, in General, by Neil Stevens

So despite, or is it because, I’m hopefully releasing a new game in the fall, I upgraded my Xcode today from 3 to 4. I was horrified to find out that this upgrade broke the most basic of features an IDE can provide: editing code. There’s now no way to integrate Vim with Xcode in the new version. This is so terribly disappointing. It’s a major step back, and now Xcode works against me, not with me.

Relatedly, it now takes up at a minimum much more screen real estate, since you can’t make the editor part of the window go away. I only have finite desktop space, so this is even more of a hindrance. It’s to the point where I realistically would be hurt by keeping Xcode running when I’m not making changes to the build process. The rest of the time I’m now basically forced to use xcodebuild from iTerm.

I’ve long been a defender of Xcode, but this is such a basic thing, and it’s just ruined. Say it ain’t so. Say it ain’t so.

Tagged with:
 

Nima Jooyandeh facts.