Quick notes for the end of December
A few days' work at the end of the year, and some progress to report.
The Raspberry Pi appeared to be struggling a bit under the original Twinklr code. That's likely because the whole thing was a big HTML5 Canvas element, and that meant re-rendering all the pixels every frame inside Chromium.
So I decided to rewrite the whole code to use SVG instead. This makes sense for a few reasons:
the art style can easily be implemented entirely with basic SVG elements, so it felt like an easy fit.
the rendering code becomes far more efficient - rather than updating unchanged pixels, we just make objects appear and disappear from the DOM.
it becomes easier to implement animation thanks to using a library such as Snap to tween SVG attributes
by moving to defined DOM objects (rather than cluster of pixels), we also move to a more object-oriented representation of the domain model. This makes a few features we're interested in prototyping (such as multiple playheads) much easier to implement, and, in general, meets some of my goals for making the code easier to build upon in the future.
So nothing particularly fancy, but I'm at the point I want to be for January - the software's now entirely into implementing new things territory.
I also spent far too long staring into the abysses of electronics component sites, but think I've come to a decision on where to begin with rotary encoders, and prototyping some of the hardware. I also got shown how to use the laser-cutter, and by the end of the year, had got a bit of a workflow from going from Fusion360 CAD into laser-cut objects; there's going to be lots more learning to do there, but I'm making decent progress.
And with that: back in the new year.