I spent my weekend at MIT at the GNU 30th anniversary hackathon. I had never participated in a hackathon before and was excited to see what it was like. Developers from many GNU and non-GNU projects were there to hack and help others get involved, and RMS was there to give the keynote speech.
On Saturday, I spent nearly the entire day in the GNU FM room. About a year ago I wrote an installation guide on the GNU FM wiki, and so Matt Lee asked me to walk some newcomers through getting a development environment up and running. I was able to help four people with this. They all had a functioning GNU FM server and they were able to scrobble their music to it. Setting up GNU FM can be quite a pain, and the guide I had written was missing some information and gave some bad advice. I simplified and rewrote some of it so that it’s easier to follow. Hopefully this will benefit a future contributor to GNU FM.
At 5PM on Saturday, RMS gave a talk about the future of free software and the GNU project. He discussed the value of reverse engineering proprietary applications and device drivers in order to write free replacements. He also talked about the dangers of software-as-a-service and the “iThings”. His new article on Wired covers much of the same subject matter. After his speech, he raffled off a stuffed baby gnu and an “adorable” GNU 30th anniversary mug. Chris, owner of ThinkPenguin, won both items! After the speech came the reception in which I ate some delicious vegan cupcakes and acquired two 3D printed gnu logos that were sitting atop each cupcake. After the reception, I briefly went out to a pub with Matt Lee and Matthew Garrett. Donald Robertson of the FSF joined in later.
On Sunday, I spent the first couple of hours helping out more with GNU FM because Matt Lee was sick. For lunch, I went with a large group to a chinese restaurant. Included in the group was the John Eaton, the GNU Octave author, and Zak Rogoff, Campaigns Manager at the FSF. It was interesting to talk to John about the challenges that he faced and continues to face when trying to keep up with Matlab and maintaining compatibility even when the Matlab engineers make bad design decisions.
After lunch, I met up with Mark Weaver, one of the GNU Guile developers. He helped me write my first patch for Guile: a new REPL option called “read-wrapper” that allows external code to hook into the part of the REPL that waits for user input. Guile-2D needs this functionality in order to create a REPL that plays nice with the game event loop. Since the main thread is in an event loop, waiting for user input at the REPL prompt would stop the game entirely. To get around this, we used the “read-wrapper” option to pass the procedure that reads user input into another thread so that Guile-2D’s event loop can continue running. We achieved this functionality in less than 100 lines of code. This hack showed me how great it is to use a language with first-class continuations.
tl;dr: The hackathon was a great time. Happy birthday, GNU.