< return to posts

Email is a powerful tool that is an inextricable part of everyone’s lives. Despite countless valiant efforts to kill it and replace it with something better, email continues to live on in more or less the same form it has had since the 1990s. Technology that endures this long deserves a fair amount of attention and praise.

There are two main reasons why email continues to be useful today. It is simple to use, and it is not owned or controlled by a single company. Every attempted replacement has failed at excelling in either one or both of those qualities. Simple tools can often be extended in ways that the original authors never could have imagined in the beginning. And because users are in control of the core functionality, new use cases can be explored completely independently.

Computer users have a tendency to over-generalize when solving problems. In other words, when all you have is a hammer, everything looks like a nail. In this post, we are going to be looking at a lot of nails that can probably be hammered down with email. At a fundamental level, email clients are tools designed for storing and retrieving sequences of messages which can contain arbitrary data. Looking at it this way, it is not difficult to imagine a variety of use cases that can be accomplished with minimal amounts of scripting.

I do seriously think that email is a solid tool for a lot of these purposes, and in fact use it as such for a few of these purposes every day. However, the main purpose of this post is exploration, not general advice.

To-Do List (One That You Actually Check)

To-Do List

The first use case is pretty obvious, and it is one that likely a large number of people already employ on a daily basis.

By far the single most important productivity discovery that I made in my life is Inbox Zero. Inbox Zero is the simple idea that your email inbox should contain only a list of messages that require some sort of action. Once the action associated with those messages is completed, the message is archived or moved to a different folder. I have been using Inbox Zero for years now and I rarely forget to do anything important after integrating it into my life.

Need to remember to pack for your flight next week? You probably already got a confirmation about your reservation in your email. Leave it in your inbox until you are finished preparing for your trip, and archive it when you are done.

How about one-off reminders that are not associated with messages already in your inbox? Just send an email to yourself with the action item in the subject line. Use the body of the message to write down any notes you want, and reply to the message to keep a record of additional notes if you need them.

What about periodic reminders that repeat on some interval, like reminding yourself to pay a bill on time every month? Write a simple script that sends you an email about it and schedule it to run once a month. At the end of each month, you will have a new to-do item in your inbox with an actionable task in the subject line.

The great part about using email as a to-do list is that you are already checking it with some degree of regularity. Smartphone apps or web-based to-do lists quickly lose their value the moment users lose interest or switch to using something else. They also frequently become buggy or overburdened with features that don’t add any value. This will never be a problem with email because you can always use your favorite client as long as it continues to work with the standard protocols. Syncing across multiple devices is a given, since your email is already doing this.

News Reader


RSS is a really elegant and simple way to subscribe to a feed of updates from your favorite websites. Since the early 2000s, RSS has been integrated into a lot of different services all across the net, and serves as the foundation for a variety of different web-based content platforms such as podcasts.

In order to actually use RSS, you need a client that is capable of aggregating entries from multiple different feeds and displaying them in some manner. Managing a list of entries, tracking read or unread state, and displaying HTML content is exactly what every email client is already good at doing.

I like using rss2email for this. rss2email delivers stories from my feeds into a special mailbox on my email server that I check approximately every morning. Since the end result is just IMAP messages stored on my email server, I can read them using my favorite email client on whatever device I happen to be using that day.

Updating Your Website or Social Media Accounts

Updating a Blog

Setting up a frictionless workflow for updating your personal website can be rather difficult, especially if you want to be able to do it while on-the-go and away from your usual workstation.

If you are maintaining a blog on a personal website or for a business, the focus should primarily be on the content itself and not on writing markup, updating a source control repository, or publishing static content to a file server or database. At the end of the day, you want to be able to write your content in a message and send it to your server to publish.

Writing rich-text or plain-text content, saving drafts, and publishing that content to a server is the perfect job for an email client. Your email client can even allow including inline images sent as attachments, or links that point to other websites. Once you are done writing your post, send it to a special email address that activates a script on the other end to convert your email message into a blog post. PGP can be used by both the client and the server to ensure that it is actually you who is authoring the blog post and not someone else. Forget about OAuth or anything more complicated than that.

Social media feeds can be updated in a similar manner. All of your server-side functionality can be multiplexed using different email addresses for each service. For example, you can use blog@mydomain.com to send updates to your blog, and mastodon@mydomain.com to publish toots on your Mastodon account. Writing the code for this is a breeze, since your favorite programming language already has libraries for dealing with SMTP and IMAP.

A User Interface to a Search Engine or Database

It’s pretty simple to build an API for a web service these days. However, choosing the right library or designing the right API can sometimes be an unnecessary burden when working on a personal project that only has one or two users.

Email can be used as an interface between a user and a web service when the input and output are simple enough.

For example, imagine that you have a file server with a large amount of photos stored on it and you want to be able to search those photos and retrieve them at random. The server could use machine learning libraries such as Tensorflow to categorize the photos and attach metadata on them.

Instead of building a custom web-based user interface for this, you could use email instead. The user sends an email with the search term in the subject line, such as “pizza”, to a special email address that corresponds to the file server containing the photos. Just like in the previous example, PGP or S-MIME can be used as an authentication mechanism to ensure that only authorized users can access the photos being requested. Once the server has collected a search result, it replies to the query email with matching photos attached as MIME parts. The email server keeps a record of previous queries, along with their returned results as replies, in an easily displayable and searchable format.

The Only Limit is Your Imagination

Connecting email accounts to small shell scripts is a simple but powerful concept that can unlock a wide variety of different applications. You can build these apps with the comforting knowledge that they are all based on federated and robust protocols used by hundreds of different email clients which have stood the test of time.

Using the rich text editing features of your email client, combined with a hierarchical organization system based on folders, allows you to do a lot of tasks that have previously been accomplished using buggy and monolithic tools. Privacy and security issues that plague web-based tools can be effectively avoided when using email, because you are in control of both the client and the server. You also get syncing to multiple devices for free, since IMAP was designed to facilitate managing email from multiple clients at once since the beginning.

I’m always interested in learning about new uses of email. If you know about some of these yourself, send me an email about them.