Python team goes PyCon

  • 06/12/2018
  • 4 minuten leestijd

Python team goes PyCon

Het Python team vertrok dinsdag 23 oktober naar Karlsruhe. Na een lange rit over de Duitse Autobahn, met veel vertraging, kwamen ze ongeveer 11 uur ‘s avonds in het hotel aan. Uitgeput dook iedereen direct onder de wol om de volgende dag vroeg op te kunnen staan voor de opening.

Woensdag PyCon Karlsruhe werd georganiseerd in het ZKM gebouw, “Center for Art and Media”, waar een aantal zalen aan de conferentie waren toegewijd. De keynote speech kwam van Peter Weibel die -met zwaar Duits accent- ons mee terugnam in de geschiedenis van wiskunde, natuurkunde en algebra. Een bijzonder begin van de conferentie.

Bij de eerste talk zaten we vooraan om te luisteren naar Andrew Svetlov - maintainer van asyncio - die zou gaan vertellen over veelgemaakte fouten en best practices met deze module. Helaas verscheen hij niet op de conferentie, en vond de organisatie Stefan Behnel last-minute bereid om een talk te geven. Hij behandelde de diverse ORM’s die de Python community rijk is, en ging in op Foreign Data Wrappers in PostgreSQL. Hiermee kun je externe resources (bijvoorbeeld XML uit een bestand of webservice) queryen al ware het een tabel in de database zelf. Een interessant concept dat nog niet iedereen kende en naderhand voer voor discussie was.

BIj de volgende talk vertelde Dennis Göries over Karabo, een framework dat bij de Europese onderzoeksfaciliteit XFEL wordt ingezet. Dankzij deze op asyncio gebaseerde library is men in staat de enorme hoeveelheden data te verwerken die het onderzoek oplevert. Daarnaast biedt Karabo diverse abstracties om wetenschappers gebruik te laten maken van het syntactisch ingewikkelde async en wordt het gebruikt om parallel motorische systemen aan te sturen.

Stefan Behnel gaf een presentatie over het schrijven van Cython code. In een live demo toonde hij hoe Cython met type annotations flinke snelheidswinst boekt bij cpu-intensieve berekeningen. Dit komt doordat de Cython compiler aan de hand van de annotations weet welk type data een variabele bevat en hiervoor de overeenkomende C-type kan selecteren. De syntax zal niet bij iedereen in de smaak vallen, maar voor intensieve code die zo snel mogelijk moet draaien kan een module herschrijven naar Cython zeker een uitkomst bieden.

Avond Onze fieldmanager Kelly kwam woensdagavond langs om gezellig met ons te dineren. Van tevoren had ze een restaurant geboekt, een Trattoria in het centrum van Karlsruhe. Daar zou je vast wel goed moeten kunnen eten, dachten we van tevoren. Nou, dat kon zeker. Het bleek een behoorlijk chique restaurant... Het eten en de wijn smaakten dan ook voortreffelijk! Naderhand doken we nog ergens een leuke kroeg in om na te praten over wat de dag gebracht had, onder het genot van een aantal Duitse biertjes.

Donderdag Na een gezellige avond was vroeg opstaan niet voor iedereen even makkelijk. Het goed verzorgde ontbijt in het hotel maakte veel goed. Daarna was het vlot op pad om nog op tijd te zijn voor de keynote spreker van de dag. Deze kwam van Wes McKinney, schrijver van de library Pandas die veel populariteit geniet onder de wetenschappelijke en analytische tak van Python gebruikers. Omdat de grote zaal vol was, volgden we zijn praatje via een beamer in een andere zaal. maar omdat iedereen op hetzelfde WIFI-netwerk zat, was de verbinding helaas nogal instabiel. Het viel ons wel op dat hij eigenlijk vooral de levensloop van Pandas beschreef, terwijl we juist hadden gehoopt op een echt Python-praatje.

In een interessante talk ging Uwe Korn in op het benutten van de mogelijkheden die Apache Arrow biedt. Dankzij dit data-format, en de door Uwe geschreven library Fletcher, wordt het mogelijk om gegevens uit het Java Virtual Machine geheugen te benaderen vanuit Pandas. Het mooie hiervan is dat er met de data gerekend kan worden zonder dat deze in de Python interpreter geladen dient te worden.

Jonathan Oberländer behandelde een curieus item genaamd codegolfing. Doel hierbij is om bepaalde code te herschrijven in zo weinig mogelijk karakters, iets waar we in onze dagelijks werk nauwelijks mee bezig zijn, maar wat tot grappige en nuttige inzichten in het functioneren van de taal kan leiden. Zo toonde hij stap voor stap hoe je de code:

for i in range(1, 101): if i % 15 == 0: print('FizzBuzz') elif i % 3 == 0: print('Fizz') elif i % 5 == 0: print('Buzz') else: print(i)

kunt herschrijven tot:

i=0;exec("print(i%3//2'Fizz'+i%5//4'Buzz'or-~i);i+=1;"*100)

Hierbij wordt gebruik gemaakt van lazy boolean evaluation om een getal uit te printen in plaats van de “falsy” lege string. Daarnaast wordt door integer division het resultaat naar beneden wordt afgerond zodat er 0 of 1 keer een woord wordt uitgeprint. Kroonstuk is de negatieve waarde van een bitwise Not te nemen, waardoor hij nog 1 karakter uitspaart ten opzichte van or i+1.

Vrijdag Justina Petraityte gaf een talk over het bouwen van een chatbot die complexe gesprekken aankan door middel van Natural Language Processing. Met een goed gestructureerd verhaal vertelde ze hoe het Open Source product waar ze aan werkt, Rasa, is opgebouwd, welke technieken ze gebruiken, wat je ermee kunt en voor welke problemen ze nog geen goede oplossing hebben bedacht. Rasa bestaat uit verschillende opzichzelfstaande delen, waardoor je enorm veel vrijheid hebt bij het implementeren van een eigen toepassing. Zo kun je alleen de core gebruiken als je zelf al iets hebt voor Natural Language Understanding en Natural Language Generation. De core werkt op basis van intents waarmee bepaald wordt wat er van de chatbot gevraagd wordt. Één van de grootste problemen met intents is dat het bijzonder moeilijk is om meerdere intents uit een enkele zin te halen. Rasa heeft dat probleem echter recentelijk opgelost. Met een interessante demo, waarin daadwerkelijk een chatbot gebouwd werd, liet ze zien hoe makkelijk Rasa het maakt om zelf te experimenteren met conversational AI.e

Na deze talk werd het tijd de Autobahn te trotseren richting Nederland en konden we terugkijken op een geslaagde conferentie. We zijn zeker geïnspireerd door de talks (en het vele gebabbel met elkaar).