Podcast

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.

Episodes

  • 140: Evan You - Reimagining the Modern Dev Server with Vite

    May 28 2020

    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 implem...more

  • 139: Alex DeBrie - DynamoDB for Relational Database Diehards

    May 08 2020

    In this episode, Adam is talks to Alex DeBrie about DynamoDB, and how it compares to relational databases like MySQL. Topics include: Does DynamoDB only make sense for things like your cache, or is it a good choice for a primary data store? An overview of the terminology used in DynamoDB and how the terminology compares to a relational database How primary keys work in DynamoDB What data types are available in DynamoDB How DynamoDB is a schemaless database Why it's important to understand your ...more

  • 138: Tom Preston-Werner - Building Full-Stack JS Apps with Redwood.js

    Apr 22 2020

    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. Topics include: What does it mean for Redwood to be a JAMStack framework? What does the React layer look like? What’s new, and what’s leveraging existing community tools? Why Redwood ships with it’s own routing layer What “cells” are in Redwood, and how they aim to provide a declarative abstraction on top of data fetching How Redwood tries to pro...more

  • 137: Tim Neutkens - Continuing to Innovate with Next.js 9.3

    Apr 08 2020

    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. Topics include: An overview of the new getStaticProps, getStaticPaths, and getServerSideProps APIs How Next.js helps you serve static pages from an edge CDN automatically, without affecting the actual authoring experience Using getStaticPaths to statically pregenerate dynamic routes How the fallback feature of getStaticPaths works and lets you statically r...more

  • 136: Michael Chan - React Is Not a Rails Competitor

    Mar 25 2020

    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. Topics include: What do people actually mean when they say "I used to use Rails, but now I use React"? Why back-end development is still a crucial part of building any web application What third-party services people are using to try and replace custom back-end c...more

  • 135: Lessons Learned Building Tailwind UI

    Mar 04 2020

    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. Topics include: What Tailwind UI is and why we decided to build it How odd numbers can wreak havoc on a user interface, and how to avoid them Crafting the perfect form control Unexpected benefits of working with CSS Grid Abusing single column grids just to use gap, and why ...more

  • 134: Mark Dalgleish - You Should Be Using Layout Components

    Feb 12 2020

    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. Topics include: What problems you run into when baking white space into components, and why your components should never contain any surrounding white space at all Layout challenges you run into due to the way the browser includes line-height in the size of text elements The trick M...more

  • 133: Sam Selikoff - Building Production-Ready SPAs Fast with Mirage.js

    Jan 29 2020

    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. Topics What is Mirage and how does it work? What makes Mirage better than a dummy JSON server you run on another port? What makes Mirage better than running your actual API locally? Using Mirage for actual development, and not just for your test suite How Mirage's internal ORM works, and how it can help you mirror your API's b...more

  • 132: Caleb Porzio - Just Enough JavaScript with Alpine.js

    Jan 15 2020

    In this episode, Adam talks to Caleb Porzio about his new UI library Alpine.js. Topics include: What is Alpine and what does it replace? How does Alpine compare to Vue? How does Alpine compare to Stimulus? “Why not just use vanilla JavaScript you dummy?” How Alpine works internally Patterns for extracting reusable behaviours with Alpine The Alpine roadmap Sponsors: Tuple, try the best pair programming app out there for free for two weeks Links: Alpine.js on GitHub The template tag The with ...more

  • 131: Ryan Singer - How Basecamp Builds Software

    Jan 01 2020

    In this episode, Adam talks to Ryan Singer of Basecamp about how they plan, structure, and execute on new features. Topics include: Why "fixed time, variable scope" is so important for actually getting things done Integrating development and design into a single process instead of design first, develop later What it means to "shape" work before deciding to work on it What it means to "bet" on a project, and why Basecamp would rather trash a project than extend the ...more

  • 130: David Khourshid - Building Better UI Components with State Machines

    Dec 11 2019

    In this episode, Adam talks to David Khourshid about using state machines to build UI components that are simpler and more resilient to bugs. Topics include: What exactly is a finite state machine? Why trying to keep track of a component's status using boolean flags is leads to bugs and complex code Why it makes so much more sense to keep track of a component's state using some sort of label How simple it can actually be to implement UI component logic with a state machine and why you shouldn't...more

  • 129: Evan You - What's Coming in Vue.js 3.0

    Nov 27 2019

    In this episode, Adam talks to Evan You about all of the changes and improvements coming to Vue.js 3.0. Topics include: What were the first feature/change ideas that got the wheels turning for Vue 3 How Vue's underlying VNode data structure is changing and how that affects users who work directly with render functions How the h function works in Vue 3 and how it helps you write code that's more composable How many breaking changes are just removing deprecations vs. hard breaks and how a compati...more

  • 128: Alasdair Monk - Scaling CSS at Heroku with Utility Classes

    Nov 20 2019

    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. Topics include: Why Heroku introduced BEM to try and solve their CSS issues and why it didn't work How custom tooling and Ember's component system alleviated any maintainability concerns about littering the HTML with presentational classes Why Heroku still uses some component classes like "btn" and "input&qu...more

  • 127: Jonathan Reinink - Building Modern Monoliths with Inertia.js

    Nov 06 2019

    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. Topics include: What Inertia.js is and what problem it solves Why Inertia is more like a protocol than a framework How navigation works in Inertia How form submissions work in Inertia How...more

  • 126: James Long - Building Distributed Local-First JavaScript Applications

    Oct 23 2019

    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. Topics include: How do you keep data synchronized between two different clients when all of the data is stored locally instead of in the cloud? Understanding conflict-free replicated data types and how they help when building distributed applications Diving deep into how messages are replayed across clients when network ...more

  • 125: Rob Walling - Choosing the Right Product Idea

    Oct 09 2019

    In this episode, Adam talks to Rob Walling about choosing, validating, and marketing a viable software product. Topics include: Brainstorming ideas vs. paying attention to your own problems Why it's smart to start with a product that might never make a million dollars a year Should you avoid markets with competition? Why it's a good idea to build something for fewer people Strategies for figuring out how many people have the problem you're trying to solve Why you should start marketing before y...more

  • 124: Leslie Cohn-Wein & Rafael Conde - Designing the User Interface at Netlify

    Sep 25 2019

    In this episode, Adam talks to Leslie Cohn-Wein and Rafael Conde about designing and implementing new UI features at Netlify. Topics include: Creating pixel-perfect mockups in advance vs. designing and implementing in tandem Working with existing JS libraries for interactive UI features vs. hand-rolling a custom implementation from scratch How design systems play into the design process at Netlify, and how mockups aren't meant to implemented pixel-for-pixel What tools Netlify uses to design new...more

  • 123: Ian Landsman - Marketing and Positioning a New Tailwind CSS Product

    Sep 11 2019

    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. Topics include: Building website templates vs. a UI kit Should the product be positioned as a UI library or an educational resource? One-time purchase pricing vs. subscription pricing vs. some combination of the two Why marketing features can sometimes be better than marketing benefits "Dribbble but with code&...more

  • 122: Matt Biilmann - Architecting the Netlify Dashboard with React and Redux

    Aug 28 2019

    In this episode, Adam talks to Matt Biilmann CEO of Netlify about building the Netlify dashboard, and what makes it feel so fast. Topics include: Walking through how a single screen in the app is rendered in step-by-step detail How they separate container components and presentational components to make things easier to reason about How the Redux store is organized How they handle caching data on the client and deciding when to bust the cache How the API is designed Why they are sticking with R...more

  • 121: Benedikt Deicke - Building Userlist.io

    Aug 14 2019

    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. Topics include: The risks and technical challenges of building client-side API integrations and why Benedikt decided to focus on a server-side integration for launch Building Userlist with Ember instead of trendier tools like React How the Ember app authenticates with the Rails API Strategies for keeping email d...more

  • 120: Taylor Otwell - Serverless Laravel with Vapor

    Jul 31 2019

    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. Topics include: What is serverless? What AWS services Vapor manages and how they are billed Using a single RDS instance with multiple databases Understanding cold boots with Lambda and how to minimize the effect they have on your application's performance Performance on Vapor How queues work with Vapor Tuning your queue concurrency bas...more

  • 119: Ryan Toronto - Why a Back-End Developer Made the Switch to SPAs

    Jul 17 2019

    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. Topics include: How modernizing a Flash app drove Ryan to start building SPAs How products are really just user interfaces to the end user, and why that means it makes sense to make the UI the core of your codebase Why the backend will continue to be com...more

  • 118: Aaron Gustafson - Semantic HTML: The Hard Parts

    Jul 03 2019

    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. Topics include: Can you have more than one "h1" on page? How important is heading order? Why not everything that looks like a heading should necessarily be a heading Why you may want to include invisible headings in some situations What the document outline is and how your use of headings impacts ...more

  • 117: Mitchell Hamilton - Writing CSS-in-JS with Emotion

    Jun 20 2019

    In this episode, Adam talks to Mitchell Hamilton about writing your styles directly in your JavaScript components using the CSS-in-JS library Emotion. Topics include: What CSS-in-JS even is What Emotion does differently than other CSS-in-JS libraries How to actually use Emotion to style your projects How the JSX pragma works and what it's for How Emotion works under the hood Performance Adding global styles to your project Style re-use and composition in Emotion Using Emotion with server-side r...more

  • 116: Jerod Santo - Building the Changelog Platform with Elixir and Phoenix

    Jun 05 2019

    In this episode, Adam talks to Jerod Santo of The Changelog about building their custom podcasting platform using Elixir and Phoenix. Topics include: How pattern matching works in Elixir and why it's more powerful than method overloading in other languages How Elixir's pipe operator makes the transition from OO to functional programming more natural Why you don't need to be intimidated by unfamiliar features like GenServers to use Elixir for web app development Noticeable differences between wo...more

  • 115: Jason Lengstorf - Gatsby for Skeptics

    May 22 2019

    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. Topics include: How Gatsby is more than just a static site generator How you create pages with Gatsby and how it's more powerful than traditional static site generators The benefits of having a unified data access layer for all of your content How to build dynamic applications with Gatsby Why Gatsby is actually faster t...more

  • 114: Sebastian De Deyne - React for Vue Developers

    May 08 2019

    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. Topics include: How Vue focuses on making things easy at the cost of a more complex API, while React focuses on keeping things simple at the cost of a steeper learning curve How to translate Vue's computed properties to React using the useMemo hook How to translate Vue's watchers to React using...more

  • 113: Justin Jackson - Growing Transistor to $10,000/month

    Apr 24 2019

    In this episode, Adam talks to Justin Jackson about growing his new SaaS business Transistor to $10,000 in MRR. Topics include: Why you need more than just a product, and what Justin brings to the table in his partnership with Jon How having an audience helped him get his first customers, even in a crowded market Why you should use every advantage you have to get people in the door, even though the only thing that will make customers stay is a great product with great service "People like ...more

  • 112: Guillermo Rauch - Building Serverless Applications with Now

    Apr 10 2019

    In this episode, Adam talks to Guillermo Rauch building and deploying serverless web applications with Now. Topics include: How Now is trying to bring the CDN experience to your server-side code How the constraints of serverless can nudge you to build more robust solutions How to talk to a database in a stateless serverless environment Best practices for deploying serverless code when you have a centralized data store Why routing should be handled at the Now configuration level instead of in ap...more

  • 111: Jeffrey Way - Building the New Laracasts with Tailwind CSS

    Mar 28 2019

    In this episode, Adam talks to Jeffrey Way about the process of building the brand new Laracasts.com with Tailwind CSS. Topics include: How Jeffrey has written CSS historically, and what drew him to a utility-first approach Incrementally replacing Bulma with Tailwind The importance of solidifying your Tailwind configuration before beginning to implement a design The new Tailwind color system Why choosing a color palette in advance is much better than using preprocessor functions like darken() o...more

  • 110: Caleb Porzio - Embracing the Backend with Livewire

    Mar 14 2019

    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. Topics include: Pain points you run into when you are working in a JS based UI instead of a server-rendered UI What Livewire is and where the inspiration came from How Livewire lets you build interactive user interfaces with server-side code The challenges of stateful long-running processes in PHP and using stateless AJAX requests as a...more

  • 109: The Road to Tailwind CSS v1.0

    Feb 27 2019

    🎉You can now pre-order Full Stack Radio shirts and stickers! Learn more → In this episode, the tables are turned as Sam Selikoff interviews Adam about the upcoming release of Tailwind CSS v1.0. Topics include: Semantic versioning and why there hasn't been a v1.0 release already How v1.0 will be encouraging people to leverage the default design system Breaking changes and what the upgrade story will be like What's coming after Tailwind CSS v1.0 Sponsors: Cloudinary, sign up and get 300,000 im...more

  • 108: Jonathan Reinink - Client-Side Rendering, Server-Side Routing

    Feb 14 2019

    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. Topics include: Why the UI fidelity threshold for building an SPA feels so low How forcing yourself to prepare data for Vue helps avoid putting too much logic into your templates Why it's still worth building your app as a traditional server-based web app, even if you are us...more

  • 107: Sam Selikoff - Pushing Complexity to the Client-Side

    Jan 30 2019

    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. Topics include: Building an API without writing any controller code Thinking of your API like a database as much as possible Modeling everything on the server as a resource, including things like S3 upload signat...more

  • 106: Sam Selikoff - Single Page Application Architecture

    Jan 16 2019

    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. Topics include: Why you should think of SPAs as desktop apps instead of web apps Strategies for pushing complexity out of your backend and on to the client Building optimistic UIs Best practices for storing and retrieving data Why you should design your SPAs with an "offline-first" mindset Sponsors: Cloudinary, sign u...more

  • 105: Strength Training for Nerds

    Jan 03 2019

    In the spirit of the new year, Adam and Ben Orenstein talk about getting in shape through strength training. Topics include: What exercises you should focus on and why How to develop a system that will force you to make progress The importance of keeping a training journal Why full-body workouts are better than training a specific muscle group each day The importance of mobility for both training and your work life Why building strength is so important as you age Why you shouldn't trust trainer...more

  • 104: Jonathan Reinink - Pushing More Work to the Database

    Dec 19 2018

    In this episode, Adam talks to Jonathan Reinink about strategies for off-loading resource intensive work from your application code and into your database. Topics include: Issues you run into when you do too much work in code instead of in the database Why memory usage is just as important as query count How being smarter with your database usage can let you avoid hard problems like cache invalidation Denormalizing computable data to make it queryable Using "where not exists" strategi...more

  • 103: Steve Schoger - Design Q&A + Refactoring UI Details

    Dec 05 2018

    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. Questions include: What's your process for getting started on a new design? How do you make your designs feel original? How do you choose fonts for a new project? How do you make complex tables look good, and how do you make them work on mobile? What's the best way to style multiple secondary actions on a page? Refactoring...more

  • 102: Paul Jarvis - Staying Small

    Nov 21 2018

    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. Topics include: Why "success" shouldn't mean the same thing to everyone How to stay small without doing all the work you don't want to do yourself Why it's important to define what "enough" is for your business instead of always feeling the need to do better than you did last year Questions to ask yourself to figure out what &...more

  • 101: Ben Orenstein - How to Build an App in a Week

    Nov 07 2018

    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. Topics include: Why deadlines are critical Using manual processes to avoid building features entirely How launching a stripped down version of your idea can help you build the right thing Recognizing when you don't need to solve a problem yet Why you shouldn't design your entire UI up front How evolutionary design applies to both c...more

  • 100: Sébastien Chopin - Building Universal Vue.js Apps with Nuxt.js

    Oct 24 2018

    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. Topics include: The history behind Nuxt.js How Nuxt.js uses special Page components and file-based routing instead of using a traditional router Creating dynamic page-based routes without a custom server How the asyncData lifecycle hook works How server-side rendering works in Nuxt.js How Nuxt.js uses intelligent code-splitting to improve ...more

  • 99: Tim Neutkens - Building React Apps with Next.js

    Oct 10 2018

    In this episode Adam talks to Tim Neutkens about Next.js, an opinionated React framework for building server-rendered client-side applications. Topics include: How Next.js is different than using create-react-app How page-based routing works in Next.js vs. a traditional router The mechanics behind how components are server-side rendered and picked up by React on the client What it really means to server-render a React app and how it's different from a traditional server-rendered web app How to ...more

  • 98: Ryan Chenkie - Securing Single Page Applications

    Sep 26 2018

    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. Topics include: What JSON Web Tokens are and how to use them to authenticate users Strategies for invalidating stateless API tokens Using cookie and session authentication Using authentication-as-a-service solutions like Auth0 Proxying requests to your API to simplify CORS issues Protecti...more

  • 97: Ryan Florence - Building Accessible UI Components

    Sep 12 2018

    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. Topics include: How modern JS frameworks have made the web less accessible How Reach UI is making it easier for people to build accessible components without sacrificing customizability The importance of using the correct markup How focus trapping works Adding keyboard navigation to components in a way that makes sense for screenre...more

  • 96: James Clear - Designing Your Environment to Shape Your Behavior

    Aug 29 2018

    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. Topics include: Why goals aren't useful on their own The four rules that guide human behavior Using environment design to encourage the habits you want to adopt Building habits of avoidance Why being productive is really about decision making Sponsors: Cloudinary, sign up and get 300,000 images/videos, 10GB of...more

  • 95: Frank de Jonge - Implementing Event Sourcing

    Aug 15 2018

    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. Topics include: How to fetch and reconstitute an aggregate from its events Using generators to make it easy to transform event streams What it looks like to apply an event to an aggregate How to create events and what they look like Implementing a message repository for fetching events from storage How to ra...more

  • 94: Ben Orenstein - The Art of Pairing

    Aug 01 2018

    In this episode, Adam talks to Ben Orenstein about the benefits of pair programming and how to do it effectively. Topics include: The benefits of pairing with someone more experienced than you The benefits of pairing with someone less experienced than you How pairing helps you build things faster Why pairing often removes the need for code review How to get started with pairing if you've never done it before Sponsors: Cloudinary, sign up and get 300,000 images/videos, 10GB of storage and 20GB...more

  • 93: Justin Jackson - Who You Want to Help > What You Want to Build

    Jul 18 2018

    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. Topics include: Why you should choose a market before getting too attached to the type of product you want to create Why it can make sense to...more

  • 92: Derrick Reimer - Building an SPA with Elm, Phoenix and GraphQL

    Jul 03 2018

    In this episode, Adam talks to Derrick Reimer about building his new app Level as an SPA using Elm, Phoenix, and GraphQL. Topics include: Why Derrick chose to build Level as an SPA Choosing Elm over React or Vue How Elm is sort of like a language and framework combined Moving to Phoenix from Rails Why getting abstractions right feels easier in a functional language How "contexts" help you organize your Phoenix code The benefits of GraphQL over REST What it looks like to implement Grap...more

  • 91: Derrick Reimer - Designing a Calmer Team Communication Platform

    Jun 20 2018

    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. Sponsors: Cloudinary, sign up and get 300,000 images/videos, 10GB of storage and 20GB of monthly bandwidth for free Rollbar, sign up at https://rollbar.com/fullstackradio to try their Bootstrap Plan free for 90...more

  • 90: David Hemphill - Using JSX with Vue.js

    Jun 13 2018

    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. Topics include: What even is JSX, really? Why JSX is not a templating a language How render functions work Advantages of JSX over templates How to translate template features like v-if to JSX How event listeners work with JSX JSX gotchas to watch out for Sponsors: Cloudinary, sign up and get 300,000 images/videos, 10GB of storage and 20GB of monthly bandwidth ...more

  • 89: Sam Selikoff - Choosing Ember.js in 2018

    May 23 2018

    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. Topics include: Why has Ember stuck around when other frameworks from the same era haven't? What do you get when you choose Ember that you don't get with other frameworks? How does Ember's UI layer compare to React/Vue? What choices does Ember make differently than frameworks like React and Vue? How does Ember do state management? ...more

  • 88: Blake Newman - Vue.js State Management with Vuex

    May 10 2018

    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. Topics include: What is Vuex and where did it come from? The benefits of centralizing all of your application's state into one place What sort of state belongs in Vuex and what state should stay local to a component What all the Vuex terminology means, like actions, mutations, getters, etc. How you initially populat...more

  • 87: Chris Fritz - Vue.js Anti-Patterns (and How to Avoid Them)

    Apr 25 2018

    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. Topics include: Why global state is better than an event bus Why and how to avoid using this.$parent Custom events vs. callback props When to use watchers and when you don't need to Why you should prefer computed properties over methods Inline templates vs. scoped slots Using components to share code instead of mixins or directives Sponsor...more

  • 86: Jonathan Reinink - Rebuilding a SaaS with Vue.js and Tailwind CSS

    Apr 11 2018

    In this episode, Adam talks to Jonathan Reinink about lessons learned rebuilding his SaaS app with Vue.js and Tailwind CSS. Topics include: Wrapping non-Vue libraries as Vue components to maintain a consistent paradigm Using Popper.js with Vue to build dropdowns and tooltips Using portals to build better modal components Patterns for making it easier to reuse components throughout an application Which Tailwind CSS component classes Jonathan chose to extract (and which ones he didn't) How Jonath...more

  • 85: Frank de Jonge - Event Sourcing for Beginners

    Mar 30 2018

    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. Topics include: What does "event sourcing" even mean? What do terms like "aggregate" and "projection" mean in the context of event sourcing? What are the benefits of modeling something with event sourcing vs. a traditional state-based approach? How events are usuall...more

  • 84: Edd Yerburgh - Testing Vue.js Components

    Mar 14 2018

    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. Topics include: Challenges with testing Vue components prior to vue-test-utils How vue-test-utils works and what it looks like to test a component Choosing a test runner Common mistakes people make when testing their components Mocking and stubbing external dependencies Combining unit testing with snapshot testing Sponsors: Codeship, check out how they p...more

  • 83: DHH - Stimulus in Practice + On Writing Software Well

    Feb 28 2018

    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". Topics include: What JavaScript looked like at Basecamp before Stimulus Why Basecamp chose to create a new framework instead of using React, Angular, or Vue How Basecamp uses server-rendered partials instead client-side templates Why David decided to start "On Writing Software Well" Evaluating...more

  • 82: Sarah Drasner - Animating the Web with CSS and JavaScript

    Feb 14 2018

    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. Topics include: Using animation to make interfaces easier to use The difference between animations and transitions When to use CSS animations vs. JavaScript animations Which CSS properties are safe to animate How to use techniques like FLIP to make sure your animations are performant Recomme...more

  • 81: Evan You - Advanced Vue Component Design

    Jan 31 2018

    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. Topics include: What is a "higher order component"? How do you replicate the render prop pattern from React with Vue? Using scoped slots to build components with no UI Using render functions without using JSX How Vue's built-in components like `` work under the hood...more

  • 80: Tom Schlick - Building Multitenant Applications

    Jan 17 2018

    In this episode, Adam talks to Tom Schlick about tackling challenges faced when building multitenant apps. Topics include: What makes an application "multitenant" really? Choosing between a shared database or multi-database setup Approaches for identifying the current tenant Performance considerations How multitenancy impacts how you integrate with external services Sponsors: Codeship, check out how they performed in Forrester's latest Continuous Integration Tools report Rollbar, si...more

  • 79: Kent C. Dodds - Building Reusable React Components with Render Props

    Dec 21 2017

    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. Sponsors: Rollbar, sign up at https://rollbar.com/fullstackradio to try their Bootstrap Plan free for 90 days Codeship, check out how they performed in Forrester's latest Continuous Integrati...more

  • 78: Ben Orenstein - Our All-Time Favorite Refactorings

    Dec 06 2017

    In this episode, Adam and Ben Orenstein share nine of their favorite refactorings that you can use to clean up your code. Sponsors: Rollbar, sign up at https://rollbar.com/fullstackradio to try their Bootstrap Plan free for 90 days Codeship, check out how they performed in Forrester's latest Continuous Integration Tools report Links: Refactoring Rails, Ben's refactoring course The 30 Day Code Quality Challenge, Ben's free 30-day code quality course Refactoring from Good to Great, Ben's popula...more

  • 77: Tailwind CSS Q&A and the Road to 1.0

    Nov 21 2017

    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. Topics include: Why Tailwind doesn't include buttons or forms Is Tailwind for front-end developers or back-end developers? Best practices around extracting component classes Using Tailwind with existing CSS or on top of other frameworks Optimizing Tailwind's generated file size New features planned for upcoming T...more

  • 76: Tailwind CSS vs. the World

    Nov 08 2017

    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. Sponsors: Rollbar, sign up at https://rollbar.com/fullstackradio to try their Bootstrap Plan free for 90 days Codeship, check out how they performed in Forrester's latest Continuous Integration Too...more

  • 75: Diana Mounter - Design Systems and Utility Classes at GitHub

    Oct 25 2017

    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. Sponsors: Rollbar, sign up at https://rollbar.com/fullstackradio to try their Bootstrap Plan free for 90 days Links: Diana's personal website Primer, GitHub's design system Primer modules on GitHub "Introducing Design Systems into Chaos", Diana's recent talk on h...more

  • 74: Steve Schoger - Tactical Design Advice for Developers

    Oct 12 2017

    In this episode, Adam is joined by Steve Schoger to talk about five ways developers can get better at designing their own projects. Topics include: How to pick great fonts Choosing a color scheme for your project Designing in greyscale Recreating existing interfaces from scratch Recommended design tools What you should design first on a new page Strategies for making things look professional without graphic design skills Sponsors: Rollbar, sign up at https://rollbar.com/fullstackradio to try ...more

  • 73: Justin Jackson - Making a Living From Your Own Projects

    Sep 27 2017

    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. Topics include: Why you shouldn't start with SaaS How to find ideas from client projects What to do before you make a landing page Why your first product doesn't have to be the one that makes you rich Using open source to build an audience Sponsors: Rollbar, sign up at https://rollbar.com/fullstackradio to try their Bootstrap Plan free for 90 days Code...more

  • 72: Taylor Otwell - Testing Laravel Applications

    Sep 13 2017

    In this episode, Adam is joined by Taylor Otwell, the creator of Laravel, to talk about their approaches to testing Laravel applications. Topics include: How their approaches have changed over time Feature tests vs. unit tests, when to use each Testing code that interacts with external services Using fakes instead of mocks Contract tests Testing view data vs. rendered HTML Sponsors: Rollbar, sign up at https://rollbar.com/fullstackradio to try their Bootstrap Plan free for 90 days Codeship L...more

  • 71: Building a CSS Framework with PostCSS

    Aug 30 2017

    In this episode, Adam is joined by Matt Stauffer of Tighten to talk about building a CSS framework with PostCSS. Topics include: What is PostCSS, really? PostCSS vs. other preprocessors like Less and Sass Examples of things PostCSS can do How to use PostCSS to add your own features to CSS How to disguise custom features as valid CSS so PostCSS will parse it Porting Tailwind CSS from Less to PostCSS and why it's been awesome Sponsors: Rollbar, sign up at https://rollbar.com/fullstackradio to t...more

  • 70: Jeffrey Way - Vue.js Tactics for Server-Side Web Apps

    Aug 16 2017

    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. Topics include: General project structure Dealing with initial load flicker Sharing routes between Vue and your server Handling authorization rules on the client Comparing strategies for getting data into your Vue components Best practices for sharing state between sibling components Signs you should extract a child component Using Vue to wr...more

  • 69: Hybrid Mobile Apps with Turbolinks and Laravel

    Aug 02 2017

    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. Sponsors: Rollbar, sign up at https://rollbar.com/fullstackradio ...more

  • 68: Building Interfaces with Utility-First CSS

    Jul 19 2017

    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. Sponsors: Rollbar, sign up at https://rollbar.com/fullstackradio to try their Bootstrap Plan free for 90 days Codeship Links: BEM, the Block Element Modifier CSS methodology About HTML semantics and front-end architect...more

  • 67: Launch Takeways, Interface Breakthroughs, and First Round Armbars

    Jun 21 2017

    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. Sponsors: Hired, sign up at https://www.hired.com/fullstackradio to double your signing bonus to $2000 if you get a job through Hired Rollbar, sign up at https://rollbar.c...more

  • 66: Pre-Launch Engineering and Testing an HTTP Client

    Jun 08 2017

    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. Sponsors: Rollbar, sign up at https://rollbar.com/fullstackradio to try their Bootstrap Plan free for 90 days Hired, sign up at htt...more

  • 65: New PushSilver Pricing and Co-Founding KiteTail

    May 24 2017

    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. Sponsors: Hired, sign up...more

  • 64: "We Solved Something, Maybe! Or It Might Be a Disaster!"

    May 09 2017

    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 Sponsors: Rollbar, sign up at https://rollbar.com/fullstackradio to try their Bootstrap Plan free for 90 days Hired, sign up at h...more

  • 63: MicroConf, Dog Food, and Image Previews

    Apr 27 2017

    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 Sponsors: Rollbar, sign up at https://rollbar.com/fullstackradio to try their Bootstrap Plan free for 90 days ...more

  • 62: Timezones, Webhook Security, and UI Decisions

    Apr 12 2017

    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. Sponsors: Rollbar, sign up at https://rollbar.com/fullstackradio to try their Bootstrap Plan free for 90 days Hired, sign up at https://www.hired.com/fullstackradio to double your signing bonus to $2000 if you get a job throu...more

  • 61: We're Building Products!

    Mar 30 2017

    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, ...more

  • 60: Michelle Bu - Engineering Payments at Stripe

    Mar 15 2017

    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. Sponsors: Rollbar, sign up at https://rollbar.com/fullstackradio to try their Bootstrap Plan free for 90 days Hired, sign up at https://www.hired.com/fullstackradio to double your signing bonus to $2000 if you get a job through Hired Links: Michelle on Twitter Stripe Elements Stripe's Engineering Blog Stripe Checkout Stripe Radar Building Stripe'...more

  • 59: Jonathan Reinink - Form Hell Part 2: Complex Validation

    Feb 24 2017

    In this episode, Adam and Jonathan continue their discussion about forms from episode 54, this time focusing on the complexities of validation. Sponsors: Rollbar, sign up at https://rollbar.com/fullstackradio to try their Bootstrap Plan free for 90 days Hired, sign up at https://www.hired.com/fullstackradio to double your signing bonus to $2000 if you get a job through Hired Links: Form Requests in Laravel After Validation hooks in Laravel "Stripe CVC and ZIP checks can be bypassed"...more

  • 58: Noel Rappin - Fixing Common Payment Handling Mistakes

    Feb 08 2017

    In this episode, I talk to Noel Rappin about common mistakes developers make when handling payments on the web and how to fix them. As I mention in the show, if you've been thinking about checking out Test-Driven Laravel, the course is still available at the early access price for the next few weeks: Learn more about Test-Driven Laravel Early Access Sponsors: Rollbar, sign up at https://rollbar.com/fullstackradio to try their Bootstrap Plan free for 90 days Hired, sign up at https://www.hired.c...more

  • 57: Derrick Reimer - Building and Scaling Drip

    Jan 25 2017

    In this episode, Adam talks to Derrick Reimer about the technical challenges behind building and scaling Drip, a sophisticated email marketing automation platform. Sponsors: Rollbar, sign up at https://rollbar.com/fullstackradio to try their Bootstrap Plan free for 90 days Hired, sign up at https://www.hired.com/fullstackradio to double your signing bonus to $2000 if you get a job through Hired Links: Drip Scaling SaaS, Derrick's blog The Drip stack: Ruby on Rails AWS PostgreSQL Sidekiq Sen...more

  • 56: Wes Bos - Getting Things Done and Building Your Own Tools

    Jan 05 2017

    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. Sponsors: Rollbar, sign up at https://rollbar.com/fullstackradio to try their Bootstrap Plan free for 90 days Hired, sign up at https://www.hired.com/fullstackradio to double your signing bonus to $2000 if you get a job through Hired Links: Test-Driven Laravel Early Access, Adam's new TDD course wesbos.com, Wes' blog and personal website JavaScript 30, ...more

  • 55: Ian Landsman - Shady Marketing Tactics That Will Hurt Your Business

    Dec 07 2016

    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. Sponsors: Rollbar, sign up at https://rollbar.com/fullstackradio to try their Bootstrap Plan free for 90 days Hired, sign up at https://www.hired.com/fullstackradio to double your signing bonus to $2000 if you get a job through Hired Links: Test-Driven Laravel Early Access, Adam's TDD course UserScape, Ian's business He...more

  • 54: Jonathan Reinink - Forms: The Worst Part of Web Dev

    Nov 18 2016

    In this episode, Adam talks to Jonathan Reinink about dealing with common headaches when working with everyone's favorite part of web development: forms. Sponsors: Rollbar, sign up at https://rollbar.com/fullstackradio to try their Bootstrap Plan free for 90 days Hired, sign up at https://www.hired.com/fullstackradio to double your signing bonus to $2000 if you get a job through Hired Links: Putting Your Laravel Controllers on a Diet, an older blog post by Adam on form objects Form Requests i...more

  • 53: Kyle Fiedler - Design Tips and Tricks for Developers

    Nov 02 2016

    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. Sponsors: Rollbar, sign up at https://rollbar.com/fullstackradio to try their Bootstrap Plan free for 90 days Hired, sign up at https://www.hired.com/fullstackradio to double your signing bonus to $2000 if you get a job through Hired Links: Kyle's personal website thoughtbot on Dribbble Design for Developers on Up...more

  • 52: Taylor Otwell - Patterns for Simplifying Laravel Applications

    Oct 18 2016

    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. Sponsors: Rollbar, sign up at https://rollbar.com/fullstackradio to try their Bootstrap Plan free for 90 days Hired, sign up at https://www.hired.com/fullstackradio to double your signing bonus to $2000 if you get a job through Hired Links: Test Driven Laravel, Adam's upcoming video course Laravel Laravel Valet Laravel Spark Laravel Passpo...more

  • 51: Matt Wynne - Building the Right Thing with BDD

    Oct 05 2016

    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? Sponsors: Rollbar, sign up at https://roll...more

  • 50: Evan You - What's Coming in Vue.js 2.0

    Sep 21 2016

    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 applic...more

  • 49: Toran Billups - Test Driving the Front-end

    Sep 07 2016

    In this episode, Adam talks to Toran Billups about the test driven development workflow he uses to build Ember applications. Sponsors: Rollbar, sign up at https://rollbar.com/fullstackradio to try their Bootstrap Plan free for 90 days Shippo, try out the Shippo API for free at Links: Test Driven Laravel, Adam's upcoming video course Ember.js QUnit testing framework Ember Testing Documentation Toran's TDD talk at EmberConf 2015 Outside-In TDD presentation, one of Toran's more recent talks Tora...more

  • 48: Jessica Lord - Building Desktop Apps with Electron

    Aug 23 2016

    In this episode, Adam talks to Jessica Lord of GitHub about building desktop applications in HTML and JavaScript using Electron. Sponsors: Rollbar, sign up at https://rollbar.com/fullstackradio to try their Bootstrap Plan free for 90 days Shippo, try out the Shippo API for free at goshippo.com Links: Electron Electron Blog Atom Electron API Demos Photon, Electron UI kit Built on Electron, Electron app directory Mojibar, emoji searcher for OSX HyperTerm, JS/HTML/CSS terminal Nylas N1, email cl...more

  • 47: Sara Soueidan - Ditching Icon Fonts for SVG

    Aug 10 2016

    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. Sponsors: Laracasts, use coupon code FULLSTACK2016 for 50% off your first month Rollbar, sign up at https://rollbar.com/fullstackradio to try their Bootstrap Plan free for 90 days Links: Sara's Blog SVG vs Icon Fonts Cage Match grunticon A Designer's Guide to Grumpicon Making the Switch Away from Icont Fonts to SVG A complete guide to SVG fallback...more

  • 46: Joe Ferris - Test Driven Rails

    Jul 28 2016

    In this episode, Adam talks to Joe Ferris of thoughtbot about the test-driven development workflow he uses to build Rails applications. Sponsors: Laracasts, use coupon code FULLSTACK2016 for 50% off your first month Rollbar, sign up at https://rollbar.com/fullstackradio to try their Bootstrap Plan free for 90 days Links: Test Driven Laravel, Adam's latest project Giant Robots podcast How We Test Rails Applications on the thoughtbot blog Capybara Capybara WebKit RSpec factory_girl The Rails Te...more

  • 45: Derek Prior - From Rails to Phoenix

    Jul 13 2016

    In this episode, Adam talks to Derek Prior of thoughtbot about building web applications in Elixir with Phoenix, and how it compares to building an application in Ruby on Rails. Sponsors: Laracasts, use coupon code FULLSTACK2016 for 50% off your first month Rollbar, sign up at https://rollbar.com/fullstackradio to try their Bootstrap Plan free for 90 days Links: thoughtbot on Elixir and Phoenix The Bikeshed Podcast Exercism.io Elixir, the functional programming language Phoenix, the Elixir we...more

  • 44: Joel Clermont - What the heck is Elm?

    Jun 29 2016

    In this episode, Adam talks to Joel Clermont about the Elm programming language and getting started with functional programming. Sponsors: Laracasts, use coupon code FULLSTACK2016 for 50% off your first month Rollbar, sign up at https://rollbar.com/fullstackradio to try their Bootstrap Plan free for 90 days Links: Joel's Blog The Elm Homepage The ML language The Elixir language Exercism.io Richard Feldman, working on "Elm in Action" book "What is functional programming?" b...more

  • 43: Jonathan Snook - Managing Complexity, Design Systems, and Container Queries

    Jun 15 2016

    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. Sponsors: Laracasts, use coupon code FULLSTACK2016 for 50% off your first month Rollbar, sign up at https://rollbar.com/fullstackradio to try their Bootstrap Plan free for 90 days Links: Snook's Blog SMACSS, Jonathan's book Atomic CSS "Staffing a D...more

  • 42: Justin Jackson - Marketing for Developers

    May 24 2016

    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. Sponsors: Laracasts, use coupon code FULLSTACK2016 for 50% off your first month Rollbar, sign up at https://rollbar.com/fullstackradio to try their Bootstrap Plan free for 90 days Links: Refactoring to Collections, Adam's book Justin's Blog Marketing for Developers, Justin's latest book MegaMaker Podcast Build and Launch P...more

  • 41: Jason McCreary - Git Tips, Tricks and Workflows

    May 04 2016

    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. Sponsors: Laracasts, use coupon code FULLSTACK2016 for 50% off your first month Rollbar, sign up at https://rollbar.com/fullstackradio to try their Bootstrap Plan free for 90 days Links: Refactoring to Collections, Adam's book Laracon EU 2016 Pro Git, free online Git book git add -p "How to Write a Git Commit Message&q...more

  • 40: Edd Mann - You Should Switch to Postgres

    Apr 19 2016

    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. Sponsors: Laracasts, use coupon code FULLSTACK2016 for 50% off your first month Rollbar, sign up at https://rollbar.com/fullstackradio to try their Bootstrap Plan free for 90 days Links: Refactoring to Collections, Adam's book E...more

  • 39: Michael Feathers - First Class Error Handling, Tell Don't Ask, and Collection Pipelines

    Apr 05 2016

    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. Sponsors: Laracasts, use coupon code FULLSTACK2016 for 50% off your first month Rollbar, sign up at https://rollbar.com/fullstackradio to try their Bootstrap Plan free for 90 days Links: Refactoring to Collections, Adam's book Michael's Blog r7k, Mich...more

  • 38: J.B. Rainsberger - Unit Testability and the Universal Architecture

    Mar 23 2016

    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. Links: J.B.'s Blog Integrated Tests are a Scam Mock Roles, not Objects The Four Elements of Simple Design Ask J.B. a question J.B.'s Intro to TDD Course Sponsored by Laracasts

  • 37: Chris Hartjes - Getting Started with Testing

    Mar 09 2016

    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. Links: Minimum Viable Tests, Chris' new book Grumpy Learning, Chris' personal website PHPUnit testing framework phpspec testing framework Mockery test double library...more

  • 36: Jason McCreary - Building Laravel Shift

    Feb 25 2016

    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. Links: Shift Laravel PocketBracket Laravel Cashier Abstract Syntax Tree Sorted sets in Redis Sponsored by Laracasts

  • 35: Jonathan Reinink - Fixing Common API Design Mistakes

    Feb 12 2016

    In this episode, Adam talks to Jonathan Reinink of Code Distillery about common API design challenges and how to fix them. Topics include: Does it make sense to scope resources to the authenticated user or should you always use sub-resources? When to use nested resources and when to avoid them Strategies for dealing with actions that don't seem to fit into REST Breaking the mapping between your API and your database Using singular sub-resources and optional fields to simplify your responses Li...more

  • 34: Matt Machuga - Dealing with Dependencies in Active Record Models

    Jan 27 2016

    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 f...more

  • 33: David Hemphill - Building PushSilver with Vue.js and Beard

    Jan 12 2016

    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. Links David's personal site PushSilver Laravel PHP Framework DigitalOcean...more

  • 32: DHH - Building Basecamp 3 like a Porsche 911

    Dec 22 2015

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

  • 31: Woody Zuill - #NoEstimates

    Dec 09 2015

    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. Woody's #NoEstimates blog posts "What price estimation?" by Neil Killick "What is software design?" by ...more

  • 30: Evan You - Diving Deep into Vue.js

    Nov 24 2015

    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. This episode is brought to you by ...more

  • 29: Mark Otto - Bootstrap 4 and CSS architecture at scale

    Nov 10 2015

    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. Mark's blog Bootstrap 4 CSS Stats Parker, CSS analysis tool Code Guide, Mark's HTML and CSS standards WTF, HTML and CSS?, Mark's collect...more

  • 28: Jeffrey Way and Dave Marshall - "Don't mock what you don't own"

    Oct 27 2015

    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. Mock roles not objects, the original paper Integrated tests are a scam by J.B. Rainsberger Eric Evans' Domain Language e-course Effective...more

  • 27: Ben Orenstein - Outside-in TDD and Dependency Injection in Rails

    Oct 13 2015

    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. Ben's blog Upcase DHH on "Dependency injection is not a virtue" A criticism of DHH's post on Depen...more

  • 26: Josh Pigford - What do you need when you launch?

    Sep 29 2015

    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. Baremetrics "How to get startup insurance and avoid getting sued into oblivion" Open Startups DHH on The Secret to Making Money Online...more

  • 25: Matt Machuga - Tips and tricks to make your code awesome

    Sep 15 2015

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

  • 24: Wes Bos - What the Flexbox?!

    Sep 01 2015

    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. Wes' Blog "What the Flexbox?!", Wes' Flexbox training course Bootstrap 4 alpha Flexbugs Solved by Flexbox Firefox Developer Edition React Wes' Sublime Text book Alfred GhostText Sponsored by Laracasts

  • 23: Chris Hunt - How GitHub does remote work

    Aug 04 2015

    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. Healthy Hacker, Chris' podcast "Solving the Rubik's Cube Blindfolded" and more of Chris' talks "How we use Pull Requests to build GitHub" "You should take a Codecation" Ben Orenstein's Codecation presentatio...more

  • 22: Corey Haines - The 4 Rules of Simple Design

    Jul 21 2015

    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. Hearken Understanding the 4 Rules of Simple Design Corey's Blog Corey's post on comparing test run speeds Refactoring to Patterns by Josh Kerievsky Maintaing Balance...more

  • 21: Chad Pytel - Sticking to your guns

    Jul 07 2015

    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. thoughtbot thoughtbot's Playbook The Product Design Sprint on the Giant Robots blog Converting to Job Stories on the Giant Robots blog FormKeep, thoughtbot's form endpoint service Tropos, thoughtbot's open sour...more

  • 20: Ian Landsman - Code is not a business

    Jun 23 2015

    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. Userscape HelpSpot Snappy Ian's Blog Bootstrapped.fm, Ian's bootstrapping podcast "10 tips for moving from programmer to entrepreneur" "What they never told you about handli...more

  • 19: Dave Marshall - Designing Effective Tests

    Jun 09 2015

    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. Dave's Blog That Podcast Mockery on GitHub Uncle Bob on writing your own test doubles Behat Humbug mutation testing libr...more

  • 18: Katie Cerar - Designing and Prototyping for Clients

    May 27 2015

    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. The Opportunity Analysis Canvas by James Gr...more

  • 17: Adam Culp - Maximizing Your Conference Experience

    May 12 2015

    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. Adam's Tech Blog Adam's Running Blog Run Geek Radio ZendCon Sunshine PHP SoFloPHP "Help Me Abstract" by Kayla Daniels "Refactoring from Good to Great" by Ben Orenstein ZendCon 2015 Call For Papers ...more

  • 16: Kent Beck - Tiny Decisions and Emergent Design

    May 05 2015

    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. Kent's Facebook Blog Smalltalk Best Practice Patterns "Agile is Dead (Long Live Agility)" by Dave Thomas Extreme Programming Screenhero "Continuous Delivery" by Jez Humble "Structured Design" Kent's TDD Screen...more

  • 15: Everzet - Classicist and Mockist TDD

    Apr 20 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. This episode is brought to you by Hired. everzet on Twitter Inviqa "Design How Your Objects Talk Through Mocking" presentation "Test Driven Development: By Example", by Kent Beck "Growing Object Oriented Software Guided...more

  • 14: Taylor Otwell - Building Envoyer, Laravel 5.1 and Learning to Program

    Apr 07 2015

    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. Laravel Envoyer, Taylor's latest project Laravel Forge Pusher Authy Lar...more

  • 13: Phil Sturgeon - Designing and Testing APIs, Go and PHP 7

    Apr 02 2015

    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. Phil's Blog Ride Go JSON Patch RFC Recent changes to JSON API Troy Hunt on API versioning "Build APIs You Won't Hate", Phil's book "Dredd: Do Your HTTP API Justice" HATEOAS RAML "Smalltalk Best Practice Patterns" by Kent Beck Sponsored b...more

  • 12: Jack McDade - Building Photoshoot.io and Getting Stuff Done

    Mar 23 2015

    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. Photoshoot.io Statamic Envoyer, designed by Jack Laravel 5 Homepage, designed by Jack Wilderborn, Jack's company Jack's personal site Interview at Ways We Work Sponsored by Hired

  • 11: Jeffrey Way - "But how does it feel?"

    Mar 09 2015

    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. Laracasts Temporal Databases Object Thinking "Is TDD Dead" with Martin Fowler, Kent Beck, and David Heinemeier Hannson The $invoice->download() incident A bit on verb class names (scroll to "Verb-first classes") Sponsored by Hired

  • 10: Type Safety Roundtable with Ryan Tablada and Matt Machuga

    Feb 23 2015

    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. J# Hack DHH's "Why Ruby?" Keynote at RubyConf X Design by Contract in Eiffel Type Hintin...more

  • 9: David Heinemeier Hansson - Architecture, Patterns and Design

    Feb 11 2015

    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". DHH's Blog "Writing Software" keynote DHH's 5 most influential programming books Transitioning to SCSS at Etsy Jason Fried on Rebuilding Basecamp The Big Rewrite, revisited

  • 8: Sean Devine - Ember and API first

    Feb 01 2015

    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. Ember The Road to Ember 2.0 Ember Data JSON API Sean's blog Ruby on R...more

  • 7: Shawn McCool - BDD and DDD

    Jan 19 2015

    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. Shawn's blog The RSpec Book everzet's Introduction to BDD everzet on Modelling by Example Domain Dri...more

  • 6: Chris Fidao - Servers for Hackers

    Jan 05 2015

    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. Servers for Hackers Newsletter Servers for Hackers Book Chris' blog Ansible Docker Forge "Scaling PHP Applications" by Steve Corona James Turnbull's Books

  • 5: Ryan Singer - Jobs-to-be-Done and Product Design

    Dec 19 2014

    In this episode, Adam talks with Ryan Singer of Basecamp about Jobs-to-be-Done thinking, UX, and product design. Ryan's blog "Jobs-to-be-Done" collection on Medium The Milkshake Video Ryan's Peepcode Play-by-Play Ryan's post on affordance vs. styling "Notes on the Synthesis of Form" by Christopher Alexander "Getting Real" by Basecamp/37signals "Domain Driven Design" by Eric Evans

  • 4: Alex Bilbie - OAuth 2 and API Security

    Dec 08 2014

    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. Alex's blog Alex's PHP OAuth2 Server package "OAuth and Single Page JavaScript Web-Apps" Alex's upcoming OAuth book

  • 3: Matt Machuga - Ruby, PHP, object oriented design, testing and other crap

    Nov 17 2014

    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. Matt's personal website Matt's courses at TutsPlus DHH's "Why Ruby?" Talk Array#forty_two Giant Robots Podcast DHH on Dependency Injecti...more

  • 2: Eric Barnes - Wardrobe, Javascript and Writing

    Nov 03 2014

    In this episode, Adam talks with Eric Barnes of Userscape about rebuilding WardrobeCMS, trends in Javascript development, and building an audience. Eric's blog Laravel News Rebuilding Wardrobe Snappy Laravel Forge Sneak peek at Angular 2.0 Removing Batman.js at Shopify

  • 1: Matt Stauffer - CSS Semantics

    Oct 18 2014

    In our very first episode, Adam talks with Matt Stauffer of Tighten Co about OOCSS, BEM, SMACSS, preprocessors, common architecture pitfalls, and CSS semantics. "Organizing CSS: OOCSS, SMACSS, and BEM" by Matt Stauffer Nicole Sullivan on Media Objects SMACSS "MindBEMding" "Bootstrap without all the debt" "Medium's CSS is actually pretting f***ing good" "About HTML semantics and front-end architecture"