Wait, what? This isn't about using an iPad as a development machine, it's about using a server as a development machine and an iPad + keyboard to access said development machine.
I get that the author wants to use his iPad for day-to-day stuff, and that's fine, but it's a stretch to say it's their main programming machine when it's not actually running the "local" setup.
Heck, it would drive me bananas having to stop working every time I went through a tunnel on a train, or didn't have reliable connection to my VPN. Kind of destroys the point of a local environment.
This is nonetheless a helpful article for pointing out some interesting tools available on iOS and on a server for getting this type of work done. But I agree, the $1000+ iPad Pro here is basically being used as a dumb terminal. If you're willing to accept a less-spectacular screen, look into inexpensive vintage products instead, like a Surface 3.
Well, when you consider that most semiconductors have an anticipated operational lifespan of 5-7 years, and the surface contains many such components, 2 years is well into middle-age.
So, still within the 5-7 year range? An operational lifespan is a timeframe in which most of the objects in question are expected to still work, not the timeframe by which most have failed.
If it continues to work for another 5-7 years, that's when you're getting into the "sturdier than average" realm. Your laptop could be a micron's worth of a whisker away from shorting itself out - you won't know until it happens.
Perhaps I should have stated my earlier point differently, but 2 years is still not a small portion of the lifespan of your average computer.
Today, I believe the push to terminals is due to the slow death of Moore's law. Computer performance today is not getting much faster, and it's certainly not growing at the exponential rate it was from the 1970s-2000s.
Previously, if you wanted to double your performance, you would just wait 18 months or so, and some manufacturer would provide it. Now, we don't have that luxury. If you want to double performance, you basically need to double the number of computers. Unfortunately, doing that takes up physical space and power. So the solution is to create massive server farms with big beefy computers that can run in parallel.
Depends on the length of the tunnel since he is using Mosh. Also then there's the Macbook for when you know you are going through some swiss megatunnel. ;)
So mosh is going to guess the auto-complete suggestions or code-docs your editor will offer while you are effectively offline?
Don’t be daft. Mosh can in a limited way eliminate latency, but it can’t provide the intelligence offered by code running on the server if the server can’t be reached.
For this you either need full connectivity or running the full stack locally. And right now only Android (and possibly Windows?) seem to offer the latter option.
So basically what this guys says is "golden" and good enough reason to warrant buying the most expensive tablet on the market can be summed up as this:
1. iOS 11 now supports very basic multitasking, years after Android (and Windows mobile, if that counts)
2. iOS 11 has support for keyboard-shortcuts, which (you probably guessed it) Android has had full support for at least since Android 3.0 (and we're now at 8).
3. He does no actual local development and has moved his entire development setup into the cloud, rendering the iPad a mere terminal, and thus it as the base-platform utterly irrelevant.
The only one who can call the cost-benefit factor of this as a development setup "good", are the ones already so invested in Apple-stuff that they're blinded to everything else. Especially its inherent limitations, not to mention the obscene cost given the limited offering you get.
Really: The cheapest chinese Android-tablet you can find... And no, not one of the cheapest. I mean the utterly cheapest of the cheap Android-tablets you can find... Can do all this.
At probably 1/20th the cost.
And it can run local chroots and native docker-containers too, so you have full offline support.
What's offered as an "amazing" experience here is only amazing if you don't consider cost a factor in what you get to work with. And once you do, it's about as far from amazing as you can possibly get, probably worst in class.
Should be titled, "I remotely tunnel to a server using my iPad Pro for programming" very misleading. Furthermore to the point: what's the benefit of tunneling to a remote machine for dev work? The latency would suck as would the overall slowness of things, it would drive you insane. You can hammer nails into a piece of wood using a rock, but why would you when you can use a hammer?
I have been doing this for 4 years. I can rent a 16 core server for a couple of years for less cost than a low entry Macbook, with a 1Gbps line. With mosh, I can develop literally anywhere with no lag at all (or at least, no noticeable lag) even with a 3G connection. I can RDP to an EC2 Windows instance when I need a quick Windows machine, again with minimal lag even over 3G.
I sold my desktop, and now use a cheap £200 garbage laptop as a thin-client to my machine. Not only do I get incredible compile performance due to being able to use 16 core Xeon's, but I am not tied to any desktop.
I can whip out my phone and pop open a tmux session from anywhere, in an emergency I can hop onto a friends computer and thanks to SSH 2FA fearlessly login to my dev system with my full environment that I never have to close.
At this point, I would actively avoid jobs that wouldn't let me work this way. Currently got a sweet remote gig and I'm going to fly to Spain next week and spend a couple of weeks coding on the beach with my 3G tethered laptop.
Edit: Just to clarify, I don't need to work in an IDE or use any Windows software that I couldn't tunnel over X. So it might not work for everyone. Just wanted to give an example of it working out great for someone.
Used to use a SoYouStart E5-1650v2 for the 6 Core/12 Hyper-Threads. I moved when I got a sweet server auction deal with two Xeon's but recently moved to Hetzner because the price for their AX50 Ryzen 1700X + 32GB of RAM is hard to beat.
Or underground trains, or long tunnels, or hikes, or many things. Hopefully though the typical developer doesn't spend the majority of his time on an airplane. Me personally, I don't need to be coding so consistently that the loss of a few hours on a plane is going to stop me doing this.
At the last place I worked, all of our desktop computers were thin clients that logged into a virtual machine in a data center somewhere 30 miles away. The company had special network connections and even though latency was noticeable (especially scrolling large graphics), it was tolerable and good enough to get work done.
However, at home, I would routinely login to the same remote computer and the latency was horrible, every typed letter was delayed a tenth of a second or so. I wasn't about to spend a fortune on a dedicated line to the work servers.
The point is, when you're working remotely, you're totally at the mercy of the network. If the network is down or flaky, you can't get anything done.
Multiplayer games cheat a lot to ensure smooth gameplay. For instance, they usually run a local game instance and respond to your input immediately, and only then retroactively correct the game state after a round-trip to the server.
I could imagine a middleware doing similar cheating for shell, but in general, you'd have to have a stripped local version of software doing local simulation to ensure videogame-like smooth experience.
> Furthermore to the point: what's the benefit of tunneling to a remote machine for dev work?
You can do it from anywhere; you don't need a powerful local machine; controlling what devs do is easier; etc.
3 of my last 4 contracts have been development on remote machines. It's perfectly fine unless you somehow have abysmal networking (and then you really have bigger problems.)
I love to work offline. Sometimes I am most productive when there is no network.
> You can do it from anywhere; you don't need a powerful local machine; controlling what devs do is easier; etc.
I can do that from my mobile too. There is absolutely no comparision with the "powerful local machine". And yes, you do need a powerful local machine, unless you are just writing text.
> You can do it from anywhere; you don't need a powerful local machine
That's fair, but arguably, that's an argument for CEO to own an iPad, so that they can log in to company network from whatever country they happen to be in this week. For regular employees, that seems like introducing a stupidly huge amount of pointless friction into the dev process, which will directly impact productivity.
In your instance though, it sounds like the development on remote machines was a client choice and not your own? The author is choosing to develop remotely themselves because Docker makes their MacBook get hot and burns their thighs when they don't wear pants. Would have just been easier to buy one of those laptop rests with inbuilt fans than spend money on a monthly server though, right?
s/You can do it from anywhere/You can do it from anywhere you have an Internet connection and a local terminal with the correct setup/
If you already take the local terminal around with you, then there's really no benefit to "You can do it from anywhere" as that's 1) not true, you need an Internet connection, and 2) you can do the same thing, even offline, with a halfway decent laptop.
If you want to work from a terminal and log onto a server remotely to get stuff done, that's absolutely fine, each to their own! Just please don't paint it as better than having your local setup on a laptop, since it's not really. Apologies if you weren't saying that, but it came across as such.
With Android and Termux you will also have offline support more.
But from my experience: Better buy a good ultra portable Intel CPU notebook from/with a brand/os of your choice. There will be a time where you need to install something which only runs locally.
The show-stopper for me of all these set-ups is that you cannot sit on a sofa with your legs crossed and the machine on your lap which is by far the most comfortable setting for me
It's a very comfortable position, but not for the cervical spine. I just had an injury that according to the doc was because of this posture. I don't believe it though. Anyways, try not to sit in this position for long durations. The injury isn't fatal but will leave you with shooting pain in your arms and shoulders for weeks.
So the actual development is all done on a remote server, no local development? In that case, it would appear that this setup would be more classified as a thin client than a “main computer”.
I've worked on a similar setup during the last summer. My laptop's battery busted and since I already own a desktop I decided to buy an iPad and SSH into my desktop with Prompt.
Prompt is alright although I need to stay active on it due to the iOS app lifecycle constraints. If an application is suspended for more than 10 minutes iOS will kill it, meaning that if I'm working on a different application I'll constantly receive notifications to switch back to Prompt just to reset the death counter.
I have also spinned up a jupyter server so whenever I want to work on a notebook I'll SSH into my desktop and start the server. I can then use Safari on iOS to do browser based work. I imagine something similar can work for web developers. React Native developers can also upload their applications to hosting services such as Expo or Codepush and work on mobile applications on the go.
Of course, the reason is that we wouldn't be talking about an article that described using your laptop to do something that its been doing since the 1990s! ;D
But seriously, I think these kinds of articles are great. I love to hear about people's different setups and trying to push what can be done on iPads. Why not?
The thing for me is that I absolutely LOVE my iPad (i have an Air2 for general use and a 12.9, mainly for art-related use) and I really, really want my iPads to do more -- to become more "real" work-capable. Why do I want that? I think the reason is because these things are so close to being a single thing to carry around. They are so perfect for certain things (web browsing, email, chat, and many types of gaming) that I would really like to keep expanding that list. I'd love a world where the iPad is the only device I take with me on trips.
I also think it's real important for everyone to keep pointing out the glaring flaws of tablets (iPads in particular). In a way, this article just reinforces the fact that the inability to do real, local programming work is a real limiter for a lot of people. Also, my favorite complaint is about just how awful selecting and editing text is. I'd love for Apple to fix these things.
If you want to work with Docker (like this guy does)... Using something Linux-friendly is probably better. Like a ThinkPad.
Docker is a million times better on Linux than any other platform, so if all the work you do is through Docker, it seems insane not to make that as a base-optimization.
I feel a bit sorry for the author of the article to have put so much effort into fancy graphics and so on when he has completely missed the point. This isn't using your iPad as your main coding device. As someone else said earlier, this is a thin client at best.
IMHO, he has not missed the point. Tablet makers (IOS or Android) are fighting very hard to avoid that tablet becomes a generic versatile computer that you can use the way you want. We can stop fighting. Network is more and more reliable and we can rent very cheaply very good computers in the cloud. I use a bluetooth keyboard, connectbot and tmux to connect regularly to my web server. It works very well and I have more latency from the keyboard than from the network. If your computer (tablet) breaks or is stolen, you do not lose any data. Welcome to the cloud ;-)
I agree with everyone that is saying that he is not using the iPad Pro as his main computer, howeve I wouldn’t dismiss using an iPad Pro in a similar method with GUI based development. I’ve done remote troubleshooting with Windows environments with nothing more than my iPad and RDP -even remoting in Tony own desktop and using Visual Studio.
After seeing how badly running a Windows VM on a Mac laptop kills battery and how cheaply you can setup a VM on Amazon, I will probably just use that for Windows development when I get another a Mac. Then again, I have a gigabit internet up and down at home so maybe not.
I could also see using an iPad Pro for a terminal because I have “unlimited” data on my cellular equipped iPad for $20 a mont but I can’t get unlimited fast tethering to a laptop.
A guy (Mark O'Connor) did this 5 years ago. At the time I had a full dev stack (LAMP, vim, tmux, hg, etc.) on a netbook eee1001 (or whatever it was, the little guys) for portability. I liked my setup way better as I took my dev environment with me. But I would probably go nuts if I had to work on that little screen all the time.
The "but it's not local and therefore not programming!" style reactions make little sense to me. Programming is an activity; where the code resides or executes doesn't change that fact. How would you have the title "corrected"?
We will have to agree to disagree. When I'm programming, as a backend engineer (like the article's author) I am almost always making use of numerous computers at once: my local hardware, a remote dev instance, remote production instances, databases, etc etc. The one I consider to be "main" is the one I use to input commands, write code, etc. Like the author's iPad Pro.
This is awesome! I've been eyeing the ability to use an iPad for a dev device for a while now. As a frontend and react native dev I'm unfortunately still restricted by my need for a good web debugging experience (eg chrome dev tools + react/redux dev tools) and the ability to compile to an iOS device. I can't imagine either of these are coming anytime soon, so for now I'll stick to an old fashioned MacBook Pro.
That said, sometimes I wonder if Apple will ever make the plunge and make an iOS version of Xcode. The thought of a mobile version seems scary, and obviously this would only be practical on the iPad, but at the same time if they ever try to make the iPad replace the professional workhorse that the Mac currently is that'd be a natural direction to go in.
The Logitech Create keyboard/case [0] for the 12.9 iPad Pro works great on my lap. The new Logitech Slim Combo case/keyboard [1] has a removable keyboard that doesn't work well on a lap but makes using it as a tablet easier.
Both keyboards are backlit and I like typing on them.
I tried this with my 12.9 (with the same keyboard, the foldable one) for a few days on the train and it is possible to balance it on your lap while sitting nicely with your legs bent at the knee at a 90ish degree angle, feet flat on the floor. The keyboard is stiff enough as long as the gulf between your legs isn't too wide. The problem is that any shifting around can cause this set to move and tip. It just doesn't feel long-term stable. It is possible to do it for a few minutes, say, to reply to an email.
That said, the keyboard is really nice to type on and is really easy to get used to. I know these things are very subjective.
The title should really say "Using an ipad to be able to develop in one's underwear"... Outside of this key element, there is really no upside over using a laptop!
> Outside of this key element, there is really no upside over using a laptop!
From the article:
> Even though the MacBook's retina display is a really great display, the iPad Pro's display is another big step up. I don't know if it's the Pro Motion, the True Tone or the Wide color (P3) but the iPad Pro display just looks a lot better than my 2015 MacBook Pro's.
I get that the author wants to use his iPad for day-to-day stuff, and that's fine, but it's a stretch to say it's their main programming machine when it's not actually running the "local" setup.
Heck, it would drive me bananas having to stop working every time I went through a tunnel on a train, or didn't have reliable connection to my VPN. Kind of destroys the point of a local environment.