You can’t function in society if you don’t involve yourself in the fictions society accepts about time. But you do so with the understanding that you’re playing a game. — Brad Warner, Zen Master

–

Today, I feel pretty comfortable with my relationship to Time. That’s a new thing for me to be able to say. Most of my adult life has felt like a Thunderdome style battle to the death with Time.

I remember feeling that the basic responsibilities of life simply required more hours per day then there are on a clock. I was mostly wrong about that.

It took me a very long time to learn the real problem.

For all of my twenties I was pretty bad at regulating my attention and focus. Because of that, I was also pretty bad at a bunch of other things. Planning, following through, staying on task, listening, remembering, and many more fundamental skills.

This was the real root of my troubles with Time.

The full story of how I made progress on those fundamental weaknesses is longer than Game of Thrones and more boring than Downton Abbey. I’ll spare you the story of the road, and share with you the things I do today to be my best self.

Soji

All of the techniques that I depend on to function show up in my terminal based mindful workday tool, Soji .

Soji combines elements of The Pomodoro Technique, Quantified Self, Zen, journaling, and note taking.

It helps me specifically to direct my working hours into three things:

Staying on task

Decision making

Quality, quantity, and authenticity of communication

Here’s how it works

With Soji, I am always doing one of five things. I’m either in a Pomodoro, at a meeting, having lunch, meditating, or taking a break. I don’t consider anything a “bad day” except for having a block of time that is not in one of those states.

I almost always start my day with the command

Well, I’m writing this blog post at night, so let me fudge Soji’s data to show what it looks like in the morning.

That’s correct, except for the timestamp.

What does that command do? It starts a Pomodoro. A Pomodoro is a 25 min block of time dedicated to focusing on a specific task.

For Soji, starting a Pomodoro means that it adds a line to the day’s engineering log file and sets up some cron jobs. Those cron jobs notify me every five minutes of how much time is left in the Pomodoro. When the Pomodoro is over, it dims the screen to 20% brightness and switches me into break mode.

After 5 minutes, the break ends (again, via a cron job) and the screen is turned back up to 100% brightness. It’s then up to me to begin whatever I plan to do next. As I mentioned above, not taking a conscious action at this point is the only thing I consider a failure.

The engineering log file

Soji creates a log file for every day. The file contains headers that Soji uses to keep track of my day. The log files are kind of like the database of my work life.

The log files are also where I do all my thinking. By that I mean that almost every decision I have to make while working on a task gets written out as notes under the header for the task. I also use it to maintain running todo lists across tasks. The end result is a file that shows not only what I worked on for the day, but also why I made the choices that I did.

Sometimes having this historical log is useful, but mostly the benefit of doing this is that it helps me to make decisions and keep driving forward towards a goal.

The log file uses org-mode format. It originally used Markdown, but I recently switched them over to org-mode. If you don’t know what org-mode is, you can just think of it like Markdown with a different syntax. If you don’t know what Markdown is, you can just think of it as a plain text file.

With all my notes collapsed so just the headers are showing, this is my real soji log file for today.

You can tell by the line numbers that there’s quite a lot of notes not being displayed in that view of it. In my editor, pressing TAB on a heading expands it and shows its content. I’m constantly jumping back to that file. Running the command soji with no args opens that file in your $EDITOR . I’ve never tried to measure, but I’m sure that I open that file at least once every couple minutes. I don’t type something everytime I open it, but I’m constantly looking at that file.

Here’s what my notes (that were hidden in the last view) look like inside of one of the Pomodoro sections.

Communication

I mentioned that one of Soji’s three main goals is high quality communication.

Soji helps me to communicate well because I’m constantly writing down what I’m thinking. There are lots of Pomodoros where the notes are way less clear than that example. However, very often when I want to share something with my team I just highlight a section in my notes, run a key combination that exports it to markdown and copies it to my clipboard, and paste away.

I imagine that some people are thinking that keeping notes like that is a lot of wasted time. Well, it may be if you’re the kind of person who’s thoughts are naturally well organized. But for me, it’s an enormous time saver. I would go so far as to say that it creates time out of thin air.

Meditation

I use Soji to track of my daily meditation practice as well. Soji is setup to report a green check mark or red X indicating whether or not I have mediated that day. I typically try to do 30 minutes of Zen awareness meditation each day. I also typically do a few 5-10 minute concentration meditation sessions between Pomodoros.

For more info about meditation, I recommend the books and blog of Brad Warner

Journaling

The command $soji journal enters a new journal header into the log file. I mostly use it when I want to write something down that’s more personal in nature. They are usually still about work, but they are more free form entries about broad thoughts or feelings. Soji is setup to track that I do it at least once a day.

Note taking during meetings

I take running notes at almost all meetings. This is mostly what’s under the meeting headings in the log file. It is the only way to be sure that I’m following along to the best of my ability. I think I started doing this consistently about 8 months ago, and there’s no turning back. I will often also do this in a shared agenda doc for the meeting if one exists and no one else is already doing it.

Doing this well is tricky. Especially in a public Google doc that everyone is watching. The first step is to accept that it might reveal that you don’t understand what people are saying. Embrace that. I sometimes even add a little note like, “These notes are probably wrong, I have no idea what a Loop Invariant is”.

With that in mind, I just try to summarize what each person says in one or two sentences. I also highlight in red action items or things people said they would do later.

Staying engaged

For me, becoming disengaged with my work starts a feedback loop. Once my head starts falling out of the game, it’s very hard for me to get it back on track. In the worst cases, it’s only changing projects, teams, or companies that allows me to re-engage.

Soji helps to keep me highly engaged so that it’s less likely I will find myself sliding down that slope.

Should you use Soji?

Well, it’s free software (A-GPL licensed) and I’ll gladly consider and help with any PRs that you open. I know it works on Fedora and Ubuntu. I think the only thing that might not work on a Mac is the dim/bright screen scripts and the make install task.

That said, my advice is that you should build your own tool. I mostly work on Soji while I sit in the bathroom with my 3 year old while he has his solo play time in the tub. Sometimes he gets to play a few minutes longer than normal if I’m trying to squeeze in a new feature, but I doubt I have more than 20 hours of work put into the thing over the last 5 months.

Typing that makes me wonder if my son doesn’t bathe enough…

Wrapping this up

This technique is very tightly customized for what works for me. I got to these specific features for Soji through a ton of trial and error. I don’t really know why this works for me, but I do know that even minor changes to the flow cause it to work less well. What I really mean to get at is that I have no idea what will work for you.

Despite that, I still have a piece of advice. Learn to observe yourself. Don’t hesitate to take time to type something up so that you can have clarity about what’s going on in your head. It doesn’t matter if it’s about the way you want to design some code, the future of the business, or why you can’t seem to follow Fred when he speaks. It also doesn’t matter if anyone ever reads it. Trust me. Your value to your employer is in your ideas. They will appreciate you spending some time this way. Well, they will if they are as sane and reasonable as Stitch Fix. :)