<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Zerdalu</title><description>Thoughts on software, design, and building handcrafted web applications.</description><link>https://zerdalu.com/</link><language>en-us</language><item><title>Building a Custom Vite Plugin for Screenshots &amp; Screen Recording</title><link>https://zerdalu.com/blog/custom-vite-plugin-for-screen-recording/</link><guid isPermaLink="true">https://zerdalu.com/blog/custom-vite-plugin-for-screen-recording/</guid><description>How a struggle to get standard-sized promotional visuals for Nâmedâr on Debian led to the creation of a custom Vite plugin using iframes and modern web APIs.</description><pubDate>Sun, 24 May 2026 00:00:00 GMT</pubDate><author>Zerdalu</author></item><item><title>Why I don&apos;t trust `npm install` (and how I fixed it on Debian)</title><link>https://zerdalu.com/blog/stop-malicious-npm-installs/</link><guid isPermaLink="true">https://zerdalu.com/blog/stop-malicious-npm-installs/</guid><description>Most malware is scrubbed from NPM within 72 hours. I built a wrapper that enforces a 7-day cooling off period for every dependency in your tree before it hits your disk.</description><pubDate>Thu, 14 May 2026 00:00:00 GMT</pubDate><author>Zerdalu</author></item><item><title>Crafting Parametric SVG Code Blocks</title><link>https://zerdalu.com/blog/parametric-svg-code-blocks/</link><guid isPermaLink="true">https://zerdalu.com/blog/parametric-svg-code-blocks/</guid><description>How we built dynamic, perfectly rounded, tabbed code blocks using real-time SVG math instead of CSS clip-path.</description><pubDate>Tue, 05 May 2026 00:00:00 GMT</pubDate><author>Zerdalu</author></item><item><title>Handcrafted Dynamic OG Images with ImageMagick and Cloudflare R2</title><link>https://zerdalu.com/blog/handcrafted-dynamic-og-images/</link><guid isPermaLink="true">https://zerdalu.com/blog/handcrafted-dynamic-og-images/</guid><description>How to automatically generate beautiful, magazine-style Open Graph images for an Astro blog using a Bash script, ImageMagick, and Cloudflare R2.</description><pubDate>Sat, 02 May 2026 00:00:00 GMT</pubDate><author>Zerdalu</author></item><item><title>Transparent iFrames in Dark Mode</title><link>https://zerdalu.com/blog/transparent-iframes-in-dark-mode/</link><guid isPermaLink="true">https://zerdalu.com/blog/transparent-iframes-in-dark-mode/</guid><description>How to solve the opaque canvas bug when embedding transparent dark mode widgets.</description><pubDate>Fri, 01 May 2026 00:00:00 GMT</pubDate><author>Zerdalu</author></item><item><title>Mastering SQLite Optimization: 5 Techniques for High-Performance Queries</title><link>https://zerdalu.com/blog/optimizing-row-reads-in-sqlite/</link><guid isPermaLink="true">https://zerdalu.com/blog/optimizing-row-reads-in-sqlite/</guid><description>A technical deep-dive into optimizing SQLite and edge databases, covering advanced indexing, SARGability, schema structuring, and query execution plans.</description><pubDate>Thu, 30 Apr 2026 00:00:00 GMT</pubDate><author>Zerdalu</author></item><item><title>Adaptive SVG Favicons with prefers-color-scheme</title><link>https://zerdalu.com/blog/adaptive-svg-favicons-with-prefers-color-scheme/</link><guid isPermaLink="true">https://zerdalu.com/blog/adaptive-svg-favicons-with-prefers-color-scheme/</guid><description>Replace static PNG favicons with a single SVG file that automatically adapts to light and dark browser chrome using embedded CSS media queries.</description><pubDate>Wed, 29 Apr 2026 00:00:00 GMT</pubDate><author>Zerdalu</author></item><item><title>Splitting TypeScript Config in TanStack Start</title><link>https://zerdalu.com/blog/splitting-tsconfig-in-tanstack-start/</link><guid isPermaLink="true">https://zerdalu.com/blog/splitting-tsconfig-in-tanstack-start/</guid><description>Learn how to implement Cloudflare&apos;s Cache API in TanStack Start by splitting TypeScript configurations to resolve type conflicts and ESLint parsing errors.</description><pubDate>Tue, 28 Apr 2026 00:00:00 GMT</pubDate><author>Zerdalu</author></item><item><title>Regular Expressions in JavaScript</title><link>https://zerdalu.com/blog/javascript-regex-guide/</link><guid isPermaLink="true">https://zerdalu.com/blog/javascript-regex-guide/</guid><description>From basic patterns to advanced lookarounds and Unicode property escapes. Master the art of string manipulation with this comprehensive JS regex handbook.</description><pubDate>Fri, 24 Apr 2026 00:00:00 GMT</pubDate><author>Zerdalu</author></item><item><title>The New Bicycle for the Mind</title><link>https://zerdalu.com/blog/the-new-bicycle-for-the-mind/</link><guid isPermaLink="true">https://zerdalu.com/blog/the-new-bicycle-for-the-mind/</guid><description>Why AI isn&apos;t here to replace us, but to help us pedal further and faster than we ever thought possible.</description><pubDate>Tue, 14 Apr 2026 00:00:00 GMT</pubDate><author>Zerdalu</author></item><item><title>Demystifying Big O Notation: Time and Space Complexity</title><link>https://zerdalu.com/blog/understanding-big-o/</link><guid isPermaLink="true">https://zerdalu.com/blog/understanding-big-o/</guid><description>A comprehensive guide to Big O notation. Learn how to evaluate the performance and memory efficiency of your code with real-world TypeScript examples.</description><pubDate>Wed, 01 Apr 2026 00:00:00 GMT</pubDate><author>Zerdalu</author></item><item><title>Derbent: Building a High-Performance SSO Engine on Cloudflare Workers</title><link>https://zerdalu.com/blog/introducing-derbent/</link><guid isPermaLink="true">https://zerdalu.com/blog/introducing-derbent/</guid><description>A technical deep-dive into building a centralized, stateful authentication engine using D1, KV, and Service Bindings.</description><pubDate>Tue, 24 Mar 2026 00:00:00 GMT</pubDate><author>Zerdalu</author></item></channel></rss>