zw

Marching Ants

Yesterday, Apple donated the source code for MacPaint into the Computer History Museum. MacPaint was a bit before my time, but learning more about it, it's amazing the influence it's had on every graphics program since.

When Bill Atkinson was writing MacPaint, he had to figure out how to do rectangular selection. The solution he came up1 with was the—now standard—animating dashed border rectangle, which his colleague dubbed "Marching Ants". The rectangular selection tool looks and works exactly the same today. In fact, if you look at the entire user interface for MacPaint (1984) compared to Fireworks CS5 (2010), they're really not much different.

MacPaint Fireworks CS5

The lasso, the paint bucket tool, the rectangular selection tool, and floating tool palette all first appeared in MacPaint. Incredible, 26 years later and the same exact solutions are in place today. For all intents and purposes, Bill Atkinson solved most of the problems around creating a graphics program in 1984, and it's just be refined ever since.

I feel like most programmers today don't really solve problems. We just find existing solutions and put them into place. In many ways, this is good. We don't want to reinvent the wheel for every project as we should focus on the unique challenges in each app. But at some point, the wheel needs to be reinvented because its design was limited by the constraints of its time. Marching ants is a simple and elegant solution to the rectangular selection problem, but if Bill Atkinson had 2GB of memory, instead of the 128K he was working with, would he arrived at the same solution? Maybe he would have done some sort of semi-transparent overlay that wasn't possible on that hardware. Maybe not, it's probably still the best solution, but it's worth thinking about.

1 You should read all the stories of the creation of the original Macintosh on Folklore.org, they're great