In between beach time and rainforest time, I’ve been coding away on genx; herewith some impressions with one important lesson and an interesting bit of history.
History of UTF-8 · For Genx I had to code both a UTF-8 reader and a writer. This is the maybe the fourth time in my life I’ve done this, each time straight by hand from the specs, with never a serious bug. Despite its kludginess and bigotry, it really works well. Anyhow, the other day I ran across Rob Pike’s memoir of UTF-8’s invention, which is worth reading if you’re that kind of a geek (and I know that some of you are).
Coding Lessons · It may be 2004, but I’m spending a lot of coding time in more or less exactly the same environment I was using in 1989; a bunch of Emacs buffers, one keystroke to compile & test, another to launch the debugger. Has nothing changed?
Well, one thing has. Genx is being built using (mostly) Test-Driven Development methods. The testing source code is slightly smaller, and object code is slightly larger, than the Genx code itself. For low-level core infrastructural pieces, the addictiveness of this approach is just beyond words.
Schedule · I was going to post the first pre-release today; it’s all written and the documentation is half there. But it’s been done entirely on my Mac OS X box, and when I copied it from the Internet Cafe in Maroochydore to the linux box in my basement at home, the test suite turned up 22 bugs. Blecch. Soon.