Gregg Hilferding


Coda, One Window Web Development for Mac OS X

Let's get one thing clear, Coda may be a 1.0 but it raises the bar for v1.0 software.

As a long time user of Transmit, the best FTP software to ever exist, starting up Coda was a breeze. Upon open I was prompted to import favorites from Transmit and, after giving Coda permission to access my Keychain, I was treated to some little taped images of my sites popping into the sites tab:

Coda Sites Tab Previews

Of course, there became the first of a couple design "quirks" that bit me. First, double clicking a site icon opens a blank HTML file and displays the local file browser in the left sidebar. I'm not sure what behavior I would expect, but that wasn't it. It reminds me of BBEdit's default behavior on opening the application: "Open a window, and a sidebar, and create a new blank HTML file." This is immediately followed by the user behavior of "Close the sidebar, open an existing file, then wonder why that untitled.htm is still accessible from the drop down menu" or, occasionally, "add file to sidebar, close untitled.html, close sidebar, remind self to adjust preferences."

Either way, the idea of "One-Window Web Development" strikes one as so natural the moment you see Coda's implementation of it. Typical FTP environments demand the double column:

FTP Client Double Column View

Coda provides a more intuitive approach with automatic synchronization largely eliminating the need for seeing "their stuff" or the remote server. Mix in a little Webkit for live previews and you've covered the needs of 80% of web development in one freakin' super-charged efficient window.

A couple last mentions before I go buy the thing and help make their launch day the success it deserves to be... I can't do web development without an internet connection because I am a little too dependent on the online PHP manual for the correct spelling of functions. Enter Coda's built-in books and PHP manual and AUTOCOMPLETE and I can finally code from my laptop anywhere. Also, multiple split pane views (vertical and horizontal) means I can finally have my css, my php, and my html all in view. :D

The bad news? I may never buy another Transmit or BBEdit license again for my laptop. That's probably music to Panic's ears -- I just hope it doesn't negatively affect integration between BBEdit and Transmit in the future.

I could speak volumes about all the little features I can tell will save hours of my time every week, but for now, go read the official write up from Steven and, if you missed the link, the announcement from Cabel. Even if you don't develop on Mac OS X, do yourself a favor and go enjoy the beautiful and functional Coda website.

Published by Gregg Hilferding on April 23rd, 2007 at 4:30 pm. Filed under Signal, WebmasterNo Comments

Prototype Internet Explorer Gotchas

One week into building a technology preview for a new web application, I finally decided to check and "just make sure" that everything was working as well in Windows Internet Explorer as it was working in Safari and Firefox. Imagine my chagrin when the page loaded and was completely blank.

Not even a joyous error message or self-destruct error report to pore over for clues. Just a blank screen. Nothing. Nada.

First some background... I'm building the client side of the in Javascript using the amazing Prototype and Scriptaculous libraries.

It turns out that there are two very important things to keep in mind for Internet Explorer. First, Element.extend is your friend when adding to the DOM. Example:

var my_div = document.createElement('div');
Element.extend(my_div); // without this line, the next line causes IE to stop processing the script!
my_div.addClassName('thumbnail');

Second, be careful what you use as names for custom attributes! If you inadvertently cross the streams by using form attributes on non-form elements then Internet Explorer will suffer total protonic reversal (or, in other words, forcibly shut down). Example:

var my_li = document.createElement('li');
Element.extend(my_li);
my_li.setAttribute('value', s.id); // IE self-destructs
my_li.setAttribute('valuetest', s.id); // IE works fine

Although there is little else I can share about the application I am working on, suffice it to say in about, oh, six months I should have both good news to share and a fantastic grasp on Javascript programming. :)

Published by Gregg Hilferding on April 15th, 2007 at 2:10 pm. Filed under Javascript, Signal5 Comments