Logo
    Search

    Podcast Summary

    • Simplifying complex concepts in programming through abstractionAbstraction breaks down complex functions into smaller, simpler parts for easier understanding and maintenance in programming. Use of components in React, Vue, and Svelte is an example of abstraction.

      Abstraction is the process of simplifying complex concepts or functions in programming by hiding their intricacies and making them easier to understand. It's about taking something complex and breaking it down into smaller, more manageable parts. Wes Boss and Scott Talinski, hosts of the Syntax podcast, discussed abstraction in the context of both React and general JavaScript programming. They emphasized the importance of abstracting complex functions into smaller, simpler steps to make the code more understandable and maintainable. The use of components in React, Vue, and Svelte is an excellent example of abstraction, as large components can be broken down into smaller, more manageable pieces. LogRocket, a sponsor of the podcast, was highlighted as a tool that helps developers see exactly what users do on their websites to cause errors, making it easier to reproduce and fix bugs.

    • Simplifying complex concepts with abstractionAbstraction breaks down complex concepts into smaller parts, increasing reusability, easier testing, and improved code readability. Personal preference and impact on overall system guide the decision to abstract.

      Abstraction is the process of simplifying complex concepts or code by breaking them down into smaller, more manageable parts. Max MSP, a visual programming language, is an excellent example of this, as it allows users to create "boxes" that represent more complex functions, making the overall process more streamlined and efficient. Abstraction offers numerous benefits, such as increased reusability, easier testing, and improved code readability. When deciding what to abstract, consider the complexity of the component and its potential impact on the overall system. Personal preference and the desire for smaller, testable units often guide the decision. Abstraction is not about adhering to arbitrary rules, but rather making the codebase easier to understand and maintain. For instance, in animation development, tools like Framer Motion enable the creation of complex animations through abstraction, allowing developers to focus on individual components and their functions, making the process more manageable and efficient.

    • Abstracting components for simpler APIs and reusabilityConsider abstracting components for code simplicity and reusability, but evaluate benefits vs costs to avoid complex codebases.

      When building complex components in React, it's essential to consider abstracting components to simplify the API, make it easier to read, and promote reusability. However, it's crucial to evaluate the benefits versus the costs of abstraction. To illustrate, when creating animated routes, the process involves using an animated animate presence component, React router switch, route component, and a motion dot div. By abstracting these components, we can create an "animated route" or an "animate animated router," making the code cleaner and easier to understand. However, it's important to be mindful of the potential downsides of excessive abstraction. While it may save a few lines of code, it could lead to a complex and hard-to-follow codebase. Therefore, it's essential to strike a balance and only abstract components when necessary. Ultimately, the decision to abstract comes down to evaluating the benefits, such as reusability and code simplicity, against the costs, such as the potential for a complex and hard-to-follow codebase. With experience and experimentation, we can learn when and how to effectively abstract components to create efficient and maintainable code.

    • Balancing abstraction in codingWhen learning, focus on understanding basics without abstraction. As experience grows, abstract for simplicity and cohesion. Public libraries cater to various use cases, leading to complex code. Writing your own components with smart defaults maintains cohesion.

      There's a balance to strike when it comes to abstraction in coding. When learning, it's okay to not abstract and instead focus on understanding the basics. However, as you gain experience, breaking things down into smaller functions or components can be beneficial. But, not all abstractions are created equal. For personal code, simplicity and cohesion are key, while public libraries must cater to a wider range of use cases. This can result in more complex code with numerous inputs. Component libraries like Chakra UI offer many benefits, but their complexity can also make them less desirable for some developers. Instead, writing your own components with smart defaults can help maintain a more cohesive design system. When creating components for your team or organization, it's important to remember that accommodating every possible use case isn't always necessary. Embrace opinionated design and strive for simplicity and readability.

    • Designer builds custom components for specific use casesDesigner creates simple, focused components for efficient use, reducing time and complexity by limiting props and functions.

      The designer emphasizes the importance of creating simple and focused components for specific use cases, rather than using complex frameworks with numerous options. The designer's components, such as the layout, columns, flex, and grid components, have limited props and functions, ensuring ease of use and reducing the need for extensive configuration. This approach saves time and allows the designer to have a better understanding of their own codebase, as opposed to learning and dealing with the complexities of external frameworks. The designer believes that writing components tailored to one's own use cases is an efficient and effective solution.

    • Custom React Hooks: Simplify and manage complex queriesCreate custom hooks for frequently used queries or functionalities to simplify codebase, reduce redundancy, and improve efficiency.

      Custom React Hooks have significantly changed the speaker's approach to abstracting components and managing complex queries in React projects. By creating custom hooks for frequently used queries or functionalities, developers can simplify their codebase, reduce redundancy, and make their code more efficient. An example given was moving a GraphQL user query into a custom hook named "useUser," which allows for a single import and eliminates the need to repeat the same query and import statements across multiple files. This simple yet powerful technique has not only saved time but also improved the overall organization and maintainability of the codebase. The speaker expressed his enthusiasm for this new perspective and encouraged listeners to explore the potential of custom React Hooks in their own projects.

    Recent Episodes from Syntax - Tasty Web Development Treats

    788: Supabase: Open Source Firebase for Fullstack JS Apps

    788: Supabase: Open Source Firebase for Fullstack JS Apps

    Scott and CJ chat with Paul Copplestone, CEO and co-founder of Supabase, about the journey of building an open source alternative to Firebase. Learn about the tech stack, the story behind their excellent documentation, and how Supabase balances business goals with open-source values.

    Show Notes

    • 00:00 Welcome to Syntax!
    • 00:30 Who is Paul Copplestone?
    • 01:17 Why ‘Supa’ and not ‘Super’?
    • 02:26 How did Supabase start?
    • 08:42 Simplicity in design.
    • 10:32 How do you take Supabase one step beyond the competition?
    • 12:35 How do you decide which libraries are officially supported vs community maintained?
      • 15:17 You don’t need a client library!
    • 16:48 Edge functions for server-side functionality.
    • 18:51 The genesis of pgvector.
    • 20:59 The product strategy.
    • 22:25 What’s the story behind Supabase’s awesome docs?
    • 25:26 The tech behind Supabase.
    • 35:46 How do you balance business goals with open source?
    • 42:01 What’s next for Supabase?
    • 44:15 Supabase’s GA + new features.
    • 48:24 Who runs the X account?
    • 50:39 Sick Picks + Shameless Plugs.

    Sick Picks

    Shameless Plugs

    Hit us up on Socials!

    Syntax: X Instagram Tiktok LinkedIn Threads

    Wes: X Instagram Tiktok LinkedIn Threads

    Scott: X Instagram Tiktok LinkedIn Threads

    CJ: X Instagram YouTube TwitchTV

    Randy: X Instagram YouTube Threads

    787: You Should Try Vue.js

    787: You Should Try Vue.js

    Scott and CJ dive deep into the world of Vue.js, exploring what makes this frontend framework unique and why it stands out from React and Svelte. CJ gives a comprehensive tour, covering everything from getting started to advanced features like state management and Vue’s built-in styles.

    Show Notes

    Vue.js: The Documentary.

    Sick Picks

    Shameless Plugs

    Hit us up on Socials!

    Syntax: X Instagram Tiktok LinkedIn Threads

    Wes: X Instagram Tiktok LinkedIn Threads

    Scott: X Instagram Tiktok LinkedIn Threads

    Randy: X Instagram YouTube Threads

    786: What Open Source license should you use?

    786: What Open Source license should you use?

    Scott and CJ dive into the world of open source, breaking down its meaning, benefits, and the various types of licenses you’ll encounter. From permissive licenses like MIT and Apache 2.0 to copy-left licenses such as GNU GPLv3, they’ll help you choose and apply the right license for your project.

    Show Notes

    Hit us up on Socials!

    Syntax: X Instagram Tiktok LinkedIn Threads

    Wes: X Instagram Tiktok LinkedIn Threads

    Scott: X Instagram Tiktok LinkedIn Threads

    Randy: X Instagram YouTube Threads

    785: What’s Next for NextJS with Tim Neutkens

    785: What’s Next for NextJS with Tim Neutkens

    Scott and Wes dive into the world of Next.js with special guest Tim Neutkens from Vercel. They explore the latest updates, including the React Compiler and React Server Components, discussing their impact on developer workflows and the future of Next.js development.

    Show Notes

    • 00:00 Welcome to Syntax!
    • 00:30 What does the React Compiler do?
    • 05:04 Will React Compiler help with managing Context?
    • 06:39 What happens if you’re not using a React Compiler?
    • 09:30 Will this work on any NextJS version?
    • 12:18 What are React Server Components?
    • 16:28 Shipping all the data inside an encapsulated component.
    • 20:17 Clearing up the frustrations around retrofitting server components.
    • 23:13 Handing migration.
    • 28:30 Is this just a fetch request with props?
    • 36:41 How closely are the NextJS and React teams working?
    • 41:53 Will we ever get Async Client Components?
    • 43:52 Async Local Storage API.
    • 45:31 Turbopack.
    • 57:51 Sick Picks & Shameless Plugs.

    Sick Picks

    Shameless Plugs

    Hit us up on Socials!

    Syntax: X Instagram Tiktok LinkedIn Threads

    Wes: X Instagram Tiktok LinkedIn Threads

    Scott: X Instagram Tiktok LinkedIn Threads

    Randy: X Instagram YouTube Threads

    784: Logging × Blogging × Testing × Freelancing

    784: Logging × Blogging × Testing × Freelancing

    In this Potluck episode, Scott and Wes tackle listener questions on modern blogging, website environmental impact, and using LangChain with LLMs. They also cover CSS hyphens, unit vs. integration testing, and balancing web development with new parenthood.

    Show Notes

    Sick Picks

    Shameless Plugs

    Hit us up on Socials!

    Syntax: X Instagram Tiktok LinkedIn Threads

    Wes: X Instagram Tiktok LinkedIn Threads

    Scott: X Instagram Tiktok LinkedIn Threads

    Randy: X Instagram YouTube Threads

    783: How We Built a Netflix Style “Save for Offline” Feature Into Syntax

    783: How We Built a Netflix Style “Save for Offline” Feature Into Syntax

    Scott and Wes dive into the world of browser caching for audio files, exploring the File System API and the Cache API. They discuss size restrictions across different browsers, how tools like Riverside.fm leverage IndexedDB, and walk through code examples for creating, retrieving, and managing cached audio data.

    Show Notes

    Hit us up on Socials!

    Syntax: X Instagram Tiktok LinkedIn Threads

    Wes: X Instagram Tiktok LinkedIn Threads

    Scott:X Instagram Tiktok LinkedIn Threads

    Randy: X Instagram YouTube Threads

    782: The Developer’s Guide To Fonts with Stephen Nixon

    782: The Developer’s Guide To Fonts with Stephen Nixon

    Scott and CJ are joined by Stephen Nixon of ArrowType to delve into the world of fonts and type for developers. They explore the intricacies of font creation, the utility of variable fonts, and offer tips for making visually appealing typography on the web.

    Show Notes

    Sick Picks

    Shameless Plugs

    Hit us up on Socials!

    Syntax: X Instagram Tiktok LinkedIn Threads

    Wes: X Instagram Tiktok LinkedIn Threads

    Scott:X Instagram Tiktok LinkedIn Threads

    Randy: X Instagram YouTube Threads

    781: Potluck - The Value of TypeScript × Vue vs Svelte × Leetcode

    781: Potluck - The Value of TypeScript × Vue vs Svelte × Leetcode

    In this potluck episode of Syntax, Scott and CJ serve up a variety of community questions, from the nuances of beginner vs. advanced TypeScript to the pros and cons of SvelteKit. They also discuss falling out of love with React, shipping private packages via NPM, and the eternal struggle of always starting but never finishing projects.

    Show Notes

    Sick Picks

    Shameless Plugs

    Hit us up on Socials!

    Syntax: X Instagram Tiktok LinkedIn Threads

    Wes: X Instagram Tiktok LinkedIn Threads

    Scott:X Instagram Tiktok LinkedIn Threads

    Randy: X Instagram YouTube Threads

    780: Cloud Storage: Bandwidth, Storage and BIG ZIPS

    780: Cloud Storage: Bandwidth, Storage and BIG ZIPS

    Today, Scott and Wes dive into cloud storage solutions—why you might need them, how they use them, and what you need to know about the big players, fees, and more.

    Show Notes

    Hit us up on Socials!

    Syntax: X Instagram Tiktok LinkedIn Threads

    Wes: X Instagram Tiktok LinkedIn Threads

    Scott:X Instagram Tiktok LinkedIn Threads

    Randy: X Instagram YouTube Threads

    779: Why SQLite is Taking Over with Brian Holt & Marco Bambini

    779: Why SQLite is Taking Over with Brian Holt & Marco Bambini

    Scott and CJ dive into the world of SQLite Cloud with special guests Brian Holt and Marco Bambini. They explore why SQLite is gaining traction, its unique features, and the misconceptions surrounding its use—let’s get into it!

    Show Notes

    • 00:00 Welcome to Syntax!
    • 01:20 Who is Brian Holt?
    • 02:26 Who is Marco Bambini?
    • 05:12 Why are people starting to talk so much about SQLite now?
    • 08:47 What makes SQLite special or interesting?
    • 09:46 What is a big misconception about SQLite?
    • 11:13 Installed by default in operating systems.
    • 12:03 A perception that SQLite is intended for single users.
    • 13:36 Convincing developers it’s a full-featured solution.
    • 15:11 What does SQLite do better than Postgres or MySQL?
    • 17:30 SQLite Cloud & local first features.
    • 20:38 Where does SQLite store the offline information?
    • 23:08 Are you typically reaching for ORMs?
    • 25:00 What is SQLite Cloud?
    • 27:29 What makes for an approachable software?
    • 29:18 What make SQLite cloud different from other hosted SQLite options?
    • 32:13 Is SQLite still evolving?
    • 34:40 What about branching?
    • 37:37 What is the GA timeline?
    • 40:04 How does SQLite actually work?
    • 41:19 Questions about security.
    • 44:28 But does it scale?
    • 45:52 Sick Picks + Shameless Plugs.

    Sick Picks

    Brian: Trainer Road
    Marco: Tennis

    Shameless Plugs

    Hit us up on Socials!

    Syntax: X Instagram Tiktok LinkedIn Threads

    Wes: X Instagram Tiktok LinkedIn Threads

    Scott:X Instagram Tiktok LinkedIn Threads

    Randy: X Instagram YouTube Threads

    Related Episodes

    3: JavaScript front-end frameworks

    3: JavaScript front-end frameworks

    In deze aflevering bespreken we de drie populairste JavaScript front-end frameworks van dit moment. We kijken naar de voordelen van elk framework en bespreken de nadelen. Ook kijken we naar een nieuw en opkomend framework genaamd svelte die het anders doet als de rest door geen virtual dom te gebruiken.

    Bronnen:
    https://merehead.com/blog/angular-vs-react-vs-vue-2020/
    https://stackoverflow.blog/2018/01/11/brutal-lifecycle-javascript-frameworks/
    https://medium.com/@patricianeil248/react-vs-vue-which-is-better-for-2020-c484f22c67a8
    https://dev.to/jesseskinner/svelte-is-the-most-beautiful-web-framework-i-ve-ever-seen-325f 
    https://dev.to/richharris/why-i-don-t-use-web-components-2cia

    Playwright:
    https://github.com/microsoft/playwright

    Istio(Service Mesh):
    https://istio.io/

    Kiali:
    https://kiali.io/

    Nuxt.js:
    https://nuxtjs.org/

    Svelte:
    https://svelte.dev/

    Our Predictions for 2023

    Our Predictions for 2023

    In this episode of Syntax, Wes and Scott talk about their predictions in web development for 2023.

    Show Notes

    • 00:07 Welcome
    • 01:25 SSR JS sites more the norm
    • 03:32 React doing forms
    • 05:39 TypeScript Inferred becomes hot
    • 08:11 Deno gets hotter
    • 12:51 JS Runtimes Mature
    • HTMX
    • 15:00 We will see a new TS Type Checker written in Rust
    • 19:20 New JS APIs
    • 23:37 Writing towards Winter CG Spec Popular. “Worker Ready” script
    • STC
    • 27:05 A new JS framework
    • SolidJS
    • Qwik
    • 29:44 Page Transitions API
    • 32:40 Scott was right / Scotts gonna be right
    • 34:06 Rust becomes more Popular
    • 36:00 React Beta Docs launch after 5 year dev cycle
    • 37:45 CSS Container Queries in Production
    • 41:07 Svelte and Sveltekit Glow Up
    • 43:38 CSS Subgrid
    • 49:19 WASM
    • 51:51 AI
    • Open AI
    • 53:16 Houdini
    • 54:30 People souring on React, Eslint
    • 57:47 Machine learning
    • 01:08 SIIIIICK ××× PIIIICKS ×××

    ××× SIIIIICK ××× PIIIICKS ×××

    Shameless Plugs

    Tweet us your tasty treats

    752: React vs Vue vs Angular with Corbin Crutchley

    752: React vs Vue vs Angular with Corbin Crutchley

    Which framework is best? Join Scott and Wes as they chat with Corbin Crutchley, author of the “Framework Field Guide”, diving into the world of frameworks, metaframeworks, and tips to stay up-to-date on the latest trends in web development.

    Show Notes

    • 00:00 Welcome to Syntax!
    • 00:48 Who is Corbin Crutchley?
    • 02:08 Brought to you by Sentry.io.
    • 02:32 Hilton, like the hotel?
    • 05:57 What is the best framework?
    • 07:23 How do you compare these frameworks?
    • 10:00 Do you feel like the metaframeworks are comparable?
    • 11:02 Exciting announcements from ng-conf?
    • 11:42 Are Wiz and Angular merging?
    • 14:17 Angular signals and Vue comparison.
    • PreactJS Signals
    • 17:53 Adding signals to vanilla JavaScript and browsers.
    • 21:02 What is derived state?
    • 23:11 How can we store state within these different frameworks?
    • 24:37 Passing children.
    • 26:40 Which has the best implementation for passing children?
    • 28:52 What’s the approach for building framework agnostic components?
    • TanStack Store
    • 30:31 How much of it is framework specific?
    • 31:35 Headless or DOM-based?
    • 32:48 What are the best practices for writing this?
    • 35:28 What’s the biggest framework pain point?
    • 36:21 Is there a language that requires significantly more code?
    • 38:52 What about Web Components?
    • 39:58 Your book is free?
    • Framework Field Guide
    • Shout-out Eduardo Pratti and Kevin Aguilar.
    • 42:42 What’s the process of writing a book like this?
    • 45:44 Not a physical book?
    • 46:17 Walk us through the tech stack.
    • 48:27 Supper Club Questions.
    • 48:33 What text editor, theme and font do you use?
    • 49:53 What terminal and shell do you use?
    • 50:19 How do you stay up to date?
    • 53:39 Do you have advice for beginners?
    • 55:26 Sick Picks + Shameless Plugs.

    Sick Picks

    Shameless Plugs

    Hit us up on Socials!

    Syntax: X Instagram Tiktok LinkedIn Threads

    Wes: X Instagram Tiktok LinkedIn Threads

    Scott:X Instagram Tiktok LinkedIn Threads

    Randy: X Instagram YouTube Threads

    Konferencja LIVE - zapowiedź, odwołanie, ale będzie ...

    Konferencja LIVE - zapowiedź, odwołanie, ale będzie ...
    Lekka przerwa już za nami. Wracamy do regularnego nagrywania. Nie było nas tak długo, że nie zdążyliśmy zapowiedzieć naszej konferencji, a już musieliśmy ją przełożyć...
    Rozmawiamy na temat konferencji:

    - jakie są założenia?
    - jaki będzie format?
    - kto ma przyjechać
    - dlaczego postanowiliśmy przełożyć?

    Konferencja to temat, który chodził nam po głowie od dobrych 3 lat. W końcu wszystko zaczęło się krystalizować i mocno zabraliśmy się do pracy. Wszystko szło pięknie, do momentu aż Ukraina nie została zaatakowana...

    Zapraszamy do rozmowy i szerszego kontekstu tworzenia konferencji.

    TRANSCRIPT: dc10b815fc184e18b8efb72431323c31

    From React To SvelteKit

    From React To SvelteKit

    In this episode of Syntax, Scott talks with Wes about moving Level Up Tutorials from React to SvelteKit — why he did it, how, benefits, things to watch out for, and more!

    Prismic - Sponsor

    Prismic is a Headless CMS that makes it easy to build website pages as a set of components. Break pages into sections of components using React, Vue, or whatever you like. Make corresponding Slices in Prismic. Start building pages dynamically in minutes. Get started at prismic.io/syntax.

    Sentry - Sponsor

    If you want to know what’s happening with your code, track errors and monitor performance with Sentry. Sentry’s Application Monitoring platform helps developers see performance issues, fix errors faster, and optimize their code health. Cut your time on error resolution from hours to minutes. It works with any language and integrates with dozens of other services. Syntax listeners new to Sentry can get two months for free by visiting Sentry.io and using the coupon code TASTYTREAT during sign up.

    Cloudinary - Sponsor

    Cloudinary is the best way to manage images and videos in the cloud. Edit and transform for any use case, from performance to personalization, using Cloudinary’s APIs, SDKs, widgets, and integrations.

    Show Notes

    07:28 - Thoughts

    • Apples to oranges, so unfortunately, no super legit ability to compare.
      • SvelteKit isn’t analogous with a custom React setup that uses CSR
        • SSR is usually going to be faster - we can ship less JS
        • Some big things changed beyond React → SvelteKit
        • HLS starts grabbing chunks immediately, so it’s hard to get accurate load time and transfer.
    • Whole conversion took a couple of months.
    • Hardest part was making UI choices and changes, straight up converting components one by one wasn’t actually that tough

    16:14 - Converting React components to Svelte

    • useState becomes just a straight-up variable
    • Graphql calls were hooks now just imported generated functions
    • Remove extranous fragments
    • Convert {things && } to {#if thing}{/if}
    •  becomes 

    24:06 - Spark joys

    • State
      • Our checkout flow became way more transparent, way easier with Svelte stores
    • Render flow
      • Was never something we needed to really think about. Didn’t think about memoizing, or worrying about too many renders down the line, just never needed to
    • Overall developer experience
      • It’s honestly a joy to work in and I don’t want to go back
    • Making a library
    • Creating a sitemap was extremely easy, because of server-side routes. file.returnformat.ts ie sitemap.xml.ts
    • CSS without a css-in-js library for scoping is a dream. CSS props are now 100% via CSS variables using the https://svelte.dev/docs#style_props
    • Animations are all done with Svelte’s internal animations lib

    32:45 - Hosting

    • adapter-node
    • Hosted on render.com as a straight-up node process $7/m for more than enough RAM and CPU,
    • Lots of other options for static, Vercel, workers whatever, I like having just a straight-up node app you can host anywhere

    35:50 - Things to do

    • Admin tools

    37:00 - Challenges

    • ESM is not always smooth sailin
      • Import has from ‘lodash/has’ didn’t working in dev, but import has from ‘lodash/has.js’ didn’t work in prod.
        • Solution was to use lodash.has as the dependency
        • Apollo included all React as a dep unless you import from @core
    • TS is great, but there was once where I wanted to define the entire props ts object for a spread prop, but was not possible
    • Drag animations

    Cloudinary

    42:46 - Wes’ questions

    • What about the ecosystem?
    • What about forms + DOM data?
    • Serverless functions?
    • Do you always bind to state? Or just access directly?
     formData = writable({   title: "yo" })  {$formData.title}    

    Links

    ××× SIIIIICK ××× PIIIICKS ×××

    Shameless Plugs

    Tweet us your tasty treats!