Close to the end of September 2021, I had attended (virtually) my first ever hackathon! This was a 40 hour hybrid event held over the weekend and happens to be one of the largest hackathons in Europe. In total, there were 1620 people attending (420 people in person and 1200 virtually).
I’m going to take you through my entire experience of the event (both before and during), then leave you with some tips and advice at the end. This is the type of stuff that should be known, so you are best prepared for this HackZurich, hackathon event.
My journey to HackZurich all started when I opened up my inbox one day and received this email message.
I was ecstatic, super happy and excited! I was going to be attending my first hackathon event and it was about 2 months away.
I knew that I had plenty of time to figure out what sort of project idea to “pitch” and build over the weekend.
About 2 weeks prior to the HackZurich event
I hadn’t really done anything with regards to preparation work up to this point, but I had been continually brainstorming project ideas in my head. I had about 2-3 ideas that quite interested me and I wanted to try to form a team around.
Also around this point, was when the official HackZurich 2021 Slack group was created and all participants were invited to join so that they could already start forming teams for the hackathon.
I had of course joined the Slack group, made an introductory post and essentially did nothing afterwards.
I was still deciding which project idea to go forward with and was a bit busy with work and other personal projects.
However, I started getting private messages from people about potentially working together on a project. Many of those were not a good fit due to the skills mismatch, lack of interest in my project idea, or just different interests with regards to the workshop challenges.
Eventually though, I had received a message from one of my future teammates. We had started chatting and initially it looked like it wasn’t going to be a good fit. They were interested in other workshop challenges and they didn’t really like my project idea. After messaging with them for a few days, they had changed their mind on my idea and thought it actually had potential. Since we were already chatting and had a good connection, we decided to at least work together.
It turns out that was a great decision! As they were also talking to numerous other people and we had the option of all joining together. So within a few more days we unofficially had a team of 5 people.
We all decided to have a video chat first and after getting to know each other a bit, we all agreed to commit to working together on a project as a team. However, instead of working on one of our own project ideas, we would instead tackle one of the workshop challenges. So this meant having to brainstorm some new project ideas around the workshop challenges.
In the end, we were a group of designers, frontend and backend developers, data scientists and machine learning/artificial intelligence engineers. We pretty much had all areas covered and needed to find a project idea that incorporated all these disciplines.
I also have to admit that I lucked out with finding a team quite early on and am very glad that I did.
About 1 week prior to the HackZurich event
Now that I was on a team, things were starting to get more serious and real. We just needed a project idea to work on and then we would all be set for the event.
Over the next week, our team had met several times to get us ready for the start of the hackathon.
Our first meeting was a discussion about the workshop challenges, which ones we wanted to work on and having a mini project idea brainstorming session.
Afterwards, we all agreed that we would gather further ideas and share them in our next meeting in a couple days.
For our second meeting, we went through all of our potential project ideas. We discussed the pros/cons of each one and how realistic they were in terms of completing them over the weekend. Finally, we voted on all of our ideas and after a short discussion, we had a clear winner.
We were going to work on a project that would automate the generation of meeting minute notes during work meetings. In other words, our idea was to automatically create summary notes of meetings.
It was a pretty challenging and ambitious topic/problem, but I was personally feeling really good about the project idea. As it was solving a real pain/need.
Our last meeting before the start of the hackathon was to come up with a project scope and a plan on how we were going to go about building the project. We created an online document where we came up with the most important features to build, which thus gave us a project scope.
Further, we also discussed the technology architecture, so we knew what we would be building and how it would all be glued together. That way we could just begin working when the hackathon started.
Final preparation - the day of the hackathon
I had decided to take this entire day off from work, as the event started on a Friday at 5pm.
I wanted to best prepare myself and avoid “wasting time” on other things. This meant cooking dinners/food for the entire weekend. Also having dinner and showering pre-event, so I could go right to bed when I was too tired to code anymore.
I also spent this time preparing my laptop environment for coding. I also refreshed my knowledge on all the basics and even looked into some other coding concepts that I seldomly use at work, but I would most likely be using on this project.
I was also trying to further fine tune the project scope and figure out what exactly my team and I would be working on once the hacking officially kicked off. We wanted to avoid wasting time discussing or deciding things, so we could just take action as quickly as possible.
HackZurich 2021 officially started
Finally… 5pm rolled around and the event was officially underway (although with some technical difficulties).
We had a nice introductory presentation to the HackZurich event, where they covered things about the schedule for the weekend and included some pre-event hype videos. Afterwards, all the sponsors who had workshop challenges presented them and openly invited all participants to take on their respective challenges.
The next several hours were a bit limited if you were a virtual participant. We were meant to go to these challenge workshops to ask questions about the challenges we were interested in, but since we already had our project idea set… there wasn’t a point of going to these workshops.
I ended up relaxing and taking a nap to try to get as much rest as possible.
All onsite participants also had dinner there, so there was even more downtime and just waiting for things to start.
Then for those who didn’t have a team, there was a team forming session and we were only allowed to start at 11pm.
This was a lot of wasted time for those who had teams already and were participating virtually. Sadly there were no networking events you could virtually attend to kill some time. This would have made the waiting much more beneficial and enjoyable.
Day 1: Coding officially starts - first few hours
At last we were officially allowed to start working, coding and hacking at 11pm. There was a lot of build up to this point and some of my initial excitement/energy level had dipped because of the slow start to the event. I’m sure the experience would be much different if I was participating in person.
The first thing my team did was we got together in an online meeting. Unfortunately, 2 of our members were participating on site and the internet connection was quite poor over there. Likely because everyone on site was using the internet at the same time and were downloading many different packages.
Fortunately our 2 on site members had data on their mobile phones, so we were able to communicate without lagging/freezing video.
After some hiccups, we started discussing finer details of the project and how we were going to proceed. We found some existing APIs that we could use to get a transcription of a live, or recorded, meeting. We broke down the tasks that we needed to work on and agreed to split the team into frontend and backend, because otherwise we weren’t able to help each other. We focused on working in the areas that we were comfortable in.
Sometime after midnight we got going and started working on our tasks. I was in charge of working on the frontend and needed to set up a website where a user could upload a video so we could process it on the backend and populate the information in our mini web application.
I was using React and Tailwind CSS to help me build our mini web application. In a few hours, I was able to set up a React repository and get a rough layout/template of the upload page finished.
We all ended up working until 1-3am and headed off to get some sleep as the next day was going to be a full day.
Day 2 of coding at HackZurich - a very long day
We started relatively early. I think we had a team meeting around 8 or 8:30am to discuss our progress and how things were going so far with everyone.
We discussed some issues with the available APIs and not really finding anything that we could use from what the sponsors provided to us. I believe we ended up using some open source API to achieve the transcribing part, but we were a bit too ambitious with what we thought we could do.
Training a machine learning model to create a summary of notes was looking more far fetched in the short amount of time we had. We instead decided to focus on creating a full transcript and doing a sentiment analysis, which would continually detect the mood of the meeting conversation.
After our alignment meeting, we all got back to working on our tasks.
At some point, one of our team members found an existing service that solved pretty much the same problem we were trying to solve. We had a bit of a setback as we scoped out their website, looked at their solution and were wondering if we should abandon the project idea and switch to another one.
In the end, we decided to keep going, as we had already invested quite a bit of time into building this project idea and time was very limited. So it didn’t make sense to start over. We would just keep going, get some inspiration from them and build our own solution to this.
I ended up taking a couple of breaks, and a nap, throughout the day to not be coding/working 100% of the time. I remember that sometime in the afternoon I had felt that I was starting to crash due to a lack of sleep.
Usually at these times are when you aren’t very productive and make stupid coding mistakes.
Plus I felt the frontend application was advancing quite well and I was waiting for the backend stuff to come together.
We had some more alignment meetings throughout the day and we had discussed problems of getting the sentiment analysis and transcription stuff working or integrated into our setup. On the frontend, I was missing some experience with uploading/transferring large video files to our backend upload server. Overall, our project was a bit behind and we still had many things to finish.
At some point we had met late Saturday evening to discuss what was going on with the project. Our backend stuff was done, but it was unable to communicate with the tech architecture. So we were unable to test how everything works together.
On the frontend, I had built out the other sections in the web application and still had to implement the file uploading code portion.
At this point we had to make a decision. We realized that we weren’t going to finish on time, nor have a working demo. So we decided to finish off the frontend portion as best as we could, in order so we could make a fake demo video presentation of our project idea. This would make it much easier to illustrate how everything would work.
This had taken us several hours to get everything working on the frontend, including… implementing the file uploading feature, and finishing off each menu section with fake data. We wanted to make it look like everything actually worked.
This ended up taking us until sometime after midnight to finish. It was crunch time as we had less than 9 hours left to finish off our presentation, writeup and submit our project.
The final grind - the early hours of Sunday morning
We got together on a video call and spent some time brainstorming interesting ways that we could do our presentation. It was only allowed to be up to 2 minute in length, so we had to be concise and fast to illustrate our project idea.
After some time we finally decided on a presentation outline and we would be filming in 30 second segments.
During this process we had to do many, many takes. We made many screw ups and it took us probably a dozen times to get the first segment good enough. The most common issues we had were trying to cut down the segment to 30 seconds and messing up our lines.
We kept at it, filmed each segment and probably around 4am we were finished with all the recordings.
Since I had a little bit of video editing skills, I decided to edit the video myself. There was a little more work involved to cut out some minor hiccups, and adding some extra touches like progressively increasing the music at the end.
Once we had the final version, we watched it and found a few further improvements we could do. So I had to go back and make those changes. When we were all happy with the video, I uploaded it to YouTube.
In the end… this is what our final presentation looked like and what we had submitted for the HackZurich competition.
I distinctly remember being beyond exhausted and getting to bed around 6am or so. It was a super long day and a super late night!
Day 3 - HackZurich results
While I was sleeping, our other 2 teammates got up early and were working on finishing off the project writeup for our devpost submission.
I got up sometime around 9:30-10am and was super exhausted from the event. Everyone on our team had worked really hard and we put forward a great effort. I think all of us were proud of what we were able to do.
This day was mostly a relaxing/chill day and watching all the presentations. But there was a twist…
When they were announcing the top 25 finalists, it turned out that our project/team had made it into the finals!
Wooo hooo! Amazing
As a team we were stoked and excited. We were thinking… maybe we could win the competition? Or at least get an award!
It made watching all the final presentations that much more interesting and trying to figure out who was going to win the competition.
In the end we didn’t win, nor place in the top 3.
We also didn’t win any awards, but quite a few people liked our project. I feel if we had actually finished the project and had a live working demo, our chances of winning something would have been much, much higher.
The project idea was solid and it was solving a real world problem. If you are curious about the business analysis of our project idea, I made a video using our Minutely project as an example on how to analyse business ideas.
Overall, I thought HackZurich was a great time and learning experience. I got to meet some cool new people and work on a fun project.
My takeaways & advice
Here is some advice that I’d give if you are considering entering into this hackathon competition.
Make sure you join the Slack group as soon as possible.
Introduce yourself, your skillset, background and what workshop challenges interest you.
If you are coming with your own project idea, give a vague summary of your project idea and mention the type of people who you are looking for on your team.
Aim to find/form a team as fast and early as possible. The more time you have before the start of the event, the easier it is to work out project details, scope and planning aspects.
An active strategy of finding team members (ex: messaging people privately) is much better than a passive one (ex: waiting for people to message you).
If you have your own idea:
- Know exactly the type of skills you are missing to get the project idea completed and directly seek out those people with 1on1 private messages. Search through the Slack introduction posts, and also on devpost, for the people who have the skills you are looking for.
Project idea / scope:
Try to solve a real problem or create something that would be valuable.
Narrow down the idea to the absolute bare essentials. Focus on the 1 critical feature that will make your idea work. If you have time (which you probably won’t) you can then add extra features later.
Keep it simple and uncomplicated. Don’t bother creating features that provide little to no value (ex: authentication/log in, fancy design).
Other helpful tips:
If you are participating in person, make sure you have a mobile data plan as a backup. This ended up being super useful due to the poor internet connection our on site participants faced for most of the weekend.
If you have a larger team, it can be super helpful to work in shifts so not everyone is sleeping at the same time. One example is the people who are working on the video presentation stay up super late on Saturday evening, while the person who finishes off the writeup on devpost and submits the project is sleeping and instead gets up early on Sunday morning.
A live working demo of your project will be highly valued by the judges and you’ll be much more likely to win.
Build fast and minimize the amount of time spent discussing things or project scope. Try to have as much of the project scope sussed out as possible, so you can focus on coding and creating your project idea.
Artificial Intelligence (AI) and Machine Learning (ML) is sexy. If you want to increase your odds of winning the competition, you would be best to incorporate AI/ML into your project idea.
Subscribe to David's Blog
Are you a developer interested in building your own SaaS business?
Get exclusive, behind-the-scenes insights (and first access priority) on my journey and process in building a SaaS business from scratch!
Not sure if this is for you? Then check out my Entrepreneurial Dreams: Build a SaaS Business in 12 Months Challenge.