Elixir Bootcamp 2018

Geschreven door Tjaco Oostdijk op 22-5-2018

Op 17 en 18 mei 2018 was het dan zover. De tweede Elixir Bootcamp, gegeven door Tonći Galić en Arjan Scherpenisse. Het waren twee bijzondere dagen. Hieronder een impressie…

De eerste dag

Ze zijn er klaar voor, zo’n 20 man sterk zit met laptop in de aanslag klaar om onder leiding van Tonći en Arjan eens goed te kijken wat Elixir nu eigenlijk is. Na een kort introductierondje, blijkt het een gemêleerd gezelschap te zijn. Er zijn een aantal deelnemers die al wat ervaring hebben met Elixir, maar er is ook een deelnemer die voor het eerst programmeert! Daarna is het tijd voor een geschiedenisles. Wie denkt dat Elixir zomaar een nieuwe programmeertaal is, komt er al snel achter dat het eigenlijk gebruik maakt van de, door Ericsson in de jaren 80 gebouwde, beam Virtual Machine. Dit is dezelfde VM waar Erlang code (een programmeertaal ontwikkeld door Ericsson in de jaren 80) naar compileert. Arjan laat ons dan ook meteen een klassieke promotiefilm zien die is gemaakt door de makers van Erlang, waar ze door middel van een telefooncentrale systeem de ‘fault tolerance’ van Erlang uitleggen. Erg leuk om te zien hoe er live in het systeem een bug wordt gerepareerd terwijl een gesprek waarmee het filmpje begint ongestoord blijft werken. Het is vooral interessant om te zien dat Erlang in de jaren tachtig een probleem oploste dat eigenlijk in de huidige tijd nog veel relevanter blijkt. Namelijk concurrent, distributed en fault-tolerant systemen bouwen.

Elixir bootcamp 2018

Na de korte geschiedenisles blijkt al meteen dat de heren van aanpakken houden. Tonći neemt ons vliegensvlug door de basis van Elixir heen. Het gaat snel, maar de afwisseling met het actief betrekken van de deelnemers door na elk stukje theorie een ‘hands-on’ oefening te doen helpt ontzettend om het materiaal bij te benen. Arjan en Tonći houden daarbij zorgvuldig in de gaten wie er meer hulp nodig hebben en zorgen dat ze een helpende hand bieden waar nodig. Voor we het weten beginnen onze magen al te knorren en is het inderdaad al tijd voor de lunch. Door de hoeveelheid materiaal die al behandeld is, vliegt de tijd voorbij. Als we richting de volledig verzorgde lunch gaan blijkt ook waarom er zo een vaart achter wordt gezet. Arjan geeft al aan dat het ’na de lunch pas echt leuk wordt’. Oftewel het is wel duidelijk dat de essentie van Elixir niet ligt in de manier waarop je de code schrijft. Er schuilt een diepere magie in dit taaltje…

Na de overheerlijke lunch gaan we direct van start met de echte reden dat de heren zo enthousiast zijn over Elixir (en eigenlijk over Erlang). Het wordt al snel duidelijk dat het allemaal draait om processen, waarmee het in Elixir en Erlang dus heel makkelijk wordt om bepaalde functies van elkaar te scheiden. De deelnemers leren al snel hun eigen processen opstarten en we gaan in de middagsessie al snel naar de ‘patterns’ van elixir. Van het spawnen van Processen, naar het gebruiken van ‘behaviours’ zoals GenServer, Agent, Task en Application. Aan het eind van de middag zijn we inmiddels allemaal behoorlijk uitgeblust, maar kunnen we nog net het stukje over Supervisors meepakken. Het ‘let it crash’ principe van Erlang is natuurlijk niet zomaar de boel laten crashen. De Supervisor to the rescue! We eindigen de dag met een coding sessie onder leiding van Arjan waarin we met de groep de backend-logica van een lift implementeren. Een erg leerzame en interessant einde van de eerste dag.

De tweede dag

Aan het begin van de tweede dag blijkt dat veel van de deelnemers de avond ervoor toch nog even hebben gestoeid met de lift-implementatie en gaan we weer van start waar we waren gebleven. Voor diegenen die nog niet zo ver waren hebben zowel Tonći als Arjan een erg mooie en cleane implementatie van de lift geschreven. Deze dag gaan we nog dieper in op het ecosysteem door de implementatie van de lift te verrijken met alles wat er in OTP (Open Telecom Platform) land te vinden is. Door Elixir te gebruiken krijg je namelijk het hele Erlang ecosysteem er gratis bij. In essentie compileren Elixir en Erlang namelijk allebei naar dezelfde Beam bytecode. We breiden onze lift verder uit door ‘m te superviseren, vervolgens in een nieuw ’mix’ project te stoppen en een webserver te maken die met de lift kan communiceren. Daarna implementeren we een logger die de boel in de gaten houdt en zijn er zelfs twee deelnemers die een grafische interface maken! Aan het eind van de dag zorgen we ook nog eens dat we onze applicatie kunnen deployen (in ieder geval lokaal) en gaan wat nog wat korte experimenten aan met het distribueren van de applicatie over verschillende nodes en leren we een aantal debugging tools kennen.

Na een enerverende tweede dag heeft iedereen last van brainfreeze en is het tijd om af te sluiten met een borrel in een goede Amsterdamse kroeg 🙂

Het is ongelooflijk wat Tonći en Arjan hebben weten over te brengen in slechts twee dagen zonder je het gevoel te geven dat je helemaal ontploft van de informatie (alhoewel sommigen misschien een beetje…). Chapeau guys!

Bij Kabisa staat privacy hoog in het vaandel. Wij vinden het belangrijk dat er zorgvuldig wordt omgegaan met de data die onze bezoekers achterlaten. Zo zult u op onze website geen tracking-cookies vinden van third-parties zoals Facebook, Hotjar of Hubspot. Er worden alleen cookies geplaatst van Google en Vimeo. Deze worden gebruikt voor analyses, om zo de gebruikerservaring van onze websitebezoekers te kunnen verbeteren. Tevens zorgen deze cookies ervoor dat er relevante advertenties worden getoond. Lees meer over het gebruik van cookies in ons privacy statement.