Concurrency is Coming

14 April 2006 at 16.09 • in Languages, Programming

This iMac I’m using is my last uniprocessor computer. After decades of predictions about parallelism, the multiprocessor machine is finally going mainstream. And now that multiple cores fit on a single chip, they’re going to multiply at a Moore’s-law pace.

So it’s about time we figured out how to do concurrent programming. OS-process parallelism can spread the load over a few cores; OS-thread parallelism can do a bit more; but how is your app going to handle a couple dozen cores a few years hence? Shared-state concurrency as practiced these days isn’t going to cut it. (But you’ve heard this already…)

We’re starting to see programming languages that take that challenge seriously. Erlang is the best-known example, though there are others: Haskell (with STM) and Oz come to mind.

In a few spare moments (my nearest equivalent to “spare time”), I’ve been hatching up ideas for a little highly-concurrent language of my own. I doubt anything will come of it before I ship Trifle, but then, who knows? I might add something to the towering babble of computer languages.

Learning Takes Time

6 April 2006 at 15.19 • in Trifle, Mac, Programming

I often feel that Trifle is progressing at a snail’s pace. Shouldn’t I have gotten more done by now? But in my clearer moments I remember that I’m not just developing an app, I’m learning a new platform (Mac OS X), framework (Cocoa), and language (Objective-C).

Learning takes time. There’s no getting around it. I’m not just talking about the direct time it takes to learn something, but also the false starts and fruitless investigations that go along with it.

Last week I thought up a couple of different ways to handle custom columns in Trifle. I picked a solution and spent several days coding it. This week I realized that it was the wrong choice; the other way would be simpler and easier. So I had to rip out the work I’d done and start over.

Or take Core Data. Trifle is an awfully database-ish app, so I had to investigate whether Core Data made sense for it. I’ve learned quite a bit about Core Data now, in multiple stints, but it still isn’t the right choice for Trifle.

I could call that wasted time, but it isn’t, really. It’s just part of the overhead of learning to operate in a new environment. Besides, learning is one of my favorite things to do. Maybe that’s what attracted me to programming in the first place: there’s always something new to learn.

Booklog: March

3 April 2006 at 10.52 • in Books

I read a lot last month–not just the books below, but also the first two volumes of Gene Wolfe’s Book of the Short Sun. But I’ll hold off on writing about those till I finish the third volume.

Fiction
Neverwhere — Neil Gaiman
Gaiman’s first solo novel, based on the BBC miniseries he created and wrote. An entertaining, relaxing book to reread; Gaiman’s light tone leavens a dark story.
Nonfiction
The Way of Chuang Tzu — Thomas Merton
Ancient Taoist writings rendered by a modern Catholic monk–an unexpected combination that really works, especially in the anecdotes of Chuang Tzu’s life.
Soul Proprietor — Jane Pollak
Another book on lifestyle entrepreneurship. The “101 lessons” format is a little forced, but Pollak makes up for it by telling an abundance of good stories.
Speak What We Feel — Frederick Buechner
A deeply thoughtful look at the lives of four great writers, and how the darknesses they faced were reflected in their work. As soon as I saw the writers Buechner chose–Shakespeare, Twain, Chesterton, and Gerard Manley Hopkins–I knew I had to read this.
A Whack on the Side of the Head — Roger von Oech
A classic creativity book that’s been on my read-that-someday list for years. I’m glad I finally read it: few books are both fun and thought-provoking, and this is one of them.
More Ready Than You Realize — Brian McLaren
McLaren tries to reclaim evangelism from its modern distortion into arm-twisting salesmanship. Not a lot here that I haven’t seen elsewhere, but it’s well-presented.
Universal Principles of Design — Lidwell, Holden, & Butler
I tracked this down after reading Don Norman’s glowing review. He’s right, it’s good.
Designing Interfaces — Jenifer Tidwell
A catalog of interface design patterns for software, general enough to apply to both desktop apps and web apps, but specific enough to give useful guidance.