Skip to main content
Happy Path Programming

Happy Path Programming

By Bruce Eckel & James Ward
No-frills discussions between Bruce Eckel and James Ward about programming, what it is, and what it should be.
Where to listen
Apple Podcasts Logo

Apple Podcasts

Google Podcasts Logo

Google Podcasts

Overcast Logo


Pocket Casts Logo

Pocket Casts

RadioPublic Logo


Spotify Logo


Currently playing episode

#65 Rod's Gambit - Spring, Scala, TypeScript, and Chess with Rod Johnson

Happy Path Programming

#69 Polymorphism Unbound
Bruce continues his archaeological dig into the foundations of mainstream programming. Referenced blog: Why Are There Functions? Discuss this episode:
September 30, 2022
#68 The End of Ivory Tower Architecture with Andrew Harmel-Law
Andrew Harmel-Law shares a better way to make decisions in software teams using the "Advice Process" which he has used in a number of teams resulting in happier, more productive programmers. Discuss this episode:
September 03, 2022
#67 Swallowed by a Python with Luciano Ramalho
Finally Bruce gets a whole episode about Python with our friend Luciano Ramalho, author of Fluent Python.  In the words of Luciano: "Thanks James and Bruce for the most enjoyable podcast panel I ever had!" Discuss this episode:
August 31, 2022
#66 The Journey to Rust with Christopher Hunt
No doubt that Rust is hot right now. We chat with Christopher Hunt about his journey through Java, Scala, and many other languages and learn why he is now using Rust. Discuss this episode:
August 13, 2022
#65 Rod's Gambit - Spring, Scala, TypeScript, and Chess with Rod Johnson
Rod Johnson (creator of Spring Framework) reflects on his programming and chess journeys. References: ScalaDays 2013 Talk Stockfish Chess Engine Discuss this episode:
August 08, 2022
#64 Building Build Tools is Hard with Josh Suereth
Bruce and James often rant about build tools but it turns out they are hard to get right. We dive into the reasons with Josh Suereth who maintained sbt (a Scala build tool) for a number of years. Discuss this episode:
July 22, 2022
#63 ZIO 2 dot Ohhhhh! with Bill Frasure
Our co-author on Effect Oriented Programming, Bill Frasure, joins us to chat about his programming journey and his involvement in last week's ZIO 2.0 release. Book repo: Discuss this episode:
July 01, 2022
#62 Musing About Local-First Sync & CRDTs with Mark McGranaghan
Mark McGranaghan joins us to talk about how the Muse app uses Conflict-free Replicated Data Types (CRDTs) for local-first data synchronization. More details on Local-first: Referenced article about hybrid logical clocks: Discuss this episode:
May 27, 2022
#61 Compassionate Communities with Tonya Moore
Tonya Moore has been helping build developer communities for years. We discuss how to deal with jerks and the importance of building on a foundation of compassion. Referenced blog from Bill Venners: Discuss this episode:
May 13, 2022
#60 Kotlin Language Design with Roman Elizarov
Kotlin Language designer Roman Elizarov, joins us to talk about finding the right balances when designing Kotlin. Discuss this episode:
April 12, 2022
#59 Goetz's Law, Dhall, and Nix (With Gabriella Gonzalez)
Gabriella Gonzalez joins to teach us about the Dhall configuration language they created and Nix. References: The Dhall configuration language Henk: a typed intermediate language Pants Build Tool The Purely Functional Software Deployment Model Haskell for all: How to use NixOS for lightweight integration tests How to market Haskell to a mainstream programmer Discuss this episode:
March 29, 2022
#58 Scala 3: Significant indentation and other things we love (With Martin Odersky)
Martin Odersky, creator of Scala, joins us to chat about Scala, Effects, Exceptions, Experiments, and other Exciting stuff. Discuss this episode:
March 20, 2022
#57 Technology Trade Offs: Python & Kotlin (With Matt Anger)
We explore with Matt Anger a blog he wrote about migrating from Python to Kotlin and the trade offs engineering teams make when deciding which technologies to use. Discuss this episode:
March 15, 2022
#56 Feedback Loops & Software is Like Surgery (With Daniel Terhorst-North)
We explore with Daniel Terhorst-North how social and technical feedback loops can help us build the right thing faster. Discuss this episode:
March 10, 2022
#55 Apache Kafka - Like Functional Programming but for Data (With Anna McDonald)
We chat with the Kafka Duchess, Anna McDonald, about Apache Kafka, CQRS, Event Sourcing, and of-course Functional Programming. Note: There was a bit of echo for a few minutes but we did resolve it around 8 minutes in. Discuss this episode:
March 03, 2022
#54 Flix: Designing a principled programming language with Magnus Madsen
Magnus Madsen, language designer for the Flix programming language, joins us to talk about the driving principles and innovative features of the language. Discuss this episode:
February 05, 2022
#53 Open Source: Free as in Hot Dogs (With Donald Fischer)
Open Source is an essential foundation for pretty much everything. How do we fund it appropriately? What do we do about Log4Shell-types of issues?  Donald Fischer of Tidelift joins us to discuss these economic and human issues. Discuss this episode:
January 21, 2022
#52 Reveling in Nonsense With Josh Long
A stroll through 20 years of Spring with Josh Long. Also: Bruce, James, and Josh announce their new Ska band. Discuss this episode:
January 14, 2022
#51 James' New Kotlin PM Job
Hope you all have a happy & healthy holiday! Discuss this episode:
December 24, 2021
#50 Testcontainers (Like Uber but for Integration Tests) with Sergei Egorov
Testcontainers are one of James' favorite modern technologies and in this episode we chat with Sergei Egorov, one of the project creators.  We learn about what Testcontainers are and the new Testcontainers Cloud service created by Sergei's new company, AtomicJar. Discuss this episode:
December 17, 2021
#49 Smart Types (Like Regular Types, Only Smarter) with Jorge Vasquez
Jorge Vasquez has been working on a way to have more precise data modeling while not sacrificing performance or ergonomics. Smart Types in ZIO Prelude are the answer, and they are amazing! Discuss this episode:
December 10, 2021
#48 Composability in Distributed Systems - Because Math! With Heather Miller
Heather Miller, Computer Science professor at Carnegie Mellon, joins us to talk about her research into composability in distributed systems, the challenges with serialization, and a better approach to Chaos Engineering. Discuss this episode:
November 19, 2021
#47 The Future of Programming Rocs! With Richard Feldman
The creator of the new Roc programming language, Richard Feldman, joins us to talk about rocking developers worlds' with better tools & paradigms. Discuss this episode:
November 17, 2021
#46 What Problem Does GraalVM Solve? All of them. Featuring Alina Yurenko
We dive deep on GraalVM and learn from Alina Yurenko about all the problems it solves. Discuss this episode:
November 05, 2021
#45 ZIO 2 - Better, Faster, Friendlier with Adam Fraser
Adam Fraser is a core contributor to Scala ZIO. He joins us to chat about improvements in ZIO 2 and how we can grow adoption. Discuss this episode:
October 29, 2021
#44 Tired of Getting N+1'd by Your ORM? A Chat With Alexander Ioffe.
We chat with Alexander Ioffe, maintainer of the Quill library, about database access approaches and Scala metaprogramming. Discuss this episode:
October 29, 2021
#43 Rúnar Bjarnason is Jackhammering the Foundations of Programming
We've mentioned the futuristic Unision programming language many times but now we dive deep with one of the co-founders. Discuss this episode:
October 25, 2021
#42 The answer to life, the universe, and everything is an abstraction with Viktor Klang
The legendary Viktor Klang chats with Bruce & James about information loss, reactive, emergence, and many other mind expanding topics. Discuss this episode:
October 05, 2021
#41 "Never gonna give you up" (FP that is) with Wiem Zine Elabidine
Bruce and James hear about Wiem's journey in Functional Programming, her contributions to Scala ZIO, and how she never gave up despite the challenges she faced. Discuss this episode:
September 26, 2021
#40 Poisoned Agile with Barry Hawkins
Bruce and James chat with Barry Hawkins about software methodologies, their triumphs and abuses. Discuss this episode:
September 17, 2021
#39 Cracking the Company Culture Conundrum with Sharon Schmidt
According to James, Heroku had the best company culture / vibe of anywhere he has worked. Bruce & James talk with Sharon Schmidt who is in large part responsible for creating that magical experience. Discuss this episode:
September 10, 2021
#38 Databases are Insufficient with Jonas Bonér
James rants about databases with Jonas Bonér, CEO of Lightbend and creator of Akka. Bruce & James also learn about the actor model, Reactive, and Akka Serverless. Discuss this episode:
August 27, 2021
#37 The Future of Everything with Paul Snively
Paul Snively helps us see the future of programming. Spoiler: It's Typed & Functional. Referenced talks: Types vs. Tests: An Epic Battle? Type Systems - The Good, Bad and Ugly Discuss this episode:
August 14, 2021
#36 The Freedom of Structured Unconferences
Bruce describes his multi-decade journey running conferences and how letting go of control, while still having a structure, has led to conferences where attendees connect in meaningful ways. Discuss this episode:
August 06, 2021
#35 The Pattern of Design Patterns
As usual, Bruce & James try to figure out monads & type classes. Then something new, as they go meta on design patterns. Discuss this episode:
July 23, 2021
#34 Fear, Uncertainty, and Monads with Dick Wall
FEE, FOO, FUD, and FUM (Fear, Uncertainty, and Monads) - Scala Giant, Dick Wall, joins Bruce and James to talk about life, work, and Functional Programming. Discuss this episode:
July 09, 2021
#33 Rethinking "Thinking in Objects"
Object Oriented Programming might just be a series of solutions to self-created problems. Discuss this episode:
July 02, 2021
#32 Adopting Kotlin & FP with Katie Levy
Katie Levy joins Bruce & James to talk about how to help teams adopt Kotlin and Functional Programming. Discuss this episode:
June 18, 2021
#31 "ZIO's not a library it's a state of mind" with Kit Langton
Bruce and James' coauthor Bill Frasure, joins to talk with Kit Langton, creator of ZIO Magic and many other magical ZIO tools & libraries. Discuss this episode:
June 11, 2021
#30 Programming in (not with) Scala 3 but with Bill Venners
Bruce and James chat with their long time friend Bill Venners about Scala 3 and the updates to his "Programming in Scala" book. Discuss this episode:
May 28, 2021
#29 Contemplating Computer Cognition with Julie Amundson
Bruce and James chat with their friend Julie Amundson about AI, Machine Learning, and many related complexities.  They explore what the journey is like for Data Scientists at medium / large companies where everything from data access to productionizing models, has challenges.  Also we learn about the Metaflow system Julie's team built to make this journey smoother at Netflix. Discuss this episode:
May 18, 2021
#28 PREP - Performant, Reliable, Expressive, and Productive
Bruce, James, and their friend Bill are working on a new book about systems that are Performant, Reliable, Expressive, and Productive. This episode explores those themes with some significant detours along the way. Discuss this episode:
April 30, 2021
#27 Side-Effects of a Scala 3 Release
With the eminent release of Scala 3, we chat about the language changes, effect systems (ZIO), and reliability. Discuss this episode:
April 23, 2021
#26 Dependency Injection - Why Do We Even...
All about Dependency Injection, why we do it, and why James thinks it is terrible. Discuss this episode:
April 16, 2021
#25 No Good Build Tools. Blocked on Reactive.
Once again we lament build tools. Then we get blocked talking about Reactive, async, non-blocking, actors, and concurrency. Discuss this episode:
April 09, 2021
#24 Vulnerability & Additive Hiring with Dianne Marsh
Bruce & James have a delightful chat with long-time friend Dianne Marsh about changing tech culture to be more vulnerable and diverse. Note: The Non-Violent Communication trainer mentioned in the episode is Karl Steyaert. Discuss this episode:
April 02, 2021
#23 The Modern Java Platform - 2021 Edition
James shares about a blog he posted this week titled: "The Modern Java Platform - 2021 Edition" Discuss this episode:
March 19, 2021
#22 Be the Kindness You Want to See in the Programming World
Special guest Oli joins us to chat about Recursion Schemes, tech conferences, podcasts, and kindness. Discuss this episode:
March 08, 2021
#21 Statically-Dynamic Programming or Dynamically-Static Programming? And Death by 1000 Language Quirks
James is a Dynamic Programming Language Denier but realizes only a part of his code is actually statically typed. And programming languages so full of quirks that you have to hold the quick reference book in your teeth. Discuss this episode:
February 26, 2021
#20 Cultures (not the petri dish variety) & Developer Marketing (also not the petri dish variety)
Culture - the hidden force that sometimes reveals itself through code reviews. What is it & how does it form / change? Also, Developer Marketing and how most companies do it wrong. Discuss this episode:
February 12, 2021
#19 Technology Evolution & Adoption - Why So Slow?
Change happens, but slowwwwly. How can we accelerate the adoption of new & better programming language features? Should we? Discuss this episode:
February 05, 2021
#18 "But Will it Scale?" and Other Illusions of Control
Software architectures, organizational management, hiring practices, and many other normal part of life give us an illusion of control.  But is there another way? Discuss this episode:
January 18, 2021
#17 The Problem with Gradle; Java 11; SemVer Isn't
Bruce and James have struggled with Gradle for years and Bruce this week blogged about some of his gripes: The Problem with Gradle. This prompted a lengthy response from Cédric Champeau. James has mostly stuck to Java 8 and Bruce is exploring Java 11. Finally, James rants about SemVer for the 3.1.4'th time. Discuss this episode:
January 07, 2021
#16 Kotlin for Scala Devs. Reflection is the Devil. Meta-Programming.
James, as a Scala "True Believer," talks about his experiences with Kotlin and how they compare to Scala. Then he switches gears to rant about runtime reflection which leads to a deeper conversation about meta-programming and alternatives to runtime reflection. Discuss this episode:
December 19, 2020
#15 Atomic Kotlin Done! Cloud Events. TestContainers / Serverless Cassandra. Scala ZIO CLI.
Bruce shares exciting news about completing the Atomic Kotlin book. The rest is a mishmash of topics related to newsworthy announcements including Spring Boot Cloud Event support, Serverless + TestContainer + Kubernetes Cassandra support, and Scala ZIO CLI. Discuss this episode:
December 14, 2020
#14 Poly-Polymorphism
Most developers have been exposed to inheritance based polymorphism but there are other ways to deal with overlapping functionality. In this episode we talk about ad-hoc polymorphism, parametric polymorphism, and type classes. Discuss this episode:
December 04, 2020
#12 The Rise of Python & (Unrelated) Making Illegal States Unrepresentable
Python usage surpasses Java to second place on the Tiobe Index (behind C). Is developer productivity the primary driver? We then switch gears to talk about the concept of "Making Illegal States Unrepresentable" where James continues his crusade against the Builder Pattern. Discuss this episode:
November 06, 2020
#11 Small talk about Smalltalk
Our friend Joey Gibson joins us to talk about Smalltalk, the well known grandfather of Object Oriented Programming.  James is assigned some homework to get a Smalltalk web app running on Google Cloud Run, which he did (after recording). Check out the source: Discuss this episode:
October 30, 2020
#10 Gazing Into the Programming Crystal Ball and Can Organizations Adopt Inner Source?
We start off discussing what the future of programming might be... Can developers stop thinking about resource limitations?  Can we make the "right path" easy?  Then we dive into Inner Source and the organizational & cultural challenges with adopting it. Discuss this episode:
October 20, 2020
#9 Buildpacks, Containers, Kubernetes, Happy Path Programming, Rust, and gRPC
We start off talking about Cloud Native Buildpacks and Containers which of-course leads to James trying to explain Kubernetes.  Then we dive into what "Happy Path Programming" means and how, while the term is somewhat derogatory, it is what we ultimately want.  We end with a discussion about Bruce's recent explorations into Rust and gRPC. Discuss this episode:
October 16, 2020
#8 Kotlin Revisited with Cedric Beust
Long-time Java author & expert, Cedric Beust, joins us to revisit some of the topics from our Kotlin episodes.  We talk more deeply about checked exceptions, null safety, the builder pattern, build systems, and of-course Monads. Discuss this episode:
October 06, 2020
#7 Why Adopt New Technology? And Monads! Monads! Monads!
What are the reasons to adopt or migrate to a new technology?  What prevents you from doing so?  We explore that question and the differences between green-field and brown-field.  Then we finally dive deep into Monads trying to conquer the Curse of the Monad. Discuss this episode:
September 29, 2020
#6 The Crusade Against Custom Declarative Languages and Meta-Bike-Shedding
James officially launches his crusade against custom declarative languages and then we bike-shed about bike-shedding; exploring ways to make decisions for trivial problems. Discuss this episode:
September 25, 2020
#5 Developer Productivity, Non-Violent Agile, and Organizational Structures
We begin by talking about personal developer productivity but then expand the scope to "collective" / team productivity.  This leads us to grapple with some challenging ideas around Agile, non-violent communication, organization structures, diversity, and inclusion. Discuss this episode:
September 17, 2020
#4 Why is Developer Experience Often Terrible?
In this episode we discuss things that are often overlooked in developer experience and what underlying values make developer experience an afterthought. Discuss this episode:
September 16, 2020
#3 Nulls, ADTs, and Code Formatting
A bike-shedless discussion about nulls, algebraic data types, and code formatting. Discuss this episode:
September 15, 2020
#2 More Kotlin!
In episode 2 we continue the conversation about Kotlin, things we enjoy and things that could be better. Discuss this episode:
September 14, 2020
#1 Adventures in Kotlin
In our first episode we discuss features of the Kotlin programming language that we like. Discuss this episode:
September 13, 2020