preload
Apr 07

I’ve written here, in the past, about my belief that, by starting an Open Source project, you’re making a commitment to the world. It seems that Rod Johnson of Spring fame and owner of successful Open Source company Springsource agrees with me.

Whilst being interviewed during episode 238 of The Java Posse Rod commented that he felt “Open Source projects, like puppies, are for life not just Christmas”.

Apr 07

One of the notions central to Lean and ToC, is that you can increase productivity by limiting the release of materials into the system.

This is quite a difficult concept to get to grips with. Intuitively, it just doesn’t seem right. Emotionally, it feels that this is exactly the opposite of what the truth should be. One of the reasons I’ve always found it so hard to keep this ideal at the forefront of my mind is because I’ve never found a way to apply it to every-day life. I’ve lived it in the business world, I’ve not lived it in my personal life. Until now …

I’m a spree shopper. I rarely buy just one of anything. If I’m going shopping for CDs, I’ll come back with three. If I go for a wander in a book shop, I’ll buy four books. DVDs .. yup, I’ll come home with a pile. But here’s the funny thing I’ve noticed. If I buy three CDs, I’ll rarely listen to them all enough to enjoy them. If I buy four films on DVD, one or two will never get watched. Being overwhelmed with choice, my mind rejects several of the options. And once I’ve rejected them .. I rarely look back. The extra CDs and DVDs I buy are, in the purest sense, waste. Worst of all, though, is my book pile.

At the moment, I have about ten or twelve books in my ‘to read’ pile. The, fascinating thing though, is that, the bigger the pile gets the less energy I have for reading. To start reading, I need to make a choice. That choice gets harder, the more options there are. And, since I’ve already read some of these books, I’ve had to reject most of the books in this pile more than once. What if I pick the wrong one? Why did I decide not to read this book last time .. I must have had a reason?

Then, when I do pick a book and start reading, my doubts start. Would one of the other books be more interesting? More informative? More fun? Better written? More up-to-date? The list of doubts piles up.

Then I start to read more than one book simultaneously and things get worse.

So, what’s the solution? Well, I’m going to control the flow of materials into the system. I’ve now got a bag, and a pile. The pile is something of a misnomer since it is a pile of one. I’ve tossed all the books I was going to read, except the one I’m currently reading and one book that I’m going to read next into a bag. The bag is not a pile, it is unordered. There is no weighting or relative importance that can be implied by position in the bag.

My new reading workflow:

  • I’m reading the book I’m reading.
  • I know what I’m going to read next.
  • When I finish a book, I take my next book from the pile-of-one next to my bed and I can then pull/replenish the pile-of-one by choosing a new book from the bag.
  • At any time before finishing the book I’m on, I can swap out the-pile-of-one.

I can’t explain exactly why this makes me feel better, but it does. There’s no longer this daunting meter high pile of books I’ve “got to get through”. I’ve got the book I’m reading, the book I’m reading next, and an opportunity to choose, not an obligation.

The overlap between GTD, ToC and Lean feels very strong here. I’ve always thought of GTD as Lean/Agile for one.

This feels good now, I hope it works out. I shall report back on my experiences.

Apr 01

Over the last couple of weeks I’ve been exploring and programming in Erlang. It has been an interesting, informative but challenging and frustrating experience.

Do you remember the scene in Young Frankenstein where Gene Wilder, playing Frankenstein and … whoever it was, playing the monster do the soft-shoe-shuffle and sing ‘Putting On The Ritz’? Well, the gag is that the monster, despite his grotesque, clumsy, clumsily-assembled form carries out the dance immaculately until, right at the end he sings his one line of the song. When he howls, “Puttin’ on a riiiitz’ I nearly wet myself laughing. Erlang’s like that.

Erlang is a horrid language, Damien Katz recently pointed out what he considered to be the flaws of the language, and I’d largely agree with his take on things. Actually things are worse than he makes out, he doesn’t critique the documentation which is poor and he doesn’t point out the problems of cruft and half-implemented abandoned features in the implementation. In response to his posting, someone in the comments points out that Erlang does have a package/namespace mechanism which is true. The topic of packages came up last week on the mailing list - someone pointed out that it didn’t seem to work properly. The answer they got was that that was put in as an experiment at the start of the decade, it didn’t work properly and that the implementers might take it back out at some point .. if they got around to it. Other features like module attributes have a similar story.

Katz chops away at some of, what he considers to be, the more egregious ugliness of the language, he doesn’t bother with the minor warts. But I find that there are enough of these warts that they become irksome. For example, macros have to start with a ? which leaves you code looking confused and ugly - why are there so many questions and so few answers? Lisp macros fit in with the language, they are indistinguishable from normal forms and so they create an extensible, grow-able language. Erlang macros stand out, they feel like something you should avoid because they are strange and ugly.

But, all these things said, I still find that Erlang and OTP - like the monster’s dance - has moments of grace, beauty and style. There are things in there to love. Erlang does processes and monitoring better than anything I’ve ever seen, it truly is remarkable in this aspect. If I needed to write an application where concurrency was more important than anything else, I might well look to Erlang.

So, Erlang, I’ve learned from you - I’m a better programmer for having spent a couple of weeks with you. But, for now, all I see is a monster capable of some clever tricks … and you’re going back in the box, until I need you.