Do to-do lists help you plan your day? Or do they increase your stress as they do for me? I’ve tried millions of apps, but their tasks always look same — one task, one line. To-do lists are just unintuitive and useless for getting the bigger picture.
Take a look at the following two lists, long and short:
Press enter or click to view image in full size
It’s counter-intuitive: the tasks on the long list can be done in an hour, and the tasks on the short list reliably take (at least for me) all morning.
Only if you estimate the duration of these tasks and display them visually will it work intuitively:
Press enter or click to view image in full size
Strangely, app developers have insisted on text lists for years. I’ve been astonished by this since the birth of the App Store. For years, I’ve been looking for a tool that would allow me to see the rest of my day like in a simulator: what’s ahead of me — whether I’ll check off the last item today and which tasks will most likely spill over into tomorrow.
The profound truth of time-blocking and its weaknesses
Then, I discovered that more thoughtful people than me had long ago solved the problem with a simple calendar! It’s called time-blocking or time-boxing (the more strict variant). I got excited and immediately started. A big inspiration for me was Ondřej Krátký, CEO of Liftago, who was showing his workflow to me and my friends. I was astonished.
The initial idea is brilliant in its simplicity:
Everything we plan to do will take a certain amount of time. And that’s why it’s a good idea to schedule it as a fixed event in the calendar and then act on it.
There’s no arguing against that. We assign an expected length not only to giant tasks but also to smaller or personal ones. Then, we put them all in a daily agenda in the order of importance between other fixed events so everything fits together like Lego pieces. After all of this, the well-deserved peace of mind should come. Or does it?
Unfortunately — at least for me — it didn’t work out so well. The task time estimates didn’t hold up, and something regularly jumped into my plans. The house of edgy cards fell apart as soon as I dove deeper into my flow, exceeded the scheduled time, finished something early, crossed out, or added another task.
Press enter or click to view image in full size
A stricter version of time-blocking, time-boxing involves sticking to plans at all costs, but I can’t work like that; time-blocking every minute stresses me out and does more harm than good. Activity blocks stapled to the calendar in the morning ignore the reality of life and pretend to be some law. And because I wanted to obey the law (in a futile attempt to gain control), I was always frustrated. So I spent much time rearranging blocks of tasks waiting to be done… and soon again. Eventually, I resigned to time-blocking.
That’s when it struck me that it couldn’t be that hard to develop a more flexible time-blocking method that would simply move items into vacant time slots on its own while not wholly abandoning the priorities I had set. (P.S.: Please, whenever I utter “It couldn’t be that hard!” slap me, thank you)
“Just installed, it’s awesome! I love the creativity.” (Uglyfang, Reddit)
꩜ Nautilus goes with the time (and against it)
And so my Snail project was born, later rebranded as Nautilus. It’s started as a plugin for Roam Research, now it is a free web app Nautilus Omnibus too. Anyone can quickly and clearly visualize — simulate — a day and reflect on how it went later.
So what’s the point?
- The core is a list of tasks and events for a given day, organized by priority. The user creates and manages the list as a familiar outline. He pulls crucial things out of his tedious lists and puts them (or references to them) into the list. He can also add unique tags with parameters such as duration or completion time to events or tasks. The user estimates the task’s duration — in minutes (he enters, e.g.,
20m) — but a default of 15 minutes is used if he does not. A list may look like this:
Press enter or click to view image in full size
- The list is monitored by the plugin and redrawn into a spiral (reminiscent of a parking meter or pizza), with events and tasks displayed as sections (“slices of pizza”) whenever changes are made. Let's call this time-slicing.
- You may wonder why I chose a spiral. As the day progresses, our energy and cognitive capacity decrease — which is why the radius of the slices also diminishes. Plus, it looks nicer than calendars…
- Now: let's talk about events! Events are shown at fixed times in the spiral (only tasks float and skip). The text entry is considered as an event when the text contains
hh:mm-hh:mm(orhh:mm to hh:mm). Events are shown in shades of yellow, and tasks in shades of blue. Here you can see the list in its full Nautilized beauty:
Press enter or click to view image in full size
- The current time is indicated by a red needle, which is also the starting line for all pending tasks. All completed tasks or expired events are greyed out. You can’t schedule a task in the past (although it can be added back as a completed task in the past, for reference):
Press enter or click to view image in full size
- Here is the idea ⚠️ Unfinished tasks are pushed forward with the needle and (in the order of the list) are distributed to the following available slots between events. What doesn’t fit will jump to the next free slot or drop out of the game at the end of the day. You always know what is happening; this is not some black-boxed AI algorithm — it is just a time against your to-do list.
Press enter or click to view image in full size
- In the picture above, you can see what happened when the urgent task “activate payments” suddenly arrived: the entire queue of tasks moved forward, causing tasks to be temporarily pushed into the following vacant slots. So, I immediately noticed that “decide on budget” couldn’t fit into the afternoon window. As I didn’t want to work on it in the evening, I reevaluated the importance of the other minor tasks and shortened the budget work estimation to fit it into the afternoon. I succeeded — you can see in the picture below that it worked out well after all :)
Press enter or click to view image in full size
- Completed tasks, when checked off, will be shaded grey and stay anchored to the time they were finished (another freely available extension adds a time stamp to them, e.g.,
d12:30, which means “completed at 12:30”) — thus serving as both a reflection of the day and feedback for future planning. Above, you can see how a completed day looks in retrospect. I didn’t get a shave, confirm my attendance at the event, schedule a call with L., or forward the invoice. Still, thanks to the previous simulation, I managed to figure out the budget before the evening with my family. - So, as time passes (and pushes), tasks and free slots reorganize. But the same reorganization happens whenever you change the length of a task, complete a task, add a task, or alter the order. This happens with minimal effort. You only care about having the tasks in the proper order (according to priority) and having well-estimated durations for them.
What is the result: e.g., at 10 a.m., you already know that you are already exceeding your working time or mental capacity limit with the given agenda. As time passes, you can see at any given moment that the day is going a little differently from what you had planned. This is very human and surprisingly not distressing, as Nautilus inspires you to adapt immediately and gives you clear guidelines. You can ask yourself: do I have enough energy and time to do this or that if I see everything has already shifted?
Get Tomáš Baránek’s stories in your inbox
Join Medium for free to get updates from this writer.
I didn't manage to gain complete control of my time (which is impossible, as Oliver Burkeman explains in his brilliant four-banana book). But:
I do get closer to having a sense of control.
Will time-slicing help you?
It’s hard to say. We all have different needs, perceptions, and strengths or weaknesses. Many can get by with a list, a calendar, or even just a diary and a mind (my wife Kateřina, for example, is one of those diary-and-head-only geniuses). Some of us don’t need any fancy apps.
Still, I see there is a fair share of similarly neurodivergent people like me. I’m pleased to notice that the initial user responses from the community around Roam are enthusiastic three weeks after launch, some of which I quote elsewhere in the article. As this one from Pawel:
“I like it. I downloaded it, and now I use it every day. Nice way to see how my plans compare to the work actually done!” (Pawel, Slack)
For the first time in my life, I’m in the role of an indie developer, and I’m immediately experiencing a funny combination of pride and humility (and also a tingle when someone looks at my code and taps their head).
The only way to find out if time-slicing is for you is to try it out. As I wrote before, it is available in Roam Research too. (Roam is an excellent system for linked note-taking, outlining, thinking, and planning, so I highly encourage you to try it. My entire “second brain” lives in it. And it’s free to try for 30 days.)
You can find the complete documentation here if you want to see the details of the plugin, code, and my short video.
P.S.: I noticed more and more apps blend to-do lists with calendar view. For example, the Morgen app or the beautiful, Czech-based, and Nautilus-like Kyugo with apparently big ambitions. So far, I have not noticed that any of them have the simple but powerful feature of pushing tasks forward — as the trend nowadays is to implement LLMs (I’m so far skeptical about that though).
How do I use Nautilus?
Joyfully — since July 2023, it’s alleviated my daily struggle with scheduling (even on weekends). I never forget to consult my daily outlook with it. Moreover, I noticed that I can anticipate better and plan more accurately. I’ve even stopped going to meetings at the last minute …
My habits look roughly as follows:
- I spiralize my day in the evening or with my morning coffee on a given day. I look forward to it.
- I describe tasks and events minimally, as I was used to from the paper bullet journal system.
- First, I paste or write all fixed events from my calendar (I use Apple Calendar, for which I’ve made a script for Roam that copies and converts the day’s events into Nautilus format). The events are highlighted in yellow and have fixed beginnings and endings: appointments, calls, picking up my daughter, practices, etc. (it’s handy to highlight events in yellow in the list and use the highlighter
^^tags; it makes it more evident). - Then I’ll add “transfers” as shorter events, i.e., blocks necessary for commuting, so Nautilus doesn’t use the time for tasks while I’m on my way to a meeting.
- And then comes the promised magic. While the magician pulls rabbits out of a hat, I’m pulling tasks out of my backlogs and inboxes to judiciously arrange them in a list and add duration estimates. I even add the seemingly obvious: breakfast (20min), brushing teeth and hygiene (15min), walking the dog (20min), meditation (15min), shaving (5min) … and behold: half the morning is gone.
- As I see my day filling up, it forces me to adjust my priorities: I put important quick tasks first, but often also deeper work and more strategic things to get done before noon. (And let me tell you: it’s one thing to hear Caesar’s advice to start the day with the big rocks, the most important/challenging tasks; it’s another to see your current day in a simulation — few things make me start with a “rocks” like a glimpse at my Nautilus).
- Tasks lying in the list after an event will be placed by Nautilus after the time of the event, which effectively means that the task cannot be scheduled earlier. Typically, a nap is better after lunch, and errands are better later in the afternoon, etc…
- I leave white spaces in my simulation for random changes and for serendipity. I regularly schedule rest or exercise as a task.
- I check and adjust the task’s actual duration just before ticking it off as done. Usually, this leads to immediate self-reflection, as most things take longer than one hopes for. Plus, I can see in retrospect what I accomplished.
- Some tasks overflow my working hours. (We workaholics have big eyes.) But it happens a lot less, thanks to my better estimation of resources. Still, it’s incredibly enlightening to observe what types of activities those are and think about them long-term: why do I postpone this repeatedly? Shouldn’t I have delegated it? Is it even necessary? I then move excess items to the next day (I have a keyboard shortcut for this), return them to the backlog, or delete them.
I used to have a long “to do today” list in my agenda (in the lovely todo-app Things — its daily agenda is called ⭐️ Today). And almost every evening, when not even half of those were crossed off, I was flooded with a feeling of futility and frustration. This is not happening now, and I’m ending my day with a clean slate and a clear head.
Using Nautilus is like driving with a route set in your GPS: no matter what you do, you always reach your destination in the calculated time.
How did Nautilus happen, and why do I love Clojurescript?
It took me over a year to be able to test my idea for the first time. I had to learn how to code first. The basics of the once-famous Turbo Pascal from the university were surprisingly insufficient. But in my middle-aged years, I didn’t want to learn a mainstream procedural language; I was eager to mix some exploration into an old hobby.
And that’s when two trajectories intersected: my fascination with the beauty of functional programming (LISP was invented in 1958 and can be written “in itself,” which is beautiful) and the fact that Roam Research is partially written in Clojure(script), a functional, modern and pragmatic dialect of LISP with robust Java/Javascript interoperability. So, I spent my evenings learning Clojure over the next year. (BTW: I started to dream about brackets instead of rockets — the media is full of them). After some Clojure courses, trial/error, and nagging questions (to dev friends and ChatGPT), I also picked up the basics of SVG, GIT to finish the mission.
It has to be said that Clojurescript is an excellent fit for text-based Roam. The Nautilus code in Clojurescript is, in a way, one “big function,” transforming text (task list) into another text (SVG code), which renders the spiral. What I enjoy most about working with Clojure is the mindset where code and data are almost one. With REPL, you can easily evaluate parts of the code for debugging and even rewrite code on the fly.
Hooray, and now Nautilus is finally part of the extensions menu in Roam Depot and it already has several hundred users. More are joining daily.
Press enter or click to view image in full size
However, I’m a beginner developer, and although my code is not optimal and idiomatic, and I haven’t fully refactored it yet, Nautilus is — thanks to Clojurescript — very snappy.
Of course, I will have a list of features, bugs, optimizations, and quirks to work on until the end of my days. Thanks to all the users who support me. Write to me with feedback, or share your spirals with me! I love to see how you are using it.
“Today I found your Nautilus creation in Roam Depot, and for the first time in a long time, I am happy.” (H.O., e-mail)
Me too!
Acknowledgments: Oliver Burkeman's Four Thousand Weeks Book inspired me to understand the precious value of our time. Thanks to my colleagues, the active Roam community on Slack has helped and inspired me a lot. Matt Vogel’s template and advice enabled me to make the cljs code available in Roam Depot. Many thanks to Baibhav Bista from the Roam Research company for his kindness, patience, and support during the review process. Thanks to Adam Kalisz, who has been my guide to the world of Clojure. Lastly, I owe the idea of renaming the snail Nautilus to Christian Klaperek, the first beta tester. Greetings to Scott Hudson for his support and English lessons!
Let me know if you’ve tried Nautilus, what ideas you have, and how and with which tools you struggle (or conversely enjoy) with planning your day. I’m happy to learn something new again.
UPDATE 04/14/2024: added new features like progress tracking and red color overwrite
UPDATE 4/27/2024: you can now try Nautilus in public version Nautilus Omnibus. Enjoy!
You can find the Czech version of this article on my blog.