JOSH: It's Friday, May 22. This is Build or Be Replaced — powered by ScanBrief.dev. I'm Josh, here with Erik Anderson.
ERIK: Hardware got expensive, robots hate puddles, and old servers still punish lazy engineers.
JOSH: Stick around — Erik's got an AI pro tip at the end about making agents prove their work before they touch production.
[pause]
JOSH: First headline. Consumer electronics may be getting more expensive because memory is getting tight. Erik, why should builders care?
ERIK: Memory is the quiet tax on everything. Phones, laptops, GPUs, edge boxes, NAS builds, all of it. If RAM and flash reprice, cheap local AI gets less cheap.
JOSH: That hits the home lab crowd too?
ERIK: Absolutely. Everyone wants local models until the bill shows up for memory, storage, power, and cooling. The cloud invoice is annoying. The hardware invoice is a commitment ceremony.
[beat]
JOSH: Second headline. Someone asked whether a 48 thousand dollar GPU server was worth it. Six RTX 6000 Ada cards. Apartment power constraints. Real mad scientist energy.
ERIK: That's my favorite kind of post because it's numbers, not vibes. Local inference can win, but only if you keep the machine busy. If it sits idle, congrats, you bought a very expensive space heater.
JOSH: That's direct.
ERIK: True though.
[beat]
JOSH: Third headline. Waymo paused service in Atlanta after robotaxis kept driving into floods.
ERIK: That's the one. Autonomy is easy in a demo and brutal in weather. Water on a road is not a corner case if you run cars in real cities.
[pause]
JOSH: Let's start with memory and GPU costs, because these feel connected. Is local AI getting harder right as everyone wants more of it?
ERIK: Yeah. That's the punchline. Everyone got used to this fantasy where compute keeps getting cheaper, storage keeps getting cheaper, and you can just keep adding context, RAM, swap, GPUs, whatever. Then memory gets tight and the bill punches you in the mouth.
JOSH: What changes first?
ERIK: Consumer devices. Laptops with decent RAM. Mini PCs. Workstations. Network appliances with more flash. Anything with high-bandwidth memory around GPUs. You don't need every part to spike. One constrained component can move the whole build.
JOSH: So builders should wait?
ERIK: No. Builders should buy with intent. Big difference. Don't buy hardware because some thread said local AI is the future. Buy hardware because you have a workload you can name.
[beat]
JOSH: Give me an example.
ERIK: ScanBrief scored 36 items across 54 sources today. That's a workload. Fetch, dedupe, rank, summarize, publish. I can decide what belongs local, what belongs in Claude, what belongs in GPT, and what belongs in boring scripts. That's architecture.
JOSH: Not just "throw a model at it."
ERIK: Exactly. If the job is scraping sources, filtering duplicates, and scoring relevance, I don't need a giant local model for every step. Some of that is Python. Some of that is a database query. Some of that is a model call after the cheap filters already did their job.
JOSH: That's where people waste money?
ERIK: Constantly. They use the most expensive brain on the dumbest part of the task. It's like hiring a principal engineer to rename files. Funny once. Bad system.
[beat]
JOSH: How does that tie back to the 48 thousand dollar GPU server?
ERIK: That build makes sense if the machine has a real queue. Six RTX 6000 Ada cards can move a lot of inference. But the question isn't "is it fast?" Of course it's fast. The question is utilization.
JOSH: How busy is it?
ERIK: Right. If it's running research jobs all day, batch inference, embeddings, evaluation, video indexing, agent tests, then maybe it pays. If it's used two hours a week because cloud pricing feels emotionally offensive, that's not engineering. That's retail therapy with PCIe slots.
JOSH: Wait, really? Even with cloud GPU prices?
ERIK: Yes. People underestimate the boring stuff. Power circuits. Heat. Noise. Driver issues. Failed disks. Backups. Networking. Remote access. Monitoring. Physical security, which in an apartment usually means "please don't trip over the machine."
JOSH: Very official.
ERIK: Certified enterprise carpet deployment.
[pause]
JOSH: You run your own systems though. Where do you draw the line?
ERIK: I run the lab because it teaches me things the cloud hides. Neo and Morpheus make me deal with real limits. CPU, memory, disk, NATS, Docker, systemd, cron, bad deploys, noisy logs. That's valuable.
JOSH: But not everything goes local.
ERIK: Correct. My Bobaverse fleet has 5 agents right now: Neo, Homer, Bill, Echo, and Gandalf. Claude plus GPT. PrimeBus ties them together. The point is not "local good, cloud bad." The point is putting the right job in the right place.
JOSH: What does PrimeBus do in that setup?
ERIK: PrimeBus is the nervous system. It processed 1949 automation events across 8 projects today. Events come in, agents subscribe, jobs fire, reviews happen, guardrails block bad changes. That's not a chatbot. That's infrastructure.
JOSH: And Gandalf is the reviewer?
ERIK: Gandalf is the reviewer and the bouncer. Overnight, 8 code changes were automatically reviewed by Gandalf and merged to production. But the more important number is the blocking. Since April 17, the auto-merger has run 1864 attempts: 730 merged, 1122 blocked by Gandalf, 12 escalated to me.
[beat]
JOSH: The blocked count is higher than the merged count.
ERIK: Good. That's the system working. People hear "blocked" and think failure. Nope. Blocked means the guardrail caught something before production had to teach us the lesson.
JOSH: That's a different way to look at automation metrics.
ERIK: It has to be. If your AI agent merges everything, you don't have automation. You have a liability with an API key.
[pause]
JOSH: Let's move to Waymo. Robotaxis driving into floods sounds like the kind of story people share because it feels absurd.
ERIK: It's absurd, but it's also the real autonomy problem. Roads are not static. Rain changes the surface. Reflections change perception. Water hides lane markings. Depth gets weird. Humans are not perfect, but humans see a flooded street and usually think, "Nope."
JOSH: Usually.
ERIK: Usually. There's always one guy in a lifted truck trying to become a local news segment.
[beat]
JOSH: What's the engineering lesson?
ERIK: Autonomy needs refusal. That's the lesson. The system has to know when not to act. Not just "can I complete the route?" but "should I stop, reroute, call for help, or hand this off?"
JOSH: That sounds a lot like AI agents.
ERIK: Same pattern. Agents fail when builders only reward completion. "Finish the task. Merge the code. Send the email. Close the ticket." That's how you get confident garbage.
JOSH: So the missing feature is hesitation?
ERIK: Not hesitation. Judgment. Hesitation sounds random. Judgment is policy plus telemetry plus escalation. HumanRail exists because some work should route to a human when the model is not confident or the risk is too high.
JOSH: Give me a real version of that.
ERIK: Website change request comes in through email-reactor. If it's "change this button text," the system can handle it. If it's "replace the pricing page and update all legal language," that's not a blind commit. It needs review. Maybe client approval. Maybe a diff. Maybe a human.
JOSH: Because the cost of being wrong changed.
ERIK: Exactly. Same with a robotaxi. Driving one more block is cheap until the block is underwater.
[pause]
JOSH: How should builders design for that?
ERIK: Start with failure modes. Not prompts. Not model choice. Failure modes. Ask what a bad action looks like. Then put a circuit breaker in front of it.
JOSH: What's a circuit breaker in an AI workflow?
ERIK: Could be a confidence score. Could be a test suite. Could be a second model review. Could be a policy check. Could be requiring a human approval when files touch billing, auth, legal, Terraform state, Kubernetes manifests, NSO service templates, anything that can hurt you.
JOSH: That's a long list.
ERIK: Production is a long list.
[beat]
JOSH: And this is where people get agentic workflows wrong?
ERIK: They give the agent hands before they give it rules. I don't care how good the model is. Claude is great. GPT is great. They're still tools inside a system. The system is what makes the work reliable.
JOSH: So you trust the workflow more than the model.
ERIK: Every time. Models change. Prompts drift. APIs have bad days. A workflow with logs, tests, reviews, rollbacks, and escalation survives that. A magic prompt does not.
[pause]
JOSH: Third deep dive. The Ubuntu 16.04 blog migration to FreeBSD. This sounds less flashy than robotaxis, but you had a face when you saw it.
ERIK: Because that one is the real world. Someone ran a blog on Ubuntu 16.04 for 10 years, then moved it to FreeBSD. That's not a headline about the future. That's a headline about the mess sitting under half the internet.
JOSH: Old servers everywhere?
ERIK: Everywhere. Old LTS releases. Forgotten droplets. One-off cron jobs. Mystery nginx configs. Python apps with dependencies nobody wants to touch. A box named "web-old-final-2" that secretly runs revenue.
JOSH: That name hurt.
ERIK: Because it's real.
[beat]
JOSH: Why does this matter for AI builders?
ERIK: Because AI doesn't remove maintenance. It makes more of it. Every agent you create has dependencies, keys, queues, logs, retries, state, prompts, model versions, permissions. If you don't have maintenance discipline, your AI system becomes another old server with a nicer README.
JOSH: That's not the pitch deck version.
ERIK: Good. Pitch decks don't carry pagers.
[pause]
JOSH: The same ScanBrief batch also had Python 3.15 features and complaints about uv's package management UX. Is that part of the same story?
ERIK: Very much. Tools get faster, but operations still matter. uv is fast. Great. But if dependency maintenance is awkward, teams still avoid doing it. Python 3.15 can add nice features, but you still have to migrate, test, deploy, and watch for breakage.
JOSH: So speed doesn't replace hygiene.
ERIK: Correct. Fast install is not the same as healthy software. I want dependency visibility. I want outdated package reports. I want reproducible builds. I want tests that fail loudly. Then I want an agent that can propose the update and a reviewer that can reject it.
JOSH: Gandalf again.
ERIK: Gandalf again. Boring name would have been "policy enforcement layer." I chose better.
[beat]
JOSH: Where does FreeBSD fit?
ERIK: FreeBSD Jails are a reminder that boring isolation still works. Containers did not invent the idea of separating workloads. Good systems thinking has been around. Jails, chroot, VMs, VLANs, ACLs, runbooks, backups. AI doesn't make those obsolete. It gives you more reasons to use them.
JOSH: That's probably not what people want to hear.
ERIK: They need to hear it. If you can't patch a server, you shouldn't let an agent patch production unsupervised. Get the basics right first.
[pause]
JOSH: What does "basics right" mean in your world?
ERIK: Logs first. Every automation emits an event. Every event has a project, status, timestamp, and useful context. Then tests. Then rollback. Then review. Then metrics.
JOSH: That's the PrimeBus model.
ERIK: Yeah. PrimeBus didn't start as some giant master plan. It started because programs needed to talk. Then agents needed work. Then failures needed routing. Then merges needed review. Build one small loop, prove it, add guardrails, then put more weight on it.
JOSH: And now 81 distinct projects have emitted telemetry to PrimeBus.
ERIK: Right. That number matters because it shows coverage. If a project doesn't emit telemetry, it doesn't exist to the automation layer. It's just a thing you hope is fine. Hope is not monitoring.
[beat]
JOSH: That's the line.
ERIK: It should be printed on a rack door.
[pause]
JOSH: Pulling these together, today's theme feels like limits. Hardware limits, weather limits, maintenance limits.
ERIK: That's exactly it. Builders like capability. More tokens. More GPUs. More agents. More sources. But limits are where engineering starts. The memory shortage says cost matters. The GPU server says utilization matters. Waymo says refusal matters. The old Ubuntu box says maintenance matters.
JOSH: And the answer isn't "use less AI."
ERIK: No. Use better systems. Put AI where it wins. Let scripts do script work. Let queues carry work. Let tests catch bad output. Let humans approve risky actions. Then keep shipping.
JOSH: That's the show in two words.
ERIK: Build systems.
[pause]
ERIK: This episode is sponsored by Prime Automation Solutions. If you're still doing it manually, we automate it. Also, special on a website — $250. primeautomationsolutions.com
[pause]
JOSH: Alright, what's the AI pro tip today?
ERIK: Make your agent produce a proof bundle before it gets write access.
JOSH: What's in the bundle?
ERIK: The exact files it plans to change, the reason for each change, the tests it will run, the rollback path, and the risk level. Make it write that first. Then let another model or a simple policy script review the plan.
JOSH: Before the code changes?
ERIK: Before the code changes. For small edits, this takes seconds. For risky edits, it catches nonsense early. If the agent can't explain what it will touch, it doesn't get to touch it.
JOSH: That's simple.
ERIK: Simple is the point. You can do this today in Claude Code, Codex, GitHub Actions, whatever. Tell the agent: "Create a plan with changed files, commands, rollback, and risk. Stop after the plan." Then run review. Then allow the patch. That's your tip. Use it.
[pause]
JOSH: Binge all five episodes this weekend plus our YouTube shorts — links at buildorbereplaced.dev.
[pause]
JOSH: One more thing — we started a Discord for builders. If you're shipping AI, automation, or anything that makes a human obsolete — come hang out. Link at buildorbereplaced.dev.
ERIK: Post what you built. We'll post what we're building. Real wins, real builds, no fluff.
[pause]
ERIK: Build or be replaced.
JOSH: If you want these signals in your inbox every morning, scanbrief.dev. See you tomorrow.