Zwiftalizer 2.0 Update 2023-10-24 Release Notes
Maintenance Update, Cost Optimization, Funding Discontinued
Just dropping a quick note to fill you in on what’s been happening behind the scenes with zwiftalizer.com. As the sole maintainer of the site, I’ve been busy making sure everything runs smoothly, stays cost-effective, and, most importantly, remains secure as we head into winter in the Northern hemisphere. Ongoing maintenance is crucial for ensuring a seamless and secure user experience, even when no new features are added, as it involves optimizing performance and costs, addressing potential security vulnerabilities, and keeping the site up-to-date with evolving technologies. Here’s a summary of recent updates.
1. Security First
I’ve been keeping a watchful eye on the ever-changing landscape of browser security and privacy. Regular checks and updates are happening to ensure the site is fortified against any potential hiccups. Safeguarding your data and your peace of mind is my top priority.
2. Streamlining Costs
I’ve been fine-tuning my hosting set-up to ensure that I’m not overpaying for resources that I don’t need. It’s all about keeping the ship afloat without incurring needless costs. Zwift’s c-suite exec discontinued their Patreon support in 2023, therefore optimizing costs is now critical for the site’s survival. I’d like to take this opportunity to thank everyone who has donated through PayPal and bought me a coffee. Those donations make a big difference. Your continued support means everything to me and keeps the site active for thousands of new Zwifties every week. (I’m not sure that’s what we’re called now, but it sounds contemporary.)
Here’s how I saved costs on the back-end, for the folks interested in the AWS technical details:
- Lambda execution times are reduced by moving to AWS SDK v3 and reducing code bundle size. This resulted in a lot of breaking changes due to the v3 SDK for Dynamodb, S3 and SQS not being backward compatible with v2.
- Lambda execution costs are reduced by moving to ARM 64 architecture and AWS Graviton processors.
- CloudWatch costs reduced by reducing custom metrics count and shortening log retention.
3. Staying Up-to-Date
Dependencies, libraries, you name it—I’ve been on a mission to keep everything up-to-date. The rapid evolution of frameworks like React (and death of create-react-app) necessitates staying current with dependencies. For even the smallest webpage changes, keeping up is crucial in this dynamic landscape.
For the techies:
- Updated to Node 20.6.1 targeting Node 18 on ARM64 (AWS Graviton) Lambda execution environment.
- Included Dependabot in Github repo.
- Switched to AWS Code Artifact for publishing private npm packages.
- Using Snyk to scan packages for common vulnerabilities and exposures.
- Renewed domain name registration and certificates.
- Lumigo added for observability of AWS Serverless environment.
4. Bug fixes and small front-end updates
Zwift’s RAM reporting in PC log files is currently broken (working correctly on Mac OS, iOS and Android). It writes entries like 8136GB when the correct value is 8GB (or 8136MB). I debated handling this in my parser code because it is instant tech debt, which means that I would need to add branching logic, which would need extensive testing and potentially introduce new errors when the input data gets fixed or changes again. I went ahead and did it anyway. This sort of thing happens often. I dislike having to do this because the code ends up resembling a tangled slinky spring.
CtS and StC Descriptions
Client to Server and Server to Client UDP data descriptions were the wrong way round. (for the three people who actually read that stuff).
Zwift log files do not include timezone. This is not a big issue for end users of Zwitalizer.com because the times in the charts line up with the time you did the activity. But being the data nerd that I am, I wanted all times in my database to be standardized to universal time so that I can make inferences about what times of day are the most crowded, and that sort of thing. I do this by getting the end-users timezone from the browser when they upload the log file and adjust the times accordingly. Tucked away under the user settings is a drop down list for the user to explicitly set their timezone. This broke in one of the earlier React updates. It is now fixed.
I contacted prominent members of the Zwift community who publish blogs, YouTube channels, Podcasts, etc and asked them for permission to quote the nice things they have said about Zwiftalizer.com over the years. Everyone was really encouraging. I added these testimonials to the landing page because they provide legitimacy and reassurance to anyone who is unsure about providing their email address to sign up for the site. It also benefits my SEO, which increases traffic. I also included a sentence stating that you will not receive emails other than a confirmation code, as well as the obligatory FTC disclosure concerning affiliate links.
No more Twitter
I removed my Twitter links because I have basically left that platform. My email newsletter is how I will let people know what’s going on with the side development. Expect about one email every six months.
5. Thank you!
Your support means the world to me, and I want to ensure your experience on my website is top-notch. If you ever have questions or just want to chat about the website, I’m always here.
Thanks for being a part of this journey!