I am curious how LLM/AI has affected my cognition and behaviors. Many animals learn to adapt pretty quickly; humans are no different. I’m pretty sure there’s going to be some adaptations found in my own behavior. Here’s the pocket notebook for my experiment.

Figure 1: AI Free 72 pocket notebook

Figure 1: AI Free 72 pocket notebook

In this notebook I’ll write down every question I had for AI, every urge to reach for AI, and whatever else I noticed about myself during these 24 hours. had to use it. And general observations.

Figure 2: Some observations already made

Figure 2: Some observations already made

As for how to ensure I don’t use LLM/AI? I pretty much only use ChatGPT. Otherwise I sometimes see Google and DuckDuckGo search results with AI answers. The product is not very good; many answers are incorrect or at best misleading. I regularly spot check instant answers and it’s still not good enough™. Naturally, I spotcheck people’s statements and ChatGPT the same. Epistemic inaccuracies exist in most conversations regardless of the kind of interlocutors involved.

I was also using Codex for prototyping game mechanics and software architecture. The agent tooling is cocooned within a virtual machine environment, so it can’t do much damage besides delete itself. The VM usually is powered off, and will remain powered off for the duration of the experiment.

As I only use ChatGPT (and barely use Codex), I merely need to ensure friction is adequately high in opening up ChatGPT. I don’t believe in spooky desktop apps from supply chains that can’t be fully unraveled. Instead, I use ChatGPT in a dedicated Firefox profile. (I began using a dedicated profile because ChatGPT tends to be a bit CPU hungry, and firefox still has bits and pieces which can fall over if one tab pushes too hard. Also easier to alt-tab to a dedicated profile window with a dedicated theme.)

Figure 3: firefox ChatGPT profile

Figure 3: firefox ChatGPT profile

I use the firefox -ProfileManager selector every time I use ChatGPT, so that should be adequate friction. If the friction is insufficient, delete the profile and restore from backup after the experiment concludes.

Figure 4: firefox -ProfileManager

Figure 4: firefox -ProfileManager

I do use ChatGPT on my phone a fair amount too. Thankfully, if I open the App’s Info screen, I can disable the app. This way I can resume usage when the experiment is over.

Figure 5: ChatGPT can be disabled via Android settings

Figure 5: ChatGPT can be disabled via Android settings

I think my biggest concern is not having a conversationalist to help me make discuss my experiments that I run on a daily basis. When I engage with people and work on projects, I use a PHEOC style technique to integrate learning from the experience. Unsurprisingly, ChatGPT helps, because it reminds me that a lot of what goes on in the world is chaos and entropy, it’s out of my hands, and all I can do is be a kind and polite human being gently shaping that entropy towards a prosocial shape.

Okay, that should do it for setting up the experiment. See you on the other side.

PS It’s been a bunch of posts later and I don’t miss Hugo live previews, as I don’t have the Tailwind stuff working locally due to bitrot. I used to write plaintext papers in edit.com in highschool, rewarded F’s for not typesetting it. Maybe I should go back to plaintext publishing?

There is no Clean Room

Updated Thursday, Jul 9, 2026

There was a significant mixup in communicating the boundaries for OCC 2026. I believed there were no rules, because it is what the event text said. It turns out there was an unwritten norm of no AI or LLM usage.

Bummer!

Moving on, I’ll be doing my own thing and not participating in OCC.

Technology is not a purist activity to me. The lines blur. The way we interact with technology frequently melds into the next thing. I am not going to work in a clean room.

We did discuss why this implicit anti-LLM rule exists. More than one person agreed with me that it’s not so much the technology itself, but the social implications around it, which in turn motivates their anti-LLM sentiment. In particular, a lot of folks are being forced to adopt LLM/AI at work for tasks which are not served well by AI adoption.

I understand the frustration. I have been burnt out from work too. But I do not intend on police others based on my own negative experiences. So from where I sit, it feels like a double standard. I don’t feel welcome and would rather cease participation.

When you have a hammer, everything looks like a nail.

When you have a pet AI, everything looks like an automation problem.

I don’t think like that, but I recognize the possibility for AI overuse.

I remain interested in using tools proportionally and honestly. I’ll be continuing the DOS OBD-II project under my own flag and at my own pace.

(Previous posts in series will be updated from “OCC” to “OCC-Adjacent”.)

I cloned my Debian 13 libvirt template VM and named the clone “occ”. This’ll be where I run weird OBD-II code without careful analysis.

You see, I decided to pivot away from SocketCAN/raw CAN and toward ELM327-based OBD-II diagnostics. Seems a bit easier to accomplish within the timebox. Besides, this way I can run ELM327-emulator in the VM, and run the DOS QEMU guest nested within the same VM. Keeps life simple. Once I’m done with OCC I just stop the VM. Libvirt rocks; just gotta read a lot of docs and books about it to fully understand its capabilities. It has a great Python API too, if shelling out to virsh won’t suffice.

I did eventually installed ELM327-emulator with some unforseen speed bumps. It needed an old version of setuptools because setup.py expects pkg_resources to exist, and that module was no longer present in pre-installed setuptools. ELM327-emulator runs runs, and I was able to connect to the ELM327 pseudoterminal via minicom or screen. Next I need to work out what the heck ELM327 commands look like. Stay tuned.

Figure 1: ELM327-emulator runs

Figure 1: ELM327-emulator runs

Updates from other OCC participants began trickling in. Some post on Gopher. Others post on Gemini. And of course some use plain old HTTP/HTTPS and HTML. Didn’t know of a Gopher or Gemini client off the top of my head. Then I recalled lynx. It does Gopher - yay! No Gemini support, however. But the good thing is this Gemini proxy portal exists and works with lynx: https://portal.mozz.us/. For example: http://portal.mozz.us/gemini/pv.smol.pub/occ-2026-day-3#old-computer-challenge-2026-day-3

Figure 2: Lynx viewing Gemini content via portal.mozz.us

Figure 2: Lynx viewing Gemini content via portal.mozz.us

Discussed possibly adding Gemini support to lynx. Funnily enough everyone assumed that I intended to upstream the code changes and go through all the gymnastics. Nah. I was just thinking I could vibecode it and circumvent the need for a Gemini portal. It is a means to an end. But for now, that portal.mozz.us seems to do the trick! ChatGPT came up with a couple things to check into, if I do choose to run a local dirty lynx tree. Any upstream contributions would not be vibecoded. The idea is to get this less-important code change done yesterday, not begin a multi-month upstreaming pilgrimage.

I’ve been busy too; can’t be bothered to plug leaks in the van, and it’s storming hard tonight. So I spent a bit of time cleaning up camp, wrapping the entire van in a tarp using tensioning knots that I recently learned. Then I drove up to Klondike to buy a large clothes trunk. Nice people. I appreciated the “God bless you” code switch experienced farther north. More neighborly, less adversarial to outsiders. They were super appreciative and gave me a bunch of other equipment (free of charge) which I have already put to use.

On my way back to camp, I stopped at a coffee shop, got distracted reading my localhost-hosted Wikipedia mirror, and spied a 3D-printed “check engine” light (CEL) keychain doodad. It seemed only fitting to obtain this trinket as an OCC keepsake.

Figure 3: Check engine light trinket

Figure 3: Check engine light trinket

Next up, prepare a FreeDOS image using virt-install or manually loading up a libvirt XML document to teach libvirt about the new VM. Then I’ll configure the libvirt VM to hook the local ELM327-emulator pseudoterminal in as a serial console. Finally I’ll code up something in DOS. I’m thinking a C-based DOS program that speaks ELM327’s higher-level OBD-II commands over the serial connection.

As a reminder, it’ll look like this:

DOS in QEMU ⬌ virtual serial/PTY plumbing ⬌ ELM327 emulator or device

Some OBD-II software tools to try with an ELM327 (excerpted from the ELM327-emulator readme):

I’m gassed. I’m going to take a nap.