VoodooPad 4

November 18th, 2008

Big congratulations to my friend Gus Mueller whose company, Flying Meat, shipped VoodooPad 4 today.

One of the major features in the updated desktop wiki software is page syncing across multiple computers, allowing users to easily maintain a collection of VoodooPad pages on multiple computers.

I know from a user point of view syncing is very exciting and important, especially with the popularity of notebook computers. It’s something I’d like to provide in MarsEdit, someday.

From a technical point of view syncing is a very tricky feature to get done right. I’m sure Gus is wiped out from the effort. Give yourself the day off, and congratulations again.

The Graphic Design Hat

November 2nd, 2008

Those of you who have followed my blog for some time are aware that Red Sweater Software is, more or less, a company of one. I am the lead developer, marketer, strategist, bookkeeper, PR rep, and, as luck would so terribly have it, designer.

Bob Walsh brilliantly summarizes the conundrum of small indie business people like myself, in the title of his blog: 47 Hats. If I may say so myself, I’ve adapted pretty well to wearing all these different hats. But inevitably, some of them don’t fit as well as others.

I’m not completely inept when it comes to graphic design, but I’m far from professionally capable. The beautiful aspects of my applications are mostly thanks to the brilliant work of designers such as Bryan Bell, who I will continue working with. But I also need somebody at the ready for a sustained period of design brainstorming and production. It’s time for me to take off this hat and hand it to somebody else.

Will you be my visual genius? Will you wear this hat?

About The Hat

As a part-time contractor to Red Sweater, you will facilitate the expansion of the company’s graphic identity in all areas including desktop UI, iPhone UI, web presence, advertising, and more. The position is hourly, with a guaranteed minimum per week or month to be arranged.

The position is primarily “visual design” but your skills in interaction or usability design would also be put to good use.

You’ll have a major impact on the look of Red Sweater’s products and presence. You’ll get paid. And when we get huge one day, you’ll be able to say you were there “way back when.”

The Qualifications

Sound like a position you’d excel in? This hat fits a designer who:

  • Pushes pixels and pulls vectors with confidence and skill.
  • Is passionate about typography, layout, and visual balance.
  • Respects the tradeoff between usability and aesthetic beauty.
  • Embraces platform design trends with moderation and taste.

On a personal level, the type of designer I will get along with:

  • Work iteratively and collaboratively.
  • Accepts criticism but stands up for strongly-held beliefs.
  • Designs with integrity and would never steal the work of others.

To Apply

This is an open invitation to talented designers of all ages and circumstances. The only hard requirements are professionalism, skill, and availability for part-time work. Let’s make it happen!

Please send an email to “jobs” at red-sweater.com. Include in your message at least the following information:

  • Your name and professional status.
  • A portfolio of your best graphic design work.
  • Your minimum and maximum hourly availability per month.
  • Name up to three designers who you admire. What do you respect most most about their work or how they conduct it?

Feel free to include other information such as your expectations for pay rate, questions about Red Sweater or my work style, etc.

I look forward to hearing from you. And to taking off this hat!

I’d Tumbl For You

October 16th, 2008

MarsEdit is my popular desktop application for writing and editing blog posts from the comfort of your Mac.

Tumblr is a popular web-based blogging system that emphasizes simplicity of authoring and presentation.

You might guess that among fans of these two popular products, there is a significant overlap. You would be right. I regularly receive requests from customers who are hoping to use MarsEdit as a remote editor for their Tumblr blog. And I would very much like to see that happen.

But there’s a problem. The Tumblr API is deficient in ways that make it impossible for me to provide an acceptable user experience, and my attempts to reach a sympathetic ear at Tumblr have been fruitless for almost a year. I am forced to reply to each request for Tumblr support with a somewhat complicated, apologetic reply.

Brief Interlude: Blogging APIs

A blogging API is the mechanism through which a blog service such as WordPress, Blogger, Movable Type, etc., make their content available to clients such as MarsEdit for posting, editing, or deleting. At its simplest, you could think of it like a file format. In the same way that Photoshop can edit images of type “JPEG”, MarsEdit can edit blogs that implement formats that it recognizes.

Most services use one of a few standard blogging API interfaces. This makes it possible for applications such as MarsEdit to work with a variety of services. MarsEdit even works with blog systems which I myself have never heard of! Because blog developers design APIs to match a standard implementation, they work well with MarsEdit, Windows Live Writer, and dozens of other blog editing applications.

Generally speaking, when I make improvements to MarsEdit, I’m working to improve its support for these standard interfaces. By adapting to the standard interfaces, an improvement that benefits Movable Type users may also benefit the users of dozens of other blogging services. A pretty nice arrangement for me, users, and blog service developers!

Tumblr’s Custom API

Tumblr does not implement any of these standard APIs. They provide a custom “Tumblr API” that provides both much more and much less functionality than any of the standard interfaces. Normally, I would not be inclined to add support for a non-standard API in MarsEdit, for the same reason that Photoshop would not be inclined to add support for some new image file format that somebody invented. But because of Tumblr’s incredible popularity and because of the strong user demand for such support, I decided to implement support for Tumblr in November, 2007.

In fact, shipping versions of MarsEdit have for almost a year included Tumblr specific support. But I refuse to enable it or endorse it because it falls far short of what I would call an acceptable user experience.

What’s wrong with the Tumblr API? The most glaring omission is that it doesn’t provide the ability to edit existing posts. As you might imagine, for a product called “MarsEdit,” I find this functionality extremely important. Imagine writing a new post to your Tumblr blog, only to notice a second after posting that you’ve made an embarrassing typo. In order to fix the post, you’ll have to leave MarsEdit and go to the web to edit the post. Unacceptable.

Less significant but still annoying is the inability to delete posts. While this functionality is certainly less common than editing, it’s still something that users reasonably expect to be able to do. Though I could disable the “Delete” button in MarsEdit, or display an informative alert when attempting to delete, it would be much better if the API simply supported deleting.

Smaller problems also exist, such as a poorly documented date format, and the inability to read back tags that have been set on a post. I suspect that if I was able to proceed further with the API, other issues might arise over time.

These issues are, in short, great bug reports for Tumblr. But the company does not seem interested in fixing them, or even acknowledging a lack of interest in fixing them. Frustrating for me, and frustrating for any of my customers who yearn for this support.

Where Do We Go From Here?

By no means do I think Tumblr should feel compelled to implement one of the standard blogging APIs. Nor do I feel that they should be compelled to extend their API such that it provides the bare minimum of functionality for clients such as MarsEdit. They are an independent company with priorities that are different than mine. Whether they choose to support remote clients with their API is their decision.

What I want Tumblr and MarsEdit customers to know is that the ball is, and has been for some time, in Tumblr’s court.

There are relatively simple changes that Tumblr can make to their API to facilitate an acceptable user experience not only from MarsEdit, but from other client applications that might choose to embrace the service’s API.

Because Tumblr has not responded to my inquiries, I would encourage any Tumblr customers who would benefit from a remote editing client such as MarsEdit, to contact Tumblr directly and ask that they take my suggestions to heart.

Information about contacting Tumblr is available at the bottom of the Tumblr Help Page.

I hope that this information helps to explain MarsEdit’s continued lack of support for the Tumblr platform. For those of you who have waited so patiently, I hope that one day I am able to add full-fledged Tumblr support to MarsEdit.

Update 10/17/2008: Sometimes the internet works! In a great turn of events, Marco Arment from Tumblr has commented on this very post, indicating that he’ll be making a priority of this requested support. I am looking forward to a positive development in Tumblr’s API!

MarsEdit 2.2.1

October 15th, 2008

MarsEdit 2.2.1 is now available as a free update for MarsEdit 2 users.

This release addresses a number of bugs and enhances the support for AtomPub-based blogs that was added in 2.2.

A detailed list of changes since 2.2:

  • Restore slight indentation to Title column in blog posts list
  • Fix a crash that could occur when typing Thai and other characters that use more than one glyph per character.
  • Fix a bug that prevented using categories with single quotes in them on Blogger.
  • Fix a bug that prevented adding new categories to a freshly configured blog.
  • Fix a bug where selecting category could undo category choice from toolbar popup
  • Fix bugs that caused the upload and insert buttons in media manager to stay enabled inappropriately
  • AtomPub-specific fixes
    • Support nodes that have namespace prefixes
    • Be sure to properly strip
      markup child from xhtml content nodes
    • Eliminate obsolete attribute behavior for and elements
    • Fix resolution of relative URLs in service document
    • Support “Excerpt” field for AtomPub, mapping to the “Summary” attribute.
    • Recognize a blog’s category list when embedded inline in service document.
    • Fix a bug that caused inappropriate UI fields to show on AtomPub blogs.
    • Show correct error message if AtomPub disabled on a WordPress blog.
    • Enable support for adding categories if the categories are not fixed

Hope you enjoy the update!