Tech Talks are in-depth technical discussions. 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 software, a CPU built-in software" "Compilers can be slow. You know, I grew up running Linux and I had Gentoo running, so I basically let my computer run for the whole night to compile my window man...
Sep 01, 2019•58 min•Ep 37•Transcript available on Metacast Tech Talks are in-depth technical discussions. 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 ...
Aug 15, 2019•54 min•Ep 36•Transcript available on Metacast Tech Talks are in-depth technical discussions. 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...
Aug 01, 2019•53 min•Ep 35•Transcript available on Metacast Tech Talks are in-depth technical discussions. How do we make JavaScript easier to work with? Chris Krycho has been using typescript to add types to javascript since 2016. Chris is a software developer at LinkedIn who, at his previous gig, worked on converting one of the largest Ember apps in the world to TypeScript. I was shocked by the size. Chris also loves Rust and types and is a former C and FORTRAN programmers. He hosted a podcast called the New Rustacean, which he has retired from. Today ...
Jul 15, 2019•1 hr 11 min•Ep 34•Transcript available on Metacast 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 technology a force for liberty or oppression. Cory Doctorow is one of my favorite authors and also a public intellectual with a keen insight into the dangers we face a society. In this interview, I ask him how to avoid ending up in a techno-tot...
Jun 15, 2019•1 hr 1 min•Ep 33•Transcript available on Metacast 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 strin...
May 31, 2019•56 min•Ep 32•Transcript available on Metacast 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. Today I talk to Jon about Noria, about building a database in rust and his efforts to teach people intermediate rust via live coding sessions. Jon was great to talk to. He really was able to explain to me how Noria is able to do what it does and where...
Apr 30, 2019•59 min•Ep 30•Transcript available on Metacast 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 pr...
Apr 15, 2019•55 min•Ep 29•Transcript available on Metacast Tech Talks are in-depth technical discussions. Pat Helland has a wealth of knowledge on building distributed data stores. He has been working on distributed data stores since 1978, when he worked on the tandem fault-tolerant database. Since then he has been involved in many distributed database projects. Here is the key thing, he is also a master at explaining the key ideas of distributed systems using simple language and practical everyday examples. Can you get married on the phone? How are mes...
Mar 31, 2019•56 min•Ep 28•Transcript available on Metacast 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 polymor...
Mar 15, 2019•49 min•Ep 27•Transcript available on Metacast 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 interesting. We discuss how to build faster software in a modern fashion by using glibc and techniques from system programming. This means using raw pointers and manual memory management but from a modern language. Richard also shares some persp...
Feb 22, 2019•54 min•Ep 26•Transcript available on Metacast 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...
Jan 25, 2019•1 hr•Ep 25•Transcript available on Metacast 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 their values. So the right language is the one who's values align with you and your projects goals. This simple idea carries a lot of weight and I think has the potential to lift up technical discussions to a higher level of discourse. You will fin...
Dec 18, 2018•1 hr 19 min•Ep 24•Transcript available on Metacast Tech Talks are in-depth technical discussions. 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....
Dec 01, 2018•1 hr 7 min•Ep 23•Transcript available on Metacast Tech Talks are in-depth technical discussions. 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 recover from it. Big ball of mud is the title of a paper presented at the 1997 Patterns Languages of Programs conference and I think it is super interesting. The researchers went out into the field t...
Nov 14, 2018•1 hr 1 min•Ep 22•Transcript available on Metacast Tech Talks are in-depth technical discussions. 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 funda...
Oct 22, 2018•1 hr 1 min•Ep 21•Transcript available on Metacast Tech Talks are in-depth technical discussions. "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 productio...
Aug 31, 2018•48 min•Ep 19•Transcript available on Metacast Tech Talks are in-depth technical discussions. Today I talk to Vaughn Vernon about how Domain Driven Design can help with designing microservices. 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 . Show Notes: Implementing DDD Book Vlingo Platform Vlingo Source...
Aug 17, 2018•49 min•Ep 18•Transcript available on Metacast Tech Talks are in-depth technical discussions. The promise of functional programming is code that is easier to reason about, test and maintain. Referential transparency means there is no extra context to worry about, we can just focus on inputs and outputs. Examples of functional programming in the small are plentiful. Fibonacci is easy to write as a function but what about fp in the large? Http4s is a web framework written in scala that takes a pure functional approach to building http services...
Jul 27, 2018•51 min•Ep 17•Transcript available on Metacast Tech Talks are in-depth technical discussions. 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 s...
Jul 03, 2018•1 hr 7 min•Ep 16•Transcript available on Metacast Tech Talks are in-depth technical discussions. 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...
Jun 13, 2018•59 min•Ep 15•Transcript available on Metacast Tech Talks are in-depth technical discussions. I don't know a lot about micro services. Like how to design them and what the various caveats and anti-patterns are. I'm currently working on a project that involves decomposing a monolithic application into separate parts, integrated together using Kafka and http. 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 build...
Jun 06, 2018•1 hr 7 min•Ep 14•Transcript available on Metacast Tech Talks are in-depth technical discussions. 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 authors of Programming Rust. We talk about w hat problems rust is trying to solve, t he unique language features and type system of rust. It includes both algebraic data types, type classes, and gener...
May 16, 2018•1 hr 3 min•Ep 13•Transcript available on Metacast Tech Talks are in-depth technical discussions. 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. Contact Proctor: Functional Geekery Podcast @stevenproctor @fngeekery...
May 02, 2018•1 hr 1 min•Ep 12•Transcript available on Metacast Tech Talks are in-depth technical discussions. 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 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. Contact Justin: twitter github website Show notes: ...
Apr 04, 2018•51 min•Ep 10•Transcript available on Metacast Tech Talks are in-depth technical discussions. 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 and reasoning about polymorphic type signatures. On the lighter side of things, we discuss how to write technical articles well, flame wars and Zee vs Zed pronunciation. Show Notes: John's Website and Twitter Descriptive Variable Names: A Code Smell Data Structures Are Antithetical to Functional Programming A ...
Mar 21, 2018•1 hr 8 min•Ep 9•Transcript available on Metacast Tech Talks are in-depth technical discussions. In simple terms, a total function is a function that produces a well defined output for all possible inputs. A total program is a program composed of only total functions. A non-total, or partial function, would be a function that can fail given certain inputs. Such as taking the head of a list, which can fail if giving an empty list and is therefore non-total. Total programming can be done in any language, however many languages make this easier. S...
Feb 12, 2018•54 min•Ep 7•Transcript available on Metacast Tech Talks are in-depth technical discussions. 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. The book, the language and Edwin himself all seem to be chock full of ideas for improving the way computer programming is done, by applying ideas from programming language theory. In this interview, we discuss dependent types, type holes, interactive and type-driven development, theorem provers, Curr...
Jan 29, 2018•59 min•Ep 6•Transcript available on Metacast Tech Talks are in-depth technical discussions. In object oriented languages, modeling a complex problem domain is a well understood process. Books like Domain Driven Design contain techniques for breaking down a problem domain and earlier books like the gang of four book catalogue design patterns for modeling these domains in an object oriented way. In today’s interview Debashish Ghosh explains how to model a complex problem domain in a functional paradigm. His solution focuses on modelling the ...
Jan 22, 2018•56 min•Ep 5•Transcript available on Metacast