Adrian here. Lots to catch up on as it seems it's been seven(!) weeks since we last reported on things. Some of that was the festive break, but still. Happy New Year and all that.
I'm in a mixed mood writing these weeknotes to be honest. But, working in the open means sharing the downs as well as the ups. And these aren't big downs, just the regular bumps of business life. Onwards.
Chris has been splitting his time between some early exploratory development work that we can't talk about yet, and getting the updated version of the My Bike's Got LED boards finished.
He's had the big chunks of functionality laid out for a while, and has been (re-)learning that the last 20% takes 80% of the time. However, this week he got it over the line and sent out for quotes for production.
I've been getting to grips with testing frameworks, and working out how to use Cucumber with embedded systems and microcontrollers. I've dabbled with it in the past on small web projects, but the approach has never quite stuck. I think part of that is because the projects have been smaller, with me as the sole developer; when I can (mostly) keep how it all works in my head at once, it hasn't seemed worth the extra up-front work to build the test scaffolding.
Now that I'm working more in teams again, that calculus has shifted. While looking for something suitable for testing in the embedded world I came across this project to bridge between Cucumber and microcontrollers over a serial connection. We've been using it on a couple of projects and I'm liking it so far. The more human-readable test cases of behaviour-driven development (BDD) are useful; and the ability to mix native Ruby-scripted steps with others on the target hardware lets us set up parts of the test on a companion PC to check that, for example, transmitted data has made it out to the "cloud".
The initial codebase was targetting the nrf51 platform, but it was fairly simple to port to nrf91 and ESP32—they're the platforms our current projects are using. We've also been extending it to add more features and other improvemens. All of which is available in our fork on Github.
I've really enjoyed getting my head down and cranking out some code for that. I've also started to appreciate laying out the edge cases and general functionality of code I'm developing in the test cases before the code is written. Hoping that's a habit that starts to take root.
Outside of the "proper" work, the other work has been getting me down this week. One of our clients is dragging their heels a bit paying invoices. I expect it will get sorted, but the background concern and chasing adds some drag to the work of the company. Including to the work that this client wants to be finished.
On top of that, we had an initial quote back for the My Bike's Got LED production run and it's a fair bit more than I'd expected. It's probably just a mis-match in comms between us and the supplier—usually they're really good—and it should be something we can work out. But I could have done without the extra admin and working-through-the-issue that results. What seemed like a milestone passed mid-week, turned out to not quite be the case.
The joys of a small indie hardware manufacturer, eh?