Thoughts, ideas, and technical writeups
Why I moved away from Notion back to Markdown files for my blog, exploring the trade-offs between convenience and control in content management.
A guide to resolving the 'TypeError: Request with a GET or HEAD method cannot have a body' error in Cloudflare Workers. This post explains the cause of the error, which is often triggered by crawlers like LINE's, and provides a simple workaround to strip the request body for GET and HEAD requests.
A step-by-step guide to setting up Minio object storage with Caddy reverse proxy, including configuration challenges and solutions for self-hosting.
How to combine SQL structure with document database flexibility using SQLite JSON capabilities, Drizzle ORM, and Zod validation for evolving data schemas.
A quick guide on how to use the Nodemailer library in Cloudflare Workers by enabling the nodejs_compat flag. Learn how to build and stream email payloads, simplifying your email-sending workflow in a serverless environment.
A developer's journey from a traditional static site to using Notion as a headless CMS. This post explores the pros and cons of different CMS options like Payload CMS and WordPress before settling on the Notion API for a more flexible and mobile-friendly blogging workflow.
A comprehensive guide to modern frontend error tracking solutions, comparing Sentry, OpenTelemetry, and Grafana Faro for JavaScript applications.
A developer's journey into the world of cheap Japanese shared hosting. This post explores the feasibility of running modern JavaScript (Node.js, Bun, Deno) on low-cost servers using technologies like CGI and FastCGI, comparing performance, and documenting the challenges and discoveries along the way.
Learn how to stream dynamic HTML content using Hono.js and JSX. This post provides a code example of how to use async generators and Suspense to stream non-append-only data to the browser, creating a dynamic and responsive user experience.
A reference guide for mapping file system directory aliases when migrating from Cordova to Capacitor, covering iOS and Android platform differences.
In this follow-up post, I share a custom batching solution for Swift inspired by MobX. Learn how a minimal implementation of a batching function can solve UI glitch issues and improve the performance of reactive applications.
A developer's exploration of Swift's reactive programming capabilities, comparing them to popular JavaScript libraries like MobX and SolidJS. This post delves into the challenges of managing state changes and batching updates in Swift's Key-Value Observing (KVO) system.