Camarillo weekupdate 2017-W04

Iets nieuws. Weekupdates.

Camarillo is nu een full-time bezigheid. Dat betekent dat we deze week behoorlijk wat hebben kunnen doen. Deze week lag de focus op onderzoek. Het jureringsgedeelte van Camarillo, dat we voor nu even “Judging” noemen, is op dit moment een excel-sheet. Dat heeft een hoop voordelen:

  • Het werkt offline
  • Het is bekende software, dus gemakkelijk in gebruik
  • Protocollen zijn eenvoudig op te maken
  • Het biedt allerlei handige standaarddingen, zoals printen en exporteren naar pdf
  • Het is robuust, de bugs zijn er uit

Echter, er kleven ook een aantal nadelen aan:

  • Het is relatief traag
  • Het is vrij eenvoudig om fouten te introduceren, door per ongeluk cellen te editen
  • Updates zijn lastig te verspreiden, er moet dan een nieuwe excel-sheet worden uitgestuurd
  • Realtime reageren op veranderingen in de wedstrijd is niet mogelijk

We zijn dus deze week begonnen met het onderzoeken of er een andere oplossing voor Judging is te bedenken. Daar is het volgende concept uitgerold

Camarillo zet hoog in op gebruikersgemak, dus Judging is daar geen uitzondering op. Links een lijst met deelnemers, onderverdeeld in groepen, zoals je die in Camarillo kunt indelen. Rechts het in te vullen juryformulier. Dit werkt voor het grootste deel precies hetzelfde als excel. Je kunt de pijltjestoetsen gebruiken om tussen cellen te navigeren. Ook wordt onderaan alles keurig opgeteld:

Onderaan aangekomen kan het formulier geprint worden en de volgende deelnemer worden getoond. Mocht een deelnemer zijn uitgevallen, dan wordt dit door de wedstrijdleiding in Camarillo geregistreerd. Als Judging verbonden is met internet, komen deze wijzigingen automatisch door. Er wordt dan gewaarschuwd dat de deelnemer is uitgevallen:

Uiteraard kan deze mededeling genegeerd worden. Het kan immers zomaar zo zijn dat de wedstrijdleiding iets verkeerds heeft ingevuld, of dat de deelnemer toch is komen opdagen en de update vanuit Camarillo ons (nog) niet bereikt heeft. Bijvoorbeeld omdat het internet even hapert.

Dit onderzoek is veelbelovend. Het was onze eerste kennismaking met een aantal nieuwe technieken (zie hieronder) en heeft goede inzichten opgeleverd in wat er echt nodig is tijdens het jureren. Binnenkort zullen we deze proef testdraaien bij een aantal rijverenigingen. De resultaten hiervan zullen direct terugvloeien in Judging. Een aantal speerpunten zijn de volgenden:

  • Gebruikersvriendelijke interface
  • Een duidelijk overzicht van het verloop van de wedstrijd
  • Direct updates van wijzigingen in het schema (inloop, uitloop, wijzigingen in volgorde, uitvallers)
  • Flexibiliteit in de data. Er moet altijd iets gewijzigd kunnen worden (naam, klasse)
  • Fouten oplossen. Als per ongeluk het formulier van iemand anders is ingevuld moet dit eenvoudig kunnen worden verholpen (wie heeft er niet ooit per ongeluk het verkeerde papiertje ingevuld?)
  • Offline software. Het moet zonder internet overal kunnen werken
  • Online toevoegingen. Heb je wel internet, dan heb je ook live updates en feedback vanuit Camarillo
  • Automatische updates bij veranderingen in de software en de formulieren

Technische praat

Bovenstaand concept is gebouwd in Inferno, een framework als React, maar met een heel aantal optimalisaties. Het hele zaakje draait in Electron, eigenlijk een browser in een doosje. Hierdoor kunnen we met webtechnieken een desktopapplicatie bouwen die draait op alle operating systems, zoals Windows, Mac OS en Linux. Deze technieken zorgen ervoor dat we snel kunnen itereren naar een goede oplossing.

De architectuur is gebaseerd op Redux, een heel heldere architectuur, dat zich terugbetaalt in makkelijk onderhoudbare code. Er is heel eenvoudig te bepalen welke onderdelen van de interface op welk moment geupdate worden doordat elke Action van een gebruiker een interne State update. Elk Component in de interface bepaalt vervolgens zelf of er iets gewijzigd moet worden. Dit resulteert software die enorm snel reageert en niet meer doet dan nodig is.