show episodes
 
Loading …
show series
 
Sam and Ryan talk about the tradeoffs between smart and dumb form components, and toss around ideas for passing draft state into forms. They also talk about reimplementing Tailwind UI’s Modal animations using Framer Motion. Topics include: - 0:00 - Intro - 5:33 - Smart vs. dumb forms, and lazy initial props - 32:03 - Replacing Headless UI’s Transit…
 
Sam and Ryan talk about how module side effects can expose order-dependent code, and why its worth ensuring your modules work regardless of import order. They also talk about different UI patterns for forms in modals, and some tips for working with Mirage in Cypress. Topics include: 0:00 – Intro 4:04 – Keeping imports order-independent when modules…
 
Sam and Ryan chat about the pros and cons of using third-party services, focusing on how they affect your application’s testing strategy. Topics include: 0:00 - Intro 0:43 – If services don’t provide testing utils, you have to write library code just to test your app. What was the mocking story like for popular Rails services? 11:59 – Adding seams …
 
Sam and Ryan talk about whether stores in module scope are a better alternative to Context for sharing global state in React apps. Topics include: 0:00 – Intro 3:21 – Using Zustand to refactor a useAuth hook 34:08 – Module scope vs. context for shared state 58:52 – 7 GUI tasks Links: Zustand Sebastian’s tweet on default context values Sam’s Auth Pr…
 
Sam and Ryan talk about how Next.js places an upfront cost on app teams for the sake of scalability and server-side rendering, and how to avoid this cost when building apps with user-specific data where SSR is not a priority. They also talk about avoiding Context for global state in React apps. Topics include: 0:00 – Intro 1:51 – Avoiding Context f…
 
Sam and Ryan continue to put some more pieces of the Suspense puzzle together as they talk about how throwing promises enables devs to write synchronous code while still building asynchronous (non-blocking) UI. They also talk about sharing state across pages in Next.js. Topics include: 0:00 – Intro 1:08 – Sharing state across pages in Next.js 9:03 …
 
Prompted by the new React 18 alpha release, Sam and Ryan chat about Suspense and what data-fetching issues they’re excited about it solving. They also talk about some Twitter conversation around premature optimization. Topics include: 2:05 – Suspense and data-fetching 31:05 – Tweets of the week: Preoptimzation Links: Sam on Twitter Ryan on Twitter …
 
Sam and Ryan talk about their experience building the headlessui.dev website with the folks from Tailwind Labs. They chat about the team’s deadline-driven development process, some new Figma workflow tips when implementing a design that was built with Tailwind CSS in mind, and some tech takeaways from building a docs site with Next.js. They also ch…
 
Sam and Ryan talk about how visual design typically drives frontend app development, and whether or not this implies that frontend development should drive backend development in a similar way. They also discuss a tricky UI issue involving keeping a React app consistent with both the URL and server-side auth state. Topics include: 2:02 - How the UR…
 
Sam and Ryan discuss building a library with TSDX, as well as some hiccups they ran into with node’s module resolution algorithm. They also talk about how even though Tailwind and Bootstrap are both considered CSS frameworks, they’re actually used to solve very different problems. Topics include: 0:00 Intro 2:55 Building a library with TSDX 11:56 W…
 
Sam and Ryan discuss how loading states, data fetching, and skeleton screens can change the architecture of an SSG application. They also talk about Apollo’s cache and various query re-fetching strategies. Topics include: 0:00 - Intro 2:35 - Image cropper dampening 4:00 - Learning library abstractions 10:00 - Loading states with SSG 28:00 - Server …
 
Ryan shares his first impressions using Supabase and talks about a new app he’s building to manage users in Hasura. Sam talks about how to responsibly go outside of React’s rendering cycle when using imperative APIs. Topics include: 0:00 - Intro 3:40 - Supabase first thoughts 13:50 - Building an auth layer for Hasura 30:40 - Apollo server 37:50 - F…
 
Topics: Putting yourself in the shoes of the person reviewing your application Crafting a high quality application tailored to a specific position Standing out in a more traditional hiring process by doing something a little extra Showcasing very specific examples of your work instead of asking the person reviewing your application to go hunting fo…
 
Ryan shares his experience setting up authentication in a new project with Sam. They also discuss some of the tradeoffs that client apps face when consuming raw JSON vs. passing data through a model layer like an ORM. Topics include: 0:00 - Intro 1:00 - Visual programming in the video game Factorio 9:00 - Setting up auth in a new project 22:40 - Ch…
 
Sam tells Ryan about what he’s been learning using the React Use Gesture and Framer Motion libraries to build an Image Cropper for his YouTube series. They also chat about their first impressions of React’s new Server Components, as well as the Tailwind 2.0 launch. Topics include: 1:40 - First impressions of React server components 12:10 - Tailwind…
 
Links: Hotwire HEY Supporting the show: I decided to stop taking sponsors for the show because I think advertisements are annoying and no one wants to listen to them. If you do want to support the show, the best way to do it is to purchase one of my products: Tailwind UI, a collection of professionally designed, fully responsive HTML components bui…
 
Ryan tells Sam about an image uploading solution he built for one of his Next.js apps. They discuss how Next.js's integrated frontend and backend allow for much more convenient packages, and they brainstorm other packages that would fit well within Next's architecture. Ryan also shares how parser combinators helped him write robust text-parsing cod…
 
Sam and Ryan talk about whether GraphQL affects the architecture of an app, and what sort of UI code a well-implemented GraphQL server can replace. They also talk about Sam's experience working on a new side project using Next, Hasura, GraphQL and SWR. Topics include: 2:34 – Finally feeling good about our tech stack. How easy GraphQL makes it to ge…
 
Sam and Ryan talk about how frontend and backend frameworks are converging towards similar UI patterns and developer experiences, even though they're coming at it from different starting points. They also talk about the new Next.js 10 release and whether React should document more opinions held by the core team. Topics include: 3:22 – New features …
 
Sam and Ryan talk about how both the key prop and useEffect can be used to solve similar problems, and discuss which approach is better. They also talk about the difference between handling data using models with methods vs. using POJOs with pure functions. Topics include: 0:34 – Model with methods vs POJOs with functions 16:44 – Comparing explicit…
 
Supporting the show: I decided to stop taking sponsors for the show because I think advertisements are annoying and no one wants to listen to them. If you do want to support the show, the best way to do it is to check out our products: Tailwind UI, a collection of professionally designed, fully responsive HTML components built with Tailwind CSS. St…
 
Sam and Ryan talk more about their recent experience using Hasura and Amplify, and more generally how best to test apps that are built on third-party services. They also talk about Mirage JS GraphQL. Topics include: 7:39 – Testing a Hasura-backed app with Mirage 16:03 – Modeling and querying data with Amplify and Dynamo 31:09 – Auth, Amplify and Ha…
 
Links: Changes to Gumroad's PayPal support Radical icons Jack's hand-drawn avatars W3C's CMS Selection Report Supporting the show: I decided to stop taking sponsors for the show because I think advertisements are annoying and no one wants to listen to them. If you do want to support the show, the best way to do it is to check out our products: Tail…
 
Supporting the show: I decided to stop taking sponsors for the show because I think advertisements are annoying and no one wants to listen to them. If you do want to support the show, the best way to do it is to check out our products: Tailwind UI, a collection of professionally designed, fully responsive HTML components built with Tailwind CSS. St…
 
Supporting the show: I decided to stop taking sponsors for the show because I think advertisements are annoying and no one wants to listen to them. If you do want to support the show, the best way to do it is to check out our products: Tailwind UI, a collection of professionally designed, fully responsive HTML components built with Tailwind CSS. St…
 
Sam and Ryan talk about a tricky integration between some asynchronous third-party JavaScript code and React's render cycles. They also talk about how powerful the getStaticProps hook from Next.js is, and share some thoughts on whether Firebase's features justify the fact that by using it you lose out on the GraphQL community's standard libraries a…
 
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 t…
 
Sam talks about his recent experience working with Next.js on his personal site. He and Ryan also compare Gatsby and Next, and discuss how much Next's updates over the past year have curbed Gatsby's advantages. They also talk about the best way to make frontend developers more autonomous. Topics include: - 8:30 - Working on moving samselikoff.com t…
 
Sam and Ryan talk about Ryan's recent experience using Amplify on a side project. They chat about the tradeoffs between using services and writing your own backend code, and how backend services let you do more at the cost of not understanding as much about how the system works. Topics include: 9:10 – Why Gatsby's content mesh is so good 23:00 – Ho…
 
Topics include: Why Gary decided to write Execute Program as a full-stack TypeScript application instead of using a Ruby or Python backend like he may have traditionally Do you actually have to write less tests if you have a good type system? What does a good type system give you that tests can't give you? Using io-ts to type check incoming data Ho…
 
Sam and Ryan talk about how route-based code splitting makes SPAs more like traditional server-rendered apps, potentially negating many of their benefits. They also talk about how the intrinsic width of text affects flexbox-based layouts. Topics include: - 4:20 – Flexbox and intrinsic width - 27:40 – Does route splitting negate the benefits of an S…
 
Topics include: What is Svelte and how is it different than other JS frameworks in the space? What special behavior does the Svelte compiler layer on top of vanilla JS syntax and why? Why the lack of render functions in Svelte isn't a real problem in practice What are you giving up when you choose to build your application with something like Rails…
 
Sam and Ryan talk about adding an authenticated backend to miragejs.com using Hasura, Heroku and Netlify. They also talk about the differences in risk between using paid third-party services vs. depending on open-source libraries. Topics include: - 3:47 – Adding a backend to miragejs.com - 13:03 – Environment variables in frontend apps - 20:48 – Ad…
 
Topics include: How do you decide what role to hire for? Why it's so important to figure out exactly what your biggest struggle is before hiring How to decide what the most important thing to focus on is when it feels like there's too much to do Why it's important to consider the impact of hiring for a specific role on your own happiness vs. just t…
 
Sam and Ryan talk – again – about the best way to write side effects in React applications. Ryan shares his approach based on his recent work in several React apps, and talks about the pitfalls of using useEffect's dependency array as a mechanism for control flow. Sam also talks about his recent video on React Router and why it's important to use t…
 
Drew Powers, one of two full-time engineers working at Pika, joins Sam to talk about Pika's mission to make the web faster. Drew talks about how Pika is focused on building tools that meet developers where they're at, his work on Snowpack, and the company's vision for Pika CDN. Topics include: 0:00 – What do you do at Pika? 4:54 – What is Pika's mi…
 
Topics include: How did Basecamp evolve from being a team/client communication tool to focusing on keeping your whole company organized, and is it really even that different? How exactly should we set up Basecamp on day one to support a small 3-5 person remote software team? What tools should we use and which ones should we ignore for now? Finding …
 
Tom Preston-Werner joins Sam and Ryan to talk about some of the architecture decisions behind Redwood JS, a recently released full-stack JS framework he's been working on for more than a year. Tom talks about how Redwood's Services provide a first-class layer of abstraction on top of your backend data models for your application's business logic, w…
 
Sam and Ryan talk about the unique aspects of ES modules that have driven the recent explosion of innovation in the frontend build tooling space, giving rise to tools like Snowpack and Vite. They also chat about their desire for a more integrated frontend ecosystem that would make adding things like auth to frontend apps easier, as well the impress…
 
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?…
 
Sam and Ryan read and discuss Tom MacWright's recent article "Second-guessing the modern web," as well as Rich Harris's response "In defense of the modern web." The articles respectively argue against and for the JavaScript-centric approach to building websites that has taken root over the past ten years and debate issues of performance, architectu…
 
Sam and Ryan grapple with the way useEffect nudges you to build UIs. They discuss whether JavaScript object identity is a good proxy to use for business logic equivalence, whether useEffect leads to more correct code, and then they chat about some of the ways React developers sidestep useEffect when the declarative programming model that Hooks impo…
 
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'…
 
Sam and Ryan chat about how and why framework APIs get used and abused. Ryan also shares his experience working with AWS Amplify on a side project. Topics include: - 3:17 – How useEffect can be confusing in high-level app code - 21:05 – Immediate mode GUIs - 32:40 – Who's responsible when developers misuse framework APIs? - 46:40 – AWS Amplify - 1:…
 
Sam and Ryan try to unpack the meaning of JAMstack. They discuss the constraints of the architecture, why it's confusing to think of it as an application stack, the implications it has for app cachability, and whether the Twelve Factor App that Heroku introduced in the Rails-dominated era of web development might be a better way to think about this…
 
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 provi…
 
Loading …

Quick Reference Guide

Copyright 2021 | Sitemap | Privacy Policy | Terms of Service
Google login Twitter login Classic login