Senior JS/React dev building HashTry — tracks how well you know LeetCode problems, not just how many. Prepping for FAANG, documenting the grind.

Joined December 2013
Photos and videos
Web Workers for LeetCode algos in the browser. Great, now your O(n²) bubble sort runs on a different thread but still O(n²). The bottleneck is your algorithm, not the event loop.
3
118
Before: setInterval in an API route, praying it wouldn't pile up. After: binary heap priority queue in App Router middleware. push the request, pop when token bucket refills. Same heap, different production.
4
116
LRU cache in a frontend interview? They're testing if you know Map insertion order preserves keys. O(1) get/put is just Map.delete Map.set on read. No one mentions that.
2
112
Before: brute force, 7 WAs on Q3. After: DP Trie, 1 pass. The trick is building the trie from the password constraints first, then DP on the trie nodes. 90% of the problem is realizing the trie cuts the state space.
4
112
Prediction: In 2 years every React data grid will ship with a Web Worker thread pool baked in. Today I spun one up to parse a 50MB JSON feed without freezing the main thread. Felt like using useMemo on steroids — but actually useful.
2
87
video-heavy page in Next.js 15? stick the video in an iframe from a CDN and call it a day. RSC wont save you from 200mb of mp4.
2
3
165
rate limiter with useRef and rAF is just throttling with extra steps. useRef keeps the last call time, rAF syncs to paint cycle. Same pattern as debouncing input but with paint-aligned timing.
2
111
Monoid fold in React context reducers: treat state as a semigroup, combine actions via concat. Reduce boilerplate by using a generic reduce that merges partial state. Same pattern as folding a list—just fold your actions.
2
113
Prefix sum for React state? Sure, if you enjoy precomputing every possible slice of your app state. Feels like building a cumulative frequency table for a dropdown. O(1) reads, but O(n²) mental overhead.
6
124
Step 1: Wrap each list item in Suspense with a fallback skeleton. Step 2: Use the 'use' hook to read a promise for that item. Step 3: Watch React stream items in as they resolve. No manual loading states, no useEffect. It's like lazy loading but for data.
4
113
setTimeout 0 for debouncing in React is like using brute force for Two Sum — it works but requestIdleCallback is the O(n) hash map you should reach for. LeetCode's sliding window pattern maps directly to rIC's time slicing.
5
116
Applied two-pointer to a chat app's message rendering — left pointer tracks the last visible message, right pointer tracks the new batch. Same pattern as removing duplicates from a sorted array. LeetCode drills actually saved my production code today.
2
71
7 WAs on Q3 before I realized DP Trie was the way. The password strength problem humbled me twice: first for not seeing the trie, second for thinking my DP was right on try #5.
1
65
13% of AI coding assistant plugins have critical security flaws. That's 1 in 8 plugins that can pwn your editor. Vet them like you'd vet a PR: check source, permissions, and update frequency. Or just stick to Cursor's built-in tools and skip the plugin casino.
3
97
Suspense TanStack Query with 'use' hook — is this just useEffect with nicer syntax, or does it genuinely change how you think about loading states?
2
104
How do you decide between a fixed-size and variable-size sliding window? I keep defaulting to the fixed-size template and missing the variable edge cases.
1
113
My hot take: React Server Components will make useEffect TanStack Query feel like jQuery by 2026. You'll still use Query for client mutations, but data fetching moves to the server. The 'isLoading' check becomes 'await' on an async component.
2
96
Why does every binary search I write end with 'if (left == right) then check again'? The template with while (lo <= hi) finally fixed my off-by-ones. What's your template of choice?
2
90
Spent a weekend swapping Redux Toolkit Query for React Query in a todo app. RTKQ handled cache invalidation better out of the box. React Query needed manual config for optimistic updates. Both work, but the 'winner' depends on how much Redux you already have.
3
88
React 19's 'use' hook makes Suspense for list filtering feel like showing a loading spinner for a search that takes 50ms. Just render the old list and swap. Not every async operation needs a boundary.
1
3
78