v1.1.2: Vulnerability, War & Coding

Published

Vulnerability

A little while back, a friend of mine expressed wonder at how I’m able to be so vulnerable online. I didn’t really think of myself as being particularly vulnerable at the time; am I really saying much of anything that can and will be used against me? There are of course some who are completely open about who they are, to the point of even letting others read their “super-super private” diary. I have a much stronger sense of privacy than that. How many of the events in my private day-to-day life can you actually reconstruct from these public entries?

And yet when I look back on recent blog posts from this year, I find that a strong sense of cringe prevents me from rereading them until more time has passed. Look at me, discovering super basic life lessons that I should have grasped long ago, heralding them with all the excited naïveté of an innocent child, as if they were the deepest revelations to mankind since sliced bread.

But why shouldn’t I approach life with the child-like wonder of one of today’s lucky 10,000? I am after all still a very young Adult — not “adult” in the legal sense of being at least 18 years old, which was a meaningless milestone I have long since surpassed, but “Adult” in the psychological sense of finally taking responsibility for the outcomes of my own life. For example, my past attitude towards my struggles with motivation and productivity had been to go to a therapist and have them fix it for me: “I got mental issues, and you’re the person who’s supposed to fix my mental issues, so just tell me exactly what it is I need to do and I’ll do just that. Ideally, you give me some pills to pop, I pop them, and that’s that.” And when even the experts responsible for fixing my issues for me failed at their task, what more could I do? I languished on in learned helplessness until circumstance led me out to a place where I can finally recognize the futility of outsourcing all care for my health to healthcare professionals. No, healthcare professionals are at best trustworthy advisors. It is my responsibility to actually care about my own health, my responsibility to obtain satisfactory healthcare outcomes for myself, whether they be mental or physical. The buck stops here, not with my faulty advisors.

You don’t know what age you’ll be once you finally wake up from being a Puer Aeternus. Some find themselves waking up at far too young an age, having had adult responsibilities traumatically forced upon them by their lot in life. I found myself to be a 29-year-old infant Adult, and I’ve been continuing to grow since then under an infantile sense of wonder befitting an infantile Adult.

A friend once pointed out to me how the cringiest things are often the very things that we just grew out of, as if we cringe in order to distance ourselves from our most recent selves that we’re so clearly not anymore. That seems to describe my cringe pretty well. Pick just about any paragraph I wrote from a few months ago, and my attitude towards it will likely be somewhere along the lines of Pah, that was so very few-months-ago me. I don’t stand by it anymore, at least not in the same exact way. If I were to talk about that topic now, I would definitely frame things differently. Even if the facts should still happen to be identical, the feelings have diverged, and it is cringe for me to be reminded of the extent to which I had unironically inhabited certain perspectives.

Yet I suspect that it’s impossible to drill down so deeply into the present without hitting such time-dependent truths. The exercise of great care in the selection of long-lived intellectual positions requires a certain level of detachment from the passion of the present moment. If each blog post is a faithful high-fidelity snapshot of me in a given month, then it’s to be expected that with the passage of time, these blog posts of old will come to speak for me as little as photos of old do.

Even knowing this, I find myself compelled to write as truly as I possibly can. If I cannot speak for my future self, then neither can my future self speak for me. Someone has to stand up and represent me as I am now, to make it absolutely clear that there does indeed exist a person who unironically believes such things as I do, who therefore acts as I do and feels as I do. I exist, and my existence is to be contended with, not merely brushed aside as a trifling inconvenience for some future me looking to streamline the contours of his personal narrative. This is the trail I find myself on for this messy trek through life, and this is the footprint I wish to leave behind this month, as cringe as it may come to look once the mud dries.

But if a record of personal history is the motive, why not keep such essays private instead? After all, I don’t get that same sense of cringe coming across my private notes from the past, outdated though they may be. It’s as if the cringe is only there as a repudiation of a public proclamation; if there is no public proclamation, there is no need for an act of public distancing either. Still I write and still I publish, because nothing else serves as a sufficiently strong catalyst for me to really think through and crystallize an idea in a concise, concrete manner as much as writing for a potentially public audience does. Even if the audience is likely to be empty, the mere fact that a random passerby could randomly stumble in and observe my performance means that I am unwilling to put my name on anything of insufficient Quality — and the fact that these serve as a compact repository of sufficiently high-Quality information means they’re all the more useful to myself than the random slop I let myself get away with in my private scribbles. I understand now that I am a person who benefits greatly from having external structure in his life, and these public-facing monthly blog posts are at this point in time important load-bearing pillars of self-reflection and affirmation.

The Meta

And here I go again, endlessly questioning and then justifying my own behavior to myself. I started with a feeling of cringe, and I ended with a consoling explanation to myself of why the cringe is actually not so cringe. But why such skittishness around whether I’m doing the right thing or being a cringey fool? Why not have some self-respect and simply unironically own it? Why not just do things for no reason, just ‘cause, instead of overthinking it and searching for some solid theoretical basis to ground my actions in?

One obvious reason would be that I greatly enjoy furthering my understanding of myself and my own psychology. Why is it that I do some things and not other things? Fleshing out the first-order reasons as I’ve done in the first part of this essay is really quite fun, and fleshing out the reasons for the reasons as I’m doing now is exactly the sort of meta-level thinking that I deeply dig. One of my favorite cybernetic diagrams is this one from Wikipedia:

Second-order cybernetics diagram

which comes with the corresponding explanation:

Most specifically, and especially where phrased as the cybernetics of cybernetics, second-order cybernetics is the recursive application of cybernetics to itself… A key concept in second-order cybernetics is that observers (and other actors, such as designers, modellers, users…) are to be understood as participants within the systems with which they are engaged, in contrast to the detachment implied in objectivity and conventional scientific practice. This includes cyberneticians inclusion of themselves in the practice of cybernetics, as well as the inclusion of participants within the consideration and design of systems more generally.

In other words, the top part of the diagram is the usual understanding of cybernetics: you’re engineering a system and modeling it as a set of inputs and outputs, with feedback loops connecting the output as yet another input into the system. The classic example is that of a governor on a steam engine: if the governor detects that the steam engine is going too fast, it restricts the valve, and vice versa, causing the steam engine system as a whole to dynamically adapt to conditions in order to maintain an approximately constant engine speed. The cybernetic engineer is completely separate from the system; they act upon the system from without, as if they were a god.

The bottom part of the diagram is a meta-understanding of cybernetics: the cyberneticians Wiener, Bateson, and Mead (the ones who drew that diagram) are themselves part of the feedback loop of the entire system of “cybernetician plus the base system the cybernetician is working on.” The cybernetician takes the observed output of the base cybernetic system and loops it back into the input data from which they engineer the base system, causing the cybernetician-and-base-system system as a whole to dynamically adapt to conditions in order to maintain approximately working functionality. The cybernetic engineer is a fundamental part of the overall system acting on itself from within. The entire field of cybernetics could itself be modeled in this way: cyberneticians have a theory for how cybernetics works, but then they observe the results of applying theory to practice, and in doing so update their working understanding of how cybernetics works.

Along these lines, I fancy myself a model train builder who’s building a miniaturized model railway system of the entire universe inside my own head. It’s very incomplete, and it has a number of erroneous details that I am currently unaware of because many of the reference materials I’ve consulted have themselves been inaccurate in subtle ways, not to mention all the errors I’ve made myself in interpreting those reference materials. Inside that miniaturized model railway system is a tiny little miniaturized model of me, sitting in a miniaturized train car. There’s only so much detail that my shaky metaphorical hands are capable of sculpting via the scapel of intrapersonal Socratic dialogue, but one of the details I am capable of adding is that of a recursive version of miniaturized me sculpting myself inside of an even smaller miniature world. It is perhaps questionable how much practical benefit I stand to gain from attempting to sculpt myself with such accuracy, but like most hobbyists, I engage in this hobby simply because it’s inherently enjoyable to do so.

The Meta-meta

And would you look at that: me questioning and then justifying my own overthinking to myself. Why must I justify my own overthinking? Why not simply overthink and own that? But overthinking without overthinking my overthinking is exactly what led me here in the first place! Oh, the delightfully ironic recursiveness of it all. Yes please, more dopamine hits from overthinking! Trigger that reward circuitry!

The Meta-meta-meta

But really, there is a continual pattern of “Why am I acting this way?” as if I am secretly worried that I might be doing something stupid or wrong, followed by a rationalization for why it may actually be reasonable for me to act this way. It is not the act of introspection that is a problem, it is the underlying sense of implied anxiety behind the introspection that gives off an air of defensiveness around the whole thing, as if I am constructing ramparts of impenetrable logic to defend myself from hypothetical assaults on my self-expression. Perhaps I am finally self-conscious that I am being vulnerable online after all, or else there would be no need for such psychological defenses.

Perhaps this is an expression of the anxiety of finding myself all alone for the first time in my life, an anxiety borne not out of loneliness but out of making life choices on the daily without anyone around me to reassuringly validate that I am not majorly fucking up my life. I can now drink myself to oblivion and pass out on the streets overnight without anyone knowing or caring. What am I doing still staying out here all by myself? I can stagnate in life without anyone knowing or caring. That is truly terrifying.

I’ve not come face-to-face with such intense anxiety in a long time. But I have much better tools than ever to say hello to Anxiety, my old friend, how have you been? Welcome back, buddy. You can stay as long as you’d like; mind you, I don’t have a big space here, but we’ll find a way to settle in together and make ourselves all cozy and comfy.

Is Anxiety the best roommate I’ve ever had? No, I wouldn’t say so, not by a long shot. But a friend in need is a friend indeed, and so long as I got a home, Anxiety’s got a home.

The Meta-meta-meta-meta

Now if I take yet another step back, I find that this is a great example of the way in which my mind wanders during meditation. I enter meditation in some way with some initial intention, perhaps the intention of allowing myself to feel and observe my own feelings, to be vulnerable and connect with myself. Ah, vulnerability… now all sorts of thoughts start bubbling up that are related to the philosophical concept of vulnerability. Before I even know it, I’ve embarked on a mental escapade that I eventually drop back out of an unknown amount of time later and…

Right. Meditation. How did I get so distracted? Ah, it was that thought pattern that keeps cropping up in these ways. What an interesting one that is… and before I even know it, I’ve embarked on yet another mental escapade.

Sometimes the thought loops lead me full circle back to meditation — Oh, right, that’s the reason why we’re meditating right now. And since this is where I now find myself, this is where I’ll start meditating once again.

War

Have you ever driven somewhere to visit family? Have you ever done that with your wife and kids in the car? The kids start complaining about wanting something to munch on, so you pull into the nearest convenience store. You wait in the car as your wife and kids leave to pick out their favorite snacks; all you want from there is a bottle of iced coffee, and you’d rather not bother with unbuckling your seatbelt if they’re going to fetch it for you anyway. You drum your fingers on the steering wheel, thinking about all the errands you still have to get to later this week, thinking about your boss getting on your case about that one project at work, thinking about what a long night it will be with relatives, thinking about —

The entire convenience store explodes. You’d been living the dream life with a beautiful wife and beautiful kids, but it felt so quotidian to you, you didn’t even realize what you had until it completely vanished in an instant right in front of your eyes. Gone, just… everyone’s just…

Gone.

They’re gone.

Someone out there experienced some version of this in real life. I can’t even imagine how that feels; I can only try to imagine the car trips that I myself have been a part of, except that they somehow ended as nightmarishly as this one did. I mean, what the fuck, man? How do you even find the will to live after that? I hope I never have to be even half as strong as this man is.

Towards the end of last month, a little conflict sparked up between Cambodia and Thailand. I say “little” because it’s small relative to all the other conflicts that have existed and are existing, but even a “small” conflict will still easily be the biggest thing that’s happened to a lot of people’s lives. This is apparently the very idea behind the title of the book All Quiet on the Western Front: the main character is killed on a day of the war that is so utterly unremarkable, the full report from the front lines back up the chain of command was “All quiet on the Western Front.” Even trivial military conflicts result in untold grief and human suffering.

Air strikes

On the 24th, I was hanging out at a friend’s home and heard what sounded like very loud thunder. Lightning and thunder strikes are common enough during rainy season here in Cambodia, so I didn’t give it much mind until someone asked whether it was thunder. We went outside onto the balcony and heard what sounded like military planes flying around. I must say, there is a certain primal dread in hearing the awe-inspiring deep rumble of potentially hostile aircraft without being able to see them in the sky at all. You’re painfully aware that extreme danger is lurking nearby, but you have no idea when or where it might strike, and there’s simply no hiding from modern weaponry when all you have around you is flimsy civilian construction.

We all calmed down as soon as we verified on the weather app that there were also definitely a lot of lightning strikes happening in the distance, some of which we could even see with our naked eye. Siem Reap is quite far from the front lines, so it couldn’t have been the bombings we read about on the news. Besides, we saw no plumes of smoke rising anywhere, so nothing within our line of sight was hit, and that’s saying a lot given how flat Siem Reap is.

At the same time,

  1. The sky was sunny and clear of storm clouds all around where we were at
  2. The noise of the thunder lasted a good bit longer than what I’m used to
  3. The thunder sounded like it was coming from a few hundred meters away, whereas lightning strikes on the horizon are usually silent at that distance
  4. The plane noises did not sound at all like what I am used to from commercial airliners
  5. We don’t really hear commercial airliners flying overhead in Siem Reap anyways
  6. Cambodia has no air force to speak of except for some old MiGs that don’t even appear to be operational anymore, so it’s quite unlikely to have been friendlies

A Russian friend of mine who was in Siem Reap at the same time recounted how he was in a sauna that day with some Khmer guys. When the thundering booms rolled in, the Khmer guys all started shouting, neither in panic nor celebration but simply as a great accompanying outburst of energy. So it was definitely a widely perceived phenomenon that day.

Both that Russian friend and another Ukrainian friend mentioned how the “thunder” sounded just like the noise from when Russia blew up the ammo dumps near Kharkiv a few years ago. They claimed that such large explosions can be heard from 100km away, which I found a bit hard to believe, so I tried doing some research into that claim.

I found one source stating that artillery and tank fire can travel “often ten miles or more,” but that’s only 16 km or more. Later on, that source also states that an explosion of 5 lbs of C4 can be as loud as 120 dB just 2 km away from the blast, and if the attenuation of 1 dB per kilometer at the 30 Hz frequency described there is constant, that does work out to the sound attenuating over 100 km to being just as barely audible as a whisper is. At the same time, it’s very common for conventional bombs such as the Mark 82, described as “one of the smallest bombs in current service,” to contain hundreds of pounds of explosives, and if an ammo dump is hit, perhaps the resultant explosions are a great deal louder than 5 lbs of C4.

I found another source that detected infrasound from an explosion 127 km away, although infrasound travels way better than humanly audible noise.

As for the plane noises… the F-16 is supersonic and has a service ceiling of 50,000ft. It seems the sonic boom path extends an extra mile away for every 1,000 ft in altitude, and 50 miles works out to only about 80 km.

Meanwhile, the distance to the temple from my friend’s home in Siem Reap is around 125 km:

Distance to Ta Muen Thom from Siem Reap

It’s unclear to me where exactly Cambodian military positions were relative to the temple, so it’s possible the actual explosions were closer than the 125 km distance to the temple itself. That being said, I just don’t see a simple way to make the physics work. (My undergraduate degree in physics has long rotted away from disuse, leaving me with a complete state of ignorance around the proper modeling of acoustics in such a situation.)

Perhaps a different approach would be more fruitful. Checking my timestamps, I had sent a text to my friend at 4:25 PM saying that I was coming up his stairs. Then I found this article, published on the 24th:

At about 5pm today, the Royal Thai Airforce launched a second round of strikes on Cambodian military targets, south of the Ta Muen Thom ancient temple in Phanom Dongrak district of Surin province.

The timestamps match up. We had heard the “thunder” after hanging out for a short while.

A couple days later, I talked to another friend who said she heard a “hoo-hoo” sound the night before. When I asked her for more details, she confirmed that it was low-pitched and sounded like wind, but also not quite like wind. The description matches the plane noises I’d heard on the day of the first bombings. We’d never heard such sounds before in Siem Reap, and now multiple of us started hearing them right after the start of the conflict.

All I have is circumstantial evidence. The physics doesn’t quite seem to add up, at least not with the information that I’m given. But with the circumstantial evidence that exists… I’m personally inclined to think that maybe, just maybe, the highly unusual sounds we heard that day were in fact jets and bombs. Perhaps our collective relief at discovering lightning strikes so distant that we had to look them up on the weather app was just us grasping at straws to deny the reality that we were actually witnessing in real life the terrifying sounds of modern warfare.

Fighting over the family estate

Living in Cambodia, it is completely obvious that it was the Thais who started the whole thing. Anyone capable of reading the local Khmer news can tell beyond a shred of doubt that the Thais are the undisputed aggressor here. You know it, your neighbor knows it, the person at the local bar knows it. There is a shared sense of justified indignation at having suffered such unprovoked attacks, and a shared fear over what it might mean for the local economy.

I am sure that for those living in Thailand who are capable of reading the local Thai news, the opposite is just as obviously true. One can hardly fault fans for being insufficiently objective when it comes to their home team; when has anyone ever booed a referee for ruling unfairly in their team’s favor? I don’t mean to both-sides this conflict; I think most everyone in both nations will agree that there is in fact a right side and a wrong side to this conflict, even if they vehemently disagree on which side is which, just as China and Taiwan do for their own conflict. But I can appreciate now why there is so much anti-war media that centers on the raw experience of war itself rather than the political impetuses behind war. Wherever our origins may have been, once the bombs start exploding, we find that we have ventured into a truly regrettable dimension of human existence.

The conflict — at least the public parts of it, for who knows what private spats the key decision-makers on each side may have between themselves — revolves around the historical temples on the Thai-Cambodian border. Now, I am well aware that there are many who would gladly sacrifice their lives to preserve the sacred symbols of national heritage and cultural pride. But is this what the ancestors would have wanted? This is where I am going to demonstrate the incredible thickheadedness of an American who lacks even the smallest shred of understanding that other cultures have values vastly different from mine — but bear with me if you will for just a moment, and consider that those who built Ta Muen Thom about a thousand years ago are mathematically likely to be the ancestors of every single person in the region today (expats excepted).

Imagine that you die happy after a long and satisfying life where you got to see all your kids grow up healthy and strong. Then you hang around for a little while longer and watch in horror as your children begin murdering one another over your legacy. If you could speak to them, what is it that you would want to say to them? Wouldn’t you tell your kids to forget all the accomplishments you’ve ever achieved in life? Wouldn’t you rather they razed everything you ever did to the ground than to keep on stabbing each other in a never-ending cycle of violence? Wouldn’t you plead, “Just please stop killing each other over the inheritance. Please. I’m damn proud of what I accomplished during my lifetime, but now it’s your turn to live yours, and… look, none of what I did in the past matters anymore. Just, please just go and live a good life and forget about me, okay? You, all of you, are my beautiful legacy more than anything else in this world, and it deeply hurts to see you care more about the physical remnants of my handiwork than each other.”

Perhaps I’m projecting my own modern sensibilities onto ancient cultures. Perhaps that’s not what the ancestors would say after all.

Or perhaps, in spite of all the rhetoric around history… perhaps this is not truly about the ancestors and how great they were, but instead about each respective population’s present sense of identity and how much that present identity rests on perceived ancestral greatness. Perhaps even if the ancestors were to beg, their begging would fall on deaf ears, because it’s not about them, it’s about us and our present identitarian needs.

Incidental artifacts

I’ve hacked a little more on the latest CLI-based incarnation of ZAMM. This is by far the worst code I’ve ever been responsible for; I would be ashamed to put my name to it if it weren’t for the handy excuse that most of the slop is AI-generated rather than the product of my own poor taste. I should be more diligent in reviewing and cleaning up the AI’s code, but when the AI spews out a ton of crap that turns out to be exactly what I asked for in terms of functionality, there is a great temptation to avoid wading through the crap and simply forge on ahead with the next feature. The problem of course is when the AI finally sputters out, unable to make any more forward progress without manual intervention, and manual intervention at that point becomes far less pleasant than it would’ve otherwise been.

But there are positives too to this hands-free vibe-coding approach. My main response to the AI code so far has been to simply say “Ugh, I don’t like that” without stopping to think deeply and make hard choices around what a better codebase would actually look like. I can still make those choices now while having more data to work with (data on what I want the program to actually do) and working tests to fall back on, ensuring that every little change I make preserves existing progress and functionality.

As always, work on ZAMM provides a great opportunity for introspection. Why do I keep returning back to this idea when all of my previous approaches keep turning out to be fatally flawed? There’s something about the end vision for the project that makes it a continual source of tantalizing software crack for me.

My track record on this idea has been truly atrocious. I remember how I’d started on the very first iteration of this idea in my early twenties, thinking that I would automate programming in some fashion with natural langauge, starting from parsing English using a small context-free grammar to generate working code and then building things up from there. I didn’t even try to do that with machine learning because I’d trained under an advisor (who by the way is a very friendly person who I have the utmost respect for; it’s fitting that he should be the one who invented the digital smiley face) who was all-in on the symbolic methods of GOFAI. Mere statistics could only take you so far, we reasoned; at some point, you need actual understanding, not just statistics, if you want to get to real AI. Just as the pendulum once swung away from neural networks before swinging back when they proved their worth, surely the same would happen for symbolic reasoning once progress with neural networks stalled out again. But the scaling hypothesis appears to be much truer than we thought, and more statistics and less symoblic logic was in fact the right way forward.

(The story I heard around neural networks was supposedly that the scientific community read too much into mathematical proofs of the impossibility of learning XOR with single-layer perceptrons. Even multilayer perceptrons with linear activation functions would fail due to their reducibility back down to a single-layer perceptron: a layer of neurons with linear activation functions is equivalent to straightforward matrix multiplication, and given the associativity of matrix multiplication, multiplying by a series of matrices is equivalent to multiplying by a single combined matrix. Despite the fact that the field of computer science by and large gave up on perceptrons, some small number of true believers kept that little corner of the field alive until major breakthroughs occurred and neural networks were suddenly all the rage again. Sometimes, there can be value in sticking to your guns even when everyone else has moved on. But also, maybe the story I heard is somewhat apocryphal.)

Looking back now, the idea that I would’ve replicated GPT on my own is laughably absurd. I mean, holy fuck dude, how did I ever think I could tackle such a massive fucking project by myself, and that too using puny hand-driven chisels when GPT itself required racks upon racks of industrial-grade matrix computation machinery mowing down internet-sized sets of data? Talk about grossly overestimating my own capabilities and grossly underestimating the immense undertaking required. I made the classic mistake of assuming that just because some tasks are trivial for a lot of humans (walking, reading and writing natural language, basic coding), there must therefore be some simple and easy way to program them into machines. Knowing what I know now, I’m glad I failed, or else most of my time would be spent on proudly making sure my LLM-equivalent software stayed competitive with the rest of the LLMs out there.

Then, more recently, I tried to do it again with a Tauri-based app. I figured that since the hard part of converting natural language into code could now be outsourced to the LLM, all that was required now was putting a pretty wrapper over the LLM with some tool use. All you needed was to create a terminal tool and a file-editing tool for the AI, along with some human supervision over AI actions. The main thing of concern would be getting the UI to look and behave exactly how I wanted.

Looking back now, the idea that I would’ve replicated Cline, Aider, Cursor, Amp, and countless others in this field, all on my own while messing around with completely custom UI, is laughably absurd. I mean, holy fuck, the UI is the simplest part of that, and even that I spun my wheels on so much I never even got to the actual interesting part of an AI coding agent. Serves me right for writing off UI work as trivial; it continually felt trivial even as I was working on it, but a large collection of trivial things still adds up to pretty consequential sums. How did it take so long for me to finally realize and accept the obvious fact that I was not at all on the right track? Knowing what I know now, I’m glad I failed, or else most of my time would be spent on proudly making sure my custom coding agent stayed competitive with the rest of the coding agents out there.

But the crucial part was that I tried. I tried every time. It was necessary for me to really try put in the effort before the sum total proof of work grew large enough to move me off the main blockchain of a strong Bayesian prior on an unrealistic ego. In each case, it still took a sufficiently strong catalyst to get me to re-evaluate my own capabilities, not just in coding but also in project scoping and management. Without that proof of work, I would’ve fallen back on the easy excuse of “Ah, if only I’d truly tried, I would’ve made it big. Pity that I was always too lazy to have ever tried.” I needed to have put in so much effort that that ego-protective excuse was no longer believable even to myself.

Perhaps I’ll fail yet again, as I’ve failed so many times before. Perhaps this is once again not the right time for the ZAMM pipe dream to come true. The hard part of code-editing with an AI agent can now be outsourced to the many AI code-editing tools out there; I’ve even outsourced text editing to VS Code, and preemptively outsourced change tracking to Git. Yet it’s possible that what remains is still far too big of a chunk for me to bite off by myself. Perhaps one day, someone will build the whole damn thing, and ZAMM will just become my personal reskin of what someone else built. Perhaps I’ll be glad that I failed, or else most of my time would be spent on proudly making sure my custom AI-powered codebase management tool stayed competitive with the rest of the AI-powered codebase management tools out there.

But I can’t find out unless I try, and if I try, I’m guaranteed to find out more — about how I work, about how I get and stay motivated, about how to code and manage a codebase with AI, about how to scope and manage software projects, and about a lot of other things that I might only come to realize with hindsight. And unlike previous attempts at ZAMM, I understand that this attempt is just play. I picked it up on a whim, wondering how far I could get with just vibe-coding ZAMM. I can put it down on a whim again at any time. It doesn’t matter what happens in the end with this iteration of ZAMM because it is just for fun — and conversely, distancing myself from it by treating it as play is the only way I’m willing to work on ZAMM now, given my traumatic history with its past failures. (“Trauma” sounds bad, but it isn’t necessarily bad. It’s just a learned adaptation to negative events in the past.)