Happy 2025, everyone! Feels like a good time to peel back the curtain and give you an update on what’s currently in the works at Strum Machine HQ.
TL;DR: Doing important work on Strum Machine infrastructure, meaning no new features for awhile (at least a couple months).
My last update in December was announcing the big Band Presets update (with the new mandolin chop and walking bass options among other things), which was very well received… thanks for all your feedback!
Going into 2025, I decided it was time to tackle some long-overdue deferred maintenance. I’ve known this was going to be needed for some years now, because the “platform” that Strum Machine’s code is built on top of (the Meteor JS framework) has been getting more and more “behind the times”. It was already having various negative implications on my productivity as a programmer, and it was soon to potentially start having potential security implications, so I knew I had to do something about it.
Thankfully, they just released a major update to Meteor that brings everything up to date, which means I can start migrating my code over to the new platform. This will mean a significant modernization of Strum Machine’s codebase. Think of it as giving the engine a complete overhaul while the car still needs to run smoothly.
Web-dev nerd sidebar: Meteor 2 was stuck on Node 14 (due to requiring the deprecated “Fibers” feature for async code) whereas Meteor 3 supports regular Node LTS. I’m also taking the opportunity to switch my bundler to Vite, which has been awesome—it’s a significant improvement in tooling, and I could never go back now. Remaining non-type-safe modules are being rewritten in TypeScript as well, which has already helped me catch some subtle potential bugs.
I’m only a few weeks in, but progress has been good. Maybe 20% of my time has been banging my head against the wall with inscrutable error messages, but the rest of the time has been pretty smooth sailing. It’s great to be able to revisit aging parts of the codebase and make them better.
I’m already seeing some immediate benefits:
- Performance improvements; maybe 15% faster load times so far, though I bet that will get even bettter
- Much faster to iterate on user interface coding due to faster build times on my computer
But this work is really about the long term. When I started Strum Machine back in 2016, the state of the JavaScript “ecosystem” was rather immature. People were still figuring out the best way to make apps like Strum Machine. Things have come a long way since then, and development tooling has stabilized a lot, which means that Strum Machine will be much easier to maintain and work on in the years to come, and hopefully I’ll never need to do a big migration like this again (famous last words).
I’m taking my time to get everything just right, which means it might be a few months before you see major new features. Hard to say, exactly… I’ve learned not to guess how long something like this will take, because any estimation I make will surely be wrong, and I want to give it as long as it needs to get the job done right. But once this infrastructure upgrade is complete, we’ll be in a great position to roll out new features more quickly and efficiently.
Speaking of which, the first major feature you can expect is the ability to handle multiple time signatures within a single song. I think this may have (oddly enough) become our number-one feature request. Folks, we hear you!
OK, I’m gonna get back at it! Thanks for reading if you got this far, and hope you enjoyed this update.
Cheers,
Luke
P.S. - While I’m busy rewriting server code, Tyler has been iterating on some new interfaces for stuff we plan to add later this year, like a new settings interface. More on that in the future, but he’s got some good stuff cooking!