How Rowsandall changed in 2019
Happy New Year to all Rowsandall.com users. I hope you continue to love the site and use it regularly. We’re continuously preparing some improvements, and soon we’ll launch a small survey to get your opinions.
Just in case you wondered what keeps me busy, here is a list of stuff the Rowsandall team did over the past 12 months. In chronological order:
- Numerous bug fixes – too many to count. Thanks to all users who reported bugs. Keep reporting them, and even though the backlog is growing, I will fix big bugs with priority and eventually will also get around to doing the smaller ones. Hopefully all fixes made the site run more smoothly. The biggest, continuous struggle, is to support international date formats. Think “2019-01-06” vs “1.6.2019” vs “1-12-2018” vs “1/8/2019” vs “20/7/15” etc etc.
- A couple of bigger code refactoring projects, that helped me keeping an overview over the code.
- Added lots of tests to make sure we’re not releasing buggy code. Test coverage is not 100% but it has improved tremendously. Also, the improved test coverage reduced the risk of moving from Python 2 to Python 3.
- Introduced the notion of “inactive” training plans, so you can prepare a new training plan while the old one is still active.
- Improvements in the Online Racing functionality. Eventually, this functionality wasn’t used much. We’re curious to know why.
- Introduced a Trial period for the Self-Coach plan
- Added additional layers of privacy protection so the competition cannot guess your workout
- Moved to file downloads in the browers (previously, “exported” files were sent to the user by email).
- I bought a new notebook for the main development work. True, not real development work, but it is worth mentioning. Also, the additional horse power greatly sped up running tests, making it easier for me to increase the test coverage for the code, and thus hopefully delivering better releases to the users.
- Implemented a refund policy (to comply with the payment processor’s requirements, and to make it more transparent for you in case you want your money back). I also enabled Plan downgrades. There were also a few updates in the Terms & Conditions.
- Enabled user comments on planned Sessions and Races. This helps coaches and coachees to discuss the upcoming sessions and keep those discussions with the session.
- A big overhoal of how Teams are used. We created Training Groups. Now, you don’t have to have a Coach Plan to create training groups. Also, we introduced a Free Coach Plan.
- Moved the entire site from Python 2.7 to Python 3.4 (and then to 3.6). As January 1st, 2020 was the end-of-life for Python 2, our entire code base had to be moved to Python 3, which is not a trivial task. We also upgraded as many as possible external library dependencies, and had to retire some and find alternatives. A big one was some huge API changes in Bokeh and Holoviews, charting libraries that we use. Also Django itself proved to be a labor intensive upgrade.
- We made big changes in how the Analysis page works. We unified the user interface and made everything work in a similar way.
- We built a brand new landing page to make the site look more awesome.
- Upgraded the payment functionality to support 3D Secure 2.0 as card providers started supporting it in April and had the possibility to reject non-compliant payments after September.
- Improved possibilities for coaches to communicate with their team members.
- Introduced “Alerts” and “Conditions”.
- Added an Actual vs Plan chart for Self-Coach and Coach users.
- Moved the stroke data (a big data store with each individual stroke that each of you have rowed) to a new storage format (Apache Parquet) which led to great speed improvements for loading pages.
- Added “Boat Speed” as a metric, additional to the already existing “Pace”
- Introduced the first version of Video Analysis!
- Moved the OTW Power Estimation functionality (which adds missing power data to your on-the-water rows) from Python to GoLang language. Achieved a speed improvement on this of 10-20x.
Enjoy your rowing!