Large Personal Projects
Posted by Daniel Lyons Fri, 28 Sep 2007 08:18:00 GMT
The other day I was talking to a friend about what one does to unwind. I mentioned that I program for fun, and he immediately asked me how large the kind of program I write for fun is. I said, they almost never get beyond a couple hundred lines. Rarely do they surpass 100 lines. And this is with my usual commenting ratio of about a comment per line or two, with lots of whitespace. Contrast with my for-pay programs, which start in the thousands and reach up into the tens or (in one case perhaps) hundreds of thousands.
Michael’s son Adeo and I have been learning Inform 7 in tandem for much of the year. Most of my programs have been short explorations of a single theme or programming concept. It’s more natural to talk about an Inform program in artistic terms than a conventional program; let’s call these poems or vignettes. That’s the category most of my small programs fall under. Adeo, however, has been writing one extremely large program, clocking in at about 3000 “words,” which looks like 400 or 500 lines of code.
I usually stop myself from starting on projects that look like they’re going to get to that size. As I put it to Michael metaphorically, I never build a garage at home; just wrenches. I make tools for myself, but not applications. I would never dream of coming home to work on DanApp. I get stalled pretty early on with stupid architectural things.
Another friend was telling me recently about the importance to his relationship of taking one day at a time, corny as it sounds. Somehow, the belief that you can put it down and never come back is important to undertaking large tasks. My fear of starting a huge program is really a fear of maintaining a large program after it isn’t fun anymore. It’s fear of deciding 1000 lines in that it should have been written in a different language, or with a different data storage system. It’s a fear of time, or of having to work hard. Yet Adeo doesn’t harbor any fears about his large Inform story. He can walk away from it at any time—and it has been weeks since he’s worked on it. Someday he will probably stop working on it altogether, but it will be a silent kind of stopping, a finding of other things to work on.
Soon I’m going to be starting on a side project at home. What comes to mind is a tumblog, a blog consisting primarily of a list of links with a very small amount of commentary. This has become necessary because, through Reddit, Anarchaia, and a variety of other sources, I gather a lot of interesting links which I mostly email to my friends. This is handy for me and for them, because I get a record in my inbox and they don’t have to police these sites looking for interesting stuff. But it also sucks because I usually leave out people who would or might be interested, and because I never can find the link again even though it’s in my email somewhere. I’d particularly like for it to have a link back to some kind of personal wiki or CMS that I could set up for certain topics, based on what my room mate David Baird does for himself.
Immediately I am assaulted by various hangups. Which language should I use? I’ve more or less decided on Lisp, not just because I am having doubts about Haskell, but also because I want to learn it better. Even setting that up worries me. Will it hog resources on Bill’s server? Will people be able to hijack it through Slime (probably)? Should I use a database or a list in the language? What am I going to do with this blog? What about forward and backward compatibility with the URL? Separate subdomain?
If I were smart, I would try to just take it one day at a time and address each of these things in sequence. Instead I try to design it up front, eat the whole elephant in one bite. If I were smart, I would just do what Adeo does: work on it when I feel like it, making what I want to have happen, one day at a time.
Here’s hoping I can figure out how to do that.
