Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Developer Productivity - The Red Pill (bestinclass.dk)
114 points by fogus on Aug 26, 2010 | hide | past | favorite | 86 comments


I agree with most of the article, but this –

"But in the time he has booted to his Desktop I've already answered 3 emails [..] Vanity slows you down, whether its your choice of VM, OS (read: OSX or Windows) or anything else".

– is hardly an argument when choosing desktop OS.. just put your PC to sleep and next day it will "boot up" instantly, especially OS X.


You can actually map the power button to Hibernate in windows. It's not not complicated either... just a click somewhere in Power Settings. Makes life a lot more pleasant.


The implication that you can't really be productive, or at least as productive as him, without using Linux with emacs and a tiling WM really tainted the other, better advice in this article for me.


The good thing about product related blogs like this is that it reminds me of which products not to buy. I would have a hard time buying a product from someone who wrote a blog entry lacking as little content and exhibiting as much as ego as that one did.

To put another way, there was nothing in the article that didn't fall into one of three categories: 1) Are obvious to most developers. 2) His/her opinion, but not substantiated by any evidence, and probably disputed by as many as would support. 3) Look like possible outright lies.

Not a blog entry I'd consider writing, much less on my company's website.


#1 tip to improve productivity is to not read productivity posts.


1. Get around 7 hours of sleep every single night: 10+ is better 2. Avoid caffeine entirely (coffee & tea): Blasphemy. Please remove this item 3. Maintain your tools: 100% agreed 4. Dont be vain: Be vain when it counts. You don't want the perception of your work to suffer when it's among people who don't quite understand technology. 5. Avoid Social Networks: I hate to say it but avoid hackernews also. You can sink hours into this site. Hackernews is entertainment not actual work. Good entertainment though! 6. Work off a TODO list: 100% agreed 7. Use a tiling WM: OK 8. Use Emacs for Everything: To each his own 9. ...Use Conkeror for the rest: DITTO 10. Always keep looking: 100% agreed If you do something the same way every time you will be left behind


HN is mostly entertainment, but I read it for posts like this that give an insight into the tools that people use. If you find out about some awesome tool this way, it's time well spent.


I get insight from it also but I'm saying spending an hour a day on social news is not working.


"If you get regular Facebook updates, Twitter updates, or any other kind of updates which steals your attention, even if its just for a few seconds, I'm willing to bet that you're working at 50% of your full capacity."

Leechblock is incredible for this reason, its saved me so many times. Great read although I disagree with cutting out tea, forcing myself to take tea breaks every few hours of the day has lead to some great discoveries.


I agree with the caffeine comment. Believe it or not there is a balance when it comes to coffee. Having a cup of tea/coffee every day is not the same as having a cup every 2 hours. As in everything, it is not strictly an on/off switch.

Other than that I totally agree that sleep exercise and food make a great difference. Eating fat with carbs for 3 meals a day will not help you get the mental focus either.


I took it to mean that the author is either on or off with such things, and couldn't merely cut down. I'm the same way. One cup of coffee a day is an impossible dream for me, I'd have to totally quit instead.


If you are in an environment where there is decaf coffee I suggest mixing half caf/half decaf. You cannot really taste the decaf and get in half the caffeine, although it's not a real fix, it should help a little :)


along with avoiding caffeine(except some green tea)...i would include exercise, particularly cardiovascular activities such as running


You could try drinking decaf tea.


herbal tea does not contain caffeine, although its not really tea, it is delicious. I make a mean blueberry + orange combo


> A means 'will loose significant value if not done today', B means 'important, but will not loose significant value if not done today', C means 'optional'.

I find that very often, 'optional' means 'will eventually cross off because it doesn't get done'. I hate having a to-do list that just piles up. Be honest about whether you're going to get something done or not.


I gave up caffeine myself a few months ago. It was rough for the first two weeks but now I sleep better, have a more even energy level throughout the day, and find I'm more patient with both people and machines.

The only thing I miss is the smell of coffee and having something warm to drink on cool mornings.


I got off coffee for two weeks to as an experiment. Note I currently drink about 2 cups a day.

My energy was much more balanced - could wake up fully alert. However, I felt depressed the entire two weeks. Generally just very SAD.

So I got back on the drug after two weeks and with the first cup of coffee I just burst out into laughter. I literally could not stop laughing for about a minture (huge smile on the face).

Now that I'm back on the drug my energy levels are up and down but I'm not in my depression hole.

Anyone else experience depression when going off coffee?


Not coffee, but, I had a similar experience with Coca Cola a few years back. I went from drinking 1.5-2L a day[1] to none[2]. Of course, I dropped caffeine and picked up sugar instead (turns out, its really cheap to grab a Brita filter and a large jug of sugar flavored like Iced Tea to mix into water..).

Now, its slightly more balanced. I try to only have sugar or caffeine when I'm not at home.

1. A glass when I came home from school (around 1:30-2pm), a glass when having a snack (around 4:30pm), and a glass at dinner (around 7pm)

2. My college has a deal with Pepsi -- none of the dining halls have Coca Cola and there is only one or two vending machines that have it on campus.


Interesting, I ran through the numbers and 2L of Coke is about the same caffeine as two cups of 12 oz coffee.


Huh. Didn't realize it was that much. I thought it was only equal to 1-1.5 cups of coffee/day. Thanks for doing the math!


2 Liters of Coke has 300mg of caffeine. That's right about 4 shots of Starbucks espresso, one 16oz cup of Starbucks drip brew, or two regular coffee (non starbucks) drip brew.


I think cycling the usage of caffeine holds promise.

The body quickly becomes use to caffeine so there's really no sense in ingesting it day after day. But if we could restrict it's usage to a couple of cups every three to four days, we could get the benefits of it maybe while not having to incur the cost of withdrawal symptoms.


Cold turkey is a damned hard way to give up caffeine. I find slowly dolling out powdered caffeinated drink mix to myself in water at smaller and smaller doses to work better.


I went from coffee -> black tea -> green tea for a bit and then just stopped altogether. If you're a heavy coffee drinker then cold turkey will indeed be painful. Hopefully you have tolerant & patient loved ones.


> If you're not on a tiling WM, you're constantly switching between the mouse and keyboard.

Can someone explain what the author is talking about? I'm not up to date in the latest Linux WM fads. (honestly, I thought the problem was finally solved years ago)

When I'm working, 95% of the time I launch apps and select windows with the keyboard, on both OS X and Windows.


A tiling window manager (such as dwm, wmii, awesome, ion, and xmonad) automatically tiles windows for you, and has multiple workspaces. Usually, you can just switch between them by alt-1 to alt-9, move windows between workspaces w/ shift-alt-1, etc. If you're mostly working with shells & reasonably large emacs / firefox / etc. windows, they're really nice. With a little muscle memory, the whole window UI thing suddenly becomes a nonissue.

If you ever used ratpoison, it's a better design in the same general space.

I'd personally recommend xmonad if you use Haskell, dwm otherwise.


About sleep: I recently read that the typical American gets about 6.5 hours of sleep per night and that most people need about 8.

Over the last year-and-a-half, I've averaged 7.5 hours of sleep although I do best with 8. On weeks where I average 7 hours of sleep per night, I notice a decrease in thinking speed.


Reading the preface (matrix like), I thought: You as me are here in the bed for sleeping so do it well. Vanity, emacs and other comments are not the red pill IMHO. Clojure rocks, so I hope the author go back to blogging about clojure, examples and applications that I enjoy reading for free.


coffee, vim and screen do it for me :-)


Another poster mentioned "tmux" in reply to this comment but they deleted their post before I could reply. I had not heard of tmux before. Apparently it's an alternative to "screen". I would have upvoted you for making me aware of it.

http://tmux.sourceforge.net/


Tmux is fairly new, BSD-licensed, and has a much smaller/cleaner codebase than screen. It's quickly gotten features that people have been struggling to add to screen for years. (It comes with dwm/xmonad-style layouts out of the box, for one.)

If you already use screen and are happy with it, it's probably not worth switching, but if you're starting new, I'd suggest learning tmux first. You might want to get a fairly recent version of the source, though - it's in the main OpenBSD tree now, and it has been improving pretty quickly.

If you use Unix & ssh at all, definitely learn one of them. Yesterday, if possible.

One of these days I really need to write about getting started with tmux...


> If you already use screen and are happy with it, it's probably not worth switching

I switched from screen a few months ago and have been much happier, but I literally spend 80% of my day on multiuser terminal sessions. tmux is much nicer than screen for sharing a session.


Another alternative I just heard about is "nx" (though it's commercial). It can resume entire remote desktop sessions as well as single windows. I've played with it a little, but I think I like tmux better.


Original comment was something like:

"Obligatory 'Have you tried tmux?!?!'"

I deleted it because I thought HN might think I was trolling or something.


Ignoring the fact that I prefer to multi-task--- I do not have 5 minutes of downtime with context switching. If I'm thinking about a certain problem--- it helps to stop and skim my twitter feed for a couple minutes while thinking about it.


I agree. While interruptions in something like watching a movie in the theater might break my concentration for several minutes, I find context switching to help my productivity at work. I can get stuck on a problem without a distraction where changing my focus briefly usually helps give me a fresh perspective and allows me to solve the problem faster.


This is actually a good point. Something that is fun and engages my mind when it's dulled and flat is actually quite a useful tool. When I get back to work I am much more switched on.

I think you just need to remember to define your breaks properly.


So what about this NEO keyboard layout. Did anyone tried it? While I understand where from performance can come when you are typing email, I am not so sure about keyboard shortcuts. Anyone?


This layout is for Germans. If you don't write German, don't use it. Use either Dvorak or an optimized layout for your language (if one has been done). Personally, I use Bépo[1] a Dvorak-like layout optimized for French (same principles, different stats). It also happen to be far better than the Qwerty layout even for English.

[1]: http://bepo.fr

Ah, and most short-cuts are independent from the layout. But if you set up you software such that short-cuts are optimized as well (Alt + home-row-key for instance), then they'll become easier and faster too. That's probably what the guy did (he uses Emacs almost exclusively). A good place to start would be http://xahlee.org/emacs/ergonomic_emacs_keybinding.html


No caffeine huh.. I guess I'll be moving on to alcohol[1].

[1] http://xkcd.com/323


The LudumDare developer that impressed many folks the other day was using Eclipse!


Self-Discipline is a great productivity boost.


In regards to number 7:

>7. Use a tiling WM

I recall reading a Plan 9 pdf on the Acme editor (sorry cant find it right now). A unique feature to that text editor is that it is heavily mouse-based. This is contrary to many peoples (myself, at the time, included) belief that both hands on the keyboard equals increased productivity.

I used to be 100% dwm. The euphoria of navigating around with your home row was great (vim + vimperator + dwm). When I purchased a MB, I left my tiled-wm ways and have not really missed it. Switching my hand from keyboard to mouse feels more natural than a lot of awkward <Ctrl+__> or <Alt+__> commands. Plus, most TWMs I have used require a decent amount of time upfront to become accustomed to all the keybindings. The time difference in switching between mouse and keyboard vs just using the keyboard is so trivial that it really isnt worth the plunge in my opinion, though if you think you might like it better, by all means try it.

Something such as a unified desktop (OS X, Haiku, Gnome, KDE) will make you more productive rather than a window manager that optimizes for pixel real estate.


I'm reminded of a tidbit from an old AskTog[1] article:

"We’ve done a cool $50 million of R & D on the Apple Human Interface. We discovered, among other things, two pertinent facts:

* Test subjects consistently report that keyboarding is faster than mousing.

* The stopwatch consistently proves mousing is faster than keyboarding."

There are probably all sorts of caveats to this (and the research may have changed since then) but I'm reminded of it whenever I see people extolling the virtues of their ascetic, keyboard-centric dev environment. I'm not saying they're wrong, just that in lieu of benchmarks and studies, I'm skeptical.

[1] http://www.asktog.com/TOI/toi06KeyboardVMouse1.html


Interestingly, I don't feel faster with the keyboard. I do, however, feel more comfortable when I stick to one mode (keyboard-only or mouse-only). It's switching that feels awkward. I also don't use Xmonad out of pure Geekiness (though I started that way). I use it because I find it more comfortable. I work at the same time with OSX, and while moving windows with the mouse is probably just as fast, it annoys me.

Now the reason why the keyboard is slower than the mouse may be sub-optimal short-cuts. For example, when editing, one very often needs to change lines, or otherwise navigate the text. A sensible short-cut to support that could be alt + jkli (assuming a Qwerty layout). Then you don't have to leave the home row at all. But if you have to use the actual arrows, it's slower, and that may make the mouse the better choice.


Also look at the Nipple-mouse. (The IBM Track Point thing on Thinkpads). It's placed so your fingers don't have to leave the home row.


You seem to be describing vim's hjkl (left, down, up, right, IIRC)


I am, except modifier key, makes the trick possible on (customizable) mod-less editors. The idea is not mine, by the way: http://xahlee.org/emacs/ergonomic_emacs_keybinding.html


Sure, a mouse is faster if all you're doing is pointing at stuff and pushing one of a few buttons. Studies will confirm this. That's pretty low-level, though.

A keyboard is faster if you want to, say, "jump to the head of the definition of the function body you're currently in and send it to be evaluated", because a mouse just doesn't have enough buttons. With a keyboard, you can name operations. And then name new operations, grouping those names... (Why yes, I do use Emacs.) If I was using a mouse-and-menus for that stuff, the menus would stretch to the moon.

The next time somebody argues that a mouse is faster than a keyboard for programming, I'm going suggest they make their case solely by pointing at things and clicking their tongue.


Sure, editing is one of the exceptions Tog mentions. (I'm an Emacs user, too.) My point was that just because you think or feel that something is faster doesn't mean that it is.

Also, when it comes to programming, the biggest bottleneck for most people isn't typing -- it's thinking.

P.S., there do exist mouse-heavy programming environments: http://en.wikipedia.org/wiki/Visual_programming_language


I agree on both points, actually, but when people mention that study, they tend to use it as a "See! Using the mouse is faster!" handwave-y dismissal, without mentioning the fine print.

I'm not a neurologist, but I wonder how differently the brain's spatial centers and language centers interact with the part(s) that perceive the passage of time.


I think there's more to it than just mouse vs keyboard. The keyboard-centric power interfaces like Emacs, Vim and those tiling window managers have non-intuitive shortcuts and combining sequences that really make things go fast. Compare using a keyboard with Emacs to using a keyboard with Notepad.

The same thing for those mouse-centric applications. Linux window managers have a "shortcut" of holding a modifier combination and dragging anywhere within a window to move it, or dragging the nearest corner to resize it. This makes arranging floating windows fast and fun compared to Apple's more intuitive requirement of having to drag the titlebar, or that tiny little handle at the bottom right of the window.

Some of the mouse-centric visual programming environments you mention, particularly the ones that have many years of use behind them, also contain shortcuts. Autodesk's Flame compositing environment for instance, traditionally driven via a pen and tablet, has a whole bunch of shortcuts to drive the interface without touching the keyboard. You can connect dataflow nodes by "kissing" for instance - dragging them close to each other, allowing you to connect many nodes with a single movement.

For many people, it's the mastery of these shortcuts - keyboard, mouse, pen or touch - that gives them a sense of pleasure and power when they use that piece of software.


Also, when it comes to programming, the biggest bottleneck for most people isn't typing -- it's thinking.

That's so true for me. I'm not pumping out code nonstop where the efficiency of keyboard vs mouse comes into play. Being more efficient with moving around a source file only matters if I actually knew what to do once I get to a particular spot of code and many times I don't. I struggle more often with the high-level design of a program than the details. And when the design is sorted out then everything else falls in place. That's when more efficient navigation may be more important to me.


Mice are better for spatial navigation, but keyboards are potentially much better for structural navigation - whether you're moving by search (regexp find, or whatever) or language elements (navigating via tag stack, etc).


Agreed. Improve your mind and not your tools. Don't spend a couple of hours learning to use a tiled WM instead spend that time reading up on documentation. I believe that will give you the biggest speed gain.


For me, the best part of a tiling window manager is immersion. It's no-nonsense. There's no eye candy to remind me of all the brain candy out there. When your whole screen is nothing but black-and-white text and ugly emacs-colorized source code, it's easy to forget that Facebook and Hacker News are just a few clicks away.


I think the caveat is primarily muscle memory. If an action is in muscle memory it's almost always faster. I don't think about how to switch desktops or save a file so the keyboard is faster. However fancy cursor movement(like skip ahead one word) is pretty much useless for me since I have to think about what I'm doing.


A mouse is faster for unfamiliar tasks, but when an action is committed to muscle memory, keyboarding becomes fast.


I use both OS X and ion3 (depending on whether I'm using a Mac or a Linux box). Ion3 is a tiling WM and about as far removed from the OS X GUI as you can imagine. Nonetheless, my workflow in both is exactly the same: one large Vim window, one large terminal window. I never move the windows around once they're open, and I can switch between them using the keyboard. Once you've got an editor you're comfortable with, there doesn't seem to be much advantage to using a tiling window manager in terms of productivity.

Things like browsers are a separate issue, but if I'm switching to a browser I'm already distracted. :)


Plan9's acme editor was based on Oberon, FWIW - you can probably find more info there. I have a lot of respect for the design, but have never gotten comfortable with it. (I've used Emacs for years, vi for several years before that.) Its "every word in every buffer is also a command if you click on it the right way" seems like the best mouse/keyboard UI synthesis I've seen, though, if you're doing actual work with complex tools you can invest time in learning. A lot of GUI design seems optimized for people doing simple stuff and hoping the UI will be self-evident / "intuitive". I wouldn't expect AutoCAD to be "intuitive", for example - the problem domain itself is far too complex.

Also, I use dwm, and got a netbook recently (dual-booting Windows 7 and Debian). On a screen that smal, tiled wms really shine, and Windows 7's interface feels like a joke in comparison. The low-hanging fruit on a tiling window manager makes the biggest difference, though - having N different workspaces, automatically arranging windows, and being able to hit alt-3 to switch to the third workspace / alt-enter to open a shell is most of what you need to know.


Another thing in favor of a tiling WM (and a keyboard centric setup in general) on a netbook is that it is often more convenient to use a netbook without a mouse. I am happy to reduce my track pad use in general, especially hold-button-and-drag operations.


No kidding! The trackpad on mine is too close to the spacebar, anyway. I just have it turned off (Fn-F7) most of the time. dwm + dmenu + emacs has me pretty much covered for mouseless usage.

I was skeptical about netbooks, but saw a great deal on craigslist and decided to try one. With dwm, Emacs, and terminus, I have two 80x45 buffers, which is quite adequate. (I also bike nearly everywhere, and it weighs so little that I don't hesitate to carry it with me all the time.)


Like the author, I use the Awesome window manager. I think you have a perfectly valid perspective, but just want to speak for the other side.

The main benefit I get from Awesome is having 9 workspaces ("desktops"). I use my mod key (in my case CAPS but it can be Alt or anything) plus # to get to any workspace. I have web browser on one desktop, email on another, IM on another, terminals on another, programming on another, and it's really, really easy to switch around. This was a HUGE improvement for me over Windows (and even Gnome), just in terms of managing multiple windows/applications running at once.

Also nice to be able to get two windows to share the screen with a keystroke, if I need to look at two things at once. And in the same vein, tiling is really nice for IMs, because on the workspace for IMs, I can see all my chats at once. Normally for other tasks, like web browsing, I just switch into the tiling "mode" that doesn't tile (i.e. application is "maximixed").


Do you use a terminal multiplexer or something similar?

I only ask because my set up was exactly like what you just described. Once I buckled down and started using one, it negated the need for a lot of the tags I had with dwm.


I use dwm and tmux (rather than screen). My muscle memory knows that I keep a tmux session local to the computer I'm physically located at on #1, remote (if any) on #2, side tasks on #3-7, Emacs on #8, and a web browser on #9. (I use a slightly different setup on a dual-head station, but usually w/ two Emacs windows, etc.)


I've never needed one, probably since a tiling WM allows you to accomplish something similar, as you point out.

I know screen has some nifty features, but for the things I do, a tiling WM is a superset of the functionality screen would provide.


Screen's primary payoff is when your connection to another machine goes down a lot for whatever reason. A good wm can handle the multiplexing better but they don't restore context like screen.


I love this! I use dtach (with dvtm) instead of screen, but it's serves the same purpose. I'll be working at my desk and then have to head to a meeting (with my laptop) to another floor. My ssh connection will drop but once I log back in I just need to reattach and I'm right where I left off.


I know, and I usually work locally.


I recently started using Bluetile (http://www.bluetile.org/). It has all of the keyboard bindings, but there is also a dock that allows mouse control of major features. It's been a pretty easy transition for me because of this.


Something such as a unified desktop (OS X, Haiku, Gnome, KDE) will make you more productive rather than a window manager that optimizes for pixel real estate.

UNIX is my unified desktop. I only use the window manager to manage windows.


> Something such as a unified desktop (OS X, Haiku, Gnome, KDE) will make you more productive ...

Its not an either-or thing. XMonad works perfectly well Gnome, panels and all. It only replaces metacity/compiz, not the whole environment.


The same can be done with Openbox.

I am not so sure that makes it a good idea though. Why undermine something so deliberate?


I use awesome (a tiling wm) in a very mouse heavy way. Tiling does not mean you're stuck with using the keyboard. It does mean that you don't have to worry about managing screen real estate nearly as much.


Amen.

When are people going to get it through their heads that using the mouse is faster than the keyboard? This has been determined by Apple's UI research and known for some decades now.


Source: http://www.asktog.com/TOI/toi06KeyboardVMouse1.html

"We’ve done a cool $50 million of R & D on the Apple Human Interface. We discovered, among other things, two pertinent facts:

    * Test subjects consistently report that keyboarding is faster than mousing.
    * The stopwatch consistently proves mousing is faster than keyboarding."
This is the reason that the Plan 9 folks gave for making their UI mouse rather than keyboard based.


It takes two seconds to decide upon which special-function key to press.

Why would you link to something so foolish?


Faster for what, though? If you're doing something best served by pointing at things, sure. Web browsing, sure. Programming? I don't buy it.


How can this be? I'm just not convinced.

The main thing I use my WM for is switching applications. Any application I want to switch to is modkey+number, and I know the numbers.


That's why you do research, because "It feels faster for me" usually doesn't lead to the best decision making.


The problem is research costs money, and people with money are more likely to be interested in average users. Nobody's going to do research on obsessive HN-reader-type users who are willing to go out of their way to memorize lots of Emacs commands in order to ensure their exocortex is fully optimized.


"It feels faster for me" actually might be a decent form of decision-making. The bottleneck in software isn't user-input speed, so it's kind of moot. If people feel better using the keyboard for input, why not let them feel better?


That's not an answer to my question.

Let me state my point more bluntly. I've tried switching applications with mouse and with keyboard, and it's faster with the keyboard.


It's the mode switch that's frustrating. It interrupts my concentration when I discover I need the mouse, when all I'm trying to do is code.

I use a mouse when I have to, but I'd probably use it more if I could get one of those nubbin-mice in my desktop keyboard. 99% of my job is typing. Switching between mouse and keyboard is annoying.

At home, I tend to do the same kinds of things I do at work. However, I picked up a Logitech bt media keyboard with a touchpad off to the side--and that works fine. I wish I could find a wired version. Cherry builds keyboards that look worthwhile, but they don't sell them piecemeal to little guys like me.


He lost me at "avoid caffeine entirely."




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

Search: