elliot's blog

Book-related nuggets

I keep thinking about writing something here, but the problem is once I get started, that's a whole evening gone, waffling.

In particular, I've been thinking about books a lot. So here are some book-related nuggets. It all goes a bit Victor Meldrew by the end, I warn you now.

Space operas I've read

I recently read Vernor Vinge's A Fire Upon the Deep alongside Alastair Reynolds' House of Suns. Both are galaxy-spanning space opera, both full of artificial intelligences, alien races, and dogfights in space. Both highly entertaining. But Vinge's book was written about 20 years before Reynolds', and it's pretty obvious Reynolds is a big fan of Vinge. Not to the point of copying, but the plotlines of both share similarities (humans caught up in a battle involving AI systems/races which have reached god-like power). And Vinge is a much, much better writer: his characters are more sympathetic, his scenery more memorable, his aliens more interesting, and his narrative pace tighter and more dramatic. So if you want some space opera, I'd go for Vinge first, and Reynolds second.

I might read Jack Vance soon, as a brief look at one of his books (The Star King) suggests Vinge was inspired by his work (e.g. both use the term The Beyond to refer to the far reaches of the galaxy)...

Hay-on-Wye visit

I visited Hay on Wye with my family for a couple of days last week. We've made this an annual pilgrimage, as we all love going there so much. I found a lot of good books; in particular, Richard Booth's bookshop was a fantastic source of unusual sf: see the town shop catalogue and castle bookshop catalogue for a fraction of the stock.

I ended up buying:

  • China Mountain Zhang - Maureen F. McHugh
  • Greybeard - Brian Aldiss
  • Underlay - Barry Malzberg
  • Galaxies - Barry Malzberg
  • The Last Transaction - Barry Malzberg
  • The Opiuchi Hotline - John Varley
  • The Snow Queen - Joan D. Vinge
  • The Peace War - Vernor Vinge
  • The Humanoids - Jack Williamson
  • Mockingbird - Walter Tevis
  • Bring the Jubilee - Ward Moore
  • Walk to the End of the World - Suzy McKee Charnas
  • The Breaking of Northwall - Paul O. Williams
  • Gray Matters - William Hjortsberg
  • Riddley Walker - Russell Hoban
  • Star King - Jack Vance
  • Stolen Faces - Michael Bishop
  • A Mirror for Observers - Edgar Pangborn
  • Other Days, Other Eyes - Bob Shaw

Each book cost me £2 to £2.50: cheaper than Amazon marketplace, but not as cheap as I would have liked. I think I'm lucky because sf books are still in a bit of a ghetto; other types of paperback seem a bit overpriced (a symptom of the tourist popularity of the place). I love going there, but my best finds are still when I get hold of an unusual 1960s/1970s paperback for 30p in a small charity shop.

My tactic when visiting is to make a list of specific books to look for: we have about 3-4 hours browsing time, and there are just too many books to look at all of them. On this occasion, I was aiming to find a few "classics" (Moore, Varley, Pangborn, Shaw), interesting books by authors I've recently discovered (Vernor Vinge, Michael Bishop), and books by authors I always look out for (Malzberg - often tricky to find, as I'm not sure all his books made it to publication in Europe). I had a list of about 50 authors/books, but passed up on a few I found because the book wasn't in particularly good condition, or it didn't look so good in the flesh, or were too expensive.

Madeleine chose 17 books (we had to limit her to 1 or 2 per shop, as she kept gathering piles of half a dozen or more - children's books are reasonably priced, though the Children's Bookshop is a rip-off with common paperbacks at £3); Joel got 4 picture books (he mainly wanted to walk around the shops, rather than look at books); and Nicola got about 5 (her favourite shop there is Murder and Mayhem).

Anyhow, now I've got so many great books to read, I don't know where to start.

On Bookmooch

Bookmooch is a great little site: basically you list books you want to give away, and books you'd like to acquire. Each time you give a book away, you get points; each time you acquire a book, you spend points (so no money changes hands). You get 3 points for sending abroad, 1 point for sending to your own country; asking for a book from your own country costs 1 point; asking for a book internationally costs 2 points. I've exchanged quite a few books on there. But a few recent experiences have soured it for me:

  • People giving away bookcrossing books
    I like the idea of bookcrossing.com very much, but don't like it when people take bookcrossing books and put them onto bookmooch without mentioning it. bookcrossing books are intended to be given away after they've been read; I don't mooch books off bookmooch to give them away again, necessarily: it might be that I want to keep the book after I've read it (I like collecting books). I'd feel guilty if I got hold of a bookcrossing book via bookmooch and kept it. I recently got a bookcrossing book unintentionally off bookmooch, so now I've read it I'm going to have to leave it somewhere for someone else to pick up.
  • People refusing to send mooches internationally
    People on bookmooch have the option not to send internationally, or to have you ask first to see if they'll agree to send internationally. While in principle I understand this (from what US citizens tell me, postage internationally is exorbitant; in the UK I've found it to be fine), it is still galling to see books you want but are unable to get because the person won't send internationally. Even more galling if you ask them to send internationally and they say "No". This is really an issue with bookmooch: it shouldn't show books you can't mooch because the person won't send internationally.
  • People sending books in terrible condition
    I got one book off bookmooch which had some kind of toxic sticky gunk on its cover. It's so bad I can't put it next to another book on my shelf. I'm reading it at the moment, taking care not to put it down on top of any other books after each reading session. Once I've read it I'm going to have to bin it, as I'd be ashamed to give it to anyone else.
    I don't mind dog ears, crumpled spines, bent pages, limited water damage etc.; but a cover which glues itself to other books goes beyond acceptable.
  • Poor user experience
    The bookmooch website really doesn't lend itself to regular use, and does a poor job of tracking what tasks are pending and what you've done. One example: if you ask someone to send internationally, there's no record of this on the site: you have to keep the email to remind you. But despite that, you can mooch the book anyway, before the person you asked has responded (the system should block until the person agrees to send internationally, but doesn't for some reason). Then add to that the fact that reservations expire after a week, even if the person doesn't respond to your request within that time. So you can be in a situation where you've asked someone to send internationally, they haven't responded, and your reservation is about to expire. What to do? I tend to mooch it anyway, explaining why, and saying they can cancel if they wish.
    Another example is the wishlist. It defaults to showing you just the books you've wishlisted, and not related editions. You can show related editions if you want, but you have to click. Each moochable book has a link next to it; but if a related edition is moochable, there's no link. What you really need is a list of "moochable items which are on my wishlist or related to my wishlist" (this is roughly what the RSS feed supplies), with a link for each.
    Also, there are more general issues, like the terrible search engine, which as well as returning very poor results is also horribly slow; and the abysmal HTML, resembling something produced by Microsoft FrontPage sometime around 2000, bloated and nigh on impossible to screen scrape.
    (I know I could do better (I spent two years working on Prism after all), which is, I think, what makes it so frustrating to use.)

All in all, while it worked out well for a while and I got some good books out of it, I'd actually rather spend £3 on Amazon to get the books I want, rather than go through the hassle of using bookmooch. Shame. I'll leave my wishlist on there, but I'm not going to put anything in my inventory for the time being.

Writing the Clutter cookbook

I'm almost exclusively working on the Clutter cookbook at the moment, and I keep meaning to write about what it's like to spend your time writing. I'm not sure what's driving this need to explain myself. I think it's partly because I feel a bit unproductive at times, despite working pretty hard, and I feel like I need to understand why.

Perhaps if I explain the pattern of my work week. It goes something like this:

  • Start the week thinking about which part of the Clutter API to write about. Clutter is pretty vast (well, not the API so much as what it makes possible) and flexible (so you have choices about how to implement a particular feature, animation, effect, UI element etc.). I am still finding stuff in there I haven't noticed before: new functions, configuration options I haven't noticed, whole new chunks of API (it's evolving like nobody's business). But at least I put together a plan with the Clutter maintainer, Emmanuele a while back, which puts some structure and priority around which things which are important.
  • I then try to come up with a recipe idea to illustrate part of the API, or an interesting topic, or to answer a question I've noticed on the mailing lists or IRC channel. The idea might be something like "reusing an animation with different UI elements", or "handling mouse button presses", something like that. I may also look around at other treatments of the same thing in other cookbooks, tutorials etc., on the web and in O'Reilly Safari; perhaps even try to find videos of a particular UI effect (e.g. today I was looking at cover flow videos, implementations, patent applications [can I even write about that kind of effect?]).
  • Then I try to write some example code to get a feel for the API. This might involve talking to the Clutter developers on IRC about how something works, or maybe sending something to the mailing list. Occasionally I find bugs and log them (this can suck up a lot of time as I try to do as much due diligence as possible before logging anything, and provide decent reproducible test cases if possible). I frequently need to write maybe half a dozen small programs and perhaps a small application to try stuff out (like: "what happens if I put this UI element over this one?", "how does the height of an element get reported if it's moved away from the view point (into the z axis)?", "If I set this property, how does that affect the object's behaviour in this context?" and so on).
    (The code I'm writing is in C, which I admit is a bit of a struggle. I'm just about getting to grips with it now.)
  • At the same time as I'm writing this code, I'm maintaining my own git branches for each recipe I write, as they have to be kept isolated from each so they can easily be merged in one at a time (hopefully). This means keeping up to date with Clutter as it's being developed. So I'm also learning git (which I've never used a lot before) to pull changes in from Clutter master to my branches (and still sometimes screw it up).
  • While I'm doing that, I'm also starting to think about this part of the API from a developer perspective: Are there alternative ways to do this in Clutter? Why should I use this approach? Why not this other approach? I start putting notes together about the code I'm writing, very rough to start with.
    At this point, I quite often find myself paralysed as I start writing the text for the recipe. Writing text is much harder than writing code, at least for me; particularly writing text about code. (I can write code until the cows come home, but writing text is much harder: which is why most open source projects have lots of code and very little, mostly poor documentation.) Sometimes, finding a decent "story" to tell about the recipe or piece of code can be frustratingly hard (like what I've experienced today when approaching ClutterAnimator :) ), and I find myself suffering what you might call "writer's block". At which point I make several false starts, write free-form pieces trying to articulate what I'm doing, what I'm explaining, just write anything at all to try to shift the block. Sometimes I can be blocked like this for half a day; frustrating, unproductive, prevaricating, maddening half of a day. Sometimes the best thing to do is take a break, go for a walk, do some admin or research on something else altogether. Then before I know it, thankfully, the next day everything slots into place again, and I can write again.
  • At some point while I'm putting tangible paragraphs together in my rough draft, I move it over to the Docbook template for the cookbook. This means putting XML mark-up and formatting around what I've written so far. This then gets checked in with the code; edits are then checked in as I go along; occasionally I'll merge edits together (thankyou, git rebase -i) to make the development history less convoluted.
    I also take any screenshots and video (the latter using gtk-recordMyDesktop) I need and incorporate those into the XML template.
  • Eventually, I get something together and end up with a first draft. Then I leave it for at least half a day before I go through it again, cleaning up the text and making sure my branch is spick and span.
    The process of iterating over the recipe to improve the text is something miraculous to me: I don't do it consciously, but somehow I can read text and rewrite it to read better. I don't know how I do it, to be honest. Which is good, because it means I've basically turned the skill into a habit; but that in turn makes it difficult to reflect on. I don't think I could teach it to anyone either, as I don't explicitly understand the unconscious rules I'm applying.
  • Finally, I submit the recipe as a bug to the Clutter bugzilla. I typically post a bug marked as an enhancement request (e.g. http://bugzilla.clutter-project.org/show_bug.cgi?id=2288), along with a link to my git branch (e.g. http://gitorious.org/clutter-cookbook/clutter-cookbook/commits/cookbook-...). At this point, Emmanuele may come back to me with some requests for changes or comment on the bug; I try to respond as quickly as possible, and put a note on the bug when I'm done. At which point, hopefully, Emmanuele merges the work into Clutter master and the recipe is complete.
    In an average week, I can turn out one or two recipes. If I'm trying to write an introduction to some Clutter concept (e.g. last week I was writing an introduction to ClutterScript), it might be slower, as I have to understand the scope of the concept and find a way to communicate it.

It's the blockages which frustrate and shame me. I wish they didn't happen (they are pretty depressing too), but I think they might actually be an essential part of the "creative process". The miracle of copy-editing makes up for it :).

Hurrying with my Eye-Born Night Wax / Needle Spit Literal

I released this track a couple of weeks ago, but no one has listened to it yet at http://spilltwins.bandcamp.com/. Given that I think it's my best track, I'm going to put it here (last time I did this, quite a few people did listen to the track). Otherwise all my artistic endeavours will go to waste...

<a href="http://spilltwins.bandcamp.com/track/hurrying-with-my-eye-born-night-wax">Hurrying With My Eye-Born Night Wax by Spill Twins</a>

There's also this one, which was slightly less successful, but has its moments:

<a href="http://spilltwins.bandcamp.com/track/needle-spit-literal">Needle Spit Literal by Spill Twins</a>

Why upgrading to Fedora 13 was a pain in the backside

I resist upgrading my work machine as much as possible, as whenever I do, everything I rely on stops working properly. A few notes on my particular pains this time round as I upgraded to Fedora Core (FC) 13:

  • SELinux is an utter pain. And for some reason it's difficult to turn off in FC 13 as the SELinux graphical config tool isn't installed by default. The package you need is policycoreutils-gui, which will enable you to disable SELinux easily.
    Josh's suggestion is simpler: "edit /etc/selinux/config by hand and set SELINUX= line from enforcing to disabled".
  • The GNOME menus have ceased to be editable by default (there are lots of things there I don't use very often, and don't want clogging up my menus). You need to install alacarte to be able to edit them easily.
  • I like to be able to use sudo, so I uncommented this line in /etc/sudoers:
    %wheel ALL=(ALL) ALL
    and added my user to the wheel group:
    usermod -G wheel -a ell
  • mp3 and other restricted codecs are not available by default. To get these, you can do:
    sudo rpm -ivh http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-stable.noarch.rpm
    sudo yum install gstreamer-plugins-bad gstreamer-ffmpeg gstreamer-plugins-ugly -y
  • Personally (because I'm set in my ways), I like quodlibet and grip for music (I know how to configure them to suit my taste; and yes, I know they're both pretty old hat). So I tend to install these next. You can also install lame if you want to be able to rip CDs to mp3.
  • I like pidgin better than empathy. Still.
  • I need ruby, ruby-devel and rubygems. At least I don't have to build rubygems any more on modern distros.
  • I need the Java plugin for Firefox:
    sudo yum install java-1.6.0-openjdk-plugin
  • Installed other tools I use quite a bit:
    sudo yum install wget git
  • I've got used to using the gedit plugin which strips trailing space when you save a file:
    mkdir ~/.gnome2/gedit/plugins/
    cd ~/.gnome2/gedit/plugins/
    wget http://users.tkk.fi/~otsaloma/gedit/trailsave.py
    wget http://users.tkk.fi/~otsaloma/gedit/trailsave.gedit-plugin
    It turns up as Save without trailing space in gedit's plugins list.

So what's improved in FC13? Erm...

  • Shotwell is quite a nice photo manager.
  • The system boots slightly faster.
  • The volume settings are more sane, so I don't have to manually keep turning up my speakers between tracks (not sure what the technical term is, but the range from 0 to maximum across the software settings covers a greater range of volumes - if that makes sense).

That's about it. (My main reason for upgrading is so I can more easily build other people's software, rather than for application upgrades.)

There would probably be more if I wasn't so old fashioned about the applications I use...

Album released

I've finally released an album: One Million Corners, recorded by me under the name Spill Twins. It's on the Earthrid net label, and available either as a CD or as free mp3 downloads. (I'm going to put lossless versions on bandcamp this week.)

There is an Internet Archive page for the album.

And here's the embedded player from the Bandcamp page:

<a href="http://spilltwins.bandcamp.com/album/one-million-corners">Ant Mansion by Spill Twins</a>

NB the content is Creative Commons by-nc-sa licensed. In the unlikely event anyone fancies remixing it, they're also welcome to the original sound/project files.

Releasing music

I've been writing more music recently, and am really enjoying it. Part of the reason for this was some interest from a local radio DJ, Kevin Busby, who produces Phantom Circuit, a great radio programme with eclectic tastes. Kevin's been a fantastic proponent of my music (he's played a few on his show). Having this external verification that it's not completely terrible has urged me on (though I would carry on without an audience, as I have been doing for the last 20 years).

The second reason was the discovery of LMMS, a free multi-track audio sequencer tool for Linux, which supports (some) VST instruments (I've actually just found a list of VSTs known to work, which I'll explore next week). I've switched entirely to that environment now, and think my music is improving. On top of that, I also bought Music Theory for Dummies. Despite its good reviews, I don't think it's a particularly great book; but it has helped me learn about scales, chords, and chord sequences, which I vaguely understood but never really applied. I feel like understanding form better, and principles of composition, gives me a better feel for what "sounds right", as well as giving me starting points for writing new stuff.

So, to the point, I just finished Umpet Steak Ripple as Spill Twins (my current musical incarnation). Here it is:

<a href="http://spilltwins.bandcamp.com/track/umpet-steak-ripple">Umpet Steak Ripple by Spill Twins</a>

I published it on Bandcamp which was introduced to me by Iain - as an aside, there seem to be a lot of musicians among the people I work with). It's a free download, or you can listen on the site, or embed it elsewhere (like I did above). Bandcamp seems much better suited to releasing music than http://last.fm/, which is what I was using previously: for whatever reason, tracks on last.fm seemed to keep disappearing or turning into limited 30 second previews, even if they were free downloads. Bandcamp allows you to upload proper, lossless recordings (I used a wav file), while making it available in standard formats like mp3; you can also sell stuff through it (not just give it way).

I really like this track. It feels like the kind of music I should be making, and sounds novel when I listen to it: by which I mean, I can't quite fathom it and personally find it interesting to listen to. Although very short (1m 37s), it took ages to put together. Finding just the right notes (I even wrote down the chords) and sounds (I had probably 10 different attempts at the bass sound) and the right tempo etc. took me probably 6 hours. FYI, the voice is sampled from Carnival of Souls (which you can watch in its entirety online); the drum sounds are generated using one of the built-in LMMS instruments which (I think) emulates a Gameboy sound chip.

I've still got a lot to learn about music (just ordered another book about composition; P.S. if anyone knows of a music composition evening class in Birmingham UK, please let me know). But it's currently one of the things I can lose hours to without realising, and which I love doing. So expect more soon. (And I haven't forgotten about my mathis project, either.)

In lieu of a mid-life crisis

I'm 40 this year (not yet, I hasten to add). Yes, I know it's no big deal it's a round number, that's just human preference for powers of 10. Anyway, it does seem like some kind of milestone in my life, for whatever reasons. And as I have a generally introspective mind, and a good dose of self-absorption, and this is my blog, I'm going to write a few notes about it.

Not sure what got me started down this path, but yesterday I dug out a load of old school books, note books, board game designs, roleplaying game campaign books, poetry, short stories - it's all still out there in the garage. But what struck me, rather than "where did all my dreams go? what am I doing with my life?", the usual things accompanying the average mid-life crisis, I found myself thinking "actually, I'm pretty much the same person I was when I was 12; I haven't really changed much; I still believe the same things". I mentioned this to Nicola (my wife) and she said something like "that's one thing you always are: consistent, stable, level-headed". Though she made it sound better than that: I'm paraphrasing.

So, where is my evidence for this. Cue quotations from old school books etc.:

"There is not anybody that I would really like to be, but if I had to be someone else, I think it would be Arthur C. Clarke...I would not like to be him because of the mysteries he has investigated but because of his great output of short stories and books..." (June 22nd 1982; still love science fiction, would love to be a great SF writer, but realise that probably that's not my calling)

"There are three things I would change in the world if I became, as it were, a 'supreme dictator'. 1. Banning of vivisection: all animals should be treated as part of life, and if they are destroyed or harmed we would be affecting our future lives... 2. Freedom of speech: I would give everybody in the world the freedom to speak how they wish... 3. Nuclear war: I would try to stop the production of nuclear weapons." (December 15th c. 1983; basically I was a hippie then and I still am; I think that's quite forward thinking for someone living in a provincial backwater in the early 1980s - probably my mum's influence)

There's really no point going on about achievements since then etc.; you can read my about page to find out what I've done with myself all this time. I don't think I'll ever "do enough" to say I've finished.

More important, though, are things which have meant a lot to me over the past few months. These are the kind of things we're living for:

  • Sledging in the local park with Madeleine (my daughter) on Christmas Eve 2009. This was just the most wonderful day for me: exhilirating, laughing with my daughter, expectations of Christmas the next day, looking forward to warming up in the cafe for lunch. I'll treasure this one for a long time.
  • How Joel (my son) loves to throw himself at me, fling his arms around me, wrestle me, nestle into my neck, calls me "my daddy"; his carefree grin as he ambles around the garden looking for interesting things.
  • Gaming night with Nicola (my wife): it's one time in the week when we sit down together, just the two of us, and get a chance to do nothing but spend time together, chat, have a drink. Sometimes we're both too knackered, but most Sunday nights, that's what we do. Carcassonne and Dominion are our current arenas. It's also great working at home, as we get to see each other a bit more and meet for lunch once a week in the local cafe. Good to be together.
  • Paul (my current manager) having the faith in me to persuade me to work at Intel, when I was at a really low point, virtually no self confidence, no self belief, and practically telling him I couldn't do the job. He was right, and I was wrong. It's taken me a while to build myself up again, but I finally feel like I'm getting into my stride and being useful.
  • Rediscovering my love of SF. I made a concerted effort this year to read more, and have been having a great time doing so. I've read quite a lot of classic SF this year, and have made some good discoveries (Grass by Sherri S. Tepper is my current one, which is really good, and actually brought tears to my eyes). I'm convinced reading fiction, great fiction, makes me a better person.
  • Writing more music and releasing an album. The release will happen in the next few weeks, and it's going to be very small (it's a tiny net label), but I'm really pleased and grateful someone else (Kevin Busby) has enough faith in my music enough to put their name to it.

While digging around, I also found this rather excellent (and very 1980s and corny, obviously around the time of Close Encounters) birthday card from my family; inside it says "HOPE YOUR BIRTHDAY IS OUT OF THIS WORLD!" There's also some of my mum's handwriting: "To Elliot, lots of love Mum, Dad, Dean & Chloë" (she always put the umlaut on Chloe). Finding some of her writing, that made me a bit sad (she died a few years ago of cancer). Here's the picture, anyway:

(Looking at this now, the sentimental part of me suddenly finds this picture quite fitting as a visual metaphor for what it's like to grow up...)

No earth-shattering revelation to come to, no character progression. But perhaps that is my point. What's important is knowing who you are, and doing things which make you (and those around you) feel good.

Using wget to mirror a website

Occasionally you need to mirror a website (or a directory inside one). If you've only got HTTP access, there are tools like httrack which are pretty good (albeit pretty ugly) at doing this. However, as far as I can tell, you can't use httrack on a password-protected website.

curl can probably do this too, and supports authentication, but it wasn't obvious.

So I ended up using wget, as it supports mirroring and credentials. But the issue here is that wget plays nice and respects robots.txt; which can actually prevent you mirroring a site you own. And nothing in the man page explains how to ignore robots.txt.

Eventually, I came up with this incantation, which works for me (access to password-protected site, full mirror, ignoring robots.txt):

wget -e robots=off --wait 1 -x --user=xxx --password=xxx -m -k http://domain.to.mirror/


  • -e robots=off obviously disables robots
  • --wait 1 forces a pause between gets (so the site doesn't get hammered)
  • --user and --password: self-evident
  • -x creates a local directory structure which "mirrors" (see what I did there?) the directory structure on the site you're mirroring
  • -m turns on mirror mode: "turns on recursion and time-stamping, sets infinite recursion depth and keeps FTP directory listings" (from the man page)
  • -k converts links after download so that URLs in the mirrored files reference local files

Don't use it carelessly on someone else's website, as they might get angry...

Zombie Haiku

I noticed this Zombie Haiku book yesterday: http://www.amazon.co.uk/dp/1600610706

Which reminded me of this zombie haiku I wrote when I was about 12 (27 years ago - ouch):

A noxious zombie
eats a mouldy, worm-filled leg
in a rancid cave.

Which isn't very good (though vivid enough for me to remember and obviously ahead of its time); and not strictly haiku (it has no "kireji", or its closest equivalent in English, i.e. "a dignified ending, concluding the verse with a heightened sense of closure" - http://en.wikipedia.org/wiki/Kireji). So I rewrote it while in the bath last night (probably too much information there...):

An ashen zombie
gnaws a muddy, worm-filled leg:
tears run over bones.

Hopefully, this will enable you to see how much I've progressed as an artist.

Update: After having written this, I read this surprisingly relevant blog entry about how we see our artwork when we're young (by way of Rotating Corpse), how our perceptions of it change, and even how art comes to have value.

An unpleasant experience

A few years ago, I wrote a Rails (1.0.0) application for Nicola (my wife), to help her with her PhD research. It ran on her Linux laptop, happily, for those few years.

However, once the new laptop has arrived, I knew I'd have to migrate the application from Linux to Windows; I also wanted to avoid having to update the application for a newer version of Rails. How painful could it be? Fairly.

First I needed an old MySQL server (in case the API has changed), 5.0.15 to be precise. It is practically impossible to find archived downloads on the MySQL website, but I got there eventually.

Next I needed to get an old Ruby (1.8.4) for Windows. Again, virtually impossible to find old versions of Ruby with an installer. When I first did this, there was a Ruby 1.8.4 One-Click Installer for Windows, which seems to have disappeared. I finally tracked it down to some website run off some bloke's back somewhere out East.

Then, I needed Rails 1.0.0. For whatever reason, the Ruby I installed couldn't get Rails off the official gems repository (probably because the gem repo format changed). So I installed rails 1.0.0 on a different machine, created a new Rails project, then froze the 1.0.0 gems into it; then copied the frozen gems over to my app on the new machine. Phew.

Finally, I'd used RedCloth in the app. However, after a couple of attempts, I decided it was easier to rip it out than try to install it on Windows. So I did some surgery.

Add to that the fact that Nicola had forgotten her password (Firefox had been saving it), so I had to manually edit the db to add one; plus no decent text editor on Windows 7; plus MySQL not removing its service properly when I installed the wrong version then uninstalled it (sc delete MySQL removes errant services, by the way); plus Windows 7 making it difficult to get an administrator command prompt; etc. etc..

So overall a frustrating experience, but I did finally get there.

(On top of that, I also migrated several thousand POP-ped emails from Thunderbird 2 on Linux to Thunderbird 3 on Windows: I thought there would be an import wizard which would know what to do, but I saw no sign of it. And moved all her data over and installed OpenOffice. Entertainment all round.)

Once I've got over my trauma, I will provide links to where to find ancient versions of apps and libraries. Perhaps I should be an archaeologist.

Syndicate content