Category Archives: Uncategorized


There are 2 kinds of people in the world:
1.people who begin their array indexes at 1
1.people who begin their array indexes at 0

I had one of the more surreal experiences of my life today. Because I keep my resume up to date on Monster, I am continually receiving email and phone calls from recruiters. Todays email took the cake though. As I read it over, trying to distill the actual job requirements from five paragraphs of boilerplate about Windows system administration, I realized that it was for a position on my team.

And then, after a minute of having that sink in, I realized the ad was actually for a night-shift operator of the software I’ve spent the last three months developing! It was a proud moment, sort of.

More AI.

Knock Knock.
Who’s there?
I don’t even know.

Building a little bit on the fascinatingness of the maze-running program below, I decided to take another of my old projects and update it. This program will run on Windows XP and newer computers and it is totally awesome. It’s called CrunchTime, and it is a predictive classifier that builds decision trees.

Now even if you don’t have any familiarity with artificial intelligence, you probably know what decision trees are. Similar to flowcharts, they start at the top with a question. For example, “Will the toaster break today?” The goal of the decision tree is to predict the answer to this question. So it doesn’t know directly whether the toaster will break today or not, but it might have access to some ancillary data. For instance, it might know whether the toaster broke yesterday, whether the toaster has been submerged recently, or what color the ceiling tile is.

The algorithm inside CrunchTime goes through all of the example data you give it and decides which of these questions is most important. That is, it determines which series of questions, in which order, are the most effective at predicting the answer to the question you care about (“Will the toaster break today?” Inquiring minds want to know!)

The program is awesome and the download is free. Get a copy and try it out, eh?

Q Learning Algorithm: AI and Rats

I put The Infamous Software Rat, a perl implementation of the Q Learning algorithm, back up on the projects page.

The Q learning algorithm is a nice, simple introduction to machine learning. The math is not too hard, the concept is reasonably easy to wrap your head around, there are a bunch of illustrative diagrams, and I’ve even included the source code, if you have a perl interpreter and want to run it for yourself.

projects are (is) back


[update: a new version is available already! click on the picture to download it]

I know that you had really, really missed seeing the little red tab that said “projects” at the top of the page. But I killed a bunch of projects when I changed web hosts a while ago, and I wasn’t doing anything particularly interesting computer-wise, so I just took it out.

As part of my continuing job search, though, I thought I would brush up on a couple of my more out of date skills. So I wrote a little program for calculating power output (in watts) for running. This is the C# .NET version of the program. I used C#, because everyone on and similar places seems to want a C# programmer, and no one wants to hear whether you think one programming language is basically the same as another. Or more accurately, no one would ever give you a chance to say that.

I don’t mean to seem jaded at the relatively tender age of 27, but this makes me want to find a new industry. Every time I’ve taken a new job, I’ve had to learn at least one new one. This experience is not unique to software: any time anyone takes a new job anywhere, they have to learn new skills and new ways of doing things. It makes me a little ticked off to imagine that software departments think what they are doing is so unique that no one who doesn’t already work there could possibly understand what they do. I’ve worked in fifteen programming languages, five kinds of databases, and four web servers. They are all pretty much the same. There, I said it.

See, I can talk a big game, but that hasn’t prevented me from brushing up on SQL Server, C#, and VB. Sigh.

The Yawning Nephews


Yet another good name for a band. I had this great idea, why not start a band called “Missing Dog”. The publicity implications are huge for this: just print up some flyers with “Missing Dog” in large text, and post them all over town. Everyone stops to read these signs.


The Yawning Nephews would need a different publicity strategy, notwithstanding the fact that they probably don’t want to start a band together. They already make a pretty solid cricket team. These photos are from this past Christmas, so you’ll just have to imagine each of them six inches taller. You know how quickly they grow.


We had a grand time over Christmas: both Ned and David did a great job driving the boat we rented one afternoon, and we hacked some coconuts to pieces with a rusty machete. Sebastian was able to practice sitting up. Everyone had a chance to practice opening their mouths really wide. Must be something about having your picture taken that makes people open their mouths really wide. It could not possibly have been an overzealous uncle. “OK … now open your mouth really wide!” No, definitely not that.

working hard, or hardly working

it’s sort of ironic to post this right after skipping my first workout in four weeks. yesterday i had a threshold run and a moderate bike ride, and i was so whipped after the run that i couldn’t bring myself to face the bike workout. so i skipped it. i skipped a bike workout four weeks ago, too, so i feel real guilty about that.

one in the early spring of my senior year of college, i was recovering from the flu, and talking with track coach Pete Farwell about what workout i ought to do that day. he said there would be two groups: one of middle-distance guys doing something like 3 times 2 minutes fast – 1 minute easy – 1 minute fast, and one of longer distance guys doing something like 3 times 10 minutes hard with 4 minutes rest. he said i should go with the longer distance guys.

i asked him, “oh, is that better because i’ll get to run a little slower, so there will be less injury risk?”

and he said, “no, will, it’s better because it’s more.”

that stuck with me. in the quest for faster race times, so often we’re concerned about “overtraining” or “overreaching” or somehow hurting performance by working too hard. ninety-nine percent of the time, though, the thing to do isn’t to rest more, its to train more. it’s not going to be easy, and it’s not going to feel great, and it probably won’t make you feel self-actualized. it is going to make you fitter, and it is going to make you faster, and that was the whole point in the first place.