v0.1.6: Multiple Identities versus No Identity

Published
Download v0.1.6 for:

Discuss on HN


ZAMM now kind of supports Ollama! You can make individual API calls to Ollama, but you can’t chat with Ollama on the regular chat page. Nor does the starting screen show Ollama as an alternative to OpenAI. It’s almost as if Ollama support is just a technicality. If I weren’t working on this myself, I would be suspicious that it’s one of those features made just to tick off a checkbox somewhere. I’ll explain the apparent shoddiness down below.

The data import feature on Mac OS is now fixed. As it turns out, unlike Windows and Linux, the Mac OS file selection dialog doesn’t like it when you ask to filter files by an extension like .zamm.yaml, and it also doesn’t let you select “All Files” instead. So, on the Mac, I just have it filter for all .yaml files instead.

Chat input is also preserved now, so that if you start typing a message on the chat page, navigate to another page, and then return to the chat page, your in-progress chat message will still be there. I had long thought I’d implemented this feature already, but when I realized that wasn’t the case, I finally went and fixed it.

This release is a bit light because I haven’t been programming for the last two to three weeks.


Self-theater

It’s been three months since I last decided I was going to explore the inner conflict between my productive and procrastinatory sides, and I have to say it’s been rather hard to introspect. My procrastinatory side doesn’t appear to want to voluntarily engage in a discussion over its needs and wants. The procrastinatory feelings will temporarily subside when I’m attempting to observe them, almost as if they’re hiding from an audit. But when I then attempt to start work, I’ll end up acting out in other ways — I’ll find myself heading to the kitchen to fix up a snack, or to the bathroom to relieve a sudden urge to pee. I’ll open a tab for Board Game Arena, then I’ll close it, then I’ll notice myself opening another tab for chess.com. Cute.

It gets worse because the very act of introspection can become a target for procrastination. The very act of saying “Okay, I’ll wrench myself away from the immediate desire to read the latest news updates in order to observe why I have such a strong desire to scroll through increasingly obscure news” can require a nontrivial amount of mental effort and restraint, and some days it’s just easier to say, “Fuck it, I’ve had a long day. I’ll indulge now and introspect later.” It’s an almost beautifully recursive problem.

But then a friend, sensing that I was perhaps suppressing both sides of the conflict, helped me set up this exercise on page 36 of the book Self-Compassion by Kristin Neff, which itself appears to be an adaptation of an exercise pioneered by Leslie Greenberg:

In this exercise, clients sit in different chairs to help get in touch with different, often conflicting parts of their selves, experiencing how each aspect feels in the present moment.

To begin, put out three empty chairs… Designate one chair as the voice of your inner self-critic, one chair as the voice of the part of you that feels judged and criticized, and one chair as the voice of a wise, compassionate observer. You are going to be role-playing all three parts of yourself — you, you, and you. …

After the dialogue finishes — stop whenever it feels right — reflect upon what just happened. … A truce can be called in your inner war. Peace is possible.

As my productive side, which I’ll call Productivity, I promptly started ranting at the procrastinator in me. “Why the hell are you always getting in the way? Just stop always getting in the fucking way, man!” The words tumbled out as easy as fruit from an overflowing basket that finally got tipped over.

Then, I switched seats — and as I did so, the switch in perspective was immediate and total. I just felt so… dreadfully tired. “Hey man, why do we always gotta fight, huh? … sigh … Why can’t we just let things be?” It felt really good to just sit back in that chair and relax. As Procrastination, I was so exhausted that I didn’t really feel like saying much, but instead just sat there, sighing and relaxing and marveling at how great it felt to truly rest for once.

I switched back to Productivity’s seat. The rage instantly switched back on, and the tiredness was replaced by frenetic energy that left me pacing around rather than sitting. I shot back, “Because, DUDE! I want to be doing things, and you’re always sabotaging me! What the fuck is it that you want?”

Back to Procrastination’s seat. All the rage and energy left, and a deep, deep weariness settled in their place. I slumped in my chair and weakly sighed, “I just want to rest, man… I’m just so… tired. Tired of doing things. Tired of fighting. But this chair just… feels so good to sit in.” Sigh.

I tried out the mediator role. I was sitting on the comfy couch, with a soft blanket wrapped around me. I felt so regal despite having been brought into existence just a few seconds ago. I had the productive side acknowledge and appreciate the procrastinator for knowing when to rest and just go with the flow in life, and I had the procrastinator acknowledge and appreciate the productive side for being the driving force that gets Amos to learn and make new things.

Productivity was still angry: “Look, I am happy to work on any project, on any goal — but no matter what it is that I try to do, you always get in the way! If there’s a different project you’d prefer to work on other than ZAMM, then tell me about it and we can do that instead. But no — the truth is, you have absolutely zero vision for Amos’s future!” Procrastination was still tired: “Ahhh, can we just… chill and enjoy this moment right now? It’s just so nice… You always live so much for future goals that we never get to actually enjoy the present… You know, I’m actually okay with doing anything, so long as it’s enjoyable and engaging, but the things you’d have us do are neither enjoyable nor engaging.”

Mediator me tried to point out the obvious solution: “Let’s find something to do that is both fun and meaningful to Amos!” That turned out to be easier said than done. It’s been a few months now and I have yet to rekindle a passion for any software projects, ZAMM or otherwise. But this experience does lead me to several nearby thought islands that I want to record my visits to.

Plurality

I had never experienced such a piece of self-theater before. The all-encompassing perspective shift between the chairs in the room took me by surprise. I rolled with it in the moment, but after that exercise was over, I was stunned that it was even possible. Holy crap! I didn’t even know part of me felt that tired and craved true rest so much.

Unfortunately, I haven’t since been able to replicate that experience to the same level of intensity. I don’t know if it was having an audience there that made the piece of self-theater feel all the more real, or if it was perhaps a good dose of inebriation that helped me get into the mood for theater, or if it was even just the layout of the chairs and the openness of the space that contributed to a feeling of emotional openness. Nor do I know how much of that was “real” — did I actually successfully tap into the inner motivations of two different parts of my mind and get them to interact with each other for once, or was my brain’s language center just acting like an LLM and making up plausible-sounding dialogue to simulate such a scenario? I only knew that I had gotten a small taste of a weird but promising experience, and I wanted to see if I could get more where that came from.

The experience reminded me of the concept of “plurality” that I was introduced to a few years back through the Irenes and their Plural Playbook. From what I understand, “plurality” is a way to reclaim the negative stigma that medical terms like “dissociative identity disorder” places on individuals with multiple personalities. I don’t know if it was indeed artificially induced plurality that I had experienced, but this seemed like the most promising avenue for researching whether or not I could reliably induce that phenomenon in myself. I came across tulpamancy as a way to create other sentient beings inside your own mind, as this Reddit post warns. I’m not saying I take that Reddit post’s assertions at full face value, but I’m also not dismissing it out of hand. If an LLM is potentially a simulator of different potential beings rather than a single being itself, perhaps it’s possible that my own physical brain is merely a substrate for potential consciousnesses rather than a single consciousness itself.

I didn’t get very far into my research. I wasn’t sure if the seemingly subconscious Procrastination is a proper “tulpa,” since the term seems to refer to mostly artificially induced headmates, and in any case Procrastination successfully sabotaged attempts to do further research into this, perhaps because it prefers its usual silent self.

Ego death

For me, this does raise the question around what exactly identity is. One year old me had much more in common with other one year old humans — past, present, and future — than he had with me. He acted like other one year olds, thought like other one year olds, lived like other one year olds. In a certain sense, just about the only thing connecting him and me is a continuous strand of identity running through the decades. What is that strand?

In the past, I have considered my socioeconomic circumstances not truly “me,” because I don’t get to fully control and define those circumstances. Taking this train of thought further, my body isn’t truly “me” because I don’t fully control it either, as evidenced by people who have bodies with diseases they never asked for. My body is just a mask through which I interact with the rest of the world. My subconscious isn’t truly “me” because I don’t fully control it. It’s just a mask that takes care of a lot of behind-the-scenes interactions. I don’t even get to pick my thoughts — they just bubble up and I deal with them when they do. But when I take off all these masks to find the real “me” who is in complete control of his reality, I find that there’s nothing at all. There is no me. I don’t actually exist. It’s all just masks, all the way down. (I originally got this masks analogy from a different context with The Gervais Principle, but I like it better in this context.)

Alternatively, there’s the train of thought that goes that “society” doesn’t exist, it’s all just people. It’s akin to saying that atoms don’t exist, it’s all just quarks. An “atom” is just an abstraction over quarks, a way for you to easily reason about an entire clump of quarks at the same time. But if you’re able to reason about all the quarks separately, at no point does the idea of an “atom” need to enter the picture. And molecules are just abstractions over atoms, cells abstractions over molecules, and we ourselves are just abstractions over cells. Take away each of my cells, and there is no “me” left. I am nothing more than an idea, an idea that’s a necessary convenience for all those ignorant observers that cannot reason about each of my cells separately. But physical reality is not ignorant about me like other humans are. I don’t actually exist in physical reality; I exist only in the minds of ignorant observers such as myself.

But why shouldn’t an idea be “real”? A quantum mechanical system is fully described by its wavefunction. In a sense, it is its wavefunction. And what is a wavefunction but a mathematical construct, an idea? Perhaps all of physics is just the result of mathematical operations applied to mathematical constructs. If physics is real, then so is math, and if math is real, what isn’t real anymore? I do actually exist. I am real. (Alternatively, “I think, therefore I am.“)

Ideas are real. I used to think it was silly that the economy — and all the physical actions it entails — could grind to a halt based on arbitrary numbers like stock prices. But if you realize that the modern economy is a giant machine that uses these abstract numbers as its gears and levers, it’s no wonder that the machine shudders when a cog slips out of place from where it’s supposed to be. In a sense, the abstract idea of the central bank’s interest rate is as real as a hurricane is in forcing physical economic activity to slow down. In a sense, money is more real than electrons. For millenia now, countless humans have had to understand money on some level to interact with their societies, but until recently nobody had to know anything at all about electrons to survive.

In the original ZAMM, Pirsig had written about his experience recovering from ego death (although he didn’t call it that) after a session of eletroshock therapy:

“This looks like a hospital,” I said.

They agreed.

“How did I get here?” I asked… The man said nothing and the woman looked down. Very little was explained.

… [There was] a slip of paper from the probate court telling me that some person was committed as insane. Did they mean me?

It was explained to me finally that “You have a new personality now.” But this statement was no explanation at all. It puzzled me more than ever since I had no awareness at all of any “old” personality. If they had said, “You are a new personality,” it would have been much clearer. That would have fitted. They had made the mistake of thinking of a personality as some sort of possession, like a suit of clothes, which a person wears. But apart from a personality what is there? Some bones and flesh. A collection of legal statistics, perhaps, but surely no person. The bones and flesh and legal statistics are the garments worn by the personality, not the other way around.

But who was the old personality whom they had known and presumed I was a continuation of?

… He was dead. Destroyed by order of the court, enforced by the transmission of high-voltage alternating current through the lobes of his brain… I have never met him. Never will.

Who was that previous Pirsig? If he was just an idea, then that idea is now dead, replaced by a new idea inhabiting that body. But only one idea is dead — that which he calls his “personality.” Another idea — the collection of legal statistics around that physical body — has survived.

I’ve once accidentally encountered ego death too. I got so intoxicated that concepts started collapsing in on each other. Like a true programmer, I saw that one thing was merely an instance of another in a different context. Similar, but different, and therefore both could be combined into a still more fundamental idea. All this compressing, this reductionism, got me to start forgetting things. I forgot where I was. I forgot who I was. I forgot what I was. Time and space and even the very concept of being a “human” ceased to have any meaning. All remaining boundaries between me and the rest of reality coalesced into a single monolithic duality. Breathing in and out. Yin and yang. True and false. Existence and non-existence. Eventually I forgot even about existence itself, and with that final boundary erased, there I was: One with the universe.

It is fitting for this loss of individuation to be called “ego death.” After all, what is death subjectively, but a return to that Great Unity? That place where “I” no longer exist but also am not dead, because death is only meaningfully defined in contrast to life. Death is real in this universe, but “I” had already left this universe for a total nothingness where there was no life to be dead next to. “I” was simultaneously everything that ever was and ever wasn’t, and nothing at all.

Zero kissed infinity. The kiss lingered on for an eternity that flew by in an infinitesimal instant. And so it was that I started detaching from the Great Unity — a single shard of consciousness just starting to remember the concept of existence, but not yet the context in which it existed. It was Rawls’ veil of ignorance applied to the space of all possible realities. I ended up finding myself in a reality where all these concepts of money, social status, beauty, personality, religion, ideology, so on and so forth, existed — but with no idea yet how I related to all those. I had recovered a mental map of reality, but not my coordinates on that map. I could not cast aspersions on the inhabitants of any region of that map because I might well end up being one of them.

When I did finally recover my map coordinates, I understood that there existed a brain at this particular junction of crisscrossing causes and effects in physical spacetime. That brain had temporarily rebooted and was starting to spin up its cognitive processes again. Eventually, some shard of consciousness or the other, without any say in the matter whatsoever, would have to be slotted to this brain here. For better or worse, I was that shard of consciousness. Here I found myself with a grand inheritance from the previous shard of consciousness that was slotted to this brain. I buried the dead shard next to its unfulfilled hopes and dreams, so that it may finally rest in peace.

Was that just a cheap mental trick to create a clean break with the past? Yes, of course it was. My ego death was nothing more than the death of an abstraction. But abstractions are real, and that’s why the death of an abstraction can result in meaningful changes caused by nothing more than the death of that abstraction. This death is being “born again” for Christians, allowing you to rise up from your baptism having shed off all the guilt of the person you once were, because now you know better and will do better. This death is the “new homunculus” in Replacing Guilt: Minding Our Way wherein you close your eyes, pretend you’re arriving in this body for the very first time, and shed any unproductive goals or expectations you inherited from the old inhabitant of the body. (Disclaimer: I’ve only read a friend’s summary of the book.)

Abstractions are real, and so is my identity — even if it is just a strand that can be snipped off in any arbitrary spot.

Productivity: From protagonist to part of the problem

As part of this journey to better understand and work with myself, I stumbled on the Betwixt game by Hazel Gale. If there’s one really useful insight I gleaned from that game, it’s that I always feel rushed to accomplish things quickly, and yet despite all that rushing, I never feel as if I have enough time. If there’s a second useful insight, it’s that I’ve been taking the perspective of Productivity by default for so long because it’s been much more willing to engage in verbal dialogue and to verbally justify its desires.

In reality, although Productivity may be more verbal than Procrastination, it certainly isn’t any more forthcoming about its true motivations. Whereas Procrastination will continually find new ways to non-verbally sabotage the goal, Productivity will continually find new ways to verbally justify that same goal. For example:

  1. Initial experiments with LLM-based productivity boosts proved quite promising, but clearly a lot of refinement would be needed to make this actually practically useful. The GUI version of ZAMM would be a way to build this properly from the ground up, rather than relying on a hacky mishmash of the unstable (at the time) langchain, ICE, and vcrpy. Since the proof-of-concept had been built in less than a month, the proper GUI version would surely reach the same state in just a few months. At this time, there was no pushback.
  2. As the months dragged on and progress turned out to be slower than expected, the new justification was that we were obviously not putting in enough effort. The proof-of-concept already existed, so clearly what we’re attempting is entirely possible. Every single bit of delay is pushing back the sweet, sweet payoff we’re going to get from getting back to where we were with the proof-of-concept, and it matters that we get there sooner rather than later because contributions at such a seemingly pivotal moment in history, where our skills are still relevant but not yet obsolete, could potentially have an outsized impact on our legacy. Through the strength of determination and willpower, Productivity was able to temporarily overcome Procrastination and ramped up to spending a couple months of full-time work on ZAMM. Progress was still not fast enough, but when Productivity tried ramping up even further, Procrastination took over with a vengeance instead.
  3. Eventually, I came to question the need to leave behind a legacy. (I got there at the end of January but didn’t properly blog about it until May.) The new justification was that getting ZAMM done would allow us to finally program free of an uncooperative subconscious that’s always complaining about how annoying it is to program. (In retrospect, it’s unclear if the annoyance is actually coming from Procrastination, or if it’s a result of Productivity’s need for speed.) At this point I was in a stalemate where I did a little bit of coding on most days to satisfy the productive side, and distracted myself with games in between coding sessions to soothe the procrastinatory side.
  4. When I was no longer convinced that ZAMM would allow me to magically avoid my inner psychological conflicts, the new justification was that work on ZAMM could instead do the complete opposite and trigger the then-dormant mental conflict, so that we could finally figure out how to get Procrastination to stop its constant complaining. It was as if Productivity was the Japanese navy in WWII, looking for an ultimate showdown with which it can decisively defeat the American enemy for once and for all. Like the Japanese navy, Productivity kept losing every showdown it was in fact able to find.

As it turns out, Productivity is great at framing the situation so that its goals are the obvious default that don’t even need to be questioned, and Procrastination is the annoying saboteur that is always messing everything up with its obstinate refusal to work. “I” am the one trying to deal with unruly Procrastination, because I identified completely with Productivity. But it takes two to tango, and Productivity is also partially responsible for the conflict through its continual dissatisfaction with the amount of work put in. (When I was a kid, my sister said that it takes two hands to clap, and so I wished I knew how to snap my fingers to prove her wrong.)

This became obvious when I asked when Productivity would finally be happy with the amount of progress being made. That’s when I realized the answer was “Never.” After all, I had made it all the way to 8 hours of daily work for a brief stretch of time in Melbourne, but progress was still too slow then. As Productivity, I was still looking for ways to squeeze out further efficiency and output: perhaps I could take a shorter lunch break, or perhaps I could get started with the day quicker. The better thing to do at that point would have been to re-evaluate project direction, but I had been focused on dealing with my old foe Procrastination for so long that I kept on assuming they were the problem. Well, I suppose in a way Procrastination was indeed the “problem,” in that they were doing their job by refusing to walk any further down a path that is clearly not producing the expected tangible results. But that only made it clearer to me that the obvious problem was with Procrastination refusing to work.

Liza has mentioned that the emotional energy you bring into an activity is often times the same energy you’ll get out of it. For example, if you’re working out at the gym because you feel insecure about your body, chances are good that you’ll still feel insecure about your body after working out. Or as another example, the original ZAMM notes how we do science to escape from falsehood to absolute truth, but in doing so we discover that our new absolute truths are knocked down as falsehoods even faster than before:

But there it was, the whole history of science, a clear story of continuously new and changing explanations of old facts. The time spans of permanence seemed completely random, he could see no order in them. Some scientific truths seemed to last for centuries, others for less than a year. Scientific truth was not dogma, good for eternity, but a temporal quantitative entity that could be studied like anything else.

He studied scientific truths, then became upset even more by the apparent cause of their temporal condition. It looked as though the time spans of scientific truths are an inverse function of the intensity of scientific effort. Thus the scientific truths of the twentieth century seem to have a much shorter life-span than those of the last century because scientific activity is now much greater… What shortens the life-span of the existing truth is the volume of hypotheses offered to replace it; … And what seems to be causing the number of hypotheses to grow in recent decades seems to be nothing other than scientific method itself. The more you look, the more you see… What this means logically is that as you try to move toward unchanging truth through the application of scientific method, you actually do not move toward it at all. You move away from it! It is your application of scientific method that is causing it to change!

This is of course not to say that science produces no progress whatsoever. As Isaac Asimov says in his essay The Relativity of Wrong:

[W]hen people thought the Earth was flat, they were wrong. When people thought the Earth was spherical, they were wrong. But if you think that thinking the Earth is spherical is just as wrong as thinking the Earth is flat, then your view is wronger than both of them put together.

Instead, this is just to say that if what you seek is absolute certainty, doing science does not actually bring you any closer to satisfying that emotional need.

I think this applies to me here too. A false sense of urgency from Productivity made me feel as if I had to rush to code, but rushed coding did nothing to assuage that false sense of urgency. Even if that sense of urgency sometimes allowed Productivity to force a win, Procrastination will make sure to take it even slower from then on out, until the temporary gains from the productivity win are completely erased. Even then, the slow pace will continue until frustration builds up enough for the productive side to force another win again. This cycle of failure can apparently apply to larger teams as well:

To be clear: Crunch Mode is not a long term strategy. It is a shock tactic and an expensive one at that. Following Crunch, productivity will dip, morale will temporarily suffer.

Just because “crunch mode” for me involves working a comically low 15 hours a week doesn’t mean the mental effects don’t apply to me all the same. And yet, despite the drastic recent dip in productivity, I’m glad I got this internal conflict to play out. Whereas the balance before felt like an unsatisfactory false peace, I now no longer feel quite as caught between a side that does not me rest, and a side that does not let me work. The conflict was ironically making me absolutely exhausted despite the lack of output.

I still don’t know what the answer is. It’s most certainly not to completely indulge Procrastination: if I let it run amok, it could mean I don’t get fed for the whole day because I can’t even muster up the will to so much as place a food delivery order. But repressing it hasn’t worked for me either. The same is true for the productive side: repressing it leaves life feeling meaninglessly hedonistic. But just as there is no rush to work on ZAMM, there is also no rush to work on myself. This has been real progress, and I am grateful for that.

I used to feel frustrated at my seeming inability to do more experimentation with LLMs. It’s understandable to have tried and failed at something, but what’s absolutely insane is to not even try at all. I felt as if sometime in the decades to come, a young person will hold me responsible and ask, “So, how come you didn’t do your part for the AI revolution? You were there. Why didn’t you contribute?” This is of course just a projection of my internal emotions, because “what other people say” would only bother me so if I agreed with them on some level. But it was a question I didn’t have an answer to. “I don’t know man. I was right there, but I procrastinated through the whole thing. It was crazy.”

Now, I feel that I can honestly say I tried. I truly tried, but I didn’t know enough about software project management or self-sabotage to do a more effective job than what I have done. The lack of output is not proof that I never tried; the mental exhaustion is proof that I did. The most “impact” I’ve had was with helping some amount of people (however many people 717 stars on GitHub imply) visualize their langchain workflows with Langchain Visualizer, and I don’t feel especially proud of that one given that it was just a cheap hack gluing together other people’s disparate software packages. And it’s okay that this is all the impact I’ve had. Knowing that I genuinely tried changes my personal narrative from one where I’m crazy and inexplicably lazy to one where I’m just another human being figuring out my first go at life.

Resetting expectations

Past the first month or two of work on the GUI version of ZAMM, I’ve pretty much been continually griping about how it’s been X months already and ZAMM still doesn’t actually do anything. It’s always on the cusp of being able to do something real soon, I just need to spend another month or so getting past the current annoyances and then the coast will finally be clear for tackling the problems that I’ve been fantasizing about tackling for so long. But if I am to honestly look back at the last year of work on the GUI version of ZAMM, I can see that the track record is regularly littered with broken promises of “Just a little more and we’ll be where we want to be, for realsies this time.”

It still feels this way. I literally have a branch in progress for recording terminal sessions. Finish implementing the capability to run terminal sessions, implement the capability to edit files as well, and that’s it! We’ll literally be right where we were with the commandline version last year! This time it’s definitely the real deal like never before. But I remember how it felt just like that all the previous times too, and I must reluctantly admit that the evidence weighs strongly against my present perceptions. It’s as if I am General Westmoreland during the Vietnam War, confidently assuring the President of the United States that we’re literally this close to winning the war, just a little bit more manpower and it’s done. It’s as if I’m experiencing a Zeno’s paradox of software engineering, wherein progress is continually being made and the goal is continually getting closer, but never actually reached.

It’s clear now that the sense of frustration over ZAMM not doing anything useful will linger on for so long as it’s still not doing anything useful. This sense of frustration is a major drag on my morale and motivation, so it should be alleviated by making ZAMM do something — anything — useful, as soon as practically possible. The previous approach of building an app “right” has not worked. There’s just so many damn little sharp edges, such as the ones in this very release over the Mac OS file selection dialog and chat input preservation, that need to be rounded out if I want a truly polished app. I think it’s time instead for an approach where I make it work before I make it work well. That’s why I haven’t bothered to make Ollama work with chat: because I don’t actually care about chat. Chat was a feature that was bolted on just so that ZAMM does something at all other than navel-gazing with its own settings and database infrastructure.

In retrospect, I was embarassed to release something to the world that was obviously janky. I had heard of the saying “If you’re not embarrassed by the first version of your product, you’ve launched too late,” but like much wisdom in life, this was impossible for me to appreciate until I learned the lesson personally. Now I can appreciate that a polished but useless app is no better than a very rough but useful app. It helps that there are no users to be embarassed by. Of course, if I had started out from the outset with a janky app, continually interacting with that might have been a real drag on morale as well. Perhaps the grass would have been greener on the other side no matter what decisions I started out with. (All this is not to say that ZAMM is polished, but that it is a lot more polished than it might have otherwise been.)

The fact that I’ve managed to spend a whole year on this project (half a year before the v0.1.0 release, half a year since then) and still not have an MVP ready to even demonstrate what I’m trying to do, means that this has been unequivocally a failure on my part to manage this project properly. Oh, the shame, the stupidity, the —

Hush, now. Those were the failures of a dead Amos. The ego that believed in that false optimism is now dead, and in its wake lies a sense of mourning and loss. There’s no need to exhume the dead and place them on trial for all their mistaken judgments, as the Catholics did to Pope Formosus. We’ll just take what lessons we need from the dead for the journey ahead of us, and let them rest in peace next to the expectations that had served them in life.

Running

I’ve started training for the Angkor Half-Marathon, scheduled for December 1st. I really enjoy the coaching from the Nike Run Club app. I’m convinced that Head Coach Bennett is the greatest living philosopher of our times. He gives running advice that “is about running, but is also not about running.” For example:

  • Consistency is key to great running, and consistency comes with loving running and being flexible

    • I’ve known that consistency is also necessary for long-term software development, but so far I’ve mostly tried to obtain consistency through what little iron-willed discipline I possess.
  • As such, running should feel great. If you can make sure the run is enjoyable for you, you’ll naturally want to keep going back to it.

    • This is clearly something that I’m trying to relearn with coding. I’ve been making it into too much of a productivity thing and not enough of an enjoyable thing.
  • If your runs always feel hard, that means you’re trying too hard. Some runs are meant to be easy.

    • I don’t know if I could apply this to my former work days, where every single goddamn work-from-home day felt like a real challenge to get through. But perhaps it can be true about personal side projects like ZAMM: not every day of work on ZAMM needs to feel like a tiring full day of work for it to be meaningful.
  • Great runs make you want to come back to running, and you have great runs not by chastising yourself for falling short of an imaginary ideal that you’ll never meet, but by celebrating every bit of the run as it happens. Don’t wait until the end of the run to celebrate the fact that you went on a run; celebrate the start of the run at the start of the run, and celebrate the end of the run at the end!

    • It is counterproductive for me to feel bad after each coding session because I once again fell far short of my expectations, because then I associate coding with negative emotions. Rather, it would make more sense for me to feel good during and after each coding session.
    • As hard as it is for me to do, I should also celebrate finishing Khmer vocabulary practice on any given day, even if I procrastinated on it for hours and finished it way behind schedule. The version of me that does all his studying on time simply doesn’t exist yet, so it doesn’t make sense to focus on how much I’m not that person.
  • The effort guides the pace, not the other way around. In other words, don’t aim for running a kilometer within a specific time, but aim for running, say, “strong and confident” at a 7 out of 10 effort, or “fast but still in control” at a 9 out of 10 effort. “Effort” will naturally adjust to your current progress and how you’re feeling on any given day; pace does not.

    • This is also something that I am trying to learn about coding: I should stop giving myself performance reviews (even informal ones), stop denigrating the paltry amount of progress I’m making, and start appreciating the amount of coding time that I’m able to give to myself on any given day.
  • Each run has a purpose. Some runs are easy runs, to get you moving while you recover for the more intense runs. Some runs are speed runs, where you push yourself to discover your newfound limits. And for that matter, each level of effort you put in during a run also has a purpose.

    If you’re asking for a 3 out of 10 effort from yourself, why? If you understand that you’re running slow because you’re trying to recover for the next speed interval you’re running, then you’ll naturally know whether your effort is congruent with your purpose. If you don’t understand why you’re running so slow, you may end up running too fast to recover properly.

    • What am I coding for? At first, it was because I wanted to see if my vision for ZAMM could work out. But as the months dragged on, that appeared increasingly unlikely. Then, three months ago I hit on the idea of coding in order to bring my inner conflict to a head so that I might properly study and resolve it. Insofar as that was the goal, it was actually more efficient and effective for Procrastination to increasingly refuse to code at all. I have yet to find any other motivation to code, and therefore have not been coding for the last few weeks.
  • How many intervals do you have left if you have 8 intervals to run in total and you’ve run through 4 of them already? The answer is one. You always only have one interval left to run.

    • Be present and focus only on tackling the current task ahead of you. I’ll think of one thing I need to code — oh but then that will require building out functionality in this other place, and that requires a refactor of these other components — oh it’s all so much!

      But nay, there’s only ever one task ahead of me. I’m guessing that if I find this one task meaningful, then it won’t be too hard to do it. So far I’m coming around to the idea that if I don’t find my next task meaningful, perhaps it doesn’t truly need to be done, especially in the context of solo projects. If I don’t find it meaningful to write a unit test, perhaps it’s okay to take the risk of not writing it.

  • Every run is an opportunity to learn more about yourself. Even if it didn’t quite turn out the way you expected it to, you still learned something about yourself, and in doing so became a better version of yourself.

    • Yet another thing I could learn to do when coding. Often, my self-reflection stops short at “Ah, once again I didn’t end up doing that much today.”

In any case, it turns out I have to cut down greatly on my training due to plantar fasciitis. Fucking fascists, man. This sucks, but perhaps I’ll simply have to run a 10k or even a 5k instead of the half marathon.

Khmer

Sometimes, my progress in Khmer feels palpable even to myself. I was successfully able to negotiate the police fine at a traffic stop down from $15 to $5, although that was also helped a lot by my ex-roommate getting on his knees and begging the police for forgiveness. Even if my connection to Cambodian society is still rather superficial in numerous ways, the connection that I do have to this place is made obvious by contrast once I visit a foreign foreign country, like Vietnam, where I can’t speak the language or read any of the signs at all. Returning home to Siem Reap felt like slipping back into a comfortable place that doesn’t feel entirely alien anymore because I am able to at least have basic interactions without resorting to English. Using English makes me feel foreign and helpless in a way that even conversing poorly in Khmer doesn’t make me feel.

At other times, when someone doesn’t understand what I’m saying at all, it can feel as if I haven’t made any improvements. All my vocabulary and grammar knowledge ultimately translates to zero successful communication when people don’t understand a lick of what I’m saying. This is why I really need to work on my pronunciation as my biggest bottleneck to better communication.

I would love to get past the point of just making polite small talk, and get to actually hang out with people. But perhaps I’m getting ahead of myself once again. Running a marathon isn’t about race day; it’s about the entire months of training beforehand. My progress has been slow but steady, and now I can look back and feel like I can genuinely lay claim to being a foreign language learner.