-
Vim: Powerful text editor.
-
Version Control: Fossil, Git, or Mercurial.
-
Development VM
-
Actual Desk and Chair
Hunching over a laptop on any-old-surface will mess you up.
Get a chair that makes you sit up straight. It doesn’t have to be some kind of million-dollar-status chair — just something that keeps you sitting up straight. This can be done for well under $100.
Have your chair or monitor adjusted so that you don’t have to crane your neck to see. Again, no million-dollar-ergo-station required. A book or two under your monitor will do.
-
Multiple Monitors
Most development consists of code or markup that is compiled or interpreted into an output of some sort. Having a second monitor eliminates the need to juggle between your editor, your debugger, and your output. This saves a metric buttload of time. It will also reduce your likelihood of getting a repetitive stress injury.
If a second monitor is not feasible, try using tmux for terminal sessions, or a tiling window manager for your GUI sessions. There is a slight learning curve, but totally worth it for the reduction in window juggling.
-
Clicky or Semi-Clicky Keyboard
Strong tactile feedback lets you type with a lighter touch. This makes typing for extended periods of time more comfortable and less injury-inducing.
An ergonomic clicky keyboard is even better.
-
Streaming Radio
Having some kind of background music helps your tune-out distractions and focus.
Music with stark dramatic or textural shifts is probably not a good choice, so skip the Wagner and Beethoven. Go for something like ambient, chill, or some other variety of wallpaper music that doesn’t offend you.
VLC Media Player can browse the Icecast Radio Directory from its playlist.
-
Bug Tracking System: Fossil, Mantis, Redmine, Trac, etc…
-
Read-Eval-Print Loop (REPL) or Sandbox for Target Language
Language and API documentation is frequently ambiguous. Having a small project or REPL at-the-ready for probing various APIs and language constructs lets you resolve this ambiguity quickly.
Most functional languages (Lisp, Scheme, Clojure, Haskell, etc.) have a built-in REPL.
For other languages, having a sandbox source file that you can quickly save, compile, and run is almost as good.
A few online examples:
-
UNIX Userland Tools
Having a tool set that is semi-consistent across platforms is a big help. Getting this tool set from a single mechanism is much more manageable that having to seek-out and evaluate a variety of proprietary or freeware tools for each individual need.
Most development is text and file intensive.
awk Text processing / data extraction cat Print / concatenate files diff Highlight differences between files find Find files by patterns or attributes grep Find in files less Read-only file navigation lsof List open files / sockets / pipes / devices more Print file page-at-a-time sed Stream editor sort Sort lines of file(s) split Split file into pieces tail Display last n lines of file wc Count lines, words, characters, bytes in file Most modern development touches the network at some point.
dig Forward and reverse DNS resolution lsof List open files / sockets / pipes / devices netstat Display network connections, routing tables, interfaces, and statistics ping Test reachability of host tcpdump Packet capture and analysis traceroute Display route and transit delays to a host Where to get: