<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>yceffort (English)</title>
    <link>https://yceffort.kr/en</link>
    <atom:link href="https://yceffort.kr/en/feed.xml" rel="self" type="application/rss+xml" />
    <description>Grind. Learn. Repeat.</description>
    <language>en</language>
    <lastBuildDate>Sat, 10 Oct 2026 03:05:00 GMT</lastBuildDate>
    
        <item>
          <title><![CDATA[How to Compare the Models Behind a Coding Agent with SWE-bench]]></title>
          <link>https://yceffort.kr/en/2026/10/swe-bench-before-swapping-models</link>
          <guid>https://yceffort.kr/en/2026/10/swe-bench-before-swapping-models</guid>
          <pubDate>Sat, 10 Oct 2026 03:05:00 GMT</pubDate>
          <description><![CDATA[How do you measure the model performance of a coding agent?]]></description>
          <category><![CDATA[ai]]></category>
        </item>
      
        <item>
          <title><![CDATA[How Bundlers Remember Imports]]></title>
          <link>https://yceffort.kr/en/2026/10/how-bundlers-remember-imports</link>
          <guid>https://yceffort.kr/en/2026/10/how-bundlers-remember-imports</guid>
          <pubDate>Thu, 08 Oct 2026 14:04:00 GMT</pubDate>
          <description><![CDATA[Tracing a coldpath misclassification that read every synchronous dependency in the Turbopack analysis file as a static import. This post compares the graph information and build output of webpack, Turbopack, Vite, and esbuild, and looks at which clues reveal the original syntax and which cases cannot be recovered.]]></description>
          <category><![CDATA[bundler]]></category><category><![CDATA[debugging]]></category><category><![CDATA[compiler]]></category>
        </item>
      
        <item>
          <title><![CDATA[Improving number-flow Performance: Moving Animations onto the Compositor Thread]]></title>
          <link>https://yceffort.kr/en/2026/10/number-flow-compositor-performance</link>
          <guid>https://yceffort.kr/en/2026/10/number-flow-compositor-performance</guid>
          <pubDate>Wed, 07 Oct 2026 07:05:00 GMT</pubDate>
          <description><![CDATA[In the number-flow fork I built to support old browsers, animations in modern browsers were still recalculating styles on every frame. This post records how 0.2.0 moved additive compositing into transform and opacity keyframes, how the change was measured, and the costs that remain in the mask and in interruptions.]]></description>
          <category><![CDATA[web-performance]]></category><category><![CDATA[animation]]></category><category><![CDATA[browser]]></category><category><![CDATA[oss]]></category><category><![CDATA[css]]></category>
        </item>
      
        <item>
          <title><![CDATA[Saving Marp Slides from a Next.js App for Offline Use]]></title>
          <link>https://yceffort.kr/en/2026/09/offline-marp-slides-in-nextjs</link>
          <guid>https://yceffort.kr/en/2026/09/offline-marp-slides-in-nextjs</guid>
          <pubDate>Wed, 30 Sep 2026 02:23:00 GMT</pubDate>
          <description><![CDATA[From running the existing Marp viewer offline to fixing what deployments, networks, and the presenter window exposed along the way.]]></description>
          <category><![CDATA[pwa]]></category><category><![CDATA[caching]]></category><category><![CDATA[service-worker]]></category><category><![CDATA[browser]]></category><category><![CDATA[nextjs]]></category>
        </item>
      
        <item>
          <title><![CDATA[Pages You Leave Don't Die, They Hide: Next.js cacheComponents and React Activity]]></title>
          <link>https://yceffort.kr/en/2026/09/nextjs-cache-components-activity</link>
          <guid>https://yceffort.kr/en/2026/09/nextjs-cache-components-activity</guid>
          <pubDate>Sat, 26 Sep 2026 13:00:00 GMT</pubDate>
          <description><![CDATA[Next.js 16's cacheComponents hides the pages you leave with React Activity instead of unmounting them. Following a three.js canvas that went blank after a back navigation, I read the router, React, and react-three-fiber source and reproduced it in a browser.]]></description>
          <category><![CDATA[nextjs]]></category><category><![CDATA[react]]></category><category><![CDATA[debugging]]></category><category><![CDATA[caching]]></category>
        </item>
      
        <item>
          <title><![CDATA[Tracing Toss Securities JavaScript Without Source Maps]]></title>
          <link>https://yceffort.kr/en/2026/09/tracing-third-party-javascript-without-sourcemaps</link>
          <guid>https://yceffort.kr/en/2026/09/tracing-third-party-javascript-without-sourcemaps</guid>
          <pubDate>Sat, 26 Sep 2026 09:00:00 GMT</pubDate>
          <description><![CDATA[Chuseok side quest, part 3: with love, to Toss Securities]]></description>
          <category><![CDATA[debugging]]></category><category><![CDATA[web-performance]]></category>
        </item>
      
        <item>
          <title><![CDATA[Building a Bundle Analyzer with V8 Coverage and Source Maps]]></title>
          <link>https://yceffort.kr/en/2026/09/building-coldpath-v8-coverage-analyzer</link>
          <guid>https://yceffort.kr/en/2026/09/building-coldpath-v8-coverage-analyzer</guid>
          <pubDate>Tue, 22 Sep 2026 09:00:00 GMT</pubDate>
          <description><![CDATA[Chuseok side quest, part 2: building a V8 coverage analyzer, one dead end after another.]]></description>
          <category><![CDATA[web-performance]]></category><category><![CDATA[bundler]]></category><category><![CDATA[debugging]]></category><category><![CDATA[algorithm]]></category><category><![CDATA[v8]]></category>
        </item>
      
        <item>
          <title><![CDATA[Tracing When This Blog's JavaScript Actually Runs]]></title>
          <link>https://yceffort.kr/en/2026/09/tracing-bundle-waste-with-v8-coverage-and-sourcemaps</link>
          <guid>https://yceffort.kr/en/2026/09/tracing-bundle-waste-with-v8-coverage-and-sourcemaps</guid>
          <pubDate>Tue, 22 Sep 2026 09:00:00 GMT</pubDate>
          <description><![CDATA[Chuseok side quest, part 1: starting with my own blog]]></description>
          <category><![CDATA[web-performance]]></category><category><![CDATA[bundler]]></category><category><![CDATA[blogging]]></category><category><![CDATA[debugging]]></category><category><![CDATA[rust]]></category>
        </item>
      
        <item>
          <title><![CDATA[I Grew Never-Executed JavaScript to 10MiB]]></title>
          <link>https://yceffort.kr/en/2026/09/unused-javascript-cost</link>
          <guid>https://yceffort.kr/en/2026/09/unused-javascript-cost</guid>
          <pubDate>Wed, 16 Sep 2026 09:00:00 GMT</pubDate>
          <description><![CDATA[How much do you lose when 10MiB of functions you never call ships to the browser? I ran 855 measurements to separate the cost created by bytes from the cost created by the shape of the code. Uncalled declarations cost about 21ms per MiB and did not grow when I slowed the CPU by 4x, while initialization code that runs the moment the file is read added 201ms per MiB to the main thread. With real libraries, merely importing a module was enough to evaluate it.]]></description>
          <category><![CDATA[web-performance]]></category><category><![CDATA[javascript]]></category><category><![CDATA[browser]]></category><category><![CDATA[bundler]]></category>
        </item>
      
        <item>
          <title><![CDATA[Running One Web on Multiple WebViews: Folding Environment Branches into Adapters]]></title>
          <link>https://yceffort.kr/en/2026/09/one-web-on-multiple-webviews</link>
          <guid>https://yceffort.kr/en/2026/09/one-web-on-multiple-webviews</guid>
          <pubDate>Wed, 09 Sep 2026 05:00:00 GMT</pubDate>
          <description><![CDATA[We supported the iOS and Android WebViews of our own app and of a partner app, and gathered the scattered environment branching into adapters. This is a record of how we organized insets, the bridge, and CSS, along with the problems we hit with the SSR seed and hydration.]]></description>
          <category><![CDATA[browser]]></category><category><![CDATA[design-patterns]]></category><category><![CDATA[css]]></category>
        </item>
      
        <item>
          <title><![CDATA[The Real Cost of Drop-in Compatibility: What I Threw Away Porting markdownlint-cli2 to Rust]]></title>
          <link>https://yceffort.kr/en/2026/09/porting-markdownlint-cli2-to-rust</link>
          <guid>https://yceffort.kr/en/2026/09/porting-markdownlint-cli2-to-rust</guid>
          <pubDate>Tue, 08 Sep 2026 12:00:00 GMT</pubDate>
          <description><![CDATA[I ported markdownlint-cli2 to Rust and matched 264,114 diagnostics on this blog repository byte for byte. The commits that ported 51 rules landed in a single day, but turning that into a tool you could actually swap in took two weeks. A record of giving up a parser 37 times faster, correcting two performance misreadings, and finding 11 more compatibility differences in an adversarial review.]]></description>
          <category><![CDATA[rust]]></category><category><![CDATA[markdown]]></category><category><![CDATA[oss]]></category><category><![CDATA[compiler]]></category><category><![CDATA[eslint]]></category>
        </item>
      
        <item>
          <title><![CDATA[Tearing Apart a Third-Party SDK and Rebuilding It My Way: Without Touching a Single Line of Logic]]></title>
          <link>https://yceffort.kr/en/2026/08/rebuilding-a-vendor-sdk</link>
          <guid>https://yceffort.kr/en/2026/08/rebuilding-a-vendor-sdk</guid>
          <pubDate>Mon, 31 Aug 2026 05:00:00 GMT</pubDate>
          <description><![CDATA[I imported one constant and 97.7% of the bundle came along with it. The vendor had no timeline for a fix, so I pried open the published source maps, recovered over 400 TypeScript files, and rewrote the build, the entry points, and the dependencies however I wanted. Everything except the logic. That got /send to -77.5% raw. The hard part came after. All 1,932 tests passed, and a few of them were watching nothing at all.]]></description>
          <category><![CDATA[bundler]]></category><category><![CDATA[web-performance]]></category><category><![CDATA[debugging]]></category><category><![CDATA[testing]]></category><category><![CDATA[npm]]></category>
        </item>
      
        <item>
          <title><![CDATA[Measuring the Cost of Going Through a Service Worker: Building in the Lab the Control Group GA4 Could Not Give Me]]></title>
          <link>https://yceffort.kr/en/2026/08/service-worker-caching-3</link>
          <guid>https://yceffort.kr/en/2026/08/service-worker-caching-3</guid>
          <pubDate>Fri, 28 Aug 2026 11:00:00 GMT</pubDate>
          <description><![CDATA[I set out to confirm the 500 ms hint that part 2 left behind, but the hard reloads that would form the control group arrive at under one a day. So I built the control group myself, with Playwright and a shaping proxy, and found that going through the worker costs 2 ms on a navigation, and that the cost is not latency but the bytes the worker fetches in the background on every click. The gap I had left between the lab and the field turned out, only after the post was written, to be a measurement definition difference created by 103 Early Hints. Third part of the service worker caching deep dive series.]]></description>
          <category><![CDATA[service-worker]]></category><category><![CDATA[web-performance]]></category><category><![CDATA[caching]]></category><category><![CDATA[debugging]]></category><category><![CDATA[browser]]></category>
        </item>
      
        <item>
          <title><![CDATA[Applying Service Worker Caching: App Router Traps and GA4 Field Data]]></title>
          <link>https://yceffort.kr/en/2026/08/service-worker-caching-2</link>
          <guid>https://yceffort.kr/en/2026/08/service-worker-caching-2</guid>
          <pubDate>Thu, 27 Aug 2026 11:00:00 GMT</pubDate>
          <description><![CDATA[Armed with the theory from Part 1, I made this blog (Next.js App Router) open offline. On the first deploy, the post I had just read would not open offline; on the second, posts opened but every image was broken. This is a chronicle of fixing, one deploy at a time, the traps created by soft navigation, prefetching, and next/image, and a record of settling the results with GA4 real-user data. Returning-visitor FCP improved by 634ms on average, while TTFB worsened by 525ms on average. The second post of the Service Worker Caching Deep Dive series.]]></description>
          <category><![CDATA[service-worker]]></category><category><![CDATA[caching]]></category><category><![CDATA[nextjs]]></category><category><![CDATA[pwa]]></category><category><![CDATA[web-performance]]></category>
        </item>
      
        <item>
          <title><![CDATA[Building an OG Scraping Server in Node.js (2): How SSRF Gets Through]]></title>
          <link>https://yceffort.kr/en/2026/08/og-scraping-server-2</link>
          <guid>https://yceffort.kr/en/2026/08/og-scraping-server-2</guid>
          <pubDate>Sat, 22 Aug 2026 05:00:00 GMT</pubDate>
          <description><![CDATA[A feature where the server opens a URL the user handed it has the textbook conditions for SSRF written into its spec. Six ways a whitelist gets bypassed first, then five defensive principles that block them, all actually run on Node. Strip IPv4-mapped by hand and it gets through in hex notation, undici lookup hook is never called when the host is an IP literal, and URL.hostname keeps the brackets on an IPv6 literal. The final post of a two-part design note on OG scraping servers.]]></description>
          <category><![CDATA[security]]></category><category><![CDATA[nodejs]]></category><category><![CDATA[backend]]></category><category><![CDATA[networking]]></category>
        </item>
      
        <item>
          <title><![CDATA[Building an OG Scraping Server in Node.js (1): From Runtime Choice to Error Rate and Latency]]></title>
          <link>https://yceffort.kr/en/2026/08/og-scraping-server-1</link>
          <guid>https://yceffort.kr/en/2026/08/og-scraping-server-1</guid>
          <pubDate>Sat, 22 Aug 2026 04:30:00 GMT</pubDate>
          <description><![CDATA[The "10% error rate" of a link preview server is a single number that five different kinds of failure got mashed into. This post works out why this workload is I/O bound at that TPS, where runtime choice actually diverges across four points, and then moves on to lowering the error rate with User-Agent and encoding. Node built-in TextDecoder turns CP949 extension characters into different characters without raising an error, and a scraped og:title is not an API response but user input. It also covers cache stampedes, negative caching, and a two-million-run simulation that verifies "P95 under one second" by working backwards from the cache hit rate. The first post of a two-part design note on OG scraping servers.]]></description>
          <category><![CDATA[web-scraping]]></category><category><![CDATA[backend]]></category><category><![CDATA[nodejs]]></category><category><![CDATA[networking]]></category><category><![CDATA[error-handling]]></category>
        </item>
      
        <item>
          <title><![CDATA[Next.js Turbopack Turned One Singleton into Two: A Scope Hoisting Bug and a Circular Import]]></title>
          <link>https://yceffort.kr/en/2026/08/turbopack-scope-hoisting-singleton-split</link>
          <guid>https://yceffort.kr/en/2026/08/turbopack-scope-hoisting-singleton-split</guid>
          <pubDate>Wed, 19 Aug 2026 03:00:00 GMT</pubDate>
          <description><![CDATA[In a Next.js 16 Turbopack production build, a module-scope singleton became two live instances at runtime. Inside the same synchronous block, one condition contradicted the other, and responses that arrived in 30ms still timed out. This is the record of tracing the cause through the bundle output: a partial scope hoisting merge, a circular import, an upstream bug that had already been fixed, and the single-variable experiment I ran too late.]]></description>
          <category><![CDATA[debugging]]></category><category><![CDATA[bundler]]></category><category><![CDATA[nextjs]]></category><category><![CDATA[compiler]]></category><category><![CDATA[javascript]]></category>
        </item>
      
        <item>
          <title><![CDATA[Killing Frame Drops in a framer-motion Banner: Two Wrong Turns and One Easing Function]]></title>
          <link>https://yceffort.kr/en/2026/08/framer-motion-banner-frame-drop</link>
          <guid>https://yceffort.kr/en/2026/08/framer-motion-banner-frame-drop</guid>
          <pubDate>Sat, 15 Aug 2026 11:00:00 GMT</pubDate>
          <description><![CDATA[A banner built with framer-motion made the entire home screen stutter for the 0.6 seconds it took to open. The record of guessing the cause from the code, having that guess overturned twice by measurement, and finally removing the reflow with a single easing function. Plus what the work left behind: the gap between declaration and execution, the principle that properties decide performance, preserving mechanisms, suspecting your instruments first, and proving sameness with a curve.]]></description>
          <category><![CDATA[animation]]></category><category><![CDATA[web-performance]]></category><category><![CDATA[debugging]]></category><category><![CDATA[browser]]></category>
        </item>
      
        <item>
          <title><![CDATA[How Service Worker Caching Works: The Proxy, the Lifecycle, and Five Strategies]]></title>
          <link>https://yceffort.kr/en/2026/08/service-worker-caching-1</link>
          <guid>https://yceffort.kr/en/2026/08/service-worker-caching-1</guid>
          <pubDate>Wed, 12 Aug 2026 11:00:00 GMT</pubDate>
          <description><![CDATA[A service worker is a programmable proxy standing between your site and the network. Where does it stand, why does the cache rot, why am I seeing the old version after deploying, what goes in under which strategy, and so, should you use it? Holding on to five questions you actually meet in practice, this post goes down to the details of state transitions and to a real measurement in which a 104KB opaque response was accounted as 6.6MB of storage. It is the general theory that did not fit into the cache chapter of Frontend Performance Optimization Deep Dive (published in Korean), and the first post of the Service Worker Caching Deep Dive series.]]></description>
          <category><![CDATA[service-worker]]></category><category><![CDATA[caching]]></category><category><![CDATA[browser]]></category><category><![CDATA[web-performance]]></category><category><![CDATA[pwa]]></category>
        </item>
      
        <item>
          <title><![CDATA[Porting number-flow to Old Browsers: Five Decisions and Two Reversals]]></title>
          <link>https://yceffort.kr/en/2026/08/number-flow-fork-for-old-browsers</link>
          <guid>https://yceffort.kr/en/2026/08/number-flow-fork-for-old-browsers</guid>
          <pubDate>Tue, 11 Aug 2026 13:00:00 GMT</pubDate>
          <description><![CDATA[The minimum versions where number-flow turns animations on are Chrome 125 and Safari 17.2. A record of the decisions made while building a fork that lowers this floor to Chrome 66 and WebKit 16.4, the two judgment calls I ended up reversing, and the Safari bug investigation that made me give up on automatic downgrading.]]></description>
          <category><![CDATA[browser]]></category><category><![CDATA[animation]]></category><category><![CDATA[oss]]></category><category><![CDATA[css]]></category>
        </item>
      
        <item>
          <title><![CDATA[What Happens When You Install typescript@7: A Blog Monorepo Migration Log]]></title>
          <link>https://yceffort.kr/en/2026/08/typescript-7-oxc-migration</link>
          <guid>https://yceffort.kr/en/2026/08/typescript-7-oxc-migration</guid>
          <pubDate>Mon, 10 Aug 2026 13:00:00 GMT</pubDate>
          <description><![CDATA[I dropped typescript 7.0.2 into a monorepo where pnpm lint took 12 minutes 32 seconds. Type checking passed quietly, but next build broke and lint crashed. A record of the chain reaction from one day of swapping eslint and prettier for oxlint and oxfmt, with before-and-after measurements. To say it up front, the build did not get any faster.]]></description>
          <category><![CDATA[typescript]]></category><category><![CDATA[blogging]]></category><category><![CDATA[npm]]></category><category><![CDATA[eslint]]></category><category><![CDATA[debugging]]></category>
        </item>
      
        <item>
          <title><![CDATA[Autoscaling Is Automatic but Not Instant: HPA's Timeline, Measured Segment by Segment]]></title>
          <link>https://yceffort.kr/en/2026/08/k8s-for-frontend-5</link>
          <guid>https://yceffort.kr/en/2026/08/k8s-for-frontend-5</guid>
          <pubDate>Mon, 10 Aug 2026 03:00:00 GMT</pubDate>
          <description><![CDATA[Raise traffic 12x and it takes 31.5 seconds for a new pod to receive its first request. I pulled an itemized bill for those 31.5 seconds with a stopwatch: the structure dominated by the detection window, the conditions under which the autoscaler goes blind in the five minutes right after a deploy, the scale-down staircase, why memory-based HPA misfires on Node, and KEDA's preemptive scaling. Part 5 of the Kubernetes for frontend developers series.]]></description>
          <category><![CDATA[kubernetes]]></category><category><![CDATA[devops]]></category><category><![CDATA[web-performance]]></category><category><![CDATA[backend]]></category>
        </item>
      
        <item>
          <title><![CDATA[How Do Pods Terminate? Measuring the Causes and Fixes of Deploy-Time Errors]]></title>
          <link>https://yceffort.kr/en/2026/08/k8s-for-frontend-4</link>
          <guid>https://yceffort.kr/en/2026/08/k8s-for-frontend-4</guid>
          <pubDate>Sat, 08 Aug 2026 14:00:00 GMT</pubDate>
          <description><![CDATA[Even a deploy that changes not a single line of code leaks errors. This is a measured record of tagging every failure that leaks during rolling deploys by type and timestamp, performing an autopsy on four causes, and stacking prescriptions one layer at a time until the count reaches zero. Includes the actual Next.js shutdown code, hostage draining, and the real CrashLoopBackOff timetable. Part 4 of the Kubernetes for frontend developers series.]]></description>
          <category><![CDATA[kubernetes]]></category><category><![CDATA[devops]]></category><category><![CDATA[debugging]]></category><category><![CDATA[networking]]></category>
        </item>
      
        <item>
          <title><![CDATA[How Does Traffic Reach My Pod? From ClusterIP to port-forward]]></title>
          <link>https://yceffort.kr/en/2026/08/k8s-for-frontend-3</link>
          <guid>https://yceffort.kr/en/2026/08/k8s-for-frontend-3</guid>
          <pubDate>Thu, 06 Aug 2026 14:00:00 GMT</pubDate>
          <description><![CDATA[A Service's ClusterIP is an IP attached to no machine, yet curl reaches it. iptables rules and conntrack, EndpointSlice, cluster DNS and ndots, Gateway, and port-forward: a record of opening up the entire path a request takes to a pod, directly in a kind cluster. Part 3 of the Kubernetes for frontend developers series.]]></description>
          <category><![CDATA[kubernetes]]></category><category><![CDATA[networking]]></category><category><![CDATA[devops]]></category><category><![CDATA[debugging]]></category>
        </item>
      
        <item>
          <title><![CDATA[How My Next.js App Becomes a Pod: A Record of Opening Up Containers and Pods]]></title>
          <link>https://yceffort.kr/en/2026/08/k8s-for-frontend-2</link>
          <guid>https://yceffort.kr/en/2026/08/k8s-for-frontend-2</guid>
          <pubDate>Wed, 05 Aug 2026 12:00:00 GMT</pubDate>
          <description><![CDATA[The same Next.js app produced one 1.72GB image and one 208MB image. This post traces the missing 1.5GB back through the layers, and verifies with PIDs and cgroup files that a container is an isolated process. The second post of the Kubernetes for frontend developers series.]]></description>
          <category><![CDATA[kubernetes]]></category><category><![CDATA[docker]]></category><category><![CDATA[devops]]></category>
        </item>
      
        <item>
          <title><![CDATA[A Kubernetes Concept Map for Frontend Developers: From Pods to Autoscalers]]></title>
          <link>https://yceffort.kr/en/2026/08/k8s-for-frontend-1</link>
          <guid>https://yceffort.kr/en/2026/08/k8s-for-frontend-1</guid>
          <pubDate>Wed, 05 Aug 2026 11:00:00 GMT</pubDate>
          <description><![CDATA[The Kubernetes vocabulary and structure that frontend developers running SSR actually encounter, organized in the order of real work: the overall cluster structure, what makes up a deploy, pod state and resources, the traffic path, and autoscaling. The first post of the series and the reference map for the rest.]]></description>
          <category><![CDATA[kubernetes]]></category><category><![CDATA[devops]]></category>
        </item>
      
        <item>
          <title><![CDATA[Why Is Your Node.js Pod That Size? Sizing Measured Firsthand, from NODE_OPTIONS to Pod Count]]></title>
          <link>https://yceffort.kr/en/2026/08/nodejs-k8s-pod-sizing</link>
          <guid>https://yceffort.kr/en/2026/08/nodejs-k8s-pod-sizing</guid>
          <pubDate>Mon, 03 Aug 2026 12:00:00 GMT</pubDate>
          <description><![CDATA[I added one GC tuning flag to the same workload and peak RSS jumped from 201MB to 593MB, while the live data stayed the same. This post traces back through V8 New Space with direct measurements to show why that result is exactly what should happen, and lays out the three axes frontend developers can use to size a Node.js pod.]]></description>
          <category><![CDATA[memory]]></category><category><![CDATA[nodejs]]></category><category><![CDATA[kubernetes]]></category><category><![CDATA[devops]]></category><category><![CDATA[v8]]></category>
        </item>
      
        <item>
          <title><![CDATA[Where Frontend Came From, and Where It Goes After Agents]]></title>
          <link>https://yceffort.kr/en/2026/07/frontend-past-present-after-agents</link>
          <guid>https://yceffort.kr/en/2026/07/frontend-past-present-after-agents</guid>
          <pubDate>Wed, 22 Jul 2026 01:00:00 GMT</pubDate>
          <description><![CDATA[Why the layers piled up, why we returned to the server, and why the stack survives even after agents. And why the survival of a stack and the value of the people who know it are two separate things]]></description>
          <category><![CDATA[essay]]></category><category><![CDATA[ai]]></category><category><![CDATA[design-patterns]]></category><category><![CDATA[career]]></category>
        </item>
      
        <item>
          <title><![CDATA[When Was the Last Time You Read Code Seriously?]]></title>
          <link>https://yceffort.kr/en/2026/06/learning-what-ai-cant-do</link>
          <guid>https://yceffort.kr/en/2026/06/learning-what-ai-cant-do</guid>
          <pubDate>Sun, 21 Jun 2026 02:00:00 GMT</pubDate>
          <description><![CDATA[The friction that made judgment expensive is the same friction that taught it. Why the skill growing most valuable in the AI era is the one being cultivated least]]></description>
          <category><![CDATA[essay]]></category><category><![CDATA[ai]]></category><category><![CDATA[career]]></category><category><![CDATA[software-engineering]]></category><category><![CDATA[code-review]]></category>
        </item>
      
        <item>
          <title><![CDATA[If the Code Meets Spec and the Bugs Get Fixed, Does It Matter That You Can't Read It?]]></title>
          <link>https://yceffort.kr/en/2026/06/do-you-need-to-read-code</link>
          <guid>https://yceffort.kr/en/2026/06/do-you-need-to-read-code</guid>
          <pubDate>Thu, 11 Jun 2026 15:00:00 GMT</pubDate>
          <description><![CDATA[If the spec is satisfied and the bugs get fixed, do you still need to be able to read the code? Understanding doesn't disappear — this essay traces where it moves.]]></description>
          <category><![CDATA[ai]]></category><category><![CDATA[essay]]></category><category><![CDATA[career]]></category><category><![CDATA[code-review]]></category><category><![CDATA[software-engineering]]></category>
        </item>
      
        <item>
          <title><![CDATA[If AI Erases the Boundaries Between Planning, Development, and Design, What Remains?]]></title>
          <link>https://yceffort.kr/en/2026/06/when-job-titles-blur</link>
          <guid>https://yceffort.kr/en/2026/06/when-job-titles-blur</guid>
          <pubDate>Thu, 11 Jun 2026 15:00:00 GMT</pubDate>
          <description><![CDATA[The claim that job boundaries are collapsing is only half true. What collapses is production; judgment and responsibility remain.]]></description>
          <category><![CDATA[ai]]></category><category><![CDATA[essay]]></category><category><![CDATA[software-engineering]]></category><category><![CDATA[career]]></category>
        </item>
      
        <item>
          <title><![CDATA[React cache() Deep Dive: Request-Scoped Memoization, Read from the Source]]></title>
          <link>https://yceffort.kr/en/2026/05/react-cache-function-deep-dive</link>
          <guid>https://yceffort.kr/en/2026/05/react-cache-function-deep-dive</guid>
          <pubDate>Sat, 30 May 2026 05:00:00 GMT</pubDate>
          <description><![CDATA[Every odd rule of React's cache() falls straight out of a ~30-line implementation. We trace the dispatcher, getCacheForType, and the WeakMap/Map tree at the source level to see exactly how request-scoped memoization works.]]></description>
          <category><![CDATA[react]]></category><category><![CDATA[caching]]></category>
        </item>
      
        <item>
          <title><![CDATA[The TanStack npm Supply Chain Attack: Why pull_request_target Is Dangerous]]></title>
          <link>https://yceffort.kr/en/2026/05/tanstack-npm-supply-chain-attack</link>
          <guid>https://yceffort.kr/en/2026/05/tanstack-npm-supply-chain-attack</guid>
          <pubDate>Sat, 16 May 2026 03:00:00 GMT</pubDate>
          <description><![CDATA[Analysis of the @tanstack/* supply chain incident. The risks of pull_request_target, GitHub Actions cache, and OIDC trusted publishers, and how to defend against them.]]></description>
          <category><![CDATA[security]]></category><category><![CDATA[ci-cd]]></category><category><![CDATA[npm]]></category><category><![CDATA[oss]]></category><category><![CDATA[git]]></category>
        </item>
      
        <item>
          <title><![CDATA[Bun rewrite Exposed Something: OSS Could Only Stop External AI]]></title>
          <link>https://yceffort.kr/en/2026/05/bun-rust-rewrite-real-story</link>
          <guid>https://yceffort.kr/en/2026/05/bun-rust-rewrite-real-story</guid>
          <pubDate>Thu, 14 May 2026 17:00:00 GMT</pubDate>
          <description><![CDATA[Bun moved roughly 960,000 lines from Zig to Rust in six days using Claude Code. The meaning here is not code quality but OSS governance and resource asymmetry.]]></description>
          <category><![CDATA[oss]]></category><category><![CDATA[ai]]></category><category><![CDATA[essay]]></category><category><![CDATA[software-engineering]]></category><category><![CDATA[rust]]></category>
        </item>
      
        <item>
          <title><![CDATA[What makes a package you can keep using for years different]]></title>
          <link>https://yceffort.kr/en/2026/05/good-package-for-long-term-users</link>
          <guid>https://yceffort.kr/en/2026/05/good-package-for-long-term-users</guid>
          <pubDate>Sat, 09 May 2026 03:54:08 GMT</pubDate>
          <description><![CDATA[A good package has to be user-friendly not just in features, but in dependencies, version bumps, compatibility, and release policy.]]></description>
          <category><![CDATA[npm]]></category><category><![CDATA[essay]]></category><category><![CDATA[oss]]></category><category><![CDATA[software-engineering]]></category>
        </item>
      
        <item>
          <title><![CDATA[The invisible cost in PR diffs: we are not reviewing the code our users receive]]></title>
          <link>https://yceffort.kr/en/2026/05/pr-diff-vs-bundle</link>
          <guid>https://yceffort.kr/en/2026/05/pr-diff-vs-bundle</guid>
          <pubDate>Sun, 03 May 2026 06:50:00 GMT</pubDate>
          <description><![CDATA[The bundle costs that code review misses, and how to surface them in the PR.]]></description>
          <category><![CDATA[bundler]]></category><category><![CDATA[code-review]]></category><category><![CDATA[web-performance]]></category><category><![CDATA[software-engineering]]></category>
        </item>
      
        <item>
          <title><![CDATA['use cache' Directive Deep Dive: To the End of Cache Boundaries]]></title>
          <link>https://yceffort.kr/en/2026/05/use-cache-deep-dive</link>
          <guid>https://yceffort.kr/en/2026/05/use-cache-deep-dive</guid>
          <pubDate>Fri, 01 May 2026 10:47:36 GMT</pubDate>
          <description><![CDATA[Build-time transformations, cache key serialization, ResumeDataCache, cacheHandler, and Cache Components - everything created by a single 'use cache' line]]></description>
          <category><![CDATA[react]]></category><category><![CDATA[nextjs]]></category><category><![CDATA[caching]]></category><category><![CDATA[web-performance]]></category><category><![CDATA[backend]]></category>
        </item>
      
        <item>
          <title><![CDATA['use client' Directive Deep Dive: To the Edge of Client Boundaries]]></title>
          <link>https://yceffort.kr/en/2026/05/use-client-deep-dive</link>
          <guid>https://yceffort.kr/en/2026/05/use-client-deep-dive</guid>
          <pubDate>Fri, 01 May 2026 03:00:00 GMT</pubDate>
          <description><![CDATA[Module boundaries created by a single line of 'use client', build-time transformations, Flight serialization, and performance implications]]></description>
          <category><![CDATA[react]]></category><category><![CDATA[nextjs]]></category><category><![CDATA[bundler]]></category><category><![CDATA[compiler]]></category><category><![CDATA[web-performance]]></category>
        </item>
      
        <item>
          <title><![CDATA[AI Only Amplifies Me to the Level I Can See]]></title>
          <link>https://yceffort.kr/en/2026/04/ai-only-amplifies-what-you-see</link>
          <guid>https://yceffort.kr/en/2026/04/ai-only-amplifies-what-you-see</guid>
          <pubDate>Mon, 20 Apr 2026 03:00:00 GMT</pubDate>
          <description><![CDATA[I'm definitely coding faster, but why are my codebase and skills staying the same? Examining the gap between perceived and proven benefits.]]></description>
          <category><![CDATA[ai]]></category><category><![CDATA[career]]></category><category><![CDATA[essay]]></category>
        </item>
      
        <item>
          <title><![CDATA[Why We Still Use Next.js]]></title>
          <link>https://yceffort.kr/en/2026/03/why-still-nextjs</link>
          <guid>https://yceffort.kr/en/2026/03/why-still-nextjs</guid>
          <pubDate>Mon, 23 Mar 2026 13:00:00 GMT</pubDate>
          <description><![CDATA[Switching costs stronger than technical superiority]]></description>
          <category><![CDATA[nextjs]]></category><category><![CDATA[essay]]></category><category><![CDATA[serverless]]></category><category><![CDATA[oss]]></category>
        </item>
      
        <item>
          <title><![CDATA[Is Next.js Fast Enough?]]></title>
          <link>https://yceffort.kr/en/2026/03/is-nextjs-fast-enough</link>
          <guid>https://yceffort.kr/en/2026/03/is-nextjs-fast-enough</guid>
          <pubDate>Sat, 21 Mar 2026 13:00:00 GMT</pubDate>
          <description><![CDATA[The uncomfortable truth benchmarks reveal]]></description>
          <category><![CDATA[nextjs]]></category><category><![CDATA[web-performance]]></category><category><![CDATA[react]]></category><category><![CDATA[backend]]></category>
        </item>
      
        <item>
          <title><![CDATA[Whose React Is It?]]></title>
          <link>https://yceffort.kr/en/2026/03/react-is-whose</link>
          <guid>https://yceffort.kr/en/2026/03/react-is-whose</guid>
          <pubDate>Thu, 19 Mar 2026 14:30:00 GMT</pubDate>
          <description><![CDATA[The questions React Foundation must answer]]></description>
          <category><![CDATA[oss]]></category><category><![CDATA[react]]></category><category><![CDATA[software-engineering]]></category><category><![CDATA[essay]]></category><category><![CDATA[nextjs]]></category>
        </item>
      
        <item>
          <title><![CDATA[Why Cloudflare Rebuilt Next.js]]></title>
          <link>https://yceffort.kr/en/2026/03/why-cloudflare-rebuilt-nextjs</link>
          <guid>https://yceffort.kr/en/2026/03/why-cloudflare-rebuilt-nextjs</guid>
          <pubDate>Tue, 17 Mar 2026 11:07:31 GMT</pubDate>
          <description><![CDATA[What question does vinext really ask?]]></description>
          <category><![CDATA[nextjs]]></category><category><![CDATA[serverless]]></category><category><![CDATA[oss]]></category><category><![CDATA[devops]]></category><category><![CDATA[backend]]></category>
        </item>
      
        <item>
          <title><![CDATA[The Rise and Fall of Next.js Edge Runtime]]></title>
          <link>https://yceffort.kr/en/2026/03/nextjs-edge-runtime-rise-and-fall</link>
          <guid>https://yceffort.kr/en/2026/03/nextjs-edge-runtime-rise-and-fall</guid>
          <pubDate>Mon, 16 Mar 2026 07:24:02 GMT</pubDate>
          <description><![CDATA[Hey Edge Middleware, how have you been?]]></description>
          <category><![CDATA[nextjs]]></category><category><![CDATA[serverless]]></category><category><![CDATA[backend]]></category><category><![CDATA[essay]]></category><category><![CDATA[web-performance]]></category>
        </item>
      
        <item>
          <title><![CDATA[React Server Functions Deep Dive: To the End of "use server"]]></title>
          <link>https://yceffort.kr/en/2026/03/react-server-functions-deep-dive</link>
          <guid>https://yceffort.kr/en/2026/03/react-server-functions-deep-dive</guid>
          <pubDate>Mon, 09 Mar 2026 13:02:05 GMT</pubDate>
          <description><![CDATA[What happens behind a single line of "use server"?]]></description>
          <category><![CDATA[react]]></category><category><![CDATA[nextjs]]></category><category><![CDATA[networking]]></category><category><![CDATA[backend]]></category><category><![CDATA[compiler]]></category>
        </item>
      
        <item>
          <title><![CDATA[React's <ViewTransition>: Browser-Native Animation, Done the React Way]]></title>
          <link>https://yceffort.kr/en/2026/03/react-view-transition</link>
          <guid>https://yceffort.kr/en/2026/03/react-view-transition</guid>
          <pubDate>Mon, 02 Mar 2026 01:45:38 GMT</pubDate>
          <description><![CDATA[What happens when React wraps the View Transition API]]></description>
          <category><![CDATA[animation]]></category><category><![CDATA[react]]></category><category><![CDATA[browser]]></category>
        </item>
      
        <item>
          <title><![CDATA[The Pitfalls of Node.js vm Module: Why It's Not a Sandbox]]></title>
          <link>https://yceffort.kr/en/2026/02/nodejs-deep-dive-sample</link>
          <guid>https://yceffort.kr/en/2026/02/nodejs-deep-dive-sample</guid>
          <pubDate>Fri, 27 Feb 2026 01:00:00 GMT</pubDate>
          <description><![CDATA[A preview of section 5.2 (Pitfalls of the vm Module) from the upcoming Node.js Deep Dive book.]]></description>
          <category><![CDATA[nodejs]]></category><category><![CDATA[security]]></category><category><![CDATA[javascript]]></category><category><![CDATA[backend]]></category>
        </item>
      
        <item>
          <title><![CDATA[The Downfall of Infinite Scroll — Why Google Removed Infinite Scrolling]]></title>
          <link>https://yceffort.kr/en/2026/02/infinite-scroll-dark-side</link>
          <guid>https://yceffort.kr/en/2026/02/infinite-scroll-dark-side</guid>
          <pubDate>Sat, 21 Feb 2026 01:00:00 GMT</pubDate>
          <description><![CDATA[How infinite scroll is being reevaluated from UX, performance, accessibility, and legal perspectives]]></description>
          <category><![CDATA[accessibility]]></category><category><![CDATA[web-performance]]></category><category><![CDATA[design-patterns]]></category><category><![CDATA[essay]]></category>
        </item>
      
        <item>
          <title><![CDATA[Deep Dive into Effect Systems: From Monads to Algebraic Effects, and Effect-TS's Choices]]></title>
          <link>https://yceffort.kr/en/2026/02/effect-ts-deep-dive</link>
          <guid>https://yceffort.kr/en/2026/02/effect-ts-deep-dive</guid>
          <pubDate>Fri, 20 Feb 2026 01:00:00 GMT</pubDate>
          <description><![CDATA[I dug deep into what Effect-TS is all about and why everyone seems so excited about it.]]></description>
          <category><![CDATA[typescript]]></category><category><![CDATA[error-handling]]></category><category><![CDATA[design-patterns]]></category>
        </item>
      
        <item>
          <title><![CDATA[Seeking Beta Readers for Node.js Deep Dive (Working Title)]]></title>
          <link>https://yceffort.kr/en/2026/02/nodejs-deep-dive-beta-reader</link>
          <guid>https://yceffort.kr/en/2026/02/nodejs-deep-dive-beta-reader</guid>
          <pubDate>Thu, 19 Feb 2026 13:00:00 GMT</pubDate>
          <description><![CDATA[Please show lots of interest and support!]]></description>
          <category><![CDATA[nodejs]]></category><category><![CDATA[book]]></category><category><![CDATA[backend]]></category><category><![CDATA[async]]></category><category><![CDATA[v8]]></category>
        </item>
      
        <item>
          <title><![CDATA[React Compiler Deep Dive: From Principles to Output]]></title>
          <link>https://yceffort.kr/en/2026/02/react-compiler-deep-dive</link>
          <guid>https://yceffort.kr/en/2026/02/react-compiler-deep-dive</guid>
          <pubDate>Thu, 19 Feb 2026 05:00:00 GMT</pubDate>
          <description><![CDATA[A deep exploration of how React Compiler analyzes code and what it produces, from pipeline to final output.]]></description>
          <category><![CDATA[react]]></category><category><![CDATA[compiler]]></category><category><![CDATA[web-performance]]></category><category><![CDATA[caching]]></category>
        </item>
      
        <item>
          <title><![CDATA[In the Age of AI-Generated Code, Where is Frontend Engineering Headed?]]></title>
          <link>https://yceffort.kr/en/2026/02/frontend-engineering-in-ai-era</link>
          <guid>https://yceffort.kr/en/2026/02/frontend-engineering-in-ai-era</guid>
          <pubDate>Sat, 14 Feb 2026 03:00:00 GMT</pubDate>
          <description><![CDATA[AI coding tools aren't changing developers—they're changing the nature of what developers do.]]></description>
          <category><![CDATA[ai]]></category><category><![CDATA[essay]]></category><category><![CDATA[software-engineering]]></category><category><![CDATA[career]]></category><category><![CDATA[code-review]]></category>
        </item>
      
        <item>
          <title><![CDATA[Complete Guide to Core Coding Agent Concepts]]></title>
          <link>https://yceffort.kr/en/2026/01/coding-agent-core-concepts</link>
          <guid>https://yceffort.kr/en/2026/01/coding-agent-core-concepts</guid>
          <pubDate>Sat, 17 Jan 2026 14:00:00 GMT</pubDate>
          <description><![CDATA[Complete overview of core coding agent concepts: Rules, Commands, MCP, Sub-agents, Hooks, Skills, and Plugins]]></description>
          <category><![CDATA[ai]]></category>
        </item>
      
        <item>
          <title><![CDATA[Preventing Memory Leaks with IntersectionObserver Singleton Pattern and WeakMap]]></title>
          <link>https://yceffort.kr/en/2026/01/intersection-observer-singleton-weakmap</link>
          <guid>https://yceffort.kr/en/2026/01/intersection-observer-singleton-weakmap</guid>
          <pubDate>Sat, 17 Jan 2026 12:30:00 GMT</pubDate>
          <description><![CDATA[How to efficiently observe hundreds of elements while preventing memory leaks]]></description>
          <category><![CDATA[memory]]></category><category><![CDATA[web-performance]]></category><category><![CDATA[design-patterns]]></category><category><![CDATA[browser]]></category><category><![CDATA[javascript]]></category>
        </item>
      
        <item>
          <title><![CDATA[How to Check if All Cases Are Handled in TypeScript Switch Statements]]></title>
          <link>https://yceffort.kr/en/2026/01/typescript-exhaustive-check</link>
          <guid>https://yceffort.kr/en/2026/01/typescript-exhaustive-check</guid>
          <pubDate>Sat, 17 Jan 2026 11:00:00 GMT</pubDate>
          <description><![CDATA[Exhaustive check pattern using the never type]]></description>
          <category><![CDATA[typescript]]></category>
        </item>
      
        <item>
          <title><![CDATA[How to Efficiently Process Massive JSON Responses]]></title>
          <link>https://yceffort.kr/en/2026/01/handling-large-json-responses</link>
          <guid>https://yceffort.kr/en/2026/01/handling-large-json-responses</guid>
          <pubDate>Sun, 11 Jan 2026 06:00:00 GMT</pubDate>
          <description><![CDATA[How to survive when JSON.parse() becomes overwhelming]]></description>
          <category><![CDATA[web-performance]]></category><category><![CDATA[memory]]></category><category><![CDATA[async]]></category><category><![CDATA[backend]]></category><category><![CDATA[javascript]]></category>
        </item>
      
        <item>
          <title><![CDATA[WebGPU Is Finally Available in Every Browser]]></title>
          <link>https://yceffort.kr/en/2025/12/webgpu-all-browsers</link>
          <guid>https://yceffort.kr/en/2025/12/webgpu-all-browsers</guid>
          <pubDate>Tue, 30 Dec 2025 03:00:00 GMT</pubDate>
          <description><![CDATA[In July 2025, the browser GPU API changed generations for the first time in 14 years]]></description>
          <category><![CDATA[browser]]></category><category><![CDATA[web-performance]]></category><category><![CDATA[ai]]></category><category><![CDATA[webassembly]]></category>
        </item>
      
        <item>
          <title><![CDATA[A Guide to Next.js Caching]]></title>
          <link>https://yceffort.kr/en/2025/12/nextjs-caching-deep-dive</link>
          <guid>https://yceffort.kr/en/2025/12/nextjs-caching-deep-dive</guid>
          <pubDate>Wed, 24 Dec 2025 01:00:00 GMT</pubDate>
          <description><![CDATA[Exploring the four cache layers of the Next.js App Router]]></description>
          <category><![CDATA[nextjs]]></category><category><![CDATA[caching]]></category><category><![CDATA[web-performance]]></category><category><![CDATA[react]]></category><category><![CDATA[design-patterns]]></category>
        </item>
      
        <item>
          <title><![CDATA[React's New Lint Rule: set-state-in-effect]]></title>
          <link>https://yceffort.kr/en/2025/12/react-set-state-in-effect-lint-rule</link>
          <guid>https://yceffort.kr/en/2025/12/react-set-state-in-effect-lint-rule</guid>
          <pubDate>Tue, 16 Dec 2025 06:30:00 GMT</pubDate>
          <description><![CDATA[Why you shouldn't call setState in Effects and what alternatives exist]]></description>
          <category><![CDATA[react]]></category><category><![CDATA[eslint]]></category><category><![CDATA[web-performance]]></category>
        </item>
      
        <item>
          <title><![CDATA[From useEvent to useEffectEvent: React's Event Handler Stabilization Journey]]></title>
          <link>https://yceffort.kr/en/2025/12/use-effect-event</link>
          <guid>https://yceffort.kr/en/2025/12/use-effect-event</guid>
          <pubDate>Mon, 15 Dec 2025 05:30:00 GMT</pubDate>
          <description><![CDATA[An RFC from 3 years ago finally sees the light of day]]></description>
          <category><![CDATA[react]]></category>
        </item>
      
        <item>
          <title><![CDATA[It's a React vulnerability, so why do I have to upgrade Next.js?]]></title>
          <link>https://yceffort.kr/en/2025/12/nextjs-react-security-vulnerability</link>
          <guid>https://yceffort.kr/en/2025/12/nextjs-react-security-vulnerability</guid>
          <pubDate>Fri, 12 Dec 2025 03:00:00 GMT</pubDate>
          <description><![CDATA[CVE-2025-55182, CVE-2025-55184, CVE-2025-55183, and the React hidden inside Next.js]]></description>
          <category><![CDATA[security]]></category><category><![CDATA[nextjs]]></category><category><![CDATA[react]]></category><category><![CDATA[backend]]></category><category><![CDATA[npm]]></category>
        </item>
      
        <item>
          <title><![CDATA[Web Service Performance Analysis (4)]]></title>
          <link>https://yceffort.kr/en/2025/06/web-performance-analysis-4</link>
          <guid>https://yceffort.kr/en/2025/06/web-performance-analysis-4</guid>
          <pubDate>Sat, 19 Jul 2025 10:20:44 GMT</pubDate>
          <description><![CDATA[If you find yourself thinking "maybe I should try this too..." — reach out right now!!]]></description>
          <category><![CDATA[web-performance]]></category><category><![CDATA[browser]]></category>
        </item>
      
        <item>
          <title><![CDATA[Web Service Performance Analysis (3)]]></title>
          <link>https://yceffort.kr/en/2025/06/web-performance-analysis-3</link>
          <guid>https://yceffort.kr/en/2025/06/web-performance-analysis-3</guid>
          <pubDate>Tue, 01 Jul 2025 04:11:17 GMT</pubDate>
          <description><![CDATA[Thank you for your interest. 🙇🏻‍♂️]]></description>
          <category><![CDATA[web-performance]]></category><category><![CDATA[nextjs]]></category><category><![CDATA[react]]></category>
        </item>
      
        <item>
          <title><![CDATA[In an Era Where AI Writes Code, What Should I Do as a Frontend Developer?]]></title>
          <link>https://yceffort.kr/en/2025/05/what-to-do-as-frontend-developer-in-ai-era</link>
          <guid>https://yceffort.kr/en/2025/05/what-to-do-as-frontend-developer-in-ai-era</guid>
          <pubDate>Mon, 19 May 2025 08:43:12 GMT</pubDate>
          <description><![CDATA[I don't know what the future holds, but shouldn't we just keep developing diligently?]]></description>
          <category><![CDATA[ai]]></category><category><![CDATA[career]]></category><category><![CDATA[essay]]></category>
        </item>
      
        <item>
          <title><![CDATA[Web Service Performance Analysis (2)]]></title>
          <link>https://yceffort.kr/en/2025/05/web-performance-analysis-2</link>
          <guid>https://yceffort.kr/en/2025/05/web-performance-analysis-2</guid>
          <pubDate>Mon, 12 May 2025 00:44:34 GMT</pubDate>
          <description><![CDATA[Thank you for your interest. 🙇🏻‍♂️]]></description>
          <category><![CDATA[web-performance]]></category><category><![CDATA[bundler]]></category>
        </item>
      
        <item>
          <title><![CDATA[Web Service Performance Analysis (1)]]></title>
          <link>https://yceffort.kr/en/2025/05/web-performance-analysis-1</link>
          <guid>https://yceffort.kr/en/2025/05/web-performance-analysis-1</guid>
          <pubDate>Tue, 06 May 2025 07:39:31 GMT</pubDate>
          <description><![CDATA[Thank you for your interest. 🎉]]></description>
          <category><![CDATA[web-performance]]></category><category><![CDATA[bundler]]></category>
        </item>
      
        <item>
          <title><![CDATA[React's New Hook, "use"]]></title>
          <link>https://yceffort.kr/en/2023/06/react-use-hook</link>
          <guid>https://yceffort.kr/en/2023/06/react-use-hook</guid>
          <pubDate>Tue, 13 Jun 2023 14:51:18 GMT</pubDate>
          <description><![CDATA[The name may change, or it may disappear entirely, depending on how things go]]></description>
          <category><![CDATA[react]]></category><category><![CDATA[async]]></category>
        </item>
      
        <item>
          <title><![CDATA[A Guide to Node.js Memory Limits and Leak Tracking]]></title>
          <link>https://yceffort.kr/en/2021/12/nodejs-memory-limit</link>
          <guid>https://yceffort.kr/en/2021/12/nodejs-memory-limit</guid>
          <pubDate>Mon, 13 Dec 2021 10:21:45 GMT</pubDate>
          <description><![CDATA[A look at V8's generational garbage collection, adjusting heap memory limits, and practical ways to diagnose memory leaks.]]></description>
          <category><![CDATA[memory]]></category><category><![CDATA[nodejs]]></category><category><![CDATA[v8]]></category><category><![CDATA[debugging]]></category><category><![CDATA[backend]]></category>
        </item>
      
        <item>
          <title><![CDATA[Handling Uncaught Async Errors in JavaScript Correctly]]></title>
          <link>https://yceffort.kr/en/2021/08/uncaught-async-error</link>
          <guid>https://yceffort.kr/en/2021/08/uncaught-async-error</guid>
          <pubDate>Mon, 23 Aug 2021 04:21:41 GMT</pubDate>
          <description><![CDATA[Why try...catch misses errors thrown in async functions, and how to handle every case: IIFEs, forEach, promise chains, constructors, event listeners, and global safety nets.]]></description>
          <category><![CDATA[error-handling]]></category><category><![CDATA[javascript]]></category><category><![CDATA[async]]></category><category><![CDATA[debugging]]></category>
        </item>
      
        <item>
          <title><![CDATA[Understanding AST for JavaScript Developers (2026 Update)]]></title>
          <link>https://yceffort.kr/en/2021/05/ast-for-javascript</link>
          <guid>https://yceffort.kr/en/2021/05/ast-for-javascript</guid>
          <pubDate>Mon, 10 May 2021 00:40:39 GMT</pubDate>
          <description><![CDATA[A comprehensive guide covering AST concepts, parsing process, key node types, and practical usage in tools like Babel and ESLint.]]></description>
          <category><![CDATA[compiler]]></category><category><![CDATA[javascript]]></category>
        </item>
      
        <item>
          <title><![CDATA[Why GitHub Actions Cron Jobs Run Late, and What to Use Instead]]></title>
          <link>https://yceffort.kr/en/2021/01/from-github-workflow-to-firebase-functions</link>
          <guid>https://yceffort.kr/en/2021/01/from-github-workflow-to-firebase-functions</guid>
          <pubDate>Sun, 24 Jan 2021 12:16:38 GMT</pubDate>
          <description><![CDATA[Why GitHub Actions scheduled workflows get delayed by dozens of minutes: the structural causes, and free alternatives that actually run on time.]]></description>
          <category><![CDATA[ci-cd]]></category><category><![CDATA[git]]></category><category><![CDATA[devops]]></category><category><![CDATA[backend]]></category><category><![CDATA[debugging]]></category>
        </item>
      
  </channel>
</rss>