Week of a web developer on an iPad

When apple released the first iPad in 2010 I was sold. I knew I had to have one. Back then iPhone was still 3.5", the iPads bigger screen felt like lucrative real estate. I remember in 2010 waiting on the airport in a cafe, when a randoom guy approached me and asked me about my iPad. I started explaining him how iPad is awesome device for developers. I still remember that strange look he gave me once I told him that I’m thinking about developing and text editor for developers so they can write code on an iPad. (Thank God I didn’t persue that road, as my idea was some-kind-of-mobile-IDE.) He didn’t believe there were people who would be willing to write a code on a mobile device.

As a developer, I’ve been writing code on MacBook Pro since 2007. These days it’s on my maxed out dual screen Mac Mini 2012 turbo limited edition, which is still kicking ass.

The thing I’ve been missing most is the mobility.

I’ve started looking into new MBP as I plan to move around in foreseeable future. As a developer I came to value the comfort of a multiple screen setup (lol?). So as soon as I saw Duet, I had a reason to check out iPad to use as an occasional secondary screen. Even though iPad Air is still in a game and cheaper then iPad Pro, I don’t get reasoning why I should buy dated device just to save few $. I ended buying iPad Pro 9.7". First day felt very familiar. All the emotions from using my 1st gen iPad popped out. There was significant speed bump and some fancy features like split view and picture-in-picture that makes the device to feel more flexible. Overall I end up having the same issue like with the original iPad. On screen keyboard just takes too much space for serious work. Here comes Smart Keyboard (and more $’s). I started doing research about other people using iPad for work, and especially development.

Here we are. 7 years later and the dream feels more real then ever.

It is real. IT IS REAL. For shizzle ma nizzle. People actually do it. I’m not the only crazy one. My first thought was to use Cloud9. But they are not mobile friendly. Such a bummer. Then I saw that people actually use remote servers (via SSH) to do the heavy lifting and use iPad only as a terminal. Thats genius! (Do you see the wrong approach I had back in 2010?)

I’ve set up VPC, and turned off my Mini for a day (well, I at least tried). Here is what I found.

Day One (and Two and Three): Early Struggles.

You need a great SSH client. My first choice was Prompt from Panic. They have a track record of a great apps for OSX and iOS. It supports agent forwarding which can be useful.

I went ahead and bought Coda as a remote Text editor. Coda is great, it allows you to edit remote files easy, but I missed few things. a) side-panel navigation. You have to go back to 1st tab to list files. b) opening file takes 2 taps. Too open single file, you need to tap on it, and then in inner menu you gotta tap ‘Open’ button. Such a waste :-( c) search in project. If they could index the remote folder structure and let me open file by simple shortcut and just by typing the file location/name, that would confince me to stay. Anyway, moving on.

Another great editor is Buffer. It allows you to edit files remotely and saves it. It supports VIM bindings so you can feel pretty good inside.

As a web developer, I need ability to load the server in a browser. I can either open ports to be available to public or use port forwarding. Unfortunately Prompt doesn’t support port forwarding. Moving on.

Termius is awesome. Very much full featured client. Strong competitor to Prompt. It can do port forwarding, but no ssh agent forwarding. So at the end, it’s about your priorities.

The biggest pain point was that since iOS 7, no app can run in background longer then 3 minutes. Previously it was 10 minutes which is much better, but 3 minutes is useless. Sigh.

Day Four: Welcome to Mosh.

Few months ago I came across mosh. Unfortunately I never had a need for it. SSH was always good enough. Until today. With Mosh you can be connected to the server all day long, you can change wifi, move around a city and never loose connection to the server. Ok, just until the point that iOS kills the app. For that we have screen/tmux. Right?

There is an amazing client called BLINK that is on App Store as well as Open Source on Github. You can download and compile it by yourself. I strongly urge you to support those devs and buy it on App Store, as the App deserves every cent. It is a simple full screen terminal without any extra buttons or UI elements that feels like native Terminal.app.

Day Five: Emacs vs Vim.

As all remote editors felt too slow to work with files, I decided go all in on terminal. I knew basics of VIM but I was never comfortable using it. So I started searching for other editors. One particular that I liked was NE (New Editor) that had zero learning curve, dropdown menu, shortcuts and all the usual text-editor stuff. It is so underrated editor that it is hard to find any resources for it. Then I moved to Emacs which has some learning curve but is pretty powerful. It felt ok, except for some reason, I couldn’t understand the concept of a buffers. So I moved back to Vim. As I knew the basics already (Open, edit, save file…), I decided to give it a day to see how I improve.

Plugins, plugins everywhere. Yeah, you can’t make too much without plugins. Once you get set up with NERDTree, syntax highliting, and you configure shortcuts to your need, you can get really powerful setup that can be easily compared against desktop text editor.

Day Six: WebTools It is hard to imagine doing any Web development without Javascript console. Safari or Chrome are good for basic work, but you can get only basic stuff done. No responsive layout, no javascript errors or console. This is where things get hard and you will need to make trips to regular browser.

Luckily there is WebTools. It is single webpage app that allows you to open the page, change page resolution to test responsive layout, and it includes simple Javascript console. It has still long way to go, but for most of the stuff, it is enough. Again, it is well worth the money.

Day Seven: Practice makes perfect. As I manage to build my setup, I focused mostly on doing more and more work through iPad. Occasional trips to desktop were necessary. First days I had to stop myself from switching to Mini for just doing simple googling and use Safari on iPad. Each day I was learning new shortcuts and commands in git and Vim. Each day I had to google less and less (although I still do). It’s all about incremental improvements.

Conclusion: Basically it stinks, so why would you do it? The million dollar question. Why? To me it’s simple: Because, I can. I don’t think I ever liked concept of a desktop with icons. No matter how much I try, I always end up with full desktop of icons that I have to clean every few months. It’s a mess. Same goes with windows. You can easily have 10 windows opened on a screen and then you spend time by switching between them and trying to find the right one (I always try to run minimum apps that I need). Spaces and Full Screen apps solves this clutter. For example I run Terminal, Atom and Chrome as separate full screen apps or as a split screen. Then I switch between them. There is minimal distraction. This is the same way you run apps on iOS. It is simple.

But isn’t app switching too slow? Yes it is, it is slower then on OSX. There is a small delay before you can hit a keyboard shortcut once you switch an app. Hope Apple will fix that in future.

Don’t you miss the mouse? Going all terminal has it’s advantages. You are being less dependent on a GUI applications. Sure mouse/taps can be faster for navigation, but there is always a price in moving your fingers from keyboard and back. Things are never black and white.

How long will this experiment continue? I’m not sure. I’m currently looking forward for 12" iPad Pro. Even that 9" iPad Pro has resolution as my first eMac on which I did proper development, I could use some extra screen space. If I run two apps in split screen, it often feels like none of the apps gets enough space.

Anyway; I’m not giving up and I’ll keep you updated.