Friday 20 April 2012

Nu: Open Source

De source van SnelTrein is vanaf nu te bekijken, downloaden en aan te passen via https://github.com/jtwaleson/SnelTrein

Tuesday 31 May 2011

Suggesties?

Heb je opmerkingen, complimenten of suggesties? Reageer op dit bericht om ze door te geven.

Cache: treintijden, ook zonder internet

Op drukke stations doet mijn internet het vaak niet, waarschijnlijk omdat er teveel smartphone-gebruikers op één plek zijn. Stel dat ik van Den Haag centraal naar Nijmegen wil reizen. Thuis doet mijn internet het gewoon, en krijg ik na het kiezen van een reis het volgende scherm te zien:



Ik weet nu welk spoor ik moet hebben sluit de applicatie. Op Utrecht stap ik uit, maar ik ben inmiddels vergeten naar welk spoor ik moet overstappen. En verschrikkelijk genoeg doet het internet het niet. Wanneer ik opnieuw de reis Den Haag Centraal - Nijmegen opzoek blijft het volgende scherm in beeld staan:


Dat is ook niet gek, want er kan geen verbinding met internet worden gemaakt. Op de achtergrond staan echter toch wat reizen, maar nu met een oranje (of rood) icoontje er naast. Als je nu de terug-knop gebruikt verdwijnt de dialoog en zie je het volgende scherm:


Houdbaarheid
De oranje icoontjes geven aan dat de informatie oud is. Groen: minder dan een minuut oud. Oranje: tussen de 1 en 5 minuten. Rood: tussen de 5 minuten en 3 uur. Na 3 uur worden de gegevens verwijderd.

Informatie direct opgehaald

Bij veel applicaties moet er eerst een vertrektijd gekozen worden voordat er treintijden worden opgezocht. Dit kost een aantal extra stappen, en doorgaans zoek ik treintijden op tussen een uur en 5 minuten voordat ik vertrek. Daarom werkt SnelTrein zo: als je je traject kiest (figuur 1a), begint de applicatie direct met het zoeken van vertrektijden vanaf dit moment (figuur 1b). Zodra deze geladen zijn verschijnen ze in beeld (figuur 1c).

1a - kies een traject

1b - er wordt gezocht met vertrektijd = nu

1c - geladen treintijden
Mocht de gebruiker toch op zoek zijn naar een andere vertrektijd, dan kan hij kiezen voor de knop bovenin, dan verschijnt de volgende dialoog (figuur 1d).


Instellingen
Eventueel kan via de instellingen (ga naar het start-scherm en gebruik de menu-knop) ingesteld worden dat er niet direct moet worden gezocht. In dat geval verschijnt de dialoog uit figuur 1d direct na het kiezen van een traject.

NS Api

In versie 0.2 ben ik overgestapt op de NS api die ik in maart 2011 heb ontdekt (zie mijn blog en Tweakers.net: ontwikkelaar verkrijgt toegang tot NS api voor treintijden). Voorheen gebruikte ik m.ns.nl die een gewone webpagina terugstuurde. Het omzetten van deze pagina in normale treintijden was nogal "dirty". Het kostte veel rekenkracht, kon slechts 1 reis tegelijk vinden en was nogal gevoelig: als de ns besloot om iets te veranderen aan de website zou het programma niet meer werken. Een API is handig omdat het de informatie gestructureerd aanbiedt. Het enige probleem is dat er maar 50.000 requests per dag gemaakt mogen worden, dus zodra er tussen de 5.000 en 10.000 gebruikers zijn ga ik me zorgen maken.

Locatie

In versie 0.2 heb ik locatiebepaling ingebouwd. Het programma zoekt in de ingebouwde lijst met stations naar de dichtsbijzijnde stations en toont er 3. De locatie wordt niet verkregen via GPS dat weliswaar heel precies is maar ook veel stroom kost en vertraagt. Ik gebruik het mobiele netwerk dat locaties levert door middel van triangulatie. Dit is minder precies, maar absoluut nauwkeurig genoeg om de dichtstbijzijnde stations te vinden. Het is bovendien erg snel.


Kleuren

Een bepaald traject (huis naar universiteit) reis ik heel veel. Als ik de treintijden hiervan zoek, wil ik in 1 oogopslag kunnen zien waar ik op moet klikken. Daarom heb ik twee functies gemaakt:

1 - Reizen worden gesortreerd op frequentie, zodat de meest gebruikte trajecten bovenaan staan.

2 - Reizen hebben een kleur, zie het voorbeeld hieronder

Begin

Lang ingedrukt houden

Er verschijnt een menu

De reis heeft nu een andere kleur