Running short of excuses

I’ve been saying (to myself, anyway) for several years that the main thing stopping me from learning Objective-C and NeXTStep Cocoa programming — that is to say, contemporary Mac programming — was my addiction to the refactoring support I get from Java tools like IDEA and Eclipse. Meanwhile, it’s hasn’t been hard to find Obj-C programmers dismissing any demand for automated refactoring tools as lazy whinging from weak-minded Java monkeys.

But, lo and behold, Apple’s gone and added refactoring support in Xcode 3. It’s fairly limited (where’s my Safe Delete??) so far, but it does include Fowler’s “refactoring Rubicon,” Extract Method. In fact, it extends it to “Extract Function” as well, since Obj-C supports top-level functions. (So Xcode 4 ought to have all kinds of crazy refactorings.)

So, “no refactoring tools” clearly can’t be my excuse any more for not learning Obj-C / Cocoa. Gotta think of something else. “After I learn Flex,” maybe?

Don’t get me wrong (updated)

I love my little Apple Wireless Chiclet Keyboard. But it — particularly this UK model I’ve got (compare the layouts here), which was the only one Apple Switzerland would sell me that had the Y and Z keys and most of the punctuation in the right places — has got to be the worst Emacs keyboard I’ve ever used.

Of course trying to work with it in my lap while slouched in an IKEA POÄNG might not be the best idea either.

Update: On closer inspection, that’s not my keyboard either — it shares some of the annoyances, but not all. I’ll have to take a picture.

13949712720901ForOSX (updated)

(Crossposted to Chrononautic Log.)

I’m hoping I’ll have time to post the handful of pictures I took in Antwerp before I head back to Pacific Standard Time on Sunday, and maybe give a more full report on the trip. But one thing my voyage to the City of Eternal Night did was remind me was that once upon a time (in the age of innocence, you know, before Condé Nast bought Wired magazine) I thought technology was fun. It also made me think maybe I wasn’t, back then, just being young and Slashdot.

I came back to programming after grad school with the idea that it was an interlude, that I’d work for a year or two, pay off some bills, and then do something classy, like move to Berkeley or Ann Arbor and get myself a history PhD. Seven years, one popped tech bubble, one layoff, three jobs and a lot of credit cards later, I realize I’ve still been thinking of my day job that way, as something temporary, despite all evidence to the contrary.

The way I see it, I’ve got two realistic choices.

  1. There are six million professional Java programmers working today. All six million of those programmers are busily pumping new code into everything from the back ends of hedge funds to the front end of the Large Hadron Collider, and if the past is any guide, a lot of that code will be around, and needing maintenance, for a long, long time. I’d say right now, conservatively, I’m probably in the top half million. I can probably keep shuffling from day job to day job, without giving any serious thought to career security, for another fifteen or twenty years — at which point I’ll suddenly become totally unemployable, but we can burn that bridge when we get to it (and anyway, with luck I’ll be in management by then).
  2. From the edge of the crowd, it’s easy to lose sight of the fact that somewhere in the middle things are actually happening, that interesting people are doing interesting work, that writing software can be interesting in itself and not just necessary drudgery on the way to having software that (one always hopes, though in practice it’s often far, far from the case) does something interesting. The question is how to get to that place and become one of those people — at least, to find out where I really fall among that six million. (Apart from the obvious way, that is, which would be to start life over fifteen years ago and get a PhD in computer science from Carnegie Mellon.)

At minimum, option 2 probably involves — at some point — moving back to Silicon Valley. (Compare: film::LA, publishing::NYC, politics::DC, oil::Houston. Yes, you can do good work elsewhere, but you’re just not going to find the same support network or the same concentration of the top people in the field.) That would feel a little weird, but it wouldn’t necessarily be a disaster. Anywhere with a wide selection of good Mexican, Chinese, Japanese, Vietnamese, Ethiopian, Afghani and Indian food can’t be all bad.

But that decision’s at least a year or two off. In the mean time, I can at least start paying some attention to tech issues again. At some point maybe I’ll start a second blog [Update: Ye’re lookin’ at it], so as not to bore all of you folks with natter about closures and superpackages and run-time type inference. Till then, well, you’ll just have to put up with the occasional incomprehensible post title — complete with incomprehensible context:

Dear Apple,

How am I supposed to make any progress in my career when you still haven’t ported Java 6 to the Mac?


A Loyal Customer