Dogfooding

One of the best endorsements a product can get is when its creators are willing to use it themselves: would you trust a parachute manufacturer whose CEO refuses to use his own chutes? The idea of using your own product is called "eating your own dogfood" or "dogfooding"; the concept isn't unique to programming, but you don't hear the term used much outside of the computer industry.

I bring this up because I've started eating my own dog food with my latest side project: a Web publishing tool I'm calling Lithograph. Although it isn't anywhere close to finished, I've started using it to build the site you're reading right now.

Blogging programs are a dime a dozen, but unlike most of them, Lithograph isn't a web application that runs on my server: it's a Mac app I run on my laptop.

Why Not a Web App?

There's a variety of reasons, but it's mostly because I don't think I would learn anything. Sure, I could implement it using a new language, or a different framework, but at the end of the day they're all really the same.

I've been meaning to learn the Cocoa API for a while now, and building Lithograph has been a great learning experience (expect to see some more journal entries about Cocoa and Mac programming). The concepts behind building GUI software for the desktop are totally different from web apps, and it's refreshing to have a change of pace.

As much as I love the Web, I don't think HTML, CSS, and Javascript are quite ready1 to deliver the same kind of experience as native applications. I'm definitely looking forward to writing some custom UI controls and playing with Core Animation eye-candy.

Obligatory Screenshot

The UI is far from perfect, and it's going to change as I keep working on it, but here's what it looks like as of today:

Lithograph Screenshot

It's not much, but it's mine, and I'm pumped about working on it.


  1. The Canvas API and Google Gears are steps in the right direction, though.