• Weeks 286-289

    8 July 2018

    It's been a while without notes. That's mainly because I have a lot on: Lambrigg has been fair motoring, and multiple clients filling an entire working week means notes and admin get pushed to the weekends, and some days, that means weeknotes just don't happen. My bad.

    Fortunately, things are in a loosely steady state:

    • Lots of work on Lambrigg over at Sensible Object to get through the first main phase of the project. That's mainly mean I've been in a research mode – lots of searching, reading, thinking, writing, and also conducting a lot of interviews in person and on the phone. We got to a good place at the end of Week 289 to present our research to the team, and I'm very pleased with how that turned out. We're regrouping, and then working out what comes next.
    • Selworthy is moving apace: the team made some chunky infrastructure changes that all went very smoothly, and I continued some spelunking on more experimental work. The tech team is really solid – and growing – and my very limited time there is now down to advisory work or ‘special projects’. Which, at the moment, are proving to be challenging (the good kind) and challenging (the bad kind) in equal measure.
    • I made a small but useful MIDI controller for Richard, which was a nice way to use some CAD work to push out a simple tool for a friend to control virtual instruments with.
    • The other musical tool I'm working on, 16n, has moved forward a little, and in week 290 I should be building up the latest prototypes. More to report before the month is out, I hope!
    • And finally, in other Sensible Object news, the team there launched When in Rome, their travel trivia boardgame for Amazon Alexa. I had a very small part to play in this – Selside was a piece of back-end tooling around content management and production for this game. It's exciting to see it in the world and in the hands of strangers – who seem to be enjoying it. Congratulations to the whole team; it was a hectic final month and they pulled off something good.

    And that's everything. Let's see if I can't get these notes into something more regular for next week.

  • Weeks 282-285

    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.

  • Week 279

    16 May 2018

    A very busy week before vacation.

    I spent my Selworthy time wrangling Javascript and discussing infrastructure with the team – finalising swapping out a major library before I went away.

    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.

  • Week 278

    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:

    Photo 20 04 2018 18 34 54

    …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.

  • Week 277

    17 April 2018

    Three things to talk about this week: Selworthy, Selside, and soldering very small chips.

    A day on Selworthy focused on Javascript – replacing one video library with another, writing a plugin to make that transition easier, and tidying up some code. By the end of the day, I had feature parity between the old version and the new, which is good: it'll make swapping that in easier, and make future features possible. A little painful returning to some many-years-ago Javascript, but good to see that some of the decisions I made a few years ago still made sense.

    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.

  • Weeks 275-276

    9 April 2018

    My time over the fortnight around Easter was spent on some Selworthy R&D, wrapping up a Foxfield production run, and continuing various pieces of hardware R&D.

    Over on Selworthy, I finished up my first pass at the stand-alone library I've been working on and delivered an end-to-end test of its output. In week 276, I moved onto R&D around HLS video streaming – not only the various FFMpeg incantations to generate it, but also exploring how much of our client we'd have to replace to implement it, and how best to retain feature parity. The answer is that the key features will transfer over fine, but we're probably going to have to replace one particular video library, and so my continued scoping – for now – will be about delivering that feature parity.

    After various pokes and prods, my PCB vendor in China delivered a batch of front panels that were correct – following some production delays – and that meant I could box up a Foxfield/Longcrag production run and send it to Thonk.

    This also confirmed my new approach to panel manufacture is successful, and that opens up some of the otherwise tight margins on future Foxfield products – which are nearly ready to offer up, I think.

    Over on the 16n project, we saw our first prototype aluminium panel, which looks great. The next move is to make a full prototype of this version – version 1.25 – and confirm everything fits as expected. I think fit/finish will be fine; the key thing is confirming sizes of standoffs and screws. Once that's done, we're on to looking into manufacture routines.

    As part of that, Brendon shared some calculations he's previously used around costings for hardware runs, which were really illuminating, particularly for understanding how much that looks like ‘profit’ is, in fact, really just margin and contingency. It's helped me understand what a particular idea I currently have might involve, too.

    I also continued work on a small Longcrag prototype that I'm designing for manufacture. Will this ever happen? I don't know. Why do I keep spending time on it, then? It's a good question. It's certainly intellectually interesting. And I'm learning a lot. It's definitely not hit a NO GO condition, though it's getting nearer to that point, perhaps.

    On this DFM prototype, I assembled a test board. This is significant for a few reasons; notably, it's the first board designed around the Silicon Labs chip I've chosen to use. That chip happens to be in a QFP48 package, which is about at the limits of what I've previously hand-soldered and, sure enough, it turns out my hand soldering is possibly not up to the job. The idea is to build up this prototype, and flash it via the SWD interface I've broken out on the board. That would prove that my layout for the chip and SWD interface were correct.

    I spent a lot of Friday trying to do this over a JLink, with no joy. It's not clear why, however. I patched a minor mistake on the board, tested the pinouts with a multimeter; I am pretty sure the board is correct. But it still could be a manufacturing fault – ie, my soldering. My plan for next week is to use a stencil, solderpaste, and a hot air reflow station to try to make a more definite connection between the QFP48 and the board. If that doesn't work… I might be throwing my hands up in the air, into a NO GO configuration.

    Why would that be a NO GO? Because it's tiring, and I'm heading towards a point where I'm no longer learning or moving forward; all I've got to is a sticking point, and maybe going around would be better. But we're not totally out yet. So another afternoon on this, still. I remain hopeful. Of course, if this is a GO, we open a whole new set of GO/NO GO branches – finishing firmware, for starters, and then trying to work out if there's even a market for this.

    I also managed to fit in some more social engagements. I spent a nice lunchtime with Nick and Timo at Playdeo. Mainly just a catch-up with old colleagues, friendly chat with peers in the industry, but also good to talk shop with other people working between technology and design, gain some perspective, and tickle each others’ imaginations. Good for the soul.

    And on Friday, I got over to a BBC R&D event exploring the artistic application of voice assistants, pairing technologists with musicians and sound artists. Some familiar and new faces, some great performances, and good chat afterwards. Also good for the soul.

  • Week 274

    26 March 2018

    I've largely stepped back from Selworthy now, spending a regularly day a week with the team reviewing work, looking at the future, and doing R&D on specific features or technologies.

    However, I've taken on a short project for the client in the run-up to Easter. An old, abandoned library turned out to not be cutting the mustard for us, so I'm working on building a replacement. It's exactly the sort of project I enjoy: gnarly text and character processing, working to a well-defined (if complex) spec for the format, neatly stand-alone and greenfield, and with obvious measures of success.

    It's also been a chance to learn a few new things; I've enjoyed working with the bindata gem a lot, which has made processing binary files far more straightforward and has also given me a parser for the format at the same time as building a formatter for it – nicely two-way.

    By the end of the week, I was parsing the format correctly, and had started to break the back of encoding the format. I'd imagine there's another handful of days to go – first to finish up the first pass at encoding, and then a lot of fettling to match the sample files we're working to, and the nuanace of the spec.

    Over on Longcrag, a bunch of cables arrived from China, and so an hour with some cutters got another Foxfield product bagged up and ready to go to wholesale. Now I'm just waiting on a final set of front panels for one product – on Monday, I found what looks like a much better way to avoid the fabrication issues I found in Week 273 without having to change supplier. We'll know by next week. I also started working down my Trello board of what's left on the second phase of products, which has been stalled for far too long and needs bringing into land pronto. It turns out, a chunky Trello board helped enumerate what was left, and give me easy threads to latch onto and start moving into the DONE column. Good stuff.

  • Weeks 272-273

    19 March 2018

    Fortnightnotes, then, partly because of illness and travel.

    Selworthy has settled into a new routine. I'm spending a fraction over a day a week on this, typically, doing R&D into some tricky new areas, discussing features and development with the team, pinpointing specific pain points, and reviewing code. It looks like there might be some odd development spikes in the future, but otherwise, I'm happy with this.

    I continued working on a new Longcrag/Foxfield order: lots of kits sorted, a minor setback involving some fabrication in China, but not much bagging on my end left to go – the main thing remaining is the waiting involved in global supply chains.

    I continued hacking away a bit on the hardware design of 16n. That led into an avenue of learning about sectional analysis to confirm design:

    NewImage

    …and spitting out a lot of renders:

    NewImage

    My CAD chops have got quite strong now. Probably spent enough time on this, though!

    Beyond that, I had a day or two off to visit family, and lost a day or two to illness, which was annoying.

    With this Foxfield run wrapping up, and Selworthy dialled back, I'm going to have some availability coming up – not quite full time, but not far off, and well suited to project-shaped work. So I'm thinking about what I'm interested in.

    Things I appear to be interested in: software, mainly on the web; building useful tools for others to work with; small, genuinely cross-disciplinary teams; collaboration rather than implementation; still calling interaction design interaction design; connected objects; audio, music and sound; hardware/software hybrids.

    If any of that tickles your fancy, maybe drop me a line. I'll keep thinking if I have a better way of describing what I'm looking for.

  • Week 271

    5 March 2018

    I spent a chunk of week 271 in the workshop.

    The workshop is, of course, exactly the same as my desk (most of the time), but it's being put to a different use. In this case, I continued to work on a few physical projects: either Foxfield-related electronics, or other physical objects related to music that I'm using to expand and develop skills.

    Electronics work included beginning to put together the pieces for a new run of kits for Thonk – acquiring parts from the UK, Europe, and China, and getting a few new PCBs and panels fabbed. Most of this will have arrived by the end of week 272, I think.

    Some circuit boards for a personal project arrived, so I spent a few hours building a pair of those up:

    Cem boards

    These were my own variation on an original schematic by someone else, with a few new features added. Suitably interesting to layout, and I've definitely got a whole lot better at the schematic capture, layout and fabrication end of things. (They're the second iteration on this board – though the first largely worked first time, this polishes it neatly and gives me some to donate to friends).

    I also started work on what might be a prototype for a new Foxfield thing:

    Roundtrip

    which went together very fast and, largely, functioned correctly. A few part-values need tweaking before I can confirm if it's a GO or NO GO, though – but I can do this all on this board.

    Another project I've got on the go is called 16n; it's a musical controller made up of 16 faders, that emits data on a variety of channels – MIDI over USB and wire, I2C, and sixteen voltage outlets.

    16n

    My work has mainly been the layout of all the electronics; collaborators have been working on the case and hardware. Whilst the electrics are feeling good, there's still a little way to go with the hardware, so I've spent a period of time thinking about that this week. It's a project that largely fits around other work – done as part of an online community – but it's been enjoyable and I've learned a tone – easily the largest thing I've ever routed.

    Finally, I also spent some time on building a half-moon switch for my electric piano/organ. The electrics on this project are simple – a flick-switch connected to three cores of a cable. The goal here, however, was to learn how to design a physical object in CAD for 3D printing. That meant modelling the switch, modelling a case around it correctly, adding features to the case so it would snap together, and making sure it fitted the organ.

    Switch

    Switch render

    The SLS-fabbed version arrived from Shapeways this week, and I put it together:

    Switch fabbed

    It works well… aside from the spacing of the two thumbscrews being incorrect, owing to an oversight on my part. And so I quickly knocked out a bracket to fix that issue, and ordered that.

    Still: lots of progress on a few different projects, all functional, and all new muscles to exercise, even if all I'm putting it towards is being a somewhat mediocre engineer. But: new ways to think, that aren't software, and are entirely absorbing whilst I'm working on them: I'll take that, especially in this period of somewhat deliberate downtime.

    I also spent a day on Selworthy, helping the team grapple with some subtitling formats for broadcasters, and the minutiae involved there. And, somewhere in the middle of this, there was a slow day at home in the snow.

    A good week. Lots of hands-work.

  • Week 270

    26 February 2018

    Into the deliberate gap between projects, then.

    I spent a day with Selworthy, going over what my future engagement with the project would be – something between ‘more consultational’ and ‘limiting getting hands dirty to stuff I know best’. For now, a little more handover with a new staff member, and some consultation around specific features.

    Wednesday saw a debrief on the Hyper Island teaching from the course co-ordinator. Overall, it was really very positive indeed, so it seems like I'll be working with them again at the end of this year. Really glad that the students enjoyed – and took a lot away from – the teaching, and also that they were so positive about the my peers and colleagues I invited as guest speakers. Good stuff.

    I had a good chat with Rachel on Friday morning, largely about technology and our practices; it's nice to finally have the time to catch up with peers and see what's tickling their brain.

    I also had a chat with a few folks from Sensible Object about some technology planning, essentially acting as another brain to pick, and that was I hope useful for them.

    I spent some time on an engineering tip, prodding various electronics projects further along, and also sending a CAD project to be fabricated. I'd needed a particular object, and it seemed like a good time to brush up my Fusion 360 skills and get a snap-together case 3D printed. More on that in due course.

    Finally, I received a new order from Thonk for Foxfield products, so started taking inventory of what I had in the studio – both in terms of complete kits and parts – and started building up an order. That'll likely continue into Week 271, and then the ‘waiting for parts to arrive’ process will begin.

    Steve also inquired into the state of the (at least) three new products on my slate. The answer is that they're into that final 95% – namely, needing documenting and ‘productionising’, the name I give to ‘sorting out BOMs, documents, pricing spreadsheets, and making things produceable on demand’. This work is likely to kick off in Week 271.