The Mac App Store

January 6th, 2011

I am happy to announce that MarsEdit and Black Ink are now available for purchase on Apple’s Mac App Store.

As I expected, the Mac App Store is both an exciting new platform for reaching new customers, and a somewhat frustrating and difficult to explain territory when it comes to existing customers who are interested in the benefits of the Mac App Store, but who already own licenses to my software. Allow me to answer some questions that I have already been hearing quite often.

I already own your software, how can I migrate my purchase to the Mac App Store?

So far Apple has not indicated that there will be any mechanism to migrate existing paid customers into the Mac App Store update process. For existing customers, my applications will continue to receive regular updates outside of the App Store mechanism. I hope that Apple will come up with a solution to allow us to migrate folks who prefer the App Store into that workflow.

Some of you may have noticed that apps from some companies show up in the App Store app as “Installed” even though you purchased them outside of the App Store. I believe this is a quirk in the way the App Store works, and for example you will not be able to review or update these apps through the store. In a nutshell: the App Store app is confused into thinking that you bought the app through Apple, and this is causing many customers to believe that developers have found a way to “migrate” them onto the store. I don’t believe this is the case.

Is the Mac App Store version different from the version I can download from your site?

The Mac App Store and site versions are identical in core functionality and features, but there are minor differences having to do primarily with the update mechanism. The version I sell directly still updates itself, while the version from Apple can only be updated by Apple and is dependent on Apple’s approval schedule.

I have an older version of your software, can I get upgrade pricing on the Mac App Store?

At this time the Mac App Store does not allow for variable pricing based on customer qualification such as a previous purchase. Discounted upgrade prices are still offered from our own store.

Is it possible to download a trial of your software before I commit to buying it on the Mac App Store?

The Mac App Store doesn’t have an official mechanism for downloading trial versions of software, but you can download the standard trial version of my applications from the respective product pages. If you decide to purchase the application on the Mac App Store, you will be able to download and install a separate, authorized copy from Apple through the App Store interface.

I have another question that you haven’t addressed.

I am always available to answer your questions. Please get in touch by email or through the forums.

MarsEdit 3.1.5

December 16th, 2010

MarsEdit 3.1.5 is out, with a few bug fixes, and support for editing excerpts in Squarespace blogs. Thanks to the Squarespace team for updating their API to allow for this.

MarsEdit 3.1.5

  • Now supports editing the Excerpt/Summary for Squarespace
  • Dragged images now open the upload utility with the correctly targeted blog preselected
  • Fix a bug in upload utility window that didn’t update UI correctly when blog switched
  • Restore ability to attach image-uploads for separate blog to Tumblr posts
  • Fixes to prevent some rare crashes with HTML syntax highlighter
  • Fix crashes affecting the Media Manager when editing photos in other apps

Information Wants To Be Everywhere

December 7th, 2010

I followed an interesting link from Daring Fireball, relating to recent debate about WikiLeaks. Nelson Minar reaffirms the often-stated aphorism, apparently attributed to Stewart Brand, that “information wants to to be free.”

I think this is a useful way of thinking about it, but it’s insufficient for describing the way that information actually travels. Even taking to heart Minar’s reminder that information can’t strictly “want” to do anything, the suggestion that it even tends toward or prefers freedom is not accurate.

Information is like water: it wants to be everywhere. Unlike say, a person, who will almost universally want to be free. Information in a cage will not rattle the bars, or scramble frantically to reach a just-too-distant key. On the contrary, information is happy to occupy every corner of the cage, and yes, given an opening, to seep out of the cage as well.

This is truer than ever in the digital age. As individuals we have more capacity than ever to stash away information for our own private use. And we relish it. Consider your private computer archives with their thousands of photographs, unfinished stories, poems that nobody will ever read, and bookmarks that nobody will ever visit. Information is as content to live on the front page of the New York Times as it is to occupy several square millimeters of hard disk surface in a Backblaze server farm.

For every person who wants to shout information from the rooftops, there are probably twenty who want to keep a nice private stash of it for their own enjoyment. The presumed motivation for information to be either public, private, or undiscovered is imbued by the people who care most deeply for it. Perhaps in this light the truly earth-shattering, profound information does want to be free. But by default, information wants to be everywhere.

MarsEdit 3.1.4

November 30th, 2010

Relatively hot-on-the-heels of the previous release, MarsEdit 3.1.4, fixes some major memory performance issues and includes some fixes that streamline integration between Tumblr photo posts and the media manager.

Major Memory Meltdown

I have always been pretty proud of my ability to manage memory usage in my code. In addition to using good programming habits, I periodically run Apple’s memory leak-detection tools, and the clang static analyzer. These tools do a great job of finding accidental memory management errors. But as I discovered, they are not enough.

For months I have received anecdotal feedback that MarsEdit is using more RAM than it should. But I couldn’t find any evidence of wrong-doing on my part, so I committed a major mistake: I just assumed it was normal. MarsEdit uses a lot of Apple’s frameworks, including WebKit, which is so big and expansive, I assumed there was something about the degree of WebKit I use in MarsEdit that explained the large amount of memory consumption.

Wrong! I was inspired by a recent one-two punch of feedback, combined with a recent blog post I had read, to dig deeper.

Twitter user @Fletcher_Chris was exceedingly polite when he asked if MarsEdit’s 200+ MB memory usage was “normal.” Ugh! Normal? I don’t know? I think so? Not knowing about why your software does what it does is a major alarm bell.

Then my friend John Gruber wrote to let me know that not only is he noticing major RAM consumption, but that it’s something that has bothered him for some time now. A recurring, nagging issue, noticed by somebody who is technically competent enough to know a real issue from a false one. I have a problem on my hands.

It was lucky timing that my friend Bill Bumgarner recently published an article on the very subject of hard-to diagnose memory leaks. I had actually read this article, enjoyed it, and blithely assumed it didn’t apply to any of my current software challenges.

It turns out that MarsEdit was in fact suffering from exactly this kind of leak: one that the brilliant leak-targeting tools from Apple are not able to detect. For a variety of reasons mainly involving retain cycles, I was neglecting to clean up after a major part of the MarsEdit post editor’s user interface, which means that every newly created and closed document would leak hundreds of KB of RAM.

Mea fricken culpa. Fixed in 3.1.4.

Tumblr Photo Posts

Tumblr has been a major challenge for MarsEdit because of the degree to which it doesn’t follow the usual paradigm for media management. This means in a nutshell that things you can do with almost every other blog system are not possible in Tumblr, making the user-interface a little clunkier to handle. In particular:

  1. Tumblr does not allow direct file uploads. Even though their web-based UI allows you to upload an image for direct insertion into a post, this is not something they have exposed for remote clients such as MarsEdit.
  2. Tumblr supports the notion of a “Photo” type of post, but it takes at-most one single photo. Usually MarsEdit is happy to add as many photos as you like to a post, but with Tumblr it has to be limited to one, and requires that the post type be switched to photo.

In MarsEdit 3.1.4, I take baby steps towards improving the situation when users do want to publish photos to a Tumblr blog. First, the per-blog “image constraints” settings are now applied to Photo posts on a Tumblr blog. So if you’ve got it set to limit posts to no more the 400×400 pixels, it will apply to any photo you drag in to Tumblr’s photo well.

I also streamlined the experience when choosing a photo from the Media Manager for a Tumblr-style post. Not only will the image constraints selected in the Media Manager be applied to the photo, but for example selecting and inserting a photo will automatically set the photo for the open Tumblr post document, or create a new post if one is not already open. This should make the photo-blogging experience on Tumblr a lot smoother.

A Curious Lack of Crash Reports

Since MarsEdit 3.0 was released, I have included a crash reporter mechanism that will automatically notice when MarsEdit quits for any unexpected reason, and offer to let the user send me a crash log plus any additional information they choose. This has been a great tool for measuring the number of harder-to-find bugs that remain in MarsEdit, and for zeroing in on and fixing some of them.

Luckily, the flow of crash reports is a relative trickle, compared to the number of users running MarsEdit on a daily basis. But after MarsEdit 3.1.3, the crash reports all but dried up! Was I really so brilliant as to accidentally fix any remaining bugs in the application? 3.1.3 forever!

No, what actually happened was I was brilliant enough to break the crash reporter in 3.1.3, so that it would fail to present the dialog to users offering to send in the report. Crashes were still happening, I’m sure, but I wasn’t hearing about them. Now fixed in 3.1.4, and I’m anxious to get back to monitoring the pulse of MarsEdit stability with this great feature.