Logo
    Search

    Podcast Summary

    • Web developers' wish list for simplifying tasksWeb developers Scott Talinski and Wes Bos discussed their frustration with manually handling tasks, like custom page transitions in HTML, and their excitement for upcoming features, such as custom page transitions and animations, while expressing their desire for simpler solutions to complex tasks, like converting JavaScript date inputs.

      Web developers Scott Talinski and Wes Bos expressed their wish list for simplifying certain web development tasks during their podcast, Syntax. They discussed their frustration with having to manually handle tasks that could be default features, like custom and automatic page transitions in HTML. They also mentioned their excitement for upcoming features, such as the ability to have custom page transitions and animations in HTML that work with familiar tools. Another point of discussion was the needless complexity of converting JavaScript date inputs to actual dates or numbers, which they found out only recently. Despite acknowledging that they might understand why things are done the way they are, they expressed their desire for easier solutions. Overall, the conversation highlighted the web developers' perspective on desiring more efficient and streamlined processes in web development.

    • Discover hidden properties for customizing input elementsDot value feature allows for direct setting of values on number and date inputs without custom functions or coercion. Developers want modern, customizable input elements, including date pickers, with easy-to-use and smooth drag-and-drop functionality.

      There are hidden properties on number and date inputs called dot value as number and dot value as date, which can be used for setting values directly without the need for custom functions or coercion. This discovery was made during a conversation about the desire for better, more customizable input elements, including date pickers and drag-and-drop functionality. Many developers were unaware of this feature, as evidenced by the popular tweet on the topic with over 200 retweets. Furthermore, there is a desire for more modern and customizable input elements, such as date pickers, which can be easily styled and function well without requiring extensive custom coding. This includes the ability to create smooth and animated drag-and-drop functionality out of the box, without the need for additional libraries or custom code. Overall, the goal is to have input elements that work seamlessly and look modern, without requiring developers to write extensive code for basic functionality.

    • Understanding the differences between similar concepts and toolsChoose between interfaces and types in TypeScript based on project needs, not just performance. Prefer requestAnimationFrame for more performant animations, but consider a simpler solution for less complex projects.

      There are instances in programming where developers are presented with similar concepts or tools that serve similar purposes but have distinct differences. Two such examples discussed were TypeScript interfaces versus types, and the use of window.requestAnimationFrame versus setInterval for animations. The speaker questioned why these distinctions exist and why not just have one solution that covers all use cases. In the case of TypeScript, the faster compilation time of interfaces was cited as a reason for their preference, but the speaker felt that the choice should be based on the specific needs of the project rather than performance considerations. With requestAnimationFrame and setInterval, the former was preferred for more performant animations by allowing the browser to control the painting process, but the speaker expressed a desire for a simpler solution that required less learning and implementation effort. Overall, the discussion highlighted the importance of understanding the nuances of different programming concepts and tools, even if they seem similar or redundant at first glance.

    • Features developers wish had in the browser for easier web developmentDevelopers desire data binding and authentication as built-in browser features for enhanced form handling and secure authentication, but the effectiveness and compatibility of current solutions like WebAuth API are unclear. Preferences and project needs may influence the choice between low-level primitives and higher-level APIs.

      There are several features that developers wish were built into the browser itself to make web development easier and more efficient. Two of these features are data binding and authentication. Data binding would allow variables to update in real-time, making forms and interactivity easier to implement. Authentication, a necessary aspect of many projects, could benefit from a more streamlined browser API. The WebAuth API exists, but its effectiveness and compatibility are unclear. Other low-level primitives are sometimes preferred, allowing for flexibility in the code built on top of them. Personal preferences and project needs may influence which approach is chosen. Additionally, Linode, a cloud computing platform for developers, offers a marketplace for easy installation and deployment of various applications, including Joplin, a popular open-source note-taking app.

    • Handling server-side rendering and DOM readiness in ReactReact's explicit approach to handling server-side rendering and DOM readiness can lead to complexities and unnecessary overhead. Developers need to use different hooks like useEffect, useLayoutEffect, and useIsomorphicFetch based on context, but these complexities can be simplified for more efficient development.

      During React development, handling server-side rendering and DOM readiness can be challenging. Developers often need to use different hooks like useEffect, useLayoutEffect, and useIsomorphicFetch based on the context. However, these complexities can lead to unnecessary overhead and bugs. For instance, the dependency array in useEffect requires developers to manually pass dependencies, which can be tedious and error-prone. Fragments, another common issue, seem unnecessary when using a templating language like JSX. While React's explicit approach has its merits, developers might prefer simpler solutions that automatically handle these complexities. For example, having useEffect work seamlessly in both server-side and client-side contexts could save time and effort. Overall, mastering these intricacies is essential for efficient and effective React development.

    • Frustrations in JavaScript and JSXManual intervention is often required to fix JS and JSX issues, and inclusive language should be used in programming.

      While JavaScript and JSX have the capability to detect issues in the code, they don't always automatically fix them. For instance, when returning an array instead of a single element in JSX, or using the wrong syntax for class or class names. The speaker suggests that the code could be written to automatically fix these issues, but it currently requires manual intervention. Another point of frustration is the use of certain terms, such as "negative Nancy," which can be perceived as exclusionary. The speaker proposes finding a more inclusive term to replace it with. Lastly, the speaker shared a common CSS issue where using "overflow: hidden" on a container and a box shadow on its child results in the child being cut off. The speaker mentioned that adding padding to the container or using CSS filters as a solution can lead to additional issues. Overall, the conversation highlights the importance of code being not only detecting issues but also addressing them automatically, and the need for more inclusive language in programming.

    • Handling specific web development challengesDevelopers face unique problems when working on web projects, requiring adaptable solutions like custom overflow properties, fluid text, and efficient techniques for optimal user experience.

      When working on web development projects, there are various techniques and tools to solve specific problems. However, no single solution works perfectly in all situations. For instance, using "overflow: hidden" for hiding content can be limiting, and developers might want exceptions to this rule. They might want to use "overflow: scroll" in one direction while keeping "overflow: visible" in another. Another issue discussed was the desire for fluid text, which expands to the maximum size possible within a label or container, without breaking onto a new line. However, existing solutions like "clamp" don't entirely solve this problem, as they are based on browser width, not container width. Lastly, developers shared their experiences with using different tools like Sentry for error tracking and learning about application performance, and the importance of using the most efficient techniques like translate3d for animations to optimize the user experience.

    • CSS limitations and workaroundsDespite some limitations, CSS continues to advance with new features like individual transform properties and PNG clip masking for text textures.

      There are still limitations in CSS when it comes to certain features like consistently invoking the GPU for better performance and having gradient borders or clipping masks with full functionality for transparent backgrounds. However, there are workarounds such as using CSS blending modes and PNGs for text textures. Excitingly, individual transform properties are now becoming a reality in CSS, allowing for more precise control over animations and transformations, with good support in major browsers like Chrome, Safari, and Firefox. Another interesting discovery was the ability to use PNGs with clip masking for text textures, providing an alternative to raster-based textures. Overall, while there are still areas for improvement in CSS, there are also ongoing advancements that enhance its capabilities.

    • Support for advanced CSS features in browsersChrome and Samsung Internet support advanced CSS features like independently modifying CSS properties and animating height auto, enhancing user experience and development process. Edge and Opera yet to follow.

      There are certain features, such as the ability to modify CSS properties independently and animate height auto, which are not yet supported by all browsers, including Edge and Opera. These features can significantly improve the user experience and development process, especially for complex animations and transitions. For instance, animating height auto would allow for easier handling of div sizes without requiring manual measurements. Chrome and Samsung Internet, which are based on Chromium, already support these features, making it essential for Edge and Opera to follow suit. While Samsung Internet updates regularly on Android, the frequency may not be as fast for older devices. However, the browser's auto-updating feature on Android ensures that most users have the latest version. Overall, it is crucial for browsers to keep up with these developments to provide the best user experience and simplify web development.

    • Developers miss automatic package handling from past toolsModern tools should automatically update and install dependencies to save time and reduce frustration for developers.

      There are certain features and conveniences from past development experiences that developers miss and would like to see in modern tools. The speaker specifically mentioned their appreciation for Meteor's automatic package installation and Pure DEPS' handling in the past. They expressed frustration with the current requirement to manage peer dependencies manually and the need to restart applications or browsers after installing updates. They suggested that having development platforms or tools that can automatically update dependencies and install new versions would save time and reduce frustration. Additionally, they highlighted the importance of balancing software safety with ease of use, especially when learning or experimenting with new technologies.

    • Discussing common frustrations in device setup, development workflows, and testingApple's security measures are crucial but can be improved with features like password memorization and fewer prompts. Consistent file casing is essential in development, and a built-in test runner could streamline coding workflows.

      While Apple's security measures can be frustrating at times, particularly when setting up devices or accessing certain services, they are important for protecting user data. However, the user experience could be improved with features like password memorization and fewer password prompts. Another pain point discussed was the importance of consistent file casing in development projects, which can lead to issues if not properly managed. A third topic was the desire for a built-in test runner in coding platforms to make testing more convenient and efficient. Overall, the conversation highlighted common frustrations and suggested potential solutions in the areas of device setup, development workflows, and testing.

    • Using a cordless hot glue gun and discovering a new favorite web browserThe Ryobi cordless hot glue gun provides convenience and portability, while Arc is a unique web browser with innovative features and Chromium-based platform

      Having a cordless hot glue gun, like the Ryobi one, offers convenience and freedom during home repairs and crafting projects. The speaker expressed his satisfaction with the affordability and portability of the tool, which he's used multiple times in the past week for various fixes around the house. He also mentioned his plans to purchase the docking station version for safer use by his children. Additionally, the speaker introduced a new favorite web browser called Arc. He praised its unique features, such as the command palette (activated by pressing "command T") for opening new tabs and other functions, and its Chromium-based platform that provides access to Chrome Dev Tools. The speaker emphasized the browser's ability to differentiate itself from competitors by offering innovative features while maintaining the familiarity of a high-performing browser.

    • Innovative web browsing with EaselsEasels browser offers a Pinterest-style board, horizontal navigation, built-in CSS editing, and a waiting list. Check out Westboss.com/courses and LevelUpTutorials.com for web development learning.

      The Easels browser, a new innovative tool, offers an exceptional user experience with features such as a Pinterest-style board for organizing tabs and screenshots, horizontal navigation, and built-in CSS editing. The browser also includes a waiting list, and users can look forward to the upcoming interview with the CTO on the show. For those interested in learning web development, the speaker recommends checking out Westboss.com/courses and LevelUpTutorials.com for comprehensive courses and tutorials. Overall, the Easels browser represents a game-changing approach to web browsing and development.

    Recent Episodes from Syntax - Tasty Web Development Treats

    788: Supabase: Open Source Firebase for Fullstack JS Apps

    788: Supabase: Open Source Firebase for Fullstack JS Apps

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

    Show Notes

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

    Sick Picks

    Shameless Plugs

    Hit us up on Socials!

    Syntax: X Instagram Tiktok LinkedIn Threads

    Wes: X Instagram Tiktok LinkedIn Threads

    Scott: X Instagram Tiktok LinkedIn Threads

    CJ: X Instagram YouTube TwitchTV

    Randy: X Instagram YouTube Threads

    787: You Should Try Vue.js

    787: You Should Try Vue.js

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

    Show Notes

    Vue.js: The Documentary.

    Sick Picks

    Shameless Plugs

    Hit us up on Socials!

    Syntax: X Instagram Tiktok LinkedIn Threads

    Wes: X Instagram Tiktok LinkedIn Threads

    Scott: X Instagram Tiktok LinkedIn Threads

    Randy: X Instagram YouTube Threads

    786: What Open Source license should you use?

    786: What Open Source license should you use?

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

    Show Notes

    Hit us up on Socials!

    Syntax: X Instagram Tiktok LinkedIn Threads

    Wes: X Instagram Tiktok LinkedIn Threads

    Scott: X Instagram Tiktok LinkedIn Threads

    Randy: X Instagram YouTube Threads

    785: What’s Next for NextJS with Tim Neutkens

    785: What’s Next for NextJS with Tim Neutkens

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

    Show Notes

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

    Sick Picks

    Shameless Plugs

    Hit us up on Socials!

    Syntax: X Instagram Tiktok LinkedIn Threads

    Wes: X Instagram Tiktok LinkedIn Threads

    Scott: X Instagram Tiktok LinkedIn Threads

    Randy: X Instagram YouTube Threads

    784: Logging × Blogging × Testing × Freelancing

    784: Logging × Blogging × Testing × Freelancing

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

    Show Notes

    Sick Picks

    Shameless Plugs

    Hit us up on Socials!

    Syntax: X Instagram Tiktok LinkedIn Threads

    Wes: X Instagram Tiktok LinkedIn Threads

    Scott: X Instagram Tiktok LinkedIn Threads

    Randy: X Instagram YouTube Threads

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

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

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

    Show Notes

    Hit us up on Socials!

    Syntax: X Instagram Tiktok LinkedIn Threads

    Wes: X Instagram Tiktok LinkedIn Threads

    Scott:X Instagram Tiktok LinkedIn Threads

    Randy: X Instagram YouTube Threads

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

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

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

    Show Notes

    Sick Picks

    Shameless Plugs

    Hit us up on Socials!

    Syntax: X Instagram Tiktok LinkedIn Threads

    Wes: X Instagram Tiktok LinkedIn Threads

    Scott:X Instagram Tiktok LinkedIn Threads

    Randy: X Instagram YouTube Threads

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

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

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

    Show Notes

    Sick Picks

    Shameless Plugs

    Hit us up on Socials!

    Syntax: X Instagram Tiktok LinkedIn Threads

    Wes: X Instagram Tiktok LinkedIn Threads

    Scott:X Instagram Tiktok LinkedIn Threads

    Randy: X Instagram YouTube Threads

    780: Cloud Storage: Bandwidth, Storage and BIG ZIPS

    780: Cloud Storage: Bandwidth, Storage and BIG ZIPS

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

    Show Notes

    Hit us up on Socials!

    Syntax: X Instagram Tiktok LinkedIn Threads

    Wes: X Instagram Tiktok LinkedIn Threads

    Scott:X Instagram Tiktok LinkedIn Threads

    Randy: X Instagram YouTube Threads

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

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

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

    Show Notes

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

    Sick Picks

    Brian: Trainer Road
    Marco: Tennis

    Shameless Plugs

    Hit us up on Socials!

    Syntax: X Instagram Tiktok LinkedIn Threads

    Wes: X Instagram Tiktok LinkedIn Threads

    Scott:X Instagram Tiktok LinkedIn Threads

    Randy: X Instagram YouTube Threads

    Related Episodes

    Potluck - Programming Languages × Soft Skills × PHP vs JS × Breakdancing x Spice Blends

    Potluck - Programming Languages × Soft Skills × PHP vs JS × Breakdancing x Spice Blends

    It’s another potluck episode in which Wes and Scott answer your questions! This month - programming languages, how to practice soft skills, PHP vs JS, is it every too late to become a developer, and more.

    Freshbooks - Sponsor

    Get a 30 day free trial of Freshbooks at freshbooks.com/syntax and put SYNTAX in the “How did you hear about us?” section.

    Mlab - Sponsor

    mLab is the leading Database-as-a-Service for MongoDB, powering over half a million deployments worldwide. Wes and Scott use mLab to host their own databases as well as take care of backups, security, scaling and performance. Try out a sandbox database on your next mongoDB project → https://mlab.com.

    Show Notes

    5:00

    • Why don’t you work with Typescript?

    10:52

    • How do you recommend working with APIs/libraries that compete with the DOM (e.g. d3 + react, react + google maps)?

    13:40

    • What is meant by the word “state” when referring to Vue or React?

    16:32

    28:23

    32:43

    • As someone trying to break into the field of programming, should you build everything from scratch, or it ok to use plugins and libraries?

    38:52

    • What would WordPress be like if it were built on Node and GraphQL?
    • Ghost

    46:54

    • I’m learning JavaScript at 34… Do you think I can learn to breakdance at 34 too?

    51:16

    • How do you handle high level page layout when using styled components?

    53:13

    • As a junior dev, should I switch from PHP and Laravel to full stack JS? I love PHP, but JS is taking over.

    Links

    ××× SIIIIICK ××× PIIIICKS ×××

    Shameless Plugs

    Tweet us your tasty treats!

    React + TypeScript

    React + TypeScript

    In this episode of Syntax, Scott and Wes talk about using React with Typescript — how to set it up, components, state, props, passing data, custom hooks, and more!

    Freshbooks - Sponsor

    Get a 30 day free trial of Freshbooks at freshbooks.com/syntax and put SYNTAX in the “How did you hear about us?” section.

    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.

    Linode - Sponsor

    Whether you’re working on a personal project or managing enterprise infrastructure, you deserve simple, affordable, and accessible cloud computing solutions that allow you to take your project to the next level. Simplify your cloud infrastructure with Linode’s Linux virtual machines and develop, deploy, and scale your modern applications faster and easier. Get started on Linode today with a $100 in free credit for listeners of Syntax. You can find all the details at linode.com/syntax. Linode has 11 global data centers and provides 24/7/365 human support with no tiers or hand-offs regardless of your plan size. In addition to shared and dedicated compute instances, you can use your $100 in credit on S3-compatible object storage, Managed Kubernetes, and more. Visit linode.com/syntax and click on the “Create Free Account” button to get started.

    Show Notes

    04:55 - Components

    • Strategies
    • Example:
     type Props = {    value: string; }  const App = (props: Props) => <div />  
    • Return type? JSX.Element
    • FC or FunctionComponent
    • It’s discouraged for this reason: It means that all components accept children, even if they're not supposed to
    • It could be useful for a return type

    12:13 - Props

    • Default props:
     const defaultJoke: JokeProps = {   joke: 'LOL JOE',   id: 'YEAH',   status: 200, };  function JokeItem({ joke = defaultJoke }: JokeProps): JSX.Element {   return (     
  1. {joke.joke} = {joke.id}
  2. ); }
    • Because props are always destructured, you often have to make a new type for your props. You can’t just type each argument by itself.

    18:38 - State

    • Just like Generics, State can be inferred
    • If your type is simple and you’re using useState, it just works:
      const [user, setUser] = useState(null);

    22:27 - useEffect

    • Nothing special required
    • Good use of void: If you want to use a Promise function but not worry about await or .then(), you can pop a void in front of it:
     useEffect(() => { console.log('Mounted'); // getJoke().then(console.log).catch(console.error); void getJoke(); }, [getJoke]);  

    26:09 - Refs

    • Very similar to state however some interesting things with null:
      const ref1 = useRef(null!);
    • “Instantiating the ref with a current value of null but lying to TypeScript that it’s not null.”

    29:33 - Custom Hooks

    • This is a great use case for Tuples

    31:00 - Context

    • This is probably the most complex thing in this list
    • First define the types
    • Use generic to pass in types OR null
    • This can also be non-null if you have default values in createContext:
      const AppCtx = React.createContext(null);

    35:21 - Events

    • The React events system is better than Vanilla JS
    • Can handle them inline and have it inferred: onClick={e ⇒ yeah(e.target)}
     const onSetType = (e: React.ChangeEvent) =>     setType(e.target.value)  
    • React has a bunch of events built in — many of them take a Generic argument so you can specify the type of element that triggered it. Handy for native API methods like play and pause.

    39:27 - ForwardRef

    • Again use of <> to pass in forwarded ref type as param 1, Props types as param 2:
     type Props = { children: React.ReactNode; type: "submit" | "button" }; export type Ref = HTMLButtonElement; export const FancyButton = React.forwardRef((props, ref) => (    ));  

    41:30 - ESLint

    • Typescript-react is good
    • Extend your own
    • Most JS rules apply to TS

    46:20 - React as Global React 17

    • Also add JSX: True to eslint globals for typing things like JSX.Element
    • global.d.ts
     import * as react from "react" import * as react_dom from "react-dom"  declare global {     type React = typeof react     type ReactDOM = typeof react_dom }  

    48:08 - TSConfig

    • jsx: "react"
    • React emit .js files with JSX changed
    • Preserve .jsx file output
    • React-native → .js files with jsx not changed

    53:05 - Frameworks?

    Links

    ××× SIIIIICK ××× PIIIICKS ×××

    Shameless Plugs

    Tweet us your tasty treats!

    Potluck × Twitter Following × TypeScript × Playwright

    Potluck × Twitter Following × TypeScript × Playwright

    In this potluck episode of Syntax, Wes and Scott answer your questions about strategies to find good Twitter follows, should we use TypeScript for a company blog, what’s Playwright, and more!

    Prismic - Sponsor

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

    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.

    LogRocket - Sponsor

    LogRocket lets you replay what users do on your site, helping you reproduce bugs and fix issues faster. It’s an exception tracker, a session re-player and a performance monitor. Get 14 days free at logrocket.com/syntax.

    Show Notes

    ××× SIIIIICK ××× PIIIICKS ×××

    Shameless Plugs

    Tweet us your tasty treats

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

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

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

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

    Zapraszamy do rozmowy i szerszego kontekstu tworzenia konferencji.

    TRANSCRIPT: dc10b815fc184e18b8efb72431323c31

    React and TypeScript - Gabriele Petronella (Small Talk)

    React and TypeScript - Gabriele Petronella (Small Talk)
    Small Talk is a series of live-stream interactive events with our experts, an informal 30-minute chat on their area of expertise where you'll have a chance to interact with them, ask questions and learn straight from the source.

    This time we talk with Gabriele Petronella, our go-to React and TypeScript expert. The popular libraries are at the centre of his workshop, where we'll see how to use them together to overcome the issues related to the scalability and evolvability of your code.

    Small Talk is a chance to go behind the scenes of our experts' work and get a sneak peek of what their workshop will be about and, as usual, you’ll be able to join the conversation by asking questions from home.
    Always wanted to ask a trainer that burning question about what they do? Now you have a chance!

    We’ll discuss how Gabriele's workshop was born, why React and TypeScript are a great couple when used together, what type of professionals will benefit from this the most, what type of exercises we’ll be doing in the workshop and how these will enable you to learn the key concepts during the class.

    Did we say it already? You’re encouraged to be part of the conversation and ask questions during the live streaming through the chat provided by YouTube.

    When: Friday 30th September 2022, from 3 pm CEST

    Who: Gabriele is the co-founder of buildo, a software consulting company based in Milan, where he works as a lead software engineer. Passionate about front-end and back-end architectures, he has extensive experience with react, TypeScript and Scala.

    Workshop link: https://bit.ly/TypeScript_React_ENG_Podcast

    #JavaScript #React #TypeScript #FrontEnd #Framework #WebFramework #Software #SoftwareDevelopment #SoftwareEngineering #SoftwareEngineer #SoftwareDev #BackEnd #FrontEndDevelopment #BackEnd #Code #Coding #Programming