aboutprojectslinkslinks
 

b.l.o.g.

(blogs let others gawk)

October 12, 2026

ASCII Assault: A Post-Mortem

Filed under: AI Rant,General,Unloading — Tags: , , , , , , , — Bryan @ 8:17 am

While deep diving into LLMs I built a video game. A text-based shooter with waves, escalating difficulty, sound effects, and a scoring system. It runs in a browser. You can play it right now (see top comment).

My coding is limited to scripting languages for the most part (PHP for the win).

I can write JavaScript. But I didn’t know the canvas API. Nonetheless I directed the construction of a playable, shippable game.

Here’s how.

I started in ChatGPT. Described what I wanted… a text shooter in the spirit of 1990’s Shootem Up style games (SHMUPS) but in ASCII graphics because I’m not an artist and I wanted to do this all in a single HTML page. ASCII characters as enemies, keyboard-driven, waves that get harder. ChatGPT gave me a working foundation fast. First prototype was up in minutes.

Then the tuning started, and the wheels came off.

If you’ve never made a game, here’s the thing nobody tells you: getting it to run is maybe 20% of the work. Getting it to feel right is the other 80%. And “feel right” is not something you can spec in a prompt. It’s something you know from experience… from decades of playing games, thinking about games, writing about games, and watching other people play them.

The hit detection was wrong. Not broken. Wrong. The escalation curve was too linear. Spawn timing on later waves felt arbitrary instead of intentional. The audio feedback didn’t match the visual rhythm, and the parallax scrolling terrain was a total hot mess.

I could articulate all of it. I just didn’t want to spend days unraveling what the model had created when the next time through the prompt the code was likely to reshuffle (one step forward, two steps back).

ChatGPT started chasing its tail. I’d describe a problem, it would fix it and break something else. We were going in circles.

I set it aside… then later I moved to Claude.

Not because Claude was “better”, but because the project needed a fresh context and a different reasoning style. I ported my intent, not my code. I described what the game was supposed to be, what was wrong, and what “done” looked like. Things that had been circular started converging.

What came out the other end is a real, playable game that I tuned to my satisfaction. I’m the designer, the QA department, and the creative director. The AI was my development team. Two different developers, hired for different phases of the project, managed by someone who understood the product but couldn’t do their job for them.

That’s the skill. Not coding. Not prompt engineering. Knowing what done looks like.

I used my lived knowledge… the kind Google and an LLM don’t have and turned a chatbot into a toolchain.

Many executives I talk to think AI fluency means writing better prompts. No. It means knowing a domain deeply enough to steer the conversation. The model writes the code. You have to know when the output is right even though you can’t read it.

That’s the job now.



Give the game a spin here: https://kitchencloset.com/usr/bin/ascii_assault/ and leave me a comment below on what you liked, any bugs you found, etc…

October 11, 2026

16 months and no resolution…

Filed under: Construction Rant,General,Unloading — Tags: , , , , — Bryan @ 10:18 am
We had a standard ruggedized field laptop for all worksite staff. It could take a beating, including sitting all day in a closed truck cab in Arizona in the middle of summer. Every jobsite with an office had a high-gain wifi antenna covering the site, extending the LAN over VPN to on-site staff.

Solid setup. Worked for everyone. Until we brought in a new field lead.

He seemed fine at his job. But we could not get him to use the computer. He wanted a tablet. That would be the trick to get him compliant with his paperwork.

So I secured a tablet version of the same ruggedized line.

Nope. He needed a stylus.

Got him a stylus. He lost it. And now the tablet was too bulky.

So we went a different direction entirely. My team built web-based integrations that let him do his submission work from his phone. The device already in his pocket.

He used it for a few weeks. Then stopped.

So I got him one of the lighter tablets we issued to office workers.

No. It needed to be an Apple tablet. That’s what all the other trades were using.

We were a Windows shop. Not out of preference. We’d done a full assessment before moving to tablet-based computing and the cost-benefit balance landed us on Surface Pros. They did what we needed at the right price.

I asked him what exactly he was going to run on an Apple tablet that he couldn’t do on any standard system we had. Everything he used was a web-based portal.

That moved to a conversation with one of the company owners, who was going to have to justify the $1,400 expense for what looked like a fit-in-with-my-peers demand.

I’m a platform-agnostic guy. If the tool does the job, that’s the tool. But $1,400 for a new system when we had hardware that exceeded requirements and was already integrated into our infrastructure? That’s a different problem.

He swore that this time, for real, for sure, if we just got him that Apple tablet, he would miraculously become compliant with his paperwork.

The result: marginal improvement. Never really compliant. Separated from the company four months later. The company was left holding hardware nobody needed on a payment contract.

Each individual ask sounded reasonable. Tablet. Stylus. Lighter form factor. Different brand. But stacked together they told a different story (and the phone integration said it all for me). We committed engineering hours to put the work on the device he was already carrying and it didn’t solve the real problem… but I needed to demonstrate good faith accommodation of the request with ownership. It wasn’t wasted effort though as the rest of the team benefited from the updates.

Sigh…

I fully support adapting to meet the needs of your staff. But there has to be a point where you say: this is the line. When the demands are clearly a way to put off doing the work, every concession just buys a few weeks of silence… never the actual compliance.

The diagnostic isn’t in any single request. It’s in the pattern.

October 10, 2026

I pulled out two SegaCD games tonight to sell.

Filed under: General,LinkedIn,Unloading — Tags: , , , , — Bryan @ 10:18 am

Not because I wanted to.
Because creditors don’t accept Venmo requests to the universe.

Here’s what nobody on this platform will tell you about unemployment:

It has a liquidation schedule.

Week 1-4 : You sell the easy stuff.
The monitor you weren’t using. The old iPad.
You tell yourself you’re “decluttering.” 🧹
It feels *productive*.

Month 2-3 : You sell the good stuff.
The collectibles. The tools.
The things you were saving “for the right project.”
You tell yourself you’re “being strategic.”

Month 4-6 : You sell who you are.
The equipment that makes you *you*.
The things that took 20 years to accumulate
and 20 minutes to list on Facebook Marketplace
for a third of what they’re worth.

Month 7+ : “Hmm… that’s not bolted down…”
Nobody talks about this.

They talk about “upskilling.” 🚀
They talk about “pivoting.” 🔄
They talk about “networking.” 🤝

Nobody talks about the spreadsheet
where you rank your possessions
by how much they’ll bring
versus how much it’ll hurt.

Nobody posts about pricing their identity
at 30 cents on the dollar
because the buyer knows you can’t wait.

So the next time someone posts
“I’m thrilled to announce” 🎉

Just remember:

Somebody else just posted a Marketplace listing
that started with “Moving, must sell”
when they’re not moving anywhere…
They’re just trying to hold onto that last shred.

NOTE: inspired by the flood of contacts I’ve received from my last post as well as personal anecdotes. … image inspired by the story of Vivian Maier.

October 7, 2026

Everyone’s writing rules for how to send things in the age of AI.

Filed under: AI Rant,Enterprise,General — Tags: , , , , — Bryan @ 10:19 am

Don’t be lazy. Don’t forward ChatGPT’s hot take on someone’s deck. Good advice.

But it misses the real problem: ** nobody’s reading anymore **.

They’re pasting your document into their model of choice and asking if it contains anything worth knowing. You’re lucky if you get a reply from a human at this point.

I commented this on a recent post by Eytan Buchman and he replied: “Feedback prompt injection! Genius!”

He’s right. That’s exactly what I’m doing.

As a side hobby I’m working on a technical research project with a large document set: architecture specs, design rationale, experimental results. I sent the bundle to an engineer colleague for review.

He didn’t read it. His Claude session did.

He pasted the entire thing into his own AI session, which produced a summary and a prototype. A human never read my documents. The model was the actual reader.

This wasn’t laziness. This is what competent professionals do now. But I saw this coming a good year ago.

That’s when I pivoted. I shifted to writing my long-form documents for model consumption first. Not dumbed down… structured for accurate distillation. With correctives embedded in the text that keep a summarizing model on track.

Three things I learned the hard way:

1️⃣ **One word can change everything**: A single word in my docs (“reference” instead of “experimental”) changed how every model interpreted the project’s authority level.

2️⃣ **Framing is fate**: I described decisions as design choices. Every model helpfully suggested alternatives.

3️⃣ **Models skip to the interesting parts**: When I published the full doc set, models skipped the foundational work and went straight to whatever sounded like the hot topic.

I called this “semantic collapse”… accurate transmission of the what, silent replacement of the how and the why.

Your reader has perfect recall, zero judgment, and will confidently summarize what it thinks you said regardless of whether it caught the point.

Write for that reader. The humans will get the message once the model delivers it.

Full breakdown with more examples in the article “Feedback Prompt Injection: Writing for the Robot in the Room“

September 27, 2026

PSA for anyone using Claude projects in WebUI

Filed under: AI Rant,Enterprise,General — Tags: , , , , , , , — Bryan @ 10:19 am

PSA for anyone using Claude projects to compartmentalize their work: check your project settings right now.

Anthropic quietly introduced a “Use account memory” toggle inside each project. When I discovered it tonight, it was already enabled on every existing project in my account. It bridges your project’s memory with your account-level memory — the pool that loads into every regular conversation you have.

If you set up a project specifically for isolation — client work, sensitive research, creative work you don’t want bleeding into your professional conversations — that wall has a hole in it, and you were never told.

And this wasn’t a theoretical concern. I already had cross-contamination in my account memory and spent about an hour cleaning it up. I run two projects: one for serious documentation work and another for creative writing. I also use Claude for job-search work, including checking resume updates for errors or inconsistencies, reviewing professional writing, and strategy planning. Material from those contexts had ended up mixed together in account memory. Character names from stories were sitting alongside my real career history. Serious research was adjacent to parody.

Here’s what makes this worse:

Anthropic’s own help center documentation, as of tonight, still describes project memory as isolated: “Each project has its own separate memory space and dedicated project summary, so the context within each of your projects is focused, relevant, and separate from other projects or non-project chats.”

That is no longer true by default.

The toggle appears to have arrived with the September 16-17 platform unification — when Cowork merged into Chat and Projects were redesigned. There was no announcement. No migration notice. No email. No banner. The documentation wasn’t updated. It was just switched on.

(paragraph with use cases removed because it was clearly a distraction from the point)

This needed to be opt-in. Defaulting it to on, silently, on existing projects, while the documentation still promises isolation, is not a minor UX oversight. It’s a breach of the contract the feature was sold on.

I’ve submitted formal feedback. I’d encourage anyone affected to do the same (link in the comments).

edit: relates to WebUI/Chat.

Older Posts »