My Tools of the Trade
Whenever I learn a new set of skills—such as photography or cooking—I want to learn as much as I can about the tools that the pros use.
Sure, to learn photography you need to understand exposure and depth of field, but that’s only part of what it takes to be a real photographer, to be a good photographer. What camera and lenses should you buy? What brand of film? I even pay attention to borderline ridiculous details like what kind of camera bag the pros use. Learning first-rate cooking skills won’t do you much good if you don’t have a good set of pans. Any chef will tell you that having quality, sharp knives make a world of difference in the experience of cooking, even though it may not change the flavor. And, as I love to watch Gordon Ramsay scold, keeping a clean kitchen is an essential (and too often overlooked) step in producing quality food.
The point is that there is more to learn than just the fundamentals. It makes sense to learn from the trial-and-error experience of people who are already working with these tools everyday. I may decide I disagree with their preferences, but knowledgeably making a different choice is much better than stumbling around on my own. Plus in the process, I know I will discover some of the intricacies and pitfalls that come with working in the field.
In that spirit, here are the tools that help me as a web developer.
MacBook Pro (15″ Intel)
I have always been an Apple user so that is where I am the most comfortable. It has been a great choice for web development because I can develop on OS X’s Unix and deploy on Linux. I like having a laptop because everything travels with me. If I need to fly to a meeting in California or teach a course in Texas, I have all my web development files with me. I can work on the plane. I can answer client emails from the hotel. I can upload bug fixes as soon as I find out about them. I prefer the 15″ because the 17″ is harder to lug around and I don’t need the extra width (screen height is more important for programming than width).
Apple Cinema Display
In order to have more screen real estate, I attach an additional monitor to my laptop. When I’m developing, I usually keep my code and any server connections (FTP, SSH) in front of me and use my external monitor for my web browser(s). Fix code over here, view the changes over there.
Spaces
Recently, I’ve also started using OS X’s Spaces to good effect. Spaces let’s you create several virtual screens that you can quickly switch between. It works well for me when I’m multi-tasking. I can put email and personal web browsing in one space and then put work for three different clients in three separate spaces. If I have a brainstorm of if a phone call comes in from a client, it only takes a second to switch spaces and start taking notes or making changes.
External Hard Drive / Time Machine & Time Capsule
Backup, backup, backup. If cleanliness is essential to a career in the kitchen, then backing up your computer is essential to a career in programming. It may not make your code any better but it will make the experience better. An external hard drive is a tiny investment for a huge data insurance policy. Of course you have to remember to use it! At a minimum, backup once a month and/or before any trip. For key files, I recommend keeping two versions. You can safely throw out the oldest version when you make a new backup because you know there is another full backup. Be sure not to forget about non-obvious files like MySQL databases.
You can also get software to run backups for you. I’ve tried different programs and techniques with mixed results. The best so far is Apple’s Time Machine when pair with their Time Capsule. Every hour, my computer boots up the Time Capsule hard drive and records any file changes. I don’t have to remember to make the backup. I always know I’m covered. One of the added benefits of Time Machine is that you can also see the old versions of the files, even deleted files, in case you made a revision or deletion you didn’t mean to make.
TextMate
Don’t attempt coding without a good text editor, especially one that has code coloring. While I know that a lot of developers prefer a full Integrated Development Environment (IDE) over a simple text editor, I do not. I prefer the simplicity of a tool that does one job really well. I don’t want to have to learn the ins-and-outs of the IDE. I don’t want to spend time wrestling with its peculiarities and bugs. If I were working with a compiled language like C++ or Java maybe I would find an IDE more useful, but for web programming it’s easy enough to host my own development environment (whose peculiarities I already know).
For many years, BBEdit was my favorite editor, but about three years ago I switched to TextMate and I’ve never looked back. TextMate lets me open up a whole project at once with a file drawer and tabs that make it easy to move around. It will fold up (collapse) sections of code to get them out of my way when I’m not using them. It lets me bookmark code to make it easy to locate later. It has great search and replace features (searching using regular expressions is a feature I insist on). It has customizable code coloring/formatting, a long list of language specific helpers (bundles), and many useful hot keys and shortcuts. The only feature I miss from BBEdit, is the ability to run diff on two folders. You can manage it in TextMate but not as easily. I still have BBEdit around for those rare times when I need it.
Transmit
The best FTP software I’ve used. Simple and reliable.
ExpanDrive
I have recently started using ExpanDrive and I can’t say enough good things about it. It is SFTP software that mounts a remote server as if it were a local drive. You can drag/drop and open files using the Finder, just like they were on your Mac. The only reason that this software won’t replace Transmit for all my FTP needs is that it is for SFTP only right now. (Half of the servers I use use FTP and half use SFTP.)
One note, if you want to use ExpanDrive to open files as a project in TextMate, TextMate will slow to a crawl while it refreshes the list of files in the project every time you switch to it from another program. There is a plugin called Remate that removes the wait and gives you a manual “Refresh Project Files” link instead.
phpMyAdmin
The standard for working with MySQL databases in a simple user-friendly web interface. I love the fact that it exposes most of the SQL requests it makes so that beginners can learn from it and pros can tweak and edit it. I still use MySQL from the command line too, but for a quick answer, for working out complex queries, or for importing and exporting records, phpMyAdmin gets me there faster.
WordPress
This blog uses it. It’s easy to install for clients (or friends) who need a simple, free blog or content management system. I also find it instructive to watch the development of WordPress, both from the code and business perspective. The WP team is doing a lot of things right.
QuickBooks
I use QuickBooks for all my business accounting. I use it to record deposits, write checks, and keep track of projects. I can run a report and know which projects brought in the most revenue and which were the most profitable (not the same thing). Four times a year I send the file off to my accountant who figures out how much I own in taxes. Because it is designed for users with an accounting background, I’m not sure how easy it would be for a beginner to pick up on their own. I had an accountant teach me.
Dictionary & Thesaurus
It may sound strange, but the dictionary and thesaurus have been frequently useful to me. Not just for writing client proposals, but for when I am actually programming. Suppose you are working on a site where you need a database for “types” or “classes”. But “type” and “class” are reserved words in most programming languages. Just open up the thesaurus and find a synonym–maybe “brands”, “groups”, “vintages”, or “flavors”. They can also be a great help when trying to think of new domain names, project names, or company names.
Hosts: Pair, Slicehost and Rackspace
I have been a long time client of Pair. I love them for their stability, domain management tools, and email management. They are a great place to host an HTML or PHP site, but Ruby on Rails hosting is not one of their strengths.
For Rails hosting (or any hosting really), I can’t say enough good things about Slicehost. They are inexpensive, it is fast and easy to sign up or modify your account, and their online documentation is good.
The only downside to Slicehost is that you have to be server savvy. When you sign up it’s literally like taking a brand new Linux server out of the box with only the base software installed. You have to do the rest. Beginners will do better to go with shared hosting environment where much of it is pre-configured for you. But experts will love the freedom.
Rackspace is the Mercedes Benz of web hosts. I can’t afford them but some of my clients can. If a client wants reliability and top-notch customer service, and will spend the money to get it, then I refer them to Rackspace.
And even though I use them less frequently, I can also report good experiences with MediaTemple and LiquidWeb.
Other Tools
And rounding out the list would be some more obvious choices: Firefox, Safari, Internet Explorer, Photoshop, Illustrator, iCal, Mail, Keynote and iTunes.
I’d love to hear what tools help you. I still have plenty to learn from others!

August 7th, 2008 at 2:59 pm
Thanks Kevin, love posts like this. Let us know if you need anything.
August 7th, 2008 at 3:12 pm
@slicematt: Just keep up the good work.
@everyone: The fact that Slicehost knows in under 3 hours that I posted a positive review is an indication of just how slick their operation is.
August 7th, 2008 at 4:16 pm
Ditto, plus a couple:
* Parallels, for running multiple concurrent instances of Windows XP, for running multiple versions of Internet Explorer, for seeing what they do screw up my flawless CSS.
* A to do list. I like TaskPaper because it presented no learning curve for me, it just augmented the plain-text lists I was already keeping. Someone actually wrote a TextMate plugin that simulates it, but I like having a dedicated app for this.
August 8th, 2008 at 4:12 pm
[...] (hat tip to Kevin Skogland, for kicking this off by posting his tools of the trade) [...]
August 10th, 2008 at 3:39 pm
[...] A couple of articles about what people use to get their job done. Always interesting from the point of view of whether there are some good ideas to improve my own workflow. A Fresh Cup - My Tools of the Trade Null Is Love - My Tools of the Trade [...]
August 13th, 2008 at 3:10 pm
Illustrator, Photoshop, Flash, Textpad, Dreamweaver, Oxfords dictionary, Reason 4.0, Korg, Mozilla, Alexa(if you can call that a tool), Audition, Adobe Premier. I have just been introduced to WAMP and phpMyAdmin, I am trying to create a Flash front end powered by PHP and mySQL!
August 18th, 2008 at 10:28 pm
Kevin: Which version of Ruby, Rails and gem do you use for your day to day chores. do you use the latest version. Which is the most recent stable version of Rails.
August 19th, 2008 at 7:17 am
@Aditya: I use the latest stable version of everything. The only time I use an older version is if clients have it installed. Sometimes they decide not to upgrade, sometimes it’s a case of “if it’s not broke, don’t fix it”. I recommend that you do your best to keep up with the latest stable version. I personally don’t use Edge Rails—I prefer to wait for the stable release.
October 6th, 2008 at 1:15 pm
Hi Kevin. Based on the RoR Essential Training movs, I saw that you created some nice diagrams showing the MVC architecture, the app blueprints, etc. Did you use Illustrator with some templates? or a specific sw?
October 6th, 2008 at 1:25 pm
I used Keynote for all the slides and diagrams. Keynote lets you animate them too.
December 13th, 2008 at 6:38 pm
Hello Kevin. I’m just curious about one thing. You mention Intenet Explorer at the end of your list. Since you are using Mac exclusively….How do you develop for Explorer on a Mac? Last version was what?…IE5.5? I have a nice, shiny G5 that hasn’t gotten alot of miles because I’m constantly needing to view my work in Explorer. Do you use a PC for Explorer stuff? Just wondering. I would love to turn my Mac on again.
December 15th, 2008 at 10:29 am
I use IE on a PC just for testing CSS. It’s usually the last thing I do.
January 28th, 2009 at 1:40 am
I have to say this list of yours sums me up pretty nicely. All accept quickbooks, I need to see if Lynda.com could help me with that. I’m currently learning your PHP class there now. The one thing you need to check out though is Pro Tools 8 or Logic Pro for your audio editing needs. All the best, and many thanks to you sir!
February 16th, 2009 at 12:15 pm
Wow, this was a very good article. I love reading articles like this written by people who know what they’re talking about. I am a PC user, yet I still find it easy to develop on a PC. I use Windows Vista Ultimate, which is a step up from XP for a web developer such as myself (if you don’t count all the unfixed bugs).
But, I love web developing and it is articles like these that give me motivation to keep going.
By the way, your blog is really great. If you have the time, you should start updating it regularly. It’s always nice to read well-written articles by someone who cares.
March 25th, 2009 at 5:02 am
I have watched your course PHP with MySQL Essentials, just wanna say your style of teaching is great!! Very clear, concise and interesting, really making a difficult subject easy for me, and I like this post, too, helps me to understand what tools the pros are using. Thanks again!
April 5th, 2009 at 4:33 am
hi kevin, thats realy interesting , I am a flash designer but now wish to flash development with PhP ,,,, what advice you have for a php beginner to have a good career in the field of development.
April 6th, 2009 at 8:12 am
My best advice is to learn it (from my training videos, from a book, or from the internet), then practice, practice, practice.
Work on projects and set goals for yourself that will stretch your abilities. It will make you better, but it will also help to keep you interested.
And look at code written by people who are more advanced than you. You can learn a LOT by downloading an open source project, picking it apart, and trying to understand why they made certain choices.
October 11th, 2009 at 6:34 pm
Just today I was thinking ‘there’s way too much on my desktop (expose) wish there was a better alternative’… then read your post and thought I ought to give spaces a shot!
Now I have space one for my browser (which is Opera btw - best browser out there!) space 2 for textmate, your videos and finder (files), space 3 for email and itunes. Will see how that goes for a few days… it’s a lot less cluttered so I hope I can get used to it.
Thanks again for the post - always nice to see how others work.
March 22nd, 2010 at 2:22 pm
Hi Kevin,
I’ve been watching your PHP videos and noticed some really nice features with the text editor that you were using. Did the syntax highlighting for variable names and scope of tags (from beginning to end of php tags etc.) come built in? Or did you have to do some customization? Thanks!
March 22nd, 2010 at 2:34 pm
Those features are built in to TextMate.
March 25th, 2010 at 6:58 am
Hi Kevin,
I’m curious if you done a Computer Science Degree or did you learn everything yourself? Do you think its better to learn Java so you can really understand OOP and become a better PHP/RAILS programmer?If possible can you tell us if know any other programming languages other then PHP/RUBY?
Thanks in advance
p.s thanks for the Tools of the trade above i think i’m going to get a 15 inch Mac Book Pro now!
March 25th, 2010 at 7:01 am
And also (forgot to add) where have to been since July 7th, 2009? i think that was your last entry in the blog lol!
March 25th, 2010 at 10:33 am
I am mostly self-taught, but I took LISP and C++ courses in college. Besides those I am familiar with JavaScript, ASP, and Perl. But I’m not an expert in any of them.
I see no reason to learn Java unless you want to know Java. No one OOP language is above the rest. Learn whatever you need and whatever interests you. No reason to create prerequisites for yourself that don’t exist.
I’ve been spending my time on client projects and fatherhood. That hasn’t left much time for blogging. I hope to have more time for it again soon.