Posts for the month of December 2010

Continuous Integration

The end of the year is for reminiscing, right? I recently discovered I have more old projects sitting around gathering dust than I remembered. A handful are documented on this page, but quite a few are missing. I also discovered that almost all of them fail to build with recent compilers.

First step: continuous integration.

I opted for Bitten for Trac for a few reasons. Trac has hardly ever let me down. Bitten seems to have been developed in the same vein with a similar set of developers, so it's more likely to just work in my environment and have surprisingly cool integration with other parts of this web site. We use Zutubi Pulse at work, but not only is it overkill, but I don't want to deal with the license, and I'm not thrilled with everything about how it works. In the end, my needs are pretty minimal, so pretty much anything will do.

My next step was getting things building. This was for the most part pretty easy. Problems across all projects have been pretty consistent so far. I had some heinous invalid code that previous versions of gcc let slide but recent versions rejected. I'm using SCons 2.0.1 instead of 0.9.6, which is what I used previously. I also had a ton of missing #includes. This change demonstrates a little of all of that.

My next step was to expand into some of the non-Linux platforms that I had previously supported. This was kind of tricky, because I don't own any computers running Windows or Mac OS X. A quick poll of friends directed me toward VirtualBox, and it wasn't too long before I had Windows 7 Home Premium 64 Bit and Mac OS X Server / Snow Leopard running.

My first confusion came from documentation not lining up with what I was seeing. It looks like new versions of VirtualBox use RDP to give access to otherwise headless systems. The version I started with used VNC. Not a big deal, but when I ran into other problems, the uncertainty of whether I was doing anything right didn't help.

I ended up upgrading to the latest 4.0 build, and things seemed to be working until I noticed that both of my machines were hanging from time to time. I didn't resolve this before realizing that I hadn't gained anything but instability since 3.2.8, so I downgraded, juggled some files to get it to use the virtual machine I had created in the newer version, and now things seem to be working better.

Remaining issues with the virtual machines:

  • I haven't found the right VNC graphical quality balance between sluggishness and being able to see the screen without terrible artifacts.
  • The mouse in OS X is badly behaved. It doesn't follow my cursor in the VNC client.
  • The OS X virtual machine won't boot off of its disk. I need to use a boot ISO which I also needed to use to kick off the installation.
  • I haven't yet rigged them to start themselves automatically when the host machine boots and to log in to the client OS and start the bitten slave script.

Probably some other things, too. But my intention is to just let them be for a while.

I got multiple branches of Notebook Ninja building on Windows. I found Flag Fu was the project with the most interesting configuration that I could get running on all three platforms the most easily. It builds a client, server, and editor, depending on what libraries are available, and now I have that working again on Linux, OS X, and Windows.

This is still far short of what I want to do:

  • Everything I'm building should be packaged up and shared in binary form.
  • I'm still missing a bunch of projects.
  • I'm still missing easily supportable platforms for a bunch of projects.
  • I should have documented all of the setup I had to do on the build machines to get each project building. At the very least, list required libraries.
  • I haven't done much runtime testing of anything on Windows or OS X.
  • I don't have any sort of nightly or otherwise regular builds, so this won't really prevent bit rot, but bitten developers are aware of the desire for that feature.

Summary: There's a Build Status link at the top right there. It's neat!

Winter Simulator

Seven years ago, in a computer graphics class at RPI, I tried to make my last project winter-themed and highly demo-able. I think I wanted to submit it for a NeHe contest, but I never did. I took some time recently and ported it to Android.

The original project lives here. Source and executables are attached to that page.

Here is a link to it in the Android Market:


Source lives here.

Note: The controls are terrible. It's pretty ugly. But I did it in a short time in college and ported it in just a few days.