In this episode, Adam talks to Gary Bernhardt about building Execute Program, why he chose to build it as a full-stack TypeScript application, and the implications using TypeScript has on what you need to test.
- Why Gary decided to write Execute Program as a full-stack TypeScript application instead of using a Ruby or Python backend like he may have traditionally
- Do you actually have to write less tests if you have a good type system?
- What does a good type system give you that tests can't give you?
- Using io-ts to type check incoming data
- How to think about structuring your code to best take advantage of the benefits your type system gives you and minimize the need to write tests
- Pushing conditional logic to the core of your system to reduce the number of tests you need to write at the edges
- The correlation between type errors and behavioral bugs, and how a type system can help you catch mistakes you don't think to test for
- Do type errors signal that you're missing a test?
- Structural vs. nominal type systems, and the benefits of structural type systems like used by TypeScript and Go
- Best practices for type-checking within a function in a structural type system like TypeScript
- The power of supporting literal types like true or "active" in addition to traditional types
- Destroy All Software
- Execute Program
- "Are tests necessary in TypeScript?"
- TypeScript course on Execute Program
- Gary's tweet about unions with literal types
I decided to stop taking sponsors for the show because I think advertisements are annoying and no one wants to listen to them.
- Tailwind UI, a collection of professionally designed, fully responsive HTML components built with Tailwind CSS.
- Refactoring UI, a book and video series I put together with Steve Schoger on designing beautiful user interfaces, without relying on a designer.
- Advanced Vue Component Design, a course on designing simpler, more flexible Vue components that are both more powerful and easier to maintain.
- Test-Driven Laravel, a massive video course on designing robust Laravel applications with TDD. Learn how to build a real-world application from scratch without writing a single line of untested code.
- Refactoring to Collections, a book and video course that teaches you how to apply functional programming principles to break down ugly, complex code into simple transformations — free of loops, complex conditionals, and temporary variables.
What is Full Stack Radio?
A podcast for developers interested in building great software products. Every episode, Adam Wathan is joined by a guest to talk about everything from product design and user experience to unit testing and system administration.