I. Introduction

Ideas are just combinations of previous elements. This means that thinking is manipulating previous elements, to come up with new ideas. And different types of thinking are just different methods of structuring previous elements. And a medium for facilitating the structuring of elements is by using lists for your thinking.

What is Indigrid?

At a high-level—Indigrid facilitates the process of thinking by letting you structure lists.

More concretely—Indigrid is an outliner that supports: multiple columns, a history of all changes, and an undo system that works whenever "the pixels change."

You can't do much carpentry with your bare hands, and you can't do much thinking with your bare brain.

Bo Dahlbom

What can you do with Indigrid?

Indigrid lets you move rapidly between Locke's different modes of thinking—explained later—as you explore your ideas in the form of lists.

The main structurings you can perform in Indigrid are:


Map out your ideas in the form of lists

  • Uniform structure—the outline
  • Explore your ideas in a consistent medium
  • Move from idea to idea as new destinations are uncovered


Define general ideas by grouping details

  • When lists get too long, group them into more general ideas
  • Drag and drop different groups into across columns
  • Work at the right level of detail


Open lists side-by-side

  • Understand the relations between ideas
  • Trace the evolution of ideas by comparing lists from different points in time
  • Track your progress in different columns


Find the right perspective

  • Compound your understanding with more perspectives
  • Views promoted to data—save, name, undo, and restore views
  • Build palettes of the ideas you need to generate new ideas


Full history of all your changes

  • Creativity involves trying things out to see what they look like
  • Look up the history of changes you made
  • Search the past for a deleted idea you didn't think you'd need, but now do


Export your ideas when they are ready

  • Change the order that your ideas appear in lists
  • Create new views of selected ideas
  • Copy and paste plain text across programs

What makes Indigrid different from other outliners?

What is unusual about Indigrid, are its chosen preclusions of functionality—in the form of rules.

Rules are easier to learn than features. Rules make the medium more consistent by reducing interference. Rules can be selected as to keep you from being distracted by choices that aren't yet relevant.

Within the predictability of the constraints, you can unconsciously master the rules faster—leading to more time spent in flow with your ideas.

I like to think of constraints for creativity as barriers that lead to breakthroughs. One constraint precludes (or limits search among) low-variability, tried-and-true responses. It acts as a barrier which allows the other constraint to promote (or direct search among) high-variability, novel responses that could prove to be breakthroughs. The specific pairs are strategically chosen to realize a novel goal criterion.

Patricia Stokes in Creativity from Constraints

Constraints for experiencing flow

Flow requires a tight feedback-cycle between what you are doing and what you want to see on the screen.

In Indigrid every operation can be reversed with undo.

Even things you might not normally be able to, like: closing a column, expanding items, deselecting items, accidently moving the window, etc.

Instead of mentally simulating what would happen—try it—with the sense of security that you can always go back, that even months down the line you can get those deleted ideas that you didn't know you would need in the future.

Even if you only use this feature twice a year, knowing it exists will reduce resistance in making changes.

"Should I delete this topic I don't think I need anymore? Sure, because I can always go back and retrieve it later if I need it for some reason."

Constraints for inspiring new ideas

Indigrid's feature set is constrained to only allowing control of the content—with the emergent property of preventing distracting decisions about the style or formatting of your ideas at this stage of the thinking process.

Features controlling what is in your visual field at once are expanded: down to what slices and subsets of your ideas are displayed in separate columns—so that you can create palettes of ideas to inspire and prime your thinking.

Having views as data that can be restored, means you can find ways of arranging the same ideas for different goals and bring up these views later.

Constraints for flexibility

Indigrid is made up of 3 primitives: fragments of plain text, connections between them, and views to display them.

By keeping the amount of types of primitives low, it is easier to ensure that features are compatible amongst all types, for unplanned combinations.

There is no pre-defined structure outside of the grid, instead you use the grid to put things into the system that you are already familiar with—into your own way of thinking.


Indigrid facilitates the process of thinking, by limiting its features—or possibilities—to only the ones more relevant to thinking.

This makes for a more consistent medium—where even if you aren't aware of the underlying rules, you will still quickly pick them up unconsciously.

But to consciously understand the ideas behind Indigrid, we need to understand the basics of what thinking really is...

II. Domain (a primer on thinking)

I realize that coming in with a "primer on thinking" in a software manual can come off as snobbish.

(But then again, last week I ate a taco with silverware so perhaps this is the person I am becoming—in my defense, I knew I had to adapt after the first one fell apart on me like a SpongeBob piñata, the kind where an adult has to step in with a finishing blow to break it open because the material's specifications was beyond the limits of these kids or something—I mean I don't know, maybe it was purchased as a revenge joke and made of Kevlar—and wouldn't this adult want to reaffirm his belief that he could have at least made the minors if it wasn't for...)

Anyways, why does Indigrid have monopoly claim on thinking? Aren't all programs about thinking?

Kind of, that is why we should take a deeper look, because it is something that you use often.

If you can break apart thinking into different mental processes, you can begin to see where they interfere with each other. And how you can troubleshoot your own thinking processes by identifying what you can ignore and what you should focus on at each stage of the process.

This section will define what an effective process of thinking looks like.

And since thinking isn't specific to Indigrid, it will give you additional distinctions you can use in other programs, or even away from the computer. The concepts and terminology will then be used for the rest of the document, to explain and justify how Indigrid helps facilitate this beneficial process of thinking.

What is thinking really?

Thinking is taking previous elements and using them to come up with new ideas.

It is obvious that invention or discovery, be it in mathematics or anywhere else, takes place by combining ideas. Max Müller observes that the Latin verb cogito, for 'to think,' etymologically means 'to shake together.' St. Augustine had already noticed that and had observed that intelligo means 'to select among.'

Jacques Hadamard in The Psychology of Invention in the Mathematical Field

Previous elements

These previous elements are ideas that you have previously been exposed to—by listening, reading, or thinking them up on your own.

I like the term "previous elements" to emphasize that they are just "ideas" that are known to you, and that you can use them to come up with new ideas. This means new ideas don't just appear out of nothing—just like you don't have thoughts in languages that you don't already know.

Keep this in mind for later, it is important.

"Previous elements" also separates the two sides of what would more confusingly be "using ideas to generate ideas." With "previous elements" we know which side of the thinking equation we are talking about:

Previous elements + thinking = new ideas.

New ideas

To come up with new ideas, you use—or massage—previous elements and capture the new ideas that result.

These new ideas are somehow linked to the previous elements, though sometimes the associations are lost—if it happened unconsciously you would need to reflect to rediscover the associations back to the previous elements.

This is why it may seem like the act of stepping on to the bus instantly gives you the insight that you needed to solve a problem. But you wouldn't have had that insight if you had not exposed yourself to the previous elements you needed to somehow find the missing connection that brought it all together. More on this later.

And the idea generation cycle continues, as those new ideas can then become the previous elements of yet another set ideas, and so on.

What are some of the different types of thinking?

With some reframing, most types of thinking can be explained using the theme of new ideas coming from previous elements.

For example:

"Considering" could be previous elements reviewed—without judgement—into new ideas as aspects or accounts.

"Planning" could be previous elements as objectives and obstacles, which direct and inspire new ideas—in the form of plans.

"Inventing" could be previous elements as models, which guide solutions to problems resulting in new ideas as inventions.

"Understanding" could be previous elements connected with other prior knowledge into new perspectives or analogies.


When thinking, the previous elements are always different, and the ideas you come up with will be unexpected—but the process of taking those previous elements to come up with new ideas is very similar.

By abstracting thinking, we can create a model with a small set of basic operations—or transformations—that apply uniformly to all these types of thinking.

Instead of a process that is intuitive and unpredictable, we can focus on the parts that we have more control over to influence the stream of new ideas that we have.

Generalizing thinking

Now that we have tested out reframing some modes of thinking as a variation of taking previous elements to come up with new ideas, we are still left with many verbs or operations that aren't explained—and really that is where the magic happens.

How exactly do we take old elements and make new ones out of them?

John Locke already figured this out over 300 years ago, using just 3 types of operations:

The acts of the mind, wherein it exerts its power over simple ideas, are chiefly these three: 1. Combining several simple ideas into one compound one, and thus all complex ideas are made. 2. The second is bringing two ideas, whether simple or complex, together, and setting them by one another so as to take a view of them at once, without uniting them into one, by which it gets all its ideas of relations. 3. The third is separating them from all other ideas that accompany them in their real existence: this is called abstraction, and thus all its general ideas are made.

John Locke in An Essay Concerning Human Understanding (1689)

This quote gives a blueprint for describing the process of thinking that goes deeper than "using previous elements to come up with new ideas" and that applies to the range of thinking types above.

Breaking down Locke's quote

1. Combining several simple ideas into one compound one, and thus all complex ideas are made.

"Simple ideas" can be reworded to "previous elements" to use the previous terminology.

The word "complex" just came into English around the time of Locke's essay, from the Latin "complexus"—or group of related elements. It didn't necessarily mean "something difficult to understand," like it does nowadays—it's original meaning was only "something with related or connected elements." But as more elements tend to take more time to understand than a single element, the definition has since matured to include "not easy to understand" as part of the definition.

However, we could reinterpret Locke's intended meaning it as taking single previous elements and putting them into a list—to show that they are related or connected.

2. The second is bringing two ideas, whether simple or complex, together, and setting them by one another so as to take a view of them at once, without uniting them into one, by which it gets all its ideas of relations.

This is the act of the mind that has benefitted the most from computers—scientists, economists, medical researchers, etc. interact with models of their ideas using spreadsheets to compound their understanding, and to find new insights.

There have been many examples where the same information presented in different ways lead to different ideas.

The example I like most is how during London's 1854 cholera epidemic, John Snow rules out air—the prevailing theory of disease at the time—as the cause by plotting the cases on a map and noticing they were concentrated around certain wells. The data of the cases was always there, but by comparing them to a map a new idea was formed—that the cause might have to do with the water of certain wells, and not the quality of the air.

3. The third is separating them from all other ideas that accompany them in their real existence: this is called abstraction, and thus all its general ideas are made.

This is act is concerned with finding patterns or concepts that can be extracted from one scenario, context, or domain and applied to other scenarios, contexts, or domains.

For example, separating ideas into generalized categories and giving the categories names so you can treat them as units, reduces the complexity of the problem—allowing you to keep only a few things in mind at a time.

This act of the mind has been extended the most by the programming discipline with its concept of "scope." Where you are only concerned with a handful of things at once that are relevant to the level or scope that you need to meet an objective, before switching to another "scope" with a different set of things relevant to a different objective. By focusing on a couple of details that matter, and abstracting everything else into as simple of a model as possible, programmers can manage the spectrum of complexity—from bits and logic gates at one scale, to petabytes and collective data centers of servers at the other scale.

How can you improve your process of thinking?

Now that you have a blueprint of the parts that make up thinking, you can begin looking at how to identify and optimize the bottlenecks to improve the effectiveness of your thinking.

The process involves selecting the previous elements most likely to inspire the ideas that you need, and laying them out in a medium to free your mind to wander amongst what's in front of you.


If thinking is simply using previous elements to come up with new ideas, then one observation is that the quality of your ideas depends on the quality of the previous elements you used to come up with those ideas.

For example: the questions you use to frame a problem, will influence the answers you think of to address the problem.

That is, thoughts have a priming effect on the thoughts that follow them.

To use previous elements as building blocks for new ideas, you first learn or create them—they then become potential for new ideas. But it isn't enough to know them, you then need these elements available to you—consciously or unconsciously—at the time that you are coming up with new ideas. This isn't to say that spontaneous insight never happens away from the problem, but these types of discoveries come after extensive preparation where the previous elements for the solution are reviewed and integrated into the depths of your background unconscious processing.

With preparation, the previous elements are then available as unconscious hints to guide that background process until it has pattern matched something that fits with the prepared previous elements. This is why riddles can be solved with less difficulty with hints because the hints prime you for what you should be searching for, what paths you should be taking—and just as important: what paths or ideas you can ignore as not relevant.

Limits of prior knowledge

Hints to riddles usually don't represent something you didn't know but instead bring into awareness a concept that you did know, but didn't think could be applied in this situation. You can know something—have prior knowledge, previous elements—and yet not have that something available or present when you are coming up with ideas where that prior knowledge would be relevant.

You know many things that contradict each other, and yet each are still useful on their own depending on the context in which you select to use them. What you "know" must be reactivated or prepared for it to apply in the current situation.

By actively selecting and priming your thoughts with the previous elements you speculate will be helpful, lets you influence the type of thoughts you want to perceive by encouraging more ideas related to those selected previous elements.

That is, what you are thinking, noticing, or looking at, will influence your next thoughts—at times more than what you "know."


Since much of thinking is built up from previous thoughts, traditionally paper—a medium—has been used to help the thought process. Using words, symbols, and notation to represent ideas on paper lets you use your visual field as an extension of your short-term memory.

What you see on the paper makes up a stable set of previous elements—the priming—used to come up with new ideas.

Without needing to keep the priming—the relevant hints—in your short-term memory, you have more space for new ideas to fill in the vacuum.

And as your ideas flow into that vacuum and are externalized back into the medium, you extend your priming with new material—new previous elements.

When paper is thought about not so much as recording a settled set of ideas—but as medium to help your thinking, you can treat this alternative perspective as a separate mode.

This mode represents an acceleration of the process of thinking.

The process of thinking in a medium

The reasons for using a medium, is to both advance your priming by externalizing your previous elements, and to escalate the rate of performing "acts of the mind."

And the process looks similar no matter if it is done on a legal pad, in a word processor, or in an outliner:

Step 1. Externalize—mapping previous elements in a medium

The first stage is to jot any ideas that come to you. The purpose of this stage isn't to capture only good ideas, nor to organize your ideas, but to externalize the ideas into the medium so you can realize the benefits of not needing to keep them "alive" consciously.

Think of it as the difference between feeling your way around an unorganized dark cramped backroom of a supermarket with a flashlight for boxes of cereal, vs. taking those boxes and bringing them out to the illuminated floor of the supermarket. If you don't bring the boxes out of the dark backroom and dump them under the industrial luminosity hitting the supermarket floor, then you can only see a handful of boxes with your flashlight at a time—and most of your thoughts will be preoccupied with searching and memorizing. But when they are littered across the floor, you can rely more on looking instead of memorizing and searching.

Sure, it still isn't the Library of Congress of cereal or anything—but it's not like that collection of books materialized organized either.

The more familiar you become with the process, the less resistance you will have in expressing ideas as you reframe the discomfort of externalizing ideas you don't like, with the confidence that it moves the process along, it gets you to the next thing.

Once the ideas are on a medium's surface, you can drop the cognitive energy needed to keeping these ideas alive in short-term memory. The point is to try to make it as easy as you can on yourself to have the ideas. Just as what makes for a good swimmer is as much their power and athletic potential as it is their technique that reduces drag—making it easier on themselves to swim faster.

It is the quality of ideas that is rewarded, not the difficulty you went through in how you got them—ideas in a medium reduces the drag that having them in your mind would have to getting more ideas.

Disorganization of your ideas at this stage is fine—and expected—you can organize it later. Get them written out without evaluating or judging them, as listing ideas is creative and open whereas evaluating ideas on is rational and closed. Bad, vague, incomplete, boring, wrong, and impractical ideas—all perfectly expected, get them in the medium where it will be easier to improve them.

Because once they are in the medium, your mind has full capacity to begin to improve them—instead of just trying to uncover them, instead of still bumping around for them in the dark trying to identify them.

Step 2. Transform—performing Locke's acts of the mind

Now that your ideas have been transferred onto a surface—or lifted into a model—Locke's acts of the mind are easier to perform.

In this stage, you enter a cycle where you are combining, comparing, and abstracting over the previous elements you have externalized into the medium to come up with better ideas.

You can perform Locke's act of combination:

For example, by listing more attributes or details under another element.

You can perform Locke's act of comparison:

With the externalized ideas on the surface in front of you acting as previous elements, you can begin to capture the associations that come to you as new ideas just by looking over the previous elements. Or by viewing elements in spatially different areas depending on some type of attribute, you can also capture new connections as you compare the different areas against each other.

You can perform Locke's act of abstraction:

By grouping and organizing ideas to reduce the number of things you have to be aware of at a time to make thinking easier. From there you can find areas that interest you, new questions that lead to better ideas.

Step 2 is a cycle between the different acts of mind, resulting in writing out more elements in the medium that become the next stage of previous elements that lead to even more ideas.

Your mental progress—your thought process—is displayed in front of you on a medium, which primes your thoughts to keep your thoughts pertaining to what is in front of you, helping your focus.

Step 3. Frame—turning results into artifacts

And finally, after enough acts of the mind your thoughts will converge on which ideas to develop further, and which ideas can be ignored for now.

At this point you can decide what to do:

You can now erase all the intermediate ideas that you used as stepping stones to get to the better ideas and turn what is left into a document or artifact.

Or if it was a study—the process was the result, so that you can more fully understand something, come to a decision about something, or plan something out.


  • New ideas are created from previous elements.
  • The process of creating new ideas from previous elements involves combining, comparing, and abstracting previous elements into new ideas.
  • To improve this process, you use a medium for two qualities it provides:
    • To create a visual extension of your short-term memory which primes your thinking to recognize more relevant ideas.
    • To increase the rate at which you perform acts of the mind.

III. Design

Mediums facilitate thinking, and they also influence thinking.

When using a spreadsheet to think, you will have different thoughts than you would using a word processor. What would your thoughts be—if the only possibilities that the program allowed, were for moving you forward when you still didn't know where you were going. When you still had questions instead of answers.

That time I got fired

Once, I was fired from my job as a programmer—and it was completely my fault too.

Up until that point my approach to programming was to look at the screen and do what came naturally to me. And it would flow effortlessly.

Only this time, I got stuck on a technical problem that was over my head.

I would look at the screen and nothing would come to me. I was stuck, but I knew that something would come to me soon—because something always came to me before. Maybe while driving, or surfing, or cooking, or playing pool with the bad kids—the idea would come, after a day—two max.

But after 3 weeks, nothing came and I was fired.

It felt like up until that point I had been wandering around a generous mansion, with rooms full of the objects that I would browse until I recognized something that would work for whatever problem I was facing. And then unexpectedly, I had locked myself in a tiny abandoned closet without any way back out.

Things weren't the same after getting fired. Now whenever I would start feeling stuck, I would wonder if that previous episode was going to play itself out again.

It took me about 10 years to forget about the incident, and to rebuild the confidence I once had.

But then it ended up happening again.

Only this time it was subtler, lasted an entire year, and no one really noticed except me. Because now, when I was stuck in areas where I wasn't finding answers, I could distract myself in other areas that did have answers. And no one else noticed that I couldn't sustain my attention enough to find the answers in more meaningful areas.

It was as if a king had sent me to the shores of the east to investigate what they were like. Only I never reached these shores because I would find one barrier, try to go around only to find another barrier, to then slowly realize that I was traveling adamantly without getting any closer to any shore. And when I sent back the ordinary specimens I collected anyways, along with an account of the journey's shortcomings, I got back something worse than disapproval—I got praise.

Anyways, when I finally reflected enough to realize that I wasn't getting better, I felt a revolution going on inside myself to find the change that would overcome this pattern for good. I decided that I would face this by becoming an expert in concentration. But I wasn't an expert, so I started to write a book on concentration so that in the process I would become an expert in concentration.

Through research and writing, I realized that concentration is mostly about the frame you are in as you are thinking, because the frame will determine what types of responses or thoughts will occur to you as possibilities. Certain frames will prevent certain low-value possibilities from distracting you, while encouraging high-value possibilities to captivate you.

After personally having success with some frames—that I talk about later—I started thinking about how I could embed these frames into the mechanics of a medium.

What is the problem Indigrid was designed to solve?

I wanted to solve the problem where you are waiting for an idea, but nothing is coming.

Where you feel stuck, and yet optimistic that something will come—because something always has come before—but you don't know when, and it has been a while already.

I wanted something devoted to extracting the most challenging or elusive of ideas within you, with anything that could distract from that eliminated.

The ideas you are looking for could be anything:

  • What to write
  • What you are really after
  • How to get what you are after
  • What to do and how to do it
  • What the best selection is for a list of choices
  • How to plan a project
  • How to solve a problem
  • How best to organize your ideas
  • Etc.

Why hasn't it been solved?

The problem is using intuition to qualify the merit of our ideas. This is because intuition can get in the way when we are doing something new.

The problem isn't that you aren't getting some ideas, but that the ideas don't feel like "good" ideas.

Using intuition

Writers experience writers' block when what they want to say doesn't "feel" right to them. They are trying to work it out in their heads first—or in a rough draft with unrealistic expectations—and since it doesn't feel like it is "good," they wait for ideas that are associated with that feeling.

A way around this is to write knowing beforehand that it will be bad, but that writing it out anyways will encourage the development of better ideas in the process. And that coming back after some time has passed to what you have written will let you better see the work in another perspective. A perspective that can lead to a better understanding, that can cause new connections to become evident.

By expressing vague and incorrect ideas into a medium, you are signaling to yourself unconsciously that thoughts relating to the ideas you have written out are important and welcome. This signal recruits the background processing of your unconscious mind can go to work with the previous elements that you have expressed onto the page.

Why we follow intuition

If we follow intuition and it works out, it seems inevitable—we had the feeling it would work out, and we feel validated and competent.

If we follow intuition and it doesn't work out, we think it is odd and might reflect on what was different this time for intuition to fail on us.

But if we go against it, and it doesn't work out—that really stings. We can blame ourselves for not "knowing better," since we felt something beforehand. "What did you expect would happen?"

It takes cognitive energy—precious limited moments of awareness—to go against that inertia.

Why intuition fails on judging a new idea's merit

What "feels" right only has high correlation with the idea's objective merit, if your skill level is already high.

And low correlation if your skill level is low.

Intuition works best in areas we are familiar with, since intuition is an understanding of something that is familiar. Nothing about a steering wheel with pedals, a keyboard, or a surfboard is intuitive. It only becomes so after you become familiar with it.

In mathematics you don't understand things. You just get used to them.

John von Neumann

When working with ideas, there is a tendency to navigate by what "feels" right. But this intuition is highly influenced by the emotional state you are in. Not only can emotions influence decisions, they can influence the merit you perceive of your own ideas. A remark from someone you admire will influence your feelings on your ideas. Feeling relaxed can give you more ideas. How long you have been struggling with the idea will emotionally charge the idea.

Think of how good it feels to have found your keys after a long search, and the mundane event that it is when you find them first try without thinking of it. Yet both resulted in the same result—having your keys.

There is a metaphor there.

The intuition of how "good" an idea is, can be confused with the simple relief of the tension built up during the struggle. Conversely, you know things to the point where they no longer even register as worth mentioning—but that others would find novel and insightful to them.

Additionally, most new ideas don't immediately feel "good" for a couple of reasons:

If it is new, it may be vague and incomplete.

If it is new, its benefits aren't always intuitively apparent.

Subjective confidence in a judgment is not a reasoned evaluation of the probability that this judgment is correct. Confidence is a feeling, which reflects the coherence of the information and the cognitive ease of processing it.

Daniel Kahneman in Thinking, Fast and Slow

Why using intuition to wring out ideas can paralyze you

Feeling stuck, or lost, is your intuition telling you that it doesn't know what the next step is. At this point, the intuitive thing to do to get unstuck usually won't work—otherwise you wouldn't feel stuck or lost. And the more you stay stuck, the more ingraining you are doing to keep feeling stuck familiar. This makes whatever you are doing to stay stuck even more intuitive in the future. So that the longer it goes on, the less likely will intuition be able to help.

The problem is that when looking for new ideas, the evaluation of those ideas depends on emotion. And emotion is affected by things independent to the merit of the ideas unless it is in a domain where you have high expertise. Without that expertise, it can be paralyzing to be waiting for the ideas you need. Because new ideas in an area that isn't familiar to you, may not always feel intuitive.

How can it be solved?

The more obstinately you try to learn how to shoot the arrow for the sake of hitting the goal, the less you will succeed in the one and the further the other will recede. What stands in your way is that you have a much too willful will. You think that what you do not do yourself does not happen.

Eugen Herrigel in Zen in the Art of Archery

Emphasizing thinking as a process—not as a result

Intuition can work very well when it is built around the process—which you have more control over. Instead of around the results—which can be best thought of as influenced instead of controlled directly.

The ideas that you are going to get are unpredictable—they are new ideas after all—but the process you come back to explore that unknown can become predictable and intuitive.

And unlike obtaining the result—of say, a new discovery—a process can be taught.

Increase your rate of ideas

A process is just a series of steps taken towards an objective.

As previously mentioned, the steps of the process of thinking involve taking previous elements and structuring them per Locke's acts of the mind—listing, comparing, and abstracting previous elements into new ideas.

So when it comes to the process of thinking: more steps taken in the process means more results produced by the process.

Barriers to your rate of ideas

The rate of your ideas then depends on the relevancy of the previous ideas with your objective, and the velocity with which you perform Locke's acts of the mind with them.

Using Locke's definition of thinking, we can consider the rate of ideas as limited by the following:

Listing: How much effort does it take to get your ideas listed in a medium?

Comparing: How easy is it to bring up relevant previous elements and arrange them as a palette for more ideas?

Abstracting: How easy is it to separate and organize elements to manage complexity?

Indigrid's approach

Even when you are stuck, you still have control over increasing your rate of ideas—over allowing the process to continue to flow as an indirect influence over finding the ideas you are looking for.

To facilitate this process of thinking, I built a medium that provides more relevant possibilities for your thinking process. This means I had to protect what is relevant from any other distracting possibilities that might dilute the process of thinking. The problem is that program features have stories with convincing benefits—but the cost of each feature, is that each feature's possibility that is taken results in the loss of other possibilities that could have taken its place.

Instead of investing in the potential of doing more, I'm interested in the properties that emerge by doing less.

To avoid accumulating new features that would take away from the existing features, I have removed everything that doesn't fall under one of the following 3 aspects—the aspects most relevant to increasing your rate of ideas. By constraining your options, there is more opportunity for thinking within possibilities that can nudge you into getting ideas when the next step isn't obvious.

And that is the objective I am going for—to facilitate thinking even when you aren't sure yet where you are headed.

Indigrid's 3 defining aspects:

  1. Reduce decisions
    • Resistance comes in the form of indecision, as making decisions breaks flow and ties up cognitive resources in resolving the decision.
    • Too much choice is counterproductive to creativity. Less choices means more thought can be concentrated into the remaining choices.
  2. Enrich priming
    • The quality of your ideas is defined by the relevant previous elements available to you—consciously and unconsciously.
    • Creating palettes of previous elements as inspiration for the ideas you need can be helped by treating views as data, and not simply transient operations.
  3. Prefer consistency
    • Prefer additional consistency over additional functionality.
    • Consistency lets you think within the rules of the medium like a game—instead of remembering the available features relevant to what you are trying to do, and the limitations in applying them within your current scenario.

First aspect: reduce decisions

Preclude decisions not about the content to free up cognition for more meaningful distinctions.

With more experience, the number of potentially relevant elements and procedures that the learner is able to recognize and follow becomes overwhelming. At this point, because a sense of what is important in any particular situation is missing, performance becomes nerve-wracking and exhausting, and the student might well wonder how anybody ever masters the skill.

Stuart E. Dreyfus in The Five-Stage Model of Adult Skill Acquisition

Coding conventions

Whenever I see someone typing out a word incorrectly, I notice that most people will stop typing, look at the incorrect word, and then mentally pause a beat to plan out how best to correct it in the fewest key strokes. I think most of the time it is wasteful to do that—they are thinking in terms of time efficiency, whereas they could be thinking in terms of cognitive efficiency.

Instead I have a rule:

If I typed the last character incorrectly, I hit backspace.

Anything else, or if I don't know if it was only the last character, then I don't even think about it—I hit control backspace to delete the entire word, and I type it out again.

This method isn't always the fastest way of correcting the word, but I can do it without thinking, without the pause to size up how the word is incorrect, and most importantly to me—without deciding how the word should be corrected, because the rule is simple enough to be applied unconsciously.

In terms of attention required, retyping a word from the beginning takes less of my attention than fixing an existing word. I'm not thinking if I need to left arrow 3 times, and then backspace 2 times, and then let me see what letters are missing because I can't do that in my head, etc.

The problem I have is that when given choices, I naturally want to make the best choice. And I have to remind myself that not all choices need to be optimized, because not optimizing is the optimal choice. Optimizing and decision-making itself take effort, it requires your attention. I don't want to inadvertently make the decision of slightly faster typing at the expense of interrupting the flow of my thinking.

I remember exactly when I had the shift into this way of thinking...

Most programmers have a coding convention that they follow when writing code. A coding convention is a set of style decisions about arbitrary things like how many spaces to put around different parts of a line of code. Different companies—and sometimes even different projects within those companies—will have different conventions, sometimes informal, and sometimes written up as a document. Whichever one is selected, most programmers will agree that having the code consistently follow a set of conventions helps establish a predictable rhythm that makes it easier to focus on what is being said, instead of how it is being said.

As an analogy, you can think of coding conventions as like the style in which you form individual letters when writing things out by hand. If many people are reading these notes, you might all get together and decide how a lowercase 't' should be formed to maximize readability. Or maybe for maximum efficiency in writing. Or maybe for most aesthetic presentation. It seems more ridiculous when you make the analogy to handwriting, but the coding conventions can be kind of a big deal for programmers.

Since most of programming is associating logical operations with placeholders for streams of data, you can use spaces creatively to organize these associations above and beyond the structures that the programming language provides for you. You could argue that good coding conventions makes it easier to know where things should be in the code, which makes reading it easier, which is the bulk of your time spent as a programmer—reading code.

And that about sets the background for the beliefs I had on my own coding conventions when I ran into my own Luke Skywalker's Hero's Journey.

It starts when it came to my attention that there was a tool that would do this formatting for you. At this point in my life I have already spent 10 years mastering vi, a programmers' text editor with a language of key commands to make these types of edits efficiently. But I'm always looking any edge—even if tiny—to improve my programming.

I download the program and I'm reading through the manual for all the options—there are over 70 options for how you want your code to be formatted—and quickly it does everything I want it to.

Except for one convention I have that it doesn't seem to support.

I'm so close though—just one convention away from having it be perfect—and I spend an hour, more hours, all day, and then the next day trying to find the right set of options that will express my convention. It got to the point where I'm looking through the tool's source code to see if I can't write a patch to make it just do this one last tiny thing.

Part of the appeal of having these coding conventions, is so that you don't have to decide how to format something every time you want to write something. But what I wasn't seeing was how I had lost sight of the real purpose of the conventions in the first place—to decide something up front, so that you aren't spending time thinking about things that aren't as important. Because it takes awareness to not think about decisions presented to you.

When I made this realization, I decided to do a learning experiment. I backed away from trying to get the conventions I was used to, and instead changed all the options I had to something different—especially to the ones that I felt strongest against. I wanted to see how much of a difference it would make. Would I get used to them? How much do they really matter?

Within days I had already gotten used to the new conventions, and within weeks I had forgotten what my old conventions were—conventions that I had held for years, dutifully adjusting as I went manually.

It is almost as if the more choices you give me, the more time I spend trying to find the right option, in trying to optimize something—distracted from the more important question of "what am I really trying to achieve here?"

And since that experiment, what I ask myself more and more now is "what do I want to optimize?" Instead of "how can I optimize this?"

How does Indigrid reduce decisions?

Since decisions are the cause of resistance, removing choices enables more of your attention to be concentrated on what is left.

By focusing on the areas where there is resistance, we can constrain the decisions to reduce the resistance faster than the reduction of functionality.

Here are some examples of areas where choices were removed to alleviate resistance:

Fewer decisions to make when getting your ideas into the medium

Ideas are more efficiently manipulated in a medium, so reduce as much resistance as possible towards getting them into the medium. All unnecessary decisions not relating to the content have been removed.

No formatting, styles, or choices about the appearance of content.

Cutting these out reduces decisions about how the ideas should be presented, until they are exported.

No distinction between comments, descriptions, notes, etc.

Everything is a "fragment" of plain text and is compatible with all the operations that you can do on fragments.

Fewer decisions in performing the acts of mind that you need to understand the domain

When possible—like when dragging and dropping—operations are rendered in their final form as you go, so that you can visualize what the results will be.

Fewer decisions about organizing your ideas for later retrieval

No up-front organizing, or categorizing, required—instead fast search.

In paper organization, it is helpful to throw things out because it will slow your searches down.

On a computer however, if the search feature is fast enough it isn't worth the second or two deciding if you should keep something, if it will only speed up the search by the nanoseconds required for the search to skip over it.

It isn't just the time that this saves in the present, but deciding if you will need something is cognitively exhausting—to decide if you should keep something, you must project in the future how the information might be helpful and make a decision on something you might not know about.

Less decision-making about what to delete

History of all changes makes it easier to make more changes, knowing that you can always retrieve what you had before if you change your mind.

Second aspect: enrich priming

Elevate the possibilities that the medium provides for encouraging the needed priming for new ideas.

The layout of content

Several years ago, I began reading a programming book that was way beyond my level. But I gave it everything I had at the time: I tried making notes, cross-referencing with other books for more explanation, I even hired a math tutor to help me out with it—but it was still too much for me. And I let it fall to the side, stashing it outside my normal bookshelf because it represented an indestructible trophy of my inadequacy.

Then last year during New Year's, I wanted to do better and so I returned to awaken this now hibernating leviathan.

This time though, I made an additional change that was all I needed to be able to work through the entire book. I mailed the book to a company that scanned the book for me into a PDF, which I then printed out reformatted to 2 pages down the middle, with wide margins along both sides.

During the previous attempt, I kept having to flip across pages because different concepts that were previously mentioned were being used at the same time. I didn't think having them on separate sheets would have been a big deal, but it was a big deal. I could now have different pages—non-consecutive even—laid out on my desk to glance at back and forth while I was trying to understand the book.

That tiny difference in resistance between flipping to the right page, and glancing at the page on my desk, was enough of an improvement on the feedback-cycle to move me from being overwhelmed the first time, to being in flow the second time. In the margins, I jotted out questions that came to me as I read the material, that ended up helping me focus on the reading to answer my own questions. This experience led me to realize the importance of not just having columns inside an outliner, but how what you are looking at directs where your attention will be, and what thoughts you will have.

How if you have the information in front of you with nothing to distract you from it, you'll get your answers.

How does Indigrid enrich priming?

Ideas are influenced by the previous elements preceding them.

By introducing functionality for creating, pruning, and switching between palettes of ideas you can persuade the elements you look over to ignite catalysts for new ideas within you.

Elevate views as data

Since the elements that are currently available to you within your visual field will prime your thinking, changing views will change your thinking. Because of this impact of simply what is currently in view, functionality has been expanded to encourage more view changes.

In Indigrid, views are elevated to data, and not simply transient operations. This means you can undo changes to the view, that are usually skipped over by other undo systems. It also means that a particular view of your previous elements can be named and loaded again in the future.

Comparing ideas

Locke's 2nd act of the mind is comparing ideas—where new ideas are inspired by the relations between elements.

Indigrid lets you open new columns containing different subsets of your previous elements, to view them side by side with other subsets. That can be filtered independently of the other columns.

Palettes of ideas

Locke's 3rd act of the mind is abstracting ideas—where experimenting with differing levels of detail leads to new insights.

The more elements within the visual field that relate to what you are working on, the more opportunities for inspiration. Elements can be collapsed to hide their details. New columns can be opened from a subset of previous elements.

The more possibilities to notice things on screen that stimulate your thinking—by collapsing and expanding elements, adding columns of related elements, and adding filters to columns to narrow down what is relevant.

Focused attention

Finding good ideas involves keeping your attention on the results you are after.

Introducing questions next to the material you are reviewing, primes your attention for ideas that are relevant to your questions. Open a separate column next to the columns you are working on, where you jot questions and comments as you go. When you need to come back, loading views with the ideas, questions, or data that you need will switch you back into the state you were in when you last left off.

Third aspect: prefer consistency

When consistent, a medium ends up becoming a tool which feels like an extension of your thoughts.

Learning Excel

I once joined a startup that had a way of converting Excel files into programs. When I began seeing the ingenuity and creativity of clients' worksheets I started to look at programming differently.

These clients, who without any programming experience—nor even any formal Excel training—had created sophisticated worksheets ranging from estimating the final cost of different building blueprints, to finding where to place dynamite for mining, to deciding how to best purify chemicals.

As I began to experiment with Excel, I began finding more domains that I was interested in that I could represent and interact with in Excel. Where I could expand my worksheet with different lines of thought as I went from uncovering, to understanding, to grasping.

As I thought about what makes Excel so compelling for such a range of problems, I realized it was because it was surprisingly consistent for an Office application. Underneath the geological layers of features Excel puts in to justify upgrades to new versions, is a simple model taken intact from Dan Bricklin's VisiCalc—the original spreadsheet program—where cells are made up of values, linked together by formulas.

By extending this model, people can draw on their creativity when they are presented with a model consistent enough that they unconsciously begin thinking within the rules. That the building blocks that can built upon in ways not envisioned by the original designer.

This inspired me to look for a simple core that others can take beyond my imagination just like VisiCalc did, instead of imposing my workflow as a collection of features.

How does Indigrid prefer consistency?

When a medium is consistent, you can begin to forget about the tool.

Instead you focus on expressing the structuring you want by thinking inside the constraints of the medium.

Only when the tool breaks down—or doesn't work as expected—is the tool noticed.

I built consistency by coming up with a set of rules small enough to minimize the exceptions or incompatibilities amongst the rules, while putting enough thought into the selection to maximize expressiveness.

Composition over operations

Backing Indigrid is a simple consistent model—even if you don't read about it, you will unconsciously pick up on it.

You are given building blocks with a handful of rules for how they can be composed, and from that you can build your own system. You use notation that you invent, that makes sense to you.

There are only 3 primitives that make up the entire program: fragments, connections, and views.

Fragments of plain text that are connected to other fragments of plain text and displayed in a view.

For example, there is no distinction at the program level between fragments of plain text as descriptions, or as comments, or as notes, etc. This way they all work the same way, you don't have to know the differences between the types, or what operations apply to what types.

By not introducing more primitives, I both constrain and encourage expression.


The process of thinking is limited by the rate of ideas, which Indigrid increases in 3 ways:

  1. By reducing decisions not relevant to increasing your rate of ideas.
  2. By emphasizing the creation of views to prime your thinking with relevant previous element.
  3. By keeping the rules consistent because predictability is easier to reason about.

IV. Model

Now we get to the part where we can begin to approach Indigrid from the bottom-up to understand the entire design deeply by learning the limits and boundaries of the design.

Indigrid is made up of 3 primitives—or types of data—that interact with each other according to 5 constraints.


These represent the types of data or structures that you can create using Indigrid.


  • Plain text elements.
  • Used to represents elements in a list.
  • These are the ideas that come from creating, inventing, discovering.


  • Links between different elements.
  • Used to represent associations between two existing fragments.
  • These are the ideas that come from organizing, reasoning, deciding, planning.


  • Visual arrangement of elements—where they are on the screen.
  • Used to compare, detach, and explore fragments and connections.
  • These are the ideas that come from considering, questioning, understanding.


The constraints represent the rules for how features should be designed, and what is possible.

Rule 1. Control constrained to the content

By restricting yourself at this stage to ignore the style and the formatting of your ideas, you make room for more relevant distinctions to appear mentally as possibilities.

Decisions of the style and formatting of ideas should be pushed off until you have the ideas structured enough to transfer them to the appropriate document-oriented program for revising into a file to distribute.

Rule 2. Allow decisions to be deferred

Ideas at this stage can be too fragile to withstand analytical finalized decision-making.

Insight is possible at each shift in your position—but decisions introduce resistance to expression, which reduces the speed at which you can shift your position.

Instead allow switching back and forth of positions, where reversing the operation is treated as an exploration—not simply as a cancelled command.

Creativity is spurred by play, where play is an explorative activity without any mistakes, where instead you are directed by asking "what if?"

Rule 3. If the pixels change—undo will take you back

Make fast progress, to find out where you are going first—knowing you can always go back using the same undo mechanism no matter the change.

Reduce resistance in expressing and exploring ideas by cutting out the worry of you needing to distinguish by what counts as something you can undo: "a change to the model," and what operation is above undo: "a change to view operation" with how you reverse its effects manually.

In Indigrid, undo means "take me back to how it was before" and not just "reverse the last operation to the model."

Rule 4. Views are data

Using your visual field as an extension of your short-term memory provides a background that can prime for better ideas.

Having control over what is visible on the screen at any time is important towards influencing what ideas you want to come to you.

So the views that you create as "palettes of ideas" for your priming are as important as the ideas that make up the views—the right frame or combination can spark questions that lead to breakthroughs.

How you look at the problem, situation, opportunity can trigger new ideas or insights.

And so getting to the right view is also an exploration, and is nourished with the same functionality as your ideas—so you can create, name, and select previous views.

Rule 5. Commutative operations

If you can't come back the way you came in—not only by using undo, but by applying the operation in reverse—then the model is harder to navigate.

Features tend to be one way stories that leave you in a new place without a clear way of getting back. These "one-way" operations break symmetry which breaks the rule of not needing to decide things up front.

And the resistance comes in the form of contemplating if you want take the bridge the feature is offering you—with hesitation—because you don't know how easy it is to go back.


Indigrid's medium is a grid for performing Locke's acts of the mind as explained in section 2: "Domain (a primer on thinking)," to solve the problem of generating ideas around mental blocks as addressed in section 3: "Design."

The medium's underlying model with primitives and constraints is what keeps the medium consistent—which keeps it predictable and easier to work with or reason about, much like a board game with defined pieces and rules.

The model consists of 3 primitives: fragments of plain text with connections to other fragments of plain text and displayed in a view.

All the features in Indigrid—as well as future features—obey certain constraints to keep the design focused on the specific problem of grasping within for ellusive ideas and nothing else.