Friday, June 26, 2009

A modest proposal on Iran

"First, do no harm." Before we start in with the strafing runs, I have a suggestion:

The US should offer citizenship to everyone in Iran. Allow anyone who wants to escape from the mess over there to come here and start a new life.

Had we done this with the Jews during WWII it would have saved a lot of lives. This policy is guaranteed to save lives and reduce human suffering and - unlike warfare - it does so without much risk of causing more suffering and loss of life. It also would constitute a huge PR win - every dissident who moves here demonstrates a lack of confidence in the existing regime.

People are suffering and we should something about that. We could give those people the right of exit. If we're going to do anything at all, summon the political will to do that first. It's cheap, it's moral, and it doesn't put any soldiers or civilians from either side in harm's way.

Monday, June 08, 2009

Why do iPhone Development Tools Suck?

So I'm finally getting started with iPhone Development and I just have one question: Is there some reason the integration between Interface Builder and XCode is so crappy? When I browse the various iPhone tutorials it seems like 90% of the coding they have to demonstrate is stuff the tools ought to automatically do for you. And did, way back in the days of the Newton Toolkit. Does Apple not use its own tools? Are the various dev teams not on speaking terms? Or does somebody at Apple just hate developers? :-)

I'm beginning to wonder if I shouldn't bother with iPhone apps but should instead write a decent Interface Builder. Something where, when I drag a button into a view, inspect the button, give it a name, notice that it has some sort of on-click event associated with it, I can double-click on the name of that event to immediately edit the code that will get called when that event happens. Without having to declare that method or name it - the stub gets created for me in an appropriate location. I'd just write the stuff that goes *inside* the stub function, thereby eliminating multiple opportunities to type something wrong or leave something off and screw it up. Also eliminating multiple context switches back and forth between IB and XC. A good tool should fade into the background; this does the opposite. I still could move the function elsewhere or call it in a different way if I wanted to, but I wouldn't have to; the base case would just work.

UPDATE: It looks like I need to check out accessorizor. It doesn't fix the problems with Interface Builder integration but it can automate away a lot of tedious and error-prone Objective C structure.