The Pragmatic Engineer: "Building Pi, and What Makes Self-Modifying Software So Fascinating"
Date: April 29, 2026
Host: Gergely Orosz
Guests: Mario Zeckner (creator of PI), Armin Ronacher (creator of Flask, early PI contributor)
Overview:
This episode explores the origin and impact of PI, a minimalist, self-modifying coding agent developed by Mario Zeckner. Joined by famed open-source engineer Armin Ronacher, the conversation goes deep into the realities of self-modifying software, the shifting landscape of AI-driven engineering teams, the challenges of agent-generated code, and the increasing complexity—and potential chaos—introduced by AI agents in software development. This is an honest, grounded discussion about what’s actually working, what isn’t, and why the tech industry just might need to slow down.
Key Topics & Insights
1. Personal Journeys Into Tech and AI (01:26–07:11)
- Mario’s path: Growing up in Austria with limited means, self-taught through gaming, early exposure to machine learning (pre-deep learning boom), and multiple startups before rekindling his ML interests post-GPT.
- “I’ve always kept up with machine learning stuff because obviously super interesting and... GPT happened and that's the story.” – Mario (03:43)
- Armin’s background: Not “working poor” but rooted in early computer exposure through his parents’ architectural firm; self-taught in programming via old computers and Linux, founding Ubuntu User communities, and eventually developing Flask and working for Sentry.
- “I wasn’t ever really good at this but I found it really interesting... over time, if you keep doing this, you get better.” – Armin (05:01)
2. Early Reactions to AI Coding Agents (08:19–14:25)
- Both were initially skeptical of coding agents like Copilot.
- Mario: “I tried [Copilot] and it was absolutely horrible. But...when GPT came out, and especially when they started providing API access, I did a lot of projects just figuring out what works and what doesn’t...” (09:09)
- Armin raised early open-source license concerns but ultimately embraced the knowledge-sharing ethos—even if it meant GPL code leaks.
- “My optimal version’s like copyrights don’t exist in a way or like very, very limited...I was like, oh, maybe this will just completely destroy copyrights. And for me that was like, oh, this is... If that’s the outcome, I’m fine with it.” (13:00)
3. How Teams Are Adapting to AI Agents (14:25–26:31)
- Adoption patterns: Experimentation explodes during “down times” (vacation, holidays, free credits).
- “Adoption happens when people have vacation... it’s like a two to three week kind of thing until it really clicks on you.” – Armin (15:14)
- Impact on code quality: Quality (and sanity) trends downward—the ease of agent-generated code produces more, but also messier, code.
- “A lot of the code in those PRs is how an engineer wouldn’t do it. Because as an engineer you sort of get a really bad feeling committing certain code...the agent really does not care.” – Armin (17:46)
- Loss of critical engineering friction: Agents lack accumulation of “pain” and battle scars that encourage engineers to refactor and simplify.
- “Agents don’t learn... They also feel pain. And I think that's one of the defining things about humans.” – Mario (20:37)
- Changing team dynamics: Non-engineers and junior engineers can now bypass traditional gatekeeping, sometimes leading to tension or questionable changes.
- “Now your code is way more complex than it should be because instead of failing properly, it is now recovering and entering these many more failure states.” – Armin (18:44)
4. The Case for Friction and Saying No (21:27–27:35)
- Value of senior engineers: Experienced engineers know when to say no, recognize tradeoffs, and keep complexity down—agents do the opposite, adding everything because it’s easy.
- AI prompts vs. PRs: The debate between “prompt requests” (asking for the intent) vs. reviewing agent-produced code. Both guests see merit in getting actual code, even if messy, as a learning tool.
- “I actually value seeing a terrible implementation of something...” – Mario (26:31)
5. Software Responsibility in the Age of Agents (27:35–31:20)
- Drawing parallels with the Industrial Revolution: The transformation of responsibility—machines vastly speed up creation, but accountability doesn’t scale.
- “The machine cannot yet be responsible.” – Armin (28:59)
- Overestimating automation: “We as software engineers are so bad at becoming domain experts that we don't see all the non machine parts that go into a workflow.” – Mario (29:49)
6. Origins and Philosophy of PI (31:20–47:18)
- Motivation: Disillusionment with increasingly buggy, unstable, and over-engineered agent harnesses (Cloud Code, OpenCode, etc.). Mario wanted simplicity and reliability.
- “If I commit to a development tool, I want it to be a stable, reliable thing like a hammer.” – Mario (33:04)
- PI’s architecture: Minimalistic, with flexible extension points. Designed for personal tinkering, allowing users (or even the agent) to modify/extend itself easily.
- Self-modification: “...You can just ask PI to build it and PI will modify itself.” – Mario (38:21)
- Real-world usage: OpenClaw, a popular AI assistant, runs on PI’s engine; PI can be endlessly customized, from UI tweaks to making itself support new tools or workflows.
- Notable moment:
- “And that saves me time. I'm not saying I like pull requests by agents because they're terrible and I auto close them now. But they have value.” – Mario (26:31)
7. Open Source in the Age of Agentic Engineering (47:18–59:44)
- Agent-generated noise: Tools like OpenClaw now spam maintainers with a flood of PRs, most with little intent or quality.
- Mario's 3D visualization tool for triaging agent-created issues (49:03).
- “And agents don't see the comment. My GitHub workflow posts underneath the pull requests. So this is a great filter for filtering out agents and keeping the humans safe...” – Mario (51:33)
- Need for bottlenecks and filters: “I just need a bottleneck that allows me to process the amount of incoming things as a human...” – Mario (53:01)
- Shift in open source dynamics: There's now an explosion of “vibe slop”—agent-created, one-off projects, few of which are likely to endure.
- “A lot of open source really worked because people piled out on hard problems and so they congregated around it... open source is all about throwing stuff up.” – Armin (54:53)
- Long-term impact: The ratio of useful, maintained projects hasn’t changed—just more short-lived noise.
8. Complexity is the Enemy—For Agents and Humans (59:44–65:25)
- Limits of AI context: Agent effectiveness determined by context window—can’t handle codebases that exceed their “vision.”
- “The complexity they add is their own worst enemy...” – Mario (60:47)
- **Quality decays as codebases grow beyond what any agent, or team, can handle—especially since agents don’t “feel the pain” that would drive normal human cleanup and refactoring.
- Friction as a feature: Purposeful process and code review slow shipping, but offer safety and quality control.
- “There were changes where you really wanted to think... if you do this correctly, then it saves you time and it makes you happier.” – Armin (65:39)
9. How to Cope and Stay Sane in the AI Agent Era (65:39–71:14)
- Refactoring as grounding: Mario maintains quality by regularly diving back into the code to refactor, not just patch.
- “Being in the code is the one thing that keeps the code base quality high and the complexity low.” – Mario (70:00)
- Advice: slow down: The urge to move at machine speed causes chaos. Take advantage of what AI is good for—freeing engineers to focus on meaningful, hard problems, rather than just increasing output.
- “You need some way to review all of that code... But you can't as a human, because as a human, you're used to spitting out 1.5k lock a day, and that's about the limit that you can actually review.” – Mario (71:14)
10. Debate: MCP vs CLI (75:56–84:38)
- MCP (Machine Control Protocol): Designed for exposing tools to LLMs through a defined interface, popular in enterprise, but too complex, non-composable, and brittle for many devs.
- “At the end of the day, it’s authentication and it’s sort of invoking some stuff.” – Armin (76:28)
- CLIs (Command-Line Interfaces): Still preferred, particularly for their composability and directness.
- “The model only sees the end result and it is super free in how it massages that data.” – Mario (80:25)
- Outlook: Both approaches have advantages. CLI is developer-centric and flexible; MCP is better for user-facing integrations and enterprise auth.
11. Looking Forward: The Future of Agentic Development (84:38–90:50)
- Self-modifying software will spread, but foundational issues remain: quality, knowledge bottlenecks, and reliance on a few platform providers.
- “I think the self malleability thing is obviously something I believe in. I think we will see more of that.” – Mario (84:51)
- Societal dependence: Predictions that organizations may become unable to maintain code without their favored AI agent, raising dependency and pricing risks.
- “My best guess is that we’ll wake up to the fact that... engineering teams are already now telling me that they have code bases that they think they couldn’t maintain anymore without the machine.” – Armin (86:00)
- Coping mechanisms: Being outside of Silicon Valley and prioritizing time away from technology helps maintain sanity.
Notable Quotes & Memorable Moments
| Time | Speaker | Quote / Moment |
|-----------|-----------------|-------------------------------------------------------------------------------------------------------------------------------------|
| 03:43 | Mario Zeckner | “I’ve always kept up with machine learning stuff because obviously super interesting and… GPT happened and that’s the story.” |
| 13:00 | Armin Ronacher | “Maybe this will just completely destroy copyrights. And for me that was like, oh, this is... If that’s the outcome, I’m fine with it.” |
| 17:46 | Armin Ronacher | “A lot of the code in those PRs is how an engineer wouldn’t do it... the agent really does not care.” |
| 20:37 | Mario Zeckner | “Agents don’t learn... They also feel pain. And I think that's one of the defining things about humans.” |
| 26:31 | Mario Zeckner | “I actually value seeing a terrible implementation of something...” |
| 33:04 | Mario Zeckner | “If I commit to a development tool, I want it to be a stable, reliable thing like a hammer.” |
| 38:21 | Mario Zeckner | “You can just ask PI to build it and PI will modify itself.” |
| 51:33 | Mario Zeckner | “So this is a great filter for filtering out agents and keeping the humans safe...” |
| 53:01 | Mario Zeckner | “I just need a bottleneck that allows me to process the amount of incoming things as a human...” |
| 60:47 | Mario Zeckner | “The complexity they add is their own worst enemy...” |
| 65:39 | Armin Ronacher | “There were changes where you really wanted to think... if you do this correctly, then it saves you time and it makes you happier.” |
| 70:00 | Mario Zeckner | “Being in the code is the one thing that keeps the code base quality high and the complexity low.” |
| 71:14 | Mario Zeckner | “You need some way to review all of that code... as a human, you’re used to spitting out 1.5k lock a day... if your agent spits out 10 times that, no chance you can review that.” |
| 80:25 | Mario Zeckner | “The model only sees the end result and it is super free in how it massages that data.” |
| 84:51 | Mario Zeckner | “I think the self malleability thing is obviously something I believe in. I think we will see more of that.” |
| 86:00 | Armin Ronacher | “Engineering teams are already now telling me that they have code bases that they think they couldn’t maintain anymore without the machine.” |
Important Timestamps & Segments
- Mario’s tech journey: 01:33–03:43
- Armin’s programming roots: 03:47–06:40
- Skepticism → excitement about AI coding agents: 08:19–14:25
- Learnings from 30 engineering teams on AI agents: 14:25–21:00
- On code quality decline & team challenges: 17:39–21:53
- The shift in team/PR dynamics: 23:34–25:33
- Why Mario built PI (motivation & philosophy): 31:20–37:13
- How PI enables self-modification, customization: 38:21–41:36
- Open source spam and managing agent PRs: 48:51–54:53
- Complexity and the limitations of AI agents: 59:44–65:25
- Industry pressure to ship faster & need to slow down: 71:14–72:46
- MCP vs CLI debate: 75:56–84:38
- Future of self-modifying software (predictions): 84:38–86:47
- Coping with AI agent chaos & advice: 87:20–91:00
- Book recommendations: 91:00–91:38
Final Thoughts & Recommendations
- On self-modifying software: PI’s design philosophy—minimal, stable, and endlessly extensible—appears to be a winning approach for the current agentic era, balancing power with necessary friction.
- On software quality: Human “pain” and friction, not just faster code output, result in better, longer-lived projects. Agents aren’t a panacea; processes that slow developers down can be essential for maintaining quality.
- On open source: The flood of agent-generated code is accelerating, but the truly valuable projects will continue to require intent and sustained human involvement.
- On the future: Expect more self-malleable tools and a societal reckoning around AI dependency; slow down, review code carefully, and don’t be afraid to say no, even as new technologies tempt us to move faster than ever.
Book Recommendations
- Mario Zeckner: Code by Charles Petzold – “It’s just such a great read. It’s also for non techies and it’s the first thing I recommend.”
- Armin Ronacher: Breakneck – “Goes a little bit into an exploration of how China works and how maybe Europe and the US are different... at least thought provoking.”
“The idea of self-modifiable software really grew on me... But agents simply do not feel pain—they just keep adding to the complexity. And in a code base where devs regularly feel the pain of the code base and do something about it, the quality will probably be also better.” – Host, Closing Remarks (91:44)
For further deep dives and resources, see the show notes at Pragmatic Engineer.
This summary captures all major topics and quotes while preserving the episode’s candid, technical tone. No ads or filler—just the heart of the discussion for modern software engineers and leaders.