Vim: Powerful text editor.
- Steep learning curve, but worth it.
- Great support for most languages and markups.
- Extensive library of useful plug-ins.
- Vim’s predecessor, vi is everywhere, so even if you end up working on some strange device from twenty years ago, you will still have a familiar text editor available.
- My favorite cheat sheet…
Version Control: Fossil, Git, or Mercurial.
- Easily share sets of changes with your collaborators.
- Make point-in-time “snapshots” of your project that can be reverted to or compared against other sn…
Vim: Powerful text editor.
- Steep learning curve, but worth it.
- Great support for most languages and markups.
- Extensive library of useful plug-ins.
- Vim’s predecessor, vi is everywhere, so even if you end up working on some strange device from twenty years ago, you will still have a familiar text editor available.
- My favorite cheat sheet…
Version Control: Fossil, Git, or Mercurial.
- Easily share sets of changes with your collaborators.
- Make point-in-time “snapshots” of your project that can be reverted to or compared against other snapshots.
- Track changes, see who made them, and when they were made.
- “Push” your project history over SSH to a remote machine for easy backups.
Development VM
- Use a desktop virtualization package like VirtualBox, KVM, Parallels, or VMWare Workstation.
- Create a virtual machine, and pre-configure it with your favorite tools and preferences.
- Make a cold backup of your VM, and deploy it to any machine that you or your collaborators may end up developing on (desktop, laptop, etc.).
- Saves others the trouble of establishing a working development environment.
- Makes hardware failures and upgrades a non-issue.
- You can use the SSH-push/pull functionality of Git or Mercurial to keep changes in-sync between different machines.
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. 1.
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. 1.
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. 1.
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. 1.
Bug Tracking System: Fossil, Mantis, Redmine, Trac, etc…
- Tracks and prioritizes open bugs and feature requests.
- Facilitates better communication within your team.
- Provides a history of why certain design/implementation choices were made.
- Much easier than sifting through e-mails and code comments.
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:
- HTML/CSS/Javascript: JSFiddle
- Go: The Go Playground
- PHP: PHPepl
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:
| Linux / Unix | Built-In + Native package manager (apt-get, yum, pkg, etc.) |
| Mac OS X | Built-In + Homebrew |
| Windows | Cygwin |
Leave a Reply
You must be logged in to post a comment.