#builders and founders

Subscribe
Builders and Founders are terms used to describe people who create something from nothing. In the context of JavaScript, it would refer to those who create software or applications using the language. These people could be developers, coders, engineers, or entrepreneurs. They are responsible for taking ideas from concept to completion, often working with teams to bring a product to market.
The Epic Stack
React Summit US 2023React Summit US 2023
21 min
The Epic Stack
Top Content
Watch video: The Epic Stack
This Talk introduces the Epic Stack, a project starter and reference for modern web development. It emphasizes that the choice of tools is not as important as we think and that any tool can be fine. The Epic Stack aims to provide a limited set of services and common use cases, with a focus on adaptability and ease of swapping out tools. It incorporates technologies like Remix, React, Fly to I.O, Grafana, and Sentry. The Epic Web Dev offers free materials and workshops to gain a solid understanding of the Epic Stack.
The Rise of the AI Engineer
React Summit US 2023React Summit US 2023
30 min
The Rise of the AI Engineer
Watch video: The Rise of the AI Engineer
The rise of AI engineers is driven by the demand for AI and the emergence of ML research and engineering organizations. Start-ups are leveraging AI through APIs, resulting in a time-to-market advantage. The future of AI engineering holds promising results, with a focus on AI UX and the role of AI agents. Equity in AI and the central problems of AI engineering require collective efforts to address. The day-to-day life of an AI engineer involves working on products or infrastructure and dealing with specialties and tools specific to the field.
Gateway to React: The React.dev Story
React Summit US 2023React Summit US 2023
32 min
Gateway to React: The React.dev Story
Watch video: Gateway to React: The React.dev Story
The Talk discusses the journey of improving React and React Native documentation, including the addition of interactive code sandboxes and visual content. The focus was on creating a more accessible and engaging learning experience for developers. The Talk also emphasizes the importance of building a human API through well-designed documentation. It provides tips for building effective documentation sites and highlights the benefits of contributing to open source projects. The potential impact of AI on React development is mentioned, with the recognition that human engineers are still essential.
Opt in Design – The New Era of React Frameworks
React Advanced Conference 2023React Advanced Conference 2023
23 min
Opt in Design – The New Era of React Frameworks
Watch video: Opt in Design – The New Era of React Frameworks
This Talk discusses opt-in design in web development, focusing on API design and understanding good defaults. Opt-in design allows developers to start with minimal tools and gradually add complexity as needed. The principles of opt-in design include finding the lowest common denominator, making complexity easy to add, and prioritizing the user experience. The Talk also explores the concept of opt-in design in React and Astro, as well as the comparison between React and Solid frameworks. Server rendering and streaming in React are highlighted, along with the importance of suspense boundaries for a better user experience.
React Compiler - Understanding Idiomatic React (React Forget)
React Advanced Conference 2023React Advanced Conference 2023
33 min
React Compiler - Understanding Idiomatic React (React Forget)
Top Content
Watch video: React Compiler - Understanding Idiomatic React (React Forget)
Joe Savona
Mofei Zhang
2 authors
The Talk discusses React Forget, a compiler built at Meta that aims to optimize client-side React development. It explores the use of memoization to improve performance and the vision of Forget to automatically determine dependencies at build time. Forget is named with an F-word pun and has the potential to optimize server builds and enable dead code elimination. The team plans to make Forget open-source and is focused on ensuring its quality before release.
Raising the Bar: Our Journey Making React Native a Preferred Choice
React Advanced Conference 2023React Advanced Conference 2023
29 min
Raising the Bar: Our Journey Making React Native a Preferred Choice
Watch video: Raising the Bar: Our Journey Making React Native a Preferred Choice
This Talk discusses Rack Native at Microsoft and the efforts to improve code integration, developer experience, and leadership goals. The goal is to extend Rack Native to any app, utilize web code, and increase developer velocity. Implementing web APIs for React Native is being explored, as well as collaboration with Meta. The ultimate aim is to make web code into universal code and enable developers to write code once and have it work on all platforms.
Building the AI for Athena Crisis
JS GameDev Summit 2023JS GameDev Summit 2023
37 min
Building the AI for Athena Crisis
Join Christoph from Nakazawa Tech in building the AI for Athena Crisis, a game where the AI performs actions just like a player. Learn about the importance of abstractions, primitives, and search algorithms in building an AI for a video game. Explore the architecture of Athena Crisis, which uses immutable persistent data structures and optimistic updates. Discover how to implement AI behaviors and create a class for the AI. Find out how to analyze units, assign weights, and prioritize actions based on the game state. Consider the next steps in building the AI and explore the possibility of building an AI for a real-time strategy game.
Making Magic: Building a TypeScript-First Framework
TypeScript Congress 2023TypeScript Congress 2023
31 min
Making Magic: Building a TypeScript-First Framework
Top Content
Daniel Rowe discusses building a TypeScript-first framework at TypeScript Congress and shares his involvement in various projects. Nuxt is a progressive framework built on Vue.js, aiming to reduce friction and distraction for developers. It leverages TypeScript for inference and aims to be the source of truth for projects. Nuxt provides type safety and extensibility through integration with TypeScript. Migrating to TypeScript offers long-term maintenance benefits and can uncover hidden bugs. Nuxt focuses on improving existing tools and finds inspiration in frameworks like TRPC.
Video Editing in the Browser
React Summit 2023React Summit 2023
23 min
Video Editing in the Browser
Top Content
Watch video: Video Editing in the Browser
This Talk discusses the challenges of video editing in the browser and the limitations of existing tools. It explores image compression techniques, including Fourier transform and Huffman encoding, to reduce file sizes. The video codec and frame decoding process are explained, highlighting the importance of keyframes and delta frames. The performance bottleneck is identified as the codec, and the need for specialized hardware for efficient video editing is emphasized. The Talk concludes with a call to create a simplified API for video editing in the browser and the potential for AI-powered video editing.
How Not to Build a Video Game
React Summit 2023React Summit 2023
32 min
How Not to Build a Video Game
Watch video: How Not to Build a Video Game
The Talk showcases the development of a video game called Athena Crisis using web technologies like JavaScript, React, and CSS. The game is built from scratch and includes features like multiple game states, AI opponents, and map editing. It demonstrates the benefits of using CSS for game development, such as instant load times and smooth transitions. The Talk also discusses optimizing performance, supporting dark mode, and publishing the game to other platforms.
The New Next.js App Router
React Summit 2023React Summit 2023
27 min
The New Next.js App Router
Watch video: The New Next.js App Router
Today's Talk is about the Next.js App Router, which has evolved over the years and is now a core feature of Next.js. The Talk covers topics such as adding components, fetching remote data, and exploring layouts. It also discusses submitting form data, simplifying code, and reusing components. The App Router allows for coexistence with the existing pages router and enables data fetching at the layout level using React Server Components.
Speeding Up Your React App With Less JavaScript
React Summit 2023React Summit 2023
32 min
Speeding Up Your React App With Less JavaScript
Top Content
Watch video: Speeding Up Your React App With Less JavaScript
Mishko, the creator of Angular and AngularJS, discusses the challenges of website performance and JavaScript hydration. He explains the differences between client-side and server-side rendering and introduces Quik as a solution for efficient component hydration. Mishko demonstrates examples of state management and intercommunication using Quik. He highlights the performance benefits of using Quik with React and emphasizes the importance of reducing JavaScript size for better performance. Finally, he mentions the use of QUIC in both MPA and SPA applications for improved startup performance.
Building a Web-App: The Easy Path and the Performant Path. Why Are They Not the Same?
JSNation 2023JSNation 2023
31 min
Building a Web-App: The Easy Path and the Performant Path. Why Are They Not the Same?
Misko Havry introduces himself and discusses the impact of JavaScript on performance. The concepts of reconciliation, hydration, and resumability are explored, along with the importance of clean code and compiler optimization. The Talk includes demos of application components and showcases the power of code extraction. The QUIC framework is highlighted for its ability to optimize code loading and prioritize interactions. The service worker is used to selectively download components for improved performance. SEO and debugging in QUIC are also discussed, along with comparisons to other frameworks.
The Core of Turbopack Explained (Live Coding)
JSNation 2023JSNation 2023
29 min
The Core of Turbopack Explained (Live Coding)
Tobias Koppers introduces TurboPack and TurboEngine, addressing the limitations of Webpack. He demonstrates live coding to showcase the optimization of cache validation and build efficiency. The talk covers adding logging and memorization, optimizing execution and tracking dependencies, implementing invalidation and watcher, and storing and deleting invalidators. It also discusses incremental compilation, integration with other monorepo tools, error display, and the possibility of a plugin system for Toolpag. Lastly, the comparison with Bunn's Builder is mentioned.
SolidJS: Why All the Suspense?
JSNation 2023JSNation 2023
28 min
SolidJS: Why All the Suspense?
Top Content
Suspense is a mechanism for orchestrating asynchronous state changes in JavaScript frameworks. It ensures async consistency in UIs and helps avoid trust erosion and inconsistencies. Suspense boundaries are used to hoist data fetching and create consistency zones based on the user interface. They can handle loading states of multiple resources and control state loading in applications. Suspense can be used for transitions, providing a smoother user experience and allowing prioritization of important content.
Nuxt on the Edge
Vue.js London 2023Vue.js London 2023
30 min
Nuxt on the Edge
Nuxt is a web framework with many features including server-side rendering, client-side rendering, static site generation, edge site rendering, and more. The Edge is a limited environment running on CDN nodes, such as Cloudflare network. Database options on the Edge include Postgre with Neon, Versel on Neon, Superbase, MySQL with plan scale, HyperDB, and KV with redis and Cloudflare storage. The speaker demonstrates creating a demo with a votes table, handling API requests, adding authentication, saving votes, and displaying results. The roadmap to a full stack Nuxt 3 with an edge-first experience is in progress. Copilot is a helpful tool for developers. Integrating SSO with GitHub and improving the developer experience are important considerations for Nuxt 3.
Jotai Atoms Are Just Functions
React Day Berlin 2022React Day Berlin 2022
22 min
Jotai Atoms Are Just Functions
Top Content
State management in React is a highly discussed topic with many libraries and solutions. Jotai is a new library based on atoms, which represent pieces of state. Atoms in Jotai are used to define state without holding values and can be used for global, semi-global, or local states. Jotai atoms are reusable definitions that are independent from React and can be used without React in an experimental library called Jotajsx.
How Bun Makes Building React Apps Simpler & Faster
React Day Berlin 2022React Day Berlin 2022
9 min
How Bun Makes Building React Apps Simpler & Faster
BUN is a modern all-in-one JavaScript runtime environment that achieves new levels of performance. It includes BUN dev, a fast front-end dev server, BUN install, a speedy package manager, and BUN run, a fast package runner. BUN supports JSX, has optimized React server-side rendering, and offers hot module reloading on the server. The priorities for BUN include stability, node compatibility, documentation improvement, missing features in BUN install, AST plugin API, native Windows support, Bundler and Minifier optimization, and easier deployment to production. BUN's AST plugin API allows for bundle-time JavaScript execution and embedding code, potentially inspiring new frameworks.
Turbopack. Why? How? When? and the Vision...
React Day Berlin 2022React Day Berlin 2022
32 min
Turbopack. Why? How? When? and the Vision...
The Talk discusses TurboPack, a successor to Webpack, aiming to create a framework-independent, flexible, and extensible tool for the open-source community. It addresses performance challenges by integrating SWC into Next.js. The challenges with Next.js and Webpack include orchestration issues, backward compatibility constraints, and cache invalidation problems. TurboEngine and TurboPack provide constant performance in incremental builds, leveraging Rust's predictable performance and parallelism. The Talk also covers topics like dependency tracking, task graphs, cache invalidation, lazy asset graphs, and the integration of TurboPack with Next.js. The future plans involve reconfiguring Webpack and TurboEngine, moving computations to the cloud, providing insights into builds, and facilitating migration and integration with JavaScript projects.
SolidJS: Reactivity Unchained
JSNation 2022JSNation 2022
20 min
SolidJS: Reactivity Unchained
Solid.js is a declarative JavaScript library for building user interfaces that addresses performance optimization. It introduces fine-grained reactivity and avoids using a virtual DOM. The Talk explores rethinking performance and reactivity in web applications, understanding reactivity and primitives, and creating DOM elements and using JSX in Solid.js. It also covers rendering components, sharing state, and the advantages of fine-grained rendering and the reactive approach in Solid.js.
The Wind and the Waves: The formation of Framework Waves from the Epicenter
JSNation 2022JSNation 2022
19 min
The Wind and the Waves: The formation of Framework Waves from the Epicenter
Top Content
Our understanding of innovation is wrong. Innovations are not introduced by a single point of light. The story of who invented the computer is not linear. Many steps forward led to the development of the computer. Angular has shaped and influenced multiple JavaScript waves, and Angular v14 simplifies development with standalone components.
Webpack in 5 Years?
JSNation 2022JSNation 2022
26 min
Webpack in 5 Years?
Top Content
In the last 10 years, Webpack has shaped the way we develop web applications by introducing code splitting, co-locating style sheets and assets with JavaScript modules, and enabling bundling for server-side processing. Webpack's flexibility and large plugin system have also contributed to innovation in the ecosystem. The initial configuration for Webpack can be overwhelming, but it is necessary due to the complexity of modern web applications. In larger scale applications, there are performance problems in Webpack due to issues with garbage collection, leveraging multiple CPUs, and architectural limitations. Fixing problems in Webpack has trade-offs, but a rewrite could optimize architecture and fix performance issues.
From GraphQL Zero to GraphQL Hero with RedwoodJS
GraphQL Galaxy 2021GraphQL Galaxy 2021
32 min
From GraphQL Zero to GraphQL Hero with RedwoodJS
Top Content
Tom Pressenwurter introduces Redwood.js, a full stack app framework for building GraphQL APIs easily and maintainably. He demonstrates a Redwood.js application with a React-based front end and a Node.js API. Redwood.js offers a simplified folder structure and schema for organizing the application. It provides easy data manipulation and CRUD operations through GraphQL functions. Redwood.js allows for easy implementation of new queries and directives, including authentication and limiting access to data. It is a stable and production-ready framework that integrates well with other front-end technologies.
The Potential of AI-Powered Video Editing in Browsers
The Potential of AI-Powered Video Editing in Browsers
Article
Challenges with traditional video editing tools lacking AI advancements.Importance of image compression techniques in video editing.Role and function of video codecs in reducing video size.Understanding the complexities of video decoding and presentation time.Potential benefits of hardware acceleration in browser-based video editing.Video editing has traditionally been a resource-intensive task, often requiring dedicated software with significant computational power. During my exploration of this field, I realized that traditional tools like Final Cut Pro seemed outdated, especially when considering the rapid advancements in artificial intelligence. This led me to ponder the potential of editing videos directly in the browser, leveraging cutting-edge web technologies and AI capabilities.The pandemic gave me an opportunity to delve into video editing more deeply. While considering a career as a full-time content creator, I encountered the limitations of existing software. For instance, using a green screen often requires manual adjustments to achieve the desired effect. Additionally, understanding which parts of a video to cut can be challenging without a clear transcription of the spoken words. This is where AI could make a significant difference.Modern web technologies offer promising solutions for video editing. WebCodecs, TensorFlow.js, and Whisper are examples of tools that can perform encoding, background removal, and audio transcription directly in the browser. However, implementing a comprehensive AI-powered video editor is not straightforward, as I discovered through my attempts.One of the key challenges in video editing is handling the vast amount of data involved. A single high-resolution image can be several megabytes in size, and a video consists of many such images displayed in rapid succession. This makes efficient image compression crucial to manage storage and performance.Several image compression techniques play a pivotal role in this process. Run-length encoding, for instance, is ideal for images with limited color variations, while Fourier transforms decompose images into sinusoidal components, allowing for the retention of essential visual information while discarding finer details. Another technique, Huffman encoding, involves remapping frequent pixel patterns to reduce data size.Despite these compression methods, video files remain large, necessitating further optimization through video codecs. Codecs like H.264 and AV1 compress video by predicting subsequent frames and encoding only the differences or 'deltas' between them. This drastically reduces the amount of data needed to represent a video sequence.Decoding video data, however, is a complex task. It requires understanding the concept of keyframes and delta frames, where a keyframe serves as a reference, and subsequent frames are derived from it. This process introduces the concept of bidirectional frames or B-frames, which depend on both preceding and succeeding frames for decoding.Video decoding also involves managing two timelines: the presentation timeline, which is the sequence in which frames are displayed, and the decoding timeline, which dictates the order in which frames must be processed. This challenges the conventional notion that time moves linearly, as frames may need to be decoded out of order to ensure seamless playback.Performance is another critical aspect of video editing. The codec is often the most time-consuming component, handling the compression, prediction, and encoding tasks. To address this, specialized hardware units are used to perform these operations efficiently, making hardware acceleration a valuable asset for browser-based video editing.While WebCodecs provides an interface to leverage hardware acceleration, understanding its intricacies is essential. The API processes frames asynchronously, returning them in an unpredictable order, which can be perplexing for developers used to synchronous operations.The process of 'demuxing' is crucial for managing video data. This involves reading video containers like mp4 or avi files, extracting frame metadata, and sending frames to the codec in the correct sequence. Although WebCodecs handles much of the heavy lifting, developers must still manage the demuxing on the client side.Despite these challenges, the potential for AI-powered video editing in browsers is immense. By harnessing hardware acceleration and modern web technologies, it's possible to achieve performance on par with traditional software. However, realizing this potential requires significant development effort and a deep understanding of video processing intricacies.The journey to create a fully functional browser-based video editor is ongoing. There is a clear need for a simplified API that abstracts the complexities of video processing, akin to how jQuery revolutionized web development. By collaborating and innovating, developers can pave the way for a new era of accessible, AI-driven video editing tools.
Navigating the Epic Stack: A Practical Guide for Web Developers
Navigating the Epic Stack: A Practical Guide for Web Developers
Article
The Epic Stack offers a structured project starter and reference for web developers.Decision documents assist in understanding the rationale behind tool choices.The Epic Stack emphasizes minimizing external services to reduce complexity.Guiding principles promote adaptability and simplicity in development.Epic Web Dev provides comprehensive documentation and workshops for mastering the Epic Stack.Building full-stack applications can often seem daunting due to the plethora of tools and technologies available. The fear of making the wrong decision can lead to analysis paralysis, where developers are stuck in indecision due to the potential high risk of choosing incorrectly. However, the Epic Stack serves as a comprehensive solution for web developers, offering both a project starter and a reference guide.The Epic Stack is built on the Remix framework, a favorite choice for its efficiency and compatibility with React. It simplifies the decision-making process by providing a curated set of tools that can be easily adopted by developers. The stack includes essential services like Fly.io for hosting, GitHub Actions for deployment, and Resend for email services, ensuring that the development process is as streamlined as possible.A significant aspect of the Epic Stack is its emphasis on limiting the number of services used in a project. By reducing dependency on third-party services, developers can maintain greater control over their projects and reduce complexity. This principle ensures that developers can focus on building robust applications without being bogged down by unnecessary external dependencies.Adaptability is another core principle of the Epic Stack. The fast-paced nature of web development demands that tools and technologies be flexible enough to accommodate changes. The Epic Stack is designed to be easily modifiable, allowing developers to swap out components as needed without disrupting the overall architecture of their applications. This adaptability helps developers stay current with industry trends and technological advancements.Documented decision-making is a key feature of the Epic Stack. Decision documents provide insight into the thought process behind choosing specific tools and services. These documents help developers understand the pros and cons of each choice, making it easier to evaluate whether these decisions align with their own project requirements.Epic Web Dev complements the Epic Stack by offering extensive documentation and workshops. These resources guide developers through the intricacies of the stack, ensuring they have a solid understanding of the underlying technologies. This educational aspect is particularly valuable for those looking to deepen their knowledge of full-stack development.The guiding principles of the Epic Stack also prioritize simplicity, with a focus on including only the most common use cases. This approach reduces the clutter in the initial setup and allows developers to get their projects off the ground quickly. By minimizing setup friction, developers can avoid spending excessive time on configuration and instead concentrate on building features that matter.Offline development capabilities are another noteworthy feature of the Epic Stack. Being able to work without an internet connection not only enhances productivity but also increases resilience against external disruptions. This feature ensures that developers can continue to work smoothly, even in environments with unreliable connectivity.Ultimately, the Epic Stack aims to provide a solid foundation for web developers. By offering a set of guiding principles, comprehensive documentation, and a reliable project starter, it empowers developers to make informed decisions and build applications with confidence. The combination of the Epic Stack and Epic Web Dev equips developers with the tools and knowledge needed to succeed in the ever-evolving world of web development.The Epic Stack and its accompanying resources are designed to tackle the challenges of modern web development. By offering a well-structured and opinionated approach, the stack provides developers with the confidence to make decisions and build applications efficiently. Whether you're starting a new project or enhancing an existing one, the Epic Stack serves as a valuable guide on your development journey.
Unlocking Developer Magic with Nuxt and TypeScript
Unlocking Developer Magic with Nuxt and TypeScript
Article
Nuxt as a progressive framework built on Vue.jsDeveloper experience focused on reducing friction and distractionsIntegration of TypeScript for type safety and inferenceCustomizable framework with extensibility through modulesType-safe access to server endpoints and environment variablesUnderstanding what Nuxt offers starts with recognizing it as a progressive framework built on Vue.js. While Vue handles the rendering layer for the front end, Nuxt extends its functionality to be a full-stack framework. This is partly due to its server engine, Nitro, which has evolved into a framework used by other meta-frameworks.Nuxt prioritizes the developer experience, aiming to make the framework easy to use while incorporating best practices. It strikes a balance between simplicity and configurability, allowing developers to extend it as their projects grow. The goal is for Nuxt to grow alongside developers, adapting to different requirements without imposing a high barrier to entry.Rebuilding Nuxt involved contemplating how to enhance its magic. Magic, in this context, is about reducing friction and distractions during development. It means keeping developers in a single context and minimizing interruptions that slow down workflow. This involves adopting a minimalist approach, ensuring that developers can maintain focus and productivity.Switching contexts while coding disrupts the flow of ideas. Having to consult documentation frequently or check other parts of a project can create frustration. Similarly, dealing with complex bundler configurations or repetitive code can hinder productivity. Magic in a framework can significantly improve the developer experience by minimizing these issues.When rebuilding Nuxt, a focus was placed on TypeScript to create this magic. Building the framework with TypeScript is essential, but the aim was to integrate TypeScript at a core level, making the framework TypeScript-native. This involves several key design principles: being the source of truth in a project, leveraging TypeScript's inference capabilities, facilitating augmentation, and revealing project truths to the end user.Setting a single source of truth is crucial. Often, frameworks provide a TypeScript configuration template that diverges from the library's reality over time. Nuxt aims to be this source of truth by generating a TypeScript configuration that accurately reflects the project's state.Nuxt's approach to type safety extends beyond configuration. It aims to provide end-to-end type safety, ensuring that server endpoints and global singletons are type-safe without requiring developers to write additional types. This is achieved through TypeScript's inference capabilities.Extensibility is a core philosophy of Nuxt. It allows for augmentation through Nuxt modules, which are integrations that extend the framework's functionality. These modules can be community-maintained and cover various use cases, from authentication to data fetching and caching.Nuxt also provides type-safe access to server endpoints and environment variables through features like RuntimeConfig. This ensures that developers have accurate type hints for their environment, reducing the need for additional validation.The framework supports customizing and controlling the type environment, allowing module authors to add their own templates into the Nuxt build. This includes adding type templates to augment the types Nuxt provides or introducing new ones.Nuxt's approach to developer experience is about reducing the need for manual configuration and making the development process more seamless. By leveraging TypeScript and providing a flexible and extensible framework, Nuxt helps developers maintain focus and productivity, unlocking the magic of a smooth developer experience.
Optimizing Web Performance: The Case for Reducing JavaScript
Optimizing Web Performance: The Case for Reducing JavaScript
Article
Importance of web performance and its impact on user engagementChallenges posed by excessive JavaScript in web applicationsComparison of various frameworks and their handling of JavaScriptIntroduction to partial hydration and inter-island communicationBenefits of using resumable frameworks like QUIC for performanceWeb performance is a crucial aspect of user engagement and business success. Slow websites lead to higher bounce rates and missed opportunities. Despite this, many websites struggle to achieve optimal performance. One core reason is the overuse of JavaScript, which has become increasingly prevalent as user expectations for interactive experiences grow.The rising demand for interactivity has led to a significant increase in the amount of JavaScript delivered to browsers. This trend is unsustainable because JavaScript runs on a single thread, and excessive scripts can overwhelm it, resulting in poor performance scores. As web applications become more complex and interactive, developers must find ways to balance functionality with performance.Excessive JavaScript not only affects performance but also impacts the initial loading time of applications. Historically, client-side rendering involved sending a blank HTML page and executing JavaScript to render content. This approach, popularized by frameworks like AngularJS and React, often results in longer loading times as the JavaScript must be parsed and executed before the application becomes usable.To address the issue of slow initial loading times, server-side rendering (SSR) was introduced. SSR sends a fully-rendered HTML page to the client, which appears faster but lacks interactivity until the JavaScript is executed. This necessitates a process called hydration, where the JavaScript re-executes and re-renders the application to make it interactive. This process often involves sending duplicate information, further complicating performance issues.Partial hydration is a promising solution to this problem. It involves breaking down applications into smaller, independently-hydratable sections, or islands. This approach focuses on only hydrating the necessary parts of a page, significantly reducing the initial load time. However, partial hydration introduces the challenge of inter-island communication—how these independent components interact with each other.Frameworks like Astro and Fresh are attempting to solve this by allowing only specific parts of a page to be interactive, while the rest remains static. This method reduces JavaScript usage but requires a mechanism for components to communicate. Without effective inter-island communication, breaking an application into islands can limit its functionality.Resumable frameworks like QUIC offer a solution by enabling inter-island communication without additional JavaScript overhead. QUIC allows React components to hydrate lazily and efficiently, improving both startup performance and responsiveness. By using techniques to remove duplicate code and annotations that mark where execution should occur, QUIC reduces the JavaScript load, making applications faster and more efficient.In practice, QUIC demonstrates significant performance improvements. Applications using QUIC benefit from reduced JavaScript execution times and improved user experiences, even on slow networks. This is particularly beneficial for scenarios where quick interactions are crucial, such as in e-commerce or public service websites.The approach taken by QUIC also allows developers to incrementally adopt it within existing projects. By wrapping existing components and defining hydration rules, developers can seamlessly integrate QUIC into their workflows without a complete overhaul. This flexibility is vital for large-scale applications aiming to improve performance gradually.Beyond performance, QUIC offers improved testing practices. It allows developers to test components without needing specialized loaders or transformations. This ensures that applications can be tested efficiently while maintaining the benefits of lazy loading and reduced JavaScript execution.In summary, the balance between interactivity and performance is a critical consideration in modern web development. As users demand more interactive experiences, developers must be mindful of the trade-offs involved. By utilizing techniques like partial hydration and adopting frameworks like QUIC, developers can optimize their applications for both speed and functionality, ultimately enhancing user satisfaction and engagement.
Enhancing React Performance with Automated Memoization: An Insight into React Forget
Enhancing React Performance with Automated Memoization: An Insight into React Forget
Article
Memoization as a compromise between code clarity and performance.React Forget aims to automate memoization and improve developer experience.UseMemo and react.memo APIs increase performance but complicate code.React Forget explores escape analysis and type inference to optimize memoization.Open-source strategy and Meta's internal testing provide a robust foundation.Memoization is a common technique used in React to optimize performance, but it often comes at the cost of code clarity. When developers employ methods like useMemo and react.memo, they introduce additional logic that can clutter code and make it harder to read and maintain. This challenge is a compromise, trading off the simplicity of original logic for enhanced performance. But this raises an important question: why do developers need to make this trade-off in the first place?The underlying issue lies in the way React handles component re-rendering. React requires explicit instructions about which components depend on which data points to prevent unnecessary re-renders. For instance, if a component's heading changes, React might unnecessarily re-render not only the heading but also a list of videos filtered based on specific criteria. Even if these videos haven't changed, the entire component function runs again, leading to performance inefficiencies.To tackle this, developers typically use React's useMemo and react.memo APIs. UseMemo ensures that the logic for computing data, like a filtered video list, only executes when its dependencies change. Meanwhile, react.memo prevents components from re-rendering if their props remain unchanged. While these tools can significantly enhance performance, they also complicate the codebase, detracting from React's original promise of declarative rendering.React Forget, a new compiler at Meta, is designed to address these challenges by automating the memoization process. The goal is to eliminate the need for useMemo, react.memo, and useCallback, streamlining the developer experience. React Forget leverages escape analysis to identify which values require memoization, focusing only on those that impact the function's return value. Additionally, it uses type inference to avoid memoizing primitive values like array lengths.This approach not only simplifies the code but also aligns with React's vision of making UI development a straightforward function of data. By automating memoization, developers can focus on building the core product experience without getting bogged down in performance-related logic.The initiative to open-source React Forget is underway, although it is currently being refined within Meta's ecosystem. The company tests it rigorously against its internal applications, which operate at a scale that most developers do not encounter. This extensive testing ensures that when React Forget is released to the open-source community, it will be robust and well-documented, ready to support a wide range of applications.React Forget is particularly exciting because it anticipates future applications beyond client-side React. While it currently focuses on optimizing client-side interactions, it has the potential to enhance server-side rendering (SSR) by identifying and eliminating unnecessary code. This capability indicates a broader vision for React Forget, one that could eventually benefit React Native and other frameworks.In summary, React Forget represents a significant step towards a more ergonomic React development experience. By automating memoization, it aims to preserve the declarative nature of React while enhancing performance. This innovation promises to make React applications not only more efficient but also easier to develop and maintain. As React Forget moves closer to open-source release, it holds the potential to transform how developers approach performance optimization in React applications.
Understanding Suspense in JavaScript Frameworks: A Guide to Async Consistency
Understanding Suspense in JavaScript Frameworks: A Guide to Async Consistency
Article
Suspense as a tool for managing asynchronous state changes in JavaScript frameworks. The impact of async inconsistency on user trust and application reliability. Exploration of techniques like placeholders, optimistic updates, and suspense boundaries. UseTransition and its role in enhancing user interface consistency. Suspense's application in server-side rendering and incremental data loading. Suspense has emerged as a crucial tool for managing asynchronous state changes in JavaScript frameworks like React, Vue, and Solid. The complexity of asynchronous operations often challenges the guarantees of synchronous execution that these frameworks rely on to keep user interfaces consistent. This article delves into the mechanics of suspense and how it serves as a mechanism for orchestrating async consistency, ensuring users have a seamless experience. When dealing with asynchronous data fetching, the concept of async inconsistency can erode user trust. Imagine navigating a website only to find that the data presented is inconsistent with the actions performed. This was famously a problem with Facebook Messenger, where phantom notifications would appear, causing user frustration. Consistency in user interfaces is paramount, and suspense helps achieve this by managing async operations in a controlled manner. Suspense acts as a boundary in your view representation, ensuring that UI updates occur only when all necessary data is ready. This prevents tearing, where parts of the UI reflect outdated data before new data is fully loaded. Consider a movie listing site where switching between tabs could result in mismatched data if not handled properly. By using suspense, developers can ensure that UI updates only happen after data fetching is complete, preventing inconsistent states. There are several strategies to manage async data and prevent inconsistencies. Placeholders can be used to avoid displaying incomplete data. Optimistic updates leverage known changes to show expected results before data fetching completes. Suspense boundaries allow developers to control how and when different parts of the UI are updated, ensuring a smooth transition between states. One powerful tool in managing transitions is the useTransition hook, which allows developers to wrap state changes and async operations within a transaction. This ensures that UI changes are deferred until all necessary data is ready, providing a more consistent user experience. By integrating useTransition, developers can create smoother transitions between UI states, even in complex applications. Suspense is not limited to client-side rendering; it also plays a significant role in server-side rendering (SSR) and incremental data loading. By leveraging suspense in SSR, developers can send parts of the page incrementally from the server, allowing users to interact with the application even as additional data loads. This enhances the perceived performance and responsiveness of web applications. The implementation details of suspense vary between frameworks, but the underlying concept remains the same: managing async operations to ensure consistent UI updates. By understanding and utilizing suspense, developers can create applications that are not only performant but also reliable and trustworthy for users. Suspense helps bridge the gap between asynchronous data fetching and the need for consistent user interfaces in JavaScript frameworks. By providing tools to manage async operations effectively, suspense ensures that users experience smooth transitions and reliable data presentation. Whether through client-side or server-side implementations, suspense remains a powerful ally in creating seamless and trustworthy web applications.
Understanding Redux: Why It's Still a Valuable Tool for Developers
Understanding Redux: Why It's Still a Valuable Tool for Developers
Article
Redux offers a consistent architectural pattern for state management.Redux's predictability and observability enhance application development.Redux Toolkit solves common issues like boilerplate and accidental mutations.Redux provides powerful dev tools for tracking actions and state changes.Redux remains widely used and well-documented in the developer community.Redux has long been a staple in the world of web development, particularly for managing state in React applications. Its consistent architectural pattern and structured approach to state management offer significant benefits for developers navigating complex applications. While the landscape of state management tools has evolved, Redux remains a valuable option for many developers today.One of the primary reasons developers choose Redux is its ability to maintain a predictable and observable data flow. In Redux, actions are dispatched from UI components, with reducers handling state updates and selectors reading data. This process ensures a clear and consistent flow of data, making it easier to track what happens within an application. The pure functions used in Redux, like reducers and selectors, contribute to the predictability of the code, as they produce the same output given the same input, simplifying testing and maintenance.Redux's architectural pattern separates state from the UI, which can lead to a cleaner and more scalable application structure. By keeping state outside the component tree, developers can manage updates more efficiently, ensuring that UI components remain focused on rendering. This separation also supports the use of a single store, providing a centralized location for data that is easy to access and manage.Over the years, Redux has evolved significantly, addressing many of the pain points developers faced in its early versions. The introduction of Redux Toolkit has been a game-changer, offering a set of opinionated APIs that simplify common tasks like creating a store, writing reducers, and fetching data. By reducing boilerplate and incorporating safety features to prevent mistakes, Redux Toolkit makes it easier for developers to adopt Redux and leverage its full potential.One of the standout features of Redux is its powerful dev tools, which provide an invaluable view into the application's behavior. These tools allow developers to examine the semantic history of actions and state changes, enabling them to debug and optimize their applications with greater ease. This level of observability is a key reason why many developers continue to rely on Redux in their projects.Despite the emergence of modern React context and a variety of state management libraries, Redux remains a popular choice, particularly for applications requiring a robust and scalable state management solution. Its design aligns well with React's functional programming principles, making it a natural fit for many React developers. Additionally, Redux's widespread use and comprehensive documentation make it an accessible and reliable tool for both new and experienced developers alike.While Redux is not without its trade-offs, such as the additional code required to manage state updates and the complexity of handling immutable updates, these challenges are often outweighed by the benefits it provides. The Redux community has worked diligently to address these issues, and the improvements in Redux Toolkit demonstrate a commitment to evolving the library alongside the needs of modern developers.In today's development landscape, Redux is not necessarily the only choice for state management, and it may not be the best fit for every application. However, it remains a valid and powerful tool for many scenarios, particularly those involving complex state interactions or requiring detailed tracking of state changes. By understanding the strengths and limitations of Redux, developers can make informed decisions about when and how to incorporate it into their projects, ensuring they leverage its capabilities effectively.
Mastering State Management in React with Jotai
Mastering State Management in React with Jotai
Article
State management in React offers diverse library options.Jotai is a new library based on atoms for state management.Atoms create a dependency graph for state updates.Jotai can be used for global, semi-global, or local state.ProviderComponent and UseAtomHook are essential in using Jotai with React.State management has always been a hot topic in the React community. With a plethora of libraries and solutions available, developers can choose from primitive solutions like the UseStateHook or more advanced libraries like Redux, MoveX, XState, Zustand, and now Jotai. While having numerous options can be daunting, it enriches the ecosystem by fostering innovation and diversity in approaches.Jotai is an exciting new entrant in the realm of state management solutions for React. It introduces a concept based on atoms, which are essentially pieces of state. This concept, while popularized by libraries like Recoil, is not entirely new. It involves forming a dependency graph of state pieces and propagating updates across them. For instance, if you have three atoms, A, B, and C, where A depends on B, and B depends on C, any update to C will trigger updates to both B and A.Unlike observables, atoms in Jotai do not hold values. They are merely definitions, with the actual values existing elsewhere. This separation allows developers to use atoms for global, semi-global, or local state management. By thinking of atoms as functions, much like React components, it becomes easier to grasp their utility in managing state.Atoms in Jotai are defined using functions. For example, you can have a textAtom with an initial value of "HELLO", a textLengthAtom that calculates the length of textAtom, and an uppercaseAtom that converts textAtom to uppercase. These atoms are interconnected, so any change in textAtom will automatically update the others. This is achieved using the useAtom hook, which functions similarly to the useState hook, providing a value and an update function that triggers re-renders upon changes.A key feature of Jotai is its ability to be used for global state management, although it's not truly global. Atoms can be used for semi-global or local states, which may initially seem counterintuitive. However, by viewing atoms as functions, their flexibility in state management becomes evident.In React, dependencies in components are typically defined using props, states, or context. Jotai introduces a similar pattern with atoms. For example, a countAtom can be defined, and a doubleAtom can depend on it. When the countAtom changes, the doubleAtom is re-evaluated. The use of the get function, which retrieves atom values, is akin to the useContext hook in React, but with additional flexibility in changing atom dependencies.Jotai also supports write operations on atoms. By adding a write function to an atom, it becomes writable, enabling state updates. This write function takes three parameters: get, set, and new value, allowing complex state manipulations. Primitive atoms, which serve as data sources in the dependency graph, can be defined with initial values and used to form intricate state management patterns.Although Jotai atoms are designed for React, they are framework agnostic. The atom function is a helper for creating config objects, but technically, developers can define atom objects without it. To integrate Jotai with React, two functions are crucial: the ProviderComponent and the useAtom hook. The ProviderComponent stores atom values within the component tree, while the useAtom hook retrieves and updates these values.In some scenarios, the Provider component can be omitted, allowing for global state management. This feature is particularly useful when there's only one Provider in memory. However, in cases with multiple Providers, each can maintain separate atom values, demonstrating the flexibility of Jotai in managing state across different contexts.Jotai's design also supports server-side scenarios where multiple requests require isolated state management. While updating atom values on the server is currently hypothetical, the separation of definition and values lays the groundwork for potential future developments.Jotai's framework-agnostic nature even allows for experiments like Jotajsx, which replaces React and React-dom libraries while retaining the same syntax. This and other experimental libraries hosted under the JotaiLabs GitHub organization showcase the potential for further developments and integrations beyond React.Jotai presents a fresh perspective on state management in React, emphasizing the use of atoms as function-like, framework-agnostic state definitions. Whether you're an existing Jotai user or new to the library, exploring its capabilities can offer valuable insights into efficient state management.
Building Optimal Servers with Deno: A Modern Approach to Serverless Architecture
Building Optimal Servers with Deno: A Modern Approach to Serverless Architecture
Article
Deno's focus on forced optimization for building optimal servers.The significance of non-blocking IO in server development.Integration of Deno Deploy for serverless edge functions.Built-in compatibility with NPM and JavaScript ecosystem.Introduction of Deno KV for advanced key-value data storage.The evolution of server development has taken significant strides in recent years, and Deno is at the forefront of this transformation. Deno's approach to forced optimization aims to equip developers with tools to build optimal servers efficiently. The goal is to expand on the principles that Node.js introduced, focusing on non-blocking IO to ensure seamless user experiences across the globe.When Node.js first emerged, the idea of asynchronous IO was groundbreaking. Developers were pushed to adopt this model to create more efficient servers. Over a decade later, asynchronous IO has become the norm, yet building optimal servers now requires more than just this feature. With the complexity of cloud configurations, database selections, and global data replication, developers face challenges that demand holistic solutions. Deno seeks to address these challenges by providing a modern platform that focuses on accessibility and performance.Deno emphasizes accessibility by leveraging JavaScript, the most widely used programming language. While JavaScript may not be the perfect language, its accessibility makes it an ideal choice for reaching a broad developer base. In striving for performance, Deno aims to achieve excellent latency regardless of the user's location, ensuring a consistent experience whether accessing the system from Japan or New York City. This commitment to performance is further emphasized by the system's serverless architecture, which allows it to scale dynamically as needed. This feature is increasingly crucial in today's cloud-centric world.A core component of Deno's offering is Deno Deploy, a serverless platform that extends Deno's capabilities to the cloud. It runs on a global network of data centers, enabling developers to deploy applications worldwide with ease. Deno Deploy's serverless edge functions power platforms like Netlify Edge Functions and Superbase Edge Functions, demonstrating its versatility and effectiveness. With Deno Deploy, applications can achieve strong consistency and geo-replication, backed by FoundationDB, a scalable database used by major services like iCloud and Snowflake.One of the standout features of Deno is its built-in support for the NPM ecosystem. This integration allows developers to access a vast array of modules without the need for additional configurations. Deno's approach ensures that developers can leverage NPM's extensive library while maintaining the security constraints that Deno is known for. This compatibility is crucial as it bridges the gap between Node.js and Deno, allowing developers to transition smoothly between the two platforms.Deno also introduces a powerful feature in the form of Deno KV, an advanced key-value database built directly into the platform. Deno KV supports typical key-value operations and atomic transactions, making it suitable for a range of applications. With Deno KV, developers can store JavaScript objects with ease, leveraging its built-in support and SQLite backend. This feature is currently in development and promises to be a core part of Deno's API, further simplifying the development process for application servers.Security is paramount in Deno's architecture. By default, Deno enforces strict permissions, preventing unauthorized access to the system. This approach aligns with the platform's goal of reducing boilerplate and making server development as seamless as possible. Developers can bypass these prompts by explicitly allowing permissions, ensuring that security is always front and center.Deno's commitment to optimization and accessibility makes it a compelling choice for modern server development. By building on the foundations laid by Node.js, Deno offers a platform that addresses the challenges of today's cloud-driven world. Whether it's through its serverless architecture, compatibility with NPM, or advanced database features, Deno equips developers with the tools they need to build efficient, scalable servers that meet the demands of global users.
Mastering React Query: Effective Strategies for Managing Async State
Mastering React Query: Effective Strategies for Managing Async State
Article
Understanding React Query as a State ManagerDistinguishing Between Data Fetching and State ManagementUtilizing Stale Time for Efficient Data SynchronizationLeveraging Query Keys for Parameter DependenciesCombining React Query with Client-State ManagementMany developers encounter situations where a small tweak can make a significant impact, much like tying your shoes correctly. This analogy is particularly relevant in the context of working with React Query. At first glance, it might seem like a data fetching library, but a deeper understanding reveals that React Query is fundamentally an async state manager.React Query does not handle data fetching directly. Instead, it relies on external libraries like Axios or Fetch to perform the actual data retrieval. React Query's role is to manage the promises returned by these libraries, focusing on the state of data: whether it's loading, error-prone, or successfully fetched. This distinction helps clarify common misconceptions about React Query's functionality, emphasizing that its primary concern is managing state rather than fetching data.One of the core principles of React Query is its ability to efficiently manage async state. Traditional state management often involves slicing state based on its usage location, whether it's local, lifted, or global. However, React Query introduces a shift in thinking by distinguishing between synchronous and asynchronous state. Async state, or server state, represents data that is not owned by the client and can become outdated. React Query addresses this by keeping state up-to-date, managing loading and error states, and offering lifecycle management for async data.Understanding the fundamentals of state management is crucial for using React Query effectively. State managers aim to make state available throughout an application with minimal updates. In React Query, this is achieved through the use of query keys, which define the specific parts of state to which components subscribe. By using query keys and selectors, developers can ensure that components only update when relevant data changes, reducing unnecessary renders and enhancing performance.Stale time is a critical concept within React Query, functioning as a data synchronization tool. It determines how long data remains fresh before being considered stale and re-fetchable. By default, stale time is set to zero milliseconds, meaning data is instantly stale and subject to frequent re-fetching. Developers can adjust stale time based on their application's needs, balancing between minimizing network requests and ensuring data freshness.Managing async state effectively also involves treating parameters as dependencies. When parameters, such as filters, are used in query functions, they should be included in the query key. This practice ensures that data is cached properly, avoiding race conditions and enabling automatic re-fetching when parameters change. React Query offers an ESLint plugin to help enforce this practice, promoting consistent and error-free code.Despite React Query's capabilities, there are situations where client-state management remains necessary. For example, filters that dictate query parameters might be managed with local or global state solutions. This separation of concerns allows React Query to manage server state while client state is handled by other means, such as state managers like Zustand or even the URL as a state manager.This approach highlights the power of composition when using custom hooks. By separating service state managed by React Query from client state, developers can create robust applications that leverage the strengths of both state management techniques. Updates to client state, such as filter changes, automatically trigger React Query to fetch the latest data or read from the cache, ensuring a seamless user experience.By mastering these techniques, developers can unlock the full potential of React Query as a true async state manager. This involves understanding its role, utilizing stale time effectively, leveraging query keys for parameter dependencies, and integrating it with client-state management solutions. These strategies empower developers to build applications that are both efficient and responsive, making the most of React Query's capabilities.
Powering Cody Coding Assistant Using LLMs
C3 Dev Festival 2024C3 Dev Festival 2024
29 min
Powering Cody Coding Assistant Using LLMs
This Talk explores the world of coding assistants powered by language models (LLMs) and their use cases in software development. It delves into challenges such as understanding big code and developing models for context in LLMs. The importance of ranking and code context is discussed, along with the use of weak supervision signals and fine-tuning models for code completion. The Talk also touches on the evaluation of models and the future trends in code AI, including automation and the role of tasks, programming languages, and code context.
Conducting Interviews and Interviewing in the Age of AI Tools
C3 Dev Festival 2024C3 Dev Festival 2024
29 min
Conducting Interviews and Interviewing in the Age of AI Tools
This talk explores the use of AI in the interviewing process for software engineering. It discusses the history of interviewing and the skills needed for future interviews. The speaker questions the relevance of traditional coding challenges and highlights the shift towards evaluating specific programming languages and debugging skills. The talk also emphasizes the importance of understanding the uses and limitations of AI and the value of communication skills in technical interviews.
Why You Should Use Redux in 2024
React Summit 2024React Summit 2024
33 min
Why You Should Use Redux in 2024
Top Content
Mark Erickson explains the history, creation, evolution, and benefits of Redux. Redux was designed to make state updates and action history maintenance easy, incorporating functional programming principles. Redux Toolkit was created to simplify Redux usage. Redux is still a valid choice for its consistent pattern and separation of state from UI. The decision to use Redux depends on the specific use case and the need for centralized state management.
Local-First Software With ElectricSQL
React Advanced Conference 2023React Advanced Conference 2023
29 min
Local-First Software With ElectricSQL
Watch video: Local-First Software With ElectricSQL
Local-first software allows for instant display of data to the user, offering zero latency and offline functionality. It simplifies data synchronization and enables real-time multi-user sync. Popular tools like Facebook Messenger and Google Workspace apps have adopted this pattern. Electric SQL provides a drop-in sync layer for existing applications, combining real-time functionality with conflict-free offline capabilities. Local-first software replaces APIs and microservices with a standardized replication protocol, simplifying state management and reducing server load.
Real-Time Collaborative State on the Edge
React Advanced Conference 2023React Advanced Conference 2023
26 min
Real-Time Collaborative State on the Edge
Watch video: Real-Time Collaborative State on the Edge
Steven, a design tool nerd, worked on InVision Studio and now focuses on LiveBlocks, providing APIs and tools for multiplayer collaboration. Collaborative design tools like Figma, Canva, Mural, Notion, Mirror, Linear, and Pitch use conflict resolution algorithms such as OTs and CRDTs. Data migration and collaboration patterns are important considerations for building production applications. Figma stands out for its seamless assembly of collaboration features. LiveBlocks enables front-end developers to build collaborative experiences without complex backend infrastructure, using fractional indexing for consistent ordering.
Thinking in React Query
React Summit 2023React Summit 2023
22 min
Thinking in React Query
Top Content
Watch video: Thinking in React Query
React Query is not a data fetching library, but an Asian state manager. It helps keep data up to date and manage agent life cycles efficiently. React Query provides fine-grained subscriptions and allows for adjusting stale time to control data fetching behavior. Defining stale time and managing dependencies are important aspects of working with React Query. Using the URL as a state manager and Zustand for managing filters in React Query can be powerful.
How I Like to Write JavaScript
JSNation 2023JSNation 2023
26 min
How I Like to Write JavaScript
Caleb Porzio introduces Alpine JS, a JavaScript framework, and demonstrates the process of creating a scrappy version of AlpineJS and refactoring it. The Talk covers topics such as creating a Dom Walker, evaluating expressions, using mutation observers, and refactoring the code. It also discusses techniques like inverting conditionals, using callbacks, and parameter currying. The Talk emphasizes the importance of abstraction, handler extraction, and a declarative approach in software development.
Reactivity: There and Back Again
React Summit 2023React Summit 2023
12 min
Reactivity: There and Back Again
Watch video: Reactivity: There and Back Again
The Talk discusses the cyclical nature of technology evolution, with examples from civil engineering and software development. It explores the shift from serverless to client-side frameworks and the recent move back towards server-side processing. The evolution of technologies and states is examined, highlighting the progression from mutability to immutability and the introduction of observable immutability. The future and next generation of reactivity are also explored, with a focus on the blurring boundary between server and client and the importance of embracing uncertainty and avoiding dogma.
Server Components with Bun
Node Congress 2023Node Congress 2023
7 min
Server Components with Bun
Top Content
Bun is a modern JavaScript runtime environment that combines a bundler, transpiler, package manager, and runtime. It offers faster installation of NPM packages and execution of package.json scripts. Bun introduces a new JavaScript and TypeScript bundler with built-in support for server components, enabling easy RPC with the client. This allows for code splitting and running code that streamingly renders React or any other library from the server and mixes it with client code, resulting in less JavaScript sent to the client.
Deno 2.0
Node Congress 2023Node Congress 2023
36 min
Deno 2.0
Top Content
The Talk discusses forced optimization with Node and Deno, with Deno aiming to pursue the same goals in a more expansive and modern way. Deno has built-in support for NPM and enforces security constraints. It also has a key-value database called Deno KV, which will be a core part of the Deno 2 API. Deno Deploy is a serverless Edge Functions platform powered by FoundationDB, optimized for fast reading and ideal for building eCommerce sites or application servers at the edge. Deno 2.0 is coming soon with more features under development.
The Journey of CodeSandbox Projects
React Advanced Conference 2022React Advanced Conference 2022
25 min
The Journey of CodeSandbox Projects
Code Sandbox is an online code editor that started as a component editor. It has evolved and now has 30 million sandboxes. The creators emphasize the importance of seeking external feedback and doing fast releases. They also highlight the power of having true fans and the value of user feedback. Code Sandbox is expanding to support big projects and integrating with GitHub. It offers collaboration features, the ability to use your own code editor, and native apps for iPad and iPhone. The challenges lie in running everything in a virtual machine and enabling fast dev servers. Code Sandbox is also exploring the possibility of running other technologies like Deno, Bun, and Ruby on Rails. The talk concludes with a demo of running a Minecraft server on Code Sandbox.
5 Years of Building React Table
React Summit 2022React Summit 2022
24 min
5 Years of Building React Table
Top Content
React Table is a popular table library that started with HTML5 tables and transitioned to React. It faced challenges with integration and user requests, leading to the development of React Table. The introduction of the Headless UI pattern and TypeScript support improved the library's capabilities and quality. Generics and TypeScript played a significant role in reducing the code size and improving development. React Table is now going framework agnostic and partnering with AG Grid.
Confessions from an Impostor
JSNation 2022JSNation 2022
46 min
Confessions from an Impostor
Top Content
The Talk discusses imposter syndrome and reframes it as being a professional imposter. It emphasizes the importance of sharing and starting, embracing imposterism, and building inclusively for the web. The speaker shares personal experiences of being an imposter in various technical disciplines and highlights the significance of accessibility. The Talk concludes with the idea of building a collective RPG game to remove excuses for not making things accessible.
SolidJS - Reactive JSX
React Finland 2021React Finland 2021
28 min
SolidJS - Reactive JSX
An introduction to SolidJS UI Library. Explore an example to show the similarity and differences between Hook + Virtual DOM versus Reactivity + DOM.
The State of XState
React Finland 2021React Finland 2021
18 min
The State of XState
Over the past few years, state machines, statecharts, and the actor model have proven to be viable concepts for building complex application logic in a clear, visual way with XState. In this talk, we'll take a peek into the future of XState, including new features in the next version, and new tools and services that will make it even easier to create and collaborate on state machines.
Module Federation in Webpack 5
JSNation Live 2020JSNation Live 2020
32 min
Module Federation in Webpack 5
This Talk discusses module federation in Webpack 5 as a scalable solution for shared dependencies in large applications. Module federation allows separate builds for different parts of an application, reducing build time and deploy delay. It features exposed and shared modules, asynchronous loading, and container creation. Module federation supports container orchestration techniques and aims to integrate with ECMAScript modules. However, optimization and sharing in module federation may impact code size, and careful evaluation is necessary. Updating containers can be managed through active testing for stability.
Blitz.js - The Fullstack React Framework
React Summit 2020React Summit 2020
32 min
Blitz.js - The Fullstack React Framework
Blitz is a framework for building full stack React apps with a monolithic architecture and no API layer. It uses Next.js and Prisma 2 and follows convention over configuration. Authentication and authorization are set up by default, and adding social login is easy. The Blitz community emphasizes inclusivity and welcomes contributions. The future of Blitz includes a stable release cycle and the vision of bringing the Zero API experience to mobile.
Building a Mobile App with Expo, EAS, and React Native
React Summit Remote Edition 2021React Summit Remote Edition 2021
35 min
Building a Mobile App with Expo, EAS, and React Native
This talk provides an overview of building React Native apps with Expo and Xcode. It covers Expo managed projects, XO, Turtle, customizing runtime, Expo Development Client, and EAS. The talk also mentions the advantages of Expo Updates, the focus on a customizable runtime, and adding native libraries. Favorite React Native apps and libraries are recommended, and the future goals include enhancing performance and improving the development experience through EAS.
React Without JavaScript?
React Summit Remote Edition 2021React Summit Remote Edition 2021
26 min
React Without JavaScript?
This is a talk about the language of web development and how it influences what we can build. It introduces Astro, a method for building faster websites with less client-side JavaScript. Astro brings together the power of JavaScript and the speed of HTML. It explains how to mix scripting and markup using a frontmatter script. Astro allows you to use React components in an Astro application, generating server-side markup. It offers opt-in interactivity with JavaScript and an HTML-first output.
XState: the Visual Future of State Management
React Summit Remote Edition 2021React Summit Remote Edition 2021
35 min
XState: the Visual Future of State Management
Top Content
This Talk introduces the visual future of state management and how XState is bringing it to reality. It explains the role of reducers in containing application logic and how state machines and state charts provide a visual and mathematically rigorous way to represent behaviors. XState is easily integrable with React and other frameworks, allowing for the management of local, global, and semi-local state. The Talk also highlights new features in XState, such as the use of TypeScript for stronger typing and the introduction of the useSelector hook for improved performance. The future vision includes the combination of diagrams and code, with tools like Stately.ai, and the importance of explicit modeling of application logic using state machines.