---
title: "Programar no Apple Watch"
date: 2017-02-16
language: pt
topics: ["SSH", "ThinkPad", "apple", "creating", "creativity", "experiment", "hacking", "iOS", "iPhone", "laptop", "linux", "minimal", "programming", "retro", "smartphone", "vim", "watch", "work"]
source_url: https://willem.com/pt/2017-02-16_programar-no-apple-watch/
---
# Programar no Apple Watch

*A levar a sério experiências malucas*

> Nos últimos anos as experiências malucas não têm sido novidade para mim, mas desta vez quis mesmo levar a coisa ao extremo: programar num Apple Watch. Será possível escrever código num aparelho tão minúsculo? E para quê o esforço? Este artigo é sobre a razão de ser das experiências malucas e porque é que também deves experimentar!

Há uma semana estava a trocar uns emails com o meu amigo Niels, a contar-lhe esta ideia de usar um iPhone para trabalhar. Ele sugeriu (em neerlandês) que levasse a ideia ao nível seguinte... Apple Watch.

![Mensagem do meu amigo Niels, a sugerir que leve a minha ideia de "trabalhar num smartphone" ao nível seguinte, com direito a maqueta em Photoshop. ](https://willem.com/global/images/91b808d07886.webp)

Enquanto ele usava as suas brilhantes capacidades de Photoshop, eu usei o Xcode, os meus conhecimentos de Linux, SSH, VIM, a rede local, um teclado bluetooth, um Apple Watch a sério, algum tempo e paciência.... e o resultado foi esta prova de conceito:

![E foi o que fiz! Programar no Apple Watch com VIM, SSH, um teclado Bluetooth e café. ](https://willem.com/global/images/a91c01a62961.webp)

![Código de programação a sério, Apple Watch a sério. Sem Photoshop. ](https://willem.com/global/images/a168f98b960f.webp)

## Como funciona (para totós)

Criei uma pequena app para o Watch que se liga a um computador externo onde corre o software de desenvolvimento. O teclado está ligado a esse computador externo, para que eu possa mesmo escrever código. O princípio é simples e pode comparar-se à app Câmara que vem por defeito no relógio: usas o relógio como visor da câmara do iPhone. Esta app do Watch é como um "visor" para código de programação.

## Como funciona (para quem percebe de tecnologia)

Na rede local corro um pequeno servidor NodeJS numa máquina Linux que tira capturas de ecrã de uma sessão de shell onde corre o meu editor de código preferido, o VIM. O teclado está ligado a este portátil por Bluetooth. No Watch criei uma app simples que vai buscar uma nova captura de ecrã de poucos em poucos segundos e a mostra em ecrã inteiro. É uma prova de conceito, nada digno da AppStore (há bastante latência entre atualizações, mas funciona). Se estás a pensar construir isto, procura *WKInterfaceImage*, *UIImage*, *NSURLSession* e *dataTaskWithURL*

![A fonte da magia: o meu ThinkPad X1 ligado à rede local.](https://willem.com/global/images/caa603c5520c.webp)

## Porquê

Experimento regularmente, porque me permite aprender sobre a forma como faço as coisas. As experiências obrigam-me a repensar coisas que dou por adquiridas ou normais. Em muitos aspetos, **"a caçada é melhor do que a captura"**.

Experimento ativamente com hardware e software novos, só para me manter atualizado e aprender coisas novas. Em 2008, poucos meses depois de a AppStore ser lançada, fui dos primeiros a começar com o desenvolvimento para iOS. Mesmo sem o potencial ser claro, aprendi e experimentei com a tecnologia. A minha experiência inicial ajudou-me a programar a app Snake (www.snake97.com) '97 em 2011, outra ideia maluca que se revelou um jogo com *20 milhões de transferências*... :-))

![Snake '97: a ideia original e as estrelas do jogo, os Nokia 5110 e 3310. Possível graças a experiências anteriores com a tecnologia](https://willem.com/global/images/d260e207062a.webp)

## O que aprendi

Portanto, em vez de perguntares "Porquê?", é melhor perguntares "O que aprendi?". Bem, bastantes coisas, na verdade:

- **Passa o teu ambiente de programação para o terminal:** Aposta no texto, larga o IDE (como o Visual Studio) e aprende a usar bem o VIM (ou o emacs) com atalhos de teclado. Estas ferramentas funcionam praticamente em *qualquer* aparelho e não exigem um sistema operativo proprietário. 

- **Adeus, rato:** mantém os dedos onde escreves código, no teclado. Em vez de procurares o rato, usa o teclado (atalhos). Pode demorar algum tempo a conhecê-los, mas no fim és *muito* mais rápido. Para além da velocidade, ganhas também a possibilidade de usar qualquer ecrã, porque mais aparelhos suportam teclados do que ratos (pensa em consolas de jogos, smart TVs, AppleTV, aparelhos à moda antiga)

- **Usa os píxeis com sabedoria:** Se te limitares a um ecrã pequeno, és obrigado a pensar melhor em como usar os píxeis. Precisas mesmo de todas essas barras de ferramentas sempre visíveis? Quantos menos elementos de interface permanentemente visíveis, mais espaço tens para o conteúdo em si.  Menos distração, mais foco.

- **Escreve melhor código:** Para manter as coisas legíveis num ecrã pequeno, aprendes a prestar mesmo atenção à estrutura do código, à lógica das funções e aos nomes. Os ecrãs pequenos incentivam linhas de código mais curtas e corpos de funções mais compactos. Obriga-te a simplificar e a encurtar, a repetir-te menos. Estas vantagens aplicam-se também a ecrãs maiores. 

- **Já não precisas mesmo de um PC:** Se é possível num Watch, pensa nos outros aparelhos que levas contigo, como o smartphone e o tablet. Conseguir usar melhor o(s) teu(s) aparelho(s) móvel(is) vai tornar-te menos dependente dos PCs tradicionais. 

- **O Apple Watch tem potencial: ** Antes, programadores do Facebook já conseguiram (http://www.theverge.com/tldr/2015/10/2/9443491/doom-apple-watch-new-apple-tv-port) pôr o famoso jogo 3D Doom a correr no Apple Watch. Também eu aprendi que o aparelho tem um potencial sério. Começo a achar que o Apple Watch é muito mais um "computador móvel sempre presente" do que algo para comparar com um relógio mecânico tradicional. 

![Sentir-me móvel: este artigo foi criado com um iPhone, um teclado e um pouco de café! Sem PC!](https://willem.com/global/images/4b4f8a31a75a.webp)

## Conclusão

Esta experiência toda empurrou-me mesmo para a frente em computação móvel. Aprendi a otimizar o meu conjunto de ferramentas e a minha forma de trabalhar. Na verdade, este artigo inteiro foi criado num iPhone, incluindo as fotografias (tirá-las, cortá-las), e não me pareceu estranho de todo. Adoro, porque torna tudo mais fácil, e isso fez esta experiência valer a pena

### Bónus: Nokia Communicator e Jolla

Enquanto escrevia este artigo, pensei se os meus velhos Nokia Communicator ainda funcionariam. Depois de mexer um pouco nas baterias velhas, consegui pôr o E90 e o 9300i a funcionar. Com o Putty e wifi 802.11b, consegui ligar-me ao sistema de desenvolvimento acabado de criar que usei para esta experiência com o Apple Watch. Adivinha? Funcionou na perfeição. Quem precisa de um telemóvel novo? :-)

![Desenvolvimento multiplataforma bem feito: Nokia Communicator E90 com Symbian series 60 de 2007, Nokia 9300i com Symbian series 80 de 2004, telemóvel Jolla com SailfishOS e o curioso meio teclado (tohkbd), e o iPhone 7.](https://willem.com/global/images/6870b8e5577e.webp)

![Nokia E90 Communicator a correr o Putty em Symbian Series 60.](https://willem.com/global/images/f19e6557543c.webp)

![Nokia 9300i, oficialmente não é um communicator, mas mesmo assim um aparelho com opções avançadas de comunicação móvel para a sua época (2007). A correr o Putty em Symbian Series 80.](https://willem.com/global/images/ef24cdb8830e.webp)

![Multiutilizador, multiecrã. Dois Nokia Communicator (E90/9300i) ligados em simultâneo ao meu ambiente de trabalho com o Putty.](https://willem.com/global/images/2786e0481cad.webp)
