The Pensieve

Handpicked

Featured Articles
Latest Articles
When Your Frontend Needs to Process Files, Not Just Upload Them: Diving into WebAssembly
11 min readSep 29, 2026

When Your Frontend Needs to Process Files, Not Just Upload Them: Diving into WebAssembly

Sending user-generated files to a backend for processing often feels like the default, but it's not always the best solution. We'll explore how WebAssembly lets us handle complex file operations directly in the browser, boosting privacy and performance.

FrontendWeb DevelopmentWebAssembly
Read blog post
When Your Next.js App Needs to Speak Every Language: Diving into next-intl
8 min readSep 28, 2026

When Your Next.js App Needs to Speak Every Language: Diving into next-intl

Internationalization often feels like an afterthought until your product manager drops the 'global market' bomb. Suddenly, every string, date, and currency needs to adapt. While Next.js provides some primitives, a robust i18n solution is crucial, and next-intl makes this surprisingly elegant.

Next.jsFrontendSoftware Design
Read blog post
When Your React App Needs a 3D Dimension: Embracing React Three Fiber
5 min readSep 27, 2026

When Your React App Needs a 3D Dimension: Embracing React Three Fiber

Integrating 3D experiences into web applications used to be a mess of imperative Three.js code. React Three Fiber changes that, letting you build complex 3D scenes with familiar React components and state management. It's a game-changer for interactive visualizations and immersive UIs.

FrontendWeb DevelopmentUI
Read blog post
When Your React State Is Lying to You: Derived State Done Right
8 min readSep 26, 2026

When Your React State Is Lying to You: Derived State Done Right

It's easy to fall into the trap of syncing a computed value into `useState`, leading to stale UI, extra renders, and subtle bugs. Let's fix derived state.

ReactFrontendSoftware Design
Read blog post
When Your API Contract Becomes Your Type System
4 min readSep 25, 2026

When Your API Contract Becomes Your Type System

I've been burned by runtime data validation too many times. You write an API, define types for it, but at runtime, the data coming in doesn't match. Zod lets your schema *be* your type definition, catching errors earlier and making your backend and frontend more robust.

TypeScriptAPISoftware Design
Read blog post
When Your UI Needs to Be Truly Cross-Platform: Diving into Tamagui
7 min readSep 24, 2026

When Your UI Needs to Be Truly Cross-Platform: Diving into Tamagui

Building a truly performant and consistent UI across web and native platforms has always been a tightrope walk. You either compromise on native feel, or you double your effort. Tamagui promises a different path: compile-time optimization, styled components, and a shared core that feels right everywh

ReactReact NativeUI
Read blog post
When Your Electron App Needs a Real Shell, Not Just a Webview
10 min readSep 23, 2026

When Your Electron App Needs a Real Shell, Not Just a Webview

I've built countless Electron apps, and the boilerplate fatigue is real. Every time, I'd find myself re-implementing the same basic structure: inter-process communication, auto-updates, secure configuration, and a consistent UI shell. It's not just about getting a webview to show up; it's about buil

Desktop DevelopmentToolingSoftware Design
Read blog post
When Your Frontend Needs to Read the Fine Print: Diving into Tesseract.js for OCR
7 min readSep 22, 2026

When Your Frontend Needs to Read the Fine Print: Diving into Tesseract.js for OCR

Ever needed to extract text from an image directly in the browser? Sending everything to a backend API can be slow and expensive. Tesseract.js brings full-fledged OCR capabilities right to your client-side applications, offering a powerful, offline-first solution for text recognition.

FrontendWeb DevelopmentTooling
Read blog post
When Your Typescript Needs a Real Workout: Diving into Type Challenges
6 min readSep 21, 2026

When Your Typescript Needs a Real Workout: Diving into Type Challenges

I've seen countless teams struggle with TypeScript, not because they don't understand the basics, but because they haven't truly pushed its type system to its limits. This isn't just about avoiding `any`; it's about leveraging the compiler to enforce complex invariants at compile time. That's where

TypeScriptSoftware DesignTooling
Read blog post
Available for projectsReady to make something fun 🎈

Ready to build the next system?Wanna build something awesome together?

Currently accepting high-impact opportunities in frontend engineering and scalable web applications.Got a cool idea rattling around? Let's grab a virtual coffee and turn it into something people love. ☕