How to survive your first Hackathon
My lessons learned at the Lightning Hacksprint
So you want to get your hands dirty and interact with the developer-community around Bitcoin. Great! You seem to understand that “be your own bank” means more than “number go up”. BYOB implies that everyone is proactively involved getting Bitcoin and Lightning running. We are building up the new kind of money. And to do that, in a trust-minimized way, needs everybody.
But where to start? Hackathons can be a good opportunity to take the tech-pill. Or, even more convenient from the comfort of your own home: Dive deep into the coding community of Bitcoin by participating at the Lightning Hacksprint. A wrap-up of this Event is available on Youtube.
The last event, which took place between May 9th and May 10th, was a blast. I can highly recommend everyone interested in Bitcoin and the Lightning Network to be there when the next Hacksprint, organized by Fulmo, takes place. It does not matter if you are a professional developer.
That being said some technical experience can help and prevent you from some humbling experience. Because, to be honest: my biggest lesson learned was that I am not as smart as I thought I would be. Armed with some data science experience (mainly in R, some experience in Python) I knew that it would not be a cakewalk for me but never thought that I was stuck quite early at the beginning. At a first glance the sad news was that I could not participate in the way I planned to do.
The Lightning Hacksprint was Nevertheless a great experience. I could follow development work around, experiment with the code on my machine and in that sense really live the “Don’t trust, verify” in its fullest extend.
Moreover, I learned quite a lot for future Hacksprints. So lets dive right in and look at my personal lessons learned!
Create a distraction-free environment
On the weekend of the Lightning Hacksprint, I was not alone at home. While I could hide myself in my bedroom (which I did for most of Saturday) it was obviously not ideal. Moreover, I had to do some phone calls, and had an appointment on Sunday evening.
At regular Hackathons you are taken from your normal surroundings which can help a great deal, but thanks to Corona we have to find a way to get rid of the distractions at home. So for the next Hacksprint I plan to really seal myself off from the rest of the world.
Get your communication tools ready
The second lesson should be well-known in times of corona: Get all communication tools running! The communication during the Lightning Hacksprint was primarily done over two platforms: Mattermost was, as an open-source-alternative to Slack or Microsoft Teams, the messaging platform of choice, while Jitsi was used for video conferencing. Different projects used additional software to keep in touch but all in all one big lesson was: Check whether the tools at hand work well.
How is the internet connection? Is Jitsi working? And how about your microphone? I personally had to use both my Laptops, one for hacking, one for listening to Jitsi. Moreover, I had to check several Headsets until I found one which worked well. While that was in that case not impeding the work of others obviously work could have been much more fluent with a little bit of preparation.
Install the mandatory programs
My biggest mistake was that my software environment was not completely prepared. While it cannot be stressed enough that everybody should run a Full node (and setting up one is, thanks to the Raspiblitz, pretty easy), some development projects don’t need a running full node. However, the Bitcoin client bitcoind as well as a Lightning client (lightningd when working on a project around c-lightning) should be installed.
Oh, and I should stress installed correctly. My initial approach regarding bitcoind was to download a precompiled version “to save some time”. That ended up in some weird aliasing and extending of $PATH but a decent interaction between lightningd and bitcoind could not be achieved. The solution that worked for me was then to install bitcoind from source.
Even before that, dependent on your respective system and at the task in hand, you will need some programs. Some programs which you definitely won’t regret having installed are:)
- C and C++
- git
- Python (>version 3.0)
- Pip
- Some editor or IDE. Most operating systems are shipped with several editor options.
That list, obviously, can be extended dependent on the challenge you plan to work on. If the project involves Rust, it is obviously recommended to install it. If you work with Python, installing the Lightningd-Library pyln would be a good idea.
So one important lesson learned was: get the needed tools together. Already before the Hackathon, get to know these tools. If not you risk losing falling behind the other people working on a project – or, even worse, you slow everyone down.
To install these programs, even when done from source, you don’t need to be an expert programmer. Most of the programs have decent installation scripts which can be invoked with several commands. What is needed, though, is a little bit of tinkering on the command line. With that we come to the next point.
Become a Terminal-maximalist
If you are a Linux-user (or if you know that Mac-OS is, in fact a BSD derivative) you will already know it: the Terminal is your friend! When developing, the Terminal is not only convenient but one of the most important tools you’ll use. The installation of the tools mentioned above will take place on the command line. A lot of editors such as Nano or vi(m) are per default run from the command line, others such as Emacs have the option to do that.
Note also that I said Terminal- and not PowerShell-maximalist. While Windows 10 had made giant steps forward with their Windows Subsystem for Linux, the integration within the Linux file structure for the tools mentioned above is best in a *nix-like system. The community is also larger so that, if you are stuck, more people could help you. Finally, its also a great way to prepare yourself for a Raspiblitz. Yes, when the Lightning Node of Fulmo is up and running a lot of things can be done in the different menus. However, for debugging the Raspiblitz knowledge about the Terminal can be a huge help.
Grab your coffee and hack!
The fifth and most important lesson: do it! Bitcoin-developers are no reclusive, elitist cabal. They are very welcoming to newcomers and quite happy when people want to participate in a Hackaton. Of course, as always the Golden Rule “don’t be a nuisance” applies. Like in other communities a little bit research prior to asking the community can help. During a Hackathon or Hacksprint everybody is quite busy so asking really basic questions can be a distraction. So flex your Google Duckduckgo-Skills and try to find answers before asking every question.
That being said: Irrelevant of your experience I can invite everyone to observe the more technical side of Bitcoin. Even if you think you cannot work on one of the proposed challenges just watch these evolving from the sidelines. You can also work on your Raspiblitz, for example update it to a new version or getting in touch with some new features. So if you have one at home and wanted to ask the developers anything: These Lightning Hacksprints are a great opportunity.
See you guys at the next Hacksprint!