Within the last year and half we’ve seen the introduction of a new text editor for Mac called Coda. Built by the guys at Panic up in Portland, it’s more than a text editing environment. Coda includes the ability to edit text files as well as having a command line editor integrated in it, the ability to use Books, which are built in references for scripting languages, guides and so on. Coda includes a powerful model for taking care of bookmarks that includes a preview pane of a website, unlike some FTP clients that only show a favicon for the site (I’m also talking about Panic’s Transmit here).
I’ve been keeping Dreamweaver CS 2 around strictly for editing tables, about everything else I code by hand This was also useful so that I could continue to use Lasso Studio on projects that had hundreds of fields per table and still have some sense of manageability with them without having to edit the table code by hand. It’s possible that I have reached the time to ditch it. I haven’t even checked into a CS4 upgrade.
Coda embodies the economy of motion for an IDE (integrated development environment), short of adding code folding I can’t really think of any improvements. This year BBEdit and Coda both added Lasso Syntax highlighting, which is my preferred language (Lasso allows you to build applications against a myriad of datasources — in one website — truly king of mashups), and while BBEdit and Coda both allow multiple files to be open in one pane Coda goes several steps further.
Coda consolidates all the actions developers previously had done separately, I.E. using an ftp client, a command line editor – or CLI for short, and a file browser and navigator, into one handy interface.
Sites are configured in coda’s main preference page in an easy to view array of thumbnails where the slider adjusts their size. Sites have preferences for local and remote filepaths, support for SFTP, and svn as well. I wish the guys at Panic would add support for git but with the git-svn module, it’s not really needed. I’ll be presenting at the Lasso Developers Conference in Amsterdam in October of this year on managing workflow within Coda and on versioning control systems.
I’m going to just get to the meat of why I love Coda. I rarely have to touch the mouse. If you’ve read my page on the economy of motion and our workflow practices you understand that, like Victor Wooten, I don’t want to be wasting time with a lot of superfluous hand movement. 15,000 switches between keyboard and mouse ever day is a waste of motion.
Here’s how my set up works. I usually will have several windows open in Coda. One window is always used as a browser, I have .me mail, gmail in this so I can keep only one app open on my machine at a time (white lie, I usually have Adium and Skype up also) and several other windows with different sites. Usually there is a main site I’m developing on and one or two others that are at or near launch that have small five minute maintenance things being done in them. I can use ⌘ – ~ to toggle through these until I get the one I want.
Within these windows I have one window for each workspace I’m working on, usually this is one per client but some clients have multiple sites so I won’t draw that parallel. I have the /etc/hosts file configured on my Powerbook with local development domains like http://www.clientone.dev etc. This allows me to toggle between the code view and the preview mode with two keystrokes ⌘ – 2 and ⌘ – 3. I can also navigate through tabs with the ⌘ – shift – [ and ⌘ – shift – ] combos, the same as safari or many other tabbed applications on Mac. For those of you who still want to use a browser instead of the preview pane in coda don’t forget that you can toggle ⌘ – tab to move between apps.
My specific setup involved two terminal tabs, a preview tab and five or six code tabs. When working with a framework it’s not easy to use preview as you may be working on an OOP module or something else that does not directly relate to a single page. The two terminal tabs allow me to make commits and pushes to my git repo locally and deploy on the server when I need to by doing a pull.
As a best practice I try to code for longer and longer periods without refreshing the browser or the preview pane. This is a principle of the economy of motion as well. Do not waste time refreshing your browser 20 – 30 times an hour to check small changes. Code a substantial amount, then review, make notes for changes and then review again. Don’t develop this bad habit or if you are doing it stop now. Additionally don’t fall into the trap of making commits with every small change to your version control system. Commits are for substantive points of change in an application and represent points where forks, reviews or other activities need to take place and when combined with test driven or test-first development, need only be done when working tested code is ready to be added to the repository.
If you follow these tips and start to practice the economy of motion in the keyboard usage it can only make you a better, more productive developer.
For more on Coda read Gruber’s review of Coda on Daring Fireball.