Logo
    Search

    745: Modern JS Toolchains (Biome, Oxc + More)

    enMarch 20, 2024

    Podcast Summary

    • Exploring Modern JavaScript Tooling: Improving Development Speed and ExperienceNew JavaScript tools can lead to faster build processes, easier setup, and a more efficient and enjoyable development experience. While initial setup may be tricky, the benefits outweigh the effort, and it's worth exploring new tools to improve your workflow.

      Modern JavaScript tooling is constantly evolving, and while it may seem overwhelming with new linters, compilers, transpilers, formatters, and bundlers, these tools are essential for improving both development speed and experience. The speakers discussed the importance of these tools and shared their experiences, highlighting how new tools can lead to significant improvements, such as faster build processes and easier setup. They emphasized that while the initial setup may be trickier, the benefits outweigh the effort, and by the time the masses adopt them, they become simple to use. The speakers also encouraged listeners to explore new tools and not be afraid to try something new that could potentially make their development process more efficient and enjoyable. Additionally, they recommended checking out the Syntax YouTube channel for in-depth content on various topics related to JavaScript tooling.

    • Modern JavaScript tooling and lintersLinters like ESLint help catch mistakes, improve code quality, and make development more efficient with simpler configurations and faster build times.

      Modern JavaScript tooling is making development easier and more efficient with simpler configurations and faster build times. These tools make your code smaller, look nicer, run better, and make the development process easier. Linters are a crucial part of this tooling landscape, helping catch potential mistakes and improve code quality. ESLint, in particular, has been popular due to its wide compatibility with different programming languages and its large community of rules and plugins. Despite some config pain, linters have been a game-changer for many developers, including the speaker, who has become a better coder due to the feedback provided. Overall, the trend is towards simpler, more effective tooling that makes development a more enjoyable experience.

    • Using linting tools for code quality improvementsLinting tools help prevent potential issues and improve code consistency, despite the occasional extra hassle.

      Using linting tools in JavaScript development can lead to significant improvements in code quality and consistency, even if it may seem like an extra hassle at times. Shadowing variables, a common issue flagged by linters, can potentially lead to unexpected behavior if not handled properly. Turning off linting rules without understanding their purpose can lead to writing unnecessary code just to appease the tool, rather than focusing on the user experience. Compilers and transpilers, while often used interchangeably, serve the purpose of converting code into a format that can be executed. Compilers can also modify the code in a way that changes how it runs, as seen in frameworks like Svelte. Formatters, on the other hand, are used to make the code look visually appealing. While it's possible to turn off rules or configure the tools to suit your needs, it's important to remember that these tools can provide valuable insights and help prevent potential issues down the line. Instead of dismissing them outright, consider embracing them and learning from the rules they enforce.

    • JavaScript Development Tools: Formatting, Linters, and BundlersTools like Prettier, Acorn, Webpack, Vite, Parcel, Rollup, and Babel streamline JavaScript development by standardizing formatting, analyzing code, and bundling assets. Macros extend their functionality.

      Formatting and linters have become essential tools for JavaScript developers, thanks to the rise of opinionated tools like Prettier. Prettier standardizes code formatting by automatically adjusting the code to a widely agreed-upon style, reducing the need for manual indentation and nitpicking over coding styles. Prettier's popularity has led to a more consistent JavaScript coding community. Tokenizers and parsers, like Acorn, are crucial for formatters and linters to function by splitting up the code for analysis. Bundlers, such as Webpack, Vite, Parcel, and Rollup, handle various tasks like development servers, transpiling, compiling, building, tree shaking, and even integrating linters and formatters. Macros, supported by modern tools like Parcel, represent the difference between compilers and transpilers. Compilers, like Babel, transform code into a different language, while transpilers, like Babel with presets, convert code into a compatible version for a specific runtime environment. Macros allow developers to extend the functionality of the compiler or transpiler itself. In summary, the use of formatters, linters, tokenizers, parsers, and bundlers has streamlined the JavaScript development process, ensuring consistent code and reducing the need for manual formatting and nitpicking over coding styles. Macros provide additional functionality, blurring the lines between compilers and transpilers.

    • Using Macros and Biome for Performance Improvement in JavaScriptMacros can pre-run and store the results of specific functions for performance improvement, while Biome is a fast formatter and linting tool for JavaScript that can save time in large projects

      Macros in JavaScript can help improve performance by pre-running and storing the output of specific functions or computations, eliminating the need for repeated generation. This can be particularly useful for complex functions or large datasets that don't need to be regenerated every time. Macros were discussed in the context of a course platform, where the creation of different team packages was a time-consuming process. By using macros, this process could be optimized and the results could be stored for later use. Another tool mentioned was Biome, which is a fast formatter and linter for JavaScript. Biome is known for its speed, reportedly being 35 times faster than other linting tools. However, it's important to note that performance benchmarks should be taken with a grain of salt. Biome has some caveats, such as not being able to format or lint everything in an application like Prettier and ESLint can. It also doesn't support HTML or CSS parsing yet. Despite these limitations, Biome can be a valuable addition to a project for its speed and ability to handle JavaScript code. In conclusion, macros and tools like Biome can help improve development efficiency and performance in JavaScript projects. Macros can pre-run and store the results of specific functions, while tools like Biome can format and lint code quickly. Understanding how to use these tools effectively can lead to significant time savings and improved productivity.

    • Tools for simplifying development with all-in-one solutionsNew tools like Biome and SvelteKit offer efficient processing and eliminate the need for multiple tools, but setting them up can be a challenge and they may not yet fully replace existing tools like Prettier.

      There's ongoing development of tools like Biome and various parsers for JavaScript, HTML, and CSS that aim to simplify and streamline the development process by providing all-in-one solutions. These tools, such as SvelteKit, can help eliminate the need for multiple piecemeal tools and offer more efficient processing, potentially saving battery life and improving overall performance. However, these tools may not yet fully replace existing tools like Prettier, and setting them up can be a challenge. For instance, getting Versus Code to use the proper formatter for different files can be a hassle, especially when dealing with globals. Tools like Biome, which supports various frameworks like Vue, Svelte, and Astro with some caveats, are promising and continually improving. Additionally, older tools like Prettier, while not slowing down the development process per se, can consume significant resources and contribute to battery drain. Therefore, the pursuit of more efficient tools is a worthwhile endeavor for developers looking to optimize their workflow and extend the life of their computers.

    • Using fast development tools for large-scale projectsTools like Biome, 0xc help reduce time and cost in large-scale projects by improving development speed and productivity, but have limitations like lack of support for all features of JavaScript counterparts.

      The use of fast and efficient development tools like Biome, 0xc, and others is crucial for large-scale projects with extensive codebases, as they significantly reduce the time and cost spent on tasks like linting and dependency resolution. This is particularly important for organizations like Shopify, where the codebase is massive and the need for quick turnaround times is high. However, it's important to note that these tools have their limitations. For instance, while Biome and 0xc offer impressive performance, they may not yet support all the features of their JavaScript counterparts, such as plug-ins or HTML support. This means that developers may still need to use JavaScript tools alongside these new Rust-based alternatives. Overall, the adoption of these tools can lead to substantial improvements in development speed, cost savings, and overall productivity.

    • Exploring the latest tools and trends in the JavaScript ecosystemUnderstanding the latest tools and trends in the JavaScript ecosystem, like GitHub actions, Dino formatter, ES build, Rollup, and TypeScript, is crucial for efficient development and staying competitive in web development.

      The JavaScript ecosystem is constantly evolving, with new tools and technologies emerging to address the needs of developers. Shopify's high volume of pull requests underscores the importance of speed and efficiency in development workflows. GitHub actions may present challenges due to limited free minutes, leading some to speculate that this is a deliberate strategy to encourage purchases. Another topic discussed was the Dino formatter, a lesser-known formatter for Deno. While it didn't gain widespread adoption, Deno's approach of baking tools into the language itself is noteworthy, as seen with Rust. ES build is a new bundler gaining popularity, but Rollup, a Rust-based bundler, is poised to take its place in Vite. This trend of integrating tools into the language or platform itself is a common theme, making development faster and more streamlined. TypeScript, a popular superset of JavaScript, was also mentioned as an essential part of the modern JavaScript landscape. Many tools support TypeScript, and the ability to transpile it to JavaScript is crucial for maintaining compatibility with a wide range of browsers and platforms. The discussion highlighted the importance of understanding the underlying technologies and trends in the JavaScript ecosystem to make informed decisions and stay competitive in the ever-evolving world of web development.

    • TypeScript's type checking sets it apart from JavaScript bundlersTypeScript ensures code type safety during development, while JavaScript bundlers like Vite only compile and transpile code.

      While tools like Vite can compile and transpile TypeScript into JavaScript, they don't provide type checking. TypeScript's type checking feature ensures code passes all type checks and maintains type safety. However, there isn't a widely-used, fast type checker for JavaScript. One promising project is Esno, which provides better error messages through static analysis, but it doesn't support most TypeScript features yet. Beyond just bundlers, there are other projects that offer broader solutions for developers. For instance, Vite is a dev server that handles various tasks, while SvelteKit manages the entire request-response cycle. Unjs is another project that offers a multitude of features, including handling dev servers, WebSocket support, and powering Nuxt.js. It's important to keep an eye on these projects as they can significantly streamline the development process.

    • New tools like Lightning CSS and Esbuild offer faster processing using Rust and GoNew Rust and Go tools for CSS and JavaScript offer improved performance, adopted by popular frameworks

      There are new and upcoming tools, such as Lightning CSS and Esbuild, which are written in languages other than JavaScript, specifically Rust and Go, for handling CSS and JavaScript tasks respectively. These tools offer faster processing and are being adopted by popular frameworks like Tailwind. The trend of writing tools in languages other than JavaScript is becoming more common, and while JavaScript can handle such tasks, there is evidence that other languages can offer better performance. Additionally, there are interesting YouTube channels like "The Bad Movie Bible" that provide deep dives into various film genres and production history. As for a personal recommendation, the speaker suggests checking out the "Shinobi Gedan" video on the channel, which explores the 1980s ninja craze in cinema. Lastly, the speaker shares their excitement about acquiring the Japanese barbecue sauce, Bakkens, which is a soy sauce and barbecue sauce hybrid, and can be used on various dishes. They highly recommend trying it out.

    • Discover Bakken Sauce: A Versatile and Delicious CondimentBakken Sauce is a sweet and savory teriyaki or soy sauce worth trying on various dishes. Check out their cool website for purchases and merchandise, and follow them on social media.

      Bakken Sauce is a versatile and delicious condiment worth trying. The speaker highly recommends it for those who enjoy sauces with a sweet and savory teriyaki or soy flavor. Bakken Sauce can be used on various dishes, including salmon and stir fries. The speaker also appreciates the brand's cool and nicely designed website, where you can purchase the sauce or even merchandise like t-shirts and hoodies featuring an octopus logo. The speaker also encourages following Bakken Sauce on social media and checking out their YouTube channel. While the speaker is based in Canada, they note that Bakken Sauce may not be available there, but they suggest trying it out if you have the opportunity. Overall, Bakken Sauce is a must-try for sauce lovers and a great addition to any meal.

    Recent Episodes from Syntax - Tasty Web Development Treats

    790: State of JS 2023 Reactions

    790: State of JS 2023 Reactions

    Scott and Wes dive into the 2023 State of JavaScript survey, breaking down the latest trends and pain points in front-end frameworks, build tools, and JavaScript runtimes. Tune in for their hot takes and insights on what’s shaping the JavaScript landscape this year!

    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

    789: Do More With AI - LLMs With Big Token Counts

    789: Do More With AI - LLMs With Big Token Counts

    Join Scott and CJ as they dive into the fascinating world of AI, exploring topics from LLM token sizes and context windows to understanding input length. They discuss practical use cases and share insights on how web developers can leverage larger token counts to maximize the potential of AI and LLMs.

    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

    CJ: X Instagram YouTube TwitchTV

    Randy: X Instagram YouTube Threads

    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

    Related Episodes

    Hasty Treat - TypeScript Compilers and Build Tools

    Hasty Treat - TypeScript Compilers and Build Tools

    In this Hasty Treat, Scott and Wes talk about the differences between compilers and build tools in TypeScript.

    Sanity - Sponsor

    Sanity.io is a real-time headless CMS with a fully customizable Content Studio built in React. Get a Sanity powered site up and running in minutes at sanity.io/create. Get an awesome supercharged free developer plan on sanity.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.

    Show Notes

    03:38 - What is a TypeScript compiler?

    07:49 - Babel

    • Transpiler
    • It doesn’t do typechecking
    • New JS features that aren’t in TypeScript yet

    10:22 - SWC

    13:03 - Deno

    13:36 - Surcase

    14:46 - ESBuild

    • Compiles, but doesn’t do any type checking
    • Fastest

    17:39 - What about bundlers?

    • Parcel
    • Snowpack
    • Webpack
    • ESBuild
    • When might you still need a bundler?
      • To handle different types of files that are non-standard
        • Like importing CSS and images
    • Treeshaking
    • Smaller bundle files
      • Typescript can concatenate to a single file, or all .js files, but smaller / smarter bundles still need a tool for that
    • Polyfills
      • Typescript does convert to syntax, but will not polyfill features
      • Something like Promise
        • Syntax can be transpiled to old code
        • Methods like allSettled aren’t

    Links

    Tweet us your tasty treats!

    Style guides & Rules - jak ogarnąć codebase?

    Style guides & Rules - jak ogarnąć codebase?
    Znowu bierzymy na tapet książkę Software Engineering at Google. Tym razem omawiamy temat zasad i utrzymywania porządku w codebase. Poruszamy następujące kwestie:
    • jak podejść do style guide?
    • czy można utrzymać ten sam styl w wielu projektach?
    • kto odpowiada za utrzymywanie porządku?
    • czy automatyzacja to jedyne rozwiązanie?
    • ten sam czy inny styl dla kolejnego projektu?
    Zapraszamy do wysłuchania rozmowy 💪

    707: What happened in JS, CSS And Web Dev in 2023? 2023 Predictions Results!

    707: What happened in JS, CSS And Web Dev in 2023? 2023 Predictions Results!

    In this episode of Syntax, Wes and Scott review their 2023 predictions and see how they did on ideas like Deno getting hotter, new JS APIs, WASM, Houdini, CSS Container Queries, 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

    Folge 74 - wolkenkit mit Golo Roden

    Folge 74 - wolkenkit mit Golo Roden

    Mit dem Gast in dieser Folge sprachen wir bereits in Folge 57 über die Konzepte von Domain-driven Design (DDD), Event Sourcing und Command-Query-Responsibility-Segregation (CQRS). Vereint werden vor allem Event Sourcing und CQRS in wolkenkit, einem Backend-Framework, das auf Node.js basiert. Es ermöglicht, mit JavaScript oder TypeScript skalierbare und verteilte Web- und Cloud-APIs zu erstellen. Abgerundet wird es durch die einfache Möglichkeit der Integration von DDD zur Modellierung der Projekte.
    Auf der Webseite von wolkenkit gibt es weiterführende Informationen zum Framework. Wenn ihr neugierig geworden seid, könnt ihr euch hier die Doku von V3 ansehen und zum Open Source Projekt beitragen. Auf Slack könnt ihr der wolkenkit-Community beitreten und euch direkt integrieren.

    Picks of the Day 

    • Golo spielt gern alte Retro-Spiele mit seinen Kindern, beispielsweise Monkey Island. Grafisch zwar wenig anspruchsvoll, aber dafür narrativ Gold wert – und genau deswegen empfehlenswert für Kinder. 
    • Dennis geht gern mit der Einkaufslisten-App Bring! in den Supermarkt. Die super smarte App ist synchron mit mehreren Personen nutzbar und ordnet Produkte automatisch der Abteilung im Geschäft zu. 
    • Jojo empfiehlt die Auseinandersetzung mit der Netflix-Doku “Das Dilemma der Sozialen Medien”, in der ehemalige MitarbeiterInnen großer Firmen über die Entwicklung sozialer Medien im Vergleich zur ursprünglichen Intention sprechen.  

    Schreibt uns!
    Schickt uns eure Themenwünsche und euer Feedback.
    podcast@programmier.bar

    Folgt uns!
    Bleibt auf dem Laufenden über zukünftige Folgen und virtuelle Meetups und beteiligt euch an Community-Diskussionen.
    Twitter
    Instagram
    Facebook
    Meetup
    YouTube

    Musik: Hanimo