dirtSimple.orgwhat stands in the way, becomes the way
The Refactored Self (Part 1)

The Refactored Self (Part 1)

The other day I got an email from someone who’d read my Self 2.0 article, and was contemplating making a similar change. They asked:

Is there anything you’d care to share about who or what facilitated this change?

My first thought was that I’d already spelled out everything in that article, and my previous post on The Multiple Self. But as I began to write this person back to point out the places where I’d already said the things I thought would be useful to him, I realized that I hadn’t been as clear as I thought. Reading the articles from the perspective of someone who neither experienced what I had, who was not poring over my writings as if they were a Biblical scholar pondering the meaning of every word, it became clear to me that I had not, in fact, been that clear.

And so, in the process of replying to this email, I found myself making things much clearer, and in so doing I learned things that I already knew – but didn’t know that I knew, if you know what I mean. As a result, I now have a bit more “theory” behind what I’ve been doing, which will hopefully make it easier for me to be explicit as well as clear.

If you want to refactor yourself, it’s essential that you understand what refactoring yourself is not. In the Multiple Self, I spoke mostly about the duality of self between conscious and unconscious, and tried to paint a picture of the uncontrolled nature of your unconscious’ “code”. Your brain doesn’t so much write code as evolve it. Think of it as a genetic algorithm, trying different responses on for size, and adjusting them according to external feedback.

Much like the robots in the computer game I mentioned, your behaviors are formed as distinct neural nets keyed by what you can think of as “modes”. You end up with work modes, play modes, social situation modes, and so on. These modes aren’t fixed, as your brain is a lot smarter than AIs; it can figure out its own learning parameters and decide what are appropriate delineations of functional modes.

“You” are not a direct participant in this learning process, so it’s not surprising that you don’t even notice your modes unless you think about it. You are a different person – literally a “multiple self”- in different circumstances, because one set of neural networks is enabled and others are disabled in each situation, based on that network’s activation rules.

The Network Is The Program

It is these networks, or subnets as I call them, that I’m going to try to explain further in this post. In The Multiple Self, I explained that these are NOT the same thing as the limbic system versus the cortex, or anything else based on different brain “hardware” networks, but lots of people managed to project that idea on to what I said anyway. This time I’m going to try harder to use words that are less likely to have wrong associations for some people, which is why I’m calling them subnets.

A subnet isn’t a hardware network, it’s a software one. It’s simply an associative memory. In its simplest form, it can be a simple stimulus-response “conditioned reflex”. A “Pavlov rings the bell and you salivate” sort of thing. Or, it can be a complex set of skills, like those I’m using to write this article, or the ones I use to ride a bike.

You could probably equate a subnet with the NLP concept of a TOTE loop, but that probably doesn’t help most of you. A TOTE loop is sort of the neural network equivalent of a “while” loop in programming, except that a TOTE loop has an entry condition as well as an exit condition, and it’s always running.

 That’s right, a TOTE loop waits until its entry condition occurs, and then it does things until an exit condition occurs, at which point it goes back to waiting. But in a practical sense, it’s “always on”, because your brain is a parallel processor, not a serial one. Your brain simulates serial behavior by chaining entry and exit conditions. One thing stops and another one starts, and it looks like they happen in sequence.

(Side note: When you’re initially learning something, all the stuff you’re trying to learn overlaps and interferes because it’s all working in parallel. A lot of learning to get good at a skill is learning which subnets within the overall skill subnet should be suppressed or activated when, to effect a smooth simulation of sequential processing!)

Subnets (aka TOTE loop collections) are self-organizing. TOTE stands for “Test-Operate-Test-Exit”, and it means that the TOTE loop has a goal (the Test-Exit part) and a condition that triggers action (Test-Operate). The classic example is hammering a nail: If the nail needs hammering, “operate” by pounding it. If all the way in, then stop. Of course, “pounding” is another set of TOTEs: if we’re pounding a nail, raise the hammer. If the hammer is high enough, then stop. If the hammer is raised, swing it down. When it hits the nail, then stop.

Each of those mini-TOTES encodes smaller TOTEs, all the way down to muscle contractions. Luckily for you, all that “hand-eye co-ordination” learning you did as a kid took care of wiring up enough “primitive” TOTEs that you don’t worry about any of it, and those TOTEs can just be used as subroutines by higher-level TOTEs.

If you get a complex enough set of TOTEs, you end up with what I think of as a subnet. Some subnets are simple stuff, like perhaps a subnet for being lively at parties. Others are more “meta”, in that they are about things like maintaining a certain relative social status, or perhaps governing your relationships with the opposite sex.

It is really really really important to understand, however, that these are NOT hardwired things, and everybody ends up with different ones, wired partly by personal idiosyncracy and partly by circumstance. We end up with lots of basic subnet structures in common because we have common needs as humans, we statistically speaking have lots of similar experiences, and because there are only so many ways to respond to something that occur to us when we are children. But obviously, the size and content of my “make jokes at parties” subnet is going to be different from someone else’s.

This seems obvious if we talk about jokes or tennis, but it’s easy to miss when we start talking about childhood traumas and what you believe you can accomplish in life, or what have you. Don’t be distracted by the contents of your subnets, and above all, do not personalize. If you have a subnet that encodes behavior or attitudes or feelings that you don’t like, do not think about it as being part of “you”. It’s just a self-organizing neural network that formed in response to various stimuli. You are not stuck with it, and you can refactor it. But you need to understand how to do it in a way that works, not the way that doesn’t work.

What Doesn’t Work

First, let’s talk about what doesn’t work. Willpower. The first thing that happens when we don’t like the output of a subnet is that we decide to do something different. If the subnet we’re modifying is relatively new and un-entrenched, this is fairly easy to do, because we are more likely to be making a congruent decision, where every affected subnet agrees on the decision.

“Whoa! Stop right there,” you might be saying. “You mean I can’t change a subnet that doesn’t agree with my decision to change it? What the hell good is that?”

Stay with me. I’ll address that, I promise. First let me finish explaining why not getting a subnet’s agreement doesn’t work, and can’t possibly work. Then I’ll explain how to refactor subnets so they agree with you. As it turns out, there is a beautiful symmetry to the system, a kind of safety factor that helps ensure that random screwing around with your operating system doesn’t crash your “sanity process”. 🙂

Anyway, agreement isn’t a very good metaphor anyway. Let me come at this from a different angle. Your brain is a parallel processor that has no erase function. When you decide to “do something different”, you may congruently believe that the new thing is what you should do. But, you are trying to create a new subnet from scratch that isn’t connected to any of your existing behaviors. It’s just an idea, and it doesn’t have much in the way of support. In the meantime, your decision does nothing to erase the existing subnet, which is still running, all the time. So you get competition.

Life is Not A Workaround

Now, if you have enough willpower, and you’re smart about it, you can work around this limitation. First, you can try to tough it out, and stick with it until you’ve built up a new habit. And, you can build in a parallel or downstream subnet, by noticing triggering behaviors and building alternate responses. An AA member calls his or her sponsor or goes to a meeting in order to avoid drinking. He or she avoids situations likely to trigger the drinking response, and so on.

This is a really tough road to slog, because all of this manipulation leaves the problem subnet completely intact. People in “recovery” have to basically live the rest of their lives in it, because they aren’t really “recovering”, they’re simply using workarounds to avoid encountering the “bug” in their programming. It’s understandable that people would use these techniques if they were the only tool available, but fortunately they are not. “Once an alcoholic, always an alcoholic” is a truism only by definition; it is the process of recovery that ensures its permanence.

(I’m sure I’m going to get angry emails and comments about my apparent disparaging of the AA religion, but please don’t bother. Just remember that I’m saying 12 step programs and other behavior modification processes are workarounds. Sure, they work, but actually fixing the bugs would be much, much better. The part of those processes that establish the “recovery forever” dogma are there to help people understand that the workarounds are not a permanent fix. This does NOT mean that there are no permanent fixes, only that the “recovery” concept is not one. Also, if you’re going to commit to using the workaround, it’s counterproductive to wonder about possible fixes, so it’s emotionally much safer to believe in a dogma that says there are no fixes. Then you can stop worrying about whether you’re doing the right thing and commit to the workaround. This does not mean, however, that you have to go around trying to convince other people to use the workaround even if they can get a fix for what ails them; that’s the point at which it stops being a useful crutch and becomes a religion.)

Anyway, so now you hopefully see why downstream workarounds create internal conflict, and require a lifelong struggle to get somewhere. The subnets you have aren’t going anywhere, so creating new subnets doesn’t do diddly except set you up for future “slips”. Sorry, but that’s just how it is.

What you can do, however, is refactor the subnets from “upstream”.

Let me back up a second, because I just realized I’ve been talking about upstream and downstream like everybody knows what I mean. Some of you may not have read The Multiple Self, and in any case I was never really that explicit about it to begin with. In that post, I implied that we had lots of independent processes whose inputs and outputs were chained. Thus, a “downstream” subnet is one whose inputs are dependent on the outputs of an “upstream” subnet.

Upstream is In, Downstream is Out

Whenever a new subnet is created, it tends to be downstream of existing subnets, for a variety of reasons, but mainly because the kind of “situation” the subnet is created for is probably one that already existed before, and there’s already a subnet there to recognize that situation. So, at the minimum, it will be downstream of the subnet(s) that identify the context for the behavior, and the ones that identified the goal for the new behavior.

The upstream/downstream relationship is somewhat dynamic and not entirely one-way. But it does help to explain why new subnets have relatively little leverage compared to an established subnet in a given functional area. Most likely, your awareness that you wanted to change your behavior was based on the output of the behavior, combined with some other subnet that evaluated the results. So, almost certainly, any attempt at behavior change is going to wind up wired downstream of the behavior itself!

“Okay, okay,” you say. “So how do we build a new subnet, upstream of the existing one?” The short answer is that you don’t. Instead, you just add new inputs to the existing subnet. This is a much cleaner way to refactor, and it’s also a much safer change, less likely to destructively destablize your “program”.

In computer programming, to “refactor” a program is to change its structure in such a way that its behavior remains unchanged – to “clean it up”, in a sense, but without trying to fix any bugs or add new features. Refactoring yourself is almost the exact opposite: you change your behavior, but without changing your existing mental structures!

You simply feed the “program” new inputs that produce different outputs. The entire subnet structure “downstream” of your intervention point is not changed, at least not directly. The difference in inputs will probably cause some downstream rewiring (as in my Self 2.0 case), but these are not changes that “you” make. Instead, they come about organically, as a result of your built-in ability to rewire your responses.

This might seem like a bit of a paradox. If your system can rewire itself organically to make things run smoothly, how do you ever get into a problem to begin with? Part of the answer is that most of the time, you don’t! Most people have thousands upon thousands of behaviors that were wired up for them automatically and which work perfectly, but which they never notice or pay attention to! As for the rest of the answer, I don’t want to sidetrack for a detailed discussion, but the short answer is “local optima”.

Or in plain English, perhaps a better way to put it is that your subconscious is quite good, but that doesn’t keep it from painting itself into a corner on occasion! In particular, the long-term consequences of a “design decision” it makes often don’t show up until the wiring is quite entrenched and hard to change because so many downstream things are depending on the original decisions. Once a subnet or set of subnets are sufficiently self-reinforcing, they may no longer even be responsive to external feedback that would tend to change them!

Anyway. Back to the inputs. You need to make a change in the inputs until the output changes. Or as I put it in my email to the person who wrote me the other day, “You have to bring your current insight back into the state of mind you had when you made the original decision. Otherwise, all you’re doing is setting up two conflicting networks, not editing the original code.” The key then, is to go backward in time and mind, to access the upstream state where the initial parameters of the problem subnet were established.

Unfortunately, however, I’ve run out of writing time for this evening, so I’m going to have to leave you hanging here. Before I finish explaining how to go back in time and mind, I’m going to need to also explain what you need to take with you when you go, and also what you’re looking for. I’ll also show you how all this stuff links back to the themes of Self 2.0 and my various articles about making decisions that stick, going beyond the dry theory of subnets and TOTE loops to issues of personality and hopes and fears and meaning and humanity and all that kind of thing.

But first, I wanted to lay the technical groundwork here, so that you will understand the difference between what I’m actually talking about, and all the dozens of crazy theories that people put forth in their comments and blog postings about The Multiple Self.

 Remember what I said back then: if you decide that what I’m saying is something that you already know, you are throwing away your chance to learn something new.

(Note: I wouldn’t dream of interfering with anyone’s individual choice not to learn, but I do ask that people not bother posting another round of “oh, this is just X” comments. The people who did that the first time can perhaps be excused just once, but anyone doing it this time is simply stroking their ego in public and expecting the rest of us to watch. What’s more, their actions distract others from learning, too. Sadly, being the class know-it-all can be just as detrimental to others’ learning as being the class clown. However, if you post “I thought this was just like X and then I thought it through and here are the things that are different”, or other things that are both thoughtful and helpful to others, then thank you for participating! I look forward to hearing from you.)

Join the discussion
  • I’m not sure I understand how you can change the inputs without triggering the next TOTE. For example, if all you’re doing is adding inputs, the loop is triggered once the initially required inputs are met. That would mean that you can’t add to the input. You could make sure that not all the inputs are satisfied (don’t walk into a bar in your example).

    Instead, what about changing the outputs? The smokers rubber band around the wrist is an example. The craving cycle starts, you snap the rubber band, and eventually rewire yourself to relate the start of a craving with pain.

  • Hello,
    Very interesting stuff, thanks for sharing what your most precious things.

    Excuse me if I go off topic,
    but I didn’t heard from NLP before, google drives me to http://www.cs.ucr.edu/~gnick/bvdh/print_nlp_strategies_3.htm is that the same thing (I’d whish to know more about it)

    Now the subnet theory has common points with interactivism, the research topic of mark bickhards.
    About this, interesting reads to begin with in http://www.lehigh.edu/~mhb0/pubspage.html :
    1. Interactivism: A Manifesto.
    2. A Process Model of the Emergence of Representation.
    3. others according to your taste 😉

  • “””is that the same thing (I’d whish to know more about it)”””

    It’s definitely related. One of the most confusing things about most of the popular NLP literature is that it’s a seemingly-unrelated mishmash of techniques. However, most of those techniques are simply *ways* of making upstream edits, that work better or worse in various situations. What I want to do in this series is present a model (or metaphor, if you prefer) for people to know enough of how their brains work to design their *own* ways of making upstream edits, and to focus on techniques that work for “single user” mind hacks, not ones for therapists to use with clients. Most of us are not therapists. 🙂

    What’s *new* about what I’m presenting here is the model. I’ve been reading NLP books for over a decade and not really been able to put much of it into use. The understandings I got that led me to write “The Multiple Self”, however, and the work on the subsequent articles, has led me to a different understanding about *how* the mind works. I think if you understand that, you’ll be able to invent new ways of making edits, if you want to.

    The model I’m presenting here is one that explains how most of the best-known NLP techniques work, including the Squish, Phobia Cure, Six-Step Reframing, New Behavior Generator, Collapsing Anchors, Future Pacing, Reimprinting, etc. These are all ways of doing upstream edits, and I will probably touch on them briefly in a later article.

    However, these techniques are more complex than what I’m trying to explain here, because they’re all for somebody to *assist* another person in making a mind hack — often without the subject knowing that that’s what you’re doing!

    Collapsing Anchors, for example, is usually a “covert” technique designed to allow you to help someone link a resource subnet in to a problem subnet, without letting them even know that’s what you’re doing. If you’re working on your *own* mind, you don’t necessarily need a lot of the extra baggage in these techniques.

  • “””I’m not sure I understand how you can change the inputs without triggering the next TOTE.”””

    That’s because I haven’t explained it yet. 🙂

    I’ll give you a hint, though: the trick is, neurons have a refractory period. That is, a period where, after firing, they are temporarily inhibited from firing due to a need to build up a charge.

    This is the ultimate secret of mindhacking. Without this principle, intentional subnet edits might well be impossible. Interestingly enough, humor would also be impossible, but I don’t plan on getting into that part much.

    Edward De Bono has some good books on it, though, including The Mechanism Of Mind, which is where I first learned about the refractory period and its consequences for changing the set of a pattern. I read it a very long time ago, and the idea stuck with me, but it’s only recently that I put all of the pieces together as to how the principle is utilized by NLP and how you can use it in your own mind.

    Both my “intellectual-emotional link” hack and my “self 2.0” hack were done with a simple application of this principle that I hinted at towards the end of this article. In one of the next articles, I’ll explain it in detail.

  • Your articles on this topic are so interesting, at the end of one it’s like a “to be continued” on your favorite show (or the end of every _Lost_ episode…).

    I know it’s a lot of work to write so much, but know that it’s worth it. You model is remarkably coherent and useful, and has given me tools to take better care of my brain.

    Please explain the rest when you can.

  • I’d just like to second what “anonymous” and others have said above: this is all fascinating, and I can’t wait for more.

    I came to this blog originally for the python stuff, but I stick around for the personal refactoring info.


  • Hi,

    How does one sustain the dissociation? Realisation between you and yourself comes, in flashes, but stays only a few moments. Yourself never seems to go away. So how? Tips?


  • How does one sustain the dissociation? Realisation between you and yourself comes, in flashes, but stays only a few moments. Yourself never seems to go away. So how? Tips?

    I’ve found that the flashes of insight and “getting it” last longer and come more often as more time goes by. Just realize that you’ve “lost it”.

    That last part is hard. Quite often, you don’t realize you’d lost it until after you get it back.

    I’ve learned to recognize my having lost it by feeling my level of happiness and my level of unsatisfied curiosity.

  • To the author,

    Great work, I was also investigating my own mind and building a model.

    Your model rings true and has given me flashes of insight that last for quite a while. However, my memory is weak and, just like in Counter-Strike, it’s difficult to feel coherent unless you keep a bunch of concepts in mind at the same time.

    I get distracted by other theories a lot. Distractions that trigger deep internal thought that make me lose coherence. Theories that also ring true, like the theory of the holographic universe and the holographic nature of the mind:


    I don’t know much about holograms but maybe you do. Is there any way your model can integrate the holographic model or are they destined to be seperate? Sort of like general relativity and quantum mechanics are both true but seperate.

    Whatever you do, don’t get distracted by my post before you finish your “The Refactored Self (Part 2)”. It’s great stuff and I need a good model so I can stop searching, be content and start doing.


  • To Anonymous:

    Yes, I have realised that it gets better with time. Progress happens non-monotonically. But I can’t remember that I have “lost it” or even recognise that I have “lost it” most of the time. “Level of happiness and unsatisfied curiosity”-hmm. Sometimes it is hard to remember what the comparison feels like; what it was like to be in the “know” state.

    Somehow, it was easier before.

    Thank you for your response. Happy New Year.

    Dec 27, ’05

  • You’re welcome and happy new year.

    I just wanted to add something to how you recognize the state you’re in. Whether you’ve lost it or you get it. I was focusing too much on the negative before, the “lost it” was too much the focus of your and my post.

    It’s still a bit vague for me too and it’s harder to get there than to simply recognize that you don’t have it anymore but it feels like flow state:


    I sometimes get flow after playing computer games intensely and becoming an expert at them. This feeling is remarkably similar to the state you feel when you’ve got every sub-network of your brain working in congruence. In gaming you have no choise, you either get all your nets going in the same direction or your performance goes down.

    Answers come easy to me and every idea that bubbles up has a high level of logic to it. You know that something’s going to work before/while you’re doing it. Everything feels effortless, even interaction with your built-in sub-networks (instincts) is effortless. There is less hesitation in movement and speech. There is no more frustration.

    In short, you have a high level of efficiency.

    I also want to mention that there are two kinds of joy. The dopamine joy and the serotonine feeling of happiness.

    The dopamine joy is the jolt you get from flashy video, buying something, most drugs (dope) etc. The happiness that gives a big jolt but doesn’t last long.

    The serotonine feeling of bliss is the feeling you get from interacting with friends, flow state and I think it feels a bit like cannabis. It’s the more serene
    “everything is in order in my domain and I’m looking for new things to discover and enjoy” kind of happiness that lasts longer but is less intense.

    That’s the feeling I was describing as an indicator of being “awake”.

    I know it’s harder than just being like you were before you started looking intently at yourself but the prize at the end is worth it in my opinion.

    How to get there is what this site is talking about (Self 2.0, The refactored self). Knowing why your instincts are like they are now also makes it easier to recognize “decisions” made by you or yourself. Evolutionary psychology describes instincts well and a big part of it is sexuality.

    Happy hunting and wish me luck.

  • Hey again asterisk, I just finished reading this page:


    And it contains a much better description of “getting it” or being in the “know state” than I’ve ever written. For example:

    Peak experiences

    “Feelings of limitless horizons opening up to the vision, the feeling of being simultaneously more powerful and also more helpless than one ever was before, the feeling of ecstacy and wonder and awe, the loss of placement in time and space with, finally, the conviction that something extremely important and valuable had happened, so that the subject was to some extent transformed and strengthened even in his daily life by such experiences.” Abraham Maslow


    “Pure spontaneity consists of free, uninhibited uncontrolled, trusting, unpremeditated expression of the self, i.e., of the psychic forces, with minimal interference by consciousness. Control, will, caution, self-criticism, measure, deliberateness are the brakes upon this expression made intrinsically necessary by the laws of the social and natural world, and secondarily, made necessary by the fear of the psyche itself.” (1968, p. 197.)

    This describes exactly what I personally mean by “getting it” or “flow state”, although flow state from gaming seems to be missing some “knowledge” and love for and connection with all humanity.

    This is probably what you experienced after reading “The Refactored Self Part 1”.

    Yesterday I had another Peak Experience (in Maslow’s words) when I read this:


    It describes how the brain contains multiple selves that live in different frequencies of brain waves (that’s what I read in it) and only the “myself” that lives in the infrequently firing neurons is able to remember things.

    Sound familiar? Sounds to me like the “fast me” is the “hacker me” and the “slow me” is the semi-permanent system it’s hacking by converting it’s thoughts from “fast” to “slow” so they can be remembered.

    This blog talked about “tagging” thoughts so they are remembered or executed. Maybe that’s the same as making thoughts ready for consumption of the “slow me/myself”.

    Anyway, hope you’ll experience the same as me because it was great, have fun.

  • The below is spoken like someone who doesn’t do Yoga, Alexander, Feldenkrais, or the like

    “Luckily for you, all that “hand-eye co-ordination” learning you did as a kid took care of wiring up enough “primitive” TOTEs that you don’t worry about any of it, and those TOTEs can just be used as subroutines by higher-level TOTEs.”

  • This is a great post. What jumps out at me the most is how helpful it is to frame something with a model that is close to the reader's current worldview. I live and breathe computing all day every day, as I have for many many years, and due to that I'm simply primed to understand concepts that follow a similar model. I've found that I can understand my thoughts when I frame them in terms of 'scripts' and then piping their outputs into other 'script' inputs. It just works for me!

    A good model can really drive a lesson home.



Stay In Touch

Follow our feeds or subscribe to get new articles by email on these topics:

  • RSS
  • RSS
  • RSS


Get Unstuck, FAST

Cover photo of "A Minute To Unlimit You" by PJ Eby
Skip to toolbar