Posts tagged as weeknotes (page 5)
Week 277
17 April 2018Three 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 2018My 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 2018I’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 2018Fortnightnotes, 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:
…and spitting out a lot of renders:
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 2018I 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:
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:
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.
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.
The SLS-fabbed version arrived from Shapeways this week, and I put it together:
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 2018Into 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.
Weeks 268-269
19 February 2018Week 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 2018Back 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.
Januarynotes (Weeks 261-266)
1 February 2018I 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 external 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 2017A 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.
Week 259
11 December 2017Really busy this week, although not a lot to say for it!
A day on Selworthy to wrap a first spike of an API integration, although my colleagues have reminded me it really does need tests writing, so perhaps time to sit down and really learn vcr.
Monday and Wednesday were spent putting finishing touches to materials for Lowick – the Digital Technologies strand of Hyper Island’s Digital Management MA.
Thursday, Friday, and Saturday, I acted as industry leader on an intensive workshop for the part-time MA students. Very intense, but very satisfying – lots of really strong discussions and exciting to see the journeys they were going on. Even in the brief time we had you could see seeds of ideas slowly unfurling. They were a lovely group to work with. It was also great to be able to get Henry, Wesley, and (some of) Strange Telemetry in to talk to them, set briefs, and run workshops; always proud to share the work of talented colleagues with others.
By Saturday night I was very much done in. Phew. A couple more weeks and then this year is done, and I’m looking forward to that Christmas break.
Weeks 257-258
4 December 2017Oops. 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!
Weeks 255-256
20 November 2017Two weeks with some time off in the middle.
Selworthy is settling into a bit of a rhythm now. Reviewed some pull requests, discussed architecture, fettled some infrastructure, and found time to review how the renderer works and tweak the way we’re using FFmpeg on it. Up and down the stack like a yo-yo, but we’re seeing some sizeable features being released much more quickly.
Some prototypes arrived for new Longcrag/Foxfield products from Aisler. I’d been seeing how Aisler compared to OSHpark, who for me, are still the gold-standard for prototyping. (Mainly because: their software tooling is clear and excellent, and their turnaround times, despite posting from the US, are about the fastest I’ve found). Aisler have pretty good tooling and previews (despite a confusing checkout process) and the turnaround time was comparable to OSH. I’d hoped being in Europe it’d be a tad faster, but it worked out about the same. Still, very high quality boards.
I built up the prototypes and they worked well – in that they worked, were clear to build, and had almost no silking errors on my part. So that means I’ve got three new products to get out early next year – there’s still documentation to write, BOMs to get made up, and see if the wholesaler will take them. That also means that once some admin around them is done, I can return to the Arm prototype I was working on a few weeks ago.
On Lowick, I started conversations about the content of the course and what I’d need to get done. I also started phoning and emailing colleagues from across – and outside – the technology industry to see if I can get them involved. That seems to be going alright.
In the middle of the fortnight, I went out to Berlin for Ableton Loop. I really enjoyed Loop last year; I equivocated a little about going this year, but then remembered how it left me feeling, and that made it a no-brainer. A good few days: met some new folks – perhaps even made some new friends; went to some great sessions (especially the electro-acoustics and haptics sessions); saw some great artists perform; played a bit of music myself; and put my brain into a different context. It’s an engaging, thought-provovking event that’s well-run, and so very different to many of the contexts I’m usually in. It was thought-provoking as a designer and instrument-maker; challenging as a musician; but it was also a bit of fresh-air, warm, welcoming, open; good for my head. I can recommend going to event and conference that might be more tangential to your practice than you’re used to: with any luck, it’ll probably provoke far more new ideas than what might pass as rearranging the furniture.
Week 254
6 November 2017This week:
- I spent a couple of days on Selworthy. We’re really getting into the new cardwall/standup routine, and I think it’s helping visualise and communicate velocity well. Codewise, I was mainly fixing some Javascript issues throughout the GUI, and beginning to look into some changes to one of our subsidiary services – I should wrap that up in week 255.
- I also spent a day for an existing client helping them move their site to a new webserver. They wanted to enable SSL, but it turned out it’d be easier to provision a new server than update a slightly old version of Ubuntu. So I used a bunch of Ansible provisioning tools I had on hand to build out a PHP/Apache box, talking to Amazon RDS. I probably spent longer wrangling EC2’s security groups and VPCs than I did writing provisioning code. Once moved over, there was a moderate amount of fettling to do to bring their CMS up, but it all got accomplished in the allotted time, and setting up Let’s Encrypt was a piece of cake on the new box. We moved their DNS over to Route53 to wrap up the migration work.
- I spent a little time on Wednesday tidying up some Foxfield work – sorting out BOMs for future products and finding suppliers of specific Amphenol Jacks.
- And on Thursday, I met up with Jason and Sukhvir from Curious Chip, who showed me Pip, and we had a really interesting chat about what they’re up to. Nice to talk to other inventors and designers wrangling code and hardware into product.
Week 253
1 November 2017Bullety 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 2017Lots 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:
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.
Week 251
16 October 2017Three main pieces of work this week.
Over on Cleeve, I continued write-ups of projects. They’re nearly done – although the largest ones are still left – and I need to dig out some imagery and artwork at some point.
I spent a while on the Silicon Labs board, hacking up this Longcrag project. A good chat with a friend convinced me it might be worth prodding it for longer. If it’s a goer, it’d be interesting to see if I could manufacture a physical product properly – a short run, for retail sale. That’d be an interesting way to learn a lot of things, even with a relatively niche product.
I’ve been battling C – learning more about
struct
s, getting better at writing headers, and tearing my hair out about the quality of documentation. The Silicon Labs stuff is pretty well documented, too! It’s just not quite what I’m used to, and it’s been a long while since I’ve been stuck for hours on what feel like the most basic of problems. At the end of the week, I had most of the functionality done, but everything decided to stop working once I moved the code into therelease
profile. So there’s a bit more to be done there.Selworthy saw a huge release. I’d been working on a parallel track since late summer, overhauling some of the underlying concepts and conceits – real foundational stuff that would have a knock-on to all the higher-level systems. Some of the change was, for a while, a bit experimental, but once the experiment looked like it’d come to fruition, it was time to cloose the loop. This week, I merged 291 commits into master. The merge was relatively seamless, thanks to regular rebasing, some code review with colleagues, and freezing our master branch shortly before the deployment.
The dev team deployed it early on Thursday morning. It was pretty seamless for a deploy involving small team distributed around the world, a moderate amount of DNS wrangling, and a long-ish data migration. We’d rehearsed the process on a set of rehearsal servers, and that helped iron out the kinks of the data changes. By 9am Thursday, Selworthy was running in its new world. We had almost no glitches post-launch, and users were already commenting enthusiastically on new features that day. A big job, well done, and it frees us up to do less infrastructural work in future.
Some good impromptu chats in the week, too, including a nice coffee with Johanna who was working down the hallway. We compared notes notes on design process and practice – good stuff, and great to step away from the C for a while.
Week 250
9 October 2017Weeknotes are easier when you only have to write them for a single week. Let’s get back on that.
Selworthy is gearing up for a fairly major deployment, incorporating the work I’ve put in over the summer that will form our new foundations. So I’ve been shepherding small pull requests around that, making sure we have a clean deployment branch, and planning out the deployment process and rehearsals. The little team is now motoring – someone else has taken the front-end by the scruff of the neck and is dragging it into the future, and our pull requests feel like they’re getting real reviews. It’s good.
I continued some prodding on Longcrag/Foxfield work. I’m really trying to finalise the next line of products. Three of them are so nearly there – one is done, one is on the edge of done but might get a last minute redesign… and one I’m umming and ahhing about. It’s the most complex kit I’ve got, and it’s causing me a few last minute issues. All the fun of hardware.
I also continued the ‘bring-up’ of the Silicon Labs devkit I’m working on. That’s going moderately well, now – I’m wrapping my head around the board a little more and have most features working, although, as ever, debouncing buttons continues to be a fun adventure. One last major feature to get into it, and then I’m going to have a think about what I’ve done there.
I did a small amount of work for the Good Night Lamp team – fettling the management tool a little with some feature requests to improve quality of life.
And I kicked off a new piece of work for myself called Cleeve. Cleeve is unexciting but important. You might note that my Projects page is about 2.5 years out of date. That is not deliberate. But it’s time to update it – so I’m working on writing everything up, researching the stuff I can’t remember, and getting it all nicely up-to-date. You’ll know when it’s all live, but in the meantime, that’s a thing to be working on.
Weeks 244-245
4 September 2017A good couple of weeks.
I’m working on a second production run of Foxfield products. I’ve got all the PCBs and panels already – all that remained to do was order up the components for the kits. These all arrived and in week 245, I started packaging up the second run. I’m halfway through after a day or so’s work.
I’ve spent quite a bit of time working on the course material for the circuit board design course I’m running in October. That’s been going well, too – working out what we’ll be doing, testing out my teaching material, making sure we have a good combination of practical exercises and some short talks.
I also confirmed details of a workshop later in the month in Newcastle for film-makers (and primarily artist-filmmakers):
Aimed at artists and filmmakers this session will explore two core topics: using technology as a means of developing artistic and creative practice; and using the internet to develop audiences for your work in the ways most appropriate for it.
Always pleasant to work with Northern Film – I’ve done a few courses with them before – so I’ll be working on bashing this into shape shortly.
I ordered up some Longcrag prototypes to get made whilst I’m away on holiday for the next two weeks – hopefully they’ll be the production prototypes for a few new products to get made before the end of the year.
I’ve started some explorations into Silicon Labs microcontroller hardware – trying to get away from writing Arduino-based C and into something that might be more suitable for production products. The world of firmware programming is a bit hairy, but this is easing me in moderately slowly, and I hope to spend a little more time with it in the coming months.
And finally, over on Selworthy, I had a meaty, big breakthrough: the large feature I’ve been hacking on all summer suddenly came into focus and, frankly, works. It changes some of the core concepts within the system and the net result it was aiming for had really paid off. Really pleased – it’s been a brain-twisting few months, and I now know more about frame-rates than I ever imagined possible.
And with that: I’m off on a proper vacation. Back Week 247; see you then.
Weeks 241-243
20 August 2017In no particular order:
Selworthy is in at the bottom of the ‘writing a difficult feature’ hole. Lots of chipping away, testing, QAing, re-testing, and re-approaching the problem. By Week 243 I’d had a bit of a breakthrough – some things were pretty much there, and other problems were, at least, understood. I also spent some time – possibly more than I’d like, given my enthusiasm for operations – wrangling getting the whole stack spun up on Centos – we tend to use Ubuntu, but there were reasons. Seeing the whole stack – from Javascript polish right down to compiling forks of ffmpeg – gives you a bit of vertigo.
Thonk have ordered a second run of products from Foxfield, which is great news. I took an inventory of what parts I had, ordered some key bits of the BOM from China, some more from a few British suppliers, and started putting together what was needed for a Mouser order. I’m hoping to package this lot up by the beginning of September. I also wrote the first installment of Foxnotes – similar to these weeknotes, but more infrequent.
I’m running a course on circuit board design in October, over four evenings. I did some promotion of this, and have spent a decent chunk of time beginning to write the course itself – trying to get a feel for what it contains, what the balance between talking and doing is, how to structure learning across the four weeks, and triple-checking the demo circuit I’ll be going over. I also ordered various small prototypes to help me out with demonstrations.
The course is going well, I think – I’m beginning to see the shape of it, and to see places we we can extemporise or build on things we’ve learned. But I also need to remember how much space to leave for unknown unknowns – discussion, and questioning, and inevitable inertia of using software.
A good few weeks – busy, and outside Selworthy, running around a little. But when I look back at it here, there’s definitely forward momentum.