
Ask HN: how do you organize your workspace to work more efficiently? - sr3d
My question to you guys: how do you organize your workspace and workflow to work more efficiently, especially for web developers?  I'm using Rails and I prefer to have a lot of windows opened at the same time , but this question is not just for Rails developer.  Obviously there's a lot of smart and awesome programmers hanging out on HN so I really want to hear from you.<p>My approach is to find ways to optimize my workspace, including tools, windows, and shortcuts to make the workflow smoother.  My definition of "workflow" is the common and repetitive tasks of switching back and forth from one program to another, or to perform a certain set of steps.  I really aim to reduce the windows switching, mouse movements, and maximize using shortcuts.<p>I have a dual screen setup with a Dell 24" connected to my 13.3" MacBook.  I use the 24" as the main screen with TextMate and other windows opened, and the Mac to open the browser for quick Cmd R previews.  Since TextMate does not support split-screen, I open up different files as new windows (see screenshot: http://alexle.net/screenshots/dw/nuia8w3eo0c8k.png) so that I can switch to them quickly.  Usually I have the the main file opened in the TextMate main project, then frequently updated files in their own windows.  (I tried Vi/MacVim with NerdTree but never quite get it to work smoothly so I still remain a TextMate user, and a VI-wannabe)<p>To manage the different windows, I use Divvy to help me quickly organize the opening windows, including TextMate files and Terminals.  Here's the screenshot of TextMate and 3 different Terminals windows (organized with Divvy and shortcuts): http://alexle.net/screenshots/9o/g6ugj2fps8wks.png.  With Divvy, I started to notice that I reduced my usage of Cmd ` quite a bit.  I no longer have to switch between windows of the same application (e.g. Terminals), since I can quickly organize all of the views.  Everything is just there.  I don't even need to use Spaces or Exposé.  In my opinion, Divvy with a large screen is a killer-combo for huge productivity boost.<p>Also, I increasingly find screenshot utilities indispensable.  Literally these utilities change the way I communicate since I can quickly share a screenshot with friends and co-workers.  I used TinyGrab, almost bought a license, but then found out Scrup (http://github.com/rsms/scrup).  I already have a 1and1 $10/month hosting plan that hosts my personal blog with 100GB of storage.  So now I have an ad-free, unlimited, and awesome screenshot-sharing tool.  Cmd Shift 4 has never been so sweet!<p>I also use PTHPasteboard for clipboard management.  It's not free, however I didn't have to pay for it.  But I know there are free alternatives.  The only downside is PTHPasteboard doesn't allow fuzzy search within the clipboards.<p>Shortcut-wise I remap a certain set of keys to make it more consistent between TextMate and Terminals (e.g. switching tabs), and turn on Full Keyboard Access:  http://alexle.net/screenshots/cc/ttawsf788c8ww.png<p>Coming from 10+ years of using Windows, I have to use USB Overdrive to fix the mouse acceleration curve.  I have a Logitech gaming mouse and it was almost unusable with the default settings on the Mac.  With USB Overdrive, the curve is fixed and my mouse runs as smooth as babyskin.  http://alexle.net/screenshots/9d/6grmom180scwg.png (I had to add a custom mapping to Button 4 to support "Back" button)<p>So how do you organize your workspace?  What's your philosophy?  What works for you so far?  I'm really interested to hear from you guys.<p>This is the first time I post a question to HN, so bear with me :)<p>Cheers!<p>Alex<p>(I also have a similar workflow setup on my Windows laptop, but I don't have Divvy to nicely manage the windows layouts.  However, the same principle applied:  multiple split windows to present all the data and reduce windows switching with Alt Tab.  I also use a bunch of other utilities like Launchy, x2 explorer for file management, Notepad++ for light-weight editing, E TextEditor for Rails -- e is the best editor on Windows, even better than TextMate since it supports split-screen beautifully!, Cygwin, BeyondCompare, Ditto for clipboard, etc.)
======
qixxiq
I've been using XMonad for the past year which has made the biggest
improvement to my productivity since dual-monitor. I still use dual monitors
(22" and 19"), while I'm considering getting a larger main monitor I find
anything larger than 19" on the side to be distracting. Also tried triple
monitor, but I found that with the amount of control XMonad gives me - I
really don't need that much screen space.

On the text editor side I've been using Vim, which even after two years I'm
still learning things. I use it for all kind of things besides coding, once
you've gotten used to writing powerful macro's with it -- it really can give
most things a productivity boost (converting HTML tables => SQL inserts, etc).
In terms of plugins NERDTree, Surround and BufferExplorer are the main ones I
use.

I tend to spend Sunday afternoons reading up on Vim/XMonad/etc. Recently I
installed Vimperator for Firefox (I had tried before and switched back) and
I'm finally beating my productivity with purely text based browsing.

Also use Workrave against RSI which isn't really a productivity booster (quite
the opposite really). But I generally spend the breaks thinking about what I
was working on, and how I could be working more effectively. Quite often it
actually makes a decent difference - and I don't have to be on the keyboard
for that time.

I use the Kinesis advantage keyboard (<http://www.kinesis-
ergo.com/images/kb_adv-blk720x471.jpg>) with a whole lot of custom bindings.
It took me about two months to get used to it, but worth it in every way (and
I love the 'wtf' look when people see my keyboard).

I barely touch the mouse any more :)

~~~
kaens
I'm running a similar stack, although I'm only using a Thinkpad T410 at the
moment.

Arch+Xmonad+urxvt+tmux+emacs+git and a lot of reading and tweaking gives me a
machine that is fine-grained for how I like to work, and allows me to be so
much more productive than I've been able to accomplish with other stacks, it's
ridiculous.

I use OSX at work, and it's not too bad, but I'm still slower. I'm sure
there's an argument to be made about how I'm just not using OSX to it's
fullest, but frankly knowing that I can't actually change the way anything
works if it disagrees with me makes me assume that I'm not going to be capable
of maxxing out my productivity on that OS.

I haven't run into RSI yet, but I've been thinking about picking up a Kinesis
advantage when I start fleshing out my home-coding space. It looks wonderful.

I too almost never touch the mouse. It's wonderful.

~~~
qixxiq
I'm running my setup on a Thinkpad T510 :), its a great laptop. Since I move
around quite a lot, and generally for months at a time - I really needed a
laptop. This one has dual-screen capability, and to be honest you really don't
need much power to run XMonad w/ FireFox (and the amount of power Vim and
XTerm require are negligible).

If you're using Qwerty now my best recommendation is to switch to Dvorak on
the Advantage. Since its a completely different keyboard style, it doesn't
mess with my muscle memory at all. I can jump to a plain qwerty keyboard at
any point and still have 80% of my old typing speed, while I get to use Dvorak
on the Advantage keyboard.

~~~
kaens
The thing I'm going to be most concerned with when switching to the Kinesis,
regardless of whether or not I also switch to Dvorak on it, is making sure
that I'm actually using my fingers "correctly".

Right now, I type mostly correct in QWERTY, but I know that I have some bad
habits (using almost only left shift/alt/ctrl for one), and I haven't found
myself very capable of breaking them.

Do you have any advice for making sure that I'm doing the "right" things with
my hands, either on the Kinesis, or on normal keyboards?

~~~
qixxiq
Not really :/, part of the reason I switched was because I was having the same
problem.

Just when you switch, "switch properly". Find a set of exercises for moving
over and do them properly. I never finished every one because it got a bit
excessive after a while, but my typing style would've been a lot worse without
them.

Once I notice a rather bad habit (such as using left shift for : -
uncomfortable on a dvorak kinesis), I simply bound the combination to an
exclamation mark so I'd notice every time I did it.

~~~
kaens
_Once I notice a rather bad habit (such as using left shift for : -
uncomfortable on a dvorak kinesis), I simply bound the combination to an
exclamation mark so I'd notice every time I did it._

That's a really good idea! I might bind some bad-habit key combos to system
beep because I _hate_ the system beep.

------
jakevoytko
My principle of organization: Only see the objects you need to complete a
task. Keep it simple. If a tool is irritating or slows you down, don't use it.

Workflow: There are only two things you need to know. First, know the
'critical section' of your work process, and learn to NEVER TOUCH THE MOUSE.
It's OK for web browsing, but you want to minimize context switches in your
inner loops. Second, learn the GNU toolset, like find, grep, cut, od, and the
rest. You'll find them arcane, but when someone asks you to change the group
on all of the files you own on the remote server, you'll spend 3 minutes
instead of 3 days :)

Workspace: Maximize Emacs, split the screen into quarters. I prefer gnome-
terminal or Cygwin to Emacs' built-in shell support, since alt+tab is easier
than `C-x b buffer-name`. When in Visual Studio on Windows, I keep open the
project view and the error console while programming.

Physical desk: The space in front of my monitors is work-related (or edible).
As items become unused, they get pushed out to the sides. Once a week, I throw
stuff out or shove it in a drawer for long-term storage

Computer desktop: Bare essentials. Files get downloaded to the desktop and
moved accordingly. There's never more than a few things in my face. On Linux,
I use Gnome + multiple desktops to sharpen my focus to just the windows I
need. Browser on Desktop 1. Emacs + terminals in Desktop 2. Chat programs in
Desktop 4.

~~~
gtani
_NEVER TOUCH THE MOUSE_

I've tried. I keep a very small logitech wireless mouse between my thumbs when
i'm pounding on the (Matias) keyboard. About a 3" reach, doesn't work so well
with Apple's wireless mice.

\--------------------

My other tip: a guitar (Ibanez electric) or MIDI keyboard (M-audio or Axiom)
and a book of exercises (Hanon, Czerny, or guitar aerobics. Regular
guitar/piano breaks fire something into the brain, serotonin, epinephrine,
endorphins, ...something. A tenor sax would work too but can't really be
played quietly through headphones.

[http://www.amazon.com/Guitar-Aerobics-One-lick-per-day-
Devel...](http://www.amazon.com/Guitar-Aerobics-One-lick-per-day-Developing-
Maintaining/dp/1423414357)

------
blownd
Mac Developers might like to take a look at my project: Optimal Layout. It
gives you very flexible keyboard commands to control windows as well as a
window switcher:

<http://most-advantageous.com/optimal-layout/>

It includes an option to re-arrange a whole group of windows in one go with
window tiling and I've got an update coming in the next week to make this
process much simpler and more customizable.

------
mattmight
Under Linux, the best window manager I ever used was ion:

<http://en.wikipedia.org/wiki/Ion_%28window_manager%29>

It was like emacs turned into a window manager. It cut my mousing down by at
least an order of magnitude.

On OS X, a simple free app, ShiftIt, provides a similar experience:

<http://code.google.com/p/shiftit/>

It lets you quickly move and resize windows into quartiles and halves with a
few keystrokes.

At the console, I log my activity to a database and then data-mine my console
history to discover which tasks have become repetitive; then I replace them
with a shell script. Blog post with source code here:

[http://matt.might.net/articles/console-hacks-exploiting-
freq...](http://matt.might.net/articles/console-hacks-exploiting-frequency/)

~~~
weaksauce
If you are ok with paying a few bucks on OSX sizeup or divvy are much more
mature projects. Though you could always add what you want to shiftit because
it's opensource.

I personally use Sizeup but I might try divvy because it seems to be way more
customizable.

------
ihodes
Software

========

Most of my time is spent in here: <http://cl.ly/1gfY> using emacs with Slime,
Swank, Clojure-mode, Text-mate.el and M-x split-window-horizontally. I, as
someone pointed out below, mapped my caps-lock key to command. Much better.

When I just need to interact with the filesystem of a remote computer, and
eschew sftp,p I use Transmit 4. It's handy.

For screenshots and sharing links etc, I generally use CloudApp
(getcloudapp.com) for a nice, free and extremely convenient Mac OSX utility.

You can see the other apps I use with any regularity here: <http://cl.ly/1gRQ>
on my dock. They include 1Password, MarsEdit, WriteRoom (for when I want
nothing else going on–else I use TextEdit.app), Pixelmator for mockups and
designs (I got rid of Photoshop as soon as I could–this is so, so much
better), Tweetie.app (though it's getting long in the tooth) and more that you
can see there.

I also use Alfred.app as a quick app-launcher (<http://www.alfredapp.com/>),
among other things. It's in active development, and it's wonderful!

Next up: XMonad and getting a nice setup on ArchLinux on my local machine, not
just my servers. Learning Haskell and getting my modes in Emacs set up for
that. Figuring out what the fuss is about with Paredit (I think it's crap: I
often write deeply nested structures from the inside out, and Paredit.el makes
that hard; yes, I do break them up later.)

.

Hardware

=========

I generally use the Apple Macintosh wired keyboard, and a Logitech Mx15 gaming
mouse (I've had it for so many years, I am just used to it). My computer is a
2008 MBP 17" that sits up on a stand.

I wear Denon AH-D5000's with a Boa D2 amp; I'll be getting PX450s soon to
handle noisier workplaces.

That's about it. Next up hardware wise is a 27" IPS screen from whoever
releases one soon: I've missed having two screens.

------
gbrindisi
I have the same dual screen setup and I have to say that it really boosted my
productivity.

I was looking for another monitor to add but I found extreme difficult to put
together a triple monitor setup on a macbook.

Also I mastered exposè, active corners and personalized mouse gestures for
quick tasks (Magic Mouse is not bad at all). One desktop for file upload, one
for coding, one for monitoring etc.

Then Terminal.app is my best friend, I use it to script everything: from
cleaning my desktop to send mail alerts, ftp, ssh etc.

~~~
andrewf
Did you try a USB display adaptor on the Macbook?

I ask because I've got a Mac mini and am semi-seriously contemplating a third
monitor.

~~~
kleinsch
I use a ViBook (<http://www.villagetronic.com/vibook/index.html>) at work in
order to have two 22-inch monitors hooked up to my MacBook. Performance is
surprisingly good, especially for low-intensity tasks like text editing.
Watching videos on it absolutely kills the CPU, but having another monitor for
terminals and text editors is great.

~~~
gbrindisi
Nice stuff! Onestly I only found DVI switchers and they were not well
supported. Price was also a constraint.

Thanks for the suggestion.

------
ionrock
One of the biggest productivity boosts I've found working with something like
Rails (I use Python but any web development system that involves starting up a
local app server would be the same) is having an easy way to start up the
entire application stack. For example, I have to start around 10 different
services to run the app I work on. In Emacs, I've created small functions to
start them up within some shells (all within emacs) and that lets me not only
get started quickly, but quickly go to any of the services I'm focusing on for
checking logs, viewing exceptions, copying output, etc.

On a more personal preference, my Emacs usage lead to use StumpWM and Conkeror
(web browser) which help to keep all my keybindings very cohesive. A tiling
window manager is really helpful b/c you never have to slightly move or resize
windows. It sounds like Divvy does a similar thing.

That said, I bet if you take some time to commit to something like Vim (or
Emacs!) it might eventually be more productive than TextMate. Emacs helps to
keep everything within the editor (email, IRC, shells, etc.) while Vim helps
to keep you in a terminal and to use standard *nix tools. Both tactics are
very helpful IMO.

------
howard_yeh
I like to maximize my windows, but that's because I spend 50% of dev time in
Emacs. Some sort of split-screen is important for maximizing to work well.
With Emacs, I never close my files. I choose between the files I want to
switch to by typing the file name, and Emacs tries to find a match (sorted by
recency). The effect is I can go to the files I need 90% of the time in under
3 key strokes. This is especially true for files I frequently need.

This is not to advocate Emacs (well, maybe it is pimping), but that an editor
you can customize can be very helpful if you spend the time.

I use iTerm and Chrome. I put the most important tabs in the first 3 tabs, so
i can cmd-{1,2,3} to access these tabs.

I use launchbar to switch between programs. I type "Em" => emacs, "Ch" =>
Chrome, "it" => iTerm, "iTu" => iTune. I turn off music when I need to focus.

I work both on my MacAir and my 27" iMac, and the work follow is the same (not
limited by screen size). I never found the need to have dual monitors.

~~~
howard_yeh
the other weird thing I do is remapping the meta keys,

cmd => caps lock ctrl => cmd

so they are waaaay more accessible. Emacs used to hurt my pinky, because I had
to curl it in a weird way to access to ctrl key. Now I use my thumb for the
ctrl key, and ring finger for the cmd key. It works well for me, like a poor
man's kinesis. I NEVER EVER use the ctrl key at the bottom left corner of the
keyboard.

------
chriseidhof
Before I clicked the link, I thought you meant physical workspace, and I
immediately thought of my best physical workspace hack: every day, I try to
focus on one big important thing. I write that thing on a post-it and attach
it to my main screen. It's a huge productivity improvement for me.

------
jsz0
It's very important for me to have multiple displays that are matching
size/resolution. Anything else just feels awkward to me. I use Spaces only to
segment my work tools from everything else. I don't usually actively juggle
multiple Spaces while working. A little too confusing for me. Another trick I
use is having multiple browsers installed. My work browser doesn't include all
my wonderfully entertaining bookmarks that might distract me -- just work
stuff. I have to admit I never really got into advanced keyboard shortcuts
that much. I feel like in a GUI environment (especially OSX) it's so hard to
avoid using the mouse often so I just kind of accept it. Remembering all the
different keyboard shortcuts is more difficult to me than just using the mouse
most of the time.

------
lionhearted
Ruthlessly de-clutter when I notice any sort of clutter is accumulating.

Headphones if in a public space, music with pretty seamless transitions that
I've heard enough to phase out - usually Tool's Lateralus album, Massive
Attack's Mezzanine, Gorillaz's Demon Days, Moby's Play, low key classical
music, or some relatively subtle minimal techno or house.

~~~
sr3d
what's your last.fm profile page? Massive Attack's Mezzanine is awesome,
definitely put you in the mood for coding.

------
aarongough
I'm a Rails developer as well: I currently use Coda for pretty much
everything.

The fact that you can have tabs for files/shells means that everything stays
very neat. I generally have a shell open for Git, a shell for testing, file
tabs and a browser open and that's it.

Coda is here: <http://www.panic.com/coda/>

------
etherael
_I also have a similar workflow setup on my Windows laptop, but I don't have
Divvy to nicely manage the windows layouts._

Divvy is nice and all, but Winsplit Revolution on windows and Compiz Grid
plugin on linux blow it out of the water, if you're after similar on either of
those environments can highly recommend.

------
swah
I used to think that mousing was a waste of time, but now that I used Eclipse
(instead of Emacs) a little bit, I start to realize that a little bit of
mousing lets me work a lot longer without pain that I'd get from doing
everything with the keyboard.

------
alttab
-2 Screens

-Tight headphones

-5 Terminals

-1 Browser

-Things/Email

- _Most important_ : The understanding of those around me I am not to be disturbed.

