THX Chronicles: The TartanHacks Software Suite, Part I (2021)

Gram Liu
ScottyLabs
Published in
5 min readJul 6, 2023

Throwback

TartanHacks is the largest hackathon at Carnegie Mellon. Every year, we attract participants from all around the country and recently, even around the world.

The TartanHacks software suite traces its roots back to TartanHacks 2020. Back then, it was just a registration system, forked from HackMIT’s Quill. Our team, mostly freshmen at the time, spent a lot of effort learning how to work with the tech stack to get it deployed. It was mostly successful. However, we realized after that iteration of TartanHacks that there was still so much room for improvement.

Arrival check-ins were a major bottleneck as individual check-ins required searching up participants on a Google sheet. Meal logistics were confusing as people often lost their meal stubs. Recruiters also mentioned that it was difficult to keep track of interesting conversations they had with hackers, resorting to noting down names and emails on their phone.

The most chaotic part was judging. We used Google forms, due to the lack of any better tool, and let our judges rate each project on a numeric scale. This was a reasonable choice at the time, but it had much to be desired in terms of fairness. Some judges are naturally harsher than others and since we had no basis for a normalization scheme, the rankings resulted in a heated and lengthy discussion in HQ, arguing over which projects would win which prize.

TartanHacks 2020 Judging, colorized

After that year, we realized that we needed to do better. Being at one of the best tech schools in the world, we knew that we could do better. There was so much room for optimization. We resolved to revolutionize the hacker experience.

(incomplete) TartanHacks Tech Team!

TartanHacks Dashboard v1

The summer of 2020, I worked with two project leads, Max and Olivia. They came up with this idea to build a mobile app for hackers to use during the hackathon. The idea was that instead of distributing wrist bands or meal stubs, we could instead create a unique QR code for each participant. With the app, we could simply scan them in for everything from check-in to meals to workshops. This app would also become their one-stop shop for everything TartanHacks-related like Discord links, Zoom links, etc.

Max had experience with Flutter and building with a cross-platform would be faster than maintaining two separate Android/iOS codebases, so we decided to stick with that for the TartanHacks Dashboard.

Development was bumpy. People hadn’t even heard of Flutter before, let alone Dart, the language used to code in it. Learning a new framework and language proved to be daunting and took pretty much the entire Fall. The chances that we’d be able to roll this out for TartanHacks in the Spring looked bleak but thankfully, people rose to the occasion.

Explaining what a backend is

Come Spring 2021, the Dashboard team went all hands on deck to roll out an MVP in the 2 weeks between the start of the semester and TartanHacks. They did amazing work and managed to pull it off.

During this time, I had my hands full rolling out some new things as well. Since our website team was AWOL, I worked with one other person to get our new promotional website up in a few days. The registration team was thankfully pretty self-sufficient and took care of retheming the system on their own. At the time, we were still running a fork of Quill. One issue still remained unaddressed though: judging.

Gavel

With COVID and fully remote classes, TartanHacks was set to be completely virtual that year. It would be difficult and unfair to judge projects if we stuck to using Google Forms and whiteboards to try and reconcile judging disputes. At some point, I stumbled upon Gavel. This was the solution we were looking for: a more fair pairwise comparison judging platform. One problem though: the prizing system used by Gavel was drastically different from our own. Gavel was designed to judge all projects towards a single grand prize. TartanHacks, on the other hand, had multiple prizes that projects could compete for, each possessing different criteria for judging. After combing through and deploying something like 10 different forks, I luckily came across one that was modded to address our exact use case. With some work, I was able to get it up and running on a Heroku deployment in time for the event.

Integration

It’s now the week of TartanHacks 2021. All of our systems are up and running in isolation. As a sophomore lacking system design experience, it hadn’t occurred to me that integration of independent subsystems might actually be an issue. A few days before D-day, Anuda mentioned that the Dashboard actually maintained a separate database of users and so I needed to write migration scripts to port over our registered hackers from the Quill database. This wasn’t too bad, but this was just the beginning of the many adhoc scripts I would write that weekend to make up for our lack of any actual integrations.

As we checked in more users, we also continued to move people off the waitlist and so I had to rerun the migration scripts every time a user complained that they couldn’t login to the app.

Judging

Fast forward to the judging day, we had an hour of buffer time between the project submission deadline and judging itself. We also had to assign teams to rooms on Hopin, the online expo tool we used that year. I ran a script to assign submitted teams to 1 of n rooms, where n was the total number of submitted teams. Then, I wrote yet another migration script to export the submitted projects from MongoDB into a CSV file that could be imported by Gavel. After a lot of time dealing with commas and other special characters in the unsanitized data, I managed to get the data into Gavel and release the room assignments to the participants in time for judging to begin.

Judging went pretty smoothly. By the end of judging, we had a nice, ordered leaderboard of the top teams for prize.

Reflections

This year set into motion a movement within ScottyLabs to develop our own full-featured hackathon software system. While lacking in many aspects, ambition was not one of them. We had a dream for the future and we were not going to give up on it.

--

--