Tuesday, November 29, 2005

Day 210

"Our almost-instinct almost true: what will survive of us is code"

Fame at last. The internet drafts I worked on a few years ago have finally gone to RFC status, and I get an acknowledgment.

On the Project Y front, things seem to be going surprisingly well so far. I've been hacking the kernel for a couple of days now, and I've only had to reboot the machine once (and even that wasn't entirely unexpected, given I was playing with some very incomplete code).

I guess this is a testament to a) how good the book I'm working from is b) the resilience of the linux kernel c) my coding skills (probably in that order).

Monday, November 28, 2005

Day 209

Overall, the aim of having Copious Free Time is to get around to a whole bunch of things that I've wanted to do for ages. One of those things is to get through my unread books stack.

Well, today the count finally dropped into single figures*. It had come close a couple of times in the past, but each time a new Amazon aid parcel would arrive before it could break the magic threshold.

Of course, the books that are left on the list are the really tricky ones. The books I'd like to have read, rather than the books I'd actually like to read—and so I never quite get around to actually reading them. Big, thick books, full of dense type.

But still, nearly there.

*Well, ish. A year or two ago I acquired a couple of shelves of books from a friend who was just going to dump them at a charity shop; I don't include those in the count. So I guess it's actually a count of unread books that I've paid money for.

Sunday, November 27, 2005

Day 208

My local cinema has hit a new low. In the past, we've encountered films that were out of focus (quite frequently); films shown in the wrong aspect ratio; films when they've forgotten to turn out the house lights and films with the sound out of sync with the picture. Today they managed to show the wrong film altogether.

Friday, November 25, 2005

Day 206

<rant subject="DVD">

Today's rant is about DVDs, aimed at the people who put them together. We watched one last night, and another one tonight, and once again I'm struck by how appalling the "user experience" (for want of a better word is).

  • It's my DVD. I should be able to put it in the player and watch it immediately. I shouldn't be forced to watch warnings about copyright, or animated corporate logos; I should be able to go straight to the content that I paid to own a copy of. Having a little "forbidden" icon show up on screen when I press Menu or Fast Forward is not on.
  • Fire all of the menu designers. Just because DVDs allow you to have arbitrary animations and selectable areas on screen doesn't mean you should use them. The menus should be immediately accessible (no 10 second animations before loading menus) and obvious (no hunting for what part of the screen represents 'select scene')—and while we're at it, don't use a 2x2 grid for selecting between four episodes of a show (which one is number 2, top right or bottom left?)
  • For a DVD collecting multiple episodes of a TV show, put an index mark just after the end of the opening credits. No matter how good the credits are, they get awfully annoying by the end of a 22 episode series.
  • For a widescreen film, don't (only) have the subtitles available below the film. The customer has bought a widescreen version of the film, chances are they've got a widescreen TV; if the subtitles are below the picture, they can't watch it in widescreen and still see the subtitles. (And yes, Crouching Tiger, Hidden Dragon was one of the DVDs I watched recently)
  • The filthy Internet exists, as does transatlantic shipping and foreign holidays. Get over it. Don't ever try that region coding shit again.
I think it all boils down to one simple principle: remember that people are buying the DVD to watch the show and nothing else.

It's also related to an earlier rant: actually test the product in the same way that the customers are going to use it in the real world.


Wednesday, November 23, 2005

Day 204

[reading: Corbet, Rubini & Kroah-Hartman, "Linux Device Drivers"]

I'm not the kernel hacker
I'm the kernel hacker's mate
And I'm only hacking kernels
'Cause the kernel hacker's late.
(Malcolm Beattie)

First day of my other new chunk of work today (let's call it Project Y), which was a bit of a shock to the system. Unlike Project X, which is (so far) a fairly informal enterprise, this one involves commuting to work in a proper office. Still, it's probably not quite the same as a real job.

It also feels very weird because it's back in a place I used to work two years ago, and not much has changed there in the meanwhile. It almost feels like I've dreamt the last two years and then woken up again, in a slightly Kafka-esque kind of way.

Tuesday, November 22, 2005

Day 203

Another Slacker's Lunch today, which was perhaps a little more restrained this time (in that I didn't fall into a comatose stupor for twelve hours afterwards). It might be the last one for a while; it was organized at short notice so I could fit it in before all of my impending work. In other words, I will soon be a non-Slacker. Provisionally, part-time and for a limited period only.

Monday, November 21, 2005

Day 202

First day working with my co-conspirator on the one of the work-like things that have shown up (let's call it Project X). Most of the day seemed to involve downloading and installing various things to try to get a Windows development environment up and running. On the one hand, the official Visual Studio products seem stunningly expensive, particularly given that I'm used to developing on various Unix platforms. On the other hand, it does seem to be possible to dig up a bare bones compiler and linker, debugger, collection of headers and libraries and an IDE for free.

[Edit: Also, it turns out that the .NET framework is also needed, if only for cvtres.exe.]

Sunday, November 20, 2005

Day 201

[reading: Alastair Reynolds, "Century Rain"]

"Plenty of blood. That's the only writing."

So I heard a rumour last night of good news about the program for next year's season at the Globe. Apparently I'm not supposed to say what it is, though.

Thursday, November 17, 2005

Day 198

[reading: Christopher Logue, "Cold Calls"]

I've finally gotten the cataloguing and labelling of the rest of the scanned pictures done—350 on Monday, 500 on Tuesday, 830 on Wednesday and 1160 today. So now I can focus properly on the new work-like things that are heading my way.

Saturday, November 12, 2005

Day 193

I went into town today and happened to end up both arriving and departing at Covent Garden tube station. It's not a station I normally use; it's jammed with tourists, there are no escalators and it's only 200 yards away from the Leicester Square station anyway. Anyway, since the last time I was there, I guess they've had some more people collapsing on the stairs—as well as all the signs warning people not to use the stairs except in an emergency, they now have an announcement that's repeated every 30 seconds which gives dire warnings about the 193 steps.

It's an interesting contrast to the campaigns they have to persuade us that we should take the stairs, in the interests of health. I guess what the announcements really mean to say is: "If you're a fat tourist, please don't take the stairs and collapse—it makes a mess and there's no end of paperwork we have to fill in. If you're not fat, then feel free to take the stairs. If you're not a tourist, you probably know better than to get off here anyway."

Thursday, November 10, 2005

Day 191

At last, I'm done with the scanning. The ever-rapacious maw of the scanner has been kept filled for two weeks, reaching a grand total of 5,194 pictures (a little under my original estimate of around 6000). Of course, there are still 2,878 of the pictures that need to be properly filed and catalogued, but at least I can pack away the scanner and concentrate for more than twenty minutes at a time now.

With all the negatives scanned, I'm not very likely to look at the various photo albums that have the corresponding prints in them—if I want to look at any of my snaps, I can just spin through them on the hard disk. (Which was kind of the point of the scanfest in the first place; I really like the fact that my laptop now has on it: every picture I've ever taken, every CD I own, every (non-work) email I've ever written, every chunk of code I've ever written, every piece of text I've ever written. Hmm, time for a backup methinks.) So, I've packed away the photo albums in boxes (suitably wrapped in plastic bags and sealed with duct tape) and hived them away in the attic, and lo, I have some spare bookshelf space at last.

Given my usual pace of Amazon aid parcels, it's probably not a situation that's going to persist for long...

Wednesday, November 09, 2005

Day 190

[reading: Dave Thomas & David Heinemeier Hansson, "Agile Web Development with Rails"]

Odd. Nothing happens for ages and then two job offers show up on the same day.

Tuesday, November 08, 2005

Day 189

For future reference, some notes on scanning.

  • For speed of scanning, I've just been using 1200dpi for most of the 35mm scans, bumping it up to 2400dpi for 120 format scans and for particularly interesting 35mm negatives.
  • Using 16-bit depth is fairly pointless from a practical point of view; there's a limited number of file formats that support it (especially for B&W: just TIFF and PNG, and the Windows software I'm using to scan only supports the former), and there's very little you can do with the images in Photoshop Elements. If I want to do pro-level stuff later, I can always come back and re-scan.
  • I probably picked the wrong option for scanning my chromogenic B&W film (XP1, XP2, T400CN); if I'd scanned in colour mode rather than B&W mode, I'd have got the benefit of the dust/scratch reduction. Apparently this works by doing a parallel infrared scan of the film—chromogenic film is transparent to infrared, but dust is opaque and so can be filtered out. The B&W mode turns this process off, because the silver halide in regular B&W films is also opaque.
  • ScanGear's UI really sucks; there are lots of things that you need to do all the time (examples: rotate more than one negative at a time, switch between film and print scanning) that can't be done easily. I can't believe that anyone ever tested this thing in real world use; it feels like they just tested that all the features could be accessed somehow, by some combination of manipulations, then shipped it.
  • ArcSoft PhotoStudio sucks too. It's awkward to do very straightforward things (e.g. rotate 90°), it defaults to its own internal format for 16bit files, but the main problem is the crashes. As far as I can tell (and I didn't really feel like experimenting that much), any time you pull in over 100 pictures, it crashes; I'd guess that this is because it titles the files "Untitled-Scanned-56" and thus only copes with two digit numbering. Again, it's clear no-one tested this thing in a sensible real world scenario. (I should probably have used the Windows copy of Photoshop Elements 2.0 that came with the scanner instead; I didn't want to use my Mac Photoshop Elements 3.0 because that would have tied up my laptop while the scanning was happening.)
<rant subject="testing">

The latter two points really bug me, as a (sometime) professional software engineer. Is it really that hard to actually test software in a realistic way before releasing it on an unsuspecting public?

The usual button that triggers this particular rant is Microsoft Project. Over the years, I've tried to use it for project management three or four times. The first few times I abandoned the attempt because it didn't support some particular thing I needed (IIRC, I don't think I could find an easy way to have a task whose size was proportional to something else, for example "Build mastering: 3% of overall project calendar time"), but on the last occasion I was only running a small part of a larger project and I didn't have the option of abandoning Project and returning to a big spreadsheet together with bits of paper.
[As Joel says, dependencies in software projects tend to be fairly straightforward. That being the case, the most effective way I've found for generating a Gantt chart is as follows.
  • Ingredients: several pieces of lined paper and some blu-tack.
  • Decide on a scale—say, one line per day, or two lines for a week
  • Write out a grid with dates down the left hand side of the paper (in accordance with the scale you just decided on), names of team members across the top of the paper. If you've got a hard deadline, draw a big black line across the page at the relevant place.
  • Using more paper and a pair of scissors, cut out a little rectangle of paper for each task in the plan. The rectangle should be roughly the same width as the columns you just drew on the other piece of paper (the ones labelled with the names of team members). Here's the cunning bit: the rectangular bit of paper should be the same height as the estimate you've got for the corresponding task, relative to the scale you decided on a moment ago.
  • If your rectangles are more than a few lines high, you've probably picked the wrong scale or (more likely) the tasks in your plan aren't really fine-grained enough to bother with a Gantt chart anyway.
  • Put a small piece of blu-tack on the back of each rectangle, and stick them onto the main piece of paper with no overlaps. The column each rectangle goes in indicates who's going to do the task; the rows it covers indicate when the task should be done
  • Don't forget to leave a few gaps in each person's column to allow for illness, slippage, unforeseen other stuff, etc. Leave bigger gaps for less capable team members (who are more likely to overrun on any particular task).
  • If you really do have to worry about significant dependencies, colour the top and bottom of the relevant rectangles (so if task A has to finish before task B can start, colour A's bottom edge and B's top edge the same colour).
This approach makes any of the common scheduling problems immediately visible.
  • If you've got any rectangles left over, you've not assigned all the tasks.
  • If any of the rectangles overlap, then some poor team member is over-assigned.
  • If there are large swathes of the underlying piece of paper visible, then some team member is under-assigned.
  • If any of the rectangle are below the big black line, then your plan doesn't hit your deadline
Interestingly, I've heard from a few teachers that despite the fancy timetable scheduling software you can get for schools, quite often the timetabling boils down to a similar technique. (One such tale involved screams of despair when someone opened the door at the wrong time and a draught blew in . . . hence the importance of the blu-tack).]

So I duly and diligently entered all of the tasks and subtasks into Project, entered all their sizes, set up all of the dependencies, and filled in all of the resource availabilities. Not a particularly huge project; maybe a hundred or so subtasks altogether. Then I pressed the "Level Project" button. This is the button that triggers Project to assign people to tasks and tasks to dates, respecting all the dependencies, and come up with a project plan, a schedule, a Gantt chart and most importantly of all, a project end date.

The end date it came up with was 24th February 2049.

Now, I'm happy to believe that this was because of something I screwed up—a circular dependency, or a mistyped estimate—but there was no error message, no warning. The auto-levelling is the only thing in Project that makes it more than just a wrapper around Excel with some different graph types. And it doesn't work. 2049. Not even a little bit.

(I did eventually consult with some of the other project managers on the larger project; their advice was: "Whatever you do, don't use the auto-level project button". These were the folk who'd insisted on using Microsoft Project in the first place: go figure).


Monday, November 07, 2005

Day 188

Tired and grouchy today. Because the weekend is over? No, wait, that's not it. Because the burglar alarm for the pub at the end of the road went off at 3.35am and at 4.45am. It's not like they're my favourite folk anyway; maybe they're just trying to train us up for sleep deprivation in advance of their new opening hours.

Sunday, November 06, 2005

Day 187

[reading: Dave Thomas, "Programming Ruby"]

So here's a question: how easy is it to find things about people on the filthy internet? More specifically, what could someone find out about me, starting from here?

  • Zero clicks:
    • Within blog: that I own a motorcycle, that I'm older than about 30 (stuff visible from main blog view)
  • One click:
    • Within blog: my date of birth, reading preferences, various interests (this covers any content at all in the blog, given the monthly archive links on the right)
    • Within Blogger: my age, the country I live in, various interests and favourite books and music and suchlike, the type and setup of my main computer (basically, this is contents of the profile page)
    • Outside: my real name, my email address
  • One click and a text lookup: my home address
  • Two clicks:
    • From blog: what motorcycle I drive, who my ISP is, roughly what street I live on, the company I used to work for, where I used to fence, the gym I go to (this covers anything linked to by any blog entry, or in any blog comments)
    • Outside: where I went to college, what I studied, who my supervisor was, software areas I've worked in
I guess it's not surprising, given that I've not particularly tried to hide any of this stuff.

Saturday, November 05, 2005

Day 186

[reading: Paul DuBois, "MySQL"]


In some ways, it's kind of sad looking at all of these old pictures as I scan them in: lots of pictures of old friends that I've lost contact with—people I used to spend a lot of time with, but now I've got no idea where they are or what they're up to. I did start to digress a bit into google and Friends Reunited to try to find out what happened to some of them, but with little success.

Not being able to find out may well be for the best, though. There's a friend of mine who I lost contact with a few years ago; when I had last heard any news, she had recently gotten married and they'd just had their first child. That was the last thing I'd heard, so since then I've just assumed that she and her new family were living happily ever after.

Until a few weeks ago. I bumped into a mutual friend on one of my rare excursions out dancing, who gave me some news, more up-to-date and very non-cheerful (divorce on the way, restraint orders in place). I really wish I hadn't asked.

Anyway, I've now scanned around 3700 negatives, and there's probably another 1400 to do, so I guess I'm heading onto the final straight. The cataloguing is even more dull and consequently has progressed less far—only around 2100 indexed and filed.

Tuesday, November 01, 2005

Day 182

[reading: Charles Stross, "The Family Trade"]

It's now six months into my sabbatical, so I guess it's time to stop and take stock of what I've been up to so far.

I had been feeling a bit unproductive, but there's more there than I'd thought.