MCH2022 - May Contain Hackers
Nonprofit outdoor hacker camp in the NetherlandsPublished on July 29, 2022.
From 21st to 26th of July I was at MCH2022 in Zeewolde. This was another iteration of the dutch hacker camps held every four years. You can already find the talk recordings on media.ccc.de. Here are some of my impressions of the event.
Like at CCCamp2019 I again had the great honor to be able to stay at the Frubar Island. The village consisted of ~16 people and they all were great company! The sheer amount of stuff they brought to MCH was astounding. We basically all had to eat in the village all the time, just so we would not have to carry all the food ingredients back home. Other notable stuff included publicly remote-controlled DMX lights all over the tent as well as a nice sound system. For the proper camping experience a bunch of IoT environment sensors were also keeping track of things in the tent, using the badges as a hardware platform.
Besides grilling meat we also represented our swabian roots and made a huge amount of Kässpätzle (two batches actually), with fresh g'schabte (or rather g'siebte) Spätzle cooked on a gas stove, the cheese melted into them using a gas grill, with onions made before in a forged iron pan.
It was awesome.
We are considering doing that again as
Swabian Embassy in the future.
UbaBot Cocktail Machine
Of course we also brought our UbaBot Cocktail Machine and ran it at Frubar over the whole event. Operations were slightly hindered by an unbelievable amount of wasps while the sun was out. They really loved the sugary sirups and for a considerable part of the day you could not get a drink without having to fish out at least one wasp that fell in while dispensing.
Otherwise it worked great. We did not have as many guests compared to the CCCamp2019, because back then the village location was very optimal. We also didn't do any promotion, like sending out Chaospost postcards and inviting people, or hanging signs. Still we were able to use up our batch of ingredients we brought with us.
We also developed a fun new feature for the machine... ⬇️
Badge App Development
As is custromary for these events, every ticket-holder received an MCH2022 Badge at the entrance. It contains a bunch of real nice gimmicks, like an FPGA and an RP2040 as well as an ESP32. And besides displaying a name-tag it can also be used to run custom software!
Sitting in the village tent, looking at our new badges while setting up the UbaBot at the same time, we quickly had the idea to develop some kind of UbaBot app for the badge. Thinking about the UX of the machine, a way to do that soon became obvious. In our normal setup, every user should register at the UbaBot for a user account with accompanying RFID tag. This tag can then be used to log-in to the machine to dispense drinks. This way we can control who is allowed to drink, as well as keeping track of stuff like who drank what, to show approximate blood alcohol contents. Of course this means there is a time-consuming setup process where each user has to register. For events like Camps we usually provide an anonymous RFID tag at the machine, so everyone can get a drink without registering.
Because in this case every potential user already has the badge, we were able to stream-line the user-registration process. You just need to press a single button on the badge to login to the machine. The API backend on the Raspberry Pi will automatically create a new user-account for the nickname stored in the badge, if it doesn't already exist, and log it in if no other user is currently logged in. The app then shows the auto-generated username and password for the newly created account, so users of the badge can then use their account as usual, if they choose to do so.
For the implementation we used MicroPython on the badge. This allowed us to do stuff like send HTTP requests to the machine easily. Fortunately the badge provides an API to control the WiFi, so we could use that to connect to the local WiFi of the UbaBot. This also took care of DDoS issues, as physical proximity to the machine is required to use the app. Also this means users don't have to fiddle with their WiFi settings, the App connects to our Access Point without modifying the stored credentials. At first the code was a bit spaghetti-like, as it grew while we were experimenting. Later I re-did the logic of the application using a state-machine, similar to what I did for the Gieß-o-mat.
For the backend we had to implement a bunch of API calls in our Bartendro fork. While the event was running we only really used the login functionality. But we also started to implement an endpoint to display the BAC on the badge app, as well as showing the menu to pre-order drinks.
The documentation for the app development process was a bit sparse. Apparently many people had problems. There is a MicroPython Getting Started Guide that explains how to run a REPL and load an app via USB (you need to create the folder for it via the REPL!). There is also an API description. Some other stuff I got from looking at other apps in the Hatchery. There's even a simulator which I used to get the screenshots.
Also I have to say, this was the first time I saw a whole bunch of people running code that I wrote to actually do something useful 😊
Unfortunately my sleeping pad broke after only one night. I tried to sleep another night on it which was a pretty bad idea, it was very uncomfortable. We then tried to find the hole to attempt a repair, but broke it even further while doing that. Fortunately there was a Supermarket available on the campgrounds providing all basic needs, like air-mattresses, so I could sleep well for the remaining time.
I was a bit surprised by the Dutch laws about serving alcohol. Apparently it is not possible to buy any alcoholic beverages from 02:00 until 14:00. Of course I was only made aware of that when I tried to order a Tschunk at the bar. At the same time, running dangerous equipment like flame-throwers immediately next to and above event visitors does not seem to be any cause for concern over there! 😅
Surprisingly the train travel towards the camp was uneventful, but on our way back home things took a different turn.
It started by us thinking we are in Düsseldorf, where we had to switch trains.
We actually were in Duisburg and only noticed after our train we just disembarked had left.
Fortunately another train drove us to Düsseldorf after only a couple of minutes waiting time, so we were able to catch our original connection without problems.
Later, between Stuttgart and Ulm, another passenger pulled the emergency brakes without reason and caused quite some delay.
Because of this I could no longer catch my original connection home.
On the last train from Ravensburg, where the Rutenfest was held, a whole bunch of drunken passengers stepped on, causing quite some chaos and threatening violence to each other.
This was quite the contrast to the camp experience just hours before 😔
I then had to take a Taxi for the last couple of kilometers home and arrived at about 02:00 at night.
The background pattern for this page has been generated with the official MCH2022 design generator.