Publications
Hacking Knoppix
I wrote chapter 7, "Clustering for Knoppix," for Wiley's Hacking Knoppix. It was published in early 2006.
The Art of Computer Programming Reading Group
I started a reading group to cover Knuth's The Art of Computer Programming in a year. That's about 1500 dense pages on theoretical computer science in forty-something weeks. The writeup and schedule are available at the TAoCP RG Homepage.
Not surprisingly, after a very short period of time, this fell to the wayside. The page and schedule are left up for anyone who has interest in their own push through TAoCP.
Art
Muralizer
Muralizer is a drawbot in the vein of Hektor. It can be thought of as a plotter, but one that draws on walls instead of sheets of paper in a bed. Muralizer will allow anyone to take a vector graphics file (such as those produced by Adobe Illustrator or Inkscape) and turn it into a mural. This project involves XML parsing (SVG), slightly crazy math (converting x-y cubic bézier curves into stepper motor controls), microcontroller code, and physical design. More details forthcoming as the project gels further.
Perceptron
Perceptron is an interactive dancefloor project headed by Jean Rintoul. Using an array of ultrasonic sensors and video capture with computer vision, music and visuals are generated. Perceptron was first shown at False Profit's Alchemy, and is currently being refined based on the lessons learned from that showing. (Perceptron homepage)
Software
libpuz
PUZ is a file format used to store crossword puzzles. The format uses many different checksums and various magic values; none of this was documented. I spent about a week's worth of time (over the course of a month) deducing the checksum routine and then figuring out how it's applied to the data. To finish off, i wrote a library that implements the format, for both reading and writing PUZ files. The end result is PUZ File Format Specification and libpuz(-latest).tar.gz.
Marginalia
Marginalia was a firefox plugin which allowed you to add marginalia (notes in the margin) to webpages. It let you add these notes to a given position in a given paragraph of a webpage. I wrote this while at ibiblio, but it never really took off outside myself. Since then, other people have done the same thing (some believing there's a business model to be found), but it's hard to keep track of which projects are still around, so I won't even try. (Marginalia homepage)
Dragon Character Trainer
This isn't really "my" project, per-se, but it's something I was heavily involved in. dragon-char is a Chinese character (Hanzi) training program for the Palm. You can find more information about it at the Dragon Character Homepage.
HEBCI
HEBCI is a technique that allows a web form handler to transparently detect the character set its data was encoded with. A complete writeup can be had at the HEBCI Homepage.
Huffman Demo (Haskell)
This is a demo/framework app, written in Haskell. It's a cheat sheet of sorts for me, used to bootstrap new Haskell projects. Because it's written in Literate Haskell, its documentation is a PDF. You can look at Huffman documentation, or just download HuffmanDemo-0.0.tar.gz.
libedio
A general-purpose network IO library with some handy unixy bits. Basically, it allows you to quickly write network client code without having to deal with all the networking-specific bits (buffering, etc), which is really convenient. More information is available at the libedio Homepage.
PortMuxer
Once upon a time, I worked a crappy job doing crappy work. At this
job, we didn't have Real Internet Access. We did, however, have access
to port 80, though it went through a slightly odd proxy. The important
part is that it didn't mess up stream connections. So, i wrote a
program that multiplexes a listener port, allowing HTTP, SSH, and
telnet over the same port. Quite handy. Still a little rough around
the edges, but should be coming along nicely when i get the time to
actually work on it.
Download Latest
PortMuxer.