February 16th, 2007
[This review originally appeared in my personal blog on Sept 8, 2005. I’m reposting it by request.]
I’m helping out with a study group for “Head First Design Patterns,” which just finished chapter 6. On the whole, it’s a pretty good introduction to software design patterns — way more accessible than the seminal work by the Gang of Four; however, the examples sometimes make my head hurt. I can’t imagine what they’re doing to the heads of the beginners in the group. Coming up with decent examples is the hardest thing to do in expository writing, and I certainly give the authors an E for effort in creativity, but I wish they had been a little less concerned with making their examples “hip” and a little more concerned with making them appropriate.
Continue Reading »
Read more: Architecture and Design | Comments (0)
February 10th, 2007
Mid last year, Kurt Williams wrote “Beware of Simplicity” in development frameworks. According to him, new and fresh frameworks can only claim to be simple because they are immature. All frameworks are doomed to growing more complex as they grow in features. I can’t argue with that. It seems to me, therefore, that the best frameworks are the ones that do the best job of hiding that complexity — either because of the innate architecture of the framework, or by virtue of the tools and practices that deal with the complexity for you. A framework can have all of the under-the-hood complexity it needs. It’s the day-to-day, in-your-face complexity that I care about.
In the field of cognitive psychology there’s this so-called “Magic Number 7.” Basically, the idea is that humans can only keep 7 disjointed “things”, plus or minus two, in short-term memory at once. To see what I mean, study the following list of words for a minute. Then, turn away and write down as many as you can from memory:
Continue Reading »
Read more: Architecture and Design | Comments (0)
February 4th, 2007
“How did you do that?” is a question I get time and again whenever someone sees me select a column of text and manipulate it. The answer is, you hold down the Alt key as you click-and-drag the mouse.
“Okay, but what program are you talking about?”
Lots of ‘em, it turns out. I first noticed this feature in Miscrosoft Word, but all of my favorite programs offer it, including TextPad and Eclipse. This must be one of the best kept secrets of user-interface standards, and it’s a shame, because I swear this little time-saver alone accounts for hours and hours of my productivity every year.
Continue Reading »
Read more: Programming | Comments (0)
February 3rd, 2007
In my personal blog I wrote about how the blank page syndrome can lead to procrastination. I gave an example of how it’s often difficult to know where to start when faced with a vaguely written bug report or an enhancement request. I suggested that one way to gain clarity is to skip ahead to writing the bug-resolution documentation as if you had already done the work. What will be the instructions to the end user on how to take advantage of this change?
Quoting myself, “Then, as I do the work for real, it gives me an acid test to know if I’m on the right track. In other words, does the software now work as advertised? A side benefit of this end-first exercise is that it often reveals latent issues and questions for which I have no answers. It also helps me to enumerate any assumptions that I’ve been making, which perhaps ought to be validated.”
This is a very much akin to Test-First Development (a.k.a. Test-Driven Development, or TDD for short), of which I am a huge proponent. I’d almost say that what I described above is a poor man’s version of TDD, except that there is no cost to doing TDD. Unit testing tools are free for the asking.
Read more: Programming | Comments (0)
February 1st, 2007
Last week I submitted two patches to the TimeAndMoney open source project on SourceForge (timeandmoney.domainlanguage.com/). One patch has to do with localization of money. The other patch has to do with the persistence of money, via Hibernate, to/from a database (with examples for both MS SQL, and Oracle).
Continue Reading »
Read more: Programming | Comments (0)