Ons hackathon project: BadgerBadgerBadger

10 september 2013 Inzichten /

Nee, we hebben geen html5 versie gemaakt van het welbekende BadgerBadgerBadger. We gingen tijdens de Hackathon de uitdaging aan om ons badge-systeem, nu enkel gebruikt als ‘sleutel’, te koppelen aan het sociale Foursquare gebeuren. Een uitdaging die echter een pak groter bleek dan we initieel dachten!

We wisten voor de hackathon dat er voor het badge systeem software beschikbaar was maar we hadden geen idee hoe 'open' of aanpasbaar die was. Dit was al onze eerste tegenslag: Een windows programma uit 2003, dat data opslaat in een beveiligde database. De beveiliging van de database bleek echter wel mee te vallen en al snel hadden we toegang tot die data.

Ondertussen hadden we nog een zijspoor gestart om alle communicatie tussen het programma en het hardware systeem op te vangen, om op die manier een eigen interface te maken. De data bleek helaas (of gelukkig?) geëncrypteerd te zijn. Waarschijnlijk konden we hierop ook wel verder werken, maar om de encryptie te breken, een volledig nieuwe interface te schrijven en dan nog de eigenlijke Foursquare integratie te voorzien was het waarschijnlijk iets te veel werk om binnen de 48uur klaar te zijn.

Nu we de data beschikbaar hadden stak het volgende probleem de kop op. De software laat slechts toe om elke 2 uur te synchroniseren met de hardware. Dit zou willen zeggen dat als mensen binnen komen met hun badge, er in het slechtste geval maar na 2 uur en check-in zou gebeuren op Foursquare. Onaanvaardbaar dus voor de toepassing die we gaan maken.

Die 2 uur was makkelijk terug vinden in de configuratie data van de database, maar het programma accepteerde enkel integers. Eén uur was nog steeds te veel tijd tussen het gebruik van de badge en de eigenlijk check-in... . Het programma liet gelukkig wel een manuele synchronisatie toe, misschien moesten we dus die synchronisatie proberen forceren?

Na wat overleg (en na ons ego opzij te hebben gezet ;)) beslissen we om de manuele synchronisatie elke 5 minuten te laten lopen via een autokey programma. Op deze manier kregen we toch elke 5 minuten de data binnen in de access database. Het enige wat dan nog moest gebeuren was de conversie van Access naar MySQL en dan deze in onze online database krijgen. De conversie doen we met vrije software dat we via de command line kunnen opstarten en dat de database omzet naar mysql. Met deze oplossingen kunnen we dus alles via commando opstarten, wat ervoor zorgt dat het allemaal in 1 'go' kan gebeuren en er minder vertraging is. We schreven hiervoor een .bat file (we zitten nog steeds op de windows machine met de badge software) en roepen die dus elke 5 minuten aan. Hieronder kan je het verloop zien:

Na deze hele opzet kwam dan het eigenlijke programmeer werk. We hebben het project in Silex  opgezet. De reden hiervoor is omdat de functionaliteit van het project relatief beperkt is en Silex ons toe laat snel dergelijke site te maken zonder veel setup werk. We hadden daarbij de volgende functionaliteit voor ogen:

  • Een gebruiker kan inloggen met zijn Wijs google account
  • De gebruiker geeft de toestemming om in zijn of haar naam in te checken op Foursquare
  • De gebruiker duidt aan op welke manier hij/zij wil inchecken (private, default of met Twitter post)
  • De gebruiker kan ook de locatie kiezen waar hij/zij altijd wil inchecken. Omdat we met enkele bedrijven onder hetzelfde dak zitten kunnen de andere collega's van die bedrijven hier ook gebruik van maken.
  • De check-in bij Foursquare gebeurt van zodra een gebruiker met de juiste permissies en settings te zien is in de database. Voor de Foursquare check-in gebruiken we een externe Foursquare PHP library.

Nadat dit alles voorzien was, vielen de overige puzzelstukjes mooi in elkaar. Als de gebruiker nu zijn badge gebruikt, en we de data in de MySQL database krijgen, kunnen we deze update zien door gebruik te maken van incron. Deze zal dan het eigenlijke Foursquare script oproepen waarin we alle nieuwe badge registraties ophalen en ze zo overlopen om (eventueel) in te checken.

Zoals jullie kunnen lezen kwam er heel wat meer werk bij kijken dan het initiële idee, maar dat maakt zo'n hackathon net leuk. Je komt, zoals in elk project wel problemen tegen, maar hier kan je helemaal zelf beslissen over de aanpak. Met natuurlijk het oog op een afgewerkt project tegen het einde van de deadline.

Wil je de volgende hackathon meedoen aan een uitdagend project, en ben je bereid om ook voor klanten de uitdaging aan te gaan om de beste oplossing te vinden? Dan zit je goed bij Wijs, want we zoeken nog enkele mensen om ons team te versterken. Neem gerust een kijkje tussen onze vacatures of kom eens langs voor een babbel over ons hackathon project. We staan altijd open voor suggesties of betere oplossingen! http://wijs.be/nl/vacatures

Bert Pattyn
Operations / ICT Support

Lees meer

Nieuwsbrief

Doe zoals meer dan 1700 marketing en design experts en ontvang maandelijks onze nieuwsbrief vol inzichten, tips en verrassende nieuwigheden.