MarsEdit 2.1

January 31st, 2008

It is with great pleasure that I announce the immediate availability of MarsEdit 2.1, a significant update to Red Sweater’s Eddy-Award winning desktop blog editing application.

Download MarsEdit 2.1 From The MarsEdit Home Page

I’ve updated the high-level “what’s new” page, but of course I also love the sound of my own keyboard, so I thought I’d spend some time going into detail about what I’ve added to this release.

In summary, MarsEdit 2.1 has a new search feature, a new capsule-based tags editor, support for Movable Type tags, support for saving drafts to the server, massively improved preview performance and usability, and a bunch of other performance boosts and feature tweaks.

Now, how about some details?

Searching Drafts & Posts

While MarsEdit doesn’t completley mirror your blog’s post history, you can download a good number of your most recent posts, so that they’re handy for any edits you want to make. When you combine these posts, your local drafts, multiplied over a few blogs, it gets easy to lose track of things.

MarsEdit’s new search field makes it a snap to focus in on only the posts that match the search terms you provide. Let’s see, I could swear I wrote about NetNewsWire recently…

That was easy! I modeled the search after Mail, which means it’s sort of more accurately a “filter” than a search. It doesn’t have any of the fine-grained controls that Mail offers, but who knows where this feature might lead in future releases. Let me know!

Enhanced Tags Support

One of the things that the blogging systems of the world haven’t been able to get their story straight about over the years is whether to support tags, categories, or both. What’s the difference? In a nutshell, think of categories as hierarchical categorization, and tags as more for indexing purposes. For example, the City of Lincoln and President Lincoln both deserve the tag “Lincoln,” but one belongs in the category “Cities” while the other belongs in “Presidents,” while both belong in the category “America.”

The growing consensus seems to be that there is a place for both tags and categories, so lately there has been an increase in support for “proper tags” on blogging systems, and a corresponding increase in demand for proper support in MarsEdit.

MarsEdit 2.1 includes stunningly Mac-like support for tags, which work great with WordPress and Movable Type systems:

The Movable Type support is completely new, while WordPress users were previously able to enter tags in the “Keywords” field. The Keywords field is now disabled for WordPress, and replaced with the new Tags field, which offers better editing abilities, and keeps a history of tags you’ve previously entered.

Dramatic Preview Improvements

Ironically, one of MarsEdit’s finest features has also been one of its most frustrating. The basic idea is while you’re editing a post in MarsEdit, you can open up a preview window right alongside it. As you edit your entry, you’ll see an updated view of your post as it would be rendered by a typical web browser (Safari).

While this feature worked great in MarsEdit 2.0 and earlier, there were a couple really annoying quirks that I’m sure many of you have run into personally. Do either of these sound familiar?

  1. Images and movies flicker and reload constantly.
  2. Preview jumps to the top of the post when I’m editing a long entry.

They will soon be unfamiliar to you, as MarsEdit 2.1 uses a dramatically improved technique for updating the preview smoothly and almost immediately.

The preview scroll bar now “sticks” intelligently, so if you’re writing a long entry and you want to always see a preview of the end of your post, just scroll to the bottom of the preview and that’s where the preview will stay.

Finally, I noticed that for many users, the usefulness of the preview window was not immediately apparent because the default template looked too much like plain text. While I recommend customizing your template to look more like your own blog, I thought users who didn’t have the time or inclination to do so deserved something a little bit snazzier, while still quite subdued:

What I hope is that by seeing a little bit of finesse in the preview window, users will be more inspired to edit the template to their own liking. It also makes the default previews in the main window look a little nicer.

Save Drafts To Server

I bet many of you are currently choking on your coke, sprite, beer, whatever, as you read the heading above. Because requests for this feature have been pouring in for so long, and because I’ve been persistently hesitant to implement it, I’m sure it comes as a surprise that it’s finally happened.

Why did I resist so long? Because frankly the situation on WordPress and Movable Type, two of the most popular blogging platforms in existence, makes it impossible to provide a truly A+ user experience when it comes to drafts on the server. While the Movable Type interface that both of these systems use offers clients such as MarsEdit the ability to specify whether a post is a draft or not, they infuriatingly do not offer a means of distinguishing a draft from a published entry when posts are refreshed from the server.

So why did I give in, then? Because there’s only so much high ground to stand on, and the screams and pleas from my users have been quickly eroding that foundation. Bottom line? This is a useful feature that users want, and while I can’t promise a perfect experience for everybody, I hope that users who need it most will be able to “make it work” for themselves, in spite of the drawbacks.

To take advantage of the new feature, just open the Options panel in MarsEdit and select the post status from the popup menu:

Server Draft Usability Workarounds

As I said, I resisted implementing this feature for a long time because of the problems associated with it. So I feel it would be irresponsible of me not to detail the types of problems you will run into, and how you might work around them.

Blogger: No Problem!

Blogger uses an Atom Publishing-based interface that doesn’t suffer the problems described for WordPress and Movable Type. Bottom line? If you’re using Blogger and want to set the draft or published status of posts, have at it. Things will just work. Thanks, Blogger, you guys are champs! If everybody handled drafts like Blogger, this feature would have been done a long time ago.

Forcing Draft Status

Remember that annoying issue where I said MarsEdit can’t tell whether a post is a draft or not? It’s only true for WordPress and Movable Type. And the good news is that WordPress is fixing this in WordPress 2.5 (already fixed on WordPress.com). But in the mean time you may be be interested to know about a little hack I built into MarsEdit so that you can effectively work around the problem.

This idea came from one of my beta testers (thanks David Chartier!): add a category “MarsDraft” to any of your posts, and when MarsEdit sees the category, it will automatically assume that the post is to be treated as a draft. So to make sure you don’t accidentally publish something early, just add the magic category, and remember to turn it off when you change the status to Published.

Enabling Movable Type Support

Unfortunately, things are even worse than already described, when it comes to Movable Type. Not only does Movable Type fail to provide a means for telling the draft status of a post, but by default, they don’t respect the draft status flag that MarsEdit sets on the post, either. At least, not in the way you would think it should.

Movable Type uses the “draft” status to mean “don’t rebuild the site yet.” But as soon as you do something that triggers a rebuild, your “draft” will go public automatically. Yikes! In order to make it interpret the status of a draft as you might expect, you need to alter your configuration file, adding the following line:

NoPublishMeansDraft 1 

On MT4 and later, this configuration file is called mt-config.cgi, while on earlier releases it is called mt.cfg. Apparently this configuration directive will cause your Movable Type installation to treat the draft status as you would expect if you’re using an application such as MarsEdit.

And… The Kitchen Sink

I’ve covered the vast majority of interesting changes that went into MarsEdit 2.1, and this blog entry is already way too long. I’m impressed that you got this far, so I’ll just let you know about a few other enhancements that made it in for this release, in case you’re interested:

  • LiveJournal blogs now get a real Title field!
  • Markup Macros are available from a contextual menu. Just control-click or right-click in the text area of the post editor.
  • Autosaving performance is dramatically improved, reducing the “pause in typing” that some people experienced periodically.
  • Heck, LOTS of performance is dramatically improved. Something feels faster? It was on purpose :)
  • The date editor sheet is now resizable. Some people have date formats that didn’t quite fit in the default. If this applies to you, just stretch the sheet wide enough to suit your needs.
  • There is now a preference for grammar checking, right there with the preference to do spell checking.

I don’t know about you, but I’m ready for a nap. I hope you enjoy this important update to MarsEdit 2. I look forward to getting to work on the next update!

Also Featuring … A Bug!

Update: I have so far been pretty lucky in that nothing terribly wrong has been reported by people trying out the new release, but one thing that’s biting quite a few people is a problem with the preview templates, when placeholders are used as attributes in HTML tags, e.g.:

<a href="#url#">Hello!</a>

I guess this behavior was just not common among either myself or my beta testers, so we didn’t catch it. I’ll be sure to get it fixed for 2.1.1.

Workaround: it looks like if you use single-quotes instead of double-quotes to wrap the template name, it prevents the bug from rearing its ugly head. Thanks to Michael Tsai for noticing this.

Things Are Happening

January 31st, 2008

I’ve been so busy working on the next release of MarsEdit that I haven’t had a lot of time to do much else, aside from my normal second job as head of customer support!

But I’ve been seeing a lot of exciting things happening, and I want to help spread the word, along with my modest commentary. This is going to sound sort of like an annual holiday letter. And in a way, it is one, even if it only covers the events of the past few weeks, and even if it’s not about my family. Well, it’s about my indie development family.

Gus Mueller, developer of VoodooPad and more recently Acorn, has reached a milestone in the development of his business, Flying Meat. He just announced that he has hired his first part-time employee. Congratulations, Gus. I’m sooooooo jealous.

Chris Liscio quit his full-time, stable job, and took a leap into the indie pool. Chris is the author of the Apple Design Award Runner-Up application Fuzzmeasure Pro, apparently a must-have for audio acoustic analysis. Lots of luck to Chris moving forward. Here’s to a break-even first year!

Rogue Amoeba also knows a thing or two about building impressive audio applications, and they’ve just updated Nicecast with Leopard support. Nicecast makes it easy, no scratch that, makes it possible to transmit streaming audio from your Mac to just about anywhere in the world.

Jon Trainer, one of my developer buddies from here in the greater Boston area, has just released a significant update to his LicenseKeeper software. The application is dedicated to keeping track of all of your software registration codes. Which will need organizing once you’ve added all these killer indie products to your virtual shelf!

IconFactory has been hard at work with partners Panic and ARTIS Software. A few weeks ago they came out with an incredible update to CandyBar, designed to both organize your icon collection, and facilitate replacement of system icons and dock graphics at your discretion. Yesterday they struck again again with an update to xScope, an incredibly intuitive and powerful on-screen measurement and design assistant.

Ian Baird released a beta and is inching closer to a full 1.0 release of his brand-new application, Changes. Somebody needed to tackle the problem of “building a better file comparison app” and it looks like Ian decided it might as well be him. I consider myself something of a god-father to this product, because I suggested the incredibly perfect name.

Oh, and Red Sweater Software will also be releasing an updated product soon. MarsEdit 2.1 is a modest update that addresses a few very common feature requests. Coming very soon to a website near you. This one!

Designing For The First Launch

January 26th, 2008

Brent Simmons writes about designing the first-launch experience for NetNewsWire 3.1. I find his reasoning especially interesting because MarsEdit also has a strong incentive to provide users with a smooth first-launch experience.

One of the points that resonates most for me is Brent’s point about friction:

Present as little friction as possible—don’t overwhelm the new user so that he quits without trying the app. Ask for just the minimum required to make an account: username and password.

I think about friction a lot, both when designing features into my products, and when thinking about how to market them. If you’re an indie software developer and you get me talking for more than about 30 seconds about business, I’ll invetiably start talking about the first-launch experience and how it relates to sales. I call it the “run away screaming” factor.

Every product has shortcomings that will cause some users to run away screaming. The best we can do is try, with each iteration, to make fewer and fewer people do so. If 100 people download your product, and 90 of them run away screaming after launching it once, then you’ve only got a chance of selling to 10 of them. We can assume that statistically, some fixed percentage of the people who remain will end up buying. So cut the flee factor down to 80 and you’ve just doubled your sales.

The easiest way to make a user run away screaming from MarsEdit would be to require that they perform some tedious and complicated setup process in order to get up and running. The truth is, most of the time MarsEdit can figure out how to configure everything just by peeking at your blog’s home page. So I try to alleviate that fear with MarsEdit’s very simple first-launch dialog:

The first screen is intended to be inviting to both established bloggers and curious users who just happened to download a copy of the app before they’ve even started blogging.

For users who already have a blog, they proceed to the second screen:

By the time users have stopped laughing with joy at how easy the process was, MarsEdit is asking them for their user name and password, and proceeds to download the last several posts from their weblog.

Don’t believe me that it’s so simple? Go ahead, I dare you to try it!

NSURLConnection Crashing Epidemic

January 24th, 2008

I’m proud to say that all of my apps are pretty solid. They rarely crash. At least, I assume they rarely crash, because I very rarely receive crash reports from users. When I do, it’s usually from beta testers before the application has been shared with the general public.

But after Apple released 10.4.11, I started receiving crash reports at an accelerated pace. The log is the same in every instance, and culminates in what appears to be a threaded NSURLConnection caching operation:

-[NSURLConnection(NSURLConnectionInternal) 
	_didFinishReturnCachedResponse:]
-[NSHTTPURLProtocol startLoading]
-[NSURLConnection(NSURLConnectionInternal)
	_performOriginLoad]

Now it so happens that WebKit is the one crashing in many of these cases, but I suspect the problem is more widespread than that. In any case, the problem is definitely more widespread than just MarsEdit. Searching Google reveals a number of similar results, from a variety of applications, including Apple’s own.

If you’re a developer and your application uses WebKit or NSURLConnection, chances are you’ve noticed an increase in crash reports, too. Always on 10.4.11, always involving NSURLConnection. If you’re a user running 10.4.11, chances are you’ve noticed that network-enabled applications seem to be a bit more flakey and crash-prone.

The fact that the bug seems to be fixed in Leopard makes me think that this is a bug whose source was identified and fixed. Now the question is, will Apple ever ship a 10.4.12 containing a fix? Or will those users be stuck in crash-ville forever?

Apple needs to get this fixed. For these poor 10.4.11 users who got stuck with a buggy URL loader, and for us poor developers who have to gently explain to them that it’s out of our control. I have to assume there’s already a bug reported against this, but better safe than sorry, I wrote up another one: Radar #5704773.

So why I am I writing this blog entry? Because I want other developers who read my blog or who find it by Google search to know that they’re not crazy. And I want users who run into this crash to please remember to send the crash report to Apple. They need to know that this is a serious issue that is impacting you and the apps you use.