Siili Clojure Hackathon

Jouni Leino, Full-stack developer and DevOps enthusiast

A jolly programming event was organized by Siili and the goal was to have the Finnish Clojure community gather together, share ideas, knowledge and to make new social connections.


Pizza, beverages and some snacks were served as the participants worked on their various projects. Everyone wanted to learn and create something novel & exciting in a relatively short time period so we decided to keep going until the next day if possible. There was a lot of collaboration and participants helped each other to overcome obstacles. People seemed genuinely psyched for the event format as it was hands-on and quite relaxed. The crowd dissolved as teams got tired and some presented their progress to others just before going home. Last project team left the office at 06:00 and surprisingly returned already at 09:00 in the morning.


Although it was obvious there was still energy and enthusiasm among the remaining teams we decided to call it quits at 13:00 on Saturday to spend some time with our families too before the weekend was over. Some teams continued working on their projects even after the event and shared information of their work. Here are a couple of stories to remember.

Project 1: Tanel Kriik & Oliver Vartiainen

What we built? 
A link-layer packet deserializer and filter.


What does it do and why? 
It reads raw L2 packets from a given hardware interface and destructs them into a Clojure map according to a user-defined packet format. It could be used for quickly prototyping custom protocols. The whole thing could (and eventually should) be written in a lower-level language, for example, C, but Clojure lets you skip all the “problematic” parts and concentrate on the prototype.


What did we learn?
Oliver: I hadn’t used Clojure before. Having a clear goal made it easier to actually force my way through problems I’d not want to deal with otherwise. At least my macro-fu got a bit better since I fiddled with a Compojure-like DSL.
Tanel: I had not used Clojure before either. I learned the basics of Clojure library organization and how to call native library functions through JNA.


Will we carry on with the project?
Tanel moved on to create a new project with a more ambitious scope. The goal is to make a data link layer/network layer Swiss army knife that interfaces with the native packet filtering capabilities provided by Linux and BSD -derived systems by compiling and attaching user-defined Lisp code as BPF (Berkeley Packet Filter) -compatible binary code. The library would provide automatic deserialization and serialization of raw L2 (Ethernet, IEEE 802.11 etc.) packets and L3 (IP) packets, which could then be easily manipulated in Clojure.

Project 2: Fabrizio Ferrai & Jouni Leino

What did we build? 
Book Librarj is a half-baked, over-engineered, well-thought-out small web application made with the help of lots of caffeine and beer.


What does it do and why? 
The main purpose is to allow browsing a physical book library and the ability to search through the titles. These are actual books found in the Siili office in Helsinki. We started with some prepared material such as the images in this S3 bucket and some relational data about the books.


What did we learn?
During the event we got to play with lots of nice shiny stuff: re-frame 0.8 for a Reactive and buzzword-compliant SPA, re-com for ready-made fresh Reagent components, Postgresql full text search, jq to hack with json on the command line, AWS Elastic Beanstalk + Docker for fast Cloud deployments, AWS CloudFormation and Infrastructure as code, System for a fast REPL-driven-development...


Will we carry on with the project?
We didn´t quite manage to finish the defined scope on one go but rather completed the search functionality after the event and we are still experimenting with various ways to automate the environment creation. It has been a fun and useful learning experience for both of us.


See our application here: http://booklibrarj.demosiili.com
The source code here: https://github.com/ff-/book-librarj




Join our next programming hackathon? 

We are a community of talented digital craftsmen and women who work with pride and love to develop their expertise. We are proud to be Siilis. Become one of us: www.siili.com/careers