CoRecursive with Adam Gordon Bell

CoRecursive with Adam Gordon Bell
Hear experts explain computer science and programming concepts. CoRecursive is a high quality, concise, and beloved software engineering interview podcast. Learn about programming languages, coding career advice and interviews about open source community tech news. Host Adam Gordon Bell brings in experts to talk about type theory, web development, learning to code, dev ops and much more. Some episodes touch on the topics of cloud development, machine learning and big data. Adam, the host is a big fan of programming languages like Scala, Haskell, Rust, and Swift, but isn’t afraid to talk about more mainstream languages like Java, JavaScript and Python. Scala and Kotlin come up a lot. CoRecursive is similar to podcasts such as Stack Overflow Podcast, Programming Throwdown, Talk Python To Me, CodeNewbie, Full Stack Radio and Developer Tea. Find transcript, show notes and more at

We are teaching Functional Programming Wrong
Aug 3 • 46 min
Today Richard Feldman shares his story of going from javascript developer to elm developer to functional programming teacher. Along the way, Richard finds that people are teaching functional programming wrong. We are teaching it in a way that misses how…
Software That Doesn’t Suck With Jim Blandy
Jul 1 • 37 min
Software is just the tool and it should get out of your way. In this episode, we will discuss Jim Blandy’s insights on how to build and recognize improvements for a great developer tool and find out how he approached the question: “What’s the worst…
Unproven Tech Case Study with Sean Allen
Jun 10 • 39 min
Choosing the programming language or framework for a project can be key to the success of the project. In today’s episode, Sean Allen shared their success in finding an unproven language and how they picked this as the most appropriate tool to do the job…
Krystal’s Story
May 18 • 40 min
Things are easy when you are passionate about something, a lot of great careers are built on curiosity and obsession including Krystal Maughan our guest for today’s episode. Krystal will share her journey as she chased her curiosity in programming and…
Learning a new language with Bruce Tate
May 6 • 35 min
There’s joy that can be found in language learning and pain as well. Whether you’re a beginner or an expert, there are still some things you can only discover by picking up a new language. Bruce Tate will tell us how learning new languages rekindled the…
Portal Abstractions with Sam Ritchie
Apr 17 • 35 min
Buckle up, on today’s episode Adam interviews Sam about how the abstract algebra and probabilistic data structures helped solve fast versus big data issues that many are struggling with. Stop in to hear Adam and Sam’s conversation about portal…
Loving Legacy Code with Jonathan Boccara
Apr 3 • 24 min
Legacy code is everywhere. I don’t think I’ve met anyone who doesn’t have to deal with legacy code in the substantial portion of his work. Our guest, Jonathan Boccara is a French C++ developer and the author of The Legacy Code Programmer’s Toolbox. In…
The Reason For Types with Jared Forsyth on ReasonML and Javascript
Mar 16 • 36 min
Adam talked to Jared Forsyth about his journey from untyped javascript to using flow and eventually reasonml. “I mean, I was, I’ll admit it I was definitely in the: ‘I was scarred by Java and C plus plus in an intro to programming class and I never want…
Karl L Hughes on Speaking and Conference Talks
Mar 2 • 50 min
Adam talks to Karl Hughes about his path to becoming a conference speaker and the work he has done to make it easier for others to follow in his footsteps.
Don and Adam discuss folds
Feb 15 • 36 min
Today we try a different format. Adam invites his neighbour, Don McKay, over to ask him questions. An interesting discussion on recursion, corecursion and the naming of the podcast unfolds.
David Heinemeier Hansson, Software Contrarian
Feb 1 • 62 min
David Heinemeier Hansson talks to Adam about being avoiding a software monoculture. He explains why we should find a programming language that speaks to us, why ergonomics matter and why single page apps and microservices are not for him. “That is the…
React and Scala JS with Shadaj Laddad
Jan 16 • 38 min
Today Adam talks to Shadaj Laddad. What is React? Why do we need front end frameworks at all. Shadaj explains modern front end web development. He also explains why he likes to use react from scala.js and built a framework to make that easy for all.…
The Business Of Developer Tools With Lee Edwards
Dec 17, 2019 • 37 min
How do you build a business around tools for software engineers? Adam talks to Lee Edwards, a VC who spends a lot of time thinking about this question. “When I think about is this a good business, I think about is there value Accruing. The question is…
Software in Context with Zach Tellman
Dec 2, 2019 • 53 min
Adam talks to Author and Clojure advocate Zach Tellman about how great software is built. “If we say something is over-engineered, what we mean is it’s too complex or it’s too robust or it handles a bunch of situations or scenarios that are not relevant…
Beautiful and Useless Coding with Allison Parrish
Nov 16, 2019 • 52 min
Generative Art involves using the tools of computation to creative ends. Adam talks to Allison Parrish about how she uses word vectors to create unique poetry. “Computer programming is beautiful and useless. That’s the reason that you should want to do it…
Tech Evangelism and Open source With Gabriel Gonzalez
Nov 1, 2019 • 67 min
What makes some pieces of technology take off? Gabe is a popular blogger, a former Haskell cheerleader, and creator of the Dhal configuration language. Today we talk about marketing and tech evangelism. “One common mistake I see a lot of new open source…
Structure and Interpretation of Computer Programs with Hal Abelson
Oct 1, 2019 • 56 min
Adam talks to Hal Abelson about the textbook he coauthored in 1984, SICP and why it is still popular and influential today. “The axe [the book] is grinding is that people write programs to do one particular thing. And then the price of that is that a…
Open Source Health and Diversity with Heather C Miller
Sep 15, 2019 • 41 min
Heather C Miller is an Assistant Processor at CMU. She is concerned that key open source projects are at risk of failure and no one is paying attention. Adam talks to her about open source, how it grows, the diversity problems it has and much more.
Compiling to Bytecode with Thorsten Ball
Sep 1, 2019 • 58 min
What do compilers do? What is the runtime of a language? What does it mean to compile something down to bytecode and what executes the byte code. Throsten Ball Answers these questions in this interview with Adam. “A virtual machine is a computer built-in…
Bartosz Milewski on Category Theory
Aug 15, 2019 • 53 min
Today Adam talks to Bartosz Milewski. He is the author of a famous blog series, lecture series and now book on Category Theory for programmers. Category theory can also be a tool to teach us to see software development in a different light and it can…
Jimmy Koppel on Advanced Software Design
Aug 1, 2019 • 53 min
How do we create great software? What are the important skills need to properly review a PR? How do you identify assumptions of a code base and the stable contracts of a software module? Jimmy Koppel is working on his Ph.D. in the field of program…
Chris Krycho on Typescript
Jul 15, 2019 • 70 min
How do we make javascript easier to work with? Chris Krycho has been using typescript to add types to javascript since 2016. Chris also loves Rust and types and is a former C and FORTRAN programmers. He hosted a podcast called the New Rustacean, which he…
Rethinking Technological Positivism with Cory Doctorow
Jun 15, 2019 • 61 min
Self-driving cars or armed autonomous military robots may make use of the same technologies. In a certain sense, we as software developers are helping to build and shape the future. What does the future look like and are we helping build the right one? Is…
Crafting Interpreters With Bob Nystrom
May 31, 2019 • 56 min
Bob Nystrom is the author of Crafting Interpreters. I speak with Nystrom about building a programming language and an interpreter implementation for it. We talk about parsing, the difference between compiler and interpreters and a lot more.
Refinement Types and Liquid Haskell With Niki Vazou
May 15, 2019 • 50 min
Formal verification and type systems - how do they relate? Niki Vazou is on a mission to bring better formal verification to the masses. Niki is the creator of Liquid Haskell, a system that extends Haskell to support refinements. She has also worked on…
Rethinking databases and Noria with Jon Gjengset
Apr 30, 2019 • 58 min
Can we make databases faster and remove the need for caching reads in an external cache? Can we make a distributed SQL based relational database that outperforms memcached? Jon Gjengset and the PDOS team at MIT CSAIL have done just that with Noria.
Learning to Think with Andy Hunt - Pragmatic Programmers guide to being productive
Apr 15, 2019 • 54 min
Andy Hunt is a celebrity in the world of software development. Or at least he is one to me. The Pragmatic Programmer is a classic book on software development book. He is an author of the agile manifesto and started the book company that has published…
Data and Scale with Pat Helland - The long view on distributed databases
Mar 31, 2019 • 56 min
Pat Helland has a wealth of knowledge on building distributed data stores. He has been working on distributed data stores since 1978, when he wrote code for the tandem fault-tolerant database. Here is the key thing, he is also a master at explaining the…
Abstraction and Learning with Runar Bjarnason
Mar 15, 2019 • 49 min
What is abstraction? Can we have a precise definition of abstraction that, once understood, makes writing software simpler? Runar has thought a lot about abstraction and how we can choose the proper level of abstraction for the software we write. In this…
Modern Systems Programming And Scala Native With Richard Whaling
Feb 22, 2019 • 53 min
Richard Whaling has an interesting perspective on software development. If you write software for the JVM or if you are interested in low level system programming, or even doing data heavy or network heavy IO programming then you will find this interview…
Burn out and recreational coding with Jamis Buck
Jan 25, 2019 • 59 min
Today Jamis talks about how he overcame burn out. We discuss how his struggle lead him to write a book about generating mazes and another about building a ray tracer. His books are great fun, and all about recreational programming. You will learn to build…
Software as a Reflection of Values With Bryan Cantrill
Dec 18, 2018 • 79 min
Which operating system is the best? Which programming language is the best? What text editor? Bryan Cantrill, CTO of Joyent says that is the wrong question. Languages, operating systems and communities have to make trade offs and they do that based on…
The Little Typer With Daniel Friedman and David Thrane Christiansen
Dec 1, 2018 • 67 min
Daniel P. Friedman is famous for his “Little” series of books. Little Schemer, Little prover, Little MLer and so on. These books are held in high regard. Dan’s coauthor is David Thrane Christiansen, Idris contributor, and host of a podcast about type…
Big Ball Of Mud
Nov 14, 2018 • 60 min
Evolving software under constrained resources is a challenge, and I think we kid ourselves when we don’t admit this. Software that is providing value often grows in scope until it is a mess. Today I talk to Wade Waldron about how avoid this situation or…
God’s Programming Language - Philip Wadler on Haskell
Oct 22, 2018 • 60 min
Today I talk to Professor Philip Wadler, a very accomplished programming language researcher. Phil walks us through a principle that has guided his career. That principle is that typed lambda calculus is not invented but a discovery of a deep truth. It is…
Concurrency and Functional Programming with Riccardo Terrell using F#
Oct 3, 2018 • 60 min
When Riccardo Terrell hit the concurrency limitations in a jvm application, he thought back to the haskell he learned in a university course and decided to rewrite the entire thing in haskell. The immutability of the haskell solution made the concurrency…
Test in Production and being On-Call with Charity Majors
Aug 31, 2018 • 47 min
Today’s Interview is with Charity Majors. We talk about how to make it easier to debug production issues in today’s world of complicated distributed systems. A warning, There is some explicit language in this interview.
Domain Driven Design And Micro Services With Vaughn Vernon
Aug 17, 2018 • 49 min
Today I talk to Vaughn Vernon about how Domain Driven Design can help with designing micro services. The guidelines that Vaughn has developed in his work on DDD can provide guidance for where service and consistency boundaries should be drawn. We also…
Http4s and Functional Web Development With Ross Baker
Jul 27, 2018 • 50 min
Http4s is a web framework written in scala that takes a pure functional approach to building http services. Ross Baker is a contributor to http4s and he explains the benefits of this approach.
Moves and Borrowing In Rust With Jim Blandy
Jul 3, 2018 • 67 min
The surprising thing about rust is how memory management works. Rust has the concepts of moves and borrowing. If you have heard about Rust, you may have heard people talking about the borrow checker and trying to make it happy. In this interview, Jim…
Dependent Types in Haskell with Stephanie Weirich
Jun 13, 2018 • 58 min
In todays interview Stephanie Weirich explains her efforts to make haskell have dependent types and how that example worked.
Micro Services vs Monoliths With Jan Machacek
Jun 6, 2018 • 66 min
Today I talk to coauthor of upcoming book, Reactive Systems Architecture : Designing and Implementing an Entire Distributed System. If you want to learn some of the hows and whys of building a distributed system, I think you’ll really enjoy this…
Rust And Bitter C++ Developers With Jim Blandy
May 16, 2018 • 62 min
Rust, the programming language, seems to be really trendy these days. Trendy to me means shows up a lot on hacker news. Rust is really interesting language though, and I think the growing popularity is deserved. Today I talk with Jim Blandy, one of the…
Erlang And Distributed Systems with Steven Proctor
May 2, 2018 • 61 min
Today’s interview is with Steven Proctor, the host of the functional geekery podcast. We talk about distributed programming in general and specifically how erlang supports distributed computing. We also talk about things he’s learned about functional…
Graphql And Sangria With Oleg Ilyenko
Apr 18, 2018 • 55 min
Oleg Illyenko is primary creator of Sangria, a graphql implementation used by twitter, The New Yorks Times and many other companies. We discuss the problems that graphql solves, how sangria works and the problems of api design.
Purescript And Avocados with Justin Woo
Apr 4, 2018 • 51 min
Purescript is a functional programming language that compiles to javascript. It is a strict haskell dialect that can run anywhere that javascript does. Justin Woo is a Purescript evangelist and enthusiast. We talk about purescript vs elm and working with…
Throw Away the Irrelevant with John A De Goes
Mar 21, 2018 • 68 min
Today’s interview is with John A De Goes. We talk about performance problems with monad transformer on the jvm, various flavours of IO monads, reasoning about polymorphic type signatures and much more.
Generic Programming and Shapeless with Miles Sabin
Mar 7, 2018 • 60 min
When Miles Sabin applied to speak at a conference on generic programming, he bluffed a little bit. He would present on porting Simon Peytons Jone’s scrap your boilerplate functionality to Scala. Once his talk was accepted, he only had one thing left to…
Total Programming Using Swift with Andre Videla
Feb 12, 2018 • 53 min
In this interview Andre Videla discusses how the swift program language encourages programming in a total style. He also discusses his love of Idris, proof assistants and how his research into haskell, idris and dependant types have made him a better…
Type Driven Development and Idris With Edwin Brady
Jan 29, 2018 • 59 min
Edwin Brady is the creator of the Idris programming language and Author of the book Type-Driven Development with Idris and a computer science lecturer. In this interview, we discuss dependent types, type holes, interactive and type-driven development,…
Algebraic Domain Modeling using Functions With Debashish Ghosh
Jan 22, 2018 • 58 min
In today’s interview Debashish Ghosh explains how to model a complex problem domain in a functional paradigm. His solution focuses on modelling the behaviour of the software system rather than nouns it will contain. He also focuses on an algebraic…
Design Principles From Functional Programming with Runar Bjarnason
Jan 10, 2018 • 51 min
In this interview Runar explains how writing in a functional style involves limiting side effects, avoiding exceptions and using higher order abstractions. Writing in this style places constraints on what a module in a software system may do, but by…
Python to Scala rewrite at Duolingo with Andre Kenji Horie
Jan 7, 2018 • 53 min
Andre Kenji Horie is senior engineer at Doulingo. He wrote about the process of rewriting the session generator, as well as moving from python to scala. and changing architecture all at the same time. In this episode Andre talks about the reasons for the…
Incident Response with Emil Stolarsky
Jan 5, 2018 • 51 min
In this interview Emil argues that we need to move beyond tribal knowledge and incorporate practices such as an incident command system and rigorous use of checklists. Emil suggests that we need to move beyond a mindset of “move fast and break things” and…
Scala Native with Denys Shabalin
Jan 1, 2018 • 48 min
Scala is a functional and object oriented programming language built on the JVM. Scala Native takes this language, loved by many, and brings it to bare metal. Scala Native is an optimizing ahead-of-time compiler and lightweight managed runtime designed…