Rank #1: God's Programming Language - Philip Wadler on Haskell
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 something connected to the mathematical underpinning of the universe itself.
It follows from this that functional programming languages are therefore more correct or more deeply justified and fundamental than other languages. I am probably stating things in a stronger fashion than Phil is comfortable with, but I like fp, so I can be a little hyperbolic.
While explaining this principle, that has guided his career, Phil takes us through the history of computer science. We start with Turing and Alonzo Church. Eventually we get to what the movie Independence Day got wrong and what language a theoretical creator deity would program in.Show notes:
Oct 22 2018
Rank #2: David Heinemeier Hansson, Software Contrarian
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 pleasure and privilege of working with the web. No one knows what you built it. It, you could build an in basic, you can build it a Ocaml, you can build in the Haskell, you can build it in whatever Ruby. No one is going to be none the wiser you get to choose"
You want to write for the web. I mean, literally every programming language that's ever been invented and known to humankind is serving a webpage somewhere."
"There's just something heartwarming in that, that this idea of the monoculture that like this is all just a battle to the death and there's going to be one framework and there's going to be one programming language that lifts is left standing. Programmers are really drawn into that right into that horse race."
So much of their technology choices seem to be predicated on like, is this popular? Is this going to be popular next year? Do you know what I mean?"
"The crimes against programming humanities that have been done in the service of single page applications are far worse than the ones that have been done in the service of microservices.
But then of course, as it is, lots of people combine the two. So it's a fleet of microservices serving a single page application, and that's just where it bam, my head explodes with like, yeah, I would rather retire and fucking, I don't know, make weaved baskets than deal with that shit."
"I'm not saying that email is sort of in its base form is wonderful, but you know what is wonderful asynchronous. Write-ups of cohesive, full thoughts, people using actual goddamn paragraphs to describe ideas and proposals, and they put those paragraphs together into form entire, cohesive thoughts. And then letting someone take that in, read those several paragraphs, sit back for more than five minutes. Ponder that. And then respond."
Feb 01 2020
Rank #3: Learning to Think with Andy Hunt - Pragmatic Programmers guide to being productive
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 many great books, including several by recent guests.
Today I talk to Andy about how software engineers can get better at thinking and learning. How can we develop this meta-skill and how can being aware of common mistakes our brain make us more productive?
Apr 15 2019
Rank #4: Bartosz Milewski on Category Theory
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.
The world of functional programming is rife with terminology imported from abstract algebra and Category Theory. In fact, it may be one of the most valid criticisms of functional programming is the use of Category-Theoretic terminology that can be unwelcoming to newcomers.
Category theory can also be a tool to teach us to see software development in a different light and it can teach us to build better software. Bartosz is also just an interesting person, if you haven't heard of him yet, you are in for a treat.
Aug 15 2019
Rank #5: Domain Driven Design And Micro Services With Vaughn Vernon
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 talk about the platform he is developing for applying these DDD concepts using the actor model, Vlingo.
Also my group at Tenable is hiring for our web app scanning product. We are looking for a talented developer and I think it is really a great place to work. Security, Scaling, and Performance are some of the challenges that make this an interesting position where a great developer with functional programming skills could really excel. Apply here and or hit me up on twitter or email ( firstname.lastname@example.org ) for further details.
Aug 17 2018
Rank #6: Jimmy Koppel on Advanced Software Design
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 synthesis at MIT. He was previously paid 100 thousand dollars to drop out of university by Peter Thiel, but yet still graduated with two degrees.
The most interesting, however, about Jimmy is he is working hard to teach the world how to design better software. Due to his time working on program synthesis, he developed some unique insights into what makes software good, and what makes it bad, and he spends time teaching people his insights.
Aug 01 2019
Rank #7: Burn out and recreational coding with Jamis Buck
A decade ago Jamis Buck was not loving his job. He was an important open source contributor. He worked for the hottest trendiest software company at the time, 37 signals, creator of ruby on rails. He was on top of the world but also he was burnt out.
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 things with a focus not on the latest trends in software development and not even a specific programming language.
The focus instead is on fun.
Jan 25 2019
Rank #8: Crafting Interpreters With Bob Nystrom
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.
If you are wondering why many languages have hand-rolled parser implementations yet much work on build language implementations focuses on parser and tokenizer generators then Bob's insights will be eye-opening. Also, if you've ever used regexes to pull strings apart into structured data, and I sure have, then Bob's perspective on the simplicity of hand-rolled parsers will certainly open up some new possibilities for you.
May 31 2019
Rank #9: Test in Production and being On-Call with Charity Majors
"Metrics and Dashboards can die in a fire and every software engineer should be on-call" - Charity Majors
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.
I originally saw a talk by Charity where she said something like fuck your metrics and dashboards, you should test in production more. It was a pretty hyperbolic statement, but backed up with a lot of great insights. I think you'll find this interview similarly insightful.
Charity and her company are probably best known for popularizing the concept that observability in the key to being able to debug issues in production.
Aug 31 2018
Rank #10: Structure and Interpretation of Computer Programs with Hal Abelson
Adam talks to Hal Abelson about the textbook he coauthored in 1984, SICP and why it is still popular and influential today.
"If you pick up almost any computing book it starts out 'here are these datatypes, these operations that you do' and somewhere around 20 or 30% through the book, they show you how to define a function or a procedure. Whereas we really take the opposite approach. We say the key thing is abstraction. So we kind of start there."
"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 whole lot of software engineering ends up being trying to get out of the hole you dug yourself into because you made a program that was too specific."
Oct 01 2019
Rank #11: Graphql And Sangria With Oleg Ilyenko
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.
Talks on Sangria:
- Sangria videos
Apr 18 2018
Rank #12: Dependent Types in Haskell with Stephanie Weirich
At Strange loop 2017, a wandered into a talk where I saw some code that deeply surprised me. The code could have been python if you squinted, passing dictionaries around, no type annotations anywhere.
Yet key look up in the dictionary was validated at compile time. It was a compile time error to access elements that didn't exist. Also the dictionary was heterogeneous, the elements had different types, and it was all inferred and validated at compile time.
What I was seeing was Dependent types in Haskell. In today's interview Stephanie Weirich explains her efforts to add dependent types to haskell and how that example worked.
Jun 13 2018
Rank #13: Moves and Borrowing In Rust With Jim Blandy
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 Blandy walks us through what these concepts mean and how they work. We also talk about how to avoid fighting with the borrow checker at all and why the conceptual model that Rust adopts, though it may seem unusual at first, is actually more representative of how computers work and therefore an easier programming model.
Jul 03 2018
Rank #14: Abstraction and Learning with Runar Bjarnason
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 interview, he explains these concepts using examples from the real world, from SQL, from effectful computing and many other areas.
We also talk about how to learn and acquire the skills necessary to understand abstract concepts like very polymorphic code and category theory.
Runar also explains his latest project unison computing and how it uses the correct level of abstraction to rethink several foundation ideas in software development.
Mar 15 2019
Rank #15: Erlang And Distributed Systems with Steven Proctor
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 programming and applying FP principles to various non FP contexts.
May 02 2018
Rank #16: Software in Context with Zach Tellman
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 to how we're using it. It's okay for us to create narrow things. It's okay for us to create Powershells instead of bash sort of environments because that narrowness gives us the ability to go and do things we might not otherwise be able to do."
"Twitter are built on top of Ruby because that was a reasonable thing. And then it stopped being the reasonable thing. And again, you have this kind of, I dunno, I call it hacker news induction, which is like, well I built this thing and then I built this other thing, which is almost exactly the same thing. And it worked or it didn't work. And therefore I think that this must generalize across all possible applications of this thing, right? So I tried to rails and it was great or it was awful and therefore it is great or awful, you know, in all situations. "
Dec 02 2019
Rank #17: The Little Typer With Daniel Friedman and David Thrane Christiansen
When it comes to type systems "I am, so far, only in the dependent types camp" - Daniel P. Friedman
You can write more correct software and even rigorous mathematical proofs. Prepare for some mind stretching.
Previous guests like Edwin Brady and Stephanie Weirich have discussed some of the exciting things a dependent type system can do Miles Sabin said dependent types are surely the future. This interview is to get us ready for the future.
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.
Here is a quote from Doug Crockford: "Little Schemer teaches one thing, a thing that is very difficult to teach, a thing that every profession programmer should know, and it does it really well. These are lessons that stick with you." The latest one is the little typer and its about types. Specifically dependent types.
Dan's coauthor is David Thrane Christiansen, Idris contributor, and host of a podcast about type theory that is way over my head.
Together they are going to teach us how the programming skills we already have can be used to develop rigourus mathematical proofs.
Stay tuned to the end for my guide to working thru the book.
Originally published at CoRecursive here
Dec 01 2018
Rank #18: Tech Evangelism and Open source With Gabriel Gonzalez
What makes some pieces of technology take off? Why is java popular and not small talk or Haskell. 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 developers make is they tried to build what I call the hype train. Where they have started a new project that has a lot of poTech Evangelism with Gabriel Gonzalez tential and they advertise on hacker news hoping that, okay, we're gonna generate a lot of hype, maybe get a lot of influx of new contributors, new contributes, new features, generate more hype and so forth."
"They hope that there'll be that virtuous cycle that will get them to the mainstream in practice, that never happens. Usually, the thing about contributors is that their needs are always going to be fragmented, right? If you have eight new contributors, they're going to be taking you in eight different directions. You should focus on one direction and sometimes that means not only doing a lot of work yourself, but it's explicitly saying no to something and saying this is not where I want to take the product right now."
Nov 01 2019
Rank #19: Beautiful and Useless Coding with Allison Parrish
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. Word vectors represent a fundamentally new tool for working with text.
Adam and Allison also talk about creative computer programming and building twitter bots and what makes something art.
"Computer programming is beautiful and useless. That's the reason that you should want to do it is not because it's going to get you a job, because it has a particular utility, but simply for the same reasons that you would pick up oil paints or do origami or something. It's something that has like an inherent beauty to it that is worthy of studying."
"For my purpose as an artist and as like someone who teaches programming to artists and designers, I want to emphasize that it's not only a vocational thing, it's not only a way for building things like to do apps for that matter. It's not only a way to, you know, write useful applications that help to organize communities or help to do scientific work and other like good applications of programming and software engineering. But there is this like very essential, very core part of computer programming that is just joyful. Um, that's about understanding your own mind in different ways and understanding the world in different lands."
Nov 16 2019
Rank #20: Purescript And Avocados with Justin Woo
Justin Woo is a self described Purescript evangelist and enthusiast. We talk about purescript vs elm and working with expressive type systems. Justin also had some great metaphors about phantom types and masking tape as well as avacados and testing.
My team at Tenable is hiring. We are a distributed team of scala developers working on static analysis of docker containers (among other things).
We are a team of smart people, working fairly autonomously on interesting problems. We are one of many teams working on interesting problems at Tenable. I think its a great place to work.
I am in Peterborough, in Canada, and our team has people working in the US, Ireland and the UK as well.
Here is the job posting:
Apr 04 2018