This is a di­rec­to­ry of some small pieces of open-source soft­ware I’ve writ­ten over the years. All the big pieces of soft­ware I’ve worked on have been in the ser­vice of one com­pa­ny or an­oth­er, and are with­out ex­cep­tion now dis­card­ed. How­ev­er, these lit­tle morsels live on. There’s a les­son in that.

Bon­nie · First writ­ten in 1989-1990, while I was work­ing on the New Ox­ford English Dic­tionary Pro­ject at the Univer­si­ty of Water­loo. The elec­tron­ic text of the dic­tio­nary was 572M, and we were us­ing 16M Sun work­sta­tion­s, so we re­al­ly cared about I/O a lot.

Bon­nie reads and writes files, character-at-a-time and block-at-a-time, and does a bunch of par­al­lel ran­dom seek­ing. The best ex­e­ge­sis of what it all means is in the com­ments in the file Bon­nie.c. Bonnie’s re­al­ly OK, Li­nus Tor­valds once called it a rea­son­able disk per­for­mance bench­mark and I think that’s fair.

There is an­oth­er ver­sion of Bon­nie, Bon­nie++, de­vel­oped by Rus­sell Cok­er, which ap­pears both at his site and Source­forge; it is in C++ and in­cludes many tests that Bon­nie doesn't. It works around the 32-bit lim­it by scat­ter­ing the da­ta across mul­ti­ple files.

Re­cent ver­sions of plain ol’ Bon­nie add nicer re­port­ing and the op­tion of ran­dom­iz­ing the on-disk data, to work around sneaky op­ti­miza­tions such as those ZFS does. The changes are de­scribed in Bon­nie 64 and Filesys­tem Les­sons.

The Bon­nie source code now lives at Google Code.

The quaint old Orig­i­nal Bon­nie Web Page sur­vives at our fam­i­ly Tex­tu­al­i­ty.­com site.

There’s a ver­sion over at Source­forge but I just hat­ed the in­ter­face and per­for­mance and re­li­a­bil­i­ty there, so please ig­nore it.

Genx · This is a li­brary in the C lan­guage for ef­fi­cient gen­er­a­tion of XML. The XML that’s gen­er­at­ed is “canonical”. It’s been sit­ting at “Final Beta” sta­tus since the first half of 2004, even though it’s used in pro­duc­tion here and there around the Net.

It’s de­scribed, with point­ers to docs and a source tar­ball, in Genx Sta­tus.

Ustr · Ustr is a Ja­va li­brary I wrote some­time in the 2001-2002 time­frame; it deals ef­fi­cient­ly with text en­cod­ed as UTF-8 strings and pro­vides all the old C-language prim­i­tives: str­cmp, str­cpy, and friend­s, along with es­sen­tial­ly all the java.lang.String meth­od­s.

There’s a longer write-up in Yoost­er, v0.1.

At one point JRu­by was think­ing of us­ing it, so there’s a Java-4-ized ver­sion some­where over in the JRu­by source. I now sus­pect they won’t use it, and if that be­comes clear, will find a home for it in some public-facing source repos­i­to­ry.

The Ape · The name stands for Atom Pro­to­col Ex­er­cis­er, and that’s what it does. It’s writ­ten in Ruby, and is de­signed to run on the We­b, with a nice HTML in­ter­face de­scrib­ing its in­ter­ac­tions with the APP serv­er un­der test.

The Ape is now a Ru­by Gem, and is host­ed at RubyForge.

There is plen­ty of dis­cus­sion here at on­go­ing.

mod­_atom · This is a C-language Apache mod­ule, still un­der con­struc­tion, which im­ple­ments the serv­er side of the Atom pro­to­col. There’s lots of dis­cus­sion here at on­go­ing, and the code is at Pro­ject Ke­nai.

author · Dad · software · colophon · rights
Random image, linked to its containing fragment

By .

I am an employee
of, but
the opinions expressed here
are my own, and no other party
necessarily agrees with them.

A full disclosure of my
professional interests is
on the author page.