Tag Archive | swift

Postkantoor in je broekzak: de nieuwe PostNL app

image

Gebruik jij de nieuwe PostNL app al? Deze app is de aftrap van onze droom samen met PostNL: de toekomst van post bepalen. En daarom willen we er toch graag wat over bloggen, ook al staat het al een tijdje live.

image

De droom

Al voor de pitch van dit project droomden Taco en Chris over de toekomst van post. Zonder twijfel is het een wereld vol mogelijkheden. En dat vindt PostNL ook. PostNL bleek een heldere verrassende visie te hebben en hun plannen voor de toekomst van post maakten ons extra enthousiast. Aan het begin van dit project droomden we samen hardop van mooie tweets na de release. Zoals deze hierboven, want een postkantoor in je broekzak: dat is toch wel wat de ultieme post app zou moeten nastreven.

image

5 seconds of fame

De nieuwe PostNL app is een goed voorbeeld van de belangrijke overlap tussen ontwerp en techniek. De bedoeling van de app is namelijk vooral gebruiksgemak: als gebruiker wil je snel de informatie hebben die je nodig hebt. Dit betekent dat de app vaak niet langer open is dan een paar seconden. Je zou denken dat het dan niet zoveel voor hoeft te stellen, maar juist dit gegeven legt de lat een stuk hoger. Die paar seconden wil je je niet afvragen waar de informatie staat die je nodig hebt of moeten wachten tot informatie ingeladen is.

image

Onder water post bezorgen

Onder water blijkt het bezorgen van post in Nederland verrassend ingewikkeld. In de happy flow alleen al heb je ontzettend veel sporen. In de ene situatie moet het eerste adres vermeld worden, in de andere situatie het tweede, in weer een andere situatie mag de naam er niet op, terwijl dat in de andere cruciaal is, om maar een paar voorbeelden te noemen. En dan hebben we het nog niet eens over de unhappy flow. (En laat dat nou de flow zijn die we als Q minstens net zo belangrijk vinden.) De kunst is om deze complexiteit te verbergen voor de gebruiker. Dit project bestond dus voor een groot deel uit simpel maken wat onder water eigenlijk heel complex is. We zijn er trots op dat dat gelukt is in nauwe samenwerking met PostNL en de designers.

image

Techniek

We bouwden twee losse native apps voor iOS en Android. De iOS app bouwden we in Swift. Swift is nog vrij nieuw en nog redelijk instabiel, bleek helaas. Deze keuze was dus een technische uitdaging, maar we kunnen vol overtuiging zeggen dat we hier nog steeds achter staan. Apple staat er immers bekend om snel oude technieken af te schrijven. (Zoals USB-poorten.) Er komt dus een moment, waarschijnlijk eerder vroeger dan later, dat Apple Objective C apps niet meer toelaat, of minder mogelijkheden biedt. De instabiliteit van Swift wordt verbeterd met regelmatige updates, maar betekende nu nog veel compileertijd en crashes. Ook zijn er online nog weinig antwoorden te vinden over problemen waar je tijdens het bouwen tegenaan kunt lopen, en missen de al geschreven libraries die wel voor Objective C bestaan. Daarom hebben we die veel zelf geschreven en die delen we natuurlijk met de hele wereld. Hier, alsjeblieft en get your Swift on.

image

De vernieuwde PostNL app

Deze eerste versie legt de basis voor de toekomst van post. Naast bekende features als Track & Trace en een nauwe koppeling met de website biedt de nieuwe app features als inloggen en daarmee je data syncen, de handtekening zien van degene die voor je pakketje heeft getekend, pakketjes onthouden, zien welke pakketten je gaat ontvangen en je ziet welke pakketjes je ontvangen hebt. Verder kun je ermee herrouteren en dat herrouteren geeft ook weer een hoop opties: locatie, tijdslot en direct in de app betalen voor extraspeciale opties. En er zit nu een barcodescanner in. Weet je, probeer het zelf even uit!

image

De toekomst

Dit is de ultieme tweet waar we nog van dromen. Met de updates die blijven komen voor deze app, andere apps die we gaan integreren en alle andere plannen die we samen met PostNL hebben over de toekomst van post blijft die droom voor ons tastbaar. Dit is nog maar het begin!

iOS
Android

Subiet, een app voor de frequente treinreiziger

Je gaat naar huis, zoals elke dag, maar je bent nog net niet zo’n nerd dat je alle treintijden uit je hoofd weet. Wie hou je voor de gek? Natuurlijk weet je ze uit je hoofd, maar storingen die weet je niet, dus je checkt toch gauw even of jouw trein vertrekt wanneer je denkt. Maar voordat jij je route hebt ingevoerd, is de trein die je wilde halen tóch op tijd vertrokken. De oplossing is hier. Subiet.

Brainstorm

Subiet is ooit begonnen als idee tijdens w00tcamp, samen met Oak & Morrow, uit frustratie van de frequente treinreiziger met de bestaande OV-apps. Het was nu hoog tijd om dat idee om te zetten naar een serieuze brainstormsessie. We wilden een app bouwen die alle (vooral ook onze eigen) frustraties voor de frequente treinreiziger wegneemt. Want bovenstaande situatie hadden we allemaal te vaak meegemaakt. Zo onnodig ook. Waarom, als je elke dag dezelfde routes nodig hebt, moet je deze elke keer opnieuw invoeren? Je wilt gewoon nu weten of jouw trein gaat en zo niet wanneer dan wel. Subiet dus, niet nadat je vijf stappen verder bent. Tijdens de jumpstart is besloten om voor de eerste versie te beginnen met advies voor de treinen. De NS API is namelijk erg compleet en dus een goede start om in korte tijd een leuke en vooral nuttige app te kunnen bouwen. Deze iOS app hebben we gebouwd in Swift.

Subiet

In de app kun je je vaste trajecten invoeren. Zo kun je in een oogopslag in je gepersonaliseerde blokjes zien wanneer je trein precies vertrekt en of je je aansluiting haalt. Dit is dus een app voor de reiziger die zijn traject en de stations kent. Je weet zelf wel welke route het handigst is en of je voor die overstap moet rennen of dat die overstaptijd nog wel iets korter kan. Je weet vaak ook dat er meerdere wegen naar Rome leiden en doordat je ze direct naast elkaar ziet hoef je dus nooit meer te gokken welke vandaag sneller is. Je kunt je trajecten ook combineren tot complete reizen. Doordat je zelf je vaste trajecten toevoegt, direct overzicht hebt op de eerstvolgende trein op al je trajecten, complete treinreizen combineert, je eigen overstaptijden bepaalt, alle volgende vertrektijden kunt bekijken en tijd- en perronswijzigingen ziet heb je altijd subiet de beste treinreis.

En nu?

Is het subiet tijd dat je Subiet downloadt. Waarom? Nu kan dat nog gratis. Oja, wie weet hangen we er nog andere OV-opties in, dus kijk uit naar eventuele updates. In de tussentijd is al je commentaar welkom. En nu ga ik gauw m’n trein halen.

Functional Programming in Swift workshops

image

Functioneel programmeren en Swift. Beide heul erg hot en happening. Sommige Q’ers werken er allang mee, maar zo’n beetje heel Q wilde toch wel meer weten. Dus gaf ChrisE twee workshops. Chris? Nee, ChrisE. Maar Chris was er ook bij. Niet te verwarren met Christiaan. (Volg jij de Chrissen nog? Nee? Dat kan wel: volg Chris, ChrisE en Christiaan.)


image

Chris, E dus, is oud-Q’er en schreef samen met Florian Kugler en Wouter Swierstra het boek Functional Programming in Swift. ChrisE kwam speciaal voor ons overgevlogen uit Berlijn. Dat was niet alleen leerzaam, maar ook ouderwets gezellig.

Q42 mocht van ChrisE’s talenten gebruik maken tot en met 2007. Hierna ging hij de wijde wereld in. Inmiddels woont hij in Berlijn en werkt hij voor zichzelf. Je kent hem misschien van objc.io, Deckset, UIKonf of z’n blog. Of van zijn kersverse boek dus, wat voor ons de aanleiding was hem uit te nodigen.

image

Swift is swift

Swift werd op WWDC 2014 door Apple bekend gemaakt. Het is dé nieuwe programmeertaal voor iOS. De opvolger dus van Objective-C. Wat vooral interessant is, is de swiftness van Swift in populariteit. Er wordt wel vaker een nieuwe programmeertaal bekend gemaakt, maar hoe snel Swift is opgenomen door programmeurs is opvallend. In één kwartaal sprong Swift van plek 68 naar plek 22 in de RedMonk Programming Language Rankings. Dat is een sprong van 46 plekken! 46! Deze lijst kent gemiddeld vooral stijgingen van 5 tot 10 plekken. RedMonk voorspelt dan ook dat Swift de volgende keer in de top 20 van programmeertalen zal staan. Holy moly!

image

Functioneel programmeren

Ook hier is Swift snel opgepakt en we bouwen er al verschillende apps mee. Neemt niet weg dat je er nog meer over kunt leren. Maar de workshop ging niet eens zozeer om Swift, vooral om functioneel programmeren. Iets wat een paar Q’ers al jaren fanatiek in de hobbysfeer doen en ook steeds meer toepassen in ons dagelijks werk. En waarmee ze ons inmiddels vrijwel allemaal razend benieuwd hadden gemaakt. Eén workshop was dan ook niet genoeg. Dat moesten er dus twee worden.

image

ChrisE: “Functioneel programmeren is heel veel werken met types. Dat is waarom ik Swift zo cool vind. Opeens konden we op iOS met types gaan werken. Met functies. En dingen als generics. Als het compilet dan werkt het.”

Als je meer wilt weten over functioneel programmeren in Swift, lees dan ChrisE’s boek, haal hem over ook bij jou een workshop te geven of bekijk dit filmpje:

Of doe het alledrie, dat hebben wij gedaan. :-)