Coda - a Quick Review

June 22, 2007

The name of Panic’s latest “big app” would suggest that it has something to do with coding, which it totally does, but I also remembered the word from choir practice. In music, “coda” means “the concluding passage of a piece or movement, typically forming an addition to the basic structure.” I have no idea what has to do with anything.

I wouldn’t consider myself a professional web developer, although I’ve worked as one in the past. On projects ranging from simple web pages to a full CMS. I own licenses for both TextMate and BBEdit and of-course Transmit and my nano highlights PHP syntax . I’ve also been a certified Panic fan-boy ever since Audion gave us non-rectangular windows and fake window transparency.

The Good

  • The Clips command is the best implementation of a scrapbook that I’ve ever seen and one of my favourite things about Coda. BBEdit has Clippings but they’re so cumbersome to add (there’s not even a command for that in its palette!) that I’ve always just used Stickies. Coda’s solution is even more convenient than Stickies, and a whole lot more powerful as well. You simply pop open the Clips window (no shortcut for this, unfortunately) and either write or paste in your clipping. Clips can be either global or site-specific.

Clips also follow TextMate’s tab-completion logic allowing you to set a shortcut for each clipping. For example, to insert the bundled XHTML 1.0 Transitional document skeleton, you’d just type “xhtml1t” + Tab. There’s no built-in shortcut for the Clips window itself though.

A proper scrapbook is such an important feature in an editor (code snippets, old code, etc.) and It’s about time someone did something about this situation!

  • In-document search. I really like the fact that Coda uses a search banner instead of a window which can get lost (TextMate) or an annoying modal dialog (BBEdit). Regular expressions are supported (even different syntax variations - from basic POSIX to Java and Ruby), but unfortunately there’s no way to store recent patterns. This is a major bummer because patterns often get very complex and it’d be nice to not have to put them into Stickies or whatever. You could of-course use the Clips feature to store them though.

  • Built-in reference. This is brilliant but again, takes some time getting used to. Every webdev out there has their own reference pools by now. Excellent for when you’re on the road though.

  • Built-in CSS editor. Can’t really comment much on this since I’ve never relied on a specialised CSS editor, but I’m sure I’d appreciate it if I did…

  • Custom fixed-width font! :)

The Weird

  • Auto-complete is nice, but like all other implementations forces you to write in a certain way (like no space after function name). Coda also closes parenthesis’ and quotes but oddly not brakets. If you delete one of the quotes, the second one is left there. I like Coda’s “standard” undo much more than TextMate’s irritating per-keystroke behaviour.

  • Terminal - I can kinda see why they put this here, but since most hosting providers don’t give shell access, I’m not really sure how useful this is going to be for most users. Hopefully they’ll add some special environment stuff (like easy access to the files you have open, or even a simple shortcut for jumping to your project folder would be nice). A separate command history that would, for example give me access to the last search patterns, that I could use with grep -r, since Coda doesn’t have multi-file search.

The Bad

  • Project-wide searching is by far my biggest disappointment. At first it seemed like Coda would only search for certain filetypes, (as searching for any Cake templates (.ctp) didn’t return any results), but actually, it only searches from opened folders (!). Another annoying thing is that every search resets the opened folder structure. If you have root > app > views open and you search for something, you’ll be back in “root”. To be totally honest, working on a CakePHP-based project felt extremely tedious with Coda - you know exactly what file you have to edit, but actually getting to it is easier said than done. TextMate totally nails this with the brilliant Cmd-T command. Cmd-T creates new tabs in Coda, but so does Cmd-N, so go figure…

  • Splitting only for the same file (but with different modes!). Why oh why is JEdit still the only GUI editor on the Mac that lets you work on n-number of documents within the same window!?

  • File management - Ctrl-click on folder to create new file but no shortcut? :(

  • Coda doesn’t seem to have a command-line launcher like, for example TextMate’s mate and dropping a folder on the app doesn’t do anything either. It doesn’t treat folders as “projects”, as TextMate does which is kind of a shame, since when you use Coda as a regular editor you kinda get the impression that it would.

I think the “folder as project” concept is such a no-brainer and I hope more and more apps will adopt it. Hopefully this will be improved in future versions, if only so much that an open -a Coda. would just open a new window with the Local path set to that directory, we can create an alias for that ourselves. ;-)

  • FTP. The uploading is a little weird. Where’s synchronization? Not good for quick uploads/touchups. Doesn’t replace Transmit.

  • No shortcuts for moving between tabs

  • No code folding

  • PHP-HTML mode gets confused about CSS

  • Syntax modes have to be set manually for every new file extension.

  • Felt bit sluggish (1.5 Ghz G4 + 1.25 GB RAM)

Conclusion

The general concept of Coda is really strong. A typical example - you upload some files to a web server, but the directory index is not allowed in that directory. So you fire up your editor, write your .htaccess, save it locally, upload it to the server, change the filename, set the correct permissions, delete the local copy. With Coda, you just connect to your server and do your thing.

Coda is one of those apps that require the user to rethink their working habits abit. For me the standard TextMate/PHP Function Index/Transmit workflow works really well, except for maybe the later stages of development when you’re making small fixes to several files local master copies of files which you then have to manually upload (Transmit’s Synchronise command has helped alot in this regard).

It seems Coda’s concept of Sites would make this easier, but I’m not ready to make the switch just yet.

Mind you that this is all versions 1.0 through 1.0.3 so there’s no doubt in my mind that Coda will one day be a killer package for professional web development on the Mac (which it already is for many, I’m sure).

Some really nice tips on using Coda from Steven Frank’s homepage