On the 14 of February 2019, I had a trip to the largest blockchain hackathon I’ve ever visited — ETHDenver. As you might guess by the name it was in Denver, Colorado. It’s a nice American city which I have never heard before I visited it. It has lots of mountains, big wide streets, and place which called “castle” where hackathon took a place. At the morning on 15 of February, this castle was sieged by programmers of all types, hanger for the fame, recognition, and fun. Despite Denver turned unwelcomely cold these days, the openness and warm spirit of all participants made these days summer hot. It’s always a great pleasure to see old crypto friends and the biggest reason to be a part of the Ethereum community.

Learn the rules in details

For someone who is not familiar with rules, a hackathon is a competition where all people divided by teams and each team have to build something cool. Exact rules can be found on the website https://www.ethdenver.com/judging/, but in the nutshell, everyone starts to program on Friday and on the Sunday morning each team has to submit the final product to the special system. It’s usually devpost.com but this time it was a website from one of the sponsors kauri.io. The type of projects varied, from different mobile apps connected to the blockchain (so call dapps) to the something which have very remote relation to the blockchain at all, for example, 3d printing service. After the deadline, when all projects are submitted, all teams are waiting until a special group of judges approach them and evaluate the project based on different criteria. How original it is, how impactful, how well it made etc. At the end of the judging time, all scores are calculated and the best teams are invited to the stage to give a pitch. Apart from that, there are many sponsors who have their own list bounties for the teams who will use sponsor’s products in their projects. Like, use particular API or specific cryptocurrency.

Find a team with complementary skills

My team was Kirill, Artem, Nick from BUTTON Wallet and me. I met these guys on the hackathon at San Francisco last September and it was our first hackathon together. The fact that I never programmed with them before was a strong disadvantage but fortunately, guys knew each other very well and work in the same company. Kirill has a backend, telegram API and bot development experience, Nick — smart contacts, frontend, marketing, Artem — senior full stack, AWS, Redis, me — full stack, ReactJS (I pointed out only relevant for that hackathon skills).

Build something together before the hackathon

It’s very important to have the team with complementary skills that you actually able to build something useful together in a very short time. I’ve learned it hard way when the last year in EthSanFrancisco I joined 3 very smart people who were also passionate about zkSNARKs but having 4 mathematicians on the team isn’t the best strategy to build something fast. After that fail, I took the Udemy course for ReactJs and didn’t regret it. It’s a common issue for people from FAANG who consider themselves smart but can’t build anything useful because on the work they doing a complex but very little part of the actual product.

Make research before the hackathon

The first thing we did when we arrived was to compile the full list of bounties. Because each company had a separate page it was very complicated to properly evaluate the big picture. So I aggregated the size of bounties, type company, and requirements in the google spreadsheet.

Choose the optimal bounties to maximize chances

What can we realistically do in just 36 hours? We didn’t know the answer, so we decided to do something that we can implement part by part. So even if we weren’t able to complete all plan — already finished parts should be sufficient to present the project.

There were 120 teams of super smart hackers and the chance that we would get the main prize was not very high. So instead of taking a bet on the main prize of the hackathon, we brainstormed another question:

what would be the optimal set of bounties which would maximize our math expectation for prizes?

It’s not a trivial question as it might seem because it’s necessary to make a prediction which bounties will be popular at other teams. It’s important because if lots of teams will compete for the same obvious bounty it would be hard for each team to get it. So it’s logical to focus on the less popular but yet interesting bounties instead. This is win-win for participants and orgs because more teams will get some bounties. And more companies will have projects which use it often relieving some important issues, finding bugs, share feedback etc.

Choose project idea which you can implement step by step

We decide to do a telegram wallet. There were several reasons. The first reason was that guys already have extensive experience of building bots of telegram so was a good start. Bots have simple inference. Because very few blockchain projects use it despite telegram has about 200M users — makes it a very good platform for crypto. Another reason it easy extendable for adding new features.

When we chose telegram, we picked up 5 nominations: MakerDao because stablecoins are clearly the future and Dai is the only decentralized stablecoin right now and they were sponsors. POA because it provides a cheaper version of DAI called xDAi. Celer because it can make some transactions cheaper and faster. Shapeshift to give users the interface to exchange their crypto. And Rhombus oracles to know the real exchange prices.

Building things more, talk less

At 8 pm we started coding. Kirill was programming backend on nodejs, connect it to telegram bot by API, Nick was designing and programming frontend, Artem was reading specs for the Celer network, and I was reading about the Rhombus oracle system.

Sound good, right? The tasks were distributed, everyone was busy with the task which matches their skills, dream team. Well, in theory.

Start coding at the same time

In a couple of hours guys suddenly (they flew in from another continent)went to sleep due to the jetlag so I was trying to crank the Rhombus system alone. I tired until 3 am but I didn’t make anything workable and also went to sleep.

Rent a place together with other participants

I stayed at Airbnb which we rented with another friend and his friends. It’s very good lifehack to rent a place together with other participants, instead of a hostel, because you can meet new friends, chat about an interesting topic and in theory, it would be the comparable price per person as a hostel. My new friend ended up doing very cool project zDai.

At the morning I overslept and came at 1 pm. Everyone else came at 7 am so I was light years behind everyone. We had lots of problems. Celer worked only on one testnet which was different one Rhombus supported so we couldn’t connect it together.

If you can’t sleep healthy — at least eat healthily.

Another issue was food. Because every on the hackathon ate the fast food we suddenly learned that with stress and little sleep it can lead to the stomach ache. Which isn’t particularly helpful for fast programming. The orgs surprised us as well by having two toilets for the 5 story building with 1500 people. So taking pills for abdominal pain on the hackathon is a very good idea.

Evaluate the midterm progress and pivot, if necessary

What did we have at 3 pm on Saturday? We had a working bot, it could sign transactions, call shapeshift for exchange and … that’s basically it. Backend often crashed, for Celer integration we only made a demo project that helps us to try all possible features, but haven’t even a line of code that allows using of Celer in our main project, I totally fucked up my tasks for Rhombus.

So we brainstormed the plan. What should we change to actually make the progress? Should we change the features list to make it possible to develop? Should we simplify the project? Should we redistribute the tasks?

Gladly Nick quickly pointed out the issue with my code and finished in a couple of minutes. Something which took me the whole night took Nick just 10 minutes=( That was demotivating. But this gave me time so I could do QR code reader and tx updates on React, which I didn’t have any problems with. Initially, the plan was that the user would just take a picture of the QR code and it would be parsed on the server. It tuned out that there is no good library which could parse picture with glare or shadow on it so the only way to resolve this was to give the user immediate feedback about QR code, therefore, it has to be implemented on the frontend.

Meet organizers and sponsors

With new tasks distributed the progress started to move much faster, however, the issue with Celer still wasn’t resolve. So we went to the actual Celer team to ask what might be the problem. It turned out that they understand that production ready integration is not possible at the moment, but the concept is right, and our idea is still viable with upcoming from Celer, so it was totally okay to use it in a much-simplified way. Same with Rhombus. It was a big concern for me that I use their Oracle system directly from JavaScript without having any sort of Dapp. My thought was that because I don’t use dapp, I don’t pay fees, therefore, they can’t earn money from this usage. After the conversation, it turned out that my concerns were false. They were totally okay that more people use their oracle even if they don’t earn from it directly. As I understand they have indirect benefits out of it for the adoption, but it’s a totally different story. The important part here that it’s totally okay to speak with orgs and sponsors and clarify their requirements. Or even simply ask what they are looking for? At the end of the day this event not only about coding but networking as well and this is a great opportunity to meet more people from the industry.

Master your tools to build things fast

While I was building my front end part of online QR scanner which can parse specific code everyone used for paying for food and connected to the backend in a very non-trivial way I thinking: wow, I build the big and important chunk of the project without really feeling exhausted as I did the night before. The reason for it that I was really interested in what I was building and I could actually see the progress. Not because the task was easier but because I had prior experience with ReactJs so it was much more fun to actually build something rather just to read docs and try to understand why toolchain doesn’t work. So have prior experience with programming tools, languages, frameworks, is very important and help not only deliver the project faster but actually to have lots of fun.

Don’t make presentation in the last minute

At the about 10 pm Nick started to build pitch deck. After some time close to midnight he got an excellent idea to make the video of the prototype, how a user can pay for the track food on the street using our wallet. Because judges surely wouldn’t have enough time to go outside and stay the line for the food and wait again for the demonstration it was a very good idea to record it. The problem that it was already midnight and all food tracks had left. Fortunately, it was still 8 hours before the submission time so we could do it 2 hours before the deadline in the morning. It’s always a good idea to finish presentation in advance to have a room for improvement. If we made the presentation closed to the submission deadline we wouldn’t have enough time for the video.

Pay for food in BUFF coins on xDai POA

Be sure that all judges had found you

After every judge came and we calc the number of the nomination we potentially got, something didn’t work out. We had 5 nominations but only 4 selfies with companies. It turns out we didn’t find MakerDao team so it was our last minute to finally find them. It’s always good practice to review who from judges saw your project and find the judge who didn’t. They might simply forget about you.

After announcing result we learned that unfortunately, we didn’t get into top 10 teams to qualify for the main prize, but we were happy to learn that we got 5 out 5 bounties we applied:

Celer — $1500

POA — $500

MakerDAO — $1250

ShapeShift — $3000

Rhombus — $1000

So at least we got our flight tickets and Airbnb reimburses.

Have fun

But the most important of the hackathon are people you meet there. It’s a unique opportunity to meet highly motivated folks who share your interest to build cool things and change the world. Who knows how your new connections will work out? You might end up to find good friends, investors or partner to build the next unicorn together.

Alex Lebed (twitter), Kirill Kuznetcov (fb), Nick Kozlov (fb), Artem Vorobev (fb)