25 februari 2020, door Michael Schilling

M4M hackathons 2019

In een jaar tijd tien hackathons organiseren. Het vergt wat tijd en creativiteit, maar het levert veel op. Wat hebben we geleerd en hoe wordt dit toegepast in de praktijk?

Samenwerken, kennis delen, het verkennen van nieuwe technologieën en creatieve ideeën bedenken voor ‘interessante’ vraagstukken. Twee collega’s namen het heft in handen en organiseerden vorig jaar maar liefst tien hackathons waarin dit centraal stond. De hackathons leverden veel nieuwe inzichten en verrassende resultaten op.

Tien hackathons, tien thema's

Er gebeurt tegenwoordig zoveel interessants binnen ons vakgebied dat het kiezen van tien thema’s nogal een uitdaging was. Technologieën als machine learning en Google assistant mochten zeker niet ontbreken. Maar ook het maken van een web crawler kwam op de agenda.

Dit zijn de onderwerpen en onze learnings:

1. Flutter

Flutter is een relatief nieuwe tool van Google. Met Flutter kun je op basis van één codebase een applicatie bouwen die zowel geschikt is voor Android als iOS.

We verwachten dat Flutter in de toekomst zomaar eens een belangrijke rol zou kunnen gaan spelen bij het ontwikkelen van apps. Daarom zijn we tijdens deze hackathon verder in de mogelijkheden van Flutter gedoken. We hebben gekeken of we met Flutter een social feed kunnen maken met data afkomstig van Twitter. We testten hierbij de moeilijkheidsgraad van het ophalen van data en de presentatiemogelijkheden. Het resultaat is een social wall waarin alle tweets met een bepaalde hashtag getoond worden. Ongepaste tweets of woorden kun je uitsluiten. Dit maakt een social wall erg geschikt voor commerciële doeleinden, bijvoorbeeld in bedrijven of op events. Met Flutter kan zo’n wall ontwikkeld worden voor verschillende devices zoals telefoon, tv en tablet.

Afbeelding

2. ML Kit & TensorFlow

Tijdens de machine learning hackathon hebben wij kennisgemaakt met twee handige tools van Google: ML Kit en TensorFlow. In feite zijn dit kant en klare bibliotheken waarmee machine learning modellen gemaakt en getraind kunnen worden. Met TensorFlow kun je bijvoorbeeld een model trainen die, aan de hand van een foto, planten herkent. Het trainen gebeurt door het model te voeren met foto’s (duizenden), waarbij je bij iedere foto aangeeft wat voor soort plant of bloem het is. Wanneer het model getraind is, kun je ook een foto voorhouden die nog niet eerder gezien is, het model bepaalt dan zelf wat voor soort plant het is.

ML Kit is het framework hier omheen. Je kunt ML Kit in je iOS of Android app opnemen en vervolgens kun je een getraind model (TensorFlow) inladen en gebruiken.

De opdracht: Maak een programma waarmee objecten uit een afbeelding worden herkend. Een van de demo’s liet zien hoe je Google’s Cloud Vision API kan gebruiken om bekende gebouwen uit een foto te halen. Deze techniek zou je bijvoorbeeld kunnen inzetten om kunstobjecten van een museum automatisch te categoriseren.

Een tweede leuke toepassing was het raadplegen van Google’s Cloud Natural Language API waarmee je een sentiment uit een zin of tekst kan halen. Deze techniek kan gebruikt worden om te achterhalen of een review van bijvoorbeeld een restaurant, positief of negatief is.

3. Web Crawlers and Web Scrapers (robots)

Google is misschien wel een van de meest bekende bots. Dagelijks raadpleegt de bot miljarden websites om zo de Google zoekmachine up-to-date te kunnen houden.

Onze jongens bouwden ieder een eigen bot met een programmeertaal naar keuze. Van een bot om uit het menu van een restaurant de vegetarische gerechten te vissen tot een bot die door alle huurwoningsites opzoek gaat naar een woonruimte in Zwolle. Aan creativiteit geen gebrek.

De programmeertaal Python is in onze ogen een van de beste talen om een bot mee te bouwen.

Afbeelding

4. Kroep’n scoreboard

Op kantoor wordt er regelmatig een fanatiek potje tafelvoetbal gespeeld. Er geldt slechts één belangrijke regel: verlies je met 10-0, dan moet je onder de tafel door kruipen (kroep’n). Het ontbrak nog aan een mooi scoreboard waarop dit bijgehouden kon worden. Tijdens deze Hackathon bouwden wij een generiek scoreboard waarop je aan spelers punten toe kunt kennen. Het scoreboard wordt daarna automatisch geüpdatet. De tools die we hebben gebruikt zijn HTML/CSS/JavaScript en Angular. Omdat we er nog geen genoeg van hadden, hebben ook nog een leuke Chromecast integratie en Google Assistant ingebouwd. Later hebben wij het systeem nog uitgebreid met Slack ondersteuning.

Afbeelding

5. Google Assistant

Onze allereerste voice app dateert alweer uit 2017. Voor de fun maakten we een voice app waarmee we via spraak de slagboom bij de parkeerplaats konden openen. De Move4Mobile Gate app was een feit.

Tegenwoordig spreekt de slimme assistent van Google ook Nederlands. Dit zal ervoor zorgen dat er steeds meer gebruik van Google Assistant gemaakt gaat worden. Wij zien de vraag naar een voice functionaliteit in apps dan ook stijgen.

Eind vorig jaar hebben wij samen met Timing Uitzendbureau de Timing Google Assistant app ontwikkeld. Deze assistant app informeert gebruikers over de nieuwe Wet Arbeidsmarkt in Balans (WAB), die begin van dit jaar in werking trad. Een leuke feature van de app is dat je een quiz kunt spelen om je kennis over de WAB te testen.

Tijdens de Google Assistant hackathon zijn er weer verschillende creatieve voice ideeën uitgewerkt waarmee wij ons nog meer hebben gespecialiseerd op dit gebied.
We maakten o.a.:
* een assistant app om je banksaldo op te vragen,
* een spraak app om kenteken informatie op te vragen,
* het spelletje master mind voor op je Google Assistant Smart Display.

Deze verschillende demo’s raken verschillende (nieuwe) technieken van Google Assistant, zoals Smart Home (denk aan een slimme wasmachine) en HTML Canvas (waarmee je letterlijk alles op een Smart Display scherm kunt tekenen). Het juist toepassen van de technieken is een voorwaarde om een professionele Google Assistant app te kunnen maken.

Afbeelding

6. Multiplayer games

Er wordt heel wat gegamed onder onze collega’s. Multiplayer games zijn ons dan ook niet vreemd. Denk bijvoorbeeld aan een potje 1-tegen-1 tennis, waarbij iedere speler vanaf zijn eigen PC of mobiel speelt. Om ervoor te zorgen dat iedere speler de tennisbal op hetzelfde moment op dezelfde plek op het scherm ziet, heb je een game server nodig. Vertraging in het spel is natuurlijk uit den boze.

Tijdens deze hackathon ontwikkelden we in drie teams een multiplayer game van de spelletjes Pong, Frogger en Maze. Wij maakten hiervoor gebruik van Firebase Realtime Database (Google) om over een snelle game server te beschikken.

7. Arduino en IoT

Het ontwikkelen van software is onze core business. Toch spreekt hardware (IoT) ons ook erg aan. En voor het ontwikkelen van software voor IoT oplossingen is een beetje kennis van de hardware enorm handig. Het werd dus tijd om dit verder te gaan verkennen.

Naar schatting zijn er op dit moment meer dan 26 miljard apparaten met het internet verbonden, van telefoons, wasmachines en lampen tot auto’s. Er wordt hard gewerkt om de wereld slimmer te maken. Met de tools die wij hebben ontwikkeld tijdens deze hackathon werken we hier een heel klein beetje aan mee.

Arduino is een open source platform die het mogelijk maakt om apparaten en objecten te ontwikkelen die reageren op hun omgeving door middel van digitale en analoge inputsignalen. Schakelaars, lichtsensoren, bewegingsmeters en temperatuursensoren, maar ook commando’s afkomstig van het internet geven de input waarmee lampen, motoren en beeldschermen aangestuurd kunnen worden.

Wij hebben onder andere gebruik gemaakt van een LCD-scherm om tekst op te tonen. De zichtbare tekst kan beïnvloed worden door het kantelen van de meetopstelling. Ook hebben wij geëxperimenteerd met verschillende sensoren om de snelheid van een bewegend object te meten. Je weet maar nooit wanneer dat van pas komt, misschien om de snelheid van de bal te registreren tijdens een potje tafelvoetbal…;)

Afbeelding

8. Go Python

Iedere programmeertaal heeft zijn eigen unieke eigenschappen. Bij Move4Mobile programmeren we met Swift (iOS), Kotlin (Android), Java/PHP (backend) en JavaScript (frontend). Vanuit de wens om eens een andere programmeertaal te proberen, zijn we tijdens deze hackathon de programmeertalen Python en Go gaan verkennen. Python staat net als JavaScript, Swift en Java in de top tien programmeertalen. Go is een programmeertaal, die je kunt vergelijk met C en C++.

De opdracht bestond uit het bouwen en publiceren van een data service (REST) met Go en Python.

Na deze hackathon zijn wij erachter gekomen dat zowel Go als Python, een mooie aanvulling zouden zijn op onze bestaande toolkit.

9. GraphQL

GraphQL is een moderne querytaal die flink aan het stijgen is in populariteit. GitHub en Facebook zijn twee grote namen die een GraphQL dataservice beschikbaar stellen. Wanneer je zelf een app wilt bouwen en data van Facebook of GitHub wilt gebruiken, dan gaat dat via de querytaal GraphQL.

Het grote voordeel van GraphQL is dat de cliënt (app) in de lead is om te bepalen welke data deze wenst te ontvangen. Een voorbeeld: je kunt de server vragen om gegevens van een contactpersoon (voornaam, achternaam en leeftijd) en zijn of haar actieve rollen (omschrijving van de rol). Vervolgens krijg je alles in een enkel resultaat terug van de server (en niks meer of minder), wat veel efficiënter is.

Tijdens de hackathon hebben we een GraphQL API gebouwd. Het is relatief makkelijk en stelt ons in staat om deze extra mogelijkheid van data ontsluiting toe te passen in apps voor klanten. Het levert een enorme performance boost op wanneer je alleen de data op kan halen die je nodig hebt.

GraphQL is nog lang niet zo populair als REST. En dat zorgt ervoor dat heel veel developers redenen hebben om er nog even mee te wachten tot het zich bewezen heeft.

10. 24-uurs hackathon - One player to rule them all

Negen hackathons gingen vooraf aan deze 24-uurs hackathon. Alle opgedane kennis moest nu in de praktijk gebracht worden. We sloten ons 24-uur op in een chalet op de Veluwe, om aan een gave opdracht te werken.

De opdracht: Bouw een nieuw soort muziekspeler die muziek kan afspelen van verschillende streaming diensten. 12 ontwikkelaars, verdeeld in twee groepen, gingen de uitdaging aan. 24 uur later werd er een geweldig prototype gepresenteerd van The Party Player.

Voor de geeks onder ons: er is gebruik gemaakt van Google Cloud (Kubernetes, Cloud Functions, Firebase) om de playlist realtime te synchroniseren naar alle cliënts. Er werd geprogrammeerd in Kotlin, Java, Swift, Python, Go en PHP. Tracks kunnen worden gezocht en toegevoegd via diverse cliënt apps (Android, iOS, Website). Het is mogelijk om liedjes te up- en downvoten. De player kan geconnect worden met Chromecast om de playlist zichtbaar te maken tijdens een event. Het aanbod van songs is afkomstig van Spotify, YouTube en eigen MP3-bestanden. Deze Party Player biedt zeker potentie maar we gaan hem eerst grondig testen tijdens onze vrimibo’s.

Afbeelding

We zijn tien hackathons en heel veel nieuwe inzichten verder. Dit betekent niet dat we het hierbij laten. De ontwikkelingen gaan razendsnel en wij zijn erop gebrand onze klanten te helpen bij het ontwikkelen van innovatieve mobiele oplossingen. Het verkennen van nieuwe technologieën blijft daarom hoog op onze agenda staan.