ecto 2 for MacOSX: And you thought you saw the last of it?


As hinted in an earlier entry, I have been working on a major upgrade of ecto for Mac OS version 10.3 or higher. I had a list of user requests, suggestions, and a few remaining stubborn bugs, all of which I wanted to get rid off for good. The result is now available to all (,,!

what's new?

ecto2 screenshot

There are a lot of changes, which I had to make if I was going to respect the suggestions made by quite a few users. I'll just list them all one by one as that may give you the best overview:

A new improved XMLRPC backend

I've always tried to stay true to Apple's own WebServicesCore, but the lack of bug fixes and the poor handling of encoding has led me to whip out a custom backend to handle XMLRPC connections, based on the way the Atom backend has been coded. I wrote my backend with a focus on robustness with incorrect encodings. I also added a degree of flexibility in case of blog systems not doing things according to spec (there are quite a few of them...). Note that I'm still preaching the gospel of UTF-8, trying to get rid of the evil that is ISO 8859-1.

Blog more than one entry

An often made request was the ability to blog more than one entry. In other words, most users wanted to have more than one window open. To accommodate this, I had to abolish the concept of a main editing window. Instead, I took inspiration from and made the list of drafts and entries the main window instead. As an added benefit, I dropped the list of accounts and blogs from the toolbar (it confused quite a few users anyway) and moved it to a side drawer as an expandable list. If you only have one blog, no problem, just close the drawer and it won't bother you.

Since I was imitating anyway, I also added a preview pane to the main window. This pane has two modes. In the minimal size setting, it only displays the excerpt/summary, categories, and permalink of a selected item. When you make the pane larger, a true WebKit preview will be shown. Although this was easy to implement, I still think it's one of the neatest features.

Using this new main window, you can spawn as many new draft windows or edits of existing drafts and entries. And get this, you can post more than one entry simultaneously. The status window just got more busy. Occasionally, you may run into a stuck connection (most likely when you're pinging servers), which you can now cancel by a control-click in the corresponding spinning wheel of the status window. This is a not so obvious feature, but I really didn't want cancelling connections to become too easy to do. The reason is that once you post an entry, your entry will most likely already be on the server. Cancelling means that you'll end up with a unfinished copy locally and an unfinished copy on the server. In other words, only cancel if you're sure the connection is dead, otherwise, just let it go or time out. Speaking of time-outs, posting huge files (like movies) should not time out prematurely anymore. If it does, let me know.

New interface for drafts

Since I dropped the original main editing window, I had to rethink the interface for the draft windows. The most important thing I wanted to deal with was a smooth transition between different blog systems. MovableType allows for more features than Blogger does, so the editing view for the former will be more complex than for the latter, yet Blogger users shouldn't be forced to look at interface elements they're not even able to use. The result:

  • A header that is similar to a message window. This means that there's a clear title field and an options bar. In this case, the options bar includes the ability to switch accounts or blogs for the given draft, set posting options, and apply custom HTML tags.
  • The header also contains a collapsable keywords field. Keywords are a feature that's only available in MovableType. Those who don't use it, can easily obscure the Keywords field from view.
  • A collapsable extended entry pane. Yes, the split view is back. With a vengeance. This time, however, it's better handled, since it collapses more smoothly when unused. Blogger users won't even notice it.
  • The excerpt edit field is now in the bottom drawer. Easily to show and hide. You can still navigate to each field with the tab key.
  • There is no separate tab with obscure options anymore. Modifying the date or managing trackback addresses occurs via sheets.

The sum of the above is an interface that can be as simple or as complex as a user wants or as a user can get.

A rich text editing mode

Apart from the old HTML editor, ecto now also offers the ability to write blog entries in rich text mode. The basic idea behind ecto's Rich Text editor (WYSIAWYG) is to offer users the ability to compose entries without having to bother with HTML tags. Since most blog entries are not complete web sites, composition of entries only allows font and paragraph changes, indentation (read “blockquote”), and obviously images (video and audio should follow shortly). Regarding image authoring I had two ways of implementing support for it. I tried the extreme version involving containers and layouts but that produced quite a bit of headache and would slow down typesetting too much. Considering that Tiger's WebKit will allow editing, I chose the easier route. Images can still be positioned and resized in place, but text flow is not what you will see. That's one reason for the 'A' in WYSIAWYG... 'almost' (If your entry fails to post, read “Got” instead of “Get”...).

But hey, screenshots never hurt, so take a look:


This is a draft in Rich Text editing mode. One can switch from Rich to HTML and back indefinitely. In the Rich Text mode, a series of buttons will appear to easily allow setting the various font and paragraph peculiarities (alignment, indentation, cursive, bold, underline, strike-through, font-color, background color, font face). The buttons are modelled after Panther's neat Font panel, which obviously also has effect here. Don't mind the gray background color, that's fully customizable. By default background is white and foreground is black.

Note the highlighted square in the corner of the attached image. It's the resize knob to give users basic control over the size of the image. To control more options, double-clicking the attachment will reveal the attachment settings sheet.

There's not really much to it, I guess, but it should make writing blog entries a bit more easier, especially for those who don't care or know much about HTML.

One blog isn't the other

With ecto 2, all settings are now truly on a per blog basis. This includes the configuration of draft windows, the option to convert HTML entities, the email notification and iTunes templates, and so on. In addition, a couple of new settings have been added. These are:

  • The ability to set the spelling dictionary language per blog. You may have one blog in English, the other in French (hello Loïc!) and with the spelling on by default, red curly lines would appear everywhere if the languages didn't match.
  • The ability to automatically adjust the posting time. You may be posting entries from a timezone different from the one that your blog configuration is set to on its server. This way you can fake posting from a different timezone.
  • Customizable templates for the “Blog This” option in supported newsreaders (e.g. NetNewsWire, PulpFiction, Shrook) as well as blogging a selection from Safari (using the Services menu). All templates except the file upload templates are grouped in a separate dialog.


The whole file upload system has been given a very thorough overhaul. This was motivated by two factors: (1) Users wanted the ability to prepare images offline and (2) The original file upload manager was based on a single editing window concept. The new ecto allows you to add an attachment via the menu or via a drag 'n drop to a draft window (you can now also drag images straight from your browser!). Instead of popping up a dialog, ecto applies the default settings or a custom preset to the attachment and writes a temporary link to the draft. Click on the link or double-click an attachment to reveal a sheet in which you can modify the settings for the given attachment. ecto handles file types smarter and modifies the interface as such. Note that filenames can now be edited as well.

ecto2-attachment ecto 2

Attachments can be added to a draft via Draft → Add Attachment, by dropping files or image data into the edit areas, or by choosing Draft → Import from iPhoto. The following two movies describe the process for both the Rich Text and the HTML editor:

Attachments are automatically uploaded when you post a draft. There's no need to upload manually. All attachments are copied to a local cache. You can view, delete, or reuse the stored attachments via ecto, including redoing the markup.


Other small additions

  • Paste the contents of the clipboard as encoded in the HTML editor, i.e. convert the <, >, & characters to corresponding HTML entities.
  • Paste the contents of the clipboard as unformatted in the Rich Text editor, i.e. remove all fancy formatting and paste just the plain text.
  • support for HTTP AUTH. Some users have their blog systems tucked away in a password protected directory. This made it pretty useless with the old ecto. Not anymore. Enter the access point for password protected scripts as http://user:password@host/path/script.php and ecto will take it from there.
  • A drawback with retrieving entries from MovableType API compatible blog systems was that categories were not returned by the server. In the new version categories are automatically retrieved as well (can be turned off via the Advanced Preferences).
  • Support for stationaries: If you write entries that use a similar format, you can save one of them as a stationary and reuse it infinitely.
  • Configuring an account has been made a tad easier. The user is now presented with a list of blog systems (mind you, not a complete one). If ecto has not found the access point itself, selecting a blog system will automatically set the XMLRPC API and, in some cases, also the access point.
  • For Textile and Markdown, ecto uses plugins to provide the user with a preview. In the new ecto, you can add your own plugins for unsupported text formats (this is for Drupal/MovableType/Typepad only). The name of the plugin must match the key for the text format and must not have spaces and be all lowercase. E.g. Textile uses textile_2, Markdown uses markdown. Custom plugins should go inside ~/Library/Application Support/ecto/plugins/. Jacques Distler has sample plugins.
  • When dragging the favicon from Safari's address bar, a URL is created in the text.
  • ecto now tries to determine whether to encode HTML entities. This happens during account creation or during an “Update Cache”. For blogs in UTF-8, HTML entity conversion is off.
  • Proportional image size values can now be based on either height or width (previously it was height), which is useful for adding new attachments with default settings applied.
  • Default preview template now does not derive from a MovableType specific template. To activate this, go to Weblog->Edit Templates…, select the Preview template and press “Factory Settings”.
  • Added an “Edit Link” contextual menu item which appears if you click on links in the text areas. In Rich Text mode, it will bring up the Create-A-Link dialog.
  • Added support for a poster movie.
  • More AppleScript functionality.
  • Added smart quotes to preprocessing options.
  • Sound files are now handled properly.
  • Improved HTML shortcuts allowing different modifier keys for each shortcut.
  • Updated existing localization and added Dutch localization.
  • Added a template for the Create A Link
  • Added an option to show a new window at startup.
  • Improved Account Manager.

Naturally, these features will eventually appear in the Windows version as well.

[composed and posted with ecto2]

Posted by Adriaan on September 23, 2004