22 April 2019
Lots of meetings at Highrigg, across a range of projects; some good time thinking through design interactions with colleagues, and then, around that, spelunking an API I’m coding against.
At the same time, forcing my brain through the React mincer possibly faster than is ideal. I am finding getting up-to-speed with React challenging, and often end up frustrated.
Learning new things is hard, yes, and it’s of course sometimes the work of a technologist to stay up-to-date. What I’m finding hard is the gulf between the basic tutorials and guide (which I’ve completed and re-read a few times) and the real-world project I have to operate in. I know this means I haven’t fully internalised the information – going from knowing to knowing – but it’s a while since I’ve felt like this. It doesn’t help that it feels like something I ought to have some faculty with, as a former front-end developer.
Why am I putting myself through this? Because I think it’s important even if I’m spelunking or prototyping to work in the platform other colleagues are most familiar with, and inside a React+Typescript shop, I think it’s reasonable to work with those. (They also, lack of familiarity aside, seem like highly reasonably technology choices). There’s real internal value to playing ball, especially in a larger organisation, and so a balance between ‘output from prototyping’ and ‘lasting value of prototype’ needs to be trod.
We’ll get there. But a frustrating few hours trying to achieve things I know I could do in other platforms or languages, and resisting the urge to chuck in the towel.
On Thursday, I found that Fedex had failed to deliver parts for a Foxfield run, so delayed that until next week. I spent some time in CAD and lasercutting, wrapping up a prototype panel, and then finishing the electronics of the prototype I’ve been working on. This went well: my workflow from panel to cutter is much tighter now, and a single iteration got things spot on. The prototype is working well, too. Time to make a decision about that prototype soon.
And then, a long weekend. Back Tuesday for a four-day week 329.
14 April 2019
Highrigg continued. There’s not a lot I can really say easily in public about my work there; suffice to say, an amount of prodding at code, exploring APIs, discussing interactions with colleagues, and drawing up a technical overview of a future product.
On my couple of days in the studio, I made good headway with the electronics project I was working on in Week 325. I managed to get a better understanding of flashing the device over SWD – and managed to do it with a BlackMagic Probe, which is a more affordable, open-source alternative to the full JLink (though the Segger tools are excellent). By the end of Thursday, I could program the bootloader and application code via
gdb. I also finished porting the code over, and discovered the board worked entirely correctly. A few pin alterations in the firmware, and it looked like it was end-to-end working. I spent a little while thinking what programmer or test boards might look for it, and ordered some material to laser-cut a front-panel in week 328.
Broadly, though, I’m quite excited, as the whole SAMD21 unit can be placed into other projects in future relatively easily.
On Friday, I started working up an order for Thonk of some Foxfield products. That entailed a quick stocktake, work out what I already had lying around, and then ordering parts from Mouser and a few runs of PCBs from China. I also stuck on a new prototype to test some EAGLE part layouts I was playing with, potentially as a future revision to 16n.
I also had some nice meetings this week. On Thursday, I had an excellent chat with Ben Pawle from Nord. Ben and I discovered we were both teaching on the same Hyper Island course, so he suggested catching up – last time we’d spoken was at an IoT Coffee Morning that Matt Webb ran. It was great to talk to another practitioner; we talked about design practice, and making bots, and balancing own work with client work, and it was good to be reminded I’m not the only person doing this.
I also spent some time with a colleague at Makerversity who’d initially asked for some assistance with ESP8266 – but we ended up having a deep dive on designing the connected component of IOT products, and it was good to be able to share some experience across that shape of product design. Namely, I ended up recommending against technical complexity too early in the process, and instead we looked at doing the bare minimum to get to end-to-end – and to find out what making a product connected felt like. By doing that, you get to discover surprises on the way sooner, rather than engineering to spec and not leaving space for serendipity.
01 April 2019
At the beginning of the week, I made headway at Highrigg with a code integration. I don’t normally go in for code generation, but for a quiuck prototype, feeding someone else’s Swagger-based api into
swagger-codegenfeels like exactly the right thing to do (and, of course, just what Swagger is designed for. And: it largely worked! By which I mean, we had a command-line Typescript demo in around an hour. That means I can take a stab at prototyping something else in due course, and perhaps move to something more bespoke in time. But it’s a starting point, and nice to see all the moving pieces working.
I also continued to work on wrapping up the workshop from the week before with some review work, as well as pushing a web project a little further forward.
Thursday was first non-client day in the studio in around a month. I put together some new boards of an internal electronics project that’s been going on for ever. for the first time, I managed to solder QFP packages without a hitch (mainly thanks to a good magnifier and a lake of flux).
The QFP package in question is a SAMD21. I’m making a board that has a microcontroller on it, but also a USB port. Thanks to Microsoft’s UF2 bootloader (which is a brilliant bit of engineering), it should then be possible – once i’ve correctly flahsed the bootloader to the chip – to either program the board from inside the Arduino IDE… or to just drag a .uf2 file over to it and let it flash itself automatically. The idea is that hobbyists can hack on the object, but people uninterested in code can patch firmware with a usb cable and drag/drop – a nice way of doing post-launch patching.
After a few hours of soldering in the morning, I then spent an afternoon working on trying to get UF2 bootloader onto the board. SAMD21 For Dummies has been a useful port of call but it was Tod Kurt’s notes that got me over the hump (along with remembering a key detail from an earlier error message). I spent ages with no avail trying to flash it with an STLink debugger; a Segger JLink proved to be just the ticket. And then, having flashed it with the debugger… it appeared on my desktop and behaved over USB.
A good victory to end the week on.
Week 326 is a vacation. I’m actually writing this from a sofa in the Lake District, where I can say I did a first: I climbed the hill an active project is named for! Yesterday, I took myself to the top of High Rigg. I wonder if that coincidence will ever a happen again.
18 March 2019
As expected, the past couple of weeks have been really intense: Monday and Tuesday up in Manchester, teaching the Digital Technologies module up at Hyper Island, before three days at Bulb back in London.
Teaching has gone well. Lots of content delivery up-front in the first week – skewed that way perhaps more so than was ideal, owing to time. As well as my usual lectures on Innovation & Trends (picking apart how technological trends are perceived and the major ones that have really underpinned the past decade) and AI (“How Computers (Don’t) Think”, a favourite of mine) I ran an afternoon workshop on programming.
I’m always wary of teaching programming and coding – especially in short periods of time. It can be really unsatisfying to deal with syntax errors or tooling issues early on when you have a very limited window; I’d rather spend that time usefully learning something. So what I did was focus on the feel and practice of programming. We used Google’s Blockly visual language, and, having learned a little about it, focused on its visual interpretation of Logo.
It’s no secret I’m a huge fan of Seymour Papert and his team’s work on Logo. It’s such a smartly designed domain-specific tool – but it also manages to take us on some useful journeys. By using it with the visual Blockly language in a browser, we avoid needing development environments or having ugly syntax errors. My idea then was to anchor what was happening in the Logo world back to programming practice. To that end: we learn about algorithms, and iteration, and variables and function (nouns and verbs) – before going into problems that require more conceptual modelling. Logo even gets you to debugging and ultimately refactoring quite nicely – going from describing individual turtle movements into abstracting them into verbs like
HOUSE, and then improving those to take sizing as a variable. You go on a useful journey without having to do too much tooling.
As a first run of a new workshop, it was alright – it’s a little longer than I realised, and it’s appropriate to spend a good while on the first few training runs to get everyone up to the same level. But hopefully some insight emerged, and it’s certainly something I’d like to revisit.
We also got a brief from our client in the first week, and much of my time in the second week was spent coaching the teams on their responses, helping them focus their discovery and ideation phases. In week 325 I’ll be doing some more coaching and then visiting their client to watch their final pitches.
Back in London, Highrigg entailed a moderate amount of coding and refactoring, a decent number of (useful and/or interesting) meetings, prepping a short talk for an offsite workshop, an excellent day workshopping with a good number of colleagues, and beginning to write that workshop up. Hopefully I’ll finish that delivery in week 325.
And that was it. A circuit board arrived for build-up, but I’m not going to have space to do that til at least week 326. In the meantime, it can sit on my desk, tantalizing me.
10 February 2019
A lot of Week 318 spent writing on Highrigg. For a lot of my work, writing is a solitary activity. I’m writing for myself, or I’m writing to deliver to someone else. Here, it’s more important that it’s a team sport: something that origins within our team, but passes a series of eyes to fettle, fact-check, and generally improve it. I’m learning to navigate this process, but also working out how best to embrace it and write for a team. By the end of the week, the piece was looking up and had been through some good drafts.
The team’s also been deploying code, which is exciting. Pull requests are getting approved, other colleagues are commenting on them, and by Thursday of week 318 I had a whole back-end tool going through the wash (that is, continuous integration), getting deployed, and working correctly. Small steps, but I’m always a big fan of getting to end-to-end fast, and this is a big chunk of this.
Back at the studio, I started putting together a new Foxfield order from Thonk. Stock levels meant it just required some new parts from Europe – which is good, because Chinese New Year means that anything coming from there would take a while. Those parts should be arriving towards the end of week 319, and then there’s a morning of kitting to be done.
I also returned to the project with the EFM32… and set about replacing the EFM32. Yes, this is yakshaving, but there’s a plan behind it. My plan is to make the final product easier to hack or update. To that extent: something you can hack in the Arduino IDE is an order of magnitude easier than getting going in Simplicity Studio. And: something that you can upgrade firmware on just by dragging it over a USB connection, rather than having to use the Arduino IDE. To do that, I’m moving to SAMD21 and UF2. The SAMD21 is what’s in a lot of the new Adafruit boards (and the Arduino Zero), and UF2 is a magic bootloader that handles all manner of IDEs and platform and seems to Just Work. An afternoon in EAGLE had a new layout routed; another morning had the firmware ported back to Arduino. So that’s something to get fabbed up soon.
Over at my personal site, I wrote up an e-ink display I made for my living room, a continuation of years of interest in e-ink displays, and something to keep tinkering with.
I spent a lot of Week 319 being ill – the dangers of working in a large office, I fear, as there’s definitely something going around. A couple of days on Highrigg made some good progress with pairing on code, and continuing some comms work.