Archives for November 2010


Book review: Marcher, by Chris Beckett

Despite finding it a bit hard to start, I tremendously enjoyed Chris Beckett's Marcher novel -- I would recommend not reading the extract at the beginning of the book. The italicised prologue is a bit heavy too, but provides some context and once you get through it the story gets interesting already, following Charles, an immigration officer dealing with "shifters", people using a drug to move between the worlds, or more accurately alternative timeline our world could have taken. People who have enjoyed Beckett's short stories will recognise the world and happily notice echoes of other stories (I'd recommend reading The Turing Test first, even though you don't need to!).

There's a social comment thread of the story that can't be separated from the main plot, and sometimes doesn't feel so far from home. In this world the poor and unemployed are confined to special "inclusion zones" where they get a chance to "pull themselves together" and benefit from social welfare in the meantime, and as we explore these places and meet the social workers who work in them, we get to see the less-than-ideal reality of this social system's implementation. The tension begins when shifters start appearing in the inclusion zones and hiding there before committing horrible crimes, and shifting away before facing the consequences.

The book is littered with many distracting spelling mistakes, words doubled, "to" instead of "two" and so on. Grr. Bad editing job. Besides that annoyance, the story is fantastic, especially as it picks up when the strange crimes start happening and we follow some events from a shifter's point of view. I read in the bus and was starting to look forward to traffic jams to have more time to read, and eventually had to stay home and get to the resolution of all this! This is very entertaining science-fiction, combined with an interesting look at society.

Leave a comment

Linux on the Lenovo ThinkPad X201

As anyone who's been within hearing range can tell you, I've acquired a new laptop recently that I've grown quite fond of. Here's my experience getting various Linux distributions working on it, your mileage may vary (e.g. my experience with Debian was widely different from others'). I ordered the laptop from the Lenovo website, the only significant specs change was to upgrade to the i5-540M processor.

Ubuntu 10.10

The latest version, Maverick Meerkat / 10.10 installed fine, no issues whatsoever.

Debian Squeeze

Debian is my main development distro and I absolutely needed it working on the laptop before setting up everything to be Just RightTM. Unfortunately, stable wouldn't boot, and the daily testing images were acting very weird, asking me for a password and, no matter what I typed, showing me an empty grub menu that slowly disappears up the screen.

Eventually I solved this thanks to UNetbootin, using it to create a LiveUSB from Debian unstable. I'm not quite sure how it does that, but whatever it did did the trick (yay!) and I was able to boot from the stick and install Debian off it. If you go this way, don't forget to update your apt sources.list to point to unstable. Also, Suspend works for the first time ever, wahoo :D Hibernate was a bit more moody, though it worked last time I tried it. The option seems to have disappeared from my menus a couple of weeks back, but I've been messing with various things including Gnome Shell, which may be related.

Fedora 13/14

The Fedora 13 stick seemed a bit reluctant to boot up fully, but did so after a couple of tries. The installer's partition editor wasn't playing so nice and I ended up using GParted first to create the partition (which led to entirely unrelated problems due to my own clumsiness). Once this was done everything was fine, including the wireless. When I was trying Fedora 14 prerelease in late October the stick booted fine, and since then I've upgraded to Fedora 14 without an issue either.

Sugar on a Stick (Mirabelle -- based on Fedora 13)

The stick does not boot :/ (Black screen with the grey blinking underscore on the top left). I must install Mango Lassi (based on Fedora 14) on a stick soon and check out if that works...


I still have more space than I need after installing those 3. I'll probably try to install a source-based distro as well, either Arch or Gentoo, not sure yet. Recommendations?

Leave a comment | 2 so far

Sewing in December

In December, I'm going to embark with a few other people on a "sew-along" adventure targeted at beginners. My sewing skills are limited to sort-of-putting back together fallen buttons and er that's about it, so this should be an interesting experience!

This is the first post from Gertie about this, the person leading the sew along project.

The second one is about getting fabrics.

Truth is, I am fairly lost right from the first post. There's a lot of vocabulary I'm missing, other things I plain don't understand and because I'm not familiar with the field it's difficult for me to visualise what's supposed to happen, even after reading up on the words and concepts.

Thankfully Cheryl knows a thing or two about sewing (all that Lilypad awesomeness must be good practice!) and didn't freak out when I called her "Mentor" so she'll be helping :) Already learning a lot from her post about measures and fabrics, will do the measuring thing later on this week.

I ordered the pattern and fabric from Sewbox in the UK (not received yet). I may shop around Dublin to find a nicely coloured fabric for the tie, though I'm not quite sure where to look for something like that. 

The actual sew along adventure begins on December 6th, until then it's about getting the pattern and fabric. There will likely be impromptu meetings in Tog to work on this, you're very welcome to join in if interested! (We can make all sorts of terrible mistakes together \o/)

Leave a comment | 2 so far

StormMQ / AMQP evangelist night

Last Tuesday I attended a talk/workshop organised by IrishDev.com about StormMQ and the Advanced Message Queuing Protocol (AMQP) standard that's cooking up. I was very impressed by how polished and well prepared the presentation was, very enjoyable. Showing "time slices" beside each topic from the beginning, giving a rough idea of how long each section would last was great to keep things interesting and disarmed the 30 minutes attention span limit I often hit during meetings or long talks. Here are some incomplete notes from the evening.

Raph Cohn started by giving us a history of message queuing, from the origins to the evolution to where we're at today. Message queuing has been very expensive, and very vendor specific/locked in so far. However over the last few years, various companies and bodies have been getting together to define an open standard, AMQP, and enable interoperable solutions.

The presentation continued with a welcome refresher introduction to message queues. Message queuing works like glue and can be the solution to many integration problems, both within and between systems. It keeps interacting systems loosely coupled and thus avoid many pitfalls of other solutions (such as RPC, database sharing, file transfers...): it's still possible to automate, scale, deploy easily, keep configuration information isolated, and overall keep the administration burden lower. (Though to work best it should be designed in from the beginning.)

This leaves us at a point where there are MQ solutions out there, however they are either proprietary, and/or platform specific, or come with other sorts of strings attached. Note the speaker included Redis in the proprietary systems which surprised me a little. Thinking about it though, the point is that once you develop your application to work with Redis, you can't easily switch Redis for another provider, you're tied to it.

This is a problem. <Cue slide covered in fake fire -- the animations were awesome! A video of the presentation should be posted sometime soon actually, I'll link to it. (Update: Here)>

And the solution to this is AMQP, a lightweight protocol aiming to smooth or resolve these issues.

Some common Message Queuing architectures:

  • Store and forward, or buffering. If one system is down, the queue buffers the messages and the systems still up don't see any difference (as opposed to tightly coupled systems where everything would be brought down in parallel).
  • Fire and forget. You send many messages, e.g. orders and don't think about them once they're sent away...
  • One to many, or "fan out". You publish a message that is broadcast to every interested system.
  • Round robin. This is good for batch jobs and for scaling large jobs, you divide it into smaller tasks on the queue and a free system takes on the next task.
  • Publisher/Subscriber, with "Topics".  Subscribers listens for specific messages on the queue, without the publisher having or needing any knowledge of their existence.

A message queue is a basic FIFO queue of messages. A message consists of the environment, a header and a payload. The payload is defined in AMQP and can be binary, text or anything.

AMQP works with connections and channels. Every channel is independent, logically partitioned and TLS protected. First you open a connection, then a channel to send and receive. You close the channel after sending, and close the connection if you're completely done.

AMQP is an ACK-less protocol, and therefore very efficient: it will only tell you when things go wrong. 

AMQP uses 'exchanges' for the routing and binding. Exchanges can be direct (either with the specific routing key, or ideally more general to avoid needing special knowledge), fan out (any key bound to X will get the message, good for debugging), topics. Any MQ only receives a message once. It's in spec to use the the default definitions for the exchanges.

The night ended with a demo of using StormMQ with Java. I found it more confusing than helpful (for instance we went through sending back acknowledgements, but I thought one of the main points of the presentation was that AMQP was a ACK-less protocol?), though it could be that it was getting late and I was too tired.

Leave a comment | 2 so far

Archives