Logo

    808: The Future of JavaScript Frameworks × Building Auth × DB Design Tips, and more!

    enAugust 14, 2024
    What may encourage developers to switch to Solid framework?
    Why is building your own authentication system important?
    What are best practices for handling access tokens?
    How does passing JSX children benefit React components?
    Why is it possible to use only vanilla JS for web apps?

    Podcast Summary

    • React server components, JSX frameworksThe emergence of React server components could lead to a shift in popularity towards JSX-based frameworks like Solid, as developers can reuse existing codebase.

      The JavaScript framework landscape is expected to see some evolution in the coming years, with React server components potentially leading to some framework shifts. According to Scott, the emergence of React server components may encourage developers to consider moving to frameworks that support JSX, such as Solid, as they can reuse a significant portion of their existing codebase. This trend could result in a gradual shift in popularity for these frameworks. Additionally, building your own authentication and managing API access are crucial aspects of application development. It's essential to have reliable tools to ensure bug-free software and stay on top of potential regressions. Scott shared his experience with using Century, a service that allows developers to mark bugs as resolved and set them aside, only to have them resurface later. Overall, the discussion highlighted the importance of staying informed about new framework developments and adopting tools to streamline development processes.

    • Future of front-end frameworksReact, Feeling Kit, Solid, and Astro are the future front-end frameworks with unique strengths. Solid, a React alternative, is expected to gain popularity due to its transferable skills and compiled language benefits. Web components will take over more elements in web development, and Caddy can be used alongside modern frameworks for efficient local development.

      The future of front-end development frameworks includes React, Feeling Kit, Solid, and Astro, each with their unique strengths. Solid, in particular, is expected to gain popularity due to its transferable skills from the React world and the benefits of compiled languages. Web components are also predicted to take over more elements in web development, providing pre-built functional components for easy integration. Caddy, a service for local development, can be used alongside modern frameworks like SvelteKit and even Vite development server, making development more efficient by proxying multiple servers through one clean domain name.

    • Browser securityUsing unique domains and SSL certificates for each application and proxying requests from the front end to the backend can enhance security, caching, and speed, and prevent issues with cookies, local storage, and secure contexts.

      Having unique domains and SSL certificates for each application, instead of using localhost, can help prevent issues with cookies, local storage, and secure contexts in browsers like Safari. Additionally, proxying requests from the front end to the backend, rather than directly to third-party resources, can improve security, caching, and speed, while also avoiding potential rate limiting by IP address. Regarding apparel, the amazing t-shirts mentioned, including the "webmaster" and "blazing fast" designs, can be obtained from Scott's merchandise store, which is a separate topic from the technical discussion.

    • Sentry merchandiseSentry sells unique merchandise that adds value beyond their software offerings, with proceeds going towards open-source projects and popular items including limited-edition shirts and innovative screwdrivers.

      Sentry, a software intelligence company, not only offers top-notch software solutions but also sells merchandise through their online store, sentry.shop. The merchandise includes limited-edition items like the Webmaster T-shirt, which has sold out twice. Sentry's merchandise is not just for tech enthusiasts or those involved in specific activities like skateboarding or basketball; it also serves as "background fodder" that adds a unique touch to any setup, making for interesting conversations during meetings. The Blazing Fast shirt, with its full-color, full-print design, is a popular item despite its high production cost. Sentry's merchandise sales don't aim to generate a profit, with the proceeds going towards open-source projects. In the tech world, a screwdriver recommendation was also discussed, with the Pick Quick 6-Pack Plus, a Canadian product, being highly recommended due to its innovative design that keeps bits organized in the handle. The Linus Tech Tips screwdriver, which is ratcheting, is also on Scott's wishlist. Overall, Sentry's merchandise and the Pick Quick screwdriver recommendation demonstrate the company's dedication to providing value beyond their core offerings.

    • Database design relationshipsUnderstand one-to-one, one-to-many, and many-to-many relationships for effective database design. Nesting data in MongoDB can create new tables, while ORMs handle complexities in relational databases. Create more tables instead of nesting for easier querying and filtering. Add 'created_at' and 'updated_at' fields for tracking changes.

      Effective database design is crucial for the success of a web application, and it involves carefully considering relationships between data and setting up tables accordingly. The speakers, who have experience with both MongoDB and relational databases, emphasized the importance of understanding one-to-one, one-to-many, and many-to-many relationships. In MongoDB, nesting data can lead to creating new tables, while in relational databases, ORMs can handle the complexities. However, they recommended erring on the side of creating more tables instead of nesting data to make querying and filtering easier. Additionally, creating "created_at" and "updated_at" fields from the start can be helpful. While they are not experts in database design, they suggested taking the time to strategize and research the topic further.

    • Vanilla JS web appsComplex web apps can be built using only vanilla JS, HTML, and CSS, but templates, data loading, and server-side logic are still necessary components of web development.

      While frameworks can provide significant benefits for web development projects, they are not always necessary. Front End Masters, a well-known educational platform, builds their entire platform using only vanilla JS, HTML, and CSS, with just a small dependency on a rendering package from the lit framework. This shows that it's possible to create complex web applications without using popular frameworks like React or Rails. However, it's essential to understand that templates, data loading, and server-side logic are still necessary components of web development. For those looking to expand their skillset and build a login system as a learning exercise, the choice of tech stack is less important. React is a great option for the front end, while Hapi or Express can handle the back end routing. While it's tempting to use pre-built solutions like Auth0 or Clerk, the experience of building your own auth system from scratch can be invaluable for understanding the underlying concepts. When it comes to choosing a database, there are various options, including SQLite, Drizzle, and PostgreSQL. Ultimately, the choice depends on personal preference and the specific requirements of the project. The key is to keep things simple and focus on learning the fundamentals of web development.

    • Authentication best practicesFollowing best practices like salting and hashing passwords, secure storage for tokens, and preferring passing children as props in React components simplifies building an authentication system.

      Building your own authentication system can seem daunting due to security concerns, but as long as you follow best practices like salting and hashing passwords, using secure storage for access tokens and refresh tokens, it's a simpler process than you might think. Another key point discussed was the preference for passing JSX children versus named props in React components. The consensus was that passing children as the main content of a component is the preferred approach as it makes the component-child relationship clearer and more intuitive. However, it's important to note that different use cases may call for different approaches. For instance, if a component needs to receive multiple components as children, the lack of a slots concept in JSX can make it harder to read. Overall, the conversation highlighted the importance of understanding the fundamentals of authentication and React component props to build effective and scalable applications.

    • Component passing in JSXPassing components as props and including them as sub-components have their own advantages. Passing icons as separate props for third-party components and using SVG sprites for frequently used and static icons can make tree shaking easier in larger projects.

      When dealing with components in JavaScript and JSX, it's essential to understand how to effectively pass components as props versus including them as sub-components. The speaker prefers to include icons within buttons as sub-components when possible, but when using third-party components, it's necessary to pass icons as separate props. Additionally, the speaker mentioned that for larger projects, passing components as props can make tree shaking more straightforward. However, if icons are being used frequently and statically, it might be more efficient to use SVG sprites instead. Another interesting topic that came up was the use of silicone earplugs for better comfort and longevity compared to traditional foam earplugs. The speaker shared his personal experience with these earplugs and even recommended a specific brand, Loop, which he found to be effective. Lastly, the speaker made a humorous comment about his habit of buying multiple sets of items, leading to a lack of completeness in each set. Overall, the discussion covered a range of topics, from component passing in JSX to personal recommendations for earplugs.

    • Hose rack for electric carsUsing a hose rack like 'Gecko's Toes' keeps electric car charging cords neatly organized and easily accessible, saving space and preventing cord clutter.

      Electric car owners often deal with long charging cords that can be difficult to manage. A simple solution for this issue is using a hose rack, such as "Gecko's Toes," to keep the cord neatly organized and easily accessible. This not only saves space but also prevents the cord from getting in the way. Additionally, the hosts discussed potential projects for Century Hack Week, including creating a MIDI slider that controls a virtual hand for talking during podcasts or setting up a nerf gun to shoot when an uncaught exception occurs. These ideas showcase the hosts' creativity and problem-solving skills. Remember to check out their YouTube channel, Syntax FM, for more innovative discussions and projects.

    Recent Episodes from Syntax - Tasty Web Development Treats

    821: Is Tauri the Electron Killer?

    821: Is Tauri the Electron Killer?

    In this episode of Syntax, Wes and Scott talk with Daniel Thompson-Yvetot about Tauri. They dive into what Tauri is, the motivations behind its development, its open-source ecosystem, use cases, and more.

    Show Notes

    Links

    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

    820: Potluck: 8000 ESLint Errors × HTML Time Tag × 7 Meg React Bundle × CSS Modules

    820: Potluck: 8000 ESLint Errors × HTML Time Tag × 7 Meg React Bundle × CSS Modules

    In this Potluck episode of Syntax, Scott and Wes answer your questions, from weighing the trade-offs between numerous small npm packages and a few larger ones to managing the challenges of work-from-home life. They also explore CSS modules, strategies for shrinking JavaScript bundles, and even where to find the best replacement ear cups for your headphones.

    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

    819: Fun & Profitable Side Projects for Developers

    819: Fun & Profitable Side Projects for Developers

    Scott and Wes serve up a hasty discussion on side projects, sharing their latest Hack Week experiments and tips on how to turn fun ideas into profitable ventures. They cover everything from finding inspiration to choosing the right tech, and even offer advice on how to finish what you start.

    Show Notes

    • 00:00 Welcome to Syntax!
    • 01:11 Brought to you by Sentry.io.
    • 01:27 Wes’ Hack Week project.
    • 02:30 Scott’s Hack Week project.
    • 04:18 Where do you get ideas for side projects?
    • 09:22 End goals for a side project.
    • 14:47 Other end goals.
    • 16:45 What tech should you use?
    • 20:34 Keeping notes.
    • 23:14 Finishing side projects.
    • 26:39 Shameless Plugisode!

    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

    818: CJ × Hosting Meetups - Lunch and Learn

    818: CJ × Hosting Meetups - Lunch and Learn

    In this episode of Syntax, Wes and Scott talk with CJ Reynolds about the resurgence of meetups in a post-COVID world. They discuss the benefits of attending and speaking at meetups, and the logistics of organizing them. CJ also shares his experiences running the DenverScript meetup, including sourcing speakers, finding venues, and ensuring a welcoming community.

    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

    817: You Need These 30 Apps - PART 1

    817: You Need These 30 Apps - PART 1

    Scott and Wes kick off part 1 of a 2-part series, breaking down 30 must-have apps for web developers and productivity enthusiasts. From file management tools to media utilities, they cover everything you need to supercharge your workflow.

    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

    816: Why Your CSS Sucks

    816: Why Your CSS Sucks

    Scott and Wes break down why your CSS might suck—from misusing specificity to not leveraging CSS variables. Tune in as they dive into common pitfalls that are making your stylesheets a hot mess.

    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

    815: Deno 2 with Ryan Dahl

    815: Deno 2 with Ryan Dahl

    In this episode of Syntax, Wes and Scott talk with Ryan Dahl about Deno 2.0, its new features and use of web standards, and how it seamlessly integrates with popular frameworks like Next.js. Ryan shares insights on the motivations behind Deno’s creation, its emphasis on simplicity and security, and offers his take on the evolving JavaScript ecosystem.

    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

    814: Fundamentals: HTML

    814: Fundamentals: HTML

    In this episode of Syntax, Wes and Scott talk about HTML fundamentals — from basic structure and semantics to practical tips for better accessibility and SEO. They also discuss the difference between block and inline elements, form functionalities, HTML5 elements like dialog and canvas, and more.

    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

    813: CSS: Scroll Driven Animations

    813: CSS: Scroll Driven Animations

    In this episode of Syntax, Wes and Scott talk about CSS’ new scroll-driven animations, its implementation, uses, and potential pitfalls. They also discuss animation-timeline and animation-range, and how they can be utilized to control animations based on scroll positions.

    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

    812: CSS 4, 5, and 6! With Google’s Una and Adam

    812: CSS 4, 5, and 6! With Google’s Una and Adam

    In this episode of Syntax, Wes and Scott talk with Una Kravetz and Adam Argyle from Google Chrome about the evolution of CSS, new features, and the push toward more advanced UI capabilities on the web. They discuss the introduction of CSS versioning, exciting new properties like text-box-trim, state queries, and scroll state functionalities, select, and more!

    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