Freaky Friday: hackathon met FocusCura

Twee teamleden van ons FocusCura-team kwamen met het idee om met het team een hackathon te houden. Onder de naam ‘Freaky Friday’ gingen we van start!

Infi is betrokken bij de ontwikkeling van beeldbelapplicatie cContact. Deze applicatie wordt door thuiszorgorganisaties en ziekenhuizen gebruikt om frequenter persoonlijk contact te hebben met cliënten via een videoverbinding. Twee teamleden kwamen met het idee om met dit team een hackathon te houden. Doel was om te experimenteren met nieuwe ideeën of technologieën, en vooral: om een leuke dag te hebben samen.

We gaven het de naam 'Freaky Friday' en gingen aan de slag. De ochtend begon met pitches, variërend van een datingapp voor omaatjes (werktitel ‘grandma-tinder’, afgekort als Grindr) tot het automatisch herkennen van emoties tijdens het beeldbelgesprek. Uiteindelijk hebben we twee hoofdprojecten gekozen: ‘Electron’ en ‘Siri-integratie’.

Electron

CContact heeft sinds kort een webapplicatie. Zo hoeven gebruikers niet alleen met onze Android- en iOS-apps te bellen, maar kunnen dit ook via een computer. Vooral binnen de ziekenhuizen en praktijken was hier behoefte aan. Maar om te kunnen bellen vanuit een browser zijn er wel een paar hordes om te overwinnen. Bijvoorbeeld:

  • het werkt niet met Internet Explorer en Safari, omdat die webRTC niet ondersteunen. De gebruiker moet dus Chrome of Firefox gebruiken.
  • gebruikers moeten de website toestemming geven om de webcam en microfoon te mogen gebruiken.
Daarnaast is het zo dat een webapplicatie niet zo ‘zichtbaar’ is op een computer als een geïnstalleerd programma; het heeft geen eigen icoon. 

Electron lost deze problemen op door de webapplicatie samen met een versie van Chrome te verpakken als één programma. Dat kun je dan installeren op je computer en werkt dan zoals ieder ander programma. Bovendien heeft dat programma meteen toegang tot de camera en microfoon zonder de gebruiker om extra toestemming te hoeven vragen. Hiermee zijn de belangrijkste knelpunten van de webapplicatie dus overwonnen.

We gingen aan de slag en al snel hadden we de eerste resultaten. Voor de Mac werkte het vlotjes: we hadden snel een volledige applicatie draaiend. Voor de PC ging het goed op onze ontwikkel-omgeving, maar was het tricky om een lokale database mee te leveren in de productie-omgeving. Daar moeten we dus nog verder aan schaven. In deze video laten we zien hoe het werkt:

Siri-integratie

Voor Freaky Friday leek het ons ook een leuk idee om een cContact gesprek te kunnen starten via Siri. Hiervoor moesten we ten eerste de cContact app integreren met Siri (zie de developer documentatie van Apple voor meer info). Om Siri vervolgens te laten communiceren met onze app moesten we een IntentExtension implementeren in onze app. Zo’n IntentExtension is een soort ingangspunt binnen je app die signalen kan ontvangen van Siri. SiriKit praat tegen dit ingangspunt wanneer een gebruiker een commando geeft dat bestemd is voor de app.

De gebruiker kan een gesprek starten door tegen Siri te zeggen: ‘Start a video call with “Dirk” using cContact’. Siri interpreteert dit en zal een signaal creëren voor het ingangspunt van de app. De app vangt het signaal op en start nu een fase die de ‘resolve phase’ heet. In die fase probeert de app de informatie te vinden die nodig is. Als er niet genoeg informatie beschikbaar is (bijvoorbeeld wie er gebeld moet worden), dan kan de app Siri een vervolgvraag laten stellen aan de gebruiker (bijvoorbeeld “Wie moet er gebeld worden?”).

Op deze manier kan onze app alle informatie inwinnen die hij nodig heeft. De app geeft uiteindelijk aan Siri een seintje dat hij alle benodigde informatie heeft en dus opgestart kan worden. Op dat moment wordt het beeldbelgesprek gestart. Voor meer informatie over hoe dit werkt kun je de dev-pagina 'Resolving and handling intents' lezen.

Ook dit project ging redelijk soepel: het is ons namelijk gelukt om bellen via Siri te implementeren! Er moeten wel nog een paar technische verbeteringen gemaakt worden om dit proces voor gebruikers te verbeteren. In deze video zie je in ieder geval een werkend Siri-gesprek vanaf de simulator naar een telefoon:

Losse fixes

Naast deze twee hoofdprojecten hebben we ook de gelegenheid aangegrepen om wat side-projects op te pakken. Zo hebben twee teamleden de tooling voor versiebeheer, continuous integration en deployment gemigreerd van lokale Infi-servers naar AWS (Amazon Web Services). Hierdoor komt volledige controle over deze systemen bij FocusCura te liggen, waardoor ze deze zelf kunnen beheren.

Ikzelf heb verbeteringen gemaakt aan de VoiceOver ondersteuning van de cContact app. Voice-over is een iOS-functie die alle onderdelen van de applicatie voorleest, zodat deze beter bruikbaar is voor slechtzienden. In de iOS-app hadden niet alle knoppen het juiste label waardoor VoiceOver deze niet altijd goed kon voorlezen. Niet gehinderd door enige kennis van Objective-C (ik ben namelijk scrum master en tester), ben ik erin geslaagd op alle knoppen correct te labelen in alle ondersteunde talen én dit te committen naar Git (met de hulp van één van de developers). Daarnaast heb ik veel geleerd over toegankelijkheid van iOS-apps voor mensen met een beperking.

Het resultaat? Een cContact-app met VoiceOver die ook echt bruikbaar is: 

Nog een keertje doen?

De Freaky Friday was eigenlijk veel nuttiger dan we vooraf hadden voorzien. We waren van plan om een dagje te freewheelen en vrijblijvend nieuwe dingen uit te proberen. Maar de eindresultaten van de verschillende projecten voegden zonder uitzondering waarde aan het project toe en brachten nieuwe inzichten en ideeën. Zeker voor herhaling vatbaar dus!

[Dirk is project- en scrum master bij Infi]

We zoeken een ervaren developer!

› Wil jij je hersens bij ons laten kraken?

Wil je iets waarmaken met Infi?

Wil jij een eigen webapplicatie of mobiele app waarmee jij het bij anderen maakt?

Waargemaakt door de nerds van Infi.
Nerds met liefde voor softwareontwikkeling en die kunnen communiceren. En heel belangrijk: wat we doen, doen we met veel lol!

Wij willen het fixen. Laat jij van je horen?

Voor wie heb je een vraag?