Betacantrips/ projects

Projects are self-contained things made of labor. Sometimes my projects are helpful to other people, but mostly they're incomplete. This is the place I put all the projects I feel like sharing with the Internet.

This listing is only projects that are reasonably current and interesting. For other projects, see the archive.

Right now I'm working on current projects, and I also have a todo list that I'm willing to accept help on.


What is Lockers?

Lockers is "Experimental Social Everything". Lockers is what would happen if ikiwiki and Facebook hooked up and had mutant babies.

  • Experimental: Lockers is build using a hierarchical, versioned database (i.e. version control system). This is completely unusual for a web-based application; generally a relational database is used instead. ikiwiki pioneered this approach and it works OK for them; why not for everything else?

  • Social: Lockers is fundamentally built around the idea of you and your community. "Hidden" pages are generally available to anyone in the community (i.e. anyone who has logged in). [NOTE: not actually implemented yet!]

  • Everything: Lockers aims to satisfy all your web-based cravings -- board games, photo albums, events coordination, wiki and forums. [NOTE: just photo albums yet!]

This is going on your permanent record.

Everything is stored forever in Lockers. If you change a file, the old version is stored. All versions of all files are stored like this, forever.

Tell me more.

Lockers 0.1.0, the apallingly primitive first version of Lockers, is finally released! You can get it here. Building on the results of the vcs-shootout, it uses git as a backend and has a ton of dependencies -- docutils, django templates (included in contrib/, so it's not necessary to fetch separately), PIL, paste, WebOb, jpegtran, git, and so on. Read the source for more details.

Posted Tue 07 Apr 2009 01:54:48 PM PDT

The Free Software world, like the rest of the tech world, is sometimes seized by trends. Distributed version control is one of those trends. In recent months, project after project has switched to "next-gen" version control tools. Developers sing the praises of their favored tools louder than a gaggle of Haskell programmers. And those of us still using SVN wonder if maybe we're missing something good.

You may have gotten a dose of this agita recently, from one of the following sources:

It is the last of these that really struck this author. Throwing Subversion in a comparison of distributed version control systems is a terrible idea! Subversion has never tried to be, pretended to be, or claimed to be a distributed version control system. And who made distributed the definition of "good", anyhow? I was an old hand at SVN, after all, and I didn't see what was so wonderful about these new-fangled devices. As far as I could tell, this new software was different, not necessarily better, just like Haskell, and I didn't think it was right to bash svn just because it was old-fashioned.

So the Shootout was born. Basically, it was my response: "Whose VCS is the Most Centralized?" I hoped to show that svn has valid use cases that aren't addressed by distributed version control systems -- specifically, I hoped to show that SVN was faster, smaller, and more reliable than git, darcs, and every other system people were hollering about, for the range of tasks that SVN addresses.

When that didn't work, I branched out, trying to study what performance characteristics each system had, and trying to the optimal balance between performance, space efficiency, and features, to try to pick one for myself. And in the mean time, I started to look at the day-to-day use of these systems, to try to see what differences there really were.

Lots of people are looking for a good system to switch to. For example:

I hope the shootout will help them to make a decision, without doing a comprehensive evaluation:

The source code for this whole project happens to be tracked in git and is accessible from

<a href="vcs-shootout/results/">Results</a>

<a href="vcs-shootout/non_analysis/">Non-performance analysis</a>

Posted Thu 10 Jan 2008 02:48:40 PM PST


Why are there no graph paper programs?

There are lots of programs that print graph paper, but no program that is graph paper.

But I love graph paper, and it's very useful. It's a beautiful middle ground between raster graphics and CAD, and I couldn't find one, so I decided to write one.

Of course, starting isn't the same as finishing, and I have so many things to do..

Today I decided that I would polish my graph paper application as much as I could in a few hours and at least release it as 0.1.0. This way someone might be able to get some use out of it. Even if it isn't a very good graph paper application, maybe someone would make a better graph paper application from it, or maybe they would find something in it of use to them.

Interesting features:

  • Save/load format is YAML.
  • Scrollbars expand in whichever direction you scroll.
  • MVC-ish architecture, using GTK signals to communicate.


  • pygoocanvas.
  • python-yaml.
  • others that I conveniently forgot?..



  • graphpaper.png
  • graphpaper2.png
Posted Thu 20 Sep 2007 08:51:49 PM PDT

Pytermix is a program I wrote for my mother, who was interested in trying Linux, but was unable to play her BBS games without a Hyperterminal equivalent.

You can grab a copy of the latest version, 0.6.5, at pytermix-0.6.5.tar.gz. Requirements are:

  • libvte4 (note that vanilla libvte has a bug that breaks color handling, but it's easy to patch if you're adventurous)
  • python-vte
  • python-gtk2
  • python-glade2
  • telnet
  • the FreeMono font

I know the program's a little hacky, but I'm not really familiar with better techniques for working with glade.

Posted Thu 25 Jan 2007 06:41:05 PM PST

contraption is a game modeled loosely after the Incredible Machine. It is written in Python.

You can download contraption-0.05.tar.gz, which is playable and has five levels demonstrating all the features of the engine so far. Level 2 is the most challenging.

Posted Thu 25 Jan 2007 06:41:01 PM PST

bouncy is a game which is inspired by Overgod, but hopefully somewhat different.

Development has moved over to the Sixth Floor Labs site.

Posted Thu 25 Jan 2007 06:40:59 PM PST

Blue Sky design by Jonas John.