Original Author: David Czarnecki
In my last post about our internal studio Hack-A-Thon, I concluded with:
At our upcoming Hack-A-Thon, I’m going to be working on rewriting the internals of our open source leaderboard code. More specifically, I want to change the API to be more readable and self documenting as well as to take advantage of transactions to get consistent snapshots of leaderboard data. After that I’m going to re-run the performance metrics to see how transactions affects the leaderboard data retrieval. Next up will be updating the public documentation. Finally I’ll release a new library of the leaderboard code. And then I’m going to do all of that for the PHP, Java, and Scala ports. That’s the plan at least.
What was it they say about the best laid schemes of mice and men?
AWRY WE GO
I started working with the “companion cube” was with me as well. I had a game plan based on my revision history to the leaderboard code to tackle the rewrite in the next language, Scala.
The scala-leaderboard API, documentation and performance metric updates obviously went quicker. I finished those updates around 4:30 AM. 12 hours into the Hack-A-Thon, being up for nearly 24 hours at this point and I was still going strong. Let’s randomly pick another language, PHP.
That’s right folks, I decided to tackle the updates to the I greeted the sunrise. And then I took a 40 minute nap. Around 7:30 AM, people were starting to filter into the studio and a bunch of us decided to go for breakfast. I just needed a recharge. After breakfast I worked at the PHP environment for another couple of hours, flipped my desk over (not really), and rallied for the final push of leaderboard updates in the final language, Java.
I got through the API updates to the Java leaderboard library. I still have yet to finish off the documentation and performance metric updates.
All-in-all, the Hack-A-Thon was a success.
During the Hack-A-Thon, another colleague did his own port of the leaderboard library and so we have a good start on the node leaderboard library.