Dogfood Day

I’ve not blogged much this year; at first I was just tired and uninterested, but for the last month-and-a-half I’ve been working on Notebook, an application I first wrote in 2000 and have been developing on and off ever since. Although I’ve been using it daily, the last release (representing the last serious work) was in 2005. Why the gap? Well….

When I started work on Notebook, it was the first serious Tcl/Tk application I’d attempted. I learned an awful lot about writing Tcl/Tk applications from it, and those early experiments also led to my developing Snit, a Tcl/Tk object framework that’s been increasingly popular over the years. Now, up until May of 2005 my day job mostly involved writing software in C. I wrote a few tools in Tcl/Tk, but most of my Tcl/Tk work was at home, on my own time. In May of 2005 I started a new project, one written almost entirely in Tcl/Tk. My experience writing Notebook stood me in good stead. The project’s schedule was ambitious, and using Tcl/Tk allowed to work very fast. In short, I’ve spent the last two years of my working life coding my brains out in Tcl/Tk. This has had two major effects. First, I’ve learned an awful lot more about writing large applications in Tcl/Tk; and second, I’ve had next to no energy to do any amount of programming at home on my own time. And so Notebook has languished.

About a month-and-a-half ago, though I got motivated to start working on it again. And this time I wanted to Do The Job Right–to make use of everything I’ve learned over the last two years, and to build an application that I’ll have an easier time coming back to after time spent working on other things. In particular, there were some serious infrastructure changes I wanted to make. And so I started building all new infrastructure from the ground up, writing thorough documentation and test suites as I went along, as well as a variety of new tools.

And today, finally, I was able to hack a copy of the old application to use much of the new infrastructure. For the first time I am now able to edit Notebook files using the code I’ve been working on for the last month-and-a-half. Woo-hoo.

So what about “Dogfood Day”? Since the very earliest days I’ve always kept all of my Notebook development notes in a Notebook file, and used the development version of Notebook to browse and edit them. During this recent effort I’d not been able to do that…until today.

There’s a practice in software development called “Eating Your Own Dogfood”. It means that you actually use the software you’re writing, rather than somebody else’s. If a Microsoft developer goes home from work and surfs the Web using Firefox or Safari rather than Internet Explorer, he’s not eating his own dogfood.

Consequently, “Dogfood Day” is the day that a new product is sufficiently mature that the developers can start using the development version in their work. So today is Dogfood Day at our house; and Gosh! it tastes good.

The Horrible Thing About Smeagols

The horrible thing about Smeagols
  Is Smeagols are horrible things.
Their eyes they are made out of lanterns (my Precious)
  Their hair it is made out of strings.

Thievesie, Sneaksie, Tricksy, Precious,
  Mine, mine, mine, mine, mine!

But the most horrible thing about Smeagols
  Is their Precious for which they pine.

Well, that and the throttling, and the eating raw meat, and the treachery,
and….

— J.R.R. Milne, The Mount at Doom Corner

(Well, really, Ian Hamet and myself….)