Ethereal Tasks: Improving productivity with a Google Tasks wrapper

Nick Felker
6 min readMay 1, 2023

--

At the end of last year, I decided that this year I had to do improve my productivity. I had so many ideas of things to do, yet my to-dos were scattered across a bunch of different apps and services. That had to be fixed first. So, in a state of meta-productivity, I’ve built my own task management app built on top of Google Tasks.

Why Google Tasks?

I have tried a bunch of different apps: Google Keep, ZenKit, Trello, Obsidian, Notion, and others. None of them do precisely what I want, the way I use it.

Generally they require you to manually organize everything. You can have an uncategorized list but then they expect that you’ll spend time manually moving your tasks between lists, adding dates and points and attachments and comments. That gets far too deep into digital bureaucracy. Rather than spend my time being productive, I’m spending it planning my productivity. I don’t think that’s been a good use of my time.

To make matters worse, a lot of these have poor mobile apps. Personally, I’ll have random ideas over the course of the day that I want to jot down quickly. I’ll have my phone with me but I’m not often at a PC. When adding a new item, I want to get it out of my head and put somewhere safe as quickly as possible like a stream of consciousness.

One night I was laying in bed, half past midnight, when an idea struck me. I didn’t want to rush to my laptop and I didn’t want to have to fill out a dozen fields in a clunky mobile interface. I just wanted to put “TikTok: T-Shirt cannon charity” somewhere where I could revisit it in the morning.

As I decided that I had to build my own app, I figured that I would re-use Google Tasks as the backend so that I could focus on the frontend. This worked well additionally because the Tasks app is quite simple and good. It is easy to add tasks. It syncs offline. It’s just needed a better frontend for those times I can sit down at my PC and look at what to do next.

Automatic Organization

A flurry of tasks get categorized for free with simple text tricks

The one thing that I need is a way to organize my variety of tasks. But I also don’t want to spend an hour doing everything by hand. I don’t want to create folders and subfolders and everything. I’ve found that to be a bad use of my time. What I really just want is to have things organized automatically. It doesn’t have to be smart, just work.

You can see in the screenshot above that tasks get pulled in from my Google account. These tasks automatically get turned into folders and tags. A folder is automatically created by adding some text followed by a colon in the title. For instance, “TikTok: T-Shirt cannon charity” generates a folder called “TikTok”. Clicking that will filter all my tasks to just those. It’s a way to get organization for free with simple parsing.

You’ll see that all items of a given folder will be marked in the same color. To determine the color, I take the second letter of the task title and map that to a particular title. This creates a sort of visual consistency.

A simple expanded view

On the right panel is more info on my task including a Markdown rendering for simple lists and things.

Below Folders are Tags. In the body of the task I can add as many hashtags as I want to quickly help filter without having to spend more than a second. Tags can also get created automatically by certain integrations.

GitHub integration

You can add APIs to anywhere

I really want to have all my tasks in one place. I dislike that I have all these services, because then I spend time moving items from Keep to ZenKit, or ZenKit to Obsidian, or something else. Or I need to at least look at all these services just to have a clear picture of matters. I don’t think that’s a good use of my time.

GitHub in particular is one service that I wanted to merge to form a comprehensive task list. I find it useful to assign issues to myself in GitHub, but then how do I remember that I have those issues?

Using a personal access token and GitHub’s API, I created an extensible system to do one-way sync to Google Tasks for any outside service.

This implements a TodoModule which can be quickly written in dozens of lines of code and stuck in a map of connected services. At any point during the use of the app, I can click the Sync Tasks button to initiate a sync that adds, updates, or completes an equivalent GitHub task.

You may see that the tags variable adds the module ID, so all items from GitHub will automatically be tagged with #github. I can add my own #github tasks if I want, and they all show up in the same place.

Right now GitHub is the only one I support, but if I wanted to add more it will be easy. And what’s better is that all these items are converted to a standard type.

Export to iCalendar

A few people are familiar with iCalendar, RFC 5545, a standard to represent calendars and lists of events across the web. I’ve used it in the past.

Fewer people may know that this standard is also designed to represent entries in a To-Do list. To make integrations straightforward I’ve bundled up related code into an NPM module, @fleker/standard-feeds. This provides the interfaces for a To-Do object and a method to convert it into text.

GitHub and other services create To-Do objects and sync them to Google Tasks. I can then click the Export button to get a download of everything in a standard format.

This helps with data portability and I can more easily switch to other backends if I ever want.

Sluggo is lit

I’m inspired by this recent Nancy comic. We all want to get better at taking actions. Nobody enjoys digital bureaucracy, but yet many of us are forced into it by the design of the tools we are given. While I’m sure some people have really created some impressive workflows and organization, that’s not what I want. I don’t want the kitchen sink and a hundred features. I just need a few amenities, placed sparsely and deliberately, to get me as productive as possible.

Now that I’ve accomplished it, I’m ready for the rest of the year.

Etheral Tasks is available on GitHub.

--

--

Nick Felker
Nick Felker

Written by Nick Felker

Social Media Expert -- Rowan University 2017 -- IoT & Assistant @ Google

Responses (1)