For my introduction, I thought it’d be a good idea to discuss some of the tools I use to do web development for Recursive Awesome. Like a mechanic, a developer has a set of tools he or she relies upon on a regular basis. Writing software can be boring and tedious without the right tools. While most of these tools are focused towards web development with Ruby on Rails, but most are universal.
15″ Macbook Pro
The foundation of any developer toolbox is the computer. I choose to use a laptop because I need the portability. Having a mobile development environment is huge. Anywhere I can sit down with my laptop for a few minutes can become a place I can program. A 13″ screen is too small. A 17″ is too big and unwieldy to whip out in more cramped spaces such as a packed coffee shop. The current crop of Macbook Pros are more than capable development machines with Core i5 or Core i7 machines rumored to be on the way later this year.
If you’ve spent any amount of time with Ruby, you know it’s kind of assumed you have a proper *nix terminal to run commands on. Windows + Cygwin just doesn’t cut it. Using Mac OS X provides me with the terminal I need and a flashy modern OS on top of it. If I need Windows, I can use either BootCamp or more likely a virtual machine.
If you’re going to be working on a laptop chances are you will find out very soon that the ergonomics aren’t ideal. Especially when seated at your typical office desk for 8 or 9 hours at a time. A stand will bring the laptop monitor up to a height where your neck and shoulders are in a better position. If you’e got an external monitor, it’s also nice to have both monitors at the same height. The stand I use is nothing special, but it has height adjustment, it swivels, and it was relatively cheap.
Apple Wireless Keyboard and Logitech VX Nano Mouse
Once you’ve got your laptop in a stand, the keyboard and trackpad become useless. Getting an external mouse and keyboard are virtually required. By using a wireless keyboard and mouse, I’m able to get my workstation set up very quickly. The only two things I plug in at the office are power and headphones.
The Apple Wireless Keyboard is compact and is easily tossed in my backpack. It is fairly good about battery life. Finally, it makes an easier transition from laptop keyboard to external keyboard when both are identical. This helps in productivity.
I use the Logitech VX Nano for no other reason than size. Both the mouse itself and the wireless dongle are tiny. I don’t have to worry about unplugging the adapter all the time; it is small enough to leave in. However, I do realize that with a Bluetooth mouse, I would have nothing to plug in. If I were in the market for a new mouse today, I would probably buy the Apple Magic Mouse.
Having owned a T-mobile G1 and become a fan of Android, I was 100% on top of the Google Nexus One when it was released. I’ll admit, for the entire time I owned my G1, I had iPhone envy. No so with the Neuxs One. Having owned one for several weeks now, I wouldn’t switch if given the chance. It’s definitely the nicest mobile phone I’ve ever had. While not really a developer, per se, the Nexus One keeps me connected. And I guess you could argue that there are apps for aiding in development such as the terminal/SSH client.
For Rails programming, there isn’t much better than TextMate. Sure, it’s been around since the beginning and hasn’t been updated since then. It still puts everything else to shame with it’s bundles and command shortcuts.
If you’re a developer and not using source control, you deserve a beating. These days distributed version control is all the rage and for very good reason. It rocks! Branching and merging in git is a dream. I recommend Vincent Driessen’s branching model to add some structure to your workflow.
Sequel Pro/Mesa SQLite
Any self-respecting geek knows their way around the command line. However, using it day to day to do repetitive tasks can be a drag. Enter Sequel Pro; a slick interface for dealing with a MySQL database. I believe it also supports Postgres. It does not support Sqlite3, yet (support is coming, just not for awhile). In that case, you’re going to want to try out MesaSQLite. It’s small, lightweight, and gets the job done which is more than Microsoft can say for most of their applications.
I used to be a huge fan of Firefox, until it started feeling more like it’s predecessor, Mozilla. Safari is fast a nimble, especially on Macs. Except for running thousands of plugins, Safari can do anything Firefox can do and most likely it’ll do it faster. If you’re a developer, make sure you turn on the Develop menu and familiarize yourself with the Web Inspector.
Firefox + Firebug + Yslow
Though you just saw me talk up Safari over Firefox, there is one tool I can’t replace in Safari and that’s YSlow. Yslow analyzes the page you are on for performance and gives you tips on how to improve it. The recommendations are those of the highly regarded Steve Souders (formerly of Yahoo, now at Google), so you know they are spot on.
Developers normally don’t do a lot of artistic work, but this geek does. I’ve tried using Gimp and even the Photoshop-like skins of Gimp, but none of them quite match the power of Photoshop. There is no substitute.
Many Mac users will tell you to use VMWare Fusion or Parallels Desktop for Mac to do virtualization. The problem is those programs cost money. Why pay for something when you can get something equivalent for free. You may even be able to convert your existing Parallels or Fusion disk images to VirtualBox if you’re savvy enough to use Google.
Last, but not least, is an application most developers probably wouldn’t consider part of their toolbox. I’ve come to rely quite heavily on Evernote though. Yes, you can take notes and tag them, and they sync up to a remote server. Yes, you can do cool things like scan documents or take captures of web pages with it. However, my most used feature in Evernote is not any of those; it is the checkbox widget. I am constantly building lists of things and adding checkboxes and turning them into todos.