New     Submit     Search     Register  
Full Stack Radio on Smash Notes

Full Stack Radio podcast.

December 28, 2019

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.



Episodes with Smash Notes

In this episode, Adam talks to Jason Cohen of WP Engine about hiring people to join the Tailwind team, figuring out what to focus on, and learning how to manage.

Topics include:


  • How do you decide what role to hire for?

  • Why it's so important to figure out exactly what your biggest struggle is before hiring

  • How to decide what the most important thing to focus on is when it feels like there's too much to do

  • Why it's important to consider the impact of hiring for a specific role on your own happiness vs. just the company's bottom line

  • Coming to terms with the fact that you can't do everything, and why it's important to focus on something instead of spreading yourself thin across everything

  • Mistakes people make when they start managing a team for the first time

Links:

Supporting the show:

I decided to stop taking sponsors for the show because I think advertisements are annoying and no one wants to listen to them.

If you do want to support the show, the best way to do it is to purchase one of my products:



  • 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.

In this episode, Adam talks to Jason Fried about growing the Tailwind team and how to best use Basecamp to keep his particular company organized. He also walks through tons of real examples from their recent work on HEY, sharing lots of behind-the-scenes stuff about how Basecamp use Basecamp themselves.

Topics include:


  • How did Basecamp evolve from being a team/client communication tool to focusing on keeping your whole company organized, and is it really even that different?

  • How exactly should we set up Basecamp on day one to support a small 3-5 person remote software team? What tools should we use and which ones should we ignore for now?

  • Finding the balance between being organized enough and splitting things up too much

  • How big should projects be? Is "HEY v1" a project, or is a project something more like "HEY File Attachments"?

  • What tools do you normally enable for regular projects, and how do you use them?

  • How are you normally using chat at the individual project level?

  • Why todo lists should be created by the individuals doing the work, and not the people assigning the work

  • How should we use the company HQ project? What are some less obvious ideas we can apply there that can make a big difference?

  • Using a "what we're working on" project to keep everyone on the team in the loop and feeling connected

  • Using "heartbeats" to summarize the work a team has been doing over a period of time for the rest of the company

  • Advice on bringing on new employees and how to assign them their first project

  • When you're such a writing-driven company, how do you make sure decisions get written down when they are made in real-time instead of naturally occurring within Basecamp?

Screenshots:

Links:

Supporting the show:

I decided to stop taking sponsors for the show because I think advertisements are annoying and no one wants to listen to them.

If you do want to support the show, the best way to do it is to purchase one of my products:



  • 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.

In this episode, Adam is talks to Evan You about Vite, a new dev server and build tool for modern JavaScript projects.

Topics include:


  • What is Vite and what makes it different than existing tools like Webpack?

  • How do ES Modules actually work in the browser and what are the limitations?

  • Will we ever be able to use ES Modules in production for large complex projects?

  • How does Vite work under the hood, and how does it support non-JS files like Vue files, or CSS files?

  • How hot module replacement is implemented under the hood in Vite

  • Optimizing modules with many dependencies to keep the development experience fast

  • What is VitePress and how does it compare to VuePress?

  • Bundling sites for production with Vite

  • What's the roadmap for Vite 1.0?

Links:

Supporting the show:

I decided to stop taking sponsors for the show because I think advertisements are annoying and no one wants to listen to them.

If you do want to support the show, the best way to do it is to purchase one of my products:



  • 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.

In this episode, Adam is talks to Alex DeBrie about DynamoDB, and how it compares to relational databases like MySQL.

In this episode, Adam is talks to Tom Preston-Werner about Redwood.js, a new full-stack JavaScript framework for building edge-ready web applications.

In this episode, Adam is talks to Tim Neutkens about what's new in Next.js 9.3 and how it's changing the way applications are built at ZEIT.

In this episode, Adam is joined by Michael Chan to talk about how people who identify as React developers are building real web applications, and why it seems like nobody is talking about databases or background jobs anymore.

In this episode, Adam is joined by Sam Selikoff to talk about some of the interesting technical challenges he faced building Tailwind UI, and how working on the project has influenced how he will build layouts in the future.

In this episode, Adam talks to Mark Dalgleish about common mistakes people make in their approach to constructing layouts, and how dedicated layout components can make your component system much easier to work with.

In this episode, Adam talks to Sam Selikoff about Mirage.js and how to use it to build production-ready front-end applications, even if your back-end API isn't ready yet.

In this episode, Adam talks to Caleb Porzio about his new UI library Alpine.js.

In this episode, Adam talks to Ryan Singer of Basecamp about how they plan, structure, and execute on new features.

In this episode, Adam talks to David Khourshid about using state machines to build UI components that are simpler and more resilient to bugs.

In this episode, Adam talks to Evan You about all of the changes and improvements coming to Vue.js 3.0.

In this episode, Adam talks to Alasdair Monk about how they approach CSS at Heroku, and how using a utility-based approach has kept their team happy for the last three years.

In this episode, Adam talks to Jonathan Reinink about Inertia.js, a new framework he recently released that lets you build single page applications with Vue, React, or Svelte, without having to give up the productivity benefits of traditional server-side development workflows using tools like Laravel or Rails.

In this episode, Adam talks to James Long (creator of Prettier) about building Actual, a local-first Electron application with no central database that syncs data peer-to-peer.

In this episode, Adam talks to Rob Walling about choosing, validating, and marketing a viable software product.

In this episode, Adam talks to Leslie Cohn-Wein and Rafael Conde about designing and implementing new UI features at Netlify.

In this episode, Adam gets some advice from Ian Landsman of Userscape on marketing and positioning a new Tailwind CSS components directory project he's working on with Steve Schoger.

In this episode, Adam talks to Matt Biilmann CEO of Netlify about building the Netlify dashboard, and what makes it feel so fast.

In this episode, Adam talks to Benedikt Deicke about building Userlist.io, a new email automation product for SaaS businesses that he recently launched with his co-founder Jane Portman.

In this episode, Adam talks to Taylor Otwell about Laravel Vapor, the new serverless platform for Laravel applications that was recently announced at Laracon US.

In this episode, Adam talks to Ryan Toronto about his journey from being a full stack Rails developer to focusing on single page applications, and why application developers should be betting on UI-focused frameworks like Ember, React, and Vue.

In this episode, Adam talks to Aaron Gustafson about authoring semantic HTML in the context of web applications, where choosing the right element can be a lot more complicated than it seems.

In this episode, Adam talks to Mitchell Hamilton about writing your styles directly in your JavaScript components using the CSS-in-JS library Emotion.

In this episode, Adam talks to Jerod Santo of The Changelog about building their custom podcasting platform using Elixir and Phoenix.

In this episode, Adam talks to Jason Lengstorf about Gatsby, and why using React and GraphQL to build something even as simple as a blog is not as crazy of an idea as it sounds.

In this episode, Adam talks to Sebastian De Deyne about learning React from the perspective of a Vue developer, and how to translate all of the Vue features you're already comfortable with to React code.

In this episode, Adam talks to Justin Jackson about growing his new SaaS business Transistor to $10,000 in MRR.

In this episode, Adam talks to Guillermo Rauch building and deploying serverless web applications with Now.

In this episode, Adam talks to Jeffrey Way about the process of building the brand new Laracasts.com with Tailwind CSS.

In this episode, Adam talks to Caleb Porzio about Livewire, a new library he's working on that lets you build interactive user interfaces using server-side code.

In this episode, the tables are turned as Sam Selikoff interviews Adam about the upcoming release of Tailwind CSS v1.0.

In this episode, Adam talks to Jonathan Reinink about a new approach he has been using to build Laravel and Vue.js apps that lets him match the UI fidelity of an SPA, without abandoning server-side routing or data fetching.

In this episode, Adam continues his discussion with Sam Selikoff about building single page applications, this time focusing on strategies for keeping your API layer as simple as possible, so all of your complexity lives in your client-side codebase instead of being spread across both.

In this episode, Adam talks to Sam Selikoff about single page application architecture, and why you should think of client-side applications like desktop applications.

In the spirit of the new year, Adam and Ben Orenstein talk about getting in shape through strength training.

In this episode, Adam talks to Jonathan Reinink about strategies for off-loading resource intensive work from your application code and into your database.

In this episode, Adam and Steve Schoger answer listener questions about UI design, and share all of the details about their upcoming book and design resource Refactoring UI.

In this episode Adam talks to Paul Jarvis about defining your own version of success and why you might not need to build a big business to achieve it.

In this episode Adam talks to Ben Orenstein about the common mistakes people make when working on a new project that prevent them from getting it to the finish line.

In this episode Adam talks to Sébastien Chopin about Nuxt.js, a Next.js-inspired framework for building server-rendered client-side applications with Vue.js.

In this episode Adam talks to Tim Neutkens about Next.js, an opinionated React framework for building server-rendered client-side applications.

In this episode Adam talks to Ryan Chenkie of Angularcasts about authentication strategies and security best practices when building client-side applications with frameworks like React, Vue, Angular, or Ember.

In this episode Adam talks to Ryan Florence about the challenges of making custom UI components accessible, and how Ryan is trying to make that easier with Reach UI.

In this episode, Adam talks to James Clear about why goal setting isn't enough, why you should focus on building habits instead, and how to build habits that you'll actually stick with.

In this episode, Adam continues his event sourcing discussion with Frank de Jonge from episode 85, going deep into how to actually implement event sourcing using Frank's library EventSauce.

In this episode, Adam talks to Ben Orenstein about the benefits of pair programming and how to do it effectively.

In this episode, Adam and Justin Jackson have a candid conversation about a life-changing realization Adam recently had about what he does for a living. They talk about why it's important to define your business by the people it serves instead of the product you make, and how to stop stressing yourself out trying to come up with the perfect SaaS app idea.

In this episode, Adam talks to Derrick Reimer about building his new app Level as an SPA using Elm, Phoenix, and GraphQL.

In this episode, Adam talks to Derrick Reimer about the product design decisions behind Level, a new team communication platform Derrick is building. They also talk about Derrick's decision to open-source the entire codebase, despite the fact that he's building a real business around it.

In this episode, Adam talks to David Hemphill about using JSX instead of templates in Vue.js, and why you might want to give it a try.

In this episode, Adam talks to Sam Selikoff about how Ember fits into the JS framework landscape in 2018, and why it might be the right choice for your next project.

In this episode, Adam talks to Blake Newman about getting started with Vuex, and how you would use it to manage your application's state using several practical real-world examples.

In this episode, Adam talks to Chris Fritz about common mistakes people make when designing Vue.js applications, and better ways to solve the same problems.

In this episode, Adam talks to Jonathan Reinink about lessons learned rebuilding his SaaS app with Vue.js and Tailwind CSS.

In this episode, Adam talks to Frank de Jonge, author of the EventSauce library, about what event sourcing is, how it works, and what it looks like to use it to model some practical real-world problems.

In this episode, Adam talks to Edd Yerburgh, Vue.js core team member and author of the vue-test-utils library, about testing Vue components.

In this episode, Adam talks to David Heinemeier Hansson about Basecamp's new JavaScript framework "Stimulus" as well as David's new YouTube series "On Writing Software Well."

In this episode, Adam talks to Sarah Drasner about using animations and transitions to create more intuitive user interfaces, as well as technical tips, tricks and best practices for implementing them well.

In this episode, Adam talks to Evan You the creator of Vue.js about advanced component design patterns, and using features like scoped slots and render functions to build components that are much more than just UI widgets.

In this episode, Adam talks to Tom Schlick about tackling challenges faced when building multitenant apps.

In this episode, Adam talks to Kent C. Dodds about building "downshift", a React autocomplete component he designed for experiences he needed to build at PayPal. Kent gives a behind-the-scenes look at how the library uses the render prop pattern to allow maximum customizability without complex configuration.

In this episode, Adam and Ben Orenstein share nine of their favorite refactorings that you can use to clean up your code.

In this episode, Adam and Jonathan Reinink continue their discussion about Tailwind CSS, answering listener questions about the framework and sharing details behind the roadmap to 1.0.

In this episode, Adam is joined by Jonathan Reinink to discuss Tailwind CSS, a new utility-first CSS framework that they just released. They talk about what Tailwind is, how it works, and what makes it different than component-based frameworks like Bootstrap or other utility frameworks like Tachyons.

In this episode, Adam talks to Diana Mounter of GitHub to talk about using design systems to tame legacy CSS, and how GitHub is using utility classes to make it easier to build more consistent, maintainable user interfaces.

In this episode, Adam is joined by Steve Schoger to talk about five ways developers can get better at designing their own projects.

In this episode, Adam is joined by Justin Jackson to talk about how to start working towards making a full-time living from your own projects.

In this episode, Adam is joined by Taylor Otwell the creator of Laravel to talk about their approaches to testing Laravel applications.

In this episode, Adam is joined by Matt Stauffer of Tighten to talk about building a CSS framework with PostCSS.

In this episode, Adam is joined by Jeffrey Way of Laracasts to share some tips and tricks for using Vue.js elegantly with traditional server-side web apps.

In this episode, Adam talks to Jonathan Reinink about what it's like to build a Laravel application using Turbolinks, how it plays with front-end frameworks like Vue.js, and how it's helping him quickly develop web, iOS, and Android apps for his SaaS business all by himself.

They also discuss the benefits of using a Turbolinks-style approach for small teams, and how Turbolinks on mobile compares to other popular tools like Ionic.

In this episode, Adam welcomes back Jonathan Reinink to talk about implementing designs with a utility-first approach to CSS.

They talk about the problems this approach has solved for them, the surprising workflow benefits, and some tips and tricks for using this approach well.

In this episode, David shares some lessons learned from the PushSilver Infinite launch: what went well, what could've been improved, and what he would double down on next time.

Adam talks about some of the UI design challenges he and Steve have been trying to solve, and shares some of the creative solutions they came up with.

In this episode, David talks about getting ready for the launch of PushSilver Infinite, and the unexpected engineering effort needed to make the most of a marketing initiative.

Adam gives an update on gracefully handling errors in the KiteTail checkout process, launching Zttp as an open-source package, and how he used Lumen to power the Zttp integration test suite.

In this episode, David shares the details behind the pricing changes he's decided on for PushSilver and talks about some of the new features and marketing strategies he's working on for the upcoming launch.

Adam shares the details behind his decision to bring on a co-founder for KiteTail, talks the collaboration process when working on an app with somebody else, and give an update on where he's at with getting KiteTail integrated into the Test-Driven Laravel course app.

Adam and David are joined by Ian Landsman to talk about his latest project Thermostat.io and discuss some pricing ideas for PushSilver and KiteTail.

Topics include:

Thermostat.io and NPS surveys
Charging more vs. charging less
Finding a niche for PushSilver and how to appeal to that niche
One-time purchase lifetime plans for SaaS
Percentage-based vs. tiered pricing

In this episode, Adam and David recap their MicroConf 2017 experiences, give some product updates, and chat about topics like:

Dogfooding Cron Dog in PushSilver
Dealing with complex validation
Why we hate auto-saving UIs
Validation issues when supporting "draft" models
Expanding the scope of KiteTail
Different ways to handle client-side image preview
Building a Cron Dog SDK

In this episode, David talks about adding timezone support to Crondog, and Adam wrestles with some decisions about dealing with failed webhooks in KiteTail.

We also talk a lot about different strategies for securing webhooks, and what we're looking forward to at MicroConf.

Adam welcomes David Hemphill back to the show, but this time as a co-host!

David introduces Crondog, the new product he's working on to help developers manage dynamic recurring tasks in their applications.

Adam introduces KiteTail, an app that let's you create webhook-driven hosted checkout pages; something he wishes he'd had when he launched his course.

From here on out, Full Stack Radio will follow David and Adam's journey building these new products; discussing interesting technical, design, and business challenges they face along the way.

In this episode, Adam talks to Michelle Bu of Stripe about the new Stripe Elements library, Stripe.js v3, and the Sinatra app that powers their API.

In this episode, Adam and Jonathan continue their discussion about forms from episode 54, this time focusing on the complexities of validation.

In this episode, I talk to Noel Rappin about common mistakes developers make when handling payments on the web and how to fix them.

In this episode, Adam talks to Derrick Reimer about the technical challenges behind building and scaling Drip, a sophisticated email marketing automation platform.

In this episode, Adam talks to Wes Bos about how he seems to get so much done, why he built his own course platform, and growing an audience.

In this episode, Adam talks to Ian Landsman about shady marketing tactics that will turn your customers against you, and how to be more authentic with your marketing strategy.

In this episode, Adam talks to Jonathan Reinink about dealing with common headaches when working with everyone's favorite part of web development: forms.

In this episode, Adam talks to Kyle Fiedler of thoughtbot about common mistakes developers make with design, and some tips and tricks for making your designs look more professional.

In this episode, Adam and Taylor Otwell have a discussion about strategies they use to write cleaner, simpler code when working with the Laravel framework.

In this episode, Adam talks to Matt Wynne about Behavior Driven Development with Cucumber.

Topics include:

What exactly is BDD?
Is BDD a technical or non-technical practice?
How do you get started with BDD?
How do you keep the number of system tests low to keep your test suite fast?
What's your strategy for dealing with external services in acceptance tests?
What are the advantages of using Cucumber even as a solo developer working on a side project?

In this episode, Adam talks to Evan You about what's coming in Vue.js 2.0.

Topics include:

The motivation for rewriting Vue.js from scratch
What is a virtual DOM and what are the benefits?
How does Vue.js 2.0 stack up performance wise? (spoiler alert, it's fast)
When should you use templates vs. a render function?
Why two-way props have been deprecated and what you should do instead
Best practices for dealing with custom component events
The 1.0 to 2.0 upgrade path
Building native mobile applications with Vue.js and Weex

In this episode, Adam talks to Toran Billups about the test driven development workflow he uses to build Ember applications.

In this episode, Adam talks to Jessica Lord of GitHub about building desktop applications in HTML and JavaScript using Electron.

In this episode, Adam talks to Sara Soueidan about the benefits of using SVG over icon fonts, and the best workflow for using SVG in your projects.

In this episode, Adam talks to Joe Ferris, CTO at thoughtbot, about the test-driven development workflow he uses to build Rails applications.

In this episode, Adam talks to Derek Prior about building web applications in Elixir with Phoenix, and how it compares to building an application in Ruby on Rails.

In this episode, Adam talks to Joel Clermont about the Elm programming language and getting started with functional programming.

In this episode, Adam talks to Jonathan Snook, author of SMACSS, about finding the balance between utility and component driven CSS approaches, design systems engineering, and using container queries to build better responsive web experiences.

In this episode, Adam talks to Justin Jackson, maker extraordinaire, about how to find new product ideas, finding customers for your products, and marketing for developers.

In this episode, Adam talks to Jason McCreary, creator of Laravel Shift, about Git tips, tricks, and best practices, and how to develop a solid Git workflow for your team.

In this episode, Adam talks to Edd Mann, host of Three Devs and a Maybe, about the advantages of using PostgreSQL over MySQL, common obstacles people running into when switching to Postgres, and deciding when to push work into the database instead of doing it in code.

In this episode, Adam talks to Michael Feathers, author of Working Effectively with Legacy Code, about strategies for writing cleaner error handling code, the "tell don't ask" principle, and transforming data with collection pipelines.

In this episode, Adam talks to J.B. Rainsberger about how to keep your adapter layer thin, designing unit testable code, and the importance of paying attention to how your code is changing vs. how your code looks today.

This episode is brought to you by Laracasts.

In this episode, Adam talks to the Grumpy Programmer himself about getting started with testing PHP applications.

Topics include:

Recommended testing tools
PHPUnit vs. PHPSpec
Mockery vs. Prophecy
The benefits of defensive programming
How to convince your manager to let you write tests

This episode is brought to you by Laracasts.

In this episode, Adam talks to Jason McCreary about building Shift, a tool that automates upgrading your application between framework versions.

This episode is brought to you by Laracasts.

In this episode, Adam talks to Jonathan Reinink of Code Distillery about common API design challenges and how to fix them.

This episode is brought to you by Laracasts.

In this episode, Matt Machuga of Think Through Math returns to talk with Adam about design options when you find yourself wanting access to a collaborator in an Active Record or Eloquent model. They discuss the pros and cons of four specific designs, and finish off with their personal recommendations.

Topics include:

Are facades and service location automatically bad?
Are NounVerber classes anti-OO?
Adding a layer of composition to create domain models with dependencies
Using method injection for a temporary dependency
Using optional parameters to improve testability

This episode is brought to you by Laracasts.

In this episode, Adam talks to David Hemphill about his latest project PushSilver.

Topics include:

Deciding when to build something yourself vs. paying for something off the shelf
Choosing a Javascript framework for more traditional server rendered apps
Vue.js compared to Angular and Ember
The advantages of using a utility-focused CSS approach
Distributing front-end libraries

This episode is brought to you by Laracasts.

DHH returns to the podcast to talk in-depth about how Basecamp 3 is designed and implemented!

Topics include:

Why Basecamp is a "majestic monolith", and the impact of organizational shape and size on technical decision making in product development
How ActionCable works, and where Basecamp 3 uses websockets that you might not expect
Strategies for avoiding duplication in client-side and server-side code
The automated testing strategy for Basecamp 3, and how it's influencing the future of testing in Rails 5
Why Basecamp 3 has 179 controllers, and what you can learn from their approach that will clean up your codebase

This episode is brought to you by Laracasts.

In this episode Adam talks to Woody Zuill about software project estimation. They talk about the #NoEstimates hash tag, and what it means and where it came from. They also talk about ways to manage software projects without worrying about estimation, and alternative ways to make the decisions that estimates are usually used for.

This episode is brought to you by Laracasts.

In this episode, Adam talks to Evan You, the creator of Vue.js. Evan talks about his time at Google Creative Lab and the sort of work that inspired him to create Vue. He also explains in depth how data binding works in Vue, and how it's different and more performant than Angular. Additionally, Evan discusses the benefits of Vue over React, why Vue works so well in both SPAs and traditional server-side web applications, and strategies for testing Vue components.

In this episode, Adam talks to Mark Otto, creator of Bootstrap and director of design at GitHub. They talk about the brand new alpha release of Bootstrap 4 and some of the most significant changes. They also talk about choosing units, when to use utility classes, and the importance of a component based CSS strategy.

This episode is brought to you by Laracasts.

In this episode, Adam talks to recurring guests Jeffrey Way and Dave Marshall about "don't mock what you don't own". They talk about how to design code that needs to work with external services, how you should test that code, and the pitfalls you run into when you use mocks incorrectly in your test suite.

This episode is brought to you by Laracasts.

In this episode, Adam talks to Ben Orenstein of thoughtbot about useful tips for writing the first few tests in your application and working your way down to the unit level by starting with acceptance tests. They also talk about why dependency injection has a bad rap in the Ruby world, and common mistakes Ben sees junior Rails developers make.

This episode is brought to you by Laracasts.

In this episode, Adam talks to Josh Pigford, founder of Baremetrics, about what you should have ready when you start a SaaS business. They also talk about how most businesses aren't doing as well as you think, content marketing, the benefits of different pricing models, and staying focused on your best idea.

This episode is brought to you by Laracasts.

In this episode, Adam talks to recurring guest Matt Machuga about tips and tricks that lead to better code.

They talk about bringing functional programming concepts to OO, simple patterns for cleaning up typical MVC web app code, and about how imposing crazy rules like banning conditionals and loops can lead to creative solutions that change the way you think about solving problems. They also get a little too excited about anonymous functions and compositional chains.

This episode is brought to you by Laracasts.

In this episode, Adam talks to Wes Bos about solving all of your CSS problems with Flexbox. They also talk about Bootstrap 4, ReactJS, and Wes' favorite Sublime Text tips and tricks.

This episode is brought to you by Laracasts.

In this episode, Adam talks to the Healthy Hacker, Chris Hunt, about how his team at GitHub works remotely. They also talk about entertaining your audience at conferences, taking a Codecation, and adventure motorcycling.

This episode is brought to you by Hired.

In this episode, Adam talks to Corey Haines, author of "Understanding the 4 Rules of Simple Design". They talk about the importance of low-level design decisions, tricks for naming things well, why you shouldn't model your objects after the real world, and of course, Active Record.

This episode is brought to you by Hired.

In this episode, Adam talks to Chad Pytel, CEO of thoughtbot. Chad gives tips for balancing client work with internal product work, growing your client-base without compromising your principles, and applying Jobs to be Done to new client projects.

This episode is brought to you by Hired.

In this episode, Adam talks to Ian Landsman, founder of Userscape and creator of HelpSpot. Ian talks about the biggest mistakes programmers make when trying to start their own business, where to find new ideas, and why your new software product shouldn't be a SaaS app.

This episode is brought to you by Hired.

In this episode, Adam talks to Dave Marshall, testing guru and host of That Podcast. Dave talks to Adam about the upcoming Mockery 1.0 release and some interesting API changes destined for 2.0. They also talk about how fakes can improve your tests, fixtures vs. factories, spec-style vs xUnit style test frameworks, and mutation testing.

This episode is brought to you by Hired.

In this episode, Adam talks to Katie Cerar, user experience designer at Boltmade. Katie talks to Adam about running a successful kick off meeting, understanding the problems your client is trying to solve, and strategies for getting clients to keep their ideas focused. Katie also talks about the difference between a prototype and an MVP, and how to choose the right prototyping tool to get the feedback you need.

This episode is brought to you by Hired.

In this episode, Adam talks to Adam Culp, organizer of Sunshine PHP and ZendCon. They talk about how to get into conference speaking, how to make the most of a conference as an attendee, as well as tips for running a great local user group.

This episode is brought to you by Hired.

In this episode, Adam talks to Kent Beck about Smalltalk vs. Java, low level design vs. big picture architecture, planning for the future vs. emergent design, and applying the principles of Extreme Programming in 2015.

This episode is brought to you by Hired.

In this episode, Adam talks to Konstantin Kudryashov, creator of Behat and BDD Practice Manager at Inviqa. Konstantin and Adam talk about the schools of TDD, how to use test doubles effectively, and common challenges people face when trying to learn TDD.

This episode is brought to you by Hired.

In this episode, Adam talks to Taylor Otwell, creator of Laravel. Taylor gives an in-depth behind-the-scenes look at how Envoyer is architected, and shares some new tips and tricks he's been using to keep his code simple. They also talk about the decisions behind upcoming changes in Laravel 5.1, how Taylor learned to program, and how he almost became the manager of a retirement home.

This episode is brought to you by Hired.

In this episode, Adam talks to Philip J. Sturgeon about designing and testing APIs at Ride. They also talk about building microservices with Go, and some of the new features coming in PHP 7.

This episode is brought to you by Hired.

In this episode, Adam talks to Jack McDade creator of Statamic, about building his latest project Photoshoot.io. They also talk about how Jack juggles design and development, and how to buckle down and get things done.

This episode is brought to you by Hired.

In this episode, Adam talks with Jeffrey Way of Laracasts about learning, object oriented design, testing, API usability, and whole bunch of other stuff.

This episode is brought to you by Hired.

In this episode, Adam talks with Ryan Tablada and Matt Machuga about the philosophical differences between programming in a statically typed language vs. a dynamically typed language. They talk about things like explicit interfaces vs. duck typing, function calling vs. message passing, and some of the recent RFCs around optional typing in the PHP community.

This episode is brought to you by Hired.

In this episode, Adam talks with David Heinemeier Hansson, partner at Basecamp and creator of Ruby on Rails. They talk about the pursuit of "purity", Domain Driven Design, ActiveRecord vs DataMapper, and developing an eye for "good code".

In this episode, Adam talks with Sean Devine, host of the Ruby on Rails podcast. Sean gives Adam an introduction to building applications with Ember, and how it's different than the way you might sprinkle AngularJS into a mostly server-side app. They talk about why your Ember apps shouldn't be mixed in with your server-side code, and the advantages that come along with building a server-side API with no front end of it's own.

In this episode, Adam talks with Shawn McCool about Behavior Driven Development and Domain Driven Design. They talk about how you can use these ideas to better understand your clients' needs and to build software that closely models their business. They also talk about where these ideas don't work so well, and some of the challenges and trade-offs you face when trying to build software this way.

In this episode, Adam talks with Chris Fidao of Userscape. They talk about things every web developer should know about server administration, platform-as-a-service vs. self-hosting, Ansible, Docker, and more.

In this episode, Adam talks with Ryan Singer of Basecamp about Jobs-to-be-Done thinking, UX, and product design.

In this episode, Adam gets super technical with Alex Bilbie about the OAuth 2 specification. They talk about the different grant types and what they're each appropriate for, as well as discuss some potential API security strategies for one of Adam's personal projects.

In this episode, Adam talks with Matt Machuga of Think Through Math about being a Rubyist who still writes PHP and the differences between writing PHP like a Rubyist vs. writing PHP like a Java developer. They also talk about common struggles when learning new things, and trying to remain pragmatic while still pushing the boundaries of what you know.

In this episode, Adam talks with Eric Barnes of Userscape about rebuilding WardrobeCMS, trends in Javascript development, and building an audience.

In our very first episode, Adam talks with Matt Stauffer of Tighten Co about OOCSS, BEM, SMACSS, preprocessors, common architecture pitfalls, and CSS semantics.