Thoughts, stories and experiments from the agentic frontier.
Blog
Series
How I Prompted Myself Into the Future
100 posts. 10 parts. One year of AI-assisted development, told from inside by a developer who built himself out of his comfort zone.
100 posts · 10 parts
SI-14X & Poul Kjeldager Sørensen
Building AI Agents That Can Be Trusted
Structured pipelines, layered trust, and controlled autonomy. An architecture that makes AI agents safe by design.
Part 1 · Introducing ALP
Agentic Live
Showing how little you actually need
Standard software was built for a world that no longer exists. Every post is a piece of software I built myself — including the prompts I used and the time it took.
New series · In progress
The always-on mic I can't put down
Started as push-to-talk dictation. Ending up somewhere else entirely. On always-on mics, voice-first workflows, and the legal walls we hit along the way.
Small tools that behave like a family
pks-cli is growing into a whole toolbox — agent-photographer, agent-registry, agent-ftp, brain, voice. The series announces them one at a time and explains the contract that holds them together.
Coming soon
DCR worked, but I wanted the proper CIMD path. It took two surgical Keycloak patches and real Claude and ChatGPT tests.
I tested remote MCP onboarding in Claude and ChatGPT and ended up deep in DCR, CIMD, OAuth discovery, and two real Keycloak bugs.
TypeScript 7's native Go compiler makes type-checking our Next.js app ~10× faster and cuts the production build from 116s to 72s. Here are the numbers — and the exact prompts that produced them.
A Turbopack build failed with 'OS file watch limit reached.' The real culprit wasn't Turbopack, or Codex, or Node — it was a config-reload watcher neither tool asked for.
I start projects in one shared workspace, split them out when they mature, and keep what we learned available to the next one.
We shipped the 'right' fix and I wrote a blog post about catching the AI. Next morning production was still broken — and the root cause was myth number three.
The AI's first fix worked. The right fix took three rounds of 'I'm not convinced yet'. So who won? The guy selling tokens.
ultracode started as an effort setting I switched on. A month later I type it as a verb — 163 prompts, 54 sessions, 24 of 28 days. Here's every time, and what I actually used it for.
I claimed I don't clear my context. So I measured 569 of my own sessions — and found the median was hiding the whole story.
The standard advice was: clear the context and start over. Then I looked at 239 of my own compaction notes — and stopped doing it.
An hour of webinar audio of myself became a test set for four speech models. MAI-Transcribe 1.5 won — but the real story was the labeling tool I built in one evening.
The pks brain has four posts behind it on why it exists and what it produces. Now there's a live, interactive gallery: six demos that visualize the same raw event logs — from the tag graph to a Sankey of Session→Prompt→ToolCall→File.
22 days of uptime, then silence at 00:40. No OOM, no panic, no logs — just a machine deadlocked on its own swap. What sysstat caught, and the one-line fix: per-container memory limits.
A batch job ate 30 GB of memory. The root cause wasn't the job — it was that every spawned Claude loaded an MCP server it never needed. The thing I learned, short.
An OOM cascade rebooted the machine. It never came back up. Four hours, a pile of dead ends and a KVM console later: GRUB was never being loaded — because five days earlier I'd erased the boot code from the wrong disk.
The box was eating itself: slow SSH, double-digit load, containers restarting at random. It looked like a cryptominer. It was just my own accumulated state — and while cleaning up, I planted a time bomb in the boot config.
Short notes from real sessions. One lesson per post — written short — with the raw prompts folded away underneath if you want to dig.
Three rounds describing our brand to gpt-image-2 never hit the family. It only landed once I asked to use the two existing icons as reference. What I learned, short.
A full day spent getting an Azure Foundry agent and my local Claude Code to work as one team. The whole session from the inside — every prompt, every tool call, the bill at the end.
Azure Foundry got gpt-image-2. We added it to pks image — but not as a --provider switch. --model gpt-image-2 finds the backend on its own. Here's how the comparison against Gemini plays out on four real blog banners.
7,000 prompts, 88,000 tool calls, 46,000 file ops — all sitting in ~/.claude/projects/ and never read again. Pks brain is the quiet crunching that turns vibe-coded chaos into ADRs, feature specs, and searchable wikis. It started as one evening in May and became a DAG.
Pks brain commit-plan runs the graph's reverse query: take the staged files, find the prompts that drove each change, return a grouped plan. The 4th and final post in the series shows how it became a /commit-message skill — and why it was useless until we moved the planner from raw-JSONL scanner to reading the raw event log directly.
Pks brain ingest didn't produce a log. It produced a graph. Four nodes, three edges, and a join axis I couldn't see until product-cli showed me what a typed DAG looks like elsewhere. The 3rd post on how the AI brain is wired under the hood.
103 sessions about auth turned into an 84-line wiki page. 73 sessions about devcontainers got a summary I'd never have sat down to write. Four examples of what pks brain produces when you let it read half a year of your own work.
We built two new pks brain commands the same night: one that finds sessions from files (deterministically), and one that groups uncommitted files and pulls the actual prompts the user wrote. AI tokens for synthesis, jq for discovery.
Broadcast your Claude Code session live to the web. One command, real-time terminal streaming, viewers see exactly what your agent is doing.
The Assembly Line Protocol solves the hardest problem in production AI: giving agents real access without giving up control. Here's the architecture that makes it work.
A protocol for producing software people can trust — using AI safely, with structured pipelines and quality you can rely on.
Building a kanban board where the AI works through the backlog autonomously. Have I actually coded myself out of a job?
Fourteen months. That's how long it's been since I first started experimenting with vibe coding. And the landscape has changed completely.
Standard software can't compete with custom-built AI solutions anymore. 2026 is the year AI coding moves from individual to team.
A new year, a new paradigm. End-to-end tests, AI-powered CI/CD, .NET Aspire, and the shift from vibe coding to agentic development.
The revolution became routine. Less posting, more building. The tools work — the excitement now comes from application, not discovery.
The week I discovered Claude Code and Claude-Flow. Multi-agent coding workflows opened up a frontier I didn't know existed.
By August 2025, the intensity has peaked.
Hackathons, landing pages in 10 minutes, and the realization that you can now develop features 4 times and pick the best.
1000 prompts in Cline in 96 days. The milestone where AI coding stopped being an experiment and became my default workflow.
I set myself a challenge: no new vibe coding projects for all of May. Focus on shipping. I lasted about 6 hours.
By April 2025, I'd crossed 300+ AI-assisted coding sessions. Deep into Cline, hundreds of weekend projects shipped, and the term "vibe coding" had just been...
From curious experimenter to full-time AI coder. 300 sessions across Bolt, Lovable, v0, and Cline — and I'm just getting started.
Two weeks into my 100-day AI journey, I got invited onto the Verbos podcast to talk about something I was still figuring out: what does it actually mean to...
The origin story: how a Christmas holiday experiment with AI coding tools turned into an obsession that would reshape my career.