<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Dennis Lin - The Rendered Soul</title>
    <link>https://blog.dennislin.io/</link>
    <description>Recent content on Dennis Lin - The Rendered Soul</description>
    <image>
      <title>Dennis Lin - The Rendered Soul</title>
      <url>https://blog.dennislin.io/%3Clink%20or%20path%20of%20image%20for%20opengraph,%20twitter-cards%3E</url>
      <link>https://blog.dennislin.io/%3Clink%20or%20path%20of%20image%20for%20opengraph,%20twitter-cards%3E</link>
    </image>
    <generator>Hugo -- 0.153.2</generator>
    <language>en</language>
    <lastBuildDate>Sat, 01 Mar 2025 21:14:59 -0700</lastBuildDate>
    <atom:link href="https://blog.dennislin.io/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Standard Schema: The TS Validation Babel Fish</title>
      <link>https://blog.dennislin.io/posts/2025-03-01-standard-schema-validation-babel-fish/</link>
      <pubDate>Sat, 01 Mar 2025 21:14:59 -0700</pubDate>
      <guid>https://blog.dennislin.io/posts/2025-03-01-standard-schema-validation-babel-fish/</guid>
      <description>One interface to unite them all: How a simple spec is transforming the fragmented ecosystem of schema validation libraries</description>
    </item>
    <item>
      <title>Playing with Advanced attr() in CSS</title>
      <link>https://blog.dennislin.io/posts/2025-02-22-advanced-attr-css-pragmatic/</link>
      <pubDate>Fri, 21 Feb 2025 21:03:14 -0800</pubDate>
      <guid>https://blog.dennislin.io/posts/2025-02-22-advanced-attr-css-pragmatic/</guid>
      <description>Typed attr() finally makes attributes useful beyond generated content, and it leads to some surprisingly nice little CSS experiments</description>
    </item>
    <item>
      <title>Advanced Patterns for Production-Ready SSE (continued)</title>
      <link>https://blog.dennislin.io/posts/2025-01-30-advanced-patterns-sse/</link>
      <pubDate>Thu, 30 Jan 2025 22:43:30 -0700</pubDate>
      <guid>https://blog.dennislin.io/posts/2025-01-30-advanced-patterns-sse/</guid>
      <description>Turn simple streams into resilient real-time pipelines with battle-tested techniques that survive the chaos of production environments</description>
    </item>
    <item>
      <title>Svelte 5: The Comeback Story of a Revolutionary Framework</title>
      <link>https://blog.dennislin.io/posts/2024-11-16-svelte-5-comback-story/</link>
      <pubDate>Sat, 16 Nov 2024 19:47:08 -0700</pubDate>
      <guid>https://blog.dennislin.io/posts/2024-11-16-svelte-5-comback-story/</guid>
      <description>How Svelte&amp;#39;s rethinking of reactivity might finally be winning back skeptics like me</description>
    </item>
    <item>
      <title>When tRPC Might Not Be Your Best Bet: Adverse Cases for Choosing Alternatives</title>
      <link>https://blog.dennislin.io/posts/2024-09-27-trpc-adverse-cases-alternatives/</link>
      <pubDate>Fri, 27 Sep 2024 22:41:20 -0700</pubDate>
      <guid>https://blog.dennislin.io/posts/2024-09-27-trpc-adverse-cases-alternatives/</guid>
      <description>Exploring the surprising scenarios where the popular end-to-end type-safe framework might create more friction than flow</description>
    </item>
    <item>
      <title>Building an Interactive Code Syntax Highlighter with HTMX vs React</title>
      <link>https://blog.dennislin.io/posts/2024-08-02-code-syntax-highlighter-htmx-react/</link>
      <pubDate>Fri, 02 Aug 2024 20:35:19 -0700</pubDate>
      <guid>https://blog.dennislin.io/posts/2024-08-02-code-syntax-highlighter-htmx-react/</guid>
      <description>Exploring two different approaches to the same interactive UI problem, and thoughts about developer experience and performance</description>
    </item>
    <item>
      <title>The Quiet Power of Server-Sent Events for Real-Time Apps</title>
      <link>https://blog.dennislin.io/posts/2024-06-17-server-sent-events-real-time-apps/</link>
      <pubDate>Mon, 17 Jun 2024 19:35:12 -0700</pubDate>
      <guid>https://blog.dennislin.io/posts/2024-06-17-server-sent-events-real-time-apps/</guid>
      <description>Explore why SSE is often overlooked yet excels for one-way data streaming, simplifying architecture in many modern web apps.</description>
    </item>
    <item>
      <title>Coffee Tracker: Exploring Bun&#39;s SQLite Integration, Shell API, and v1.1 updates</title>
      <link>https://blog.dennislin.io/posts/2024-05-04-coffee-tracker-bun-updates/</link>
      <pubDate>Sat, 04 May 2024 21:03:42 -0700</pubDate>
      <guid>https://blog.dennislin.io/posts/2024-05-04-coffee-tracker-bun-updates/</guid>
      <description>A hands-on look at two standout features from Bun 1.1 through a simple coffee tracking application</description>
    </item>
    <item>
      <title>Server Actions vs API Routes in Next.js: My Journey with Both Approaches</title>
      <link>https://blog.dennislin.io/posts/2024-01-19-server-actions-api-routes-journey/</link>
      <pubDate>Fri, 19 Jan 2024 21:01:56 -0700</pubDate>
      <guid>https://blog.dennislin.io/posts/2024-01-19-server-actions-api-routes-journey/</guid>
      <description>Some thoughts on choosing between these patterns based on recent project experiences</description>
    </item>
    <item>
      <title>Embracing Interaction to Next Paint (INP) for Better Web Responsiveness</title>
      <link>https://blog.dennislin.io/posts/2023-10-11-interaction-to-next-paint/</link>
      <pubDate>Wed, 11 Oct 2023 20:20:23 -0700</pubDate>
      <guid>https://blog.dennislin.io/posts/2023-10-11-interaction-to-next-paint/</guid>
      <description>As Core Web Vitals evolve, understanding the new INP metric will be crucial for delivering responsive experiences that users expect</description>
    </item>
    <item>
      <title>Digging into JavaScript&#39;s `finally`: Completion Records, Flow Control Pitfalls, and the Road to `using`</title>
      <link>https://blog.dennislin.io/posts/2023-09-08-javascript-finally-using/</link>
      <pubDate>Fri, 08 Sep 2023 19:10:01 -0700</pubDate>
      <guid>https://blog.dennislin.io/posts/2023-09-08-javascript-finally-using/</guid>
      <description>Understanding why `return` and `throw` in `finally` blocks behave unexpectedly, and a look at modern alternatives.</description>
    </item>
    <item>
      <title>Import Maps: The Missing Piece in JavaScript&#39;s Module Ecosystem</title>
      <link>https://blog.dennislin.io/posts/2023-05-18-import-maps-missing-piece/</link>
      <pubDate>Thu, 18 May 2023 20:20:23 -0700</pubDate>
      <guid>https://blog.dennislin.io/posts/2023-05-18-import-maps-missing-piece/</guid>
      <description>How cross-browser support for import maps changes the way we manage dependencies in modern web applications</description>
    </item>
    <item>
      <title>Qwik Preview: Rethinking JavaScript Hydration with Resumability</title>
      <link>https://blog.dennislin.io/posts/2022-10-03-qwik-preview-javascript-hydration-resumability/</link>
      <pubDate>Mon, 03 Oct 2022 20:12:39 -0700</pubDate>
      <guid>https://blog.dennislin.io/posts/2022-10-03-qwik-preview-javascript-hydration-resumability/</guid>
      <description>Exploring Builder.io&amp;#39;s new framework that promises to solve the JavaScript hydration problem and dramatically improve performance</description>
    </item>
    <item>
      <title>ESM in the Wild: Field Notes from the JavaScript Module Transition</title>
      <link>https://blog.dennislin.io/posts/2022-08-20-esm-field-notes-transition/</link>
      <pubDate>Sat, 20 Aug 2022 19:52:34 -0700</pubDate>
      <guid>https://blog.dennislin.io/posts/2022-08-20-esm-field-notes-transition/</guid>
      <description>Insights and practical observations from ongoing transitions in the Node.js ecosystem</description>
    </item>
    <item>
      <title>React 18&#39;s useId(): The End of Element ID Generation Headaches</title>
      <link>https://blog.dennislin.io/posts/2022-06-10-useid-id-gen-headaches/</link>
      <pubDate>Fri, 10 Jun 2022 19:43:01 -0700</pubDate>
      <guid>https://blog.dennislin.io/posts/2022-06-10-useid-id-gen-headaches/</guid>
      <description>A deep dive into how React&amp;#39;s new hook solves persistent accessibility and server rendering challenges</description>
    </item>
    <item>
      <title>React 18 in Production: Concurrent Rendering Delivers on its Promise</title>
      <link>https://blog.dennislin.io/posts/2022-05-19-react-18-production/</link>
      <pubDate>Thu, 19 May 2022 21:12:33 -0700</pubDate>
      <guid>https://blog.dennislin.io/posts/2022-05-19-react-18-production/</guid>
      <description>React 18&amp;#39;s stable release transforms application performance and developer experience</description>
    </item>
    <item>
      <title>Towards Better Date Handling in JavaScript: An Exploration to the Temporal API Proposal</title>
      <link>https://blog.dennislin.io/posts/2022-02-26-better-date-handling-exploration-temporal/</link>
      <pubDate>Sat, 26 Feb 2022 20:45:06 -0700</pubDate>
      <guid>https://blog.dennislin.io/posts/2022-02-26-better-date-handling-exploration-temporal/</guid>
      <description>Modernizing how JavaScript works with dates and times, the Temporal API aims to fix long-standing issues with the built-in Date object.</description>
    </item>
    <item>
      <title>Observability Hygiene: When React Components Accidentally Expose PII to Sentry</title>
      <link>https://blog.dennislin.io/posts/2021-11-05-react-sentry-pii/</link>
      <pubDate>Fri, 05 Nov 2021 20:04:34 -0700</pubDate>
      <guid>https://blog.dennislin.io/posts/2021-11-05-react-sentry-pii/</guid>
      <description>debugging a privacy issue in error tracking and the lessons it taught us about monitoring hygiene</description>
    </item>
    <item>
      <title>Go and Rust bring unprecedented speed to JavaScript bundling and transpilation</title>
      <link>https://blog.dennislin.io/posts/2021-09-29-esbuild-swc-rise-build-tools/</link>
      <pubDate>Wed, 29 Sep 2021 20:32:24 -0700</pubDate>
      <guid>https://blog.dennislin.io/posts/2021-09-29-esbuild-swc-rise-build-tools/</guid>
      <description>How Compiled Languages Are Transforming JavaScript Tooling</description>
    </item>
    <item>
      <title>Gearing Up for React 18: Concurrent React</title>
      <link>https://blog.dennislin.io/posts/2021-08-14-react-18-alpha/</link>
      <pubDate>Sat, 14 Aug 2021 18:50:36 -0700</pubDate>
      <guid>https://blog.dennislin.io/posts/2021-08-14-react-18-alpha/</guid>
      <description>Exploring strategies to prepare your React applications for the concurrent rendering paradigm</description>
    </item>
    <item>
      <title>Learning from the New Experimental CRA to Next.js Migration Codemod</title>
      <link>https://blog.dennislin.io/posts/2021-07-26-experimental-cra-to-next-codemod/</link>
      <pubDate>Mon, 26 Jul 2021 19:51:13 -0700</pubDate>
      <guid>https://blog.dennislin.io/posts/2021-07-26-experimental-cra-to-next-codemod/</guid>
      <description>Automating the migration path from Create React App to Next.js with a new experimental transform tool</description>
    </item>
    <item>
      <title>Cypress vs. Playwright: The Evolving Landscape of Modern E2E Testing</title>
      <link>https://blog.dennislin.io/posts/2021-05-10-cypress-playwright-landscape/</link>
      <pubDate>Mon, 10 May 2021 18:59:15 -0700</pubDate>
      <guid>https://blog.dennislin.io/posts/2021-05-10-cypress-playwright-landscape/</guid>
      <description>Navigating the trade-offs between developer experience and cross-browser capabilities in today&amp;#39;s testing frameworks</description>
    </item>
    <item>
      <title>Code Splitting with @loadable/component</title>
      <link>https://blog.dennislin.io/posts/2021-04-30-code-splitting-loadable-component/</link>
      <pubDate>Fri, 30 Apr 2021 22:03:26 -0700</pubDate>
      <guid>https://blog.dennislin.io/posts/2021-04-30-code-splitting-loadable-component/</guid>
      <description>Unlock server-side rendering compatible code splitting</description>
    </item>
    <item>
      <title>Beyond the Network: Building Truly Resilient PWAs with Offline Support</title>
      <link>https://blog.dennislin.io/posts/2021-02-05-pwa-offline-support/</link>
      <pubDate>Fri, 05 Feb 2021 21:14:55 -0700</pubDate>
      <guid>https://blog.dennislin.io/posts/2021-02-05-pwa-offline-support/</guid>
      <description>Chrome&amp;#39;s upcoming installability requirements are changing the game for Progressive Web Apps — here&amp;#39;s what you need to know and how to prepare your applications</description>
    </item>
    <item>
      <title>GitHub Actions: Powerful CI/CD with Persistent Growing Pains</title>
      <link>https://blog.dennislin.io/posts/2021-01-31-github-actions/</link>
      <pubDate>Sun, 31 Jan 2021 20:49:32 -0700</pubDate>
      <guid>https://blog.dennislin.io/posts/2021-01-31-github-actions/</guid>
      <description>A developer&amp;#39;s journey through automation bliss and unexpected gotchas in the GitHub Actions ecosystem</description>
    </item>
    <item>
      <title>Webpack 5 Module Federation: My First Small-Scale Experiment</title>
      <link>https://blog.dennislin.io/posts/2020-12-18-webpack-5-module-federation-first/</link>
      <pubDate>Fri, 18 Dec 2020 19:51:11 -0700</pubDate>
      <guid>https://blog.dennislin.io/posts/2020-12-18-webpack-5-module-federation-first/</guid>
      <description>Exploring how the latest Webpack feature is changing the way we share code between frontend applications</description>
    </item>
    <item>
      <title>Headless CMS in the Wild: Migration Stories and Strategies</title>
      <link>https://blog.dennislin.io/posts/2020-12-09-headless-cms-in-the-wild/</link>
      <pubDate>Wed, 09 Dec 2020 22:01:12 -0700</pubDate>
      <guid>https://blog.dennislin.io/posts/2020-12-09-headless-cms-in-the-wild/</guid>
      <description>Developer experiences, technical challenges, and unexpected wins when decoupling your content from presentation</description>
    </item>
    <item>
      <title>Svelte 3: The Compiler as Your Framework</title>
      <link>https://blog.dennislin.io/posts/2020-11-02-svelte-3-compiler-as-framework/</link>
      <pubDate>Mon, 02 Nov 2020 19:52:40 -0700</pubDate>
      <guid>https://blog.dennislin.io/posts/2020-11-02-svelte-3-compiler-as-framework/</guid>
      <description>How Svelte&amp;#39;s radical approach creates lightning-fast web apps with minimal runtime code</description>
    </item>
    <item>
      <title>Navigating React State: Redux, Context, and the New Kid, Recoil</title>
      <link>https://blog.dennislin.io/posts/2020-10-26-redux-context-recoil/</link>
      <pubDate>Mon, 26 Oct 2020 18:45:52 -0700</pubDate>
      <guid>https://blog.dennislin.io/posts/2020-10-26-redux-context-recoil/</guid>
      <description>A practical comparison of popular state management options for React developers today</description>
    </item>
    <item>
      <title>Modern Authentication for Single Page Applications</title>
      <link>https://blog.dennislin.io/posts/2020-09-12-authentication-for-spa/</link>
      <pubDate>Wed, 02 Sep 2020 20:25:32 -0700</pubDate>
      <guid>https://blog.dennislin.io/posts/2020-09-12-authentication-for-spa/</guid>
      <description>Because your frontend deserves better than yesterday&amp;#39;s security patterns</description>
    </item>
    <item>
      <title>Motion with Intent: Engineering UI Animations That Elevate User Experience</title>
      <link>https://blog.dennislin.io/posts/2020-07-28-motion-with-intent/</link>
      <pubDate>Tue, 28 Jul 2020 21:04:19 -0700</pubDate>
      <guid>https://blog.dennislin.io/posts/2020-07-28-motion-with-intent/</guid>
      <description>Where every transition becomes an unspoken conversation between interface and user.</description>
    </item>
    <item>
      <title>Testing WebAssembly Performance: Image Processing Example</title>
      <link>https://blog.dennislin.io/posts/2020-05-16-accelerating-the-web-with-wasm/</link>
      <pubDate>Sat, 16 May 2020 13:19:09 -0800</pubDate>
      <guid>https://blog.dennislin.io/posts/2020-05-16-accelerating-the-web-with-wasm/</guid>
      <description>Comparing JavaScript and WebAssembly performance with a simple image brightness test</description>
    </item>
  </channel>
</rss>
