As mentioned in my post Hacker-nomad's toolkit, 2012 edition, the lease period of my lovely — Linux-driven — 11" MacBook Air expired this month, and I had to consider what kind of gear to go with next.
The safe bet would've been to just get a newer version of the Air, or maybe the 13" Retina MacBook with its great screen. A fresher approach would be a ChromeBook, either the cheap and light ARM ChromeBook, or the Pixel with awesome screen and design but crappy battery life.
I'm spending most of my days developing software, and so I should be able to work with a ChromeBook and a remote Linux box. But if that works, why not try working on a tablet? They're cheap, light, durable, and have an all-day battery life. And if Mark O'Connor was able to work productively a whole year with one, why couldn't I?
Since I already had a Nexus 10, this is what I decided to try.
The Nexus tablet has a great, "better than retina" screen, which can render my coding sessions and web user interfaces beautifully. The 10" screen is somewhat smaller than what I had on my Air, but not terribly so.
However, the big problem with tablet productivity is text input. Much of our current work environment is still textual, and typing on a non-haptic glass touch-screen is simply not very nice.
To fix this I purchased a Microsoft Wedge Keyboard, which connects to the tablet over Bluetooth. Recent Android versions have quite full support for external keyboards, allowing me to use it for all text entry, and even for some keyboard navigation. So yes, Alt-Tab works.
The Wedge keyboard is about the same size as typical keyboards on compact laptops. Microsoft has always made good hardware, and the keyboard is no exception, providing a quite nice feel for the size it has. A handy additional feature is the included cover, which puts the keyboard to sleep automatically, and can act as a tablet stand when opened. No more issues with keyboard waking up in your bag and deleting everything.
For those prepared to lug a heavier option, there is a Bluetooth mechanical keyboard, which is probably a lot better than any laptop keyboard on the market. And if you already have a good keyboard, Android supports most of the USB ones via an OTG cable.
While I'm spending quite a lot of my time on the road, living out of my backpack, I do have a regular desk in the Berlin office I share with Content Control. Since my coding sessions are often long, I've been a bit concerned with my programming ergonomics for a while now, even considering a standing desk.
Tablet has the same advantage as a traditional display in that it is decoupled from the input devices, giving you greater freedom in how to position them. I have aCallstel tablet stand that allows me to place the tablet in practically any place and height above my desk. The current setup is just slightly below my eye height in the normal sitting position, but I'm still experimenting with that.
The Gorilla arm syndrome is what everybody brings up with every touchscreen computer — it is simply not nice to constantly lift your arm to touch the screen.
In my experience this isn't so much of an issue when you're using the tablet positioned similarly as a laptop screen would. But when the screen is up in a more ergonomic position, like it is on my desk, then this quickly becomes an issue.
To solve this I bought a Apple Magic Trackpad, which connects to the tablet again via Bluetooth, and allows both regular mouse usage with Android, as well as many multitouch gestures.
Most people experimenting with replacing computers with tablets go with an iPad, the established market leader. iPad has many benefits over the Nexus 10, including a more mature software ecosystem, and better availability — if you break or lose your tablet, you'll be able to pick up a new one from practically anywhere, whereas the Nexus devices are only available online.
The reasons for me to go with Android have to do with openness. Since the core operating system is open source, there are custom ROMs I could use if I wanted, and I can do file management the traditional way when I need to. An even bigger reason is that the sharing system makes it possible to connect various applications together. Being able to run multiple broser engines is also nice for a web developer.
Another bonus is the availability of NFC on the tablet. I'm quite often sharing content between it and my smartphone. If I run into an interesting web article, I can either send it to my Kindle to read later, or touch the tablet with my phone and read the article on that. This is surely a feature that will gain more mindshare whenever it is introduced to iPhones.
I also prefer the rugged, rubberized look-and-feel of the Nexus 10 to the cold metallic iPad, even though a 4:3 screen would be better than the widescreen I have now.
I really don't need much for my daily work — just a browser and a terminal. Here are the apps I use on a daily basis:
- Chrome and Firefox web browsers
- JuiceSSH SSH client to access my remote Linux server
- TapChat IRC client
- File Manager HD for moving stuff around, including between file servers
- DroidEdit Pro for quick local file edits
In addition I'm using some of the built-in Google apps, like Google Talk, GMail, and Google+ for Hangouts.
For offline development I have an installation of Terminal IDE that allows me to run Linux utilities like vim and git locally. If I would root my tablet I could also install a Ubuntu chroot and run whatever I need. With a previous tablet I even was able to run Node.js servers and databases on the thing!
My development virtual machine is from DigitalOcean's Amsterdam site, providing quite nice fast connections here in Europe. I mostly work on it via tmuxand vim, and run whatever processes I need, including long-running NoFlo flows.
Pros and cons
Based on my initial experiences of working with this setup for a week, working on a tablet is quite different from a traditional computer. Here are some good things:
- Battery life: the Nexus can easily get me through a full workday with a single charge, meaning that I only need to connect it to a wall overnight. It also charges via standard micro-USB meaning that I don't need any extra power bricks with me
- Portability: most tablets are smaller and lighter than full laptops. And they can be used more easily when standing, sitting on the couch, etc.
- Instant on: there is no suspend/resume cycle. I press the power button, the tablet recognizes my face via the camera, and I'm instantly back to where I left off
- Modularity: with a tablet, my work environment is built out of multiple modular pieces that I can take with me, or leave at the office depending what I intend to do. And I can set them up in different configurations when working
- Touch: for software developers, working on a tablet really drives home the importance of touchscreen friendliness. I've already noticed this affecting my UI designs
- Focus: everything is full screen, meaning no need for window management. Tablet software also tends to be simpler and has less configuration to fiddle with
But obviously there are some downsides as well:
- Office documents: the office suites available for Android are quite poor, and the mobile version of Google Docs is simply terrible. One solution would be using MS Office or LibreOffice over a VNC connection
- Mobile-first web: quite a few websites try to offer even large tablets like the Nexus 10 their silly mobile sites. Thankfully this is becoming less prevalent due to media queries and responsive design
- Offline: much of my current tablet workflow requires me to be online. I could write code and blog posts offline with tools like Terminal IDE, but there would be no way to run and test software
- Bugs: many tablet applications are still in their first generation and lack the maturity and robustness that their desktop counterparts have had time to gain
- Web debugging: while WEINRE sort of helps here, it is still a lot less convenient than the web development tools that come with desktop browsers
This tablet work setup is for now an experiment. If I find it hindering my productivity, I'll just have to get one of the laptops mentioned in the beginning of this post and work in more traditional manner. But if it works, then great! In that case I have finally found a more modern setup for programming work — one that gives me both better ergonomics and mobility.
I will try this setup for some period of time, and then report the results here on my blog.