Turning 'netboot' into 'internetboot'

After a couple of weeks of concerted effort, I'm pleased to announce the initial release of a new service, takes regular netbooting and makes it a whole lot more versatile - now, you can netboot directly into the installers for many popular linux distros, as well as system tools and even live linux distributions, all directly over the Internet, and without any local configuration required!

All that's required to set up is a spare writable CD, USB key, or floppy disk to write a small (less than 1MB) disk image to. Alternately, determined geeks can change their DHCP server to allow computers to netboot directly. Once you've done that, booting off the device on any computer with wired ethernet (wifi is a work in progress) will automatically cause the bootloader to download the current version of the menu from, which you can then find the boot image you want to boot from. Selecting it causes the boot image to be downloaded and booted immediately.

Currently on the boot menu:
  • Installers for several popular linux distros (Ubuntu, Fedora, OpenSUSE, Debian).
  • The FreeBSD installer.
  • Tiny Core and Micro Core Linux ...

Bookeen CyBook vs Sony Reader

I've been a fan of EBook readers for a long time now. Before EPaper based readers, I had an LCD-based one, and before that I had a Palm that I used almost exclusively to read EBooks.

EPaper, though, is a big step forward in terms of EBook readability, and when the Bookeen CyBook first came out, I immediately got one.

Unfortunately, a couple of months ago, I pulled it out ofm y bag to use it, only to discover that I evidently hadn't treated it as carefully as it warranted, because the delicate EPaper screen had become damaged, to the point where it was no longer really usable.

For a while, that was it, no EBook reader, but when we travelled through the US recently, a store at one of the airports was selling the Sony Reader, and even had a discount on the PRS-505. The 505 has since been superseded by the touchscreen PRS-700, but I don't have much use for a touchscreen on an EBook reader, and aparrently the 700 has screen glare issues due to the touchscreen coating. I got the 505.
I didn't expect to be particularly impressed by it - I merely ...

Ricochet Robots and interesting game trees

Every Wednesday at work we have a Games Night - people bring along (non-computer) games, we get together, and we play a few. Last Wednesday, someone brought along Ricochet Robots. I wasn't very good at it, but the game intrigues me from a computational point of view.

Essentially, it's a puzzle game. You have a board divided into squares. Each square is either empty or has a target. A target consists of one of four colors and a symbol. Walls are (seemingly) randomly scattered around the board, blocking passage between adjacent squares. There are four robot tokens, in the same colors as the targets, which start off scattered around the board randomly.

There's also a set of tokens, one for each target. One of these is drawn randomly and placed face up in the center of the board. It specifies that the robot of that color must make its way to the target with that color and symbol. Robots move like they're on a skating rink - they can move in any of the 4 cardinal directions, but once moving continue until they hit a wall or another robot. Nobody owns a robot - all 4 robots may be ...

BDBDatastore 0.2 released

I'm pleased to say that BDBDatastore 0.2 is now released. With this release, BDBDatastore is now officially at feature parity with the production App Engine datastore. That is, it ought to be able to do everything the production datastore can, which means you can port your apps off the production datastore without having to change them.

Installation instructions can be found here. The release is numbered 0.2, but if it proves stable enough, it will become the official 1.0 release of BDBDatastore. So treat it as beta at least until it's got a little more testing.

If you try it out, speak up! I'd like to hear what people think of this. In the meantime, I'm going to start working on writing a container for running App Engine apps on Apache and other HTTP servers, as well as doing load testing and profiling of BDBDatastore.

Interesting articles about SQL and non-relational databases

Here's an interesting article about why SQL databases suck for webapps, and another one with good detailed reviews of non-relational databases.

BDBDatastore 0.1 released

When I announced BDBDatastore just a few days ago, it was still a ways away from being practically usable for anyone wanting to develop or deploy App Engine apps. The purpose of the post was twofold: To attract some initial interest, and to motivate me, with the light of public scrutiny, to make sure it gets finished and polished.

I'm pleased to say that release 0.1 is now available. Version 0.1 brings BDBDatastore to parity with the feature set the App Engine datastore had on release day - that is to say, fully featured except for __key__ queries. Along with the server itself, I've also provided a patch to the App Engine SDK that allows you to tell the Python dev_appserver to use BDBDatastore for backend storage.

Full installation and usage instructions can be found on the wiki. Note that this release is still very much beta. It shouldn't break, but it might (and if it does, please let me know). It's also possible (likely, even) that the datastore will change in backwards-incompatible ways between now and 1.0.

As always, feedback and comments are appreciated.

Announcing BDBDatastore, a replacement datastore for App Engine

One criticism I frequently see directed at App Engine is that of lock-in. Since App Engine doesn't use the same APIs and libraries that people are used to using elsewhere, people say, Google is implicitly locking people in to continuing to run their App Engine apps on Google infrastructure.

I'm of two minds on this. On the one hand, I don't think it's justified to call this "lock-in" - Google has provided ample documentation of the runtime environment and the APIs available, and where documentation isn't available, the SDK source code is, so it's possible to figure out everything necessary to produce compatible interfaces with publicly available information alone, and without resorting to reverse engineering or any other gray areas.

On the other hand, while I don't think there's intentional lock-in, the lack of available alternatives amounts to practical lock-in. While moving your app off Google infrastructure would require implementing the new infrastructure yourself, this amounts to lock-in for the vast majority of people, who can't afford the time and resources required to implement such a thing themselves.

The key to making portability possible is the datastore. Of all the APIs App ...

Cognitive dissonance and the "download 4 free" debacle

I've been watching the whole Amazon/Pirate Bay debacle with some interest. Of particular interest is the number and type of critics of the whole thing: Some of the loudest critics seem to be those who would otherwise proudly admit to downloading pirate copies of media, or who like to go on about the dying business model of 'old media'.

I think the reason for this rather odd about-face is a pretty severe case of cognitive dissonance. It's fashionable to justify casual piracy as 'victim free' by pointing out that "I wouldn't have bought it anyway" or other similar justifications. And everyone loves Amazon for providing a way to get media legitimately and cheaply and nearly as conveniently as firing up a BitTorrent client. But when you combine the two with a direct link, suddenly the contradictions in holding both positions simultaneously become apparrent. Piracy is victimless... but you're explicitly passing up an opportunity to purchase it legitimately instead. Suddenly it feels a whole lot more like wandering into a shop and uplifting something*.

In a nutshell, I think most of the critics of the plugin aren't actually anti-piracy, per-se - they just don't like ...

Bloog developments

Bill Katz, the original author of Bloog, has kindly added me as a contributor on the official Bloog repository. I've pushed all my changes from my 'master' branch to it, and I'm working on getting the 'breaking' changes in.

I'm thankful for...

Thanksgiving itself. I don't live in the US, wasn't born in the US, and have only visited the US occasionally, but I'm still thankful for it: The lull in blog activity has enabled me to catch up in reader for the first time in over a month.