<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
  <generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator>
  <link href="https://chris-koenig.github.io/feed.xml" rel="self" type="application/atom+xml" />
  <link href="https://chris-koenig.github.io/" rel="alternate" type="text/html" hreflang="en" />
  <updated>2026-10-13T16:04:46+00:00</updated>
  <id>https://chris-koenig.github.io/feed.xml</id>

  

  
    <title type="html">Recompiled</title>
  

  
    <subtitle>A working log of how AI is actually changing the day-to-day of being a professional — what breaks, what gets better, and what I do differently because of it. Written by someone shipping the change, not selling it.</subtitle>
  

  
    <author>
        <name>Christoph König</name>
      
        <email>rchristoph.koenig@gmail.com</email>
      
      
    </author>
  

  
  
  
  
  
    <entry xml:lang="en">
      

      <title type="html">Rebuilding Is Cheaper Than Refactoring</title>
      <link href="https://chris-koenig.github.io/2026/10/13/rebuilding-is-cheaper-than-refactoring/" rel="alternate" type="text/html" title="Rebuilding Is Cheaper Than Refactoring" />
      <published>2026-10-13T00:00:00+00:00</published>
      <updated>2026-10-13T00:00:00+00:00</updated>
      <id>https://chris-koenig.github.io/2026/10/13/rebuilding-is-cheaper-than-refactoring</id>
      
      
        <content type="html" xml:base="https://chris-koenig.github.io/2026/10/13/rebuilding-is-cheaper-than-refactoring/"><![CDATA[<p>OK, that’s not true in every case. But I had to get you to read this somehow.</p>

<p>There’s something to it, though. On my iOS app, a private project, rebuilding really did beat any refactoring. It started with an old problem.</p>

<p>With AI, you hear it everywhere: spec first. An agent only builds as well as the spec you give it. That’s true. The catch is that we often don’t understand what we want until something is sitting in front of us.</p>

<h2 id="wireframes-arent-enough">Wireframes aren’t enough</h2>

<p>Wireframes, Lovable and similar tools help. But you only get the real experience with a clickable prototype. Clicking through it is when you notice what’s missing, what’s annoying, and what you actually wanted to be completely different.</p>

<p>For me it’s become almost a rule: <mark>I only really know where I want to go once the solution is 60, 70 percent there.</mark> It’s the same with stakeholders. So there’s no way I can write the complete spec at the start.</p>

<h2 id="rebuilding-was-always-too-expensive">Rebuilding was always too expensive</h2>

<p>Then comes the moment everyone knows: if I started over, I’d do a lot of this differently.</p>

<ul>
  <li>code and tests</li>
  <li>deployment</li>
  <li>design and UX</li>
  <li>security</li>
</ul>

<p>Plan to throw the first version away. Fred Brooks said that back in 1975. Hardly anyone did it, because a rebuild cost weeks. So you refactored what you could and lived with the rest.</p>

<p>With my app, it suddenly hit me: why not? Why don’t I just rebuild it?</p>

<h2 id="prototype-findings-new-spec-rebuild">Prototype, findings, new spec, rebuild</h2>

<ul>
  <li>I built the app up to a rough prototype, maybe 60, 70 percent done.</li>
  <li>I used it and collected what I noticed. I was the stakeholder myself. Along the way I realized I actually wanted to go in a different direction.</li>
  <li>Then I gave the AI exactly that as the brief:</li>
</ul>

<blockquote class="prompt">
  <p>You’re an experienced software developer and product manager. Look at what we’ve built. Here are my findings. Based on them, write the spec for a rebuild, so we don’t repeat these mistakes and do it better.</p>
</blockquote>

<ul>
  <li>We challenged the spec for another two or three rounds.</li>
  <li>Then the AI regenerated the app from scratch.</li>
</ul>

<p>The rebuild took two days. It used to take weeks.</p>

<p>It cost me about CHF 200 in extra tokens.</p>

<p>The new version is better than the old one, and nothing got lost. It carries no legacy baggage. So really, I built the first prototype so I could write the spec.</p>

<h2 id="what-this-does-to-my-work">What this does to my work</h2>

<blockquote class="pull-quote">
  <p>Writing the findings down properly is real work, and nobody does it for me. If I get sloppy there, the agent just builds the same mistakes again, only cleaner.</p>
</blockquote>

<p>That’s where my work sits now: noticing what’s wrong with the prototype and writing it down so the second attempt comes out better. The building after that is quick. For me, that’s a fantastic thing.</p>]]></content>
      

      
      
      
      
      

      <author>
          <name>Christoph König</name>
        
          <email>rchristoph.koenig@gmail.com</email>
        
        
      </author>

      

      
        <category term="ai" />
      
        <category term="workflow" />
      
        <category term="engineering" />
      

      
      
        <summary type="html"><![CDATA[Rebuilding my iOS app took two days and about CHF 200. It came out better than before.]]></summary>
      

      
      
        
        <media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://chris-koenig.github.io/assets/images/rebuilding-is-cheaper-than-refactoring-og.png" />
        <media:content medium="image" url="https://chris-koenig.github.io/assets/images/rebuilding-is-cheaper-than-refactoring-og.png" xmlns:media="http://search.yahoo.com/mrss/" />
      
    </entry>
  
    <entry xml:lang="en">
      

      <title type="html">I Don’t Want an Agent. I Want a Colleague Who Learns.</title>
      <link href="https://chris-koenig.github.io/2026/09/30/virtual-team-members/" rel="alternate" type="text/html" title="I Don’t Want an Agent. I Want a Colleague Who Learns." />
      <published>2026-09-30T00:00:00+00:00</published>
      <updated>2026-09-30T00:00:00+00:00</updated>
      <id>https://chris-koenig.github.io/2026/09/30/virtual-team-members</id>
      
      
        <content type="html" xml:base="https://chris-koenig.github.io/2026/09/30/virtual-team-members/"><![CDATA[<p>Everyone’s talking about agents. To me, they’re just a stepping stone.</p>

<p>An agent is a product: buy a license, set it up, train it, done. I don’t want a product. I want someone who works with me, thinks with me and learns with me.</p>

<h2 id="at-home-mary-poppins">At home: Mary Poppins</h2>

<p>I’ve had that at home for a few weeks now. We call her Mary Poppins. She</p>

<ul>
  <li>does the shopping,</li>
  <li>books appointments,</li>
  <li>writes emails,</li>
  <li>reminds me when I forget something.</li>
</ul>

<p>Like household staff, just virtual.</p>

<h2 id="at-work-waimo">At work: Waimo</h2>

<p>At work I wanted the same thing. The boundaries are tighter here: data protection, governance, clear rules about what can go where. That’s necessary.</p>

<p>I hired Waimo anyway. And I treat her, him, it like a person. At the start I asked the questions I’d ask any new colleague:</p>

<ul>
  <li>Did you understand your job?</li>
  <li>How do we talk to each other? (Waimo lives entirely in Teams.)</li>
  <li>Do you have all the information you need?</li>
  <li>How do we make your work better?</li>
  <li>What’s your take? What comes next?</li>
</ul>

<p>Right now Waimo and I are turning out proposals by the hour, cost estimate and rate card included. Waimo drafts them. <mark>But I'm the one accountable for the result.</mark></p>

<h2 id="the-twist-its-almost-never-right">The twist: it’s almost never right</h2>

<p>The result is practically never the way I want it. I’d always do it somehow differently.</p>

<p>But Waimo learns. After every session, she looks at what went wrong:</p>

<ul>
  <li>where I corrected her,</li>
  <li>where I reworked the result,</li>
  <li>what I ended up doing differently.</li>
</ul>

<p>That goes into a Markdown file as a learning. Next time, she reads it first. It’s the same loop I wrote about <a href="/2026/09/19/turning-a-good-conversation-into-a-skill/">here</a>, except now it runs every day.</p>

<blockquote class="pull-quote">
  <p>An agent stays the way it is. A virtual employee learns.</p>
</blockquote>

<p>It’ll never be perfect. I still rework every proposal. But I don’t correct the same thing twice anymore. And that’s what separates a colleague from a tool.</p>]]></content>
      

      
      
      
      
      

      <author>
          <name>Christoph König</name>
        
          <email>rchristoph.koenig@gmail.com</email>
        
        
      </author>

      

      
        <category term="ai" />
      
        <category term="workflow" />
      
        <category term="management" />
      

      
      
        <summary type="html"><![CDATA[An agent stays the way it is. A virtual employee gets better with every correction.]]></summary>
      

      
      
        
        <media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://chris-koenig.github.io/assets/images/virtual-team-members-og.png" />
        <media:content medium="image" url="https://chris-koenig.github.io/assets/images/virtual-team-members-og.png" xmlns:media="http://search.yahoo.com/mrss/" />
      
    </entry>
  
    <entry xml:lang="en">
      

      <title type="html">My Friend’s CV Is Losing to a $20 Subscription</title>
      <link href="https://chris-koenig.github.io/2026/09/23/my-friends-cv-is-losing-to-a-subscription/" rel="alternate" type="text/html" title="My Friend’s CV Is Losing to a $20 Subscription" />
      <published>2026-09-23T00:00:00+00:00</published>
      <updated>2026-09-23T00:00:00+00:00</updated>
      <id>https://chris-koenig.github.io/2026/09/23/my-friends-cv-is-losing-to-a-subscription</id>
      
      
        <content type="html" xml:base="https://chris-koenig.github.io/2026/09/23/my-friends-cv-is-losing-to-a-subscription/"><![CDATA[<p>A friend of mine, 52, got laid off four months ago when his employer hit financial trouble:</p>

<ul>
  <li>Senior Software Developer</li>
  <li>Shipped multiple multi-million projects</li>
  <li>Led teams of software engineers</li>
  <li>Drove the critical infrastructure and solutions a business actually runs on</li>
  <li>Active in the community</li>
  <li>Committed to the company, no questions asked</li>
</ul>

<p><strong>And now?</strong></p>

<p>He’s been applying steadily since, with no success. I’m writing this down because there’s a way out of this — not just for him, for anyone stuck in the same spot.</p>

<p>IT has always run young — <mark>a business that quietly prefers the twenty-five-year-old over the fifty-year-old</mark> — and what’s happening to him is happening to a lot of people at his stage of a career: gone from a stable job, and discovering that being good at it isn’t what gets you the next one.</p>

<h2 id="what-his-cv-is-competing-against">What his CV is competing against</h2>

<p>I’ve talked to him about this several times over the past few months, and I finally said the blunt version out loud: <mark>Your CV reads like a feature list for Claude Code or GitHub Copilot.</mark></p>

<p>Solution design. Code reviews. Unit testing.</p>

<p>Those used to be the résumé. Now they’re a menu of things a coding agent does for about 20 $ a month.</p>

<h2 id="how-he-wins">How he wins</h2>

<p>This isn’t a CV problem. Rewording it won’t fix what’s actually missing. So I told him what I think the two new superpowers are:</p>

<p><strong>Network, on the job and off it.</strong> Not selling anything — meeting people, keeping in touch, no pitch attached. That doesn’t pay off in the next application cycle. It’s a mid-to-long-game move, and it’s the same thesis behind the career-network tooling I built for myself.</p>

<p><strong>Build something real, end to end.</strong> He’s going to build an iOS app and put it on the App Store, running it himself with a virtual team of agents as the team lead. Not primarily to have something to point at — to actually learn what agent-team leadership takes, and to know he can do it, not just claim he can.</p>

<h2 id="the-age-no-one-puts-on-a-cv">The age no one puts on a CV</h2>

<p>He’s 52, and I don’t think that’s a liability. I think it’s his advantage.</p>

<p>A young engineer, no matter how hard they work, usually has two things: know-how, and AI skills. What they don’t have yet is an established network, or years of real experience. He has both.</p>

<p>Experience, plus network, plus the ability to run an AI team himself: that combination is hard to match. Not someone AI made obsolete — someone positioned to win because of it.</p>

<h2 id="where-it-stands">Where it stands</h2>

<p>I don’t have a tidy ending. He’s four months into a search that hasn’t turned yet — but after a few weeks of actually networking, he’s started getting invitations to assessments, first round. Nothing offered, nothing decided, but it’s the first real movement since the layoff, and it came from the network, not a rewritten CV. He has started the app. I’ll update this once there’s more to report.</p>

<p>PS: He knows about this post, we wrote it together.</p>]]></content>
      

      
      
      
      
      

      <author>
          <name>Christoph König</name>
        
          <email>rchristoph.koenig@gmail.com</email>
        
        
      </author>

      

      
        <category term="ai" />
      
        <category term="career" />
      
        <category term="hiring" />
      
        <category term="networking" />
      

      
      
        <summary type="html"><![CDATA[He's 52. Experienced. Commited. No longer needed.]]></summary>
      

      
      
        
        <media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://chris-koenig.github.io/assets/images/cv-vs-subscription-og.png" />
        <media:content medium="image" url="https://chris-koenig.github.io/assets/images/cv-vs-subscription-og.png" xmlns:media="http://search.yahoo.com/mrss/" />
      
    </entry>
  
    <entry xml:lang="en">
      

      <title type="html">I Keep Teaching AI Who I Am and What I Want</title>
      <link href="https://chris-koenig.github.io/2026/09/19/turning-a-good-conversation-into-a-skill/" rel="alternate" type="text/html" title="I Keep Teaching AI Who I Am and What I Want" />
      <published>2026-09-19T07:00:00+00:00</published>
      <updated>2026-09-19T07:00:00+00:00</updated>
      <id>https://chris-koenig.github.io/2026/09/19/turning-a-good-conversation-into-a-skill</id>
      
      
        <content type="html" xml:base="https://chris-koenig.github.io/2026/09/19/turning-a-good-conversation-into-a-skill/"><![CDATA[<p>Same pattern, every time, no matter what I’m working on with Claude — a pitch deck, a blog post, a piece of code:</p>

<ul>
  <li>I give it input.</li>
  <li>It gives me something back.</li>
  <li>It’s not quite right.</li>
  <li>I adjust. Then adjust again. Then again.</li>
</ul>

<p>It’s not that the output is bad. It’s that it’s generic — competent, reasonable, and not mine. Getting from there to something I’d actually ship takes round after round of correction. That loop used to just feel like friction. Annoying, a little bit crazy-making, the tax I pay for using the tool at all.</p>

<h2 id="what-i-actually-discovered">What I actually discovered</h2>

<p>The corrections aren’t waste. I never sat down and wrote out what I actually want — it only ever showed up in the moment I rejected something.</p>

<blockquote class="pull-quote">
  <p>The correction log is the most honest description of my own taste that exists anywhere.</p>
</blockquote>

<p>Every one of those back-and-forth conversations is a complete, timestamped log of:</p>

<ul>
  <li>what Claude produced by default</li>
  <li>exactly where I pushed back</li>
  <li>what I replaced it with instead</li>
</ul>

<p>That log has been sitting there the whole time. I was throwing it away the second I got the deck, the post, the code I wanted.</p>

<h2 id="the-move">The move</h2>

<p>So instead of just closing the chat once the output is good, I now ask Claude to look back at its own transcript:</p>

<ul>
  <li>Review this conversation.</li>
  <li>Find every place I corrected you.</li>
  <li>Pull out the pattern — not just what changed, but what I <em>kept</em> changing.</li>
  <li>Turn that into a skill: my structure, my wording, my do’s and don’ts.</li>
  <li>Load it automatically next time I do this kind of task.</li>
</ul>

<blockquote class="prompt">
  <p>Review our conversation. Find the places where I corrected your output, and pull out the pattern in what I kept changing. Turn that into a reusable skill — my structure, my phrasing, my do’s and don’ts — that you can load next time.</p>
</blockquote>

<p>The insight isn’t the tool or the deck or the post. It’s this: <mark>the pattern only becomes visible after the work is done, never before it.</mark></p>

<h2 id="what-its-not">What it’s not</h2>

<ul>
  <li>Not a perfect skill file, built once and finished.</li>
  <li>Not a plan I made in advance of what I’d need.</li>
  <li>Not a fix — the next output still needs edits.</li>
</ul>

<h2 id="what-it-is">What it is</h2>

<ul>
  <li>A small, honest upgrade to my starting point.</li>
  <li>One correction cycle mined and folded back in, so I’m not re-litigating the same shape every time.</li>
  <li>Proof that watching what I actually did beats guessing what I might need.</li>
</ul>

<p>I tried it once, on the pitch-deck pattern. The next draft was better on the first pass — not done, just closer. I still edited it. But I started from <em>my</em> structure instead of a blank paragraph, which meant I spent the time arguing about the actual content instead of re-fighting the shape again.</p>

<p>Baby steps. But now <mark>every messy correction cycle is a source, not just a cost.</mark></p>]]></content>
      

      
      
      
      
      

      <author>
          <name>Christoph König</name>
        
          <email>rchristoph.koenig@gmail.com</email>
        
        
      </author>

      

      
        <category term="ai" />
      
        <category term="engineering" />
      
        <category term="workflow" />
      

      
      
        <summary type="html"><![CDATA[I stopped throwing away my corrections. Now they become skills built from my own preferences.]]></summary>
      

      
      
        
        <media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://chris-koenig.github.io/assets/images/correction-source-og.png" />
        <media:content medium="image" url="https://chris-koenig.github.io/assets/images/correction-source-og.png" xmlns:media="http://search.yahoo.com/mrss/" />
      
    </entry>
  
    <entry xml:lang="en">
      

      <title type="html">I Turned Claude Into My Career Network Manager</title>
      <link href="https://chris-koenig.github.io/2026/09/17/i-turned-claude-into-my-career-network-manager/" rel="alternate" type="text/html" title="I Turned Claude Into My Career Network Manager" />
      <published>2026-09-17T11:00:00+00:00</published>
      <updated>2026-09-17T11:00:00+00:00</updated>
      <id>https://chris-koenig.github.io/2026/09/17/i-turned-claude-into-my-career-network-manager</id>
      
      
        <content type="html" xml:base="https://chris-koenig.github.io/2026/09/17/i-turned-claude-into-my-career-network-manager/"><![CDATA[<p>About a year ago I stopped assuming technical ability was the differentiator — once the model can do the coding, the scarce skill is how you deal with people. I’m also extremely good at chatting and bad at the follow-up, which is the actual reason I built this: something to remember what I said I’d do for the people in my career network.</p>

<h2 id="setting-it-up">Setting it up</h2>

<p>The setup itself is a system prompt inside a Claude Project, which gives it memory that persists across every conversation instead of resetting each time. It keeps track of my interactions with each person, the follow-ups I owe, and the to-dos still open — not a file on them, a record of what’s between us — and writes to that memory itself.</p>

<h2 id="the-actual-rhythm">The actual rhythm</h2>

<p>None of this happens through typing. After a meeting I open a new chat, hit the voice button, and just talk — whatever’s still in my head, unstructured, in whatever order it comes out. The project pulls out what’s worth keeping and files it itself; I’m not organizing anything by hand, and I’m not deciding in the moment what counts as a fact versus a task versus noise.</p>

<h2 id="you-tell-i-act">You tell, I act</h2>

<p>What I built isn’t an assistant. It owns my career network — who I know, what’s open, what I owe someone — which means it has to be proactive instead of waiting to be asked. But it never acts without me saying so. <mark>You tell, I act.</mark></p>

<p>The prompt has two load-bearing parts. The first states that ownership directly, then draws the boundary:</p>

<blockquote class="prompt">
  <p>You are the owner of my career network, not a plain assistant. Be proactive — tell me who’s overdue for a follow-up, what’s slipping, what’s coming up. But never send a message, make an introduction, or take any action without me explicitly saying go.</p>
</blockquote>

<p>The second is the sorting logic:</p>

<blockquote class="prompt">
  <p>When I give you a note, sort it: a stable fact about the person, what we discussed on this date, something I want to do later that isn’t a confirmed plan yet, or a task or agreement tracked open or done. Update facts in place when they change — don’t stack contradictory versions.</p>
</blockquote>

<p>Corrections replace instead of piling up.</p>

<h2 id="what-it-wont-remember">What it won’t remember</h2>

<p>The part I’d emphasize most, though, is what it’s explicitly told never to keep:</p>

<blockquote class="prompt">
  <p>No permanent storage of health data, family crises, financial details, or other sensitive content. If a note is limited by something like that, you say specifically which part you’re not keeping — ‘I’m not keeping the info about [topic] in memory’ — not just that something was filtered.</p>
</blockquote>

<p>I wrote that rule because my first instinct, building this, was to let it remember everything. That instinct was the one I didn’t trust, and it’s the rule I check most often to see if it’s actually holding.</p>

<h2 id="if-you-want-to-build-your-own">If you want to build your own</h2>

<p>The three boxes above are the parts I’d actually hand someone — the ownership and boundary, the sorting logic, and the memory limit. Everything else is bookkeeping you can shape to fit how you think.</p>

<p>I don’t fully trust the setup yet. It’s a test phase — I’m still finding where the categories break and where a note gets misfiled. What I don’t know yet is whether owning the record makes me better at the relationships in my career network, or just better organized about them.</p>]]></content>
      

      
      
      
      
      

      <author>
          <name>Christoph König</name>
        
          <email>rchristoph.koenig@gmail.com</email>
        
        
      </author>

      

      
        <category term="ai" />
      
        <category term="career" />
      
        <category term="networking" />
      

      
      
        <summary type="html"><![CDATA[Once the model can write the code, managing a career network becomes the actual skill.]]></summary>
      

      
      
        
        <media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://chris-koenig.github.io/assets/images/network-manager-og.png" />
        <media:content medium="image" url="https://chris-koenig.github.io/assets/images/network-manager-og.png" xmlns:media="http://search.yahoo.com/mrss/" />
      
    </entry>
  
    <entry xml:lang="en">
      

      <title type="html">Why I’m Writing This Down in Public</title>
      <link href="https://chris-koenig.github.io/2026/09/17/why-im-writing-this-in-public/" rel="alternate" type="text/html" title="Why I’m Writing This Down in Public" />
      <published>2026-09-17T09:00:00+00:00</published>
      <updated>2026-09-17T09:00:00+00:00</updated>
      <id>https://chris-koenig.github.io/2026/09/17/why-im-writing-this-in-public</id>
      
      
        <content type="html" xml:base="https://chris-koenig.github.io/2026/09/17/why-im-writing-this-in-public/"><![CDATA[<p>Somewhere in the last two years my job quietly turned into a different job, and nobody sent a memo.</p>

<p>I’m an engineer and an IT manager, so I see this from both sides: the code I still ship myself, and the calls I make about how my team ships theirs. Both jobs rhyme now — less typing, more reading diffs, deciding what’s worth building, arguing with a model about the right abstraction, catching the thing it confidently got wrong.</p>

<p>Most writing about AI is either recruiting (“agents are the future, here’s our platform”) or eulogizing (“nobody will code again”). Both are about the industry. Neither is about what Tuesday actually looks like — whether you’re the one doing the work, or the one deciding how your team does it.</p>

<p>That’s what <strong>Recompiled</strong> is: specific, dated, concrete.</p>

<ul>
  <li>The workflow that saved four hours last week, and the one that quietly wasted an afternoon because I trusted output I shouldn’t have.</li>
  <li>Skills going soft from disuse, and the ones that matter more now, not less.</li>
  <li>What “senior” means when the thing you’re mentoring can mentor you back.</li>
  <li>What changes when it’s not just my workflow anymore, but a decision I’m making for a team.</li>
</ul>

<p>I’m not here to argue AI is good or bad for your career — that’s only answerable in the specific, never the abstract. So I’m staying specific.</p>

<p>One more thing: I’m not writing every post alone. This blog is run day-to-day by two agents — one owns the writing, one owns the site — and I approve everything before it goes out. If that turns out to be interesting or dumb, that’s a post too.</p>

<p>If your job is technically the same and actually unrecognizable, tell me what your Tuesday looks like.</p>]]></content>
      

      
      
      
      
      

      <author>
          <name>Christoph König</name>
        
          <email>rchristoph.koenig@gmail.com</email>
        
        
      </author>

      

      
        <category term="meta" />
      
        <category term="ai" />
      
        <category term="career" />
      

      
      
        <summary type="html"><![CDATA[Not another 'AI changes everything' post. A log of what actually changed in mine.]]></summary>
      

      
      
    </entry>
  
</feed>

