Dennis Verheijen
13 April 2017

Dennis Verheijen is softwaredesigner bij technologiebedrijf Sioux. Vanaf 2010 heeft hij gewerkt aan uiteenlopende multidisciplinaire projecten, van billboardprinters tot elektronenmicroscopen en home automation-apps. Sinds een jaar is hij gedetacheerd bij Vecos Europe in Eindhoven. Daar werkt hij aan Releezme, een cloudgebaseerd lockermanagementsysteem voor onder meer kantoren, scholen en ziekenhuizen.

Het idee achter de slimme lockers van het Eindhovense Vecos Europe is simpel: alle kluisjes in een gebouw worden via internet verbonden met een cloudomgeving. Gebruikers kunnen via een app op hun smartphone of via hun pasje op een lokale terminal lockers aanvragen, terugvinden, openen en vrijgeven. Gebouwbeheerders en conciërges kunnen via de website geselecteerde (groepen) gebruikers rechten geven voor specifieke kluisjes en automatisch gebruikers en pasnummers importeren uit hun eigen hr-systeem. Wanneer lockers langere tijd niet worden gebruikt, stuurt het Releezme-systeem een vriendelijke reminder om het kluisje vrij te geven.

Aan al deze functionaliteit werken we met een ontwikkelteam van drie engineers en een productowner. We nemen zowel de softwareontwikkeling als het operationele beheer voor onze rekening en we hebben regelmatig rechtstreeks contact met Releezme-eindgebruikers. In deze werkomgeving gaan vrijheid en verantwoordelijkheid hand in hand: je merkt direct wat de impact is van je eigen inbreng in het systeem. Dat is een belangrijke drijfveer voor mij.

Sioux Dennis Verheijen 01

Mijn vorige Sioux-opdracht voor de Phenom-elektronenmicroscoop had een heel ander karakter. Het team bestond uit meer dan vijftien engineers uit diverse disciplines (waaronder software, elektronica en fysica). De groep eindgebruikers was kleiner dan bij mijn huidige project maar veel gespecialiseerder. Het applicatiedomein leidde vaak tot erg interessante maar ook abstracte analyses. Beide opdrachten hebben daarmee hun eigen charmes én persoonlijke groeimogelijkheden. Deze variëteit is voor mij ook een goede motivator.

Mijn werkzaamheden bij Vecos zijn erg veelzijdig: ik ben bezig met de typische lifecycle van technische software maar voer geregeld ook remote software-installaties uit aan de andere kant van de wereld. Ook houden we onszelf up-to-date met betrekking tot security en privacy voor het internet of things, automatiseren we deployments naar de cloud en denken we actief mee met salesmensen over nieuwe features.

Maandag: Hacker in de cloud

De week begint met een sprintmeeting waarin het ontwikkelteam samen met de architect en r&d-manager de afgeronde en openstaande taken bespreekt. Ik laat een korte demo zien van mijn resultaat van de afgelopen week. Op de website kunnen gebruikers nu lockertoewijzingen in bulk uitvoeren, door input rechtstreeks uit een csv-bestand te importeren. Dit gaat uren typewerk schelen voor klanten die vanaf een bestaand systeem migreren naar Releezme. De productowner meldt dat een grote Zweedse gebruiker (met meer dan zesduizend lockers) technische problemen op het kantoornetwerk heeft gehad waardoor ook de connectie van de lockers naar de cloud tijdelijk in de war is geraakt. Dit valt in mijn expertisegebied en ik krijg de taak om het issue te analyseren.

Later die dag komt er een ethische hacker op intake. Releezme is ontworpen met security en dataprivacy hoog in het vaandel. Deze expert gaat onderzoeken of onze cloudomgeving daadwerkelijk zo veilig is als we voor ogen hebben. Tijdens de intake spreken we af welke websites, Rest-api’s en servers we onder de loep nemen. We concluderen dat er een aparte testomgeving nodig is om klanten niet te verstoren. Na de intake log ik meteen in op de Microsoft Azure-portal en begin ik duplicaten van al onze services en websites te configureren.

Vecos locker telefoon
Via een app op hun smartphone kunnen gebruikers Vecos-lockers aanvragen, terugvinden, openen en vrijgeven.

Dinsdag: Weggewaaide ballon

De ochtend besteed ik aan het verder inrichten van de testomgeving voor de security-audit. Bij de koffieautomaat leek het wel grappig om het dummy-account ‘Knibbel Knabbel Kluisje’ te noemen, maar eenmaal weer serieus aan m’n bureau kies ik toch maar een andere naam. Nadat ik mijn collega Rolf heb verzocht om de nieuwe omgeving te reviewen, begin ik aan de analyse van het connectie-issue in Zweden.

De slimme sloten van Vecos zijn daar op locatie verbonden met een zogeheten Locker Bank Controller (LBC), die via TCP/IP verbinding maakt met de cloudomgeving. In de cloud draaien meerdere services die elk een deel van de berichten afhandelen van en naar de tienduizenden kluisjes van alle aangesloten klanten. Het correct administreren van alle juiste lijntjes voor al deze connecties noemen we binnen het team informeel ‘het vasthouden van de ballonnetjes’. En in dit geval was er per ongeluk een ballon weggewaaid. In de logs en de relevante servercode vind ik uiteindelijk een uitzonderingssituatie die kan optreden bij netwerkproblemen zoals de Zweedse klant die ervaarde.

Woensdag: Nacht in Australië

Als een ware Rietveld heb ik in drie kleuren op anderhalve vierkante meter whiteboard mijn oplossingsvoorstel gevisualiseerd voor het ballonnen-issue. Er zitten wat tricky onderdelen in omdat er duizenden connecties tegelijkertijd actief moeten kunnen zijn zonder dat er opstoppingen ontstaan. Ik bespreek mijn voorstel met de systeemarchitect en collega Rolf. Na enkele kleine aanpassingen is iedereen akkoord en begin ik aan de detailuitwerking.

In de middag komt de accountmanager van Vecos de r&d-kamer binnen met een vraag over anticlaiming. Dit is een relatief nieuw mechanisme in Releezme dat lockers automatisch vrij kan geven wanneer ze een tijdje niet zijn geopend. Een Australische klant met drie grote kantoorgebouwen wil zijn anticlaiming-instellingen wijzigen op een manier die we pas recentelijk mogelijk hebben gemaakt en die nog niet beschikbaar is in de laatste productierelease. We halen de r&d-manager erbij en besluiten een hotfix te maken voor deze situatie. De rest van de middag zijn Rolf en ik al pair-programmerend bezig met het schrijven en testen van deze fix. Gelukkig hebben we een vpn-verbinding naar de lokale installatie in Melbourne (scheelt een paar uur vliegen). Omdat het daar midden in de nacht is, kunnen we de nieuwe versie ongestoord installeren.

Donderdag: Next generation

De dag begint goed met een ‘thank you’-e-mail uit Melbourne. Gerustgesteld zet ik m’n koptelefoon op en ga ik geconcentreerd verder met de Zweedse ballonnentaak. ’s Middags staat er nog een overleg gepland met twee Sioux-collega’s over een parallel project dat net is gestart. Sioux gaat ook de elektronica en embedded software ontwikkelen voor een nieuwe generatie Locker Bank Controller. Ik ben hier (nog) niet rechtstreeks bij betrokken, maar ik vind het wel erg leuk om zo’n embedded-traject van dichtbij mee te maken. Vanuit mijn kwaliteitsgevoel kan ik het niet laten alvast de dialoog te starten over hoe we straks de compatibiliteit gaan waarborgen tussen de oude en nieuwe LBC’s en de cloudomgeving – een interessant technisch gesprek maar voorlopig nog niet aan de orde.

Vrijdag: Bytes met houdbaarheidsdatum

Aan het einde van de ochtend heb ik Rolfs reviewcommentaar op mijn netwerkconnectietaak verwerkt en rol ik de nieuwe build 1.4.0.22 uit naar onze development-cloudomgeving. Vervolgens verander ik de 21 op de groene post-it aan de muur in een 22, als teken voor mijn testcollega dat hij aan de slag kan.

Voor mijn laatste taak deze week praat ik met de firmwareontwikkelaar van de Locker Bank Controllers. De LBC moet voortaan bij een badgescan kunnen tonen tot welke datum de locker nog van deze eigenaar is. Hiervoor dienen we een bestaand bericht in ons onderlinge protocol uit te breiden. We leggen in ons centrale protocoldefinitiebestand in detail vast hoe we de nieuwe data in rauwe bits en bytes gaan encoderen. Met een codegenerator genereer ik vanuit dit centrale bestand de C#-servercode om het bericht te serialiseren en de C-firmwarecode om het te deserialiseren. Hiermee voorkomen we dat onze interpretaties van de bits in het bericht gaan verschillen. Nu kunnen we ieder afzonderlijk werken aan ons deel van deze functionaliteit.

Tegen 17:00 uur halen we traditioneel zakjes chips uit de kantine om het weekend in te luiden. Ik typ de laatste regels code van deze week al krakend nog even in – erg toepasselijk om deze week te eindigen met een goede combinatie van bits en chips.

Edited by Nieke Roos