Sometimes 78 solutions turn into 156 problems. That didn’t quite happen to me last month, but it sure felt like it.
I’ve been working on a product called Fitness Tracker for a long time. It started off as something I built to help me get in shape after I spent a week in a cardiac ward. That was seven years ago. About a year ago, I got a real sense of how much it had helped me progress over the years and decided to turn it into a product.
But life and consulting kept getting in the way so I kept putting it off and off and off. Until my 2024 Holiday break came. I traditionally build something over the holidays - it’s usually quite small but I was dealing with a shoulder injury and couldn’t really move. So, I started building Fitness Tracker with Electron.
Everything was great. I used React on the front end with Ant Design and…everything seemed great. But then when Fitness Tracker was over half finished, I had another idea and implemented a tool that created timelapse videos to show people their progress. I started using it right away and it actually helped with my shoulder - seeing progress motivated me. But I had been working the basic Fitness Tracker idea for 6.5 years then so didn’t really think the timelapse feature would be of much use to anyone. The real use was in the method - Fitness Tracker forces users to take the time to manually chart their progress and reflect on what they’re actually doing.
And then I started beta testing. My first real experience with beta testing was 17 years ago and I have loved it ever since because the results are scary, surprising and interesting all at once. My users liked the timelapse feature too so I started testing it really hard. That is when Electron started causing really big problems. That was a problem and I started investigating alternatives.
Scary - The timelapse feature was great up to a point, then it degraded into what looked like an app freeze. It technically was. Surprising - Timelapses are the biggest feature? Interesting - So many alternatives.
Meanwhile, I had been launching some websites including one for Fitness Tracker and realized ‘holy f—ing hell, I’m a terrible designer.’ If you check out fitnesstracker.ca, you’ll concur. You may even add another ‘f—ing in front of terrible as in, ‘holy f—ing hell, this guy is a f—ing terrible designer.’
But I started working on it and after a lot of learning, this website was the first test of my newfound basic design ability.
Remember how I started this by saying that sometimes 78 solutions become 156 problems? Well, learning a bit about design gave me a new lens to look at all the stuff I have released through the years and, well, I’m sure redesigning a lot of stuff right now. To keep improving, I find things on websites that I like and reimplement them until I have a pixel perfect match. Learning how way better designers solve the same things I have to solve has added a totally new set of tools to my toolkit.
It’s also made me pretty wicked at scss. And that gave me a tool to find another really big problem with Fitness Tracker.
The Timelapse feature collapsed under weight but I still had a lot of other things to work on while I figured out what to do about it. Luckily, it didn’t get really bad until people were working with a lot of photos so my beta testers barely noticed it.
They were too busy noticing other things and making really amazing suggestions that I had to take action on. While I was working on one, I noticed something. When I typed in a modal, my typing lagged. It wasn’t a huge lag, but there was a noticeable difference between when I pressed a key and when the letter appeared. So having spent a lot of time practicing implementing stuff by hand, I wrote a quick custom modal, fired up Siteimp and tested it out versus the Ant Design component I was using.
Objectively, it was not as good as Ant Design. It’s nowhere near. But it was just as objectively a better fit for Electron. As I ripped things out and replaced them with custom styling, everything got a lot faster.
And so faced with a total front end rewrite and the need to do something with Timelapse, I decided what the hell and decided to rewrite the whole thing. This time, I moved into Rust because I really enjoy Rust. It was the best option I found to fix my timelapse problem in the Electron world and I guess I kind of dived in. I selected Tauri instead of Electron so I have a React front end with Rust hidden away where I can always make things look nice.
(They look nice because of automatic code formatters but I have a 200x200 pixel UIKit icon in the hero of my Fitness Tracker blog. I need to feel a little bit good about something so I’m compensating for my shortcomings by saying ‘I’ can make things look nice when it’s really Visual Studio Code, prettier and extensions.)
So far, the rewrite is going very well. I know the problem much better this time and have been able to snatch every do over that I wanted with the Electron version. A custom front end is faster in every way to a point that I’m adding animations so that changes aren’t in flashes. Fitness Tracker will be back in beta testing in two weeks and is still scheduled for release in the third quarter of 2025.