Paul Legan
Technologist
Paul Legan

Thought Stack Back to Journal →

Saturday, August 5, 2023

Much discussion is made around the technology stack you choose for a particular project. One must examine personal (or team) skill set, the strengths of each particular framework, and overall maintainability of the potential solution. 1Among a variety of other considerations.

However, there’s a much more important stack that we maintain each day in our personal and professional lives and I call it a thought stack.

A thought stack is basically a transient list of thoughts you hold in your mind at any given moment. It is often the glue that binds each of the contexts you switch between in your daily tasks, but it could be as simple as a running list of distractions on which you eventually want to follow up.

The key is that this data is ephemeral. You keep it in short-term memory long enough to process it and move on to the next item. I often think of it as an in-memory array:

# accumulate things as you move through your day
stack = ["Heard the laundry ding",
            "Saw Kileen called via FaceTime",
            "Got a price alert for California flight"]

# grab the latest thing
latest = stack.pop()

# complete or otherwise address the thing
address_thing(latest)

Occasionally, you make a determination that something from the stack needs its own, dedicated context. This is more in line with reality, in which each stack likely sits within its own context (a meeting, a task, etc.), so the structure is actually more like a stack of stacks.

# start my day
contexts = []

# start to be productive
context = answering_email();

# accumulate things as you try to complete a single task
context.stack = ["Heard the laundry ding",
                "Saw Kileen called via FaceTime",
                "Got a price alert for California flight"]

# add the stack related to email to a broader context
contexts[] = context.stack

# determine whether some items need their own stack
analyze_stack_of_stacks(contexts)

# focus on the latest thing
for context in contexts:
    address_thing(context.stack.pop())

There are many tools to aid you in managing your thought stack. Some people swear by todo lists, while others turn to more unstructured knowledge graphs that link concepts ad hoc.

Here’s my current system:

  1. Tot: Used for throwaway notes or to get something out of my head so I can stay focused on the current task.
  2. Things 3: Eventually all real "todos" make their way into a project here. This is where I officially mark something as done.
  3. Bear: Evergreen notes that were once part of a stack are formalized here. Often these started as Tot notes and at some point contained a todo or two.
  4. Maccy: This is admittedly a tool for my tools. I use this clipboard manager to make sure I didn’t lose something I copied when I copy something else.

2024 2024 post frequency

2023 2023 post frequency

2022 2022 post frequency

2021 2021 post frequency

2020 2020 post frequency

2019 2019 post frequency