• Weeks 268-269

    19 February 2018

    Week 268 saw the launch of Variations on a Weekend Theme, the project formerly known as Gummershow.

    I worked with artist Emma Smith on a digital rendition of her piece Variations on a Weekend Theme. In 2015, the piece took the form of a pop-up apothecary that Emma dispensed prescriptions from; now, it’s available on tablets within the gallery, and on the internet at the Kettle’s Yard site – where you can find out more about the project and visit the apothecary.

    I spent the days before the launch fine-tuning a few issues, and then headed down to Kettle’s Yard itself on the Thursday for the launch night. The new extension is excellent, and will allow for larger temporary exhibitions for them, though as ever, it’s the original space – and its 1970’s extension – that really lift the spirits. What a place; how nice to make something for their re-opening.

    With Gummershow out of the way, it feels like I’m now into a new year: things have wound down, and I’m taking some time to recuperate and refocus. Week 269 was deliberately quiet: some time spent continuing some work on Selworthy, working on some personal engineering projects encompassing electronics, CAD, 3D fabrication and music, and starting to take stock. I also began setting up a few meetings about future projects and consultation. I also took time to catch up with friends and colleagues – something I’ve just not had space to do for a while.

    What’s next? Thinking a bit more about the future, finishing up some hardware projects, having some conversations. If you’d like a chat, do get in touch.

  • Week 267

    5 February 2018

    Back on the weeknotes wagon properly.

    A couple of days on Selworthy was split equally between working through some cards tidying features, and doing research into new approaches to some of our key components. Increasingly, there are ideas I can only get my head around after a fair amount of reading, thinking, and staring, but a few hours at least got to the point where it was possible to define what a spike of a few of the features would look like.

    I spent the rest of my time this week working on Gummershow with Emma, getting ready for the install. That involved lots of back-and-forth on the finer points of how things should look and work, and testing the install on iOS devices as that’s what it’ll predominantly be experienced on. By the end of the week, we had an experience we were satisfied with.

  • I was always expecting January to busy; it turned out even busier than I planned, and the first casualty of that was Weeknotes. I also know it probably shouldn’t have been – that weeknotes are a useful part of process even if I’m thin on capacity, and that I should make them lighter rather than skip them.

    Anyhow. Here we are. Let’s run down what’s been going on:

    • Weeks 261 and 262 were the Christmas holidays. Very quiet, very pleasant, much-needed.

    • A second, concluding set of class days for Lowick, the Hyper Island Digital Management MA. I prepared three new sessions for this, called Data, Crypto, and a final one on real-world experience of digital projects. I’m particularly pleased with the Crypto session: in 60-90 minutes, it covers cryptography from a Caesar cypher through to crypto-currencies, with detours into polyalphabetic cyphers, how an Enigma machine works, how public-key encryption works, and what’s going on when you visit an HTTPS site. It turns out if you start with the simplest, pen-and-paper stuff, you can build on top of it until you have all the components to talk about other things.

      On top of the sessions, we had a few more guest speakers and sessions in, which went well, and the students presented their responses to their brief. All of them were super-impressive – they’d improved each day I’d seen them, and noticeably since their first days on the module. A great conclusion to my work on the course. And: perhaps there’ll be more things resembling this kind of work in 2018.
      • I spent a lot of January working on Gummershow, building a digital adaptation of one of Emma Smith’s works for the re-opening of Kettle’s Yard in February. That’s nearly complete as I type: some last adjustments to make. Lots of small details to work through, and at one point, a frantic afternoon of tearing out phantomjs and replacing it with puppeteer. (That turned out alright – it turns out puppeteer is very impressive, and was a fairly straightforward replacement). I should have more to write about this next week.
      • Over on Selworthy, I focused on a few areas, notably, integrating with an extenral API; fixing rendering issues with, in particular, Arabic typefaces; and the usual fettling and ongoing improvement. We also had some good architectural discussions about the future.

    It doesn’t sound like much, but it was fairly wall-to-wall – producing material for teaching, running classes, and then straight into a installation software build. And now it’s done. I’ve joking said to a few people this month that I’m still in 2017, and that 2018 begins for me in February.

    Well, it’s February now. Happy new year.

  • Week 260

    18 December 2017

    A slightly distorted week, in no small part thanks to illness.

    Monday I took off as a catch-up post Hyper Island teaching. On Tuesday, I went up to Cambridge to meet Emma to talk over a digital work I’m building with her for the re-opening of Kettle’s Yard; this is the project known as Gummershow. I left Cambridge with a much clearer understanding of the problems at hand, and what I’d like to get done on the project before the year is out.

    Unfortunately, by Wednesday, I was laid out with a solid case of endoftermitis: pushing a bit too hard towards the end of the year coupled with rooms full of people who may also have had colds. That led to lowered productivity for the rest of the week – I pushed through some work on Selworthy, but not entirely effectively, and perhaps should have been firmer with myself about taking time off: some days, though, it’s just boring being ill and I’d have given anything to have had my concentration back.

    I ended the week perhaps further behind on Gummershow than I’d have liked, but in slightly better health. One more week to go – and it’s going to be a busy one.

  • Weeks 257-258

    4 December 2017

    Oops. Missed a week. There’s a lot going on at the moment:

    • I set up a first meeting with my collaborator on Gummershow. I tend to find that a day sat with an artist to confirm the brief and spec is much better than any number of phone calls. So we organised a day to sit with each other and sound out the idea. I think that’ll also lead us to discovering some unknown unknowns much faster, and hopefully lead to some new conclusions. I’m looking forward to that.
    • I started writing lots of course materials for Lowick. To briefly decloak: in week 259 I’m going to be running workshops for Hyper Island’s MA in Digital Management. I’m the ‘industry lead’ for the digital technologies section of the course; over two intensive sets of campus days, we’re going to be diving deep on some ideas around digital technology practice and culture, and exploring some of the squishier, important edges of these issues, particular around cultural and ethical issues. I’m excited by the guest speakers we’ve got to challenge and provoke our students. Should be good.
    • I spent my time on Selworthy working a lot with APIs: continuing to expand our inbound API, and then working on some integrations with third party systems. Great to see what was once architectural work turning into features.
    • And finally, I wrapped up a phase of Longcrag collaboration work, with the largest circuit board I’ve designed to date. The firmware’s all working and the BOM’s pretty much good to go, so it’s time to share it with the community that are interested in it.

    aaand: onwards!

  • Week 253

    1 November 2017

    Bullety notes for a handful of projects:

    • I wrote a pitch document for Gummershow, as a way of unravelling the problems, presenting them back to the client, and making reasoned estimates. It’s given them something to think over, and has helped frame what’ll be required to pull it off.
    • I said “yes” to Lowick, and started seeing what getting the ball rolling on that would be like.
    • I ordered some prototypes for Longcrag/Foxfield from Aisler – I needed new protoypes for the latest round of changes, and want to see if Aisler is a viable alternative to OSHpark – they seem about as fast, cost about the same, but are based in Europe which might become an advantage.
    • The Selworthy dev team sat down and chatted about how we’d like to modify our process, and I think we came to some good conclusions. Otherwise, I’ve been up and down the stack again, looking at issues with modern Javascript compilation that have been arising, adding some new front-end validations to improve users’ quality-of-life, and diving in on some pull requests to stay on top of what’s going on.
  • Week 252

    23 October 2017

    Lots of things to talk about, plus a story about debugging, because I’ve not talked much about what working looks like.

    Not a lot to report from Selworthy: post-deploy, we’re beginning to work out what’s next, corralling future plans, and I think now is a good time to re-examine process. It also looks like I have a few days of sysadminning ahead of me – never my favourite task, but doing just enough to hand it off to somebody else at least means it’s a finite task.

    I continued typing away at Cleeve. Only a few big projects left to write up, but there are definitely some second drafts to come.

    A couple of phonecalls and meetings mean that there are two new things on the horizon and inches from actualisation. Let’s call them Gummershow (gummers-how, not gummer-show) and Lowick for now. Should have more about these next week.

    And over on Longcrag, I continued hacking away at some embedded code and learning a few things on the way. Let’s talk about how that’s going.

    My development setup looks like this:

    Dev setup

    At the top is the Silicon Labs development board. At the bottom is my test harness: rather than having a messy breadboard, I designed and built a simple circuitboard containing my test hardware – a button, a switch, some jack sockets and LEDs, and a pinheader to connect them all up. That can just be put straight into my breadboard as an intermediate between it and the pinouts of the development board. Much easier to work with. (Why isn’t it a ‘shield’? a) It’s cheaper – PCBs are priced by size but also b) I don’t know which pins I want to work with yet. This lets me choose and change my mind).

    The code is all running on the Silabs board, and I’m able to debug it over the USB line. Proper watching of expressions and variables here – a huge quality-of-life improvement over printing strings to a serial port.

    I had the code working end-to-end last week, and had been compiling it in the ‘debug’ profile. I swapped over to the ‘release’ profile to see what would happen, and the answer is: a bunch of things broke in unexpected ways. After eyeballing my code, I altered my approach to debouncing, but no dice.

    I decided to stop using my eyeballs and start using the right tool for the job – so I fired up the oscilloscope. One pin in particular, which ought to light an LED for 50ms, was blinking imperceptibly. I used the scope to time it. In ‘debug’, it was blinking for 50ms; in ‘release’, it was blinking on for 390µs or so. Not what I had in mind.

    I continued poking to no avail; I ended up wiring a pin into the oscilloscope and using it to debug all manner of variables. The system clock was running correctly; all the timing code was behaving correctly; evidently the error was somewhere else.

    I decided to look at something else – another output that ought to toggle on button presses and would, unreliable. I discovered that it was not staying lit but bouncing, imperceptibly – a tiny square wave of pulses before it settled into a state. And the scope told me those pulses were 390µs wide.

    And that was the key that cracked it.

    The bounce indicated that the variables was altering, but far too fast – it was being changed in the main loop, when it really ought to have been changed in the system tick. That was a mistake – when I corrected it, things started working correctly.

    The real key to understanding the problem, though, was the duration – 390µs – being exactly the same as the burst on the other LED. It turned out that in the ‘debug’ profile, when the board runs slower owing to all the other things it’s doing, the main loop was taking more than 1ms, and so the problem never emerged. In the debug profile, the main loop was taking less than 1ms – probably around 390µs, in fact – and the problem reared its head.

    It took what felt like an absurd amount of time to solve this problem – about a day and a half, I reckon, over this week and the previous one. But when I solved it, I felt satisfied: I’d gone from ‘trying everything’ to real diagnosis – and debugging software on an oscilloscope. (It also reminded me about the value for the right tool for the job. Sometimes, I wonder if the scope is a bit of an indulgence – and every time it turns out to be exactly what I need, I am super grateful for it).

    Embedded code, eh. I’m hitting a point with this where I think it might be time to think about building a full prototype. Erk.