Billede af showet Compiling Ideas Podcast

Compiling Ideas Podcast

Podcast af Patrick Koss

engelsk

Videnskab & teknologi

Begrænset tilbud

2 måneder kun 19 kr.

Derefter 99 kr. / månedOpsig når som helst.

  • 20 lydbogstimer pr. måned
  • Podcasts kun på Podimo
  • Gratis podcasts
Kom i gang

Læs mere Compiling Ideas Podcast

Deep dives on systems, software, and the strange beauty of engineering — compiled, not copy-pasted. patrickkoss.substack.com

Alle episoder

24 episoder

episode Coding on Empty: Why Burnout Hits Developers Harder Than You Think cover

Coding on Empty: Why Burnout Hits Developers Harder Than You Think

You’re staring at your screen at 2 a.m., debugging code that makes zero sense. You used to love this. Now you’re just running on fumes and spite. Welcome to burnout. And if you think it won’t happen to you, think again. Nearly three-quarters of developers have been here. Let’s talk about why this industry chews people up, and more importantly, how to stop it before it stops you. Description Burnout in software engineering isn’t just about being tired after a long week. It’s a full system crash that happens when your passion for coding gets weaponized against you, when the career ladder becomes an endless treadmill, and when “just one more feature” becomes your entire existence. In this episode, we break down the real reasons developers burn out at alarming rates. We’re talking about the toxic myth that loving code means coding 24/7. The impossible pressure to keep up with every new framework while your brain screams for mercy. The LeetCode grind that turns interview prep into a second full-time job. And that voice in your head telling you you’re a fraud, no matter how much you’ve shipped. But here’s the good news: burnout isn’t inevitable. We’ll walk through actual strategies that work. Setting boundaries that stick. Focusing on deep work instead of drowning in Slack. Learning strategically instead of trying to master everything. And remembering that your career is a marathon, not a sprint to the finish line where you collapse in a heap. Whether you’re already feeling the burn or just want to make sure you never do, this one’s for you. Your well-being is the most important project you’ll ever work on. Let’s make sure you can keep doing what you love without destroying yourself in the process. Key Topics The Passion Trap: How loving code becomes a weapon used against you, and why working 70 hours produces the same output as 55. The Career Ladder Illusion: Why grinding yourself to death doesn’t guarantee promotion, and what happens when mid-career burnout hits like a truck. The Knowledge Firehose: The impossible task of keeping up with every new framework, tool, and AI breakthrough while maintaining your sanity. LeetCode Nightmares: How interview prep can burn you out before you even get the job, and how to approach it without destroying yourself. Impostor Syndrome’s Best Friend: Why that voice telling you you’re a fraud drives you to overwork, and how self-doubt fuels the burnout cycle. Work-Life Balance Isn’t Optional: Why treating your body and mind like a machine that never needs maintenance is the fastest path to collapse. Prevention Strategies That Actually Work: Setting real boundaries, focusing on deep work, learning strategically, and building a sustainable career that lasts decades, not months. Get full access to Compiling Ideas at patrickkoss.substack.com/subscribe [https://patrickkoss.substack.com/subscribe?utm_medium=podcast&utm_campaign=CTA_4]

29. mar. 2026 - 21 min
episode LSI vs GSI: The Epic Showdown of Indexing in Distributed Databases cover

LSI vs GSI: The Epic Showdown of Indexing in Distributed Databases

Ever wondered why querying your distributed database feels like searching for a book in a library where half the catalog is missing? We’re diving into the world of Local Secondary Indexes and Global Secondary Indexes. One lives in your partition like a neighborhood detective. The other spans the globe like Interpol. Picking the wrong one doesn’t just slow you down. It can torpedo your throughput, create hot partitions, and leave you staring at stale data when you need it fresh. Let’s figure out which sidekick your database really needs. Description When you’re building on distributed databases like DynamoDB or Cassandra, indexes are your lifeline for querying anything beyond the primary key. But here’s the catch: Local Secondary Indexes and Global Secondary Indexes work in fundamentally different ways, and choosing wrong can wreck your performance. In this episode, we break down how LSIs keep things local and fast within a single partition, giving you strong consistency but limiting your scope. Then we explore GSIs, which let you query across all partitions with a completely different key, but they cost more and only offer eventual consistency. We’ll walk through real-world examples like looking up users by email, querying movies by actor versus by title, and why that 10GB partition limit exists. You’ll learn when to use each type of index, how they handle writes differently, and what happens under the hood when your data is scattered across nodes. Whether you’re designing a new schema or trying to optimize an existing one, this episode gives you the mental model to make smarter indexing decisions. No more guessing. No more accidentally scanning entire tables. Just clean, efficient queries that scale. Key Topics The Indexing Problem in Distributed Systems: Why traditional indexes fall apart when your data is partitioned across multiple nodes, and why you need different strategies for local versus global queries. Local Secondary Indexes Explained: How LSIs work within a single partition, why they share the same partition key as your base table, and when their strong consistency guarantees actually matter. Global Secondary Indexes Deep Dive: The mechanics of GSIs as essentially separate tables with their own partitioning scheme, why they’re eventually consistent, and how they enable cross-partition queries. Real-World Use Cases: Querying actors by movie title, looking up users by email address, and filtering data by attributes that don’t match your primary key structure. Consistency Trade-offs: Understanding when you absolutely need strong consistency versus when eventual consistency is perfectly fine, and how this choice impacts your architecture. Performance and Cost Implications: Why GSIs have independent throughput provisioning, how LSIs share capacity with the base table, and what happens when you hit that 10GB partition limit. DynamoDB vs Cassandra Patterns: How different databases approach the local versus global indexing problem, from materialized views to manual denormalization strategies. Design Guidelines: Practical rules for choosing between LSIs and GSIs based on your query patterns, partition key constraints, and scalability requirements. Get full access to Compiling Ideas at patrickkoss.substack.com/subscribe [https://patrickkoss.substack.com/subscribe?utm_medium=podcast&utm_campaign=CTA_4]

22. mar. 2026 - 28 min
episode Kafka's Exactly-Once Delivery: The Truth Behind the Marketing cover

Kafka's Exactly-Once Delivery: The Truth Behind the Marketing

Kafka’s exactly-once delivery sounds like magic, but it’s more like a really good magic trick. It works beautifully inside Kafka’s world, but the moment your pipeline touches S3, a database, or any external system, those guarantees start to crack. In this episode, we pull back the curtain on what exactly-once really means, where it works, where it falls apart, and how to build systems that don’t implode when reality hits at 3 a.m. Description Every distributed systems engineer has been there. You build a beautiful Kafka pipeline, enable all the exactly-once flags, and feel invincible. Then someone asks if there will ever be duplicates in the database, and your stomach drops. Because the truth is, Kafka’s exactly-once delivery comes with fine print. This episode breaks down the three flavors of message delivery in Kafka: at-most-once (fire and forget), at-least-once (reliable but duplicates), and exactly-once (the dream with conditions). We walk through how messages actually move through Kafka, from producers to brokers to consumers, and explain where things can go wrong at each step. You’ll learn how Kafka achieves exactly-once semantics using idempotent producers and transactional APIs, and how Apache Flink extends these guarantees with checkpointing and coordinated commits. But we don’t stop at the success stories. We dig into the Achilles’ heel: external systems that don’t speak Kafka’s transactional language. Through a concrete example of writing to S3 and Elasticsearch, we show exactly where duplicates creep in, why timeouts and partial failures make everything worse, and what you can actually do about it. Spoiler: the answer involves idempotent writes, outbox patterns, and accepting that at-least-once is often the practical reality. Kafka didn’t solve the Two Generals Problem or break the laws of distributed systems. It just gave us really good tools to handle chaos within a well-defined boundary. And honestly, that’s more than enough. This episode will help you understand exactly where that boundary is and how to design systems that work with it, not against it. Key Topics Message Delivery Guarantees: The difference between at-most-once, at-least-once, and exactly-once delivery semantics in Kafka. Idempotent Producers: How Kafka uses unique IDs and sequence numbers to prevent duplicate writes when producers retry. Transactional Consumers: Atomically committing Kafka offsets with processing outcomes using Kafka’s transactional API. Apache Flink and Exactly-Once: How Flink uses checkpointing and coordinated commits to extend exactly-once guarantees beyond simple Kafka-to-Kafka pipelines. External Systems Integration: Why exactly-once breaks down when writing to S3, databases, and APIs that don’t support distributed transactions. Practical Solutions: Idempotent writes, outbox patterns, and accepting at-least-once with downstream deduplication strategies. Real-World Failures: Concrete examples of timeouts, partial failures, and how to handle them without losing data or creating duplicates. Get full access to Compiling Ideas at patrickkoss.substack.com/subscribe [https://patrickkoss.substack.com/subscribe?utm_medium=podcast&utm_campaign=CTA_4]

15. mar. 2026 - 17 min
episode Parallelism and Causality in Distributed Systems: Why Ordering Matters cover

Parallelism and Causality in Distributed Systems: Why Ordering Matters

Ever deleted a user that was never created? Or watched a payment process before money hit the account? Welcome to the wild world of distributed systems, where events happen everywhere at once and getting the order wrong can turn your database into a zombie apocalypse. This episode breaks down the theory and practice of keeping things straight when everything’s running in parallel. Description Distributed systems are messy. Events fire off on different servers, different continents, all at the same time. Some of them need to happen in a specific order. Some don’t. Get it wrong and you’re deleting accounts that don’t exist or charging credit cards with zero balance. In this episode, we dig into the fundamentals of concurrency and causality. We start with Leslie Lamport’s happens-before relationship and work our way through the real-world systems that enforce order at scale. You’ll learn how consensus algorithms like Raft use leader terms and epochs to reject stale messages from old leaders. How linearizability gives you the illusion of a single timeline even when a hundred things are happening at once. And how Apache Kafka maintains ordering using partitions and keys, routing related events into the same ordered log while letting independent streams run wild in parallel. This isn’t academic theory. This is the difference between a system that works and one that silently corrupts your data. Whether you’re debugging a race condition or designing cross-datacenter replication, the same principles apply. Know your events. Understand their relationships. Make sure your system respects causality. By the end, you’ll see that parallelism and causality aren’t enemies. They’re two sides of the same coin. Master both and you can build systems that are fast and correct, taking advantage of doing many things at once without losing the plot of the story they’re telling. Key Topics The Theory We start with what it means for events to be truly parallel versus sequential. When two things happen at the same time with no causal link, they’re concurrent. Neither can affect the other. But when one event depends on another, that’s a happens-before relationship. Delete can only happen after create. Payment can only happen after deposit. Causality defines the arrows of time in your system. Consensus and Raft Distributed consensus algorithms like Raft exist to impose a single sequence on chaos. We explore how Raft uses a leader to order events, how term numbers act like epochs to reject messages from old leaders, and how majority agreement creates a total order broadcast. Every node applies events in the exact same sequence, even when they’re being proposed in parallel. Linearizability The strongest consistency model. Linearizability makes a distributed system behave like there’s one copy of the data and one timeline of operations. If an update finished before a read started in real time, the read will see it. No surprises. No stale data. We break down how consensus-based systems achieve this illusion and why it matters for correctness. Kafka’s Pragmatic Approach Apache Kafka shows you don’t always need total order on everything. Kafka partitions topics and guarantees ordering within each partition using keys. All events with the same key land in the same partition, in sequence. Events with different keys can be processed in parallel across partitions. It’s a compromise that gives high throughput while maintaining order where it counts. Real-World Lessons We tie it all together with the principle that matters most. Identify what needs ordering and what can run in parallel. Group causally related events so they’re ordered within their group. Use techniques like logical clocks, consensus protocols, and careful partitioning to navigate the sea of concurrent events. The goal is to build systems that are both fast and correct, orchestrating parallelism without descending into chaos. Get full access to Compiling Ideas at patrickkoss.substack.com/subscribe [https://patrickkoss.substack.com/subscribe?utm_medium=podcast&utm_campaign=CTA_4]

8. mar. 2026 - 32 min
episode The Life of a Web Request: Caching from Browser to Backend cover

The Life of a Web Request: Caching from Browser to Backend

Ever wonder why some websites load instantly while others make you wait? It’s not magic. It’s an invisible army of caches working together at five different layers, passing data like a relay team. From DNS lookups to browser storage, from Redis to database buffers, every click you make triggers a cascade of caching decisions. And somewhere, a developer is losing sleep over whether to set a TTL of 60 seconds or 300. Description When you click a link, your request doesn’t just teleport to a server and back. It goes on a journey. And at every stop along the way, there’s a cache waiting to either hand you the answer immediately or pass you along to the next layer. This episode walks through the entire lifecycle of a web request, meeting every cache along the way. We start with DNS resolution, where your system keeps an address book of websites to avoid repetitive lookups. Then we hit the browser cache, which prevents you from downloading the same logo 47 times. Modern web apps add their own caching layer on top, using LocalStorage, IndexedDB, and service workers to enable offline-first experiences. On the backend, distributed caches like Redis shield databases from getting hammered into the ground. And databases themselves? They keep hot data in memory buffers so they don’t have to hit the disk every time someone asks for your user profile. We also break down the four major caching strategies: cache-aside (lazy loading), read-through, write-through, and write-behind. Each has different trade-offs between speed, consistency, and complexity. Picking the right one can make your app feel instant instead of sluggish. Sure, caching introduces complexity. Cache invalidation is famously one of the two hardest problems in computer science (along with naming things). But the performance gains are so massive that it’s worth it. A well-cached system can handle 10x or 100x more traffic than an uncached one. Next time you load a page and it feels instant, remember: there’s an invisible relay race happening behind the scenes. And it’s beautiful. Key Topics - DNS caching and TTL (Time to Live) - Browser HTTP caching with Cache-Control, ETag, and Last-Modified headers - Cache busting strategies with versioned filenames - Frontend application caching with LocalStorage, IndexedDB, and service workers - Progressive Web Apps (PWAs) and offline-first architecture - Backend distributed caching with Redis and Memcached - Cache-aside pattern (lazy loading) - Read-through, write-through, and write-behind caching strategies - Database buffer pools and query plan caching - Cache invalidation trade-offs and TTL strategies - Performance scaling through multi-layer caching Get full access to Compiling Ideas at patrickkoss.substack.com/subscribe [https://patrickkoss.substack.com/subscribe?utm_medium=podcast&utm_campaign=CTA_4]

1. mar. 2026 - 16 min
En fantastisk app med et enormt stort udvalg af spændende podcasts. Podimo formår virkelig at lave godt indhold, der takler de lidt mere svære emner. At der så også er lydbøger oveni til en billig pris, gør at det er blevet min favorit app.
En fantastisk app med et enormt stort udvalg af spændende podcasts. Podimo formår virkelig at lave godt indhold, der takler de lidt mere svære emner. At der så også er lydbøger oveni til en billig pris, gør at det er blevet min favorit app.
Rigtig god tjeneste med gode eksklusive podcasts og derudover et kæmpe udvalg af podcasts og lydbøger. Kan varmt anbefales, om ikke andet så udelukkende pga Dårligdommerne, Klovn podcast, Hakkedrengene og Han duo 😁 👍
Podimo er blevet uundværlig! Til lange bilture, hverdagen, rengøringen og i det hele taget, når man trænger til lidt adspredelse.

Vælg dit abonnement

Mest populære

Begrænset tilbud

Premium

20 timers lydbøger

  • Podcasts kun på Podimo

  • Ingen reklamer i podcasts fra Podimo

  • Opsig når som helst

2 måneder kun 19 kr.
Derefter 99 kr. / måned

Kom i gang

Premium Plus

100 timers lydbøger

  • Podcasts kun på Podimo

  • Ingen reklamer i podcasts fra Podimo

  • Opsig når som helst

Prøv gratis i 7 dage
Derefter 129 kr. / måned

Prøv gratis

Kun på Podimo

Populære lydbøger

Kom i gang

2 måneder kun 19 kr. Derefter 99 kr. / måned. Opsig når som helst.