A podcast for developers interested in building great software products. Hosted by Adam Wathan.
In this episode Adam talks to Ben Orenstein about what you can do to stand out if you’re trying to get a job at a small company.
In this episode Adam talks to DHH about using Hotwire to develop Basecamp's new email service HEY while shipping only 40kb of JavaScript to the client.
In this episode, Adam and Jack talk about all the secret tips you need to know to screencast like a pro. Then they go deep into some of the things Adam is working on for Tailwind CSS 2.0, like the new default config file.
Adam and Jack discuss how it sucks when you're forced to change billing platforms, and embark upon a deep dive on the merits of Adam's favorite solutions. We also talk about Jack's recent Radical Icon launch and promotional strategy regrets, which thankfully has a bit of a silver lining, and in Statamic news – the W3C drops WordPress and narrows their next CMS choice down to Statamic and Craft.
Adam and Jack talk about accessible focus styles, Headless UI, the new Tailwind Labs YouTube channel, Tailwind presets, and the progress on the great Statamic Bug-Fix-a-Thon of 2020. They also kick around what "Tailwind Lite" could be and where it might live, Adam spills the beans on a secret Tailwind project, and they get really excited about ideas they totally plan to do but probably never will happen.
Adam and Jack talk about strategies for keeping up with GitHub issues and coping with customer criticism, and how life is going after the Statamic 3 launch. They also talk about the new features in Tailwind 1.8, and work through some branding problems for the new Headless UI project the Tailwind team is working on.
Adam and Jack talk about how the Statamic 3 launch went, and adding GitHub Sponsor tiers to the Statamic GitHub organization and what to give people in exchange for sponsoring. They also talk about the new Tailwind CSS v1.7 release, and the new features like gradient support. Finally, they work through some ideas Adam is preparing for his Laracon talk on “Building component libraries with Tailwind CSS”.
Jack McDade joins Adam to talk about what he's been up to building up to the Statamic 3.0 launch (it's out now!) and Adam shares a bunch of ideas he's been working on for Tailwind CSS v2.0.
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.
In this episode, Adam talks to Rich Harris about Svelte, and why we should keep pushing forward with the modern web even if it's not perfect yet.
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.
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.
In this episode, Adam talks to Evan You about Vite, a new dev server and build tool for modern JavaScript projects.
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.
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.
In this episode, Adam welcomes back Jonathan Reinink to talk about implementing designs with a utility-first approach to CSS.
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.
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.
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 and David are joined by Ian Landsman to talk about his latest project Thermostat.io and discuss some pricing ideas for PushSilver and KiteTail.
In this episode, Adam and David recap their MicroConf 2017 experiences, and give some product updates.
In this episode, David talks about adding timezone support to Crondog, and Adam wrestles with some decisions about dealing with failed webhooks in KiteTail.
Adam welcomes David Hemphill back to the show, but this time as a co-host!
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.
In this episode, Adam talks to Evan You about what's coming in Vue.js 2.0.
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.
In this episode, Adam talks to the Grumpy Programmer himself about getting started with testing PHP applications.
In this episode, Adam talks to Jason McCreary about building Shift, a tool that automates upgrading your application between framework versions.
In this episode, Adam talks to Jonathan Reinink of Code Distillery about common API design challenges and how to fix them.
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.
In this episode, Adam talks to David Hemphill about his latest project PushSilver.
DHH returns to the podcast to talk in-depth about how Basecamp 3 is designed and implemented!
In this episode Adam talks to Woody Zuill about software project estimation.
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.
In this episode, Adam talks to Mark Otto, creator of Bootstrap and director of design at GitHub.
In this episode, Adam talks to recurring guests Jeffrey Way and Dave Marshall about "don't mock what you don't own".
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.
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.
In this episode, Adam talks to recurring guest Matt Machuga about tips and tricks that lead to better code.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
In this episode, Adam talks with Jeffrey Way of Laracasts about learning, object oriented design, testing, API usability, and whole bunch of other stuff.
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 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.
In this episode, Adam talks with Shawn McCool about Behavior Driven Development and Domain Driven Design.
In this episode, Adam talks with Chris Fidao of Userscape.
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.
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.
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.