Ask HN: Your Hacker Workspace
Share it with the community so we can learn from each other while improving our own.
Share yours.
Share it with the community so we can learn from each other while improving our own.
Share yours.
My two primary work horses include a desktop computer and Thinkpad with Fedora core 10.
Desktop server:
- Gnome -> 8 workspaces on two monitors { Web (regular), Web (work), Emacs, Emacs, Emacs/Compile, Emacs/Debug (GDB/DDD), 4 shells, Thunderbird/IM/IRC/Music }
- Fluxbox on VNC with 4 virtual { 4 Shells, ServerStats, Void, Void }
- Screen session just in case I want to drop in
Laptop:
- Gnome -> 5 Virtual { Web, Emacs, Emacs/Compile/Debug, Void, Thunderbird/IM/Music }
Both:
- Emacs (all instances are new-frame so shared buffers, heavily use gdb-mode, and for compiling)
- Synergy desktop sharing Keyboard/Mouse with Laptop
- Zsh + scripts for common tasks (backups, syncs)
- NFS shares mounted both ways
Other
- Pencil Sketch pad (no rules) as my idea pad, doodling, I keep several of these everywhere
- Post-it's for quick notes
- Emacs/C/C++/Python cheat/reference sheets printed and posted
This is modest if not simple by hacker standards, but it makes me feel comfortable for my usual tasks and most at home
I'm not so sure about that ;-) My setup is simpler than yours:
I do all my development on one machine - a macbook pro (Tiger, haven't got around to upgrading yet).
I run only three applications pretty much all the time, and they're all full-screen - Firefox, Emacs and iTunes, and alt-tab between them. Occasionally I also start a Terminal, if I want to ssh into a server somewhere.
Usually my Firefox tabs are gmail, yammer, ganglia, http://irc.justin.tv, and often some documentation to help with whatever I'm working on.
Typically I have a dozen or so Emacs buffers open - mostly python, javascript and haxe source code.
I never write notes by hand. I either write them in an Emacs buffer, or I send myself an email.
This is where I work (at justin.tv): http://abstractnonsense.com/workspace.jpg
Also binded the change desktop to the Mouse's (Previous/Forward page buttons that's usually reserved for browser access). This came to be because at one point several years ago, I couldn't get Firefox to accept those buttons... but now I cannot live without it.
Sorry, don't buy that. Many hackers just work from anywhere, and many who do work from a regular spot don't care about it as much as you do.
This is a valid question, mind you, I just disagree with your first point.
I'm not big on aliases or scripts to do simple things. Better to make a one-liner or throw-away script to do exactly what I need now, something that will work on many machines. Automation is only useful if it can significantly reduce repetitive effort.
I'm no master or hacker, I just get on with my projects without much frosting. I'm partial to a cheap (dropable?) Ubuntu laptop with emacs, gdb, wireshark, k3b, and lots of medium-length cables and adapters.
Stuff get passed around between the XP and the linux box until I am happy with them, then they're sent to 2 slackware VPSes and a Solaris box elsewhere.
More important than code is my Skype phone. Half my work is done walking around with a phone glued to my ear.
Essentials include, a yahoo currency converter bookmarklet, a timezone time calculator, various inhouse tools for lead management and tracking (I have a mailer I wrote in Lisp that I paste email text to and rewrites all URLs as mysite.com/redir?url=FOOBAR; I use this to track who read my emails, when and how. Couldn't live without it.)
OpenOffice and Unipad for funny Arabic text handling. Copernic Desktop Search for the massive library of documents that I have and need to share.
2-3 notepad windows open at all times. An emacs org-mode buffer that contains my life's work.
A separate Firefox installation that has the annoying but very essential SEO-Quake plugin for doing stuff.
GNU GPG integrated with Thunderbird. 20+ email accounts in thunderbird, Pidgin, Chatzilla and a twitter window open at all times.
Paint.NET for the necessary graphics editing. MS Paint for quickly resizing images. Mingw and MSYS to make Windows habitable.
Various Lisp implementations to check my sanity when something doesn't work with SBCL.
Opera, left running at all times with the home page set to the Common Lisp hyperspec, the hunchentoot manual in another tab.
Skype running at all times, but goes to my cellphone when I have a call.
Various powershell and bash scripts to make life easier.
Firefux plugin to remember passwords for 100+ social networking websites that I submit press releases and other stuff to.
Mozart/Oz, Ocateve and R for prototyping "stuff"
[Edit: I wouldn't use a laptop other than a Thinkpad if it was given to me for free. I am a proud owner of 4 Thinkpads at the moment, about 10 of them in the last 10 years.]
At work I have a 30-inch screen for Vim next to the macbook, but it's optional.
I used to be a cave-type, but now I find that I'm more productive when I'm around people (as long as they aren't actively engaging me). So I'll work from home with the kids playing around me and get more done than I do in my isolated cube at the office.
Big screen.
A command line (Terminal on mac, cmd.exe on windows).
A launcher app (Quicksilver on mac, Colibri on windows)
An editor (TextMate in mac os, NetBeans in windows).
A mindmap editor for planning, design and notes. (Freemind, cross platform)
(I purposefully stay cross-browser, cross-OS, going back and forth between my MacBook and my Wintel desktop pc. This forces me to keep using and testing both my product and dev environment in several different OS'es and browsers - plus it provides redundancy; if one env blows up in some way, I can just fall back on the other.)
There are some pretty crazy and inspiring setups on there, and you can share your own.
Meatspace: a battered wooden desk I found in the trash years ago, and a similarly battered armchair missing most of its upholstery. The desk surface is hidden beneath ashtrays, coasters, coffee mugs. My cat peers over the monitor, half asleep.
I'll be setting up xmonad and working on my layout for the next few days, if this post is alive until then, I'll post my screenshot.
http://www.deskography.org/people/yjg1097qMx/desks/786/photo...
As someone who uses Gentoo, Xmonad, Zshell, and Emacs, there's more than enough config code to tweak than there are hours in the day. The happy result is that if I'm stumped, I always know I can pop open a buffer and hack something a bit.
Hell, the alternative to wasting your time in a fully hackable environment is wasting your time on the interwebs.
If you're going to procrastinate, you could do worse than by hacking .emacs. Like Runescape.
When I'm hitting a dead end, I usually find it more helpful to get away from the computer entirely and go for a bike ride, work out, talk to someone, have some fruit, etc., and see the problem with a fresh mind later.
Dual 22" monitors hackintosh running OSX 10.5.6 6 spaces, normally 2 spaces per project and one for random stuff. (I like to arrange all my code in one space and all the docs and the like in another and switch between the two as necessary).
You'll notice the Macbook peeking out from underneath the desk on the left - if I need more screen space I pop that one open. Or if I'm not at home!
M-Audio speakers are crucial - good music is a help! And lots of paper / binders / books to refer to all the time.
At least 3 lights sdjustable to whatever conditions I prefer, and black shades in front of the blinds to block out sunlight and heat.
Big problemo was usually the 9800GT 512mb.
My secret was using the iDeneb 10.5.5 distro, that thing works wonders on my system. I'm running an Asus P5E-Delux motherboard, with is also a well-supported system. Everything I did is textbook from insanelymac.com
The rest of the house: Old Macbook Pro connected to 42" LCD TV, mounted on the wall running Bittorrent with RSS subscriptions / iTunes Logitech 5500 connected to MBP + speakers built into the wall About 700GB NAS
http://www.flickr.com/photos/wehriam/369719626/in/set-181528... (Slightly old photo)
http://tinypic.com/r/2eewug5/5
here's one of the computer all alone: http://tinypic.com/r/15qufc2/5
http://farm4.static.flickr.com/3130/3219406843_af228d3a04.jp...
(Not pictured: Airport Extreme with a USB drive for Time Machine--critical stuff I backup to Github if it's source code and Drop Box if it's not source code)
Software-wise I work with IntelliJ, TextMate, vi or Xcode depending on the task at hand.
Considering how much time I spend in front of this machine (e. g., most of it), I don't mind investing a little more in my setup to make the experience as comfortable as possible.
I've got a refurbished Rev. A MacBook Air to carry around with me when I'm out and about. I'm thinking of buying a wireless card or a MiFi to have Internet access everywhere.
I synchronize all important files over Dropbox and use The Cloud for everything else. My brain goes into Evernote. Bookmarks are synchronized across my browsers with Xmarks.
I use Spaces heavily and Expose a little. I use Launchbar and mouse gestures through xGestures to get around the computer.
My code is synced up using git.
At home, I've tried to match the environment as best as possible. I bought a simple Ikea table that I use as a desk and a thrift store bargain task chair that really needs to be replaced. I run dual 19" 16:10 monitors on an identical docking station, acquired from my father. When I work from home I just plug in my USB keyboard and mouse, dock the laptop, and the monitors auto-detect and switch over. If I'm not working, my i7 gaming rig powers the dual displays.
For general computing. email and web development unrelated to my day job I use a MacBook Pro from 2007. I wouldn't trade it for anything; except maybe a new unibody MBP.
MacAir (lil guy next to it will soon drown): http://2.bp.blogspot.com/_QdVzmQAz0JQ/ShEHWvpIW1I/AAAAAAAAAE...
White boards (my friend is in the pic): http://2.bp.blogspot.com/_QdVzmQAz0JQ/ShEHIm3Q9vI/AAAAAAAAAE...
- emacs and terminal (fullscreen, I'll just swap between those two) - mail, irc, and cplay (screen split between alpine / ssh+irssi, with a horizontal pane for terminal running cplay) - browser (split vertically about 1:4, with nautilus on the left in the smaller pane and Shiretoko in the larger pane, usually in one window). I also watch movies, view pictures, PDFs etc. in this larger browsing pane.
I've settled for three virtual desktops that wrap around: this way I can always move to any of the desktops with just one move command, either left or right.
Currently this gets synchronised with a Debian server, due to be replaced with a Mac Mini in a week or two.
http://www.deskography.org/people/TME1103EMJ/desks/789/photo...
[Edit: running macvim, terminal and safari with either vlc or itunes for music]
[Edit 2: forgot to mention quicksilver. Kind of funny, but quicksilver is the only osx application I absolutely cannot live without.]
Three displays + old character-cell terminal (useful for looking on logs and such things) for workstation (with one monitor going thru KVM switch to few other computer for testing on obscure architectures). Sun Type 7 keyboard and mouse.
Old NCD thin client on edge of workbench part (incredibly useful).
- current-gen apple, matias keyboards
- whiteboard (me too)
- moleskine notebooks, postit notes, Bic 4-color pen
- cheap Ibanez-clone guitar; Duncan , diMarzio pickups;
- m-audio MIDI controller, garage band, ProTools, digidesign mBox
- looking to get piccolo, flute or alto sax
- yoga mat and props from Iyengar studio
When I'm at my desk, that's usually hooked up to a 30" display, wireless keyboard and mouse, and SoundSticks.
I'm actually about to build a custom desk and shelving in my home office to make things perfect. I use an Aeron chair which has saved my back.
My current plan is to use pre-finished maple plywood as the surface, and I haven't figured out exactly how I'm going to handle cables, power, etc...
http://www.deskography.org/people/gs/
Current setup includes:
- Aluminum MacBook
- Apple Cinema Display (24")
- Apple Wireless Mighty Mouse
- Apple Wired Aluminum Keyboard (recently switched from wireless)
- A functional IKEA desk.
- A not-so-great IKEA chair (we're getting new chairs!)
- vim (and MacVim)
- mutt
- Python (automate tedious tasks)
- CS4 Suite
Total revamp as soon as we've found the office of our dreams.
http://www.websmithing.com/my_workspace.jpg
Nick
http://www.flickr.com/photos/33766454@N02/3146045372/in/set-...
Typically I have Emacs, Safari, Terminal.app, and iTunes open all the time. Once in a while I open up MacVim and do some editing.
Really need to get off my butt and get some shelves up.
At first I thought, it's been over ten years you've been at this game clearly you're going to be at it for a long time more, why don't you just spring for a very expensive chair and get it over and done with? Well, I wasn't entirely certain that an Aeron or Leap or Freedom would actually fix my issues. Sure, people talk about them, but I wanted to know for sure that it would be the end of my problems once I had gone and fixed everything up, and the only way I could know that would be to actually buy one. Seemed like too much of a gamble so I skipped that.
It seemed strange to me that all these chairs at the high end were more than I'd spend on a new midrange system altogether, so I started to think about the entire problem rather than just the chair aspect and came to the conclusion that a nice recliner is probably about the most comfortable chair I've ever had, so why not work a system around that? I ran into several examples in the DIY sphere of people doing exactly this and being rave review happy with the results, as well as examples of high end full solution workstation setups like the Zero-Gee one and a few others based around the same idea that I based my initial plans on.
Interestingly enough, a good recliner will run you less than half the cost of an aeron, but seeing as I just wanted to prototype a setup I thought well what can I use that I have just lying around the house to make it happen? I had a broken chair (high backed / gas lift / 5 roller castors setup) and an old flat bottomed entertainment unit, so I ripped apart the chair and took the gas lift part of it and drilled and bolted it to the bottom of the flat bottomed entertainment unit, this resulted in kind of a mobile trolley with enough desk space for my display items (24" widescreen, 15" acer aspire 5630 notebook, 17" 4:3 1280x1024 for the mini) with stowage space underneath the main desk for all the necessary driving hardware (mac mini + powerboards + cables + USB 3.5 SATA docking stations, speakers).
Having the entire setup on an easily movable / swivelling caddy means that it actually ended up serving as an entertainment unit for the household too, XBMC + 1080p 24" = happy housemates when it's time to kickback and relax, I just swivel the caddy 180 degrees and then it faces 2 large sofas in the living room. Or I can move the caddy in front of a larger couch for collaborative sessions with clients and colleagues. Synergy links all the systems together, the mortals can use OS X on the mini and I have my heavily customised multi workspace ubuntu compiz system on the laptop, and I can take over their session w / synergy.
When working solo I face the caddy toward my single seat comfy old sofa and pull it in and equation complete, extremely comfortable working environment, enormously productive and adaptable, all in all extremely happy with it, and I'll be even happier when I invest a little more for an ergonomic recliner which will just be a dropin replacement for my current sofa. That said, this current one is so many more times comfortable than my old office chair + desk setup that I'm in absolutely no rush to do so.
Other potential ideas for upgrading are perhaps a kinesis evolution split keyboard setup mounted on the seat arms instead of the current lap mounted keyboard + right arm mounted mousepad setup, frictionless matting for the frequent different positions of the caddy, and an intuos to replace my sketchpad habit.
Nokia E90
Dell D830 (1920x1200), last Ubuntu x86_64/Fedora-development i586 (for Wine).