technology from back to front

Archive for December, 2007

The OLPC uses forth at a low level

A few months ago, while scouring the web for information related to FORTH after the switch went on in my head, I discovered that the OLPC XO uses Open Firmware, which permits lovely little display hacks (more here). Great stuff!


Openembedded Bitbake recipe for Spidermonkey Javascript 1.7.0

In my ongoing quest for a sensible programming environment, I’ve filed an OpenEmbedded bug with patches providing support for version 1.7.0 of Spidermonkey, Mozilla’s javascript engine. It hasn’t gotten me much further toward my goal, but it’s nice having a quality javascript interpreter available for my OpenMoko phone, should I ever need one…


iPlayer: needs RSS

The BBC’s new iPlayer service is great. The only thing that I’ve missed so far is RSS or Atom feeds: it’d be nice to be notified when a new episode of Favourite TV Show X turns up (and when it’s due to expire, too).


Paul’s Pictorial Parliament Predictor

Paul's pictorial Parliament predictor

I’ve built a simple model that predicts the makeup of the House of Commons given the relative votes of the three major parties. The model assumes that the total number of votes cast does not change, that the votes given to all other parties do not change, and that the proportion that a given party achieves in one constituency compared to another doesn’t change.

We then represent the proportion of votes cast as a position in a triangle. The three corners of the triangle represent all major party votes going to one of the three major parties, with the other two getting zero votes. The middle of the triangle represents the three major parties getting exactly equal votes. The inverted triangle in the middle is the region in which no major party gets more votes than the other two put together, and the subdivisions of this middle triangle shows which one got a plurality of the votes (ie more than either of the other two).

The dots represents the Commons our model predicts given this share of the votes: the colour shows which party has a plurality of seats, while a hollow circle indicates a hung parliament and a circle with a white dot shows a 3/5ths supermajority.

So, for example, the middle of the diagram where the three lines meet is under a red hollow circle; this means the model predicts that if all three major parties were to receive an exactly equal share of the votes, the result would be a hung parliament with Labour holding more seats than either of the other two. To be precise, it predicts Labour holding 310 seats, Conservatives with 193 seats, and the Lib Dems having 111.

I’ve marked on there the 2005 elections themselves, which is the only point on the diagram known to be accurate, and what a couple of recent polls would predict according to this model.

You may think that a voting system in which an exactly equal share of the vote for all three parties delivers something very close to an absolute majority to one of them is barking. You may very well think that. I couldn’t possibly comment.

Paul Crowley

Erlang SMTP code updated

A couple of months ago, I improved our erlang SMTP server code.

* Mon Oct 15: Support callbacks and more of the spec.

Support multiple forward paths. Support callbacks for verification and
delivery. Pass domain as well as mailbox for reverse and forward
paths. Cope with improper line termination. Log failures in delivery/verification

* Wed Oct 17: Split out smtp\_util:strip\_crlf; be RFC2821-strict about CRLF

The code is available by browsing or through git:

git clone git://

We Want to Recruit You

LShift need to recruit a number of senior developers. If you want to join one of the most skilled and interesting technical teams around, how about submitting a CV and some code samples?

As a company, our outlook is moulded entirely around the principle of recruiting only candidates who combine breadth and depth of outlook and experience. We do not recruit people to slot into a particular technical role, but only all-rounders, familiar with the broadest range of operating environments, programming languages, etc., combining this with a high level of software engineering expertise. Our technical staff are all required to act as client-facing Lead Developers, managing all technical aspects of a project from its inception through to delivery.

If you think that you meet up to the high standards we expect from a potential employee, then read how to apply and complete our online application form.




You are currently browsing the LShift Ltd. blog archives for December, 2007.



2000-14 LShift Ltd, 1st Floor, Hoxton Point, 6 Rufus Street, London, N1 6PE, UK+44 (0)20 7729 7060   Contact us