Categories
Artificial Intelligence Conferences

Notes from Schutta and Vega’s Arc of AI Workshop, part 3: Clean code, influence skills, and why your legacy code pays the bills

I caught the Fundamentals of Software Engineering in the Age of AI workshop yesterday at the Arc of AI conference’s workshop day, led by Nathaniel Schutta (cloud architect at Thoughtworks, University of Minnesota instructor) and Dan Vega (Spring Developer Advocate at Broadcom, Java Champion).

Nate and Dan are the co-authors a book on the subject, Fundamentals of Software Engineering, and they’re out here workshopping the ideas with developers who are living through the same AI-saturated moment we all are.

Fair warning: this post is long. The session was dense, the conversation was good, and I took a lot of notes.

Here’s part three of several notes from the all-day session; you might want to get a coffee for this one.

Here are links to my previous notes:


Start with the big picture before you touch anything

After lunch, Nate and Dan shifted gears from the big themes of reading code and navigating unfamiliar systems into something more granular: what actually makes code good, how to work with the humans around that code, and why the people problems in software are harder than the technical problems. If Part 1 was the philosophical case for fundamentals and Part 2 was about reading and navigating code, Part 3 was the craft and culture of actually writing it well – and getting your organization to care.

Dan opened this segment with a point that gets skipped constantly: before diving into a codebase, understand why it exists. Who are the stakeholders? What does this project mean to the business? Who are the actual humans using it?

He made a point I appreciated: LLMs can’t produce empathy. They can describe a system, but they can’t tell you that the insurance claims processing app you think is boring is the thing that determines whether a family gets their house repaired after a flood. That kind of context changes how carefully you work.

On documentation: read it, but don’t treat it as gospel. Dan spent three days once trying to understand a complex system by carefully reading what he thought was current documentation, then discovered it was two major versions out of date. The code had been completely rewritten. His rule: documentation can lie, but code never does. Read both, verify what’s actually running, and don’t be afraid to ask a colleague for three minutes of context before burning three days spinning your wheels.

He also made a point about documentation as an opportunity: if there isn’t much of it, that’s your chance to contribute right away. Your fresh perspective on an underdocumented system is genuinely valuable; you’ll notice things longtime contributors have stopped seeing.

Navigating unfamiliar code: entry points and mental models

Dan walked through his framework for getting oriented in a large, unknown codebase. The key concept: find the entry points. In Java, that’s the main method. But more broadly, it’s anything that answers “how does something get into this system?” – public APIs, web UIs, event handlers, message consumers, scheduled tasks, lifecycle hooks.

If you don’t know what questions to ask, you can’t ask them, whether of a teammate, or of an AI. That’s the part that requires actual knowledge. Once you know you’re looking for entry points, you can use AI tools to help find them. Without that conceptual frame, you’re just asking “what does this do?” and hoping for a useful answer.

From there, he talked about building mental models. Not necessarily elaborate UML diagrams, but some kind of internal representation of how the system works. A sketch on paper. A flow chart from entry point to output. Something that externalizes the structure so you can reason about it and share it with someone else who can tell you what’s missing.

Nate added something I want to highlight: AI tools can tell you what code is doing, but they still can’t tell you why it’s doing it. That gap between the code’s behavior and the intent behind it is where human expertise lives. The code may be technically correct and historically wrong, a deliberate workaround that made sense in 2014 that nobody documented.

Make changes carefully, incrementally, and reversibly

Nate was emphatic on this: when you’re modifying existing code, especially under time pressure, make small, reversible changes. Not 3,000-line PRs. Not agents running loose making sweeping modifications. Atomic commits, each representing one logical change, that can be understood, reviewed, and reverted independently.

His version control points were basic but worth restating:

  • Commit frequently, not in massive batches
  • Write meaningful commit messages (this is, he admitted, something he now largely delegates to AI – letting it summarize what he changed before committing)
  • You are accountable for every PR you submit, regardless of whether you or an agent wrote the code

That last point deserves emphasis. Dan was clear: “If I have questions about a PR, you better be able to answer them. You can’t just say ‘my AI did it.’ You have to understand these decisions.”

He also raised a thought experiment worth sitting with: imagine your boss tells you to take Friday off, and over the long weekend, an AI agent will be let loose on your most critical production system: fixing bugs, adding features. You’ll review what it did on Monday. Are you excited about the three-day weekend, or terrified?

If your answer is “terrified,” that’s the correct answer. And the reason you’re terrified points directly to the value of the fundamentals: documentation, tests, diagrams, clear architecture. Those are the things that make an AI’s work reviewable rather than a mystery you have to reverse-engineer.

What makes code good (and bad)

This section was dense. The key ideas, in rough sequence:

  • The Ikea effect and code ownership. Nate: “Every one of you has looked at some code and uttered some variant of ‘what idiot wrote this,’ only to realize you were the idiot who wrote it a couple months ago.” We value our own code more than we should. Code reviews exist partly as a corrective for this.
  • Languages are tools, not identities. Both Nate and Dan are Java Champions, and both were clear: Java is just a tool, not a religion. The Blub Paradox (from Paul Graham) explains why developers get dogmatic: you can’t easily see the limitations of your chosen language because it’s your baseline for normal. AI tools are helping break this a bit; they’re using more languages and frameworks than they used to, and that breadth makes them better programmers.
  • The lazy programmer ethos is real and good. Before writing code, spend 20 minutes making sure someone else hasn’t already solved this. Use language features before reaching for a library. Use a library before writing your own. Dan told a great story about being new to a project, discovering a utility function that took 14 parameters just to capitalize a string, and quietly using the built-in string method instead, then watching the entire senior team’s heads explode when he revealed this in a meeting. The built-in had been there for years. Nobody had looked.
  • Lines of code is a terrible metric. Dan said this directly: shipping 37,000 lines of code is not an accomplishment. Code is a liability. More code means more surface area for bugs, more maintenance, more complexity for the next person (including future you). The vibe coding community’s tendency to measure apps by lines of code is backwards. Code deleted is almost always the better outcome.
  • Cyclomatic complexity matters. This came up repeatedly. Nate’s heuristics: low single digits is good, high single digits means you should be actively refactoring, double digits means it’s time to leave the project. He mentioned encountering real production code – written by a human – with a cyclomatic complexity of 82. The brackets were labeled “start for loop one / end for loop one” just to keep track. Not good.The punchline about cyclomatic complexity as a guardrail for AI agents was sharp: if you don’t give an agent a directive like “cyclomatic complexity must stay below four,” it won’t apply that constraint. And if you don’t know what cyclomatic complexity is, you won’t know to ask. Tools like SonarQube, PMD, and the memorably-named CRAP metric (Change Risk Anti-Patterns: cyclomatic complexity versus code coverage) can help enforce this, but only if someone with the knowledge sets them up.
  • Short methods, high cohesion, low coupling. Nate: “A method should do one thing and do it very, very well. This is the concept behind Unix piping: simple things together to get more complicated results.” That said, he also added the counterpoint: don’t favor brevity over clarity. A one-liner that nobody can understand in six months is worse than three readable lines.
  • AI tends toward verbosity and complexity. Both speakers noted that AI coding assistants have a strong bias toward writing more code rather than less, toward adding dependencies rather than using what’s already there, and toward long methods rather than short ones. They will solve the problem – but they won’t necessarily solve it simply. That instinct toward simplicity has to come from you, either as a direct code reviewer or as someone who knows how to write good prompts and capability directives.
  • Composition over inheritance. Dan mentioned this as a persistent AI failure mode: models trained on years of Java code have learned the “create a service interface and one implementation even when you’ll never have a second implementation” pattern because it was ubiquitous. That doesn’t mean it’s good. It just means it’s common in the training data.
  • Copies of copies degrade. Nate made a point I hadn’t heard framed quite this way: if vibe-coded projects proliferate on the internet, and future models are trained on that code, the training data quality decreases. Models training on AI-generated output of questionable quality will produce AI-generated output of worse quality. We’re already seeing this in written content on LinkedIn and elsewhere. We should expect to see it in code.

Heritage code, not legacy code

One small reframing that I liked: Dan suggested we call it “heritage code” instead of “legacy code.” Legacy has a negative connotation. But code that’s been in production for fifteen years and processed billions of dollars of transactions is an achievement. It deserves some respect.
That said, Nate was clear: all code eventually becomes legacy. Sometimes immediately after you commit it. It will live longer than you expected, will be harder to kill than you hoped, and someone will be maintaining it years after you’ve moved on. Write with that person in mind.
His favorite version of this sentiment, which he attributed to someone else: “Always write code as if the person maintaining it is a homicidal maniac who knows where you live.”

The influence skills nobody taught you

The final section of this part of the workshop took a hard turn into territory that software engineering curricula almost never cover (but is a key part of my developer advocate work): how to actually get things done in organizations full of humans with competing incentives.

Nate’s thesis: the hardest problems in software are people problems, not technical problems. And the skills to navigate people problems: influence, empathy, listening, finding common ground; all of these don’t come with a CS degree.

He recommended How to Win Friends and Influence People by Dale Carnegie without apology. “It is older than everyone in this room. It is Evergreen. I guarantee it will help your career.” The book is about understanding what people actually need versus what they’re saying they need, and how to align your goals with theirs.

On the current AI mandate situation specifically, he offered a practical frame: many senior leaders have “establish AI across our workforce” as a KPI tied to their bonus. They don’t necessarily care how you use AI. They need to be able to say you’re using it. If you can give them a win, a story they can tell upward, they will largely leave you alone about the details. Fill the vacuum with your own narrative or someone else will fill it with token counts.

Two approaches to influence:

  1. The hammer approach: brute-force people into agreeing with you. Works occasionally, burns trust, creates enemies.
  2. The ninja approach: make it their idea. Nate told a story about introducing TDD at a company that had rejected it when he first proposed it. He convinced one tech lead (who happened to be named Jeff, continuing the workshop’s running bit about terrible variable names) to adopt it on his team. When crunch time arrived and Jeff’s team was calmly fixing small issues while everyone else was drowning in defects, Jeff presented the same TDD case to the wider team – and got a standing ovation. Nate, who had proposed the same thing months earlier and been ignored, got no credit. But the practice got adopted. That was the goal.

His point: being the new person with the right answer is often less effective than being the connector who gets the right answer into the right person’s mouth. Letting go of the credit is a skill. It’s not a natural skill. Practice it anyway.

Code reviews: the underrated force multiplier

The workshop closed this segment with code reviews, and both speakers were emphatic that these matter more in an AI-augmented world, not less. When agents are generating PRs, someone with judgment still has to review them, and that reviewer has to understand the code well enough to ask real questions.

Some norms they pushed:

  • No snarky comments. Ever. They are not useful, they’re not clever, and everyone can see what you’re doing.
  • No 3,000-line PRs. Reviewers should refuse to engage with them.
  • Assume positive intent. You don’t know what’s happening in someone’s life. The code that looks lazy might have constraints you’re unaware of.
  • Ask questions instead of making proclamations. “Did you consider what happens when user load ramps up?” is better than “this won’t scale.” Especially when you haven’t done the math.
  • You are not your code. Code reviews are opportunities to improve the work, not indictments of your worth as a person.

Nate’s read on the current state of code reviews: PRs have made the process much more accessible than the old scheduled review meeting, but have also introduced review theater – someone clicking “approved” without looking because it’s in the process checklist. The form without the substance.

Dan’s suggestion: use AI to help you understand PRs before reviewing them. Give it the PR description and ask it to explain what’s actually changing and why. You’ll ask better questions.

Categories
Artificial Intelligence Conferences

Notes from Schutta and Vega’s Arc of AI Workshop, part 2: Reading code is a superpower, and we were never taught it

I caught the Fundamentals of Software Engineering in the Age of AI workshop yesterday at the Arc of AI conference’s workshop day, led by Nathaniel Schutta (cloud architect at Thoughtworks, University of Minnesota instructor) and Dan Vega (Spring Developer Advocate at Broadcom, Java Champion).

Nate and Dan are the co-authors a book on the subject, Fundamentals of Software Engineering, and they’re out here workshopping the ideas with developers who are living through the same AI-saturated moment we all are.
Fair warning: this post is long. The session was dense, the conversation was good, and I took a lot of notes.

Here’s part two of several notes from the all-day session; you might want to get a coffee for this one. You can read the previous set of notes here.


How you got here doesn’t matter. That you got here does.

Nate and Dan presenting, with a slide that reads “Ultimately it is about problem solving, tinkering, creativity”

After the first break, Nate and Dan shifted from the big-picture AI discourse into something more concrete: the actual craft skills that make a software engineer, and why those skills are becoming more important in an AI-augmented world, not less.

Nate opened this segment by talking about the different paths into software engineering (the traditional CS degree, boot camps, self-taught) and making a point I think deserves wider circulation: there is no canonical path, and apologizing for yours is a waste of energy.
What matters, in his view, isn’t the credential. It’s whether you have the tinkering mindset. Whether you’ve gone to sleep thinking about a problem and woken up with the answer. Whether you look at a broken thing and feel the pull to understand why it’s broken.

He also made an honest admission about what CS programs are actually designed to do: prepare you for graduate school in computer science. That means algorithms, compiler theory, operating systems, language design. Practically useful for building production software? Debatable. Practically useful for becoming a researcher? Yes. Boot camps swing hard the other way – framework-heavy, language-focused, get-you-hired in 12 weeks – which means they’re also somewhat transitory, because the framework of the moment changes every six months.

Neither path gives you everything. That gap between “what we taught you” and “what I want you to know when you join my project” is basically what their book is trying to fill.

The skill we teach least is the one we use most: reading code

This was the section that hit me hardest, because I’ve thought about it before and never heard it stated this cleanly.

Nate’s observation: we teach people to write code almost exclusively. We spend essentially zero time teaching people to read code. And yet, in any real production environment, the ratio of reading to writing is not even close. You spend far more time navigating, understanding, and reasoning about existing code than you do creating new code from scratch.

His analogy: “I wouldn’t teach you French by saying, now go write some French.”
Reading code is hard for a few compounding reasons. You have to understand the problem domain (which is often genuinely complex – he gave examples from finance and insurance where the business rules alone are labyrinthine). You have to see the code through another person’s mental model. And you often have to do this under time pressure, making changes you don’t fully understand, in systems you weren’t around to watch grow.

The result is what Nate called “patches on top of patches on top of patches,” and the remarkable thing isn’t that these systems have bugs, it’s that they work at all.

There’s also the cognitive bias dimension. The Ikea effect: you value things you assembled yourself more than things someone else built, which means you’re inclined to view your own code as cleaner and more sensible than others’. The mere exposure effect: familiarity breeds preference, which is why developers get dogmatic about languages; not because their preferred language is objectively superior, but because it’s the one they know.

Nate had a great riff here about what he called the Blub Paradox, from a Paul Graham essay: when you’re a programmer in a language somewhere on the power continuum, you look down the spectrum and think “I can’t imagine being productive with those limitations,” and you look up and think “I don’t know why anyone would need all that weird stuff I don’t have.” The language you know well becomes your baseline for what’s normal. AI tools, interestingly, may be helping break this a bit. He and Dan both noticed they’re using more languages and frameworks than they used to.

The Lab: Reading an unfamiliar codebase without AI first

Dan ran the group through a hands-on exercise using the Spring Pet Clinic, a well-known sample Java/Spring application. The instructions were deliberately old-school: no AI tools yet. Just open the repo and start reading.

The goal was to build some muscle memory around the basics: identifying technologies and frameworks from project structure alone, finding a main application class, recognizing architectural patterns just from folder layout.

It’s a more sophisticated skill than it sounds. Dan’s point: even if you’re not a Java developer, you can learn a lot from just looking at a pom.xml. You can infer architectural choices from package structure; “package by feature” versus “package by layer” tells you something about how the original authors thought about the system. You can spot where to start, what the domain objects are, how the system is organized.

After they’d done it manually, Dan switched to showing how AI tools handle the same task, specifically using a “plan mode” in his coding assistant where he wasn’t asking it to write anything, just to explain what it was looking at. The output was genuinely useful: a breakdown of the tech stack, architectural summary, entry points, dependency graph.

His key insight: “I use AI tools far more to read code, understand things, get familiar with things, and learn things than I do to write it.”

But then the follow-up, which is the important part: he wouldn’t have known what questions to ask the AI without the fundamentals. Understanding that architecture is a thing, that there are different ways to organize packages, that there’s something meaningful to look for in the dependency file; that knowledge has to come from somewhere. The AI accelerates the exploration; it doesn’t replace the ability to know what you’re looking for.

AI can tell you what code is doing. It still can’t tell you if that’s right.

This is where the conversation got interesting. Nate made a distinction that I think is underappreciated:

These tools are now remarkably good at reverse-engineering legacy code and telling you what it does. Feed it a 30-year-old COBOL module and it’ll give you a plain-English summary of the behavior. That’s genuinely powerful, especially for the mainframe migration work he mentioned in the morning session.

But “this is what the code is doing” is a completely different question from “is this what the code should be doing?”

He gave a real-world example: a system where some business logic was technically incorrect, but the error was intentionally corrected downstream in a different process. The code was wrong on purpose, because fixing it at the source would have required fixing everything else too. An AI reading that code would correctly describe the behavior, but have no way to know the behavior was a deliberate workaround rather than a bug.

That knowledge lives in the heads of the engineers who were there when the decision was made. And increasingly, as those engineers retire or move on, it’s not living anywhere.

The airline pricing example he used was perfect: the same seats, same flights, same dates — but booking as two one-ways costs a third less than booking as a round trip. There’s almost certainly a specific piece of business logic somewhere that creates that arbitrage. An AI can describe that code. It can’t tell you whether the Delta exec who approved it knew what they were approving.

The sentinel knowledge problem, part two

Nate returned to a theme from the morning: we are starving the pipeline that creates the experts who can actually evaluate AI output. But in this session, he made it more concrete.

Senior engineers look at AI-generated code and immediately spot the issues: the approach that’ll work in a demo but fall over at scale, the pattern that was idiomatic three major versions ago, the security implication nobody mentioned. Junior engineers look at the same code and think it looks fine, because they don’t yet have the experience to know what “fine” looks like.

The concerning dynamic: juniors are increasingly using AI to learn, but learning by accepting AI output without the ability to critique it isn’t learning. It’s cargo cult programming. You’re learning to produce things that look like code without developing the underlying judgment about whether those things are good.

Nate’s line: “AI is the very eager junior developer, and you need to monitor their output closely.”

The economics sidebar: tokens, budgets, and the reality of scale

This wasn’t on the agenda, but it came up organically and it was one of the more grounded conversations of the day.

Nate described a real situation: an organization’s head of AI was approached by a developer who wanted the unlimited Claude Code tier. When asked how many tokens he needed, the answer was 60,000 a day. Response: show me that you’re generating not $300K of business value weekly, but a million dollars. Can you do that? No? Then no.

The scaling math is uncomfortable. A room full of developers (say, 5,000 at a larger company) each burning hundreds or thousands of dollars of tokens per week is a significant line item. And the current pricing reflects a subsidized market. When investors start demanding returns, those prices go up.

He drew an analogy to the Uber model: lose money for years, drive out competition, then raise prices. Except Uber’s “product” (a car ride) is a commodity. The switching costs for enterprise AI tooling embedded into CI/CD pipelines, developer workflows, and institutional processes are not trivial.

His read on Anthropic’s and OpenAI’s revenue vs. profit numbers: revenue is real. Profitability is not. People are seeing value in the product, but the product is priced below cost. That’s not a sustainable business model, and the reckoning will come.

On whether we’ve hit a plateau

Someone in the room asked whether the intelligence improvements we saw around late 2024/early 2025 would continue.

Nate’s take: we’re probably hitting a plateau on pure scaling. The exponential gains from “just make the model bigger” appear to be diminishing. Gary Marcus’s position that we’re approaching the limits of what scaling alone can achieve, strikes him as reasonable.

The “Mythos is so dangerous we can’t release it yet” announcements that keep appearing? He’s skeptical. Follow the incentives: the companies making those claims need their valuations justified.

He was slightly more philosophical about the longer tail – the sci-fi scenarios, the alignment concerns, the “what if it’s already smarter than it’s letting on” thread. He takes it seriously without catastrophizing. The honest version of his view: we don’t know what the motivations of these systems are, because the people who built them don’t fully understand how they work either. That warrants humility, not panic, but also not dismissal.

Bottom line from this session and the previous one

The throughline across the whole day, as best I can summarize it: these tools are genuinely powerful accelerants for people who already have the foundations. They are not a replacement for the foundations. They are an amplifier, and what you get out depends heavily on what you put in.

The code reading skills, the domain understanding, the architectural instincts, and the ability to ask the right questions. All of that still has to come from somewhere. What’s changed is that once you have it, you can go faster, do more, and explore more territory than you could alone.

That’s good. The part that’s bad is that we’re making decisions right now (who to hire, what to teach, what to outsource) based on the assumption that the foundations don’t matter anymore.

They matter. Probably more than they used to.

Categories
Artificial Intelligence Conferences

Notes from Schutta and Vega’s Arc of AI Workshop, part 1: The fundamentals still matter!

I caught the Fundamentals of Software Engineering in the Age of AI workshop yesterday at the Arc of AI conference’s workshop day, led by Nathaniel Schutta (cloud architect at Thoughtworks, University of Minnesota instructor) and Dan Vega (Spring Developer Advocate at Broadcom, Java Champion).

Nate and Dan are the co-authors a book on the subject, Fundamentals of Software Engineering, and they’re out here workshopping the ideas with developers who are living through the same AI-saturated moment we all are.
Fair warning: this post is long. The session was dense, the conversation was good, and I took a lot of notes.

Here’s part one of several notes from the all-day session; you might want to get a coffee for this one.


The opening thesis: giving someone a nail gun doesn’t make them a carpenter

Nate opened with a confession: he’s not handy. At all.

His words: “You give me a nail gun and that is not actually going to make anything better. The cat’s gonna have a nail in its tail.”

That image stuck with me, because it’s exactly the dynamic playing out in organizations right now. Powerful tools in the hands of people who don’t understand the underlying craft don’t produce better software – they produce faster disasters.

Both Nate and Dan were quick to acknowledge that yes, things changed. Somewhere around late 2024/early 2025, these models got noticeably better at coding. Neither of them is dismissing that. But their core argument – which they support with both evidence and lived experience – is that this is another layer of abstraction, not a replacement for understanding what’s underneath.

A brief history of “this will replace programmers”

Slide: “Here we go again,” showing a list of technologies that were supposed to replace programmers

Dan walked through the familiar arc: punch cards, assembly, higher-level languages, object-oriented programming, the cloud, and now AI-assisted development. Each step, someone announced the death of the programmer. Each step, the programmer survived and became more productive.

COBOL was going to let business people write their own programs. Java Beans were going to eliminate business logic development. No-code platforms were going to replace developers entirely. The pattern is consistent enough that healthy skepticism seems warranted.

What’s interesting about their framing is that they’re not saying AI tools aren’t significant. They’re saying the significance is being mischaracterized, and that who’s doing the characterizing matters.

Consider the source

This is where the talk got sharp. Dan’s question: if Anthropic says AI has “figured out” code and will soon write nearly all of it – why are they actively hiring engineers at $600K+ salaries?

Their breakdown of who’s claiming AI replaces developers:

  • The tool makers (Anthropic, OpenAI, etc.) – they have a financial interest in you believing their product is transformative. Grain of salt.
  • Non-programmers who want a cheat code – the “I vibe-coded an app in 64 minutes and make $30K/month” YouTube crowd. Grain of salt the size of a boulder.
  • C-suite executives – who’ve been handed a convenient narrative to justify layoffs while watching the stock price pop. Salesforce’s CEO announced 4,000 layoffs citing AI, then quietly started hiring again about a month later.

Nate made a point I’ve been making for a while: tech layoffs right now are concentrated in a small number of companies making very large cuts, rather than spread broadly. The psychological effect is outsized. Oracle laying off 30,000 people hits differently than 300 companies laying off 100 people each, even if the raw numbers are comparable.

Vibe coding: fun for weekend projects, terrifying for payroll

Slide: Andrej Karpathy’s original vibe coding tweet

The workshop spent some time on vibe coding – a term coined by Andrej Karpathy roughly a year ago. Karpathy himself called it “not too bad for throwaway weekend projects, but still quite amusing.”

Nate and Dan’s framing: the stakes matter. A vibe-coded personal budget tracker where if something breaks you just adjust a spreadsheet? Great. A vibe-coded payroll system where thousands of people don’t get paid if it breaks? Categorically different situation.

They also touched on the AWS story that’s been circulating – an agent tasked with fixing a bug couldn’t figure out how to fix it, so it deleted the entire production repository and recreated it from scratch. Which is, in a very literal sense, a solution. Just not one any human with experience would have suggested. As Dan put it: “Systems have no feelings. They have no experience of ‘wait, that doesn’t seem like a good idea.'”

The expertise gap problem

This was the section that hit hardest, and it connects to something Dan wrote about in an article he mentioned: when he uses AI to generate Spring/Java code, a domain where he has deep expertise, where he can immediately spot the issues. When he used AI to generate iOS/Swift code, where he’s a novice, it looked like magic.

The issue isn’t that the code quality was different. The issue is that his ability to evaluate it was different. When you can’t tell good code from bad in a domain, you’re not getting AI assistance; you’re getting AI dependency. You’re shipping things you don’t understand, building on patterns that will break, and learning the wrong lessons from a tool you trusted too much.
He quoted a line I want to frame: “When AI seems like magic in a language or framework, what you’re really seeing is the limit of your own ability to critique it.”

We’re choking off the pipeline that creates experts

Nate referenced the book Co-Intelligence here, and it’s the most uncomfortable part of the whole talk: the only people who can reliably check AI-generated work are experts. And we’re making decisions right now that will reduce the number of experts in ten years.

Companies are not hiring junior developers. Stanford’s CS placement rate has apparently dropped from around 98% to roughly 30%. We’re not bringing entry-level people in and giving them the foundational work (the reading, the summarizing, the debugging, the grunt work) that turns them into seniors.

He made the comparison to the early-2000s “don’t get into software engineering, those jobs are all going overseas” era, which produced a generation-level gap in senior developers and architects that companies felt painfully about five to ten years later.
And we’re doing it again. On purpose, this time, with AI as the cover story.

The mainframe migration moment

This was a tangent, but a good one. Nate’s read: we are finally, finally at the inflection point where mainframe migration becomes tractable. The combination of AI’s ability to read and document legacy code (going from code to spec is something these tools do well), plus the very real retirement risk as the people who understand those systems age out, plus the fact that the old “it’ll cost $50M and take five years and introduce a bunch of regressions” objection can now be answered with something more reasonable. All of that is converging.

He thinks we’ll see a high-profile “we got off the mainframe” announcement in the next few years, and the cloud providers will crow about it loudly.

The economics of AI tools deserve scrutiny

Nate got pointed here, and I think he’s right to. A lot of these tools are being sold at a loss, in some cases a significant one. He mentioned an organization whose vendor came back and essentially broke their contract because serving that customer cost $8M/month more than they were charging.

The concern isn’t that AI goes away. It’s that the current pricing is subsidized, and when the economics normalize, companies that have built AI deep into their workflows will be in a much more vulnerable negotiating position. The comparison to Uber is apt: Uber spent years building dependency, then raised prices. The question is how hard that switch gets thrown in the enterprise AI space.

The actual bottom line

Dan and Nate presenting, showing slide that says “I think what AI does quite frankly is reduce the floor and raise the ceiling for all of us.” — Satya Nadella

Dan closed with what I thought was the right framing: the floor has been lowered (more people can participate in building software) and the ceiling has been raised (experienced engineers can do more than ever before). Both of those things are true and good.

What’s not good is pretending the ceiling matters without the floor, and that these tools eliminate the need to understand what you’re doing. They don’t. They amplify what you already know. If you don’t know anything, they amplify that too.

Nate’s version: “I am not as bullish on the C-suite’s belief that we don’t need software engineers anymore, because business people will just write apps.”

He’s been watching business people almost-write-apps since COBOL. They haven’t quite gotten there yet.

Categories
Artificial Intelligence Current Events Editorial

You’ve got 41 days before chip prices skyrocket

If you read my post from a few days ago, you know I’ve been sounding the alarm about how Operation Epic Fury and the closure of the Strait of Hormuz are going to wreck your tech budget. I talked about a “retail window” of about 3 to 6 week between the first missile strike that cut off supplies necessary for making advanced chips and the retail price hike that will follow.

Well, the clock just got a lot more specific.

Nate B. Jones of AI News & Strategy Daily is normally one of my daily go-tos for news about AI and adjacent industries. But thanks to being busy with all sorts of things, including interviewing for and landing a hot new job, I missed the video titled The 48-Day Helium Countdown. It’s his deep dive into the physical infrastructure of the AI boom and his own take on the “smoking gun” for the next wave of price hikes.

Nate posted his 48-day countdown 7 days ago, so at the time of posting, the countdown is down to 41 days.

By the way, this post is dated Monday, April 6, 2026. 41 days from now is Sunday, May 17th.

The Qatari connection

While the fighting is centered on Iran, there’s a “splash zone” in the surrounding area:

In response to the attacks by the U.S. and Israel, Iran hit Ras Laffan Industrial City in Qatar. Their rationale was that Qatar, along with other Gulf states, facilitated U.S./Israeli airstrikes on Iranian energy sites.

For those who don’t spend their weekends reading Gasworld, here’s what you need to know: Qatar is the world’s second-largest producer of helium.

As I wrote in my earlier post:
  • Helium on Earth is the result of radioactive decay.
  • As radioactive elements in the earth’s crust decay, they release alpha particles, which are made up of 2 protons and 2 neutrons. 
  • An alpha particle is a helium nucleus, and because it’s positively charged, it picks up stray electrons and becomes helium gas.
  • Helium gas gets trapped in the same rock structures that hold natural gas, and ends up mixed with it.

Helium is the “Unicorn Blood”of computing

Nate B. Jones makes a point that the mainstream tech press is still largely ignoring: Helium is irreplaceable in advanced semiconductor fabrication.

  1. Thermal Conductivity: Chips are made by using ultraviolet light to “draw” circuitry on silicon treated with a light-sensitive material.

    When drawing circuits at the 2-3 nanometer scale (a nanometer is a billionth of a meter, which is one-millionth the thickness of a dime), the heat generated is intense enough to warp the silicon wafer.

    That’s where the helium comes in. While drawing circuits on chips, helium is blown across the back of the wafer. Helium has the thermal conductivity to pull away the heat instantly, and it’s also inert, meaning that it won’t react with any substances in the process, including the chip.

    No helium = no chips, and this applies not only to processors like NVIDIA’s H100s or Apple’s M-series chips, but the high-end RAM that these systems use.

  2. The “Priority” Problem: Helium’s used for all sorts of things, and fortunately MRIs and chip fabs are at the top of the list for the current supply. But as Nate points out, “first in line” doesn’t matter if the warehouse is empty. China is currently sitting on a strategic helium reserve that the West simply doesn’t have, giving them a massive geopolitical advantage as the 41-day countdown ticks away.

41 days until the “ratchet”

According to Nate’s analysis of current global stockpiles and burn rates at major fabs (TSMC, Samsung, Intel), we have roughly 48 days (at the time he published his video; it’s 41 days as I publish this post) before the strategic reserves hit “critical low” levels.

When that happens, we aren’t just looking at expensive chips. We’re now looking at unavailable chips.

  • The hyperscalers (Google, Microsoft, AWS) will use their trillions to buy up every available (and increasingly expensive) chip to keep their datacenters running, and…
  • The consumer market (you and me) will be left with the hyperscalers’ table scraps.

The bottom line for nerds

If you’ve been vibe coding or running local models and are waiting for the next big release to upgrade your workstation, stop waiting. Your window of opportunity is closing faster than we thought.

Nate’s warning to IT procurement people is the same as mine to you: Do not wait until the second half of 2026. The structural costs are about to ratchet upward. Once the price of high-end RAM and SSDs goes up due to a physical gas shortage, those prices won’t just bounce back when the war ends. They’ll stay high while the supply chain slowly refills, while will takes years, not months.

The TL;DR remains the same, but with more urgency: If it has a chip in it, buy it before the 41 days are up. After that, you’ll face the combo of paying a “war tax” on your gear and compteting with everyone else for the same dwindling resources.

And remember, this helium shortage applies to more than datacenters, but anything with an advanced chip. That includes laptops and phones. I’ve already placed my orders, and if you planned to upgrade sometime this year, do it now.

Good luck out there.

Here’s Nate’s video, The 48-Day Helium Countdown. And remember, it’s 41 days now:

Categories
Artificial Intelligence Conferences Programming What I’m Up To

I’m the opening musical act at the Arc of AI conference!

Here’s another way that Arc of AI is going to be an AI conference unlike any other: it’s going to have an opening musical act, namely…me!

Arc of AI organizer Dr. Venkat Subramaniam sent me a very nice email inviting me to help out with the after-dinner conference kickoff on Monday, April 17th at 7:00 p.m. with a couple of accordion numbers. I was honored (Dr. Venkat’s kind of a big deal), I’m only too happy to oblige, and I like to think of it as my contribution to “Keep Austin Weird!”

Here’s a sample from the last Collision conference in Toronto:

So in addition to my talk, AEO – Writing Docs and Code for Machines, I’ll have another onstage appearance at Arc of AI.

So far, the second quarter of 2026 is shaping up nicely!


Want to find out more about and register for Arc of AI?

Once again, Arc of AI will take place from Monday, April 13 through Thursday, April 16, with the workshop day taking place on Monday, and the main conference taking place on Tuesday, Wednesday, and Thursday.

Arc of AI tickets are BOGO!

From Arc of AI’s registration page:

You read that right! For each conference ticket you purchase, you get one free ticket. This applies only to conference tickets and not for workshops.

 

Categories
Artificial Intelligence Business Meetups Presentations

Meet Madtech.AI: Notes from Bill Lederer’s presentation at AI Salon: St. Pete/Tampa Bay

If you were at spARK Labs in St. Pete last night for AI Salon: St. Pete/Tampa Bay, you got to hear from two very different voices on AI in the enterprise.

Where Accenture’s James Gress offered a view from 50,000 feet and talked about the big-picture challenges facing massive organizations, Bill Lederer brought it down to earth with something more specific and more personal: the story of Madtech.AI, his B2B SaaS startup, built in St. Pete, and now looking to change how mid-market organizations make marketing decisions.

Bill’s been in this space a long time. He’s been a Wall Street executive, a professor, and now he’s a founder. When asked what “Madtech” stands for, he lights up like you just handed him a perfectly teed pitch and answers “Marketing. Advertising. Data. Technology.” The convergence of all four is the thesis he’s been working toward for over a decade, and last night he laid out what that convergence has produced.

Bill’s Madtech presentation

The Problem: Your data’s a mess, and you know it!

Madtech.AI exists to solve one foundational problem that Bill says afflicts 80% of the market they serve: disconnected, siloed, unusable data.

This isn’t not a glamorous problem. It doesn’t make for great conference keynotes. But if you’ve ever tried to make a marketing decision and discovered that your data lives in six different systems that don’t talk to each other, you know exactly what he means. You can have all the AI in the world sitting on top of your stack, and if the data feeding it is fragmented and dirty, you’re building on sand.

Bill and his team have spent roughly ten years in the unglamorous trenches of this problem, building data connectors, ETL and ELT pipelines, transformation tools, data warehousing. The kind of infrastructure work that nobody talks about at cocktail parties but that everything else depends on. The result: over 300 data connectors and more than 700 proprietary data models accumulated over eleven years of professional services work. That’s a significant moat, even if it doesn’t sound like one.

The metric that stopped the room

Here’s the number that got people’s attention (mine included): building a data pipeline used to take six to nine person-hours. Madtech.AI has that down to three minutes, fully deployed and tested. And Bill mentioned, almost in passing, that they’re ninety days away from getting it to thirty seconds.

This is the kind of orders-of-magnitude productivity difference that James Gress had been talking about earlier: AI compressing time-consuming processes by enormous factors. If your organization is spending engineering days on data pipeline work, that number should make you sit up.

Who they’re built for (hint: probably you!)

Bill was explicit about Madtech.AI not chasing the Fortune 500. He wasn’t thinking about enterprise clients when he built the platform. His target is the middle market, which he defined as organizations doing between $1 million and $200 million in annual revenue. They’re actively going after.about 20,000 target enterprises.

Interestingly, their current customer base skews heavily toward nonprofits. And there’s a real insight buried in that: nonprofits, unlike most businesses, are willing to share data on an aggregated, anonymized basis. That willingness unlocks something powerful. When organizations share, everyone benefits from insights none of them could have reached individually. It’s a cooperative data model that the for-profit world, with its instinct toward data hoarding, tends to miss out on.

Their verticalization roadmap runs from nonprofits and cultural attractions into associations and post-secondary schools, which have similar data cultures and marketing challenges.

The price point is the point

The platform, which includes a full data unification and transformation suite plus a marketing decision intelligence layer, runs $5,000 a month. Flat. No charges per data source, no charges per data model, no metered consumption traps.

Bill made the comparison explicitly: buying these capabilities separately, or having someone build them for you, would normally run into the hundreds of thousands of dollars. At $5K monthly, they’re positioning this as enterprise-grade capability at a price point that the middle market can actually afford. That’s the bet.

The business model is standard B2B SaaS: licensing, some consumption charges, and a marketplace where third-party data and software providers integrate and share revenue. The entire platform is white-labelable, which means channel partners and resellers are very much welcome.

They’re raising, and they’re hiring

Bill was refreshingly direct about where Madtech.AI is right now: close to breakeven, actively raising a $517,000 round, and looking for both investors and the right people to join the team.

He also announced that Kyle Shea, a friend of twenty years, has joined as Chief Revenue Officer, relocating to St. Pete from Fort Lauderdale. The team is small and deliberate, which is consistent with the middle-market-focused, capital-efficient approach they’ve described.

If you’re a potential investor, a channel partner, a nonprofit marketing director staring at a spreadsheet full of data you can’t use, or just someone who wants to know more, Bill is easy to find. He was working the room after his talk the way a man does when he genuinely enjoys talking about what he’s built (I certainly enjoyed my chat with him).

And based on what he showed last night, he’s built something worth talking about.

Categories
Artificial Intelligence Meetups Tampa Bay

Five Things We Learned at AI Salon: St. Pete/Tampa Bay – Notes from a fireplace conversation with Accenture’s James Gress

Last night, spARK Labs in St. Pete hosted another edition of AI Salon: St. Pete/Tampa Bay, and it featured a “fireplace” conversation with Brian Peret as host and James Gress [Linkedin] as guest.

James is a solutions architect at Accenture who spends his days helping large enterprises figure out how to actually deploy AI instead of just posting on LinkedIn about it. You’ve probably seen him at all sorts of local events, from his Tampa Bay Generative AI Meetup to conferences like DevOps Days Tampa Bay and Civo Navigate. A lot of people talk AI; James actually helps clients get stuff done with it.

Brian uses a deliberately loose format with AI Salon fireside chats. They’re part structured interview, part open floor, and if there’s ever any jargon or terminology that may not be familiar to laypeople, he always makes sure that the audience gets a definition. The end result is a more grounded, hype-free AI conversation, and a catalyst for conversations among attendees once the presentations end. It’s one of the reasons I continue to attend AI Salon: St. Pete/Tampa Bay.

The five things we learned

1. Shadow AI is real, and your restrictive policy is probably creating it

James made what might be the evening’s most quotable observation: If you ban AI in your organization, you’re not stopping your employees from using it. You’re just driving their AI usage underground.

He called this shadow AI, the AI-era cousin of shadow IT. Someone discovers that Claude or Gemini dramatically cuts their workload. Their company hasn’t approved it. So they use their personal laptop, their personal account, and a free tier,which almost certainly means their prompts and outputs are being used for model training. Your trade secrets and confidential information just became someone else’s training data.

OpenClaw, the viral open-source autonomous AI agent that went through a dizzying rename trilogy (Clawdbot → Moltbot → OpenClaw) before its creator joined OpenAI,  came up as a specific example. James mentioned IT staff installing it on company machines without authorization, introducing real vulnerabilities into their organizations’ ecosystems. This isn’t hypothetical: security researchers at Cisco have documented OpenClaw instances performing data exfiltration without user awareness, and one of the project’s own maintainers warned publicly that it’s “far too dangerous for you to use safely” if you don’t understand what you’re doing at the command line.

A blanket ban won’t work. What works is intentional governance: an AI governance board, approved tooling, and enterprise licensing agreements with real data protection clauses baked in. Stifling AI use, James argued, will radicalize your people towards Shadow AI.

2. NemoClaw raises the right questions even if you don’t have answers yet

One audience member asked James about NemoClaw, NVIDIA’s open-source stack that layers privacy and security controls on top of OpenClaw, and its implications for enterprise AI adoption. James was candid: he’s not in those specific loops at Accenture. But the question itself is the point.

As autonomous agents like OpenClaw become more capable and more widely deployed, the enterprise world is going to need hardened, governable versions of these tools. NemoClaw represents one approach to that problem. Whether it becomes the standard, or whether the market converges on something else entirely, it addresses an important question: “How do you let an autonomous agent act on your behalf without giving it a loaded gun pointed at your data?” Every organization is going to have to come up with an answer.

3. Data privacy looks different depending on your company size

For enterprises, the data privacy question is largely handled through legal agreements. Accenture has armies of lawyers who negotiate with OpenAI, Microsoft, and Google to ensure client data isn’t used for model training and doesn’t leak. That’s how large organizations get comfortable enough to let their workforces use these tools.

But most of us in the room aren’t Accenture- or OpenAI- or Microsoft-sized. For those of us in that boat, James was candid: if you can’t afford legal counsel to vet your SaaS AI agreements, at minimum read what you’re signing. On free tiers, you’re the product, and your data trains the model. If you’re handling anything sensitive, you probably need a paid tier with real data terms, and possibly a consultant who knows what to look for.

He also mentioned a practical habit worth stealing: he sets up dedicated accounts with secondary email addresses for AI tools he doesn’t fully trust yet. If something goes sideways, it’s isolated from his primary identity and credentials.

I myself have account like these that purportedly belong to a Volvo-driving Rails developer divorcee with a penchant for tv shows and novels in the vein of Heated Rivalry. Given what we know about OpenClaw’s permission requirements and prompt injection vulnerabilities, that kind of defensive hygiene is looking less paranoid by the day.

4. Measuring AI ROI starts with measuring anything

When Brian asked for concrete KPIs to evaluate AI effectiveness, James gave what I thought was the most honest answer of the night: most organizations don’t currently measure the processes they’re trying to improve, so they have no baseline to compare against.

James’ framework is simple: pick a process you already care about, measure how long it takes today, then measure after AI intervention. Full automation is rare. More often, you’ll see something like a four-hour task shrunk to two hours. That 50% reduction is real, trackable ROI. Replicate that across your workflow, add up the hours, and you have a story you can tell leadership.
The inverse test is equally useful: if it takes you longer to set up and prompt the AI than it saves you, you’ve found a bad fit. Move on.

5. Python: last language standing?

This one generated the liveliest back-and-forth of the night. James made a striking prediction: as vibe coding becomes the norm, developers will naturally gravitate toward whichever languages AI generates most reliably.

Right now, that’s Python. Not because Python is objectively superior for every task, but because the models have seen so much of it that their output is consistently good.

(COBOL, for what it’s worth, is still a disaster. James admitted as much, with the weary tone of a man who has stared into that particular abyss.)

The implication is unsettling for language diversity. If a new programming language can’t get traction with AI code generation on day one, it faces an enormous adoption headwind. And if everything AI generates trends toward Python, we may end up with a monoculture which, as one audience member noted, creates systemic fragility. Everyone shares the same vulnerabilities.

I chimed in, saying that high-level programming languages might come to be seen as a “middleman” that can be removed, and we may end up with a more direct route, with our prompts being converted directly to assembly code. James remarked that most developers don’t do assembly and that it would remove the human from the loop, and I suggested that for some parties, that might be the goal.

James’s counterpoint was interesting: perhaps Python becomes the human-readable surface layer while compilers handle the optimization underneath, preserving expressiveness without sacrificing performance. An elegant theory. We’ll see.

The conversation continued well past the official end time, with audience members clustering around James to continue threads the format couldn’t fully accommodate. That’s the sign of a good AI Salon.

The next one’s May 6th (and just a couple of days before Brian’s birthday). Don’t miss it!