Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Swap Your Laptop for an iPad + Linode (linuxjournal.com)
59 points by mikegirouard on Dec 2, 2012 | hide | past | favorite | 64 comments


First of all, kudos to this guy. He's happy with his set-up. It works for him and it works for a lot of other people.

That said, I feel the need to warn others who are considering switching to a cloud-based development environment. There are some significant disadvantages to doing development on a remote machine. The biggest issue is that you are dependent on Internet connectivity. If your connection is down, you are dead in the water. If it's slow, you'll get frustrated. Connectivity is only going to get better, but the occasions when you're offline can be very memorable. Additionally, your choice of editors is rather limited. Whatever you use, it has to be terminal-based. A GUI editor like Xcode, Sublime Text 2, or Coda is right-out.

Now let's take a look at the advantages. Cost is mentioned. An iPad is $500-800. A cloud server is $20/month. A maxxed-out 11" MacBook Air is just under $1800. If you throw it away after 2 years (instead of selling it), that's $75/month. In the same time, you'd spend $40-55/month for the iPad/cloud combo. Assuming normal bay area wages, the cost difference isn't worth caring about.

The iPad/cloud setup has one big advantage: battery life. An iPad will last 10 hours. Most laptops can barely do half that. But that's pretty much its only advantage. The laptop beats it in performance, capabilities (you can run VMs and test other OSes/browsers), ergonomics, and expandability. Laptops can also output to larger monitors.

After considering all these things, the best solution is whatever you're most productive using. If you find yourself away from power often, the iPad is your best bet. If you often have slow/nonexistent Internet connectivity or you like to plug into external displays, go with a laptop.

My most productive times are when I'm offline, so my weapon of choice is the 11" MacBook Air. I load it up with the right documentation and virtual machines beforehand. Then I spend the next 5-7 hours writing prodigious amounts of code. At that point both myself and the Air's battery are spent.

Again, I don't mean to imply that the author is mistaken. I simply want to manage expectations for anyone considering following him.


For Android at least, there is a development suite called Terminal IDE (can be installed from play, no root required), that among other tools, it provides you with vim, git and ssh.

So you can do all your development on your tablet even when offline and upload your work to your server with git when you get back online.


Looks amazing: but it takes about 100MB of storage, and you can't install it to the SD... come on, I only have about 200MB of internal storage, and about 20MB aviable.


Newer devices are trending towards heavy internal storage and no SD, so that's more a legacy device issue.


Yes I assumed that, I need a new phone :S


You can actually still use a GUI editor with cloud-based development.

The majority of my code is stored on a Linode server. I use SSHFS to mount my working folder and edit in whatever editor I like (typically Geany). Connectivity is still an issue, but can be mitigated by tweaking the cache timeout.


Some editors support editing remote files. Emacs and TRAMP (<http://www.gnu.org/software/tramp/#Overview>) does this perfectly well. BBEdit 10 also does it (<http://www.andre-aulich.de/en/perm/edit-remote-files-using-y...). That editor is completely underrated.


Vim supports remote editing too, with netrw: http://vimdoc.sourceforge.net/htmldoc/pi_netrw.html


I've had issues with sshfs not sending the proper signals when files are deleted or renamed. It can make it quite frustrating when relying on tools that watch the filesystem for changes (like precompilers or editor tree views).


Could those tools not be run remotely?


Cost is mentioned. An iPad is $500-800. A cloud server is $20/month. A maxxed-out 11" MacBook Air is just under $1800. If you throw it away after 2 years (instead of selling it), that's $75/month. In the same time, you'd spend $40-55/month for the iPad/cloud combo.

Not sure I can follow your calculation. If the iPad is (at most) $800 and the MacBook Air is ~$1800, you'll save roughly $1000 if you go with the iPad. If a cloud server is $20/month than it takes you about 4 years to spend these $1000. Thus if you compare the values within a time span of 2 years, shouldn't the iPad+server combo safe you roughly $500?!

I'm sure I'm missing something.


Yes. That's what he said.

$75(/month) - $55(/month) = $20 * 24 (months) = $480 saved over 2 years.

And it is his argument is that over a 2 year span, that is negligible savings in the tech industry. Especially considering most people spend $2400 in that same span on their iPhone. ($200+$90*24=$2360)


Then after 2 years, sell the $1,800 MacBook Air for ~$1,000, the iPad (now presumably 2-3 generations out of date) for ~$300, and the Mac becomes better value.

You've taken a $800 depreciation hit on the Mac, and although the depreciation on the iPad was only ~$400, you've also spent $480 on your VPS...


Once you factor hardware depreciation in (who would toss a laptop after 2 years when you could sell it for 60% residual and put the money towards a new one?) there's inevitably going to come a point where the Mac has a lower TCO.

Lower upfront costs do not necessarily translate into savings further down the line, especially when your choice of hardware ties you into a $20/month ongoing expense.


Hopefully it is clear from the article itself how important being happy and comfortable at a terminal is. He spends two of his four pages discussing his Vim and screen configuration.


"Additionally, your choice of editors is rather limited. Whatever you use, it has to be terminal-based. A GUI editor like Xcode, Sublime Text 2, or Coda is right-out."

I just want to point out that with a program like WinSCP, you can sync a folder over SSH and essentially work over SSH with whatever editor you'd like.


We're talking about an iPad.


That doesn't really help you if you are on an ipad.


The 11" Air weighs 100 grams (10%) more than iPad + wireless keyboard and for that 10% you get much higher effective resolution, no compromise keyboard and trackpad, option to connect external monitor, up to 128gb storage, USB, etc, etc. Why compromise?


The iPad gets double to triple the battery life, has a higher DPI; the wireless keyboard is probably better than the MBA (or at least on par).

Both (all) choices involve compromises. It's a matter of choosing which compromises matter.

In my opinion, battery life is a very very important feature. I can see that factor alone swaying my decision...


I don't see why battery life would be that important for coding. With the iPad+wireless keyboard setup, you're already committing to using a desk or table -- won't those typically have a power outlet? Also, depending on the case/orientation, it'd be harder to keep the iPad in a stand with the charging cord in the way.


You can also get an iPad with a built-in cell modem.


Exactly. I just took a 7 hour flight, and spent about half of it hacking on code. How could I have done this with an iPad?


I find it interesting to contrast this ubiquitous-connectivity model with the development style of Joey Hess (git-annex, et al) modeled on extremely sporadic connectedness.

Not a comment on which is better. We're in a world of ubiquity. I've worked for months at a time in a purely remote-connection style. But speaking purely as a child of the modem, you can pry my local processing power from my cold, dead system chassis.


Swap your laptop for a chromebook + ec2


I've been pleasantly surprised by how well my chromebook works as a dev machine, and I'd even go as far as to recommend it. A few tips and comments to those considering it:

You'll want the secure shell and chrome remote desktop extensions. Note that there's also a hidden secure shell beta channel [0].

If you have vpn requirements, be sure to check for compatibility first: though openvpn and l2tp are supported, I wasn't able to get either working. Vpn fixes are supposedly in the works [1].

Install ubuntu onto an sd card and dual boot is possible (even on arm) [2]. I haven't needed to do this, though.

Other exciting - but currently abandoned - possibilities: vim and mosh as chrome extensions [3] [4].

[0] https://groups.google.com/forum/#!msg/chromebook-central/f8U... [1] http://code.google.com/p/chromium-os/issues/detail?id=35515 [2] https://plus.google.com/109993695638569781190/posts/b2fazijJ... [3] http://code.google.com/p/nativeclient/source/browse/trunk/na... [4] https://github.com/davidben/mosh-chrome


I'm honestly seriously considering this. I'm still trying to figure out if Ubuntu on the Chrome book is stable enough for SSH, VNC, X, and web work.

Moreover, something I just thought of now is that I do a lot of mobile app development. Wondering if I can run the debugger remotely and "export" my local USB over SSH and have it run that way. That would be pretty cool...


Looks like I answered my own question: http://www.howtoforge.com/how-to-set-up-a-usb-over-ip-server...

Just ordered my Chromebook from Amazon. Now to wait 8 weeks for it. :-(


I've been running Ubuntu on the ARM Chromebook for over a month now and it works great. I use it mostly for doing Go programming. I mostly do local development with it.

If you're doing everything remotely you could probably just stick to ChromeOS (it has ssh, you can also use Chrome Remote Desktop or Guacamole http://guac-dev.org/) and not bother with Ubuntu.


That's my plan. Currently imitating that with Asus Transfomer and Raspberry Pi.


Same here, with a Nexus 10 and an Edis VPS.




One point I'm not sure this article mentions is how gracefully you can switch between apps on the iPad with gestures. I do a lot of (non-development) work via Prompt and when I need to consult documentation I just swipe over to a PDF or web page. Not being able to see the two side-by-side is almost a blessing simply because when I switch over I read the documentation carefully and only switch back when I'm ready to actually resume my work. This helps me out a lot because instead of skimming the documentation as I go I actually spend a few minutes reading it all and absorbing it. When I'm ready to switch back to my work I'm less scatterbrained about what I'm trying to accomplish. I'm way less prone to skimming the documentation just for the relevant parts. I'm starting to think uni-windowing is way underrated. When I work on my Mac I often do the same thing with full-screen apps now. I feel like it's made me more productive.

The one feature I really need added to iOS is a multi-item/history based clipboard system. This would make working between apps in a uni-window environment much easier.


It's the same reason I don't use multiple monitors simultaneously. I feel really productive having full screen apps. But even better is the fact that I have keyboard shortcuts set up to switch between apps.

It started with XMonad on Linux, where alt+n (where n is 1..9) would take me to a separate workspace, each with it's own apps. Workspace 1 is always my browser, 3 is the terminal, 8 is my editor, etc.

I set this up on OSX as well - workspaces are called desktops on OSX and I just set up 9 of them, with command+n being my desktop-switching shortcuts. It works remarkably well, it almost makes me cringe seeing people alt-tab repeatedly, or using the mouse and overlapping windows to try to switch between different apps.


I have a similar setup, but instead of alt-tabbing (which gets frustrating quickly when you have about 10 applications running) I use Alfred and type the name of the app.


How did you bind command-(1..9) to the different spaces on osx?


System Preferences -> Keyboard -> Keyboard Shortcuts -> Mission Control -> Switch To Desktop (1..x)


Awesome, thanks!


Yes swap my 129GBP ThinkPad T61 running debian for a more expensive, less capable device with a pissy screen that falls over if you let go of it, rubbish keyboard, short shelf life, non replaceable battery, subscription based, lock in promoting glorified vt100 terminal that only works if you have an internet connection available.

I can't take this working methodology seriously, nor anything which contracts out every last egg to one basket. It's trendy but entirely batshit.

Ignoring the cost model which is broken, if all shit breaks loose, which it does in real life regularly then this is just going to screw you properly then.


I recommend creating a reusable 'development vm' (or lxc container if you swing that way) for your entire team. It really cuts down on development time and you can generally host it anywhere (locally, 'the cloud', whatever).

Not(or rarely) having to ponder 'is it my environment?' whenever something breaks is nice. It's also usually easy to share the folder and work on a remote vm's filesystem locally with whatever editor you like. (some exceptions are java+eclipse because of the need for a shared maven repo and general eclipse slowness is compounded in this type of setup)


Something I'm surprised I haven't seen mentioned so far is a comment regarding this:

> The hardest part of setting up an SSH client on a tablet is getting your private SSH key on there without entrusting it to a third party. I split mine across multiple services and removed it after recombining it, but a better way would be to SSH in with a password first, then use copy and paste to copy the key inside iSSH itself.

Ideally, you shouldn't be transferring a private key in the first place, and instead, generating a new private key on the tablet itself, specifically for the tablet.

Once you've generated a private key for the tablet, it's trivial to push the public key for it to the server (and safe to entrust the public key to third parties, since it's specifically intended to be public).

It also means that if, say, your tablet got stolen, you could just revoke access for the tablet's key, rather than having to redo everything for your existing key.


There is no reason to force yourself to one solution.

I have access to this setup, but also to multiple laptops, desktops, tablets, phones. I use what works for the situation.

When does the ipad+keyboard shine?

When you don't have easy access to wifi, but can get 3g.

When you don't have power. iPad battery life is awesome.

When you want to have a tablet with you for reading, drawing, notating.

When you want your keyboard to be detached from your screen to have a more comfortable position. (e.g. you can put the keyboard on your lap, or even offset the screen while having the keyboard in front of you. Many possible configurations)

When you want the above features, but don't want to have to carry a backpack or some kind of bulky bag to fit a laptop or convertible laptop+tablet or carry around a few different devices.

The iPad is a very general purpose device. A lot of people are saying, "Just use a laptop" and completely missing the point. The author is specifically using this setup for 3g+battery life.


If you're going to go full cloud, a tablet like the Asus Transformer seems like a much better fit than the iPad.

It has a few key advantages:

1. it has a physical keyboard/trackpad dock which the OS fully understands.

2. the dock contains no actual PC, and is 99% battery, effectively doubling your battery-time.

Why would you chose an iPad over this?


The most likely answer is because of the heavy, ongoing advertising.


While this might be working for the author, I couldn't take this approach, since there is just too much compromises I'd have to take.

Being a Rails developer, I have to constantly run tests, refresh browser and write code, and to do this as efficiently as possible, I'm using dual monitor setup with the guard gem, which makes two things while I write code: runs tests and refreshes browser (both appear on second monitor). The machine is slightly customized Mac Mini Server (SSD + additional RAM) which also comes around $1000 plus the two monitors.

Laptops are simply not fit for any serious Rails development, not only to the small amount of screen real estate, computing power but also because I can rarely get into the zone outside my home office.


I couldn't live without AWS or my litte VPS. As a developer and fellow HN fan, I'm always reading about the latest frameworks and projects. I love demoing them, but I feel it's risky on my laptop because the 500GB I have fills up quick if I'm not paying attention, so I avoid installing anything unless it's going to be used with a real project at work. I do my best to run all examples on AWS or my VPS first, the reason for this is so if ruby blows up or my recently configured kernel panics, I can easily reset or reinstall the instance and we're back in business.

While I do believe the future is in cloud based development, I think right now's solution is a duality of the two.


I'm waiting for the Android port of Emacs to mature. It currently has issues with hardware keyboards and with Tramp. But once it works well, then I'm getting a Nexus 10 and a Logitech K810[1]

Emacs-TRAMP will let me edit files locally so it will work well even if you're in a location with spotty internet.

1: http://www.androidpolice.com/2012/11/27/logitech-bluetooth-i...


Oh, cmon, let's check the inventory: - tablet - wireless keyboard

Right, I stopped reading after that. So he has a "small laptop" which is what the ipad+keyboard is and a vps.


http://www.linuxjournal.com/content/swap-your-laptop-ipad-li...

The photo suggests several items to carry and keep track of, and then assemble to work. A small light laptop is one box. Seems easier to me (chuck the one box into the bag and off).


Soon, a tablet will be fast enough to compile locally. But the article's setup still has the benefit of someone else managing OS/backups.

Is is possible to have both? i.e. a "remotely managed local system". (1) auto-updated OS e.g. chrome; (2) auto-backup e.g. dropbox.


But how do people connect their Model Ms to their iPads?


Yeah the hardest part of the article to stomach for me is that someone could type on one of those keyboards for 3 months and not get frustrated.


Those Bluetooth Mac keyboards are absolutely horrible, but so many people use them because they don't know that there are better keyboards out there.


There is an app for that.


I've read a few posts on various sites about Ubuntu running on jailbroken iPads, if it's a full Ubuntu experience I'd love to do that.


I can't find any, and I'd be surprised if it exists (it would mean drivers written for most of the ipad's hardware). Are you sure you aren't thinking of ubuntu on nexus (which is available, and easy because android IS linux)?

If you ARE talking about the ipad, care to share a link?


You clearly didn't Google hard enough.

http://www.shoutpedia.com/linux-running-on-ipad-and-iphone-c...

http://www.ifans.com/forums/threads/how-to-compile-and-insta...

http://forum.iphone.cz/viewtopic.php?f=7&t=52521

So, yeah. There's stuff out there. From what I can gather there's not much work been done recently.


I actually have android on my iphone 3G (as a "recovery partition"). But I was asking specifically about ubuntu; perhaps I should have been more clear.

And that android, BTW, is completely unusable - I just keep it there in case my 3G gets borked in a need-to-reinstall way (like it did two years ago).


Assuming Unity interface, most software would assume mouse level pointing accuracy or keyboard short-cuts. I imagine an older iPad model would be cheap enough to buy second hand and try it...


Hehehe, how about NO?


Glad to see this article made it into Linux Journal!


But I just bought a new mechanical keyboard!


The sad thing is, the Nexus 7 and Nexus 10 could be full powered Linux tablets (the Nexus 10's SOC is used in numerous places with Linux). Put that in a keyboard dock or something like the Transformer Prime dock...

ARM linux is more than great in my opinion, battery life, tablet-when-you-want, laptop the other times.

Plus, you know, the Nexus 10 is cheap and has a gorgeous screen.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: