Not even time to breathe.

02 July 2011

Most of my posts lately have been terse, to say the least. When I've had time to sit and write it's been in fits and spurts over a period of hours or days when I've felt up to it. My queue of things to write about has broken two pages, which means that it's time to delete the older stuff and move on. In Internet time, that's a long while, plus there is more important stuff to worry about. It's not ADHD, it's simple practicality. The "when I've felt up to it" means just what you think it does, I got knocked flat with a new sinus infection, this one accompanied by a persistant hacking cough. I rather suspect that the My Chemical Romance concert in May was involved. Lyssa and I camped outside of the 9:30 Club with a few score other killjoys the day of the show (as in, all day... the sunburn was nasty (that's a story for another post)) and we both contracted a truly unholy malady that required multiple rounds of antibiotics to fully eradicate.

The photographs from that concert (and a few other albums) I have yet to upload. That's on my to-do list, up there with a bunch of other stuff that's probably going to have to wait. Unfortunately for NOVA, Stacy's Coffee Shop, local watering hole and Illuminati headquarters for the eastern seaboard (what, you thought we'd set up shop in DC?) closed its doors. It was something of a fixture in the area, and was known as the place to go for a hot cuppa and a light meal. Many truly strange ideas were birthed in the depths of cups of coffee there, and possibly for the good of humanity some of them never came to fruition. All of us are going to miss that place terribly. The GPS in my car died, which means that I can't find a single bloody place that I haven't been to a thousand times before. Go ahead and laugh.

I've been very busy with work lately. Between construction on the Beltway, early summer heat in DC, and the general stress of life, by the time I get home in the evening all I want to do is curl up with a book. Major overhauls and upgrades at work required long hours, and once again it's been proven that any upgrade that looks like a cakewalk won't be. On top of this, my brother-in-law is getting married at the end of July (I'm in the groom's party, naturally), and that requires a certain amount of preparation (which I haven't done yet - I haven't even been fitted for my tux!) As if that weren't enough, Lyssa and I are looking at houses because we're getting ready to move. It is suspected that long hours and long commutes have something to do with my getting sick all the damned time so we're checking out new lodgings somewhat closer to work. A house big enough to have workshops for all concerned is an issue, but FiOS is a must.

As we'd joked years ago, our apartment complex would start rolling out FiOS when we were getting ready to move out, and lo and behold, they are. It figures.

Two Byzantium development sprints have come and gone, and things are really beginning to shape up. I have a lot of documentation to write to help new developers get up to speed, as well as help everyone set up what they need to set up on their respective machines. Two sprints ago we ran into compatibility problems between versions of Babel that frustrated our stated goal at the time of profiling network activity in a mesh (our intent was to either refute or confirm the long-held notion that mesh networks are too chatty to be useful for anything other than experiments). So we set up a test bed of a little over a dozen machines running Linux, all of them running copies of babeld. The mesh, for reasons we didn't understand at the time, just didn't come together. We later discovered that a major change had taken place between version 1.0 (packaged by Debian GNU/Linux, a variant of which was installed on all OLPCs in the testbed) and 1.1 (running on the other machines), namely, the multicast group and UDP port the protocol uses were changed to one officially assigned by IANA. The fix, of course, is trivial (older versions of babeld should be run with the command line option -p 6697 -m ff02:0:0:0:0:0:1:6 (quoting from the release announcement above, just in case that page goes away)).

In contrast, the last sprint was a success. A lot of new people came to HacDC that night, and there was lots of interest in Project Byzantium in general. Code is being written and run by other people, which means that "It works for me!" bugs are showing up and getting fixed. That is a nice way of saying "Damn you for changing what /proc/memstat looks like, Ubuntu!"

A few other snags were run into during the course of the sprint. Some of the functions of the control panel I'm writing are configuring the wireless and network settings of the Byzantium node it's running on. I'd like this code to operate at as high a level as I can get away with because making use of whatever existing subsystems there are means having to reinvent fewer wheels. I first tried using pyNetworkManager (a Python library that interfaces with NetworkManager) to push and pull configuration settings from the network interfaces, and discovered that this library is, to put not too find a point on it, pants. One of the great things about Python is that you can query an object to figure out what methods and attributes a given class has and how to use them. pyNetworkManager's classes are so poorly documented that to write the equivalent of "Hello, world!" I had to start reverse engineering the library. After an hour of cursing and paging up and down around I was no closer to understanding it than I'd been before, so I gave up on it and started messing with python-dbus, the Python interface to the system that operates below NetworkManager.

Suffice it to say that when the example code that comes with the library doesn't work, there are problems. So, that's out, too. Long story short, I'm going to be reinventing quite a lot of wheels (doubly so because those libraries don't seem to be packaged for the live distro we're looking at building atop of).

A record may have set for setting up a mesh last Friday night. The wireless network at HacDC has been acting wonky lately, so Ben the Pirate set up a Byzantium node using his laptop that he then bridged to the cellular network using his cellphone inside of five minutes. The other attendees of the sprint used that mesh node for the rest of the evening to get online, and you couldn't even tell the difference. I'd call that a resounding success.

I think we've settled on a base for the Byzantium Linux distribution, an ultra-slim live distro of Linux called Porteus. The basic image is very small (around 200 megabytes), it can be written to a removable USB device easily (everything from your bog-standard USB key to an MP3 player) or bootable CD or DVD, and it appears insanely easy to customize. I've been playing around with it and the other ultra-small distros I've seen can, frankly, go hide themselves. There's a bit of a learning curve but I think that we can get up to speed in a short time. When we have something to check into the Subversion repository for the OS modifications (as opposed to the Git repository, which is only for code we're writing before integration) I'll post a link to it.

As a result of working on Project Byzantium, I'll be going to ContactCon in October, not only to talk to other people working on similar distributed technology projects, but to hopefully demo Byzantium while I'm there, work on it a little, and maybe even present on it. A few weeks back I pitched it to the conference's organizers and they liked the idea. I'm hoping to hang out with the developers of the other alternative and distributed Internet projects and hopefully the whole will be greater than the sum of its parts. The cool thing about unconferences is that they aren't made up of small groups of people (rarely more than three at a time) standing on a stage clicking through Powerpoint slides, but of the participants putting their heads together. If you like, they're one part think tank and one part small groups at a hacker con working on stuff. I'm going to go up to New York City the night before ContactCon and possibly stay an extra day or two to hack while I'm there. If you're going to the con (or you live in the area), I would very much like to get together with you and work on Byzantium. Please contact me via e-mail (note: spamblocked; turn it into a real e-mail address to contact me) (PGP encrypted mail preferred) if you'd like to get together.