• Week 344

    11 August 2019

    After an intense week 343, 344 was much quieter. I got some feedback on the work so far on Longridge, so spent another afternoon or so wrapping up my work there, going over that feedback, adding some new things, and sending it all off for approval.

    A box of parts arrived for Dent. Not much happening there til the prototype boards arrive, however, so that’s sat on my desk.

    In “learning things” time, I spent a little while exploring new deployment options for servers. In particular, I spent some time looking at Dokku, a containerised deployment platform that installs to a greenfield server environment and then allows deploys via git pushes. It uses Heroku-style ‘buildpacks’ to provision and configure server infrastructure. I’m not sure I’ll move to it just yet, but a small amount of work got me a setup that will compile Hugo sites upon deployment and then point nginx at the deployed folder. Useful to consider as a way of gardening future servers, and also of standardising deployments and tools for myself.

    And at the weekend, I saw in this picture of Richie Hawtin playing live… that he’s got a 16n as part of his rig (spot the faders between the tangle of cables that is his modular synthesizer, and the little 303-clones by his waist):

    I was pleased and proud of that.

  • Week 343

    4 August 2019

    A busy week: lots of work, not a huge amount to say, as a result.

    I spent four days at After the flood on High Vinnalls. This was a product development and data exploration exercise. I worked on exploring some datasets for an ongoing client project over theirs, building tools to quickly spelunk around in the data and establish signal, noise, and see what other things would reveal themselves. Not in order to visualise them, necessarily, nor to make a data-exploration product. Rather, the exploration was to support product development and invention. What products might be possible? Does the data support various ambitions?

    ATF presented to the client at the end of the week, so it was an intense few days of thinking, sketching, and coding. Really good to be in the room working closely with designers as we tried to understand the shape of what we’d been given to work with.

    In amongst that, I went up to Leeds on Wednesday night to spend all day THursday on a workshop at the University for Longridge. The goal of the workshop was to devise the structure and outline of three short courses I’d been writing. This too was very, very intense; I think we made good progress, but I’ll need to return to what we did in week 344 to finish up a few last things - and to be able to look back on it with the benefits of some perspective!

    I also got a goahead at the weekend for an initial exploration into Dent, which may, or may not, turn into a project in due course. For now, it’s a quick pass to just see if anything is possible. This is a small hardware project - very much something on the side, but a nice backburner project if it comes off.

    Phew. Busy, busy week.

  • Week 342

    28 July 2019

    Longridge is really beginning to motor. I finished writing a the initial preparatory work for a workshop in Week 343. That was harder than planned. Lots of variables are still up in the air, and the later stages of the work are highly dependent on these ones; as a result, I sometimes get tangled trying to think about all the possible outcomes. But: I got enough done to generate the raw materials I was required to for the workshop, which was most important.

    Also, the topic area is now well established around in my head, which means I have lots more thoughts still unwritten - some aren’t quite ready for that, others might emerge in the right context. I think that’s all fine: it’s the right place to be in at this point, and will be more things to feed in to the workshop next week.

    Towards the end of the week, a short piece of work for After The Flood came in. I’m going to be spending the rest of Week 343 with them, working on some product exploration around data for them - coding, talking, thinking work. Looking forward to working with that team again.

    I also have a small hardware project that has had some external encouragement to suggest it’s worth getting to the end of phase zero on it. Phase zero is, I suppose, the point where something reveals if it’s going to be A Thing or not. Sometimes, you do the work, and there’s just not a product there (or not one worth building); better to find that out with as little effort as possible. I’m going to finish up this exploration phase and see where it lands. For now, that means getting some PCBs spun and assembling them when they arrive.

    My little React prototype is in good shape. Something clicked and I tore out lots of component-spaghetti. Now there are just enough components. All of a sudden, passing state down looks tidy, rather than baroque. I spent some time adding a few little features, and continuing to refine my knowledge of new browser APIs. It still feels like a delight to find so many browser APIs being generally supported - I come from an era where most of the Good Stuff just wans’t standard enough. And, on top of it: the little tool is beginning to feel usable.

    And that’s about it. Week 343 is a busy one: in Leeds on Thursday for Longridge, and at ATF for the rest of the week.

  • Week 341

    20 July 2019

    I kicked off work on Longridge this week, with a remote meeting to go over the shape of the initial work, and some of the approach. That’s given me some grounding, some ideas for a deadline at the end of Week 342, and - most importantly - some homework before a workshop in week 343. That homework lead to some planning, research, and an afternoon of kicking tyres on the internet - amongst other things. I actually need to check what I can say about Longridge - I think I can be reasonably public - so I might describe that more next week.

    I spent a day brushing up on the state of web development in 2019. I’m a lapsed front-end developer back from the days when that primarily involved deep knowledge of HTML and awful, awful browsers. (I definitely have built some IE6-compatible sites in my time). Since then, I’ve seen front-end change a lot, and done a nice pile of work on Captionhub with the HTML5 media extensions and spec. But there’s still new things to learn, so I spent an afternoon bringing myself up-to-speed with CSS Grid. Gosh, it’s good, isn’t it? It solves a problem elegantly, and still gives - in many situations - completely acceptable fallbacks when it’s not available. A really elegant API, and a nice bit of technology. I have a small backburner project that I’m using to learn new things on, and I spent some more time on that this week, too; it’s nearly hitting a nice alpha point, so perhaps a concerted day or two in the future will push that over the hill.

    It’s nice catching up with technology once it’s a little established. I subscribed hugely to the notion of choosing boring technology. I’ve never been let down by boring technology, and, some days, it’s been reassuring to have my bacon saved by not picking something that goes out of fashion as fast as it came in, or doesn’t have support, or just ended up being the wrong horse. It’s why I still am entirely comfortable shipping Rails projects: it works, it’s expressive for developers, Performant Enough, and gets web-apps based around shipping content to/from databases over HTTP out the door quickly. Uncontroversial. So rather than hurtling to stay up-to-date with trends, I’m comfortable keeping one eye on them, and the other on the Unexciting Present. I’ll read, think, compare, but committing to using them is a very different process. Now that I’m in a lull, it’s time to catch up a little and explore.

    I also shipped a few small pieces of code related to things I’ve been doing recently.

    Firstly, some Javascript: wxr_to_json is a small command-line node tool for converting Wordpress eXtended Rss to JSON files, simply for ease of processing. It’s a little opinionated - it flattens some one-item arrays into objects - but it works very well for large WXR dumps; v8 and xml2js are very, very quick.

    Secondly, some Ruby. I packaged up a gist by Stefan Daschek into a gem to use as a Capistrano plugin. It’s ideal for deploying static sites (including build processes) with cap: it makes a clean local checkout, gives you hooks to run build processes, and then uses rsync to move built content to a server (and lets you use all of cap’s versioned deployment tools). The code worked, but it felt cleaner to turn it into a gem, rather than a lib file floating around my repository. So I finished the bundling job and wrote a pile of documnetation. No idea if either of these will be useful to other people, but they’re easily shared. So let’s do that, then, and perhaps someone else will find them useful. (Why are you using a server and not a CDN for a stic site, you might ask? To avoid yakshaving, primarily. Change one thing at once!)

    And that was a week.

  • Week 340

    12 July 2019

    A good week! Most visibly, I updated the case studies on this site with lots of new projects over the past three-and-a-half years. Really pleased to have these write-ups done: they illustrate lots of nice angles on my work, and I’m glad to show off Captionhub in detail.

    Under the hood, I’ve moved everything over to Hugo and a lot of static files. That’s been a largely delightful process.

    I got a little blocked at deployment - I was hoping to move to some kind of CDN-backed deployment, but things were getting a little complex, so I simplified the problem, and just deployed to my existing host.

    That involved some neat wrangling of Capistrano. I like cap simply because I use it everywhere, be it for Wordpress (with the composer plugin), Ruby, or static sites. It versions directories, allows for rollbacks, and is a neat layer of glue around ssh.

    For this site, I took this sample rsync plugin, and then wrote my own cap tasks so that each deploy checks out the clean site to a temporary folder, runs yarn, runs hugo to build the site, rsyncs that to a server, and finally updates a symlink. It didn’t take long to have that running in my current setup - nice! I might wrap up that rsync plugin into a proper gem next week as nobody seems to have done that yet.

    Anyhow, enough about infrastructure.

    In new work news, it looks like there’s a writing project - to be known for now as Longridge kicking off next week, and that’ll run in the background for a couple of months. I’ll have more to say on that one in due course, but for now, I scheduled in an early workshop and some onboarding calls.

    However, I’m also looking for new projects to run in parallel with that. Ideally, something more technical - prototyping, exploration, or communication and technical consulting. Themes I’m particularly interested in: sound, video, and interaction with those; connected objects and whatever we’re calling “IoT” now; and, perhaps most vitally, tools to empower, enable, and enrich. Work on tools like CaptionHub and instruments like Twinklr and 16n scratches the same itch: giving someone the tool to do work with, to create, and to do things I couldn’t even imagine. I’m interested in continuing to explore that space. get in touch if that sounds like it’s up your street.