Code
An unordered, incomplete list of projects I'm working on or have worked on. I have a Github page, one on Bitbucket, and this page is a small list of projects in various states.
A lot of the projects I wrote and use look somewhat inactive. I don't fix bugs that aren't there, and I have a minimalist streak, so a lot of the things I still use and maintain may look inactive. Combining that with my regrettable historical tendency to version things very conservatively, and you have a project at 0.1.3 that no one has heard of that hasn't been updated in two years (because it hasn't needed to be) but runs in production. In general, my philosophy is that if it is tiny and looks more like a boxcutter than a Swiss Army knife, then I can maintain it myself.
A lot of it is Ruby, due to the fact that I usually do Ruby at work. Some of it's old, some of it's new.
Again, the list is not really complete. It represents code I've released publicly that I was able to remember or find in a list when I made this page up. In particular, it omits things I did for work that never got open-sourced, trivial patches I submitted to other projects, code I wrote at home or haven't published for whatever reason, and code that isn't in a usable state yet.
Code that I still use
- Pez: The Pez Programming Language, a small Forth written in C, created and maintained largely for fun, but I am crazy enough to use it. It's based on the very nice Atlast language by John Walker, although it's been modified almost beyond recognition. It also now embeds the TinyCC compiler, to compile its FFI calls. The documentation is horrendous but there are several examples in doc/examples in the repo.
- Watts: A resource-oriented, lightweight Rack framework for web development. It lends itself very well to building APIs, and with an HTML generator (or templating engine), does a good job at websites and web applications as well. This website uses Watts.
- Hoshi: Based in spirit on _why the lucky stiff's Markaby, it implements first-class views. It makes heavy use of Ruby's blocks and its object system, and the result is very simple.
Code that was just for fun
- Project Euler Solutions: I have solved some Project Euler problems, and most of the solutions are posted.
Some of them are clever, most are probably
uninteresting, and a few are hilarious. There are
maybe a dozen or so languages represented. I think
number theory is lots of fun but I have never
studied it seriously, so I have not solved too many
of the problems.
- LightningBF: A non-optimizing JIT compiler for that one Turing-tarpit language, the one that I don't usually name in writing, since
this blog and my Github profile are technically
connected to my work. It was done on a whim, just
to acquaint myself with the
Lightning library. It is not as awesome as AWIB. There is also an implementation of this language in Pez if you feel that
++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.
is a fun way to implement "Hello, World!".
Code that I don't work on (for now)
- Nacreon: A very simple (or as simple as one can make such a thing) Platform-as-a-Service framework, done as a sort of skunkworks project for a former employer, who eventually abandoned the idea in favor of cloning EC2. I had intended to use it, and so my boss agreed to allow me to open-source it (provided I removed the history and mentions of the company's name) but don't do much spare-time Ruby any more. It works, but is not finished. There is a reference implementation of an API client called "Terpene". I've since moved to working with the Inferno OS (whenever I can get away with it) as a platform for distributed computing.
- Hexward: An attempt to produce something a little more human-readable from large hashes. It was a proof of concept done with Justin George a long time back.
- Senga: A very tiny graphing/plotting library based on RMagick. I wrote it because other libraries for doing that either did too much or too little. I haven't used it in a long time, so I wouldn't be surprised if it didn't work with newer versions of Ruby, but I'm sure I'll find out next time I have to draw some lines. As expected from something using RMagick, it is very fast. (Please, I cannot wait to hear your opinions on ImageScience and how it is better than RMagick. We can talk when RubyInline stops shelling out to gcc to compile C++ files in a temp dir.)
Code that I have handed over
- LiveConsole: I had worked on this for some time, and it was a very fun project. I stopped having much use for it and so it went unmaintained for a long time. Roger D. Pack submitted some patches to keep it alive, and eventually Jenn Hickey took over the project. Thanks, Jenn!
- Google Checkout: I stopped using it when I stopped having to. Geoffrey Grosenbach took it and ran with it, though, and has used it for the payments system at PeepCode for quite some time. Thanks, Geoffrey!