Latest posts.

MailMate 64 Bit Beta

You might not have noticed this, but MailMate is still a 32 bit application. The main reason for that is not that it is technically hard to switch to 64 bit. The main reason is that memory usage would increase considerably if doing it naively. MailMate indexes a lot of data using data structures with a lot of address pointers. In fact, the first experimental 64 bit build of MailMate used almost twice the memory of the 32 bit build.

It is quite rare that users “complain” about MailMate being a 64 bit app, but there are many reasons that staying 32 bit is not a good idea. One of them is the fact that if MailMate is the only 32 bit app on your system then it uses a lot more memory than you might realize. This is because a 32 bit app triggers the system to load 32 bit system frameworks. On my system, MailMate, Spotify, and SpiderOak are the only 32 bit apps (Google Chrome very recently switched to 64 bit)1. Having MailMate on that list is becoming a bit of an embarrassment.

Now, you might have noticed the lack of beta/test releases of MailMate in the past month. This is because I’ve been working on a 64 bit release of MailMate. Most of that work has been focused on optimizations regarding both speed and memory. It’s hard to measure this in general, but on my system MailMate now launches 2-3 times faster than the 32 bit release and it uses less memory.

The 64 bit releases are on a separate auto-update system and I’ll keep it that way until I’m relatively sure it’s at least as stable as the latest 32 bit release. You can help me reach that milestone by switching to 64 bit now. Initially, it’ll require a manual install of this download. If needed, you can switch back to the 32 bit release.

Although the 64 bit release primarily features optimizations, it also includes a few new features, changes, and fixes. Here are some of the most interesting:

  • New: “Default Account” setting for new messages in the Composer preferences pane.
  • New: Completion of email addresses works for any contacts with a company name (and email address).
  • New: Added perform command to the AppleScript API. Its argument is a list of strings identical to what would be used to define a custom key binding. The frontmost window of MailMate is the target even if MailMate is not in focus (activated). Example: tell application "MailMate" to perform {"toggleFlag:"}
  • New: “Distortion Mode” now also works for HTML messages and attachment descriptions.

If you are new to MailMate then don’t miss the FAQ part of the previous blog post. Related to that, I really appreciate that the (somewhat low-key) mini crowd funding campaign has reached 25% of my initial goal.


  1. You can use the Activity Monitor in OS X if you want to see which applications are running in 32 bit mode (switch to the Memory pane on Yosemite). Click on the header of the column to sort the list. 

MailMate 1.8 Released

The list of changes since version 1.7.2 (r3905) is very long and all the details can be seen in the release notes. Version 1.8 is best described as a major maintenance release including numerous bug fixes, stability improvements, and minor feature enhancements. The following are some of the most interesting new features:

  • New: Redirection of a message using “Message ▸ Redirect” (⌥⌘E) or the redirectMessage: key binding. This opens a special composer window which only allows editing a fixed set of headers. MailMate also adds a $Redirected flag to any redirected messages.
  • New: Support for using an external editor to write emails (built-in support for TextMate, Sublime Text, and MacVim).
  • New: HTML signatures can be configured in the “Signatures” preferences pane. They work in both plain text and Markdown mode. (More details in the manual.)

At the time of writing, Apple has not yet released Yosemite (OS X 10.10), but I do expect this version of MailMate to be compatible.

Here are answers to what I expect to be frequently asked questions (some duplicates from an older post as well):

  • Any new graphics in version 1.8?

    No, but it’s funny that you ask. I have just setup a page in the MailMate store to allow users to explicitly contribute to the purpose of making me hire a graphics designer to change that. Read more about that here.

  • Is a license key bought in the store today also valid for version 2.x?

    Yes.

  • When is MailMate 2.0 released?

    I don’t know, but it probably matters more to me than to you. I need it for marketing purposes. You need it for the features, but the development of MailMate is an open process and you can use new features in the betas/releases of MailMate 1.x by enabling 2.0 features in the General preferences pane. If feeling adventurous, you can even fetch cutting edge test releases by holding down ⌥ when clicking “Check Now” in the Software Update preferences pane.

  • What happened to the crowd funding money?

    I still have most of the (post-tax) money and they ensure that I’ll be able to continue working on MailMate full time for at least another 6 months. Probably much more than that, but this depends on the daily sales and I don’t want to make promises I cannot keep.

Interview: Making an Email Client

Thomas Borowski recently did an interview with me and this is now available in the most recent episode of his “Think, Make, Sell” podcast. This is actually the first interview I’ve given about MailMate and it’s also my first podcast appearance. Time will tell if it’s also my last podcast appearance — it turns out I’m the kind of person who cannot listen to myself and therefore I’m not sure exactly what I said in the podcast. If you have any questions related to the interview then you can leave them in the comments of this blog post.

On the subject of questions, I’m frequently answering the following two questions related to MailMate 2.0:

  • Is a license key bought in the store today also valid for version 2.x?

    Yes.

  • When is MailMate 2.0 released?

    I don’t know, but it probably matters more to me than to you. I need it for marketing purposes. You need it for the features, but the development of MailMate is an open process and you can use new features in the betas/releases of MailMate 1.x by enabling 2.0 features in the General preferences pane. If feeling adventurous, you can even fetch cutting edge test releases by holding down ⌥ when clicking “Check Now” in the Software Update preferences pane. Teaser: The test release from today includes an experimental solution for users having to use HTML signatures due to company policy (which is a problem since MailMate is plain text/Markdown only).

Crowd Funding Roundup

Background

Late October I faced a financial ultimatum. I had to soon start making more money working on MailMate or I would have to stop working on MailMate full time. Before starting to look for other jobs I decided to do a crowd funding experiment primarily aimed at the existing users of MailMate. This was fairly successful since more than $13,000 was pledged, but it was quite a bit less than my (unofficial) estimate of $50,000 needed to be able to work on MailMate in all of 2014.

Indiegogo

Nevertheless, I decided to create a “real” crowd funding campaign at indiegogo. I changed the goal to be “MailMate 2.0” which corresponded to a minimum of 6 months of development in 2014. This also allowed me to set a goal of $25,000 instead of $50,000 which I now considered as unrealistic. Using “2.0” in the goal description made it an easier “sell” (I’m a bit worried that it also sets unrealistic expectations).

This campaign was a huge success. The goal was reached within a week and more than $42,741 were raised in total. Even more importantly, MailMate gained a lot of exposure and new users. In retrospect, it has been a bit of a marketing stunt.

The numbers

As noted, the total amount raised was $42,741. The following table shows which perks were selected by the 677 contributors:

Perk Contributors Min. amount Total amount
License key for MailMate 1 60 $25 $1,512
Single user license key 528 $50 $27,046
Two single user license keys 24 $90 $2,111
Family license key 23 $150 $3,450
Site license key (5) 8 $200 $1,650
Site license key (10) 2 $350 $700
Site license key (20) 0 $600 $0
Site license key (50) 0 $1,250 $0
Site license key (100) 2 $2,000 $5,000
Site license key (100) + Bundle 0 $5,000 $0

Note that the numbers do not add up. This is because a contributor can pay a larger amount than required for the perk selected. Also, $3,383 were contributed without selecting a perk (though some times by error).

By far, the most popular perk was the license key for MailMate 2.0. This alone would have been enough to reach the $25,000 goal.

For those interested (probably other crowd funders), there are several fees to be paid. After Indiegogo (4%) and PayPal have taken their share then around $38,100 is left and PayPal takes another 2.5% just to convert to Danish kroner. The remaining amount is about what corresponds to $37,150. Then comes the Danish income taxes. Note that I’m not complaining. Just laying down the facts.

The future

As promised in the campaign, the contributed amount ensures that I can work on MailMate for at least 9-10 months of 2014. It might be more if regular sales are better than they were in 2013. I have no release date for 2.0, but in practice it is not of major importance. MailMate is updated regularly and this currently includes features intended for version 2.0. Right now you can enable preliminary versions of some of these features in the General preferences pane of MailMate.

Now, what happens when/if I run out of money again? Well, then it’s back to square one. I might even try the crowd funding approach again.

MailMate 1.7.2 Released

Only a few hours left of the very successful crowd funding campaign and as a small “thank you” I am releasing version 1.7.2 of MailMate. It is mostly minor changes and fixes, but there is also a few new features:

  • Integration with Calendar/iCal, BusyCal, and Fantastical.
  • Integration with Evernote, Things, and The Hit List.
  • Support for SmartyPants when using Markdown with HTML generation.
  • Drag’n'drop email/mbox files to a mailbox to trigger importing.

The integration with other applications require that you enable the experimental 2.0 features in the General preferences pane of MailMate.

Go to the release notes to get all the details.

Primary Crowd Funding Goal Reached

Over the weekend the crowd funding campaign reached its primary goal of $25,000 and it has since increased to more than $27,000. Yet again, thanks to everyone who helped make this happen! Development of MailMate is now guaranteed for the first 6 months of 2014. Maybe more if regular daily sales increase. If you never read about the background for this campaign then you can see it here.

It only took 6 days to reach the goal, but the campaign continues for another 30 days (I cannot stop it even if I wanted to). The rule of thumb is that for every additional $5,000 I can work full time on MailMate for a month. If you wonder about development speed then look at the existing release notes. I would call it steady.

I’ve promised to start distributing license keys to contributors as soon as possible. It appears I only have the email addresses of contributors (and a fake/anonymous name), but a license key is based on the real name of its owner. Therefore, the distribution requires first sending emails forth and back to get the required user details. I need to automate this (using MailMate, of course), but it might take a few more days. Ironically, I am also currently swamped by emails. Be patient.

Crowd funding status (indiegogo)

I didn’t quite know what to expect from the crowd funding campaign when I launched it Monday. I knew I would get contributions from my existing users, but I didn’t know whether or not I would be able to spread the word about the indiegogo campaign. It was quite clear that my existing user base was not sufficient.

You see, I’m really bad at marketing — or maybe that’s not the right way to put it. It’s more like, I’m really bad at marketing something that is not perfect. I am my own worst critic. I see all the flaws, the bugs, the non-optimal workflows. I see all the missing features including those I have planned without anyone asking for it. My to-do list is a mile long.

This is why it has been great to see other people write about MailMate. They can do what I cannot do. Write about the good things without caring too much about the bad things. They can express the enthusiasm that I drown in notes about problematic corner cases.

Therefore, I would like to thank anyone who has ever written anything about MailMate in articles, blogs, comments, or Twitter posts. A special thank you to Macdrifter, Macstories, AppStorm, RunAroundTech, and aptgetupdate.de for writing about MailMate and the campaign. It made a huge difference. I would also like to thank those who have “sold” MailMate to friends, family, or colleagues.

This burst of gratitude was motivated by the more than $21,330 now contributed to the campaign by 295 backers. Most of the contributions have been $50 pledges, but maybe you noticed a substantial spike in the contributions yesterday:

$2000 pledge

The price of the perk was $2,000, but the actual contribution was $3,000 (the price of a perk can be increased by the backer). This contribution was made by long-term user of MailMate, Apparent, makers of Doxie. They deserve a special thank you.

I may be bad at marketing, but I’m very good at honesty. If you have any questions about the crowd funding campaign or the future of MailMate then you are welcome to ask in the comments.

Crowd Funding Campaign Launched

A few weeks ago I launched a crowd funding experiment and I already wrote about the results. The conclusion was that it was worth a shot to launch a campaign on a real crowd funding site.

Help me get a flying start by going to indiegogo. Please also help me spread the word wherever you think it is appropriate. The short link for the crowd funding page is simply http://igg.me/at/mailmate.

Compared to the crowd funding experiment I’ve changed a few things. The goal is now to fund the time needed to finish version 2.0 of MailMate. This requires a minimum of 6 months of 2014 and therefore I’ve set the initial fixed goal to $25,000. A fixed goal means that I get nothing if the goal is not reached. Anything beyond $25,000 increases the period I am guaranteed to work full time on MailMate. The exact period depends on daily sales, but a rough estimate is an additional month for every $5,000.

I am also releasing MailMate 1.7.1 today. See the release notes for the details. The highlights are:

  • New: Added option in the General preferences pane for enabling experimental 2.0 features (rules and commands).
  • New: A Gmail label column is shown in the Tags preferences if the user has any Gmail accounts. Any tag with a Gmail label defined is not fetched as an IMAP mailbox.
  • New: Hold down ⌃⌥ when selecting a message in the message list to select all related messages. The result depends on the column selected (the selection matches the search conditions for double clicking).
  • New: The selectWithFilter: key binding has been changed to accept a format string. This can be used to select messages related to the current message. For example, here is the definition for a shortcut (⌃⌥D) to select all messages from the same sender and delete them: "^~d" = ( "selectWithFilter:", "from.address = '${from.address}'", "moveToMailbox:", "trash" );

I also added a replyMessage action for bundle commands (undocumented 2.0 feature) since I needed it to be able to generate “canned” replies for all the emails I’ve received as part of the crowd funding experiment. Based on a simple 7-line property list file (no GUI yet), a reply can be generated with a prefixed thank-you-note including a “Dear”-string based on the From header. With a single keystroke I can now generate these messages in the Drafts mailbox and then, if I need to, edit some of them before sending. How is that not worth a contribution?

Results of the Experimental Crowd Funding

On October 17th I launched an experimental crowd funding campaign and I promised to share the results. This is what I’ll do in this blog post.

First of all, I didn’t reach my (unofficial) goal, but I also didn’t expect to do so since MailMate has a small user base and I only used the blog, Twitter, and the mailing list to spread the word. I didn’t push all the buttons possible. Publicity has been fairly limited, but it has been sufficient to both increase download numbers and sales considerably during the two crowd funding weeks.

The results

At the time of writing I have received emails with pledges to contribute a total of $13,430. This is from 131 individual contributors which corresponds to a very nice average of a little more than $100. The most popular amount contributed is $50 as seen in the following table:

Amount ($) Contributors
3000 1
500 2
200 8
150 2
100 40
50 64
30 4
25 3
20 6
15 1

The 78 contributions of $50 or less amount to 26.5% of the total amount. This is less than what is contributed by the top 3 contributors (30%), but this is only because of the single major contribution of $3000 (22.5%). The 40 contributions of $100 also amount to 30% of the total amount.

Another interesting fact is which email client the contributors used:

Email client Contributors
MailMate 64
Apple Mail 30
MailMate Trial 19
iOS Mail 5
Other 5
Unknown 8

Almost half are existing MailMate users (48.8%) and another 14.5% are trial users. In addition to that several known (to me) MailMate users are in the Unknown/iOS groups. All contributions of $150 and above are from current MailMate users.

The most wanted features

In the contribution email I also asked for the 3 most wanted “features” among a list of known popular requests. There were quite a few requests for features not on the list as well, but none of them were requested by multiple contributors.

Share of users Features
45.0% Rules (move, tag, etc. incoming messages)
32.1% Conversation view (display all messages of a thread in the message view)
26.7% Scripts/Commands (perform actions based on selected messages)
26.7% Optimize (improve speed and memory usage)
25.2% Improve search interface (make it faster using the keyboard)
23.7% Beautification (mailbox graphics, message themes (css), toolbar icons, …)
16.8% Integration with more applications (like for OmniFocus)
15.3% Integrate tagging with Mavericks tagging
14.5% Flat threading mode (group related messages without creating a hierarchy)
11.5% Just focus on fixing bugs
9.9% Optional CSS styling of Markdown messages
9.2% Message redirection
8.4% More settings on a mailbox level (e.g., reply-behavior, treading style, send later, …)
7.6% Message coloring (as part of the Tags support)
5.3% Optional HTML editor for the composer

Almost 1 out of 2 users would like to have rules. Fortunately, items number 1 and 3 are already experimental features for version 2.0 of MailMate. Item number 2 is already one of my high priorities. The only surprise on the list is that the least popular item is an HTML editor, but this probably reflects the fact that these are the features wanted by existing users and not what others need to start using MailMate.

Many of the emails also contained some wonderful comments about MailMate and statements of support. Some contributors stated that they wanted to contribute even though they could hardly afford it. I am deeply thankful for that kind of generosity.

Now what?

The crowd funding page is still online and newcomers are welcome to use it. I am currently preparing a “real” crowd funding page (including a stated goal) which I plan to launch next week and I’ll notify anyone who has sent me a crowd funding email. When this happens then I’m going to push all the buttons I can to direct attention to the crowd funding site and I’ll appreciate all the help I can get to spread the word.

Thanks for all the emails. I am deeply impressed!

Mavericks, Gmail, Apple Mail, and MailMate

Mavericks and Apple Mail

Mavericks (OS X 10.9) has been released and I’ve just read a very interesting article (TidBITS) about how Apple Mail has changed behavior with regard to how it handles Gmail accounts. Apparently this has, so far, not been a great success. Having been through the same implementation problems as the Apple developers I would like to share some of my thoughts on the issue of handling Gmail accounts.

I have a love/hate relationship with Gmail with an emphasis on the latter and I’m sure the same is true for the Apple Mail developers. Both Apple Mail and MailMate have tried to treat Gmail accounts as if they used the IMAP standard, but this is tricky since it is very non-standard — and I only use the term “non-standard”, because Google does this on purpose. Objectively, when they claim to provide IMAP access then the correct wording should be “extremely buggy”.

Nevertheless, Gmail is here to stay and both the Apple Mail developers and I know that we have to do whatever we can to allow Gmail accounts to nicely co-exist with standard IMAP accounts (yes, alternatives to Gmail do exist).

Duplicate messages

The main problem with Gmail is that labels are mapped to IMAP mailboxes. This means that any message with multiple labels is present in multiple IMAP mailboxes. A standards-compliant (offline) email client is going to handle that by fetching the message multiple times. Bandwidth is wasted, space is wasted, and weird things can happen when you move or copy messages. The worst Gmail mailbox is the “[Gmail]/All Mail” mailbox. This contains all messages not located in the trash or spam mailboxes. In MailMate (and previously in Apple Mail) it was best to ignore this mailbox and that is what happens by default in MailMate. If all messages have at least one label then all messages are still available in MailMate. Unfortunately, this is not always the case. I’ll get back to this issue further below.

Ignoring “All Mail” does not solve the problem with messages with multiple labels. Some users never use multiple labels and simply move messages as if the labels were simple mailboxes. This works fine in both Apple Mail (earlier versions) and MailMate, but it’s not a general solution working for all users.

Multiple labels in MailMate

Recently, I implemented a workaround in MailMate for the problem of multiple labels. It is currently an experimental solution and you can enable it following the instructions in the release notes for version 1.7. In short, MailMate can be told to handle specific Gmail labels as if they were tags. If a label is handled as a tag then MailMate automatically ignores the corresponding IMAP mailbox. Tags are already supported by MailMate (no integration with Mavericks yet) and uses IMAP keywords on standard IMAP servers. An added benefit of this is that you can move messages between Gmail accounts and other IMAP accounts and the tags are preserved. This is great if you are planning to migrate…

The “All Mail” problem

The remaining problem in MailMate is the “[Gmail]/All Mail” mailbox. It might contain messages which are not present in any other mailbox. Such messages are not available in MailMate. The only workaround is if the user makes sure that no such messages exist — and this can be tricky when using other email clients than MailMate (such as iOS Mail).

Apple Mail has now “solved” this problem by fetching all these messages and then identify duplicates across mailboxes to make sure they only store each message once. They are essentially trying to make Apple Mail behave like Gmail itself does. Personally, I think this is a dangerous path. Gmail IMAP behavior is non-standard, largely undocumented, and controlled by a single company. In other words, handle with care.

I’ve been bitten by sudden Gmail behavioral changes in the past and I won’t go down the same path as Apple Mail (and other email clients), but I’ve got an idea as to how to solve this remaining problem without major changes in MailMate.

An untested theoretical solution

When fetching a message, Gmail also allows the email client to fetch all the Gmail labels for the message. This would allow MailMate to identify the messages which are present in any other mailbox(es). If the IMAP code treated these messages as non-existing then the “All Mail” mailbox could become a mailbox containing the exact set of messages not present in any other mailboxes. The only minor problem would be that “All Mail” is not really “all mail”, but MailMate already has the “All Messages” virtual mailbox.

Maybe I’ll have time to implement and test this idea in the future. It might require a bit of funding. For now, I just wanted to share my thoughts on the issue.

Update October 27th: I implemented this solution in the latest test version of MailMate. Handle with care: You can fetch the test version by holding down ⌥ when clicking “Check Now” in the Software Update preferences pane. After that you need to subscribe to “[Gmail]/All Mail”. Details are provided in a mailing list message.

The Press

Macworld wrote:
  • MailMate’s here to help you bend your email to your will, to tame the chaos of even the most cluttered and sprawling account. And MailMate doesn’t mess around.
  • But MailMate’s true, jaw-dropping power lies in its ability to search and filter messages via Smart Mailboxes.

The Users

Crowd Funding Campaign