I just spent the past few weeks of my "side project" time working on a membership Web site for a professional organization I belong to. I based the site on WordPress, adding a bunch of plug-ins and writing about a thousand lines of custom PHP code to glue everything together. During this process, I refined my toolset considerably since my last WordPress project, and in this article, I'll share with you how I set up my working environment.
One note: I'm not going to talk about plug-ins or individual WordPress components. Instead, I'll be talking about the tools used to manage all of that. I should also note that because this was a pro-bono project (meaning I donated my time to a good cause), I wanted to spend as little as possible on tools. I got some great discounts and used some free tools. Let's get started.
PhpStorm - IDE (cross-platform)
I am a firm believer that coding without a symbolic debugger is like typing with boxing gloves. It's incredibly inefficient. While there are many exceptional code editors with syntax highlighting, code-folding, and other language-aware features, not all editors can do a debugging trace on running code. That's where the IDE (interactive development environment) comes in. With an IDE, you can edit and step through the code.
I looked at a number of products, some of which I found cumbersome and some of which were quite incomplete in terms of features. As I searched, I kept bumping into mentions of PhpStorm, a Java-based development environment. Now, normally, I'd run at top speed away from anything based in Java, but PhpStorm has a very clean user interface, is fast as heck, and rock solid. It has the full suite of features from symbolic debugger to code refactoring. I used it throughout the project and it acquitted itself quite well. There are quite a few features I'm still not sure how to use (it's a deep product), but it definitely got the job done.
PhpStorm is normally $199 but they gave me a free educator copy because I teach at UC Berkeley.
Desktop Server - local server environment (cross-platform)
There are times you can tweak files live on the actual production server, but for full-on development, you need to develop locally and deliver to the remote host. I've used XAMPP on Windows before (and, in fact, Desktop Server is based on XAMPP). Desktop Server just adds a pile of features on top of XAMPP that let it nicely integrate with PhpStorm and spin up local Web sites. I don't use their deployment tools (I'll show you the tools I use below), but I've found that working locally was a breeze (once I had the right documentation) with Desktop Server.
There's a free version of Desktop Server, but I bought the $99 premium version because it added Coda Preview, which just so happens to be the next product I'm discussing.
Coda - code editor (Mac-only)
Coda is over-rated. There. I said it.
Don't get me wrong. It's a nice product and I'm glad I used it, which is why I'm telling you about it. But if you surf these here internets or watch any instructional YouTube videos, you'd think that Coda was the second coming of, well, something. And it's not cheap. It's $99 for an editor with benefits.
That said, here's what Coda did for me. It allowed me to edit my CSS and see the changes dynamically as I changed attributes. Change a margin and - boom - the margin is changed right before your eyes. Very nice.
However, I didn't really like the Coda interface; I found it cumbersome and slow-loading (I did add some plugins for WordPress, which slowed launch times). The product comes with a full FTP function based on the company's stand-alone Transmit FTP program. It wasn't bad and it certainly looked pretty. It just wasn't...smooth. I can't even really put my finger on it, except to say that I only used Coda when I had to live-edit a CSS file and I left other editing jobs to either PhpStorm or TextWrangler (which I'll discuss at the end of this article).
Should you buy Coda? If you're not coding PHP and you're doing HTML and CSS: yes. If you're doing mostly PHP, then you need to think about whether you want live-editing and I'd recommend you download a trial version.
Forklift 2 - FTP program (Mac-only)
Coda has an FTP function, PhpStorm has an FTP function, but neither was immediately convenient for simply moving files. Sure, each would do the trick, but I didn't want to stop and wait or stop and dig for the right set of options. I did try Transmit from Coda's developer, but it just didn't give me that instant responsiveness I wanted. Then Adrian Kingsley-Hughes mentioned Forklift 2 in one of his must-have galleries and I decided to download a trial version. I then promptly forgot about it (or so I thought).
After 15 days, the trial ended and Forklift demanded either a purchase or a ticket back home. I decided not to spend the $29.95 and let the trial lapse. Within hours, I found myself constrained. I had gotten so unconsciously used to using Forklift that I hadn't, until that very moment, realized just how helpful it had been. It doesn't get in the way. It just does the job.
GoodSync - file synchronization program (cross-platform)
Since we're talking file transfer, it's time to talk deployment. Deployment is technically the process of sending your developed environment to a staging server and then onto production. I think of deployment as a two-way street. I want to be able to deploy to my local development environment from the production server and deploy from my local development environment to the server. In deployment terms, these are pulls and pushes.
The various FTP programs let you do synchronization with varying degrees of control. But I wanted to be able to set up named push and pull configurations and with one click, be able to pull a site to my workbench or push it back to the server. I should point out that we're talking files here, not the database structure. That's the next tool. But, for example, if I made some changes to the plugin code, I wanted to be able to push those changes back to the server without having to track everything down and note every single change. GoodSync does that. It does it very well.
Like Forklift, GoodSync is $29.95. It's worth it.
DB Migrate Pro - WordPress database migration plugin (cross-platform)
When you're working on a dynamic Web site, particularly a WordPress site, you're really dealing with two complete storage infrastructures: the file system tree and the database. Forklift and GoodSync have the file system handled, and DB Migrate Pro knocks it out of the park for the database.
Let's be clear. There are a lot (a LOT) of WordPress-based backup and recovery programs that migrate the database. Most require a bunch of steps, including dragging and dropping files, downloading them from S3 or Dropbox, or other hoop jumps. But they do allow you to migrate your system. DB Migrate Pro does all that with a few mouse clicks. From within the WordPress dashboard, you select the DB Migrate Pro menu item and if you've already got a configuration set up, you just click the button to run it. A few minutes later, your WordPress site is completely up and running with the new database.
To say this adds to development efficiency is a vast understatement. Being able to quickly pull down or recover a database - quickly - means that your whole evening doesn't get interrupted if you need to do a restore or deploy or pull. Five minutes. Ten if you're downloading all your images once again. It makes taking and managing database snapshots an integral part of the development process and part of the workflow, rather than something that brings the workflow to a complete stop.
There are a bunch of add-on options that result in DB Migrate Pro ranging in price from $90 all the way up $550 for a big production house. The guys at Delicious Brains (yep, that's the company name!) were nice enough to give me an educator discount, but the product is still worth the price at list.
Sequel Pro - SQL editor (Mac-only)
Sequel Pro hasn't been updated for a couple of year, and has stayed at version 1.0. Even so, it's a very solid SQL editor and management tool that I found invaluable at certain times during development. Oh, and it's free. It is blazingly fast and I found I could type in search strings right into the toolbar and get results almost instantly.
Bottom line: Sequel Pro made debugging what was going on inside the database just as fast as using a symbolic debugger on code. And free. Did I mention free?
TextWrangler - text editor (Mac-only)
Speaking of free, there's TextWrangler. TextWrangler is made by the same folks who make BBEdit, an incredibly powerful (and long-lived) text editor for the Mac. I've bought BBEdit before (like 1990s before) but I don't have a current version. Since I had a variety of other code editors and this wasn't a paying project, I decided to go with the free TextWrangler instead. Put simply, it's a fast, simple code editor and it loads and opens files pretty much instantaneously. I tended to use it to quickly edit config and ini files, rather than launching one of the heavier tools.
Like I said, it's free. But let me be clear: at $49.95, big-brother BBEdit is also worth the price and if I wind up working on a paying project, I'm definitely going to buy a new copy.