10 June 2018
Four weeks to write about.
Since returning from holiday, existing projects have motored forward, and a notable large one has emerged to take me through to the autumn.
First, my own work – Longcrag prototypes arrived, and I assembled them and flashed them. Excitingly, they worked entirely first time. So that’s really positive: no bugs on the software, no bugs on the hardware. The only question now is to refine the BOM, address any oversights in the hardware, and prototype a front panel. Then I have to consider if I want to manufacture the object.
I spoke to Emma about decomissioning our art project – we came up with a process we’re happy with.
I fettled some issues that emerged on Selside, dealing with feedback, and looking into moving it into production infrastructure. It appears to have continued to be a useful tool, so I’m pleased with that.
Selworthy motors as ever. I wrapped work on a feature that’s had me deep in Hex Fiend and building an internal library, which ended up using Braid to manage the dependency, and that turned out to be a tool I’ll use again in future.
Finally, a new project emerges: it’s called Lambrigg, and it’s a longer project with Sensible Object. It’s going to be several months of R&D in a space that combines lots of my interests and expertise – games, toys, interaction design, connected objects, embedded hardware. As an R&D project, I’m going to have to be fairly obtuse about it here, but it’s going to be a good few months of work, hopefully going from exploration through to prototyping. I’m excited.
And that means I’m pretty busy for the next few months, in lots of nice spaces: a little web and software work on Selworthy, my own music/electronics projects, and my main focus on Lambrigg for a few months. Good stuff.
16 May 2018
No weeknotes. On vacation!
16 May 2018
A very busy week before vacation.
Selside was a fairly crunchy race to deliver a fair few features. As the recording process went on, lots of necessary tweaks emerged, to match both the human processes and the needs of the developers. That meant adding new fields in the system, adding pages and functionality to make the users’ lives easier, altering the data model to match the needs that weren’t immediate at the beginning, and so forth. One thorny issue kept me busy on Saturday morning, but other than that, enough was in place to make the work whilst I was away possible.
I spent Wednesday and Thursday with some of the Makerversity crew supporting an internal hackathon for a corporate client. This turned out to be a lot of fun: helping teams develop and design product ideas, introducing them to some design methodologies, and in my case, supporting a lot of people’s electronics builds. Lots of people designed their first serial protocol, and my major takeaway was discovering how good the Node serial tools are for working with Arduino boards. Definitely enjoyable, and great to spend some time with some of the extended MV family.
Finally, I ordered various prototyping parts for some Longcrag projects: the revised version of the Corex-based board, and some final drafts of boards and panels to arrive whilst I was away.
With all that out of the way, I stuck the out of office on, shuttered the studio, so to speak, and headed out for a two-week holiday. Normal service resumes in week 282.
23 April 2018
Firing all cylinders this week, with a full slate of work and good progress.
A day on Selworthy spent discussing infrastructure with the team, fixing some minor issues, and continuing the work last week on replacing a key video library.
Several days on Selside with the Sensible Object team. Lots of features added including on-the-fly transcoding, helping the content team preview that transcoding, working to integrate the management tool with development, and chatting to the audio and content teams about quality-of-life improvements. It’s really become an end-to-end tool already, which is great – what it needed to be – and it was satisfying when, after a lot of measuring twice before I cut once, we successfully back-transcoded all the files that had been uploaded before I added that functionality.
After last week’s slightly unsatisfying end to the week on the Longcrag R&D, this week was much more successful. On Monday I sat down with a hot-air gun to debug the shorts on the board I’d made last Friday, and sure enough, it was paste that had flowed under the chip. So I started fresh, using the Makerversity stereo microscope to triple-check my work. The microscope helped, but now I’m definitely happier about soldering QFP packages by hand! I added the few patch wires I knew I needed, and still no joy.
I returned to the EFM32 datasheet. Bear in mind that when we say ‘datasheet’ for a 32-bit microcontroller, these things can be hundreds to thousands of pages long. Anyhow, early on, it was made clear that regardless of whether or not I was using the ADC, I needed to be supplying the analog voltage reference with power as well for the chip to even function. I was a bit stumped on how to do that – the two pins weren’t connected to anything. It looked like it was time to tweak the board layout and order a new prototype.
After bashing heads with a friend on Friday lunchtime, I realised that we could just bridge a whole pile of pins on the south-side of the chip to connect the AVDD pins to VCC. So one more big blob of solder… and all of a sudden, the J-Link I’d connected to the headers I’d broken out detected the chip. One click from the Silicon Labs IDE and the code was flashed to the chip.
This was hugely exciting, and I quickly populated all the remaining parts on the board to confirm functionality. Sure enough, everything worked as expected: backwards. I’d added transistors to all the outputs for protection and to lift the voltage… so all my outputs that were driving them high now needed to drive them low. I rewrote some code, and it just compiled, flashed to the board… and worked first time.
After Monday’s debugging, Friday’s fixes were only an hour or so after office hours, but hugely successful: I had confirmation that, largely, the board layout was fine and the only issues were my understandings of MCU power requirements. I had the confirmation that my code works, and the confirmation that my custom programming header was fine. I also had confirmation that for all the pain points, this was definitely the best 32-bit MCU environment for my needs for now – I was seriously considering junking all this and moving to STM32.
So now the board looks like this:
…and it works. All those jumper wires and that huge solder blob at the bottom of the chip are my fixes and patches – what hardware bugfixing looks like!
Whilst last week’s R&D was frustrating, I know that the plan of attack I formulated for Monday was the right one, and as expected, it was a minor error on my part that was leading to major frustration. Firmware and hardware always demand a calmer mind on my part, and good to see it paid off. And, best of all: I immediately know what the next steps are, and I have the platform to build upon.
So: some successful days of client work, and an eventually-successful period of R&D with some good learnings; that feels like a strong week.
17 April 2018
Three things to talk about this week: Selworthy, Selside, and soldering very small chips.
Like a Pokémon from a bush, a new piece of work has emerged, called Selside, working with the team at Sensible Object to build a piece of tooling for a new product they’re working on.
The tool is not complex, technically: it’s just a web UI for content and asset management. It’s a task I often end up doing: replacing or augmenting a spreadsheet that’s beginning to serve more tasks than just a collaborative spreadsheet can.
But the tool is more than software: it’s also about building a workflow. It has a lot of stakeholders across the company, with equal but very different needs, and various needs to balance. They also needed to start using the tool ASAP, so in three days I built up a first version – perhaps more an MVP than a 1.0 – and they started using it.
This is a task I quite enjoy, because tooling always turns out to be more than just tooling. I’m going to spend some time over the coming months continuing to develop the tool and integrating with more stakeholders. I also hope we’ll develop the workflow itself – incorporating feedback from across the team, to make the process the tool supports better.
In “hardware is hard” news: the Silicon Labs prototype I’m building is… proving challenging. My first attempt at hot-air reflow with a stencil to solder the QFP48-sized package microcontroller looked successful. However, bring-up failed badly and it looked like I’d managed to first bridge 12V and GND – easily fixed – and then, more annoyingly for the microcontroller – I’d also bridged 3.3V and GND somewhere in the reflow process.
Try as I might, I just couldn’t fix this second bridge. In the process of trying to fix it, I fair mangled a pair of QFP microcontrollers. To make things worse, owing to a busy week, I managed to do all of this late on Friday, which made me feel pretty rubbish – it felt like a lot of my problems were coming down to poor dexterity on my part. And, after a week of successful client work, I’d hoped I’d be able to have similar successes with my own, self-initiated projects. Instead, it felt like I’d ended the week on a low.
But there was time to think about it. The real lesson here is not about soldering tiny SMD packages; the real lesson is about binding my identity to my work. Sometimes, when work is hard, or goes badly, I feel bad about myself. In fact, this is just a small blip. If it had worked, maybe there’d have been issues with my board layout that required a second run, or the code might have needed more work than I realise. So it’s not like this is the massive blocker that defines the project.
It also made me realise it might help to re-evaluate why I’m doing the project, and set some explicit goals for it. Because I think there’s still reasons to be doing it, and I it might help to check if I’m meeting my goals or not. And perhaps it’s then worth taking another crack.