• Week 129

    7 April 2015

    A really good week on Selworthy.

    When I come to put together weeknotes, I often take a squint at the output of git log for the past week to remind myself what I did. Some weeks, this will show loads of commits, and the forward velocity is really obvious. Other weeks, it'll feel like I've done a great deal – but there aren't always the commits to show it.

    This was one of the latter weeks. That's mainly because I've been focusing a lot on implementing and refining the front-end UI for the project, and that means lots of slow but meaningful modifications to a handful of Javascript files.

    I pretty much wrapped up this pass on front-end UI this week. That included adding lots of mouse-manipulation interactions to the canvas element that is fairly critical to the application. Because Canvases are just pixel-arrays, it's in some ways harder to do interaction-detection than it is with SVG (where each visual element is also a DOM element). But because of the way the canvas is written – a single Backbone View that renders itself at up to 60fps – it wasn't too hard to add the manipulations to the event loops on it. These manipulations also update Backbone models as the user uses the mouse, and, ultimately, sync to the Rails back-end. By the time they were in-place, things really felt like they were coming together.

    That was the large change to the front-end; but there was also a lot of smaller polish. Adding keyboard shortcuts; fixing issues with flickering as Javascript templates render; refining the UI as we played with the application. Not many obvious commits, but lots of progress.

    I spent some time experimenting with installing ffmpeg on Heroku, by having multiple buildpacks on one host, and discovered that whilst it was possible, it probably wasn't something I was going to spend much more time playing with; instead, I'd use some of the banked time on the project to rewrite some early work to use an external transcoding service.

    I've been making good time on Selworthy, and I've kept the client abreast of the difference between my original estimates and reality. They've been receptive to this, and very understanding. What it's also meant as that now that we've discovered that something implemented back in Milestone 1 wasn't necessarily going to hold up in production, we've actually got the time – largely left over from Milestone 1 – to implement it properly, and also gain some nice-to-have functionality for free. Frequently, I find that time saved often gets applied to improvements on that work, and it's been great that the client's been in entire agreement with that, making important improvements easy to work into the schedule.

    Selworthy continues to be hugely satisfying, touching at lots of interesting edges: rich interactions; intensive but selective use of lots of features only possible in modern browsers and HTML5; just enough modern Javascript to make sense. I'm enjoying it a great deal.

    Week 129 is a short week, because it's the Bank Holiday, and whilst I may be freelance, I take Bank Holidays. That makes Week 130 short, too; I'll be spending it with Good, Form & Spectacle, and returning to Selworthy in Week 131.