353 comments

[ 386 ms ] story [ 548 ms ] thread
Random observation: Who uses an iPad + "the Cloud" + vim, and rips low quality DVDs?
A UK expat who can't (legally) get UK series like Outnumbered digitally, yet still wants to take them with him on his iPad.
Even if you own the dvd I think it would be faster/easier to get a "backup" copy via torrent.
I'm a big fan of tmux* and vim but there's a limit to the complexity of system that you can develop efficiently with vim. A good graphical IDE used by a skilled operator will be more likely to generate correct, consistent code faster.

If you're using vim and think you're developing as well and as fast as you can, you're probably wrong.

* 17 years of screen and I've finally switched over to tmux. None of the features were sufficiently compelling for me to change, but it's so much faster

If you're using vim without all the features of a graphical IDE, you're missing the right plugins.

I used Delphi for years, then Visual Studio for years, then Eclipse for a while, then QtCreator for years. I've haven't found anything in any graphical IDE that can't be succinctly reproduced in a text-only environment like vim.

I can imagine a whole load of awesome features that would require a truly graphical output. They just haven't been written yet.

I respectfully disagree, or partially, anyway.

I've been developing software in Vim, Netbeans, and Visual Studio (with about a year or so of Eclipse thrown in for good measure).

I've worked on projects in all three ranging from tiny 1kloc one-offs to several million line systems, using C, C++, Java, Bash, and a smattering of Perl and Python.

For Java and C++ code bases beyond a few thousand lines, I certainly agree that language aware tools are invaluable. It's sad that C++'s nature makes such tools so difficult to build. Going from Netbeans/Java to Netbeans or VS C++ is like going back in time - not quite laser scalpel to flint knife, but sometimes it feels like it!

Fortunately, I spend the bulk of my time in C, where I find myself at least as effective in Vim as in either Netbeans or VS. Granted, I obviously do use a few additional tools - primarily ctags and make.

If vim only had fully language aware navigation and search, I think I'd be just as effective in it as in any IDE. Exuberant ctags comes close, but just isn't quite there, and cscope is just too clumsy and slow.

For code navigation / completion, you could try eclim / clang_complete.
Yup, it's at the top of my pile of things to try when I need to take a break.

Though there's something that feels ... wrong with eclim in particular. Not that it'll stop me from using it if it works well!

I haven't noticed cscope being all the slow, other than having to rebuild the database. I use all the C-Spacebar-<letter> commands, it's second nature to find all the callers of a function for me now.
tmux: is it faster because it's more efficient about sending updates to the terminal, or are you talking about server-side resource usage?

I certainly wouldn't say no to a more responsive terminal.

I'm talking about the time between keystrokes and visual response.

To make the switch-over even easier, rebind to C-a instead of the (sensible) tmux default of C-b. Put this into your ~/.tmux.conf:

set -g prefix C-a unbind C-b bind C-a send-prefix bind-key C-a last-window

Neither are sensible for anyone who uses Emacs keybindings (at the shell or in Emacs). I have my prefix key set to C-t, which is tolerable.
Being an emacs user, C-a was never practical. I always set mine to ` (backtick). Except when writing shell scripts, it's surprising how little it actually comes up, and learning to type it twice when you actually want one is not hard. It reduces by 1/3rd the number of keys involved in switching "tabs" or doing other stuff.

Unlearning typing it twice for when you're not in screen is the hard part.

But C-t is a useful Emacs keybinding. I use C-z. Pressing C-z z when you want to suspend the running app is not particularly disruptive.
I have to disagree here. I've been programming for about 17 years now (since I was 8) and I've used a lot of different types of editors across different languages. I have to say that my LEAST favorite of all editors are the ones that try to do anything for me. Code completion, auto-closing quotes or tags, etc etc... it frustrates and distracts me to no end.

After spending a little under a year learning vim, I've found that while I make the occasional error in command mode, nothing has helped me "think in code" quite as well.

I'd say most of my time is spent thinking while programming anyway, but when I am typing, nothing has made me faster than vim. "Small" things like "hmm, I don't like what's in this block" can be as slow as reaching over to the mouse and selecting a bunch of code by hand, trying very hard to be precise, or typing "ci{". Which is easier?

Perhaps I've been missing out on all these years on the true power of IDEs and not using them to their full potential, but when it comes to programming, I like to be the one typing, not some fool machine. Do I occasionally make mistakes? Of course. Is my overall output better because I have fewer distractions? Absolutely.

Of course, that's just me. I know plenty of people who are a lot faster with autocomplete and auto-quote closing and everything else.

I use vim+cscope+screen. I used to operate solely out of a putty window (The company I work for uses windows on the desktop and really, all I need is that one putty window).

I might look into tmux, screen is kind of buggy under cygwin.

There are plenty of code-completion plugins, and I used to have tab-completion enabled, but I never got around to adding it on my latest environment and don't miss it.

Of course, cscope is mostly useful for c/c++/java, but I've used the ruby vim map just fine. I operate on a codebase that's probably past a million lines of code. Maybe not all useful lines, I haven't seen them all ;)

Can you really write code efficiently on such a small (9.7") screen?
I wondered about that, too, but I haven't noticed a feeling of being constrained or blinkered. I'm editing 85 rows and 35 columns with a pleasantly-large font. Check your editing space inside an IDE - is it really that much larger?

My guess is that (1) any function I'm writing is generally entirely within view anyway, and (2) with Vim I never scroll around looking for something, I jump directly to it with a search command.

I've written many tens of thousands of lines of C on my netbook, which has a 10.1" screen, also using Vim, so I believe it's possible.

Still, I'd really like just a smidge more space, especially in the vertical. At least 168 pixels, to be specific.

That's one advantage he has with the iPad - he can easily switch between portrait and landscape, depending upon his needs.

I'd love to be able to occasionally turn my netbook screen to portrait!

I think it's the resolution that matters, and 1024x768 is pretty comfortable for work (I know higher resolutions are even better, but I've been using 1024x768 for half a decade on old CRT and LCD monitors - it never failed to deliver).

When I switched to a new smartphone, the resolution was the most important change - with 854x480 pixels I can read forums and sites easily, as opposed to a 320x480 display...

It's interesting to see that other people are noticing how poor the google web experience has become on iOS. It seems especially deliberate when I note that android & chrome use webkit.

I've even swapped the default search engine to bing because it provides a better layout, especially so for image searching which in my view is broken on iOS.

This from the company that just released tools to aid the transition to mobile web.

(and yes, I'm aware that they hate each other, but why should I be punished? reminds me of the MS from yesteryear.)

Also: there is general feedback that google's optional services are generally quite good, which makes it curious that the originally very good google search/image search was replaced with versions that aren't up to scratch.

No need to ascribe malice; the Google web experience is bad on Android too.
Anyone who thinks Google Docs is better on Android due to anti-Apple conspiracy clearly has never used Google Docs on Android.

Also, outside of Google Docs, Google has first rate support for iOS on the web. Gmail, Voice, Reader, everything runs brilliantly on iOS. In fact, usually better than Android, as they clearly see web as their primary in to iOS compared to Android (example: Voice is the snazzy HTML5 newness on iOS, while Android has the spartan 1995 grad student webpage styling).

I wouldn't call the mobile support in Reader "frist rate". Some of the UI elements (especially the "mark as read", "email", etc. links at the bottom of each post) are too small, I constantly expand the next post when trying to email one. A small detail, but one that drives me crazy.
(comment deleted)
You Mac people are so entitled. Tell me this, how come I can't dual boot OS X on my Windows PC?
Let me dissect how this reads to me:

You <recipient of person who seems to be against my loyalist brand> are so <random ad hominem attack>.

Tell me this, <ignorant contrasting scenario with seemingly no knowledge that IT is more than just writing code for platforms> ?

I could sit here and list all sorts of analogous scenarios to the one you've questioned above, but I'd be wasting my time because you're not interested in that, if you were you could search for that information.

Now I ask you a question: Do you think your thoughts make a meaningful contribution to these forums? Perhaps you should consider somewhere with a one-sided bias if you're not comfortable hearing contrasting ideas and opinions from different minds. Perhaps you could gain maturity by being able to cope with the view points of others (which you're not going to change with such transparent arguments.)

And if you still don't get it: You aren't going to change my view point, the view point of others or any of these companies by acting like a troll, you're wasting your time and undermining the credibility of other comments you make on this forum.

You can also use SSH + screen with your MacBook... that's what I do with my MacBook Air since it's much more pleasant to deal with than the company IBM laptop.

  One fateful day, VMWare and OS/X conspired to trash my
  shared filesystem, losing several days of uncommitted
  code in the process.
Several days of uncommitted code? We need to have a heart to heart talk about your process.
This is really true. Back then we were still using CVS, and I was writing a feature that I thought wasn't quite big enough to branch and remerge for, but turned out to be a bit more involved to get right than I'd thought.

Now we're on Mercurial and life is better.

Edit: A nice win with the Linode is that they back it up for me for $5 a month. Sure, there are solutions for the desktop too, but somehow I never got around to using one of those.

There are two kinds of programmers: Those who’ve earned their experience the hard way, and insufferable know-it-alls who parrot whatever was in the last witty blog post they read.

There’s zero shame in being the first kind :-)

And one shame in being the other : P
I would observe that with DVCS, if your hard drive crashes you can still lose several days of unpushed code, too. I recommend and use cron jobs to push and/or rysnc things around on a more frequent basis for my really important stuff.
(comment deleted)
You could buy a second hard drive and put it behind your other drive and occasionally copy important files from your front drive up to your back drive.
Or use TimeMachine if you are on a Mac.
No, if TimeMachine screws up a file it stays screwed up for ever after every backup, there's no integrity checking. It also completly barfs on large files that change little by little. The best example of that is the entourage mail store, but any single file db will do. I've seen clients bit bad by these problems. Don't get me started on the time capsule...
What should we use instead?
Linus's solution is to write software that people run and use daily.
Point your Time Machine backups at a NAS that's using ZFS with block-level deduplication.
Option-click on the Time Machine menu to verify backups. Sleep well.
Works great until your computer/home/office catches fire.

Personally I have a mirrored drive set that I use as my primary storage, and a third disk that I rsync to nightly and use for backups of other stuff, because I don't trust that I won't have filesystem errors or controller problems that might render both disks in the mirror unusable. Then on top of that I use Crashplan to ensure I have an offsite copy.

For most of my code I also push to github or private external repositories regularly and/or pull to my laptop.

Maybe a bit paranoid, but I've had to recover from enough scary hardware and software failures over the years to not want to take risks.

Raid and rsync are your friends. Use them.
What's wrong with a remote branch you push to and then merge back into master afterwards?
Was my second sentence really that incomprehensible?
This is why I keep my working copies in Dropbox
second that... my working folders are dropbox... and commit to cloud git repository as needed.
Same here. I had some sort of electrical problem with my last computer and lost my hard drive due to it. Unfortunately, my back-up drive was also plugged in at the time and it got fried, as well (really bad luck/timing there).

One of the first thing I did when I got the new computer was to put a symlink to my projects directory in my Dropbox folder, so that all of my projects now get backed up to Dropbox automatically.

We keep our main repository in under dev/$PROJECT and backup repositories under user/$USERNAME/$PROJECT. Then we set a post-commit hook to push to the backup server on commit. Setting up the backup and creating the hook is done by a shell script you run after cloning.
I'm always doing

  git push origin develop
for this reason, but some environments probably don't allow you to do this easily? I work alone. (EDIT: be nice to people)
We typically work in personal feature branches before merging into develop; if you use a similar workflow there shouldn't be much issue at all from pushing constantly.
Can you protect from other folks pulling it? Sometimes people just don't want to reveal their code while is ugly...
Gitolite[1] will let you mark branches as private on the remote either by specific branch name or a regex (ex: any branch that starts with "swah-" is private to you) if you want privacy before revealing your code.

[1] http://sitaramc.github.com/gitolite/

It's more difficult to setup, but it's wonderful to have a dedicated development cluster. Put everyone's home directory on a dedicated file server, which uses NSF to be global to the cluster. Then you can do automated backups on the file server - hourly, nightly, monthly, whatever. There are file server appliances which are configured for this sort of thing.

When you do this, much less important data is stored locally, on developer's actual machines.

Thanks for sharing. Did you consider switching to a smaller laptop like a Macbook Air / Netbook?
No, I wanted to try something radical and crazy and new. Frankly, I expected to be back on my MacBook by now. This has been as much a surprise to me as anyone!
I tried out an iPad app called Koder, it was nice but still lacked some things.

Your post has got me wondering about Vim again.. :) Making the switch to Sublime Text has got me appreciating a more shell-like interface for some things.

Have you ever found yourself wanting to code and not have an internet connection? I think that's a pretty rare scenario, I'm rarely offline.

I haven't wanted to code offline for months. Maybe if I flew for more than two hours I'd miss it. Even the trains have wifi in Germany.

The few times I have wanted to code offline, I've also wanted to look something up >.<

Haha, that's really true. I rarely code offline, maybe it's just another umbilical cord that we should be examining.

Between having tethering and generally ubiquitous tethering, we should be good.

I think I want to try getting into VIM again. Is there a good resource site you like, where I can find a decent guide and some pointers on where to find some language dictionaries? Totally off topic but I'd appreciate it.

I recommend just running "vimtutor" in terminal once you've installed Vim. It's the best introduction. Far better than the online tutorials that sometimes pop up on HN.

Once I got the basics down (15 minutes in vimtutor), I noticed enough productivity gains to use it immediately for note taking and scripting. Then I just decided to jump in and use it for a real project. I learn new hotkeys, plugins, and config tricks every week and I just feel my productivity inch its way up and up.

Vim on my 11" Air is excellent. SSD is nice and fast, and I wonder if the total weight is less than the ipad+bluetooth keyboard.
Nope, Ipad: 601 g (613 g for 3G), 11" Macbook Air: 1080 g, I was unable to find the keyboard's weight but it can't be 400 g.
According to Amazon the keyboard weight is 522g.

http://www.amazon.co.uk/Apple-MB167B-A-Wireless-Keyboard/dp/...

Making the Macbook Air 11" the lighter option.

That is the boxed weight for shipping.

I have the wireless keyboard (the older three-AA revision) and it's comparatively lighter than my 7" Tab, which is 380 g.

edit: Charlie Stross says 325 g for a four-AA revision in http://www.antipope.org/charlie/blog-static/2010/05/ipad-wri.... Macworld says 323 g in http://www.macworld.com/article/150600/2010/04/ipadwhichkeyb...

My Apple wireless keyboard (model A1314) has 2 AAs, have there really been that many revisions?
I don't personally recall the four-AA revision. Wikipedia links to Apple's press release http://www.apple.com/pr/library/2003/09/16Apple-Introduces-W... which confirms four AAs.

My keyboard, bought in November 2008, part number MB167LL/A, definitely takes three.

Current revision available on Apple's website is MC184LL/B and that one is well known to only require two.

So, this is something i worry about.

I'm using time machine for backups, so i don't think i'll lose much ... but i'm sorta hazy about how i should be using svn for all these little incremental steps. I'm uncomfortable with committing code that's going to break the whole system.

Should i be creating a branch for projects longer than an afternoon, and just committing that fairly often? I feel like eclipse's history is working okay but i have a vague paranoia i'm doing something dumb when i see comments like this.

(comment deleted)
With SVN, probably, but the branching just feels heavyweight so sometimes it's hard to motivate. Git with the "git flow" addon seems like it'd be a better fit for you. Being able to checkin in "to your feature", as opposed to waiting till it's done and ready, feels great.

It's also not just about avoiding data loss. If your feature starts going off-course or has a bug, you can look at previous revisions to get fixed up.

The major workflow shift that involves the skies parting and mana floating down from heaven when you switch to a DVCS (git, hg) is the ease and lightweight nature of branching.

Having used git for four years, I now feel absolutely filthy if I'm not coding on a branch. If I start coding anything, I make a branch first, because the overhead is nearly zero, if I screw something up I can easily revert, and the downside of being scared to push code is too great.

Example: Yesterday I started a new feature. Step 1 was to branch from our develop branch. A bit into the coding I realized that this feature was going to take longer than expected. I committed what I had on my branch and pushed it to the remote repository (github in this case). This affects no one else, because the code is on a branch.

What really makes this possible is that merging is so easy. Branching and merging in svn was scary. I was never sure if something horrible was about to happen. With git (and hg) branching and merging is the expected behavior, and it's easy.

Always being on a branch also makes it easier to deal with interruptions. "Hey, there's an emergency, can you fix Foo?" No problem, commit what you have on your branch (or use `git stash` which is amazing) and jump back to the branch that has the code you need to fix. Need that fix in your branch as well? You can merge or simply `git cherry-pick` a single commit across branches. You no longer have to worry about the dreaded "Did I already merge this? What if I merge it again, what will happen?"

This. A thousand times this.

I use perforce for my daily work, and all too often I'll get to a stopping point and think to myself that my approach isn't working - usually I'll wrap my stuff up in a changelist and save the diff off to a file. Then I need to revert to latest and start my work from there.

It's not hard, but it's slightly painful, because if I wanted to try different approaches I end up having dpks lying around on my disk which have no easy relation to what they contain.

I've been tempted to install Hg and use it's branching mechanisms on top of perforce, but I'm not so sure my workplace would condone that (plus, Hg + perforce may not play well - I'm not sure).

Um ... you might want to try `p4 help shelve` first. Shelved changelists are basically the same as a "git stash" - but they're stored on the server, so other developers on your team can review a changelist before you actually submit it. One of my favorite Perforce features, actually.
Changelists are a feature I really miss in other source control. It's nice to be able to keep orthogonal changes separate
As others have pointed out: you're using a tool that makes you not want to commit very often. Change to a tool that doesn't have this problem, there are nice ones out there now.
"I'm using time machine for backups, so i don't think i'll lose much"

Time Machine is great, but as others have mentioned that may not help if the building catches on fire. It's good to also have your stuff backed up at a different location, preferably in a different time zone. :-)

Edit: Like others, I use DropBox for stuff that doesn't really warrant a full-blown source control system. It's very easy to just right-click, compress, then copy the zip to the DropBox folder.

Insightful, and so close to a haiku as well...

Here's an attempt:

  Mac lost my data
  Many days of work gone
  Cloud to the rescue
Mac lost my data

Many day of work gone

Learn to commit more

Can I get this on a t-shirt?
(comment deleted)

  It's the poor craftsman
  Who points the blame at his tools
  Y U NO COMMIT?
So this is why Even if you are u63r 733t Time Machine still rocks

  There once was some data I lost:
  Days worth of work just got tossed!
  So I decided to write code
  On an iPad plus Linode
  Getting backups for minimal cost.
yours is not quite a haiku either.

    you say its haiku
    but you missed a syllable
    in your second line

  crafting great software
  takes many small commitments
  like playing Jenga
The cloud went down

Cannot get to my work

Twiddling thumbs feeling dumb

Variation:

The cloud went down

Cannot get to my work

Throwing birds at pigs

If I may offer David Dixon's classic?

       Three things are certain:
       Death, taxes, and lost data.
       Guess which has occurred.
(comment deleted)
Welcome to the hacker news sub-reddit.
This.
It was a joke. I can't delete it now.
How about if he is using Git? It is normal to work out of your local repository and only sync with the master occassionally, no? At least on projects that can tolerate such methods.
I push to a personal remote at least twice a day. Not doing so is asking for trouble.
And I agree- I am a veritable slave to keeping my data syncronized- but I recall many people lifted up the local repo idea, and being able to sync twice a week, as the herald of the future.
Well, you can pull from upstream twice a week. And you can keep a master on a computer in the next room.

(I'm also not terribly worried about my Air or my Hackintosh giving up the ghost, so...)

I highly recommend upping this closer to twice an hour.
I said "at least". ;) It's really more like "oh hey, I just committed and it works, might as well push while I'm here." Usually every 3-4 file changes or so.
Probably using SVN or CVS. Everyone I know used those systems that way but moving to a modern RCS usually gets people checking in a lot.
Even back on svn I tended to use svk (not in offline mode, just for workable merging) and branch for everything - keeping to a rule of "it compiles? commit it" and then only caring about everything working when you merge saves data loss and has the advantage of keeping your thought process, even when that process turned out to be wrong.

CVS? I think I've forgotten how I used that, thankfully.

There once was a man with a Mac

One day his VMWare went wack

So he picked up his code, went to Linode

Which now handles all of his stack

As I read the article I knew something like this would be the top comment on HN ... :-/

Apparently lots of people make this mistake.

Is it stupid? Maybe. Probably.

Do we need to have a lengthy discussion about it every time it is a minor part of a story or article? I'd rather not.

Why can't just install linux on his macboc and sync everything using ssh/rsync/git without being such a hipster.
I think the way of the future is a smaller powerful notebook, like a Thinkpad X220, and then using larger monitors and whatever cloud service you want.
Looking at the setup of the iPad on your table with the keyboard gave me neck ache. I can't imagine what that does to you on a daily basis.

Interesting experiment, I don't think I could ever move to doing something like that permanently.

Anyone tried to do this as a web developer? I know theres an app or two geared towards being a web dev environment, the one good one i found (its called Gusto on the app store) i didnt get to test properly because it didnt support SFTP yet (due to apple requiring some permission from the gov or something, not technical limitation).
I do some web development in my spare time but I think I'd really miss the developer tools in the browser if I did more client-side javascript.

There's always firefox-in-vnc, but that's a pretty awful solution.

It's almost impossible if you need to do anything related to graphics. Even picking a color. Maybe you have such things already laid out in proper sass files, and you've mastered zen-coding, know most of the various parameters, have templates for everything, don't need to look up sample code all the time, and you don't need to copy and paste random things from the web (text selection in safari is still awfully dodgy). And you don't need the various standards and documentation open right next to you.

Still.. even plain HTML is a lot more visual than code. so much switching can suck.

.. now, two or three iPads, that's the ticket.

I was just using Gusto for web development at lunch yesterday. It's a pretty good way to work if you don't want to drag a full laptop around everywhere. It's like that famous saying about the best camera -- the best coding tool is the one you have with you.
I tried to, but a few things make it impossible:

- Most editors suck in one way or another

- You have to work on a terminal if you want version control, builds or setup local servers

- Mobile Safari is not fast enough. You spend a lot of time reloading pages

- No inspector for the DOM, javascript, debugging, profiling

- Zero ability to handle graphics

I can't deny that this is a cool setup but I can't see it being useful for long. I personally need to see multiples windows simultaneously as I work. Swiping over can't cut it for very long. But good for you, man. To each his own I suppose.
I must confess, I did wonder about adding a second iPad for browsing documentation, or maybe one of the new kindles...

I went through a phase of using multiple monitors all the time. After a year or so I came to the conclusion that alt-tab is quicker and easier than looking at another physical screen.

Swiping isn't; I wish alt-tab worked in iOS. Still, it's close and it stops me checking my mail too often.

I think this is one of the places where Win8's tablet interface will gain fans. I've seen the developer preview and being able to snap windows to the side and get a "mini mode" (or whatever it's called) is really cool.
This. I'm sure a "mini mode" will be a part of every tablet interface in a couple of years' time.
I seriously doubt that you're alt-tab'ing faster than you're making a saccade to another monitor. We're talking tens of milliseconds to glance over. What if you have to hit tab 2/3/4 times to get to the application you want? And you have to stop and see how many tabs you need?

Looking over at a different monitor is significantly faster.

You can use GNU screen to have more than one bash shell running, and you can use tabs and screen splits with Vim. I use to do this on my G2 phone; it's easier to play with Vim over ssh with a physical keyboard. Unfortunately, my phone lacks some critical characters like '|', '>' and '<', but it's really nice to be able to make edits wherever, whenever.
For anyone still using gnu screen, tmux.
Looked at it; didn't see any compelling reasons to switch; went back to screen.

Screen is for the most part "good enough" that any replacement that aims to supplant it completely needs to either be vastly and obviously superior or enough of a drop in replacement that it doesn't require any effort to switch (I'm most definitively not investing time updating config files or changing key presses unless the improvements are dramatic).

As far as I can see, while tmux might be "better" in some nebulous way, the value proposition is way to weak to invest time in switching for me.

tmux is 4 letters, screen is 6 =) And splitting view sucks less.
I rarely split views, so that makes no difference to me - all my splitting tends to occur in Emacs.

And I never type anything to connect to my screen sessions. How primitive ;)

I have shortcuts for the main machines I use that opens a terminal window, ssh's to it using my key, and attaches to my running screen or starts a fresh one if none is running (rarely - most of my screen sessions are 1+ years old)

My sessions on less important machines run in screen windows.

shrug Maybe. It's all about what's valuable to you.

I switched to tmux because it is better maintained and it has better screen splitting functionality. I also mapped screens commands over to tmux, so the switch was basically painless. Took all of 15 minutes.

If you're cool with screen, you're cool with screen. No worries.

The maintenance thing means nothing to me, since I basically don't need any changes unless a new version of my Linux distro flavor of the day breaks it. There's been nothing new in Screen in the last 10+ years I've cared about.

And I don't use the screen splitting at all - I use splitting a lot in emacs, but never in the terminal, so that's basically a non-feature for me.

I want to create, remove and switch between windows, and have a status bar showing their names. That is all.

I guess these are the reasons I've never seen the point in switching.

I thought this too. I invested some time because tmux is shipped by default in OpenBSD and thus I don't have to install screen on my firewalls. I even submitted a patch to tmux to remove all the bindings that I didn't care about so in that early transitional period when was using the help screen often, only the commands I actually use come up.

I REALLY like that the hardstatus line equivalent shows the command that's currently executing (think: bash, make, ./configure etc). That said, if you don't use the hardstatus line, I don't think there's much of a reason to switch unless you want multiple different size panes which screen doesn't really support.

My first thought was, "Oh! no you didn't!"

Kudos for thinking of it. I think that it's a very viable solution for those who don't have a great need for a graphical IDE. But as a web developer I have to test across all major browsers, so I can't switch everything to an iPad. (Not that I wouldn't be interested in trying it.)

I heartily agree -- once you add a wireless keyboard to an iPad, it stops being a toy. I use the keyboard and an iPad 1 to write my first drafts (both locally and google docs, if need be) and with VNC, I code on my remote servers as well.
How do you keep the iPad's screen comfortably facing you if you're not holding it?
I have a protector case (Incase) which has ridges to keep it open at an angle, landscape. Very low-tech but it keeps it at the correct angle for me. Back when Border's were still around, I just needed keyboard and iPad (power lasts a long time) to work on my writing at one of their tables or even their Big Comfy Chairs(tm).
With case that double as an adjustable stand. I can't figure out how anybody uses an iPad without one. The smart cover's one fixed angle doesn't cut it.
You could actually do the same thing WITH a Macbook Air/Pro. The beauty of a cloud linux instance + gnu screen isnt limited to the ipad and so you could still have a bigger screen and the possibility to go back to GUI apps if you need them. I like this for travelling on the go, but spending my normal workday in 1024 resolution ? Naaa.
This is true, but I'd be sacrificing the silence, the portability and the battery life. And the hipster factor, I guess.

102x768 isn't for everyone, but in text-mode it's all the same. I've no idea how many hours I've spent on a huge high-res monitor staring at a relatively tiny terminal window surrounded by a pretty desktop picture.

The battery life of a Macbook Air is pretty damn good. You can get a good 6+ hours of work out of them before needing to plug in. Not quite iPad-scale, but close enough in many cases. Also, the iPad does tend to run out of battery a bit more quickly when using 3G and bluetooth heavily, I believe...
For me, 6 hours is the difference between needing to take a charger to work and never thinking about it. If I'm going to take a charger, I might as well have 1 hour battery life.

I didn't buy the 3G version, but I do use bluetooth for the keyboard all day and still get around 9 hours out of it.

Maybe with the 13" MBA or MBP, but my 11" gets around half the battery life of an iPad.

On a different note, an iPad also makes for a decent external display for a cramped 11" MBA.

It's useful to note that the Air's battery life is fleeting if you actually use the processor. Intensive game development has left me thinking that it's life is closer to two hours.
I see your point, but still, battery life/silence/portability doesn't seem to be worth the flexibility of having full osx esp when compared to an Air
The restrictions of iOS make me happy: I have a simple consumer brick. I can wipe it and restore it on a different device without losing a single byte. It never stutters, never misses a frame. I never need to care which programs are running or the layout of the filesystem.

The psychological effect of this is surprisingly powerful.

I'm not going to argue with your opinion like others are doing, but I find it very interesting that you have this viewpoint. It would sort of be like a car enthusiast preferring an automatic car for its smooth, self-maintained shifting, or a skilled cook preferring a boxed meal because it is easier to make.
The iPad is his terminal, not what he's programming.

So it's more like a cook who prefers an oven with a temperature knob over the flexibility and control of lighting and tending his own fire.*

* I say this a someone who definitely is glad not to have to kindle a fire to cook even the most elaborate meals, but who loves a good wood-fired pizza.

Don't overlook the cost difference as well, the iPad2 is half the price of even the base MacBook Air and if you include the cost of the keyboard you still have a couple hundred bucks left over.
This is true, but I'd be sacrificing the silence, the portability and the battery life. And the hipster factor, I guess.

A 11" laptop, particularly the new MBAs, is less cumbersome than an iPad + keyboard and far, far more useful as a real development tool. Other than battery life I just don't see the point of doing this other than the "hipster" factor.

Just the ability to spin up a Rails instance on my own machine or run XCode alone keeps my iPad on the shelf when I'm working.

I don't see the point of doing anything for the "hipster" factor.

Sometimes people are surprised that the reason I buy macs is not because they're metal and shiny.

If there's more than a little visible desktop around my terminal, I feel like I'm working through a keyhole. Also, being able to stretch out horizontally to 160 characters or more is wonderfully relaxing; it makes chaining two or three tests in an IF readable, in the process saving at least two lines of vertical space, which is in far shorter supply on modern 16:9 displays. (Although, it seems you use your iPad in portrait orientation, which reverses these benefits, I suppose).
One thing I did pick up on that could be _very_ attractive is the idea that you would use the same apps on the iphone and ipad so you can take your desk with you on your phone in a way that you can never do with apps that you run on your laptop.
* iPad 2 (16Gb, WiFi) * Apple wireless keyboard * Stilgut adjustable angle stand/case

Hopefully someday they'll sell portable computers with an integrated keyboard, and some type of mechanism to hold the screen up.

What's the solution for when "the cloud" loses your files and the ToS says "so sorry, we'll try harder next time - here's next month's bill"?

When I keep my files locally, the only person I have to blame for losing them is myself. Out in "the cloud", there's quite literally nothing that can be done to recover my data.

Linode offer monthly backups for $5. All my real work is pushed to the office repository. All my personal projects are done in a Dropbox folder.

I'm pretty confident the data will be ok this time.

Backups with same vender aren't backups.
You can "quite literally" keep your data in two places in the cloud at once.
This has to be the most ergonomically inefficient set-up ever!

I also cannot fathom how to work with < 2 big monitors (> 21" at least). And a tiling window manager. And a decent mechanical keyboard... ok ok..

Interesting setup. I'd be interested in knowing how it works out in the long term.

The wireless keyboard is really good; it's not quite as nice as a mechanical one, but it's easily better than a laptop keyboard.

If I ever go back to my MacBook, I'll take the keyboard with me.

I have a tiling window manager. It has one tile.

There is only one time that my batteries die on the wireless: When I don't have fresh ones nearby. Also, some server firedrill also increases the probability exponentially.

I'm sure it's a consequence of thermodynamics, but I can't explain it.

I think you may be missing the point about mechanical keyboards, my friend.

The appeal of a mechanical keyboard stems from the switches under the keys that offer varied pressure curves, pressure thresholds, and physical feedback (depending on the switch type).

Both the apple wireless keyboard and MBP laptop keyboard use scissor switches which are the typical laptop keyboard switch type. Some people like this switch type, some people do not.

But if you're to say something like "it's easily better than a laptop keyboard" you can only make such a claim based on size or number/position of keys, since both use the same switch type. I'd wager a guess that the nature of the key switches is probably what your parent is interested in.

I have a 13" MBP and a USB apple keyboard. The keys really feel different, despite same layout. External keyboard has easier to feel clicks and requires more pressure. Could be the use on my laptop, though (2 years vs 1 year).
You may be correct in that instance, then. The older USB apple keyboards likely use rubber membrane key switches rather than the scissor switch type. In which case, the feel of the keys would definitely be different. I personally was referring to the newer apple wireless keyboards.
I have a 2010 MBA, a 2010 Apple Bluetooth keyboard and a 2011 Apple USB keyboard (with number pad). They all feel different, even if the switching mechanism is the same - the Bluetooth one is best (by a long way).
(comment deleted)
Not just lack of screen space but looking "down" to your screen even tilted on a table will wreak havoc on our neck/spine which extends to your extremities (and head) quickly. Simply slouching and tilting your head up pinches nerves in your neck which leads quickly to wrist/arm pain.
Yes, "text neck" is a serious problem with working on laptop/tablet. Using an external keyboard would allow for proper placement of the display on a desk. But manipulating the iPad via swipes while positioned at head level could lead to shoulder problems!
A tiling window manager can definitely be a huge productivity booster. Perhaps even more than adding an extra display, which is often said to be the cheapest way to improve productivity. A tiling WM costs nothing.

I've even started working comfortably using just one display now that I've changed to using a tiling WM. With a floating wm, I needed at least two large displays to work comfortably. Lots of that screen area was wasted just by showing a little desktop in between of poorly arranged windows. I'll never go back to floating windows with frames and decorations.

""Perhaps even more than adding an extra display, which is often said to be the cheapest way to improve productivity.""

And which can also be a way to decrease productivity, with distractions etc. I am more productive on a smaller screen laptop than I am on a 2 screen set or even one larger (21, 27") screen. Mainly because it helps to focus on the task at hand.

We also didn't have 2 large monitors to each workstation back in the day, and somehow we did fine. Spoiled much?

We used to program with punch cards... so yeah we're spoiled and damn happy about it.
Evoking punch cards?

As a programmer, you must know about diminishing returns, right?

Nevermind diminishing returns, how about full circle? Eventually all of this abstraction will become so hard (and buggy) to maintain that we'll go back to using punch cards.
Personally, I get more work done at the office where I have two screens. When I'm at home on my laptop, I notice a difference in productivity. It's not a huge difference, but it's noticeable enough for me to want to buy a nice 27" the next paycheck.
As someone that's easily distracted I've found Lion's full-screen support is quite the blessing if you're trying to focus on getting things done.
Mission Control on OS X on a laptop is also a huge improvement over overlapping windows. Swiping between full-screen apps becomes second nature very quickly.
Having multiple monitors isn't good eronomically IMO. I always prefer what I'm working on to be on direct center, and I don't really see the point of having other stuff that isn't direct center. I prefer to alt-tab.
I have a large monitor on an arm in the center flanked by monitors to either side. My main monitor just has a full-screen emacs. The other monitors are for peripheral information such as browsers, irc sessions, email, etc.

It's great for keeping API docs open while I'm working without leaving my editor.

Having the center monitor on an arm just lets me adjust it's height when I move between leaning forward, slouching, or sitting straight, standing, etc.

A single monitor is limiting as it requires more context switches as I swap out windows in my viewing area. It's much nicer to just leave all the important windows open in a nice grid that spans multiple displays.

I get it: I used to use 3 monitors.

I just have found that if you want to read something, I prefer it to be on the center monitor anyways, so what's the point in having multiple monitors?

Plus, I prefer to work on my laptop screen, because it's more flexible - I can put my feet up, move around, change positions easier.

Just my own personal preference

I love 3 monitor setups, with the big one in the middle and two cheap small ones on either side. All my input (editing, browsing, etc.) happens in the big fancy middle window. Test logs on the left, and server logs on the right.

The only time I use the side monitors for anything else is if I'm following along with a screencast.

Are you sure of that? My understanding is that there's no difference between single and multi-monitors, ergonomically.
I have recently started using a laptop underneath a big honking monitor. It is fantastic. You get a second screen (down low) for stashing things like shells or firebug and looking at the big monitor (up high) forces good posture. Going back and forth feels more natural than looking left-right. Switched away from equal sized dual monitors. Never looking back.
Once upon a time programming was a lot of thinking, a little typing, and even less compiling. Maybe even some pen+paper and chalkboards. If you go back to that way of programming, I don't see why poor ergos would be a problem.

Certainly not "in vogue" and I don't know if it's feasible today. Still an interesting thought.

why did this get downvoted? it's a valid point.

This is actually the first time i've seen a downvoted comment that i just, really can't understand why it was downvoted. Anyone care to explain?

I have seen this kind of thing more and more as of late. I have concluded we are beginning to see downvotes used as "dislike" rather than "disagree".

For example, suppose I posted a comment irrefutably proving that Ruby was the worst programming language ever written. A year or two ago, I would have been upvoted for making useful observations. I suspect today I would be downvoted, because people like Ruby.

Note: I have nothing against Ruby. It is an example.

The way I see it , downvoting is intended for comments which are "bad" (irrelevent , rude , incomprehensible , just rehashing what has already been said etc) this makes sense because downvoted comments are made harder to read.

Just because most people disagree with a post does not necessarily mean it is not worth reading..

Pherhaps there should be a seperate disagree button but I don't see what purposes it would serve , when I read a comment I decide whether or not I agree with it , whether other people do or not does not matter unless they are pointing out factual errors.

I'm also ok with downvoting for comments which you "disagree (factually)", aka you strongly believe the comment is simply objectively incorrect.

For example, if I made an unsubstantiated statement that "Water is composed of Hydrogen and Nitrogen", that would be worthy of downvotes.

Where that gets tricky is when someone asserts something couter to common wisdom, but attempts to substantiate it. You then need to evaluate their defense first.

Yes, that is true but in the case of someone asserting something counter to common wisdom then I would err on the side of caution and not downvote. Better to reply directly and point out why they are probably wrong if you have the knowledge to do so.

What really depresses is that they have a similar system on the comments for various UK newspaper websites (Daily Mail I'm looking at you) and you often find that the most uprated comments (which are then displayed at the top of the comments section) are arguments that allot of people may agree with but the arguments (and often the spelling) presented are just terrible and usually consist only of an Ad hominem attack on some person or organisation.

I generally find a thoughtful defense of an unpopular viewpoint a much more interesting read than somebody who thinks they are clever by posting some content free attack on something that is trendy to hate.

Ok, this rant is way off topic now and thankfully this sort of thing seems to be mostly absent from HN :)

I'd say it's worse if you make an unsubstantiated statement that goes with the common wisdom than when you go against it. At least when a comment goes against common wisdom, substantiated or otherwise, it can spark interesting discussion. A rehash of commonly held beliefs generally doesn't spark anything that interesting and amounts to little more than noise.
I'm mostly with sliverstorm (and upvoted him). People often wonder why I'm working on a 13" Macbook and ask if the display isn't too small. That's when I point to my head and tell them that's where the action takes place, not on the keyboard or the screen. (Obligatory: http://www.folklore.org/StoryView.py?project=Macintosh&s... )

That said, decent ergonomics are almost always a good thing. Even if you're not typing a lot, you'll probably still spend a lot of time looking at the screen. Having a bad setup maybe doesn't matter for your wrists in this case but it can still be detrimental to your eyesight and of course your back.

Maybe that's why sliverstorm got downvoted: there are good reasons to care about ergonomics even if you're not typing a lot.

(For what it's worth, my excuse is convenience: I'm working in lots of different places and I can't be bothered to lug around a huge notebook or an external keyboard. Before the age of notebooks I used to have a fairly ergonomic setup with a big screen and the awesome 1st gen Microsoft Natural Keyboard, and I often do miss it: maybe I'll return to such an "immobile" setup next time I have a job with a desk.)

Ah, a fellow Natural Keyboard (Pro?) user! I buy a bunch of those used. However, the recent Microsoft Comfort Curve Keyboards seem to have an even better keypress feel for me.

YMMV.

> Having a bad setup maybe doesn't matter for your wrists in this case but it can still be detrimental to your eyesight and of course your back.

I'm 33 and a year and a half ago I was diagnosed with degenerative disc disease in my neck from spending many years hunched over looking at things. I am extremely near-sighted (legally blind, actually) and that's the only way I can see to do... well, pretty much anything.

I do a lot of stretching exercises now and have a ridiculously expensive pillow, which both help a great deal. I'd recommend them to people who do a lot of desk work.

http://www.spine-health.com/conditions/neck-pain/neck-stretc...

Can you share the name of your pillow? What does it help with?

I can't really find a good pillow(that and a good bed). I'm not in the US so don't have many local choices, but might be able to ship it.

This is actually the first time i've seen a downvoted comment that i just, really can't understand why it was downvoted. Anyone care to explain?

Occasionally an unintended downvote happens when someone on a touchscreen tries to scroll or upvote.

I work on quick iterations based on an ongoing design and make decisions based on data.

This requires an expansive, ergonomic, and responsive environment. Optimally, three displays running at 1920x1080.

This doesn't mean I somehow shut my brain off when making design decisions or thinking into the future of my code just because I'm not sitting there for 30 minutes before hammering out a punchcard.

Stop romanticizing the bad old days, the whole reason Unix was made was so that we could have fully interactive programming environments.

I used to program with a 24" monitor. Then I switched almost exclusively to my 13" Macbook/Pro and haven't looked back.

The screen is just the right size to fit two 80x25 text editor windows side-by-side when full-screened. Swiping back and forth with Mission Control is almost as quick as switching your glance from one big monitor to another. Having your "mouse" right below your keyboard makes clicking something only marginally more time consuming than contorting your hands to hit an Emacs command sequence.

Probably still faster with the big setup, but I get a lot of mileage out of my little setup and I get a huge productivity/creativity boost from being able to wander around the house, head to a Starbucks, etc.

Neat bit I picked up on from Mission Control; if you're using the trackpad swipes (vs ctrl-arrow) to switch, if you don't swipe all the way (roughly 1/3 screen), you can "peek" over at the next space w/o switching and spring back when you let go instead of having to swipe back.
Wow, thanks!

Mission Control is pretty fricking awesome.

Do you guys use Mission Control with multiple browser windows? It doesn't work for me.

I find that when I have 3 Chrome windows open in one 'desktop', when I swipe to the other one and click Chrome it sends me back to the main 'desktop' where the other 3 windows are.

I don't want to have to use Firefox or some other browser in my other space.

How do I use Chrome in both, or is that not possible?

I use 27" Dell for my Java development and 11" MacBook Air for Javascript. The bigger screen is essential for pair programming but 11" is almost good enough for most purposes. Its size causes most problems when I need to inspect the dom inside a browser.
Seconded, thanks you saved me a lot of typing. :-)
For anyone who spends their day (or most of some days) in a terminal connected to a remote server, I can't recommend using GNU Screen enough (brief tutorial: http://www.kuro5hin.org/story/2004/3/9/16838/14935).

I've worked almost exclusively on remote servers, using the command line and vim, for about eight years now. It's only been in the past year that I started using Screen, and I feel stupid for not using it sooner.

Since we're pimping terminal multiplexers, I quite enjoy tmux (http://tmux.sourceforge.net/). I used to use screen, but found tmux to be faster, smoother, and have more logical key-combos (your mileage may vary).
I saw two people below who say they prefer tmux over Screen, so I just looked it up. What I care about most is persistence; I use multiple terminal sessions if I want to have multiple windows. Did you find any difference for that feature?
Can you explain your question better? I don't understand it enough to take a shot at an answer
The only feature I care about is persistence. Is there a difference between Screen and tmux regarding persistence?
If you only need persistence, look into dtach. That's all it does.

Both screen and tmux offer multiple persistent sessions, the difference is the command syntax.

Back when I was deciding on a terminal multiplexer I picked tmux over screen because session sharing seemed to be done in a more sane way. But then again, had I used screen for any length of time I'm sure I'd have gotten used to it.

Looking briefly at dtach, screen's handling of named sessions seems to be marginally better, so I'll stick with it.
I've been using screen for years, and just switched to tmux since so many people have been raving about it. The reasons I switched were:

1/ Configs for status prompt were easier to grok

2/ Actively maintained. I used to use vertical split all the time and tmux had that where as gnu screen required hack patches.

If you only want persistence, screen, tmux, dtach do pretty much the same thing.

I used to use screen, but then moved on to tmux.

Main reasons for my move were

* Tmux handles split screens better (had horrible lag in screen, its a known bug)

* Panel and window navigation is easier in Tmux

And anyone who uses GNU screen ought to know about Byobu, which makes screen a bit more visual and easy to navigate. Especially perfect for headless instances.

Not wanting to leave it is why I've not spent much time with tmux. Is there something similar for it?

Ah! This is excellent! byobu appears to make screen configuration (particularly status lines) easier, while otherwise keeping out of the way. I won't be switching to F-key controls right away (I have a soft spot for the iTunes and volume bindings on Mac keyboards), but since byobu only speaks when spoken to, it is a welcome addition to my workspace!
Great! You can switch between screens using Control-A and the screen number. I hadn't even known about the function keys until now.
Also $ESCAPE-space and $ESCAPE-backspace move sequentially among screens. control-a is screen's default $ESCAPE, but it's a poor choice given the use of control-a for beginning-of-line. I'm pretty happy with backtick (`) with no modifier now that I'm using $(...) for bash sub commands. You can't use byobu to change $ESCAPE to a sequence that doesn't use control, but it is easily set via "escape ``" in ~/.screenrc.
FYI, for the expected control-a behavior press the 'a' again after control-a.
Yep. But "control-a" is a muscle reflex, and using anything else will make a certain set of users (at least emacs users) much happier.
Screen is great. Though not it's fault, the only downside is that it cant persist through a machine restart.
I've never restarted my Linode ;-)
What about when a kernel update is due? Is something fancy like live patches (via http://en.wikipedia.org/wiki/Ksplice or the like) happening or are you simply skipping security updates?
Well, I've only had it for a month. No, I'm not going to try to do anything fancy, the machine will go down for kernel updates just like any other.
This is true, but:

   11:12:52 up 44 days, 54 min, 63 users
The machines I connect to are restarted rarely. I expect this particular machine to be up until Christmass time, at which point there will probably be some scheduled maintenance.
Can you say the same about your workstation? Can you say the same about your power grid? Can you say the same about your internet connection?

Screen/tmux/dtach are so trivial to implement and use and make the connection much more bulletproof that if you foresee there ever being a possibility that you might disconnect and lose work, then you should probably be using one of them.

This is my workstation at home:

    %uptime
    11:49AM  up 143 days, 17:08, 1 user, load averages: 0.00, 0.00, 0.00
My internet connection has been up for the last 65 days (yay for actually logging data). I don't keep remote connections to servers as I do all my work on my workstation and push when needed at which point my servers automatically pick up the changes and put them into {testing,staging,production} depending on where I push.
I think you misunderstood me. I'm the person who said how great Screen is at the top of this thread. My uptime comment was in response to someone who said "the only downside is that it cant persist through a machine restart." That's not much of a downside for me because the machines I have my Screen sessions on are down so rarely - literally, less than half a dozen times a year.

In other words, I use Screen when I connect to remote machines. Those machines go down rarely.

You are 100% correct. My apologies.

My point though, which I'm sure you'll agree with, was to preempt the idea that "my machines don't crash, so I don't need it."

Nope, but you can script both screen and tmux, and have it automatically start a screen session for you when you login.

I've got a little bash script for my VM that launches tmux, and starts a development web server in one of the windows, and tailing logs in another, and then dumps me into my project directory.

I also found tmux much, MUCH easier to script than screen.

Just went and checked it out, the specifically list screen as something they'd like to support soon, but that doesn't work (I think because "Multiple processes with hierarchy" doesn't work yet).

So... maybe someday, but not yet.

My only very minor issue with screen is that it ignores window resizing escape codes. I have my .vimrc setup to resize on start/exit and screen doesn't care at all. I am totally vain I know.
I've been using screen for over 16 years now. The only time I have code on my local machine is if I'm writing code to interface with hardware directly or developing for a console like the GP2X. Otherwise, my computer has mostly been a terminal to servers out there which I never physically get to see. I can switch between machines at home or at work and resume my screen session.

In other words, it seems like I've been working in 'the cloud' for the past 16 years and it can appear to me that everyone else is slowly catching up to this nifty idea.

The reality is that trends swing between thin and thick clients, centralization and decentralization. They are competing forces.

What about lag? I find sometimes on bad connections that tmux lags quite a bit (in Sweden, sever in UK). How do you deal with this? Surely packet loss and latency must've been a bigger problem a decade ago.
Lag, well I used to dial up from South Africa, to places in Europe or the US. The call was normally blue boxed over analog satellite lines, one or two hops to a geostationary satellite and back. I used to bring my speed down to 7200bps since it was the most stable. I tolerated that because I had no other choice, and you learn to type very accurate that way and pause at certain moments because the next command will be a bad idea if you get the previous command wrong. (e.g. cd /tmp/bar ; rm -rf foo )

Things have improved for me a lot since. It does help that I live in the UK now. I believe nowadays within Europe something must be wrong to notice the difference (especially with SSH compression and screen), and the latency between the UK and the US has improved so much recently that I've forgotten that most of the servers I've been working on the past year is on the other side of the Atlantic.

If you require a gui, NX is indispensable.
Since I had to look it up, to save others my effort:

http://en.wikipedia.org/wiki/NX_technology

Looks pretty good. Bookmarked for whenever I need a good remote desktop.

It is the most useable remote desktop system I have ever used. On a medium-speed link it is nearly seamless, which is a lot more than I can say for RDP, VNC et al on a direct LAN connection.
Incredible that we seem to be moving back to powerful mainframe computers in a timesharing system. A 40 year cycle?
Yes, I was really happy that so many open source tools born on such equipment were still around and perfectly tailored for this kind of setup.
We also used to use diskless sun terminals that worked completely over the network.
It is a bit better than that though because you can have a complete server environment to yourself, and don't have to deal with timesharing.
Unless you shell out for a dedicated server, you are sharing the physical machine with other people. The cpu is probably scheduled according to the size of the instance you bought, but you might get the whole thing if your neighbors aren't running anything.
If this guys thinks having a single 10" screen with no ability to switch between tasks easily and quickly is the wave of the future for developers, I don't want any part of that future.

You can pry my dual 24" monitors + high performance desktop from cold dead body.

I don't think it's the future for developers, I think it's the future for pretty much everybody else though.

I plug the iPad into large monitors sometimes. When an iPad with double the resolution comes out, this won't seem nearly so silly.

The iPad 2 can output FullHD resolution, the app just needs to support it.
Sounds very interesting. I think the major downside would be that you can't really do any development while offline. I've done some of my most productive programming during flights and train rides, so that would be a downside for me.

Maybe Android could give a little more of the "local productivity" option?

While I haven't replaced my laptop, I also do some coding on my iPad under certain circumstances. Instead of using an editor over SSH, I purchased Textastic. It supports SFTP and a host of other protocols, allowing you to edit offline and then sync with the remote host when connectivity is available. I'm pretty happy with that setup.

[1] http://www.textasticapp.com/

That's good stuff! I just did the business version of this post

http://news.ycombinator.com/item?id=3186237

I haven't attempted anything for my normal Objective-C XCode work yet on an iPad.

Anyone out there have any hacks to do iPhone/iPad dev from the iPad?

1. Keep your project in a Dropbox folder or sftp site.

2. Edit your code with one of the many Dropbox-enabled text editors. (Or use Textastic with its sftp support.)

3. Use Hudson's web interface to kick off an Xcode build. Configure Hudson to send built IPAs back to you via email or TestFlight.

4. Download and test your new build on the same device.

It sort of works, even! As long as you don't need to edit your XIB files, and you avoid typos. I'm not switching over to it, but it wasn't as bad as I thought it would be.

There are a lot of comments here from people acting as if not having two 24" monitors and a full mechanical keyboard would drastically diminish their productivity. This year I spent 4 months out of the country with only my 15" laptop while still working 8 hour days. I was surprised to find no change at all in how long it took to get shit done. I think we tend to kid ourselves about how much of a difference expensive equipment makes.
Yes, this is something I wanted to say and somehow didn't: one personal take-away from the experience for me has been that programming, ultimately, is thinking.

All the technology in the world doesn't make me think faster. The most I can ask from it is that it gets out of my way and lets me search, explore and express myself efficiently.

Exactly. A subtle change to our workflows where we force ourselves to think about the problem for a minimum of ten minutes prior to coding will provide more benefit than any piece of equipment ever could.

Not as sexy as a new cinema display though.

> programming, ultimately, is thinking.

I very rarely feel slowed down by my environment. It's possible for it to happen, but most of my time is spent thinking about a problem, not typing.

For the past 10 months, I have only used a 15" MacBook Pro, and I've been wonderfully productive. Before that, I did most of my dissertation (coding and writing) on a 13" MacBook Pro.
I don't know - I find that smaller screens tends to mean more context switching. I often need to move back and forth between more terminal windows / virtual desktop / screen sessions where I'd just split my emacs session horizontally and/or vertically when I'm on a larger screen. The latter makes direct comparisons, cut and paste and working on things that cross files easier (e.g. writing a test and filling in code that correspond to them side by side)

I'm not sure how much a small screen would or wouldn't actually slow me down, but it feels more tiresome to work on a smaller screen.

I think it depends on numerous factors. For instance, I have spent so much time at a Kinesis keyboard that a laptop keyboard slows me down. Not by orders of magnitude, but enough to be annoying.

I used to exclusively work at two 24" monitors. Then I switched to a tiling WM and from many years on OS X back to Fedora. I found that the WM/OS switch improved my productivity to the point that I was better off on a 15" laptop with those two changes than before them on two monitors. And the setup was around $2,000 cheaper.

Now my ideal setup is a single large monitor along with familiar peripherals (Kinesis, trackball), xmonad, and Linux. If you'd told me a year ago that I'd be happier with one monitor than two--or nearly as happy on a laptop as a desktop--I'd have said you were nuts. But, here we are.

I agree that the difference in productivity between the worst-case (Mac laptop) and best-case (Large monitor; peripherals; xmonad) is not orders of magnitude. But I would say that over time it has come to approach 2x, which is not at all insignificant.

And I think "expense" matters little compared to "comfort". If a keyboard that didn't cost $250 was just as comfortable for me, I'd buy it. In the case of this particular switch (laptop -> linode), the comfort level would be close for most tasks as I already live in Vim and things with Vim-like bindings. But the totally new window/peripheral interface would definitely slow me down. I've spent enough years comparing environments over long periods of time to know that.

I think that most people aren't saying that they need the two monitors, laser mouse, etc. It is more of an issue of what helps them work the best. I spend most of my day using vim in a screen session on a remote server as well, but if I switched to this setup I think I would feel cramped. Sometimes I open four terminal windows at a time and have firefox behind them in order to get something done. Sure, I could accomplish the same thing with the iPad, but it would feel like a lot more work. Resistance has a tendency to suck away productivity.
I think a lot depends upon what you're doing.

Most of my coding is done in an ssh terminal using screen/vim. For this task I find myself most productive in a laptop. If you can get used to a laptop's touchpad you can be very productive because I find the time to switch between touchpad/keyboard is much less than the time to switch between a standard mouse/keyboard. The small movement of the touchpad isn't a big deal because the viewing space is small enough.

When using a full blown IDE I find myself most productive on a large, high resolution monitor, mainly because of all the surrounding stuff IDEs add - small displays just can't display enough code for me. However, touchpads are no longer efficient because it takes too many swipes to move across the screen, so I have to use a standard mouse+keyboard, losing some efficiency.

Usually, I find myself wearing two hats - monitoring production systems while coding. Multiple monitors are invaluable here, allowing you to delegate monitoring to 1 or 2 screens fulltime, while you use the other for coding. This way you don't have to mess with alt tabs, you can just take a quick glance when you want to.

One thing I've found invaluable with a multiple monitor setup (I'm currently at 4, laptop not included) is being able to move from monitor to monitor quickly. I use global hotkeys for this - ctrl-1 moves my mouse to the first monitor, ctrl-2 moves my mouse to the second, and so on. Without this I found myself spending far too much time moving my mouse around the screen to truly find them useful.

That really depends on what you are doing. I can scripts as efficiently on a laptop. Larger projects get tougher as I normally want to see a library/another source file on another screen.

Systems debugging is where you really want the space. I often have 4 terminal windows open at once - you need screen real estate for that.

Yeah I been working on a laptop on a dining room table for the last week. I think I get more done, it has been so uncomfortable that I do only what is necessary, no reddit or HN breaks to slow me down.