16 feb. 2017

Programmeren op de Apple Watch

Serieus over gekke experimenten

De afgelopen jaren heb ik wel vaker gekke experimenten gedaan, maar deze keer wilde ik het echt tot het uiterste drijven: programmeren op een Apple Watch. Zou het mogelijk zijn om daadwerkelijk code te schrijven op zo'n klein apparaatje? Waarom zou je de moeite nemen? Dit bericht is een pleidooi voor gekke experimenten, en waarom jij het ook zou moeten proberen!

Een week geleden wisselde ik wat e-mails uit met mijn maat Niels, en vertelde hem over dit idee om een iPhone te gebruiken om werk gedaan te krijgen. Hij stelde voor (in het Nederlands) dat ik dat idee naar een hoger niveau zou tillen... Apple Watch.

Bericht van mijn maat Niels, die voorstelt om mijn
Bericht van mijn maat Niels, die voorstelt om mijn "werken op een smartphone"-idee naar een hoger niveau te tillen, compleet met een Photoshop-mockup.

Terwijl hij zijn briljante Photoshop-vaardigheden gebruikte, gebruikte ik Xcode, mijn Linux-kennis, SSH, VIM, het lokale netwerk, een bluetooth-toetsenbord, een daadwerkelijke Apple Watch, wat tijd en geduld.... met dit proof of concept als resultaat:

En zo geschiedde! Programmeren op de Apple Watch met VIM, SSH, een Bluetooth-toetsenbord en koffie.
En zo geschiedde! Programmeren op de Apple Watch met VIM, SSH, een Bluetooth-toetsenbord en koffie.
Echte programmeercode, echte Apple Watch. Geen Photoshop.
Echte programmeercode, echte Apple Watch. Geen Photoshop.

Hoe het werkt (voor dummies)

Ik heb een kleine Watch-app gemaakt die verbinding maakt met een externe computer waarop de ontwikkelsoftware draait. Het toetsenbord is verbonden met deze externe computer, zodat ik daadwerkelijk code kan schrijven. Het principe is eenvoudig en kan worden vergeleken met de Camera-app die standaard op de watch staat: je gebruikt de watch als zoeker voor de camera in de iPhone. Deze Watch-app is als een "zoeker" voor programmeercode.

Hoe het werkt (voor de techneuten onder ons)

In het lokale netwerk draai ik een kleine NodeJS-server op een Linux-machine die screenshots maakt van een shell-sessie waarin mijn favoriete programmeercode-editor, VIM, draait. Het toetsenbord is via Bluetooth met deze laptop verbonden. Op de Watch heb ik een simpele app gemaakt die elke paar seconden een nieuwe screenshot ophaalt en die gebruikt om de afbeelding op volledig scherm te tonen. Het is een proof of concept, niets dat de AppStore waardig is (er is nogal wat vertraging tussen de vernieuwingen - maar het werkt). Als je erover denkt om het zelf te bouwen, zoek dan naar WKInterfaceImage, UIImage, NSURLSession en dataTaskWithURL.

De bron van de magie: mijn ThinkPad X1 verbonden met het lokale netwerk.
De bron van de magie: mijn ThinkPad X1 verbonden met het lokale netwerk.

Waarom

Ik experimenteer regelmatig, omdat het me in staat stelt te leren over de manier waarop ik dingen doe. De experimenten dwingen me om dingen die ik als vanzelfsprekend of normaal beschouw, te heroverwegen. In veel opzichten is "de jacht mooier dan de vangst".

Ik experimenteer actief met nieuwe hard- en software, gewoon om up-to-date te blijven en nieuwe dingen te leren. In 2008, een paar maanden na de lancering van de AppStore, was ik een van de allereersten die met iOS-ontwikkeling begon. Hoewel het potentieel onduidelijk was, leerde en experimenteerde ik met de technologie. Mijn vroege ervaring hielp me in 2011 de Snake '97-app te programmeren, een ander gek idee dat uitgroeide tot een spel met 20 miljoen downloads... :-))

Snake '97 - het originele idee en de sterren van het spel, de Nokia 5110 en 3310 - mogelijk gemaakt door eerder te experimenteren met technologie.
Snake '97 - het originele idee en de sterren van het spel, de Nokia 5110 en 3310 - mogelijk gemaakt door eerder te experimenteren met technologie.

Wat ik heb geleerd

Dus in plaats van te vragen "Waarom?" kun je beter vragen "Wat heb ik geleerd?". Nou, eigenlijk best wel een paar dingen:

Mobiel gevoel: dit blogbericht is gemaakt met een iPhone, een toetsenbord en wat koffie! Geen pc!
Mobiel gevoel: dit blogbericht is gemaakt met een iPhone, een toetsenbord en wat koffie! Geen pc!

Conclusie

Dit hele experiment heeft me echt vooruit geholpen op het gebied van mobiel computergebruik. Ik heb geleerd mijn gereedschapsset en mijn manier van werken te optimaliseren. Sterker nog, dit hele blogbericht is gemaakt op een iPhone, inclusief de foto's (ze nemen, bijsnijden), en het voelde helemaal niet raar. Ik vind het geweldig omdat het alles gemakkelijker maakt, en dat maakte dit experiment de moeite waard.

Bonus: Nokia Communicator en Jolla

Toen ik dit bericht schreef, vroeg ik me af of mijn oude Nokia Communicators nog werkten. Na wat gepruts met de oude batterijen slaagde ik erin de E90 en 9300i werkend te krijgen. Met Putty en 802.11b WiFi slaagde ik erin verbinding te maken met mijn nieuw gecreëerde ontwikkelingssysteem dat ik voor dit experiment met de Apple Watch gebruikte. Raad eens? Het werkte prima - wie heeft er nog een nieuwe telefoon nodig? :-)

Multi-platform ontwikkeling goed gedaan, Nokia Communicator E90 met Symbian series 60 uit 2007, Nokia 9300i met Symbian series 80 uit 2004, Jolla-telefoon met SailfishOS met het funky 'other half'-toetsenbord (tohkbd), en de iPhone 7.
Multi-platform ontwikkeling goed gedaan, Nokia Communicator E90 met Symbian series 60 uit 2007, Nokia 9300i met Symbian series 80 uit 2004, Jolla-telefoon met SailfishOS met het funky 'other half'-toetsenbord (tohkbd), en de iPhone 7.
Nokia E90 Communicator met Putty op Symbian Series 60.
Nokia E90 Communicator met Putty op Symbian Series 60.
Nokia 9300i, officieel geen communicator maar desondanks een apparaat met geavanceerde mobiele communicatiemogelijkheden voor zijn tijd (2007). Met Putty op Symbian Series 80.
Nokia 9300i, officieel geen communicator maar desondanks een apparaat met geavanceerde mobiele communicatiemogelijkheden voor zijn tijd (2007). Met Putty op Symbian Series 80.
Multi-user, multi-screen.
Multi-user, multi-screen.