
Sign up to save your podcasts
Or


Episode 0035 - Reliability vs Complexity: Where to Draw the Line
Reliability is often confused with availability, and Carl and Brandon dig into why stacking more safeguards — retries, circuit breakers, asynchronous queues, and multi-region failover — frequently makes systems less reliable rather than more. Every added layer introduces non-linear interactions, coordination challenges, and state synchronization headaches where the hardest failures hide. Brandon points to real-world architectures engineered to withstand every theoretical outage across multiple regions, only to require dedicated teams just to keep the operational machinery from collapsing under its own weight. When resilience mechanisms multiply, systems trade simple, predictable failures for catastrophic cascading outages and retry storms that no one can reason about under pressure.
Drawing the line comes down to treating complexity as a primary risk factor rather than a badge of honor. Instead of reaching for active-active redundancy or distributed microservices by default, dependable engineering starts by mapping critical user paths and exhausting simpler options first. Automation, event-driven decoupling, and multi-region routing only improve resilience when their failure modes are thoroughly understood and validated through chaos testing and post-incident reviews. Ultimately, the most reliable systems are rarely the most elaborate; they are the architectures teams can actually understand, operate, and recover when things inevitably go wrong.
Links Reliability and ArchitectureEpisode 0034 - Build vs Buy in 2026 (Yes, We Mean AI)
Build versus buy has been part of software since there was software to buy — custom development, licensed components, SaaS, managed service providers — and the deciding factor was usually what staff you already had or could afford to hire. What makes 2026 different is agentic coding, and Carl opens with a first-hand example: an off-the-shelf theme package that tanked his desktop app's performance, where two years ago the realistic options were file an issue, rip it out, or live with an ugly app. Instead he handed the requirements to an agent and got a replacement. Writing code is edging toward commodity, which pushes the architect's job from deciding what is possible to justifying what is worth owning.
The tradeoffs still bite. Buying gets functionality fast but binds you to a vendor's feature set, plugin model, and visibility into how your data is handled — and Brandon is clear that "buy" includes open source you didn't write. Cost is where teams get optimistic: the news story about a health insurer vibe coding a CRM to replace a $600,000-a-year SaaS contract makes a great headline, but operational support, on-call, patching, admin tooling for credential resets and GDPR requests, and the hosting bill all arrive later. Brandon's TMNT framing — time, money, and tokens — captures the modern version, especially when per-engineer AI spend starts rivaling the engineers themselves. Differentiation is the sharper filter: custom game engines were once a competitive edge until consolidation made bespoke engines an onboarding tax, and the same logic says a health insurer's differentiation lives in its domain knowledge, not in its CRM. Lock-in gets a nuanced treatment too, split between harmful lock-in that limits strategic flexibility and acceptable lock-in that just accelerates delivery, with contracts and auto-renewal terms doing as much damage as any technical coupling.
The framework that falls out of it is four questions: is this core to the business, do you need deep customization, what is the long-term operational burden, and how hard would it be to leave later. None of these are new questions — commoditization played out the same way with carts, cars, and outsourced truck transmissions — but agentic coding put a new lens on them. Build where differentiation is real, buy for the rest, price the total cost of ownership on both sides, and remember that defining the business requirements is still your job.
Links Referenced in the EpisodeEpisode 0033 - Route of All Evil
Cloud networking still breaks when teams assume the platform will "just handle it," and Carl and Brandon dig into why. They challenge that myth and show where parity falls apart across providers: VNet, VPC, and VCN primitives look familiar but behave differently in defaults, region and zone design, and routing/security expectations. From there, the episode moves into foundational design pressure points such as IPv4 range planning, overlapping CIDRs, Kubernetes networking overlays, and the route-level surprises that cause hard-to-diagnose failures, including asymmetric paths, BGP mistakes, and MTU mismatches.
The second half focuses on the practical failure modes teams feel in production: SNAT exhaustion that appears as random timeouts, endpoint and DNS choices that silently change traffic paths, and egress patterns that impact both reliability and cost. Load balancing choices (Layer 4 vs Layer 7), TLS termination strategy, and cloud-specific security control models all shape the final behavior of a system. The throughline is consistent: make network intent explicit, treat egress and observability as first-class design surfaces, and standardize repeatable patterns that survive provider changes.
Links Core Networking ConceptsEpisode 0032 - Rolling, Rolling, Rolling…
Logs are ground truth — high-fidelity, event-level data that anchor observability alongside metrics and traces. Carl and Brandon argue the biggest mistake teams make is treating "more logs" as "better logs." If everything is logged, nothing is useful, and they both share recent troubleshooting sessions where verbose, unstructured output forced them into KQL gymnastics just to find the actual error. Brandon walks through a 503 that turned out to be a database fault hidden one layer down, and Carl recounts a customer whose "unplanned" VM reboots were actually planned Kubernetes node maintenance — a story you can only untangle by correlating infrastructure and platform logs. Along the way they cover the six log sources worth thinking about (application, infrastructure, platform/managed service, security, audit, and access logs), with a detour into a customer whose minute-long latency vanished once infra logs revealed a VPN routing New York users through Texas.
The middle of the episode is a clinic on log hygiene. Carl walks through log levels — debug/verbose, info, warn, error, fatal — and the distinction Brandon draws between an exception (a code construct) and an error (a log level): a caught exception is an error, an uncaught one becomes fatal. They make the case for structured logging into stores like Kusto or via OpenTelemetry so keys can be projected, indexed, and fed directly into dashboards, and Brandon's tip on not pre-computing expensive log arguments is a reminder that a disabled verbose call still costs CPU if you build its message eagerly. Centralized logging pipelines beat rolling your own helper class — log4-anything frameworks exist for a reason — and UTC alone won't save you when scaled-out instances drift apart in time. Correlation and trace IDs, especially parent/child IDs from OpenTelemetry, are the thread that stitches a single user's journey back together across microservices.
Carl and Brandon close on cost and discipline. Logging budgets balloon fast, so production should not be running verbose, retention should be tiered (a month of exceptions is plenty once the fix ships), duplicate destinations like Log Analytics plus Event Hubs plus a storage account should pick one source of truth, and Application Insights-style sampling can collapse repetitive traffic into representative events. Compliance logs that sit for years belong in cold or frozen storage tiers where the access pattern actually matches the cost. Their do's and don'ts land on a simple posture: log with intent, redact secrets and connection strings, standardize across teams, and — especially if AI agents are writing your code — make sure the logging conventions travel with the work. Point an agent at a recent run and ask where the gaps and noise are; it's a fast way to audit whether your logs are actually doing their job.
Links Observability and logging conceptsVisit us at:
Episode 0031 - AI All the Things?
Traditional sprint ceremonies start getting in the way when AI-assisted development outpaces the cadence they were built for. Carl and Brandon unpack why that happens and what to do about it — starting with the basics. Brandon defines context windows, distinguishes original vibe coding from the sloppy way the term is used today, and walks through the software factory model where requirements, source code, and tests live in separate repos. Carl shares how he continuously refines his Copilot instructions file, instructs the agent to detect and document recurring patterns, and leans on intent-based prompting over tactical step-by-step descriptions — a three-sentence prompt describing preset themes and macOS Focus Mode integration wrote his Swift UI code nearly flawlessly. Both hosts dig into context management: plan mode to review before implementing, the "Ralph Wiggum" pattern of starting fresh sessions with just the plan, and Architectural Decision Records that give future sessions a trail to follow. Different models suit different jobs — Claude for architecture, Codex for implementation — and MCP servers let those models reach Git and GitHub without a copy-paste workflow.
Brandon argues AI is a tool like the Internet — some roles will shift, but learning and adapting has always been the core tech-industry skill. Carl backs that up with a study showing senior engineers only see productivity gains when they change their process, not when they bolt AI onto the old one. On the junior side, Carl mentors a developer to focus on data structures and algorithms — not for the implementation details, but for knowing when to apply them. An MIT study pegs realistic job displacement at around 11.7 percent, and cases like Box's layoffs look more like post-COVID overcorrection than proof that AI is replacing everyone.
Links AI-Assisted DevelopmentVisit us at:
Episode 0030 - Local‑First Lifeboats: Architecting for Post‑EOL Usability
This episode is about designing for the last day, not just the launch day. Carl kicks off with the Bose SoundTouch situation: a vendor moves toward EOL on a cloud-tethered API, users push back, and the outcome (at least in spirit) becomes a blueprint we wish was more common: keep the hardware useful by enabling local control paths and leaning on protocols that already work without your cloud. From there we broaden the conversation to the bigger problem: products and services that do something totally reasonable in a LAN suddenly need a round trip to the internet just to respond to a button press.
Carl and Brandon talk through concrete "this actually happened" examples and what good looks like. Belkin's Wemo sunset email is a solid reference: clear dates, repeated notices, and a reality check that local APIs and ecosystems like HomeKit and Matter can keep devices working even when a vendor endpoint is shut off. We contrast that with the messier side of the industry: thermostats and other home gear that still function locally, but lose their main value when the cloud connection is removed, and cloud-only platforms like Stadia where "no backend" means "hard stop" (with the one bright spot being things like refunds and a final firmware update to unlock a controller for normal Bluetooth use).
On the builder side, we get practical about how to retire things without surprising your users. We cover technical signaling (Deprecation and Sunset headers), the need for human-friendly comms beyond "put it in the docs," and the architecture patterns that make "minimum viable offline" real: local-first state, local discovery and control surfaces, and fallbacks that do not require re-pairing or re-auth when identity systems go away. We also touch on SaaS escrow and continuity as a way to build trust (especially for startups) and close with a simple gut check: if your cloud disappeared tonight, what can your users still do tomorrow morning?
Links News and examples we discussedVisit us at:
Episode 0029 - New Year's ☁️ Resolutions
"In 2026, your cloud is not allowed to have the same incidents for the same reasons as last year." Carl and Brandon treat this episode like a retrospective (the kind any good agile team would run), but instead of talking about sprint tickets, they write a New Year's resolution list on behalf of your cloud team. The format is simple: Stop, Start, Keep. Small, opinionated constraints that change day-to-day habits, not vague wishes about "better reliability, security, and cost."
The Stop list hits the repeat-incident patterns: single-region "global" apps, treating infrastructure-as-code as optional (and living in the portal), mystery ownership with no clear tags or escalation path, one-off production fix scripts that never get documented, dashboards that are always green while users are hurting, and "temporary" exceptions that turn into permanent risk.
The Start list is the muscle-building: run realistic failover/incident drills, measure change and recovery (DORA-style signals and MTTR, not just uptime), budget reliability and cost together, treat internal platforms like products with golden paths, standardize secrets and identity, and add a regular "delete day" so old environments and artifacts do not drag into the new year.
The Keep list is what compounds: automate repetitive toil, invest in observability tied to real user flows, keep blameless postmortems with concrete follow-ups, and keep platform/SRE work visible so it does not get squeezed out by features.
We hope you and your team are able to embrace some of these resolutions in the coming year, and hope that listening to more CloudChat is at the top of your list. Happy New Year everybody!
LinksVisit us at:
Episode 0028 - Respect My (DNS) Awe-Thor-Ih-TAY!!
Your cloud is humming along, then an edge breaks. What lever do you actually still have to steer users? In this episode, Carl and Brandon dig into DNS as a control plane and why "it is always DNS" keeps being true in 2025. DNS was designed for a slower internet with long TTLs and infrequent changes, but we now treat it like a real-time steering wheel for global failover. That mismatch shows up in outages where the backend is fine but nobody can resolve the hostname that front doors, CDNs, and APIs live behind. We unpack how TTL and caching really work (including negative caching and serve-stale), why modern edge products like Azure Front Door and Cloudflare can still turn into global single points of failure, and how DNS-based load balancers actually behave when you flip weights or priorities.
From there we move into patterns and mitigations. We walk through hub-and-spoke vs mesh topologies and where public vs private DNS sit in each, plus concrete strategies for what to do when your edge is broken: bypass patterns, equivalent services, and multi-product designs that let you route around a failing front door. We also hit the observability side so "it is DNS" becomes a graph and an alert instead of a guess in a war room. We close with a look at emerging record types like SVCB/HTTPS and how they may help you advertise alternate endpoints and protocol hints without building another fragile tower of CNAMEs.
Links DNS FundamentalsVisit us at:
Episode 0027 - Whoops, No VM's!!!
You've planned for redundancy, scaling, and failover, but what happens when the cloud itself runs out of space? In this episode, Carl and Brandon untangle capacity (what the provider physically or logically has available in a region or zone) versus quota (the soft limit on what you can consume). Mixing the two leads to painful surprises during scale events and failovers.
We talk through how capacity shortfalls show up in real life—zones that are full, SKUs that vary by location, and limited supply for GPU-heavy instances, and the patterns that help: design for multiple zones and regions, add retry and fallback logic with flexible SKUs, balance spot with on-demand, and hold a baseline with reservations or time-bound commitments.
We close on the business side: the price of headroom, when commitments make sense, and simple pipeline and monitoring checks so "no capacity" errors fail fast instead of 30 minutes into a deploy.
LinksVisit us at:
Episode 0026 - Are Your Cloud Costs Too Damn High???
Cloud cost optimization is about designing systems that perform efficiently without wasting money. In this episode, Carl and Brandon break down how AWS, Azure, and Google Cloud help teams rightsize compute, manage storage tiers, and control networking costs. They talk through savings plans, spot instances, lifecycle management, and data transfer strategies that keep performance high and waste low.
The discussion then moves into monitoring, automation, and FinOps culture, where budgets, policies, and shared accountability make optimization stick. They cover dashboards, tagging, auto-shutdown routines, and partner-led programs that unlock funding and deeper discounts. Real-world stories from enterprises and startups highlight one key truth: cost management is not a cleanup exercise, it is an ongoing habit that keeps cloud architectures both efficient and sustainable.
LinksVisit us at:
From the publisher's feed