Programmare su Apple Watch

Scrittura · 16 feb 2017

Programmare su Apple Watch

Fare sul serio con gli esperimenti folli

Negli ultimi anni gli esperimenti folli non mi sono mai mancati, ma questa volta volevo davvero spingermi all'estremo: programmare su un Apple Watch. Sarebbe davvero possibile scrivere codice su un dispositivo così minuscolo? E perché mai farlo? Questo articolo parla del valore degli esperimenti folli e del perché dovresti provarci anche tu!

Una settimana fa scambiavo qualche e-mail con il mio amico Niels, raccontandogli l'idea di usare un iPhone per lavorare. Lui ha suggerito (in olandese) di portare l'idea al livello successivo... l'Apple Watch.

Messaggio del mio amico Niels, che suggerisce di portare la mia idea di "lavorare su uno smartphone" al livello successivo, con tanto di mockup in Photoshop.
Messaggio del mio amico Niels, che suggerisce di portare la mia idea di "lavorare su uno smartphone" al livello successivo, con tanto di mockup in Photoshop.

Lui ha usato le sue geniali capacità con Photoshop, io ho usato Xcode, le mie conoscenze di Linux, SSH, VIM, la rete locale, una tastiera bluetooth, un vero Apple Watch, un po' di tempo e pazienza.... col risultato di questo proof of concept:

E così ho fatto! Programmare su Apple Watch con VIM, SSH, una tastiera Bluetooth e caffè.
E così ho fatto! Programmare su Apple Watch con VIM, SSH, una tastiera Bluetooth e caffè.
Codice vero, Apple Watch vero. Niente Photoshop.
Codice vero, Apple Watch vero. Niente Photoshop.

Come funziona (per principianti)

Ho creato una piccola app per Watch che si collega a un computer esterno su cui gira il software di sviluppo. La tastiera è collegata a questo computer esterno, così posso davvero scrivere codice. Il principio è semplice e si può paragonare all'app Fotocamera che l'orologio ha di serie: usi l'orologio come mirino per la fotocamera dell'iPhone. Questa app per Watch è come un "mirino" per il codice di programmazione.

Come funziona (per i più tecnici tra noi)

Nella rete locale faccio girare un piccolo server NodeJS su una macchina Linux che fa screenshot di una sessione shell in cui gira il mio editor di codice preferito, VIM. La tastiera è collegata a questo laptop via Bluetooth. Sul Watch ho creato una semplice app che ogni pochi secondi scarica un nuovo screenshot e lo mostra a schermo intero. È un proof of concept, niente di degno dell'App Store (c'è parecchia latenza tra un aggiornamento e l'altro, ma funziona). Se pensi di costruirlo da solo, cerca WKInterfaceImage, UIImage, NSURLSession e dataTaskWithURL

La fonte della magia: il mio ThinkPad X1 collegato alla rete locale.
La fonte della magia: il mio ThinkPad X1 collegato alla rete locale.

Perché

Sperimento regolarmente, perché mi permette di capire come faccio le cose. Gli esperimenti mi costringono a ripensare cose che do per scontate o normali. Per molti versi "la caccia è meglio della cattura".

Sperimento attivamente con hardware e software nuovi, solo per restare aggiornato e imparare cose nuove. Nel 2008, pochi mesi dopo il lancio dell'App Store, sono stato tra i primissimi a iniziare con lo sviluppo iOS. Anche se il potenziale non era chiaro, ho imparato e sperimentato con la tecnologia. La mia esperienza iniziale mi ha aiutato a programmare l'app Snake '97 nel 2011, un'altra idea folle che si è rivelata un gioco da 20 milioni di download... :-))

Snake '97: l'idea originale e le star del gioco, i Nokia 5110 e 3310, resa possibile da precedenti esperimenti con la tecnologia
Snake '97: l'idea originale e le star del gioco, i Nokia 5110 e 3310, resa possibile da precedenti esperimenti con la tecnologia

Cosa ho imparato

Quindi, invece di chiedere "Perché?", faresti meglio a chiedere "Cosa ho imparato?". Be', parecchie cose in realtà:

  • Porta il tuo ambiente di programmazione nel terminale: passa al testo, lascia perdere l'IDE (come Visual Studio) e impara a usare davvero bene VIM (o emacs) con le scorciatoie da tastiera. Questi strumenti girano praticamente su qualsiasi dispositivo e non richiedono un sistema operativo proprietario.
  • Addio al mouse: tieni le dita dove scrivi il codice, sulla tastiera. Invece di cercare il mouse, usa la tastiera (le scorciatoie). Ci vuole un po' per imparare, ma alla fine sei molto più veloce. Oltre alla velocità ottieni la possibilità di usare qualsiasi schermo, perché più dispositivi supportano la tastiera ma non il mouse (pensa a console, smart TV, AppleTV, dispositivi d'altri tempi)
  • Usa bene i pixel: se ti limiti a uno schermo piccolo, sei costretto a pensare meglio a come usarli. Ti servono davvero tutte quelle barre degli strumenti sempre visibili? Meno elementi dell'interfaccia sono visibili in permanenza, più spazio ottieni per il contenuto vero e proprio. Meno distrazioni, più concentrazione.
  • Scrivi codice migliore: per tenere tutto leggibile su uno schermo piccolo, impari a fare davvero attenzione a struttura del codice, logica delle funzioni e nomi. Gli schermi piccoli incoraggiano righe di codice più corte e funzioni più compatte. Ti costringe a semplificare e accorciare, a ripeterti meno. Questi vantaggi valgono anche per gli schermi più grandi.
  • Non ti serve più davvero un PC: se è possibile su un Watch, pensa agli altri dispositivi che ti porti dietro, come smartphone e tablet. Riuscire a usare meglio i tuoi dispositivi mobili ti renderà meno dipendente dai PC tradizionali.
  • L'Apple Watch ha del potenziale: già tempo fa degli sviluppatori di Facebook sono riusciti a far girare il famoso gioco 3D Doom sull'Apple Watch. Anch'io ho imparato che il dispositivo ha un potenziale serio. Comincio a pensare che l'Apple Watch sia molto più un "computer mobile sempre con te" che qualcosa da paragonare a un tradizionale orologio meccanico.
Sentirsi mobili: questo articolo è stato creato con un iPhone, una tastiera e un po' di caffè! Niente PC!
Sentirsi mobili: questo articolo è stato creato con un iPhone, una tastiera e un po' di caffè! Niente PC!

Conclusione

Tutto questo esperimento mi ha davvero fatto fare un salto avanti nel mobile computing. Ho imparato a ottimizzare i miei strumenti e il mio modo di lavorare. In realtà, l'intero articolo è stato creato su un iPhone, comprese le foto (scattarle, ritagliarle), e non mi è sembrato strano per niente. Lo adoro perché rende tutto più facile, ed è questo che ha reso valido l'esperimento

Bonus: Nokia Communicator e Jolla

Mentre scrivevo questo articolo mi sono chiesto se i miei vecchi Nokia Communicator funzionassero ancora. Dopo aver trafficato un po' con le vecchie batterie sono riuscito a far partire l'E90 e il 9300i. Con Putty e il WiFi 802.11b sono riuscito a collegarmi al nuovo sistema di sviluppo che ho creato per questo esperimento con l'Apple Watch. Indovina un po'? Ha funzionato benissimo: chi ha bisogno di un telefono nuovo, comunque? :-)

Sviluppo multipiattaforma fatto come si deve: Nokia Communicator E90 con Symbian series 60 del 2007, Nokia 9300i con Symbian series 80 del 2004, telefono Jolla con SailfishOS e la simpatica mezza tastiera (tohkbd), e l'iPhone 7.
Sviluppo multipiattaforma fatto come si deve: Nokia Communicator E90 con Symbian series 60 del 2007, Nokia 9300i con Symbian series 80 del 2004, telefono Jolla con SailfishOS e la simpatica mezza tastiera (tohkbd), e l'iPhone 7.
Il Nokia E90 Communicator con Putty su Symbian Series 60.
Il Nokia E90 Communicator con Putty su Symbian Series 60.
Il Nokia 9300i, ufficialmente non un communicator ma comunque un dispositivo con opzioni avanzate di comunicazione mobile per la sua epoca (2007). Con Putty su Symbian Series 80.
Il Nokia 9300i, ufficialmente non un communicator ma comunque un dispositivo con opzioni avanzate di comunicazione mobile per la sua epoca (2007). Con Putty su Symbian Series 80.
Multi utente, multi schermo. Due Nokia Communicator (E90/9300i) collegati contemporaneamente al mio ambiente di lavoro con Putty.
Multi utente, multi schermo. Due Nokia Communicator (E90/9300i) collegati contemporaneamente al mio ambiente di lavoro con Putty.

← Altri scritti