writing
notes on building software, understanding systems, and choosing better tradeoffs.
rss feedstart here
- why i built corgi
i keep subscribing to kagi and then cancelling because it's ugly. so i built a mod framework to fix it myself.
- lto medical clinic directory
i got tired of finding LTO-accredited medical clinics through SEO slop and a government website that looks like it was built as a punishment. so i made a map.
- avery v3
892 commits. the personal AI agent i've been trying to build since 2023 is finally becoming something i'm proud of.
archive
42 entries
2026
- flow editora record of the local markdown editor i built around this site's custom rendering engine. the public experiment has since been retired.
- writings for discussionhow WFDs work, when to write one, the states a document can be in, frontmatter format, and the markdown features available.
- fixing tomodachi life's black grass in edena steam deck texture bug turned into a renderer debugging trail through descriptor stride, descriptor capacity, rescaling metadata, and spir-v nonuniform indexing.
- back to basicsI've decided to return to my roots.
- the butterfly gardeni rebuilt my entire website around a terminal aesthetic with procedural dot-matrix art, and turned the homepage into a guestbook where visitors become butterflies.
- avery v3892 commits. the personal AI agent i've been trying to build since 2023 is finally becoming something i'm proud of.
- the speed wasn't reali wrote a whole WFD about how fast diffusion models are. turns out, at GPT 5.2 quality, the speed advantage is negligible.
- diffusion models are amazingdiffusion LLMs are fast, weird, and break every prompting rule i thought i knew. here's what i learned trying to make one behave.
- the illusion of best practicessoftware engineering is full of rules that people follow without thinking. most of them are wrong for you.
- openclaw SUCKSit just sucks.
- do you want me to do that?i built an AI agent with persistent memory. now i need to figure out if it's remembering the truth or just what i wanted to hear.
- this blog site needs a date createdonly last updated matters according to WFD 16. but mass-updating timestamps when i change a shared admonition makes every WFD look freshly written.
- why i built corgii keep subscribing to kagi and then cancelling because it's ugly. so i built a mod framework to fix it myself.
- giving an ai agent a hippocampusi watched a kdrama about a girl who forgets everything every morning and realized my AI agent has the same condition. so i built it a brain.
- replacing tailscale with headscaletailscale's free tier is generous but i'd rather own the control plane. headscale is the self-hosted replacement and it runs fine on proxmox.
- even if this ktrauma disappears tonighta korean remake of a japanese film about a girl with anterograde amnesia and a boy with a secret. i am not okay.
- multi-domain routing from a single next.js serverwhat i learned serving two different sites from one Next.js codebase using middleware hostname detection, rewrites, and a Caddy dev proxy.
- the usage of ai in daily workAI makes me faster. It also might be making me dumber. I'm figuring out where the line is.
- auto-syncing kubernetes ingress to uptime monitorsi keep forgetting to add uptime monitors when i deploy new services. so i wrote a cronjob that does it for me.
- exploring liquid glass for the webapple introduced liquid glass at WWDC 2025. i want to understand how it actually works and figure out if it's possible to recreate it on the web.
- should this site have a footeri keep going back and forth on whether a footer adds anything to this site.
- stepping backmost things are on hold for a bit. three projects stay. here's what and why.
- lto medical clinic directoryi got tired of finding LTO-accredited medical clinics through SEO slop and a government website that looks like it was built as a punishment. so i made a map.
- working productively in vrgoing from can't-type-without-looking to a four-monitor wireless setup on a MacBook Air that only supports one display. it took switching apps, buying a better head strap, and realizing i'm bad at reading settings.
- ipd adjustment and vomitingi set the IPD wrong on my new Meta Quest 3 and spent the day wanting to throw up. turns out measuring your eyes properly matters.
- pixel loaders are coolI got tired of boring spinners so I made a 3x3 grid that lights up based on adjacency rules. It's way more fun than it should be.
- picking an analytics provideri want to know if anyone's actually reading this. not to optimize anything, just to know.
- shifting from blog to wfdI renamed /blog to /wfd, added a command palette, redesigned the listing page, broke the image carousel, fixed it, and learned that overflow-x-hidden kills sticky positioning.
- five certifications from a third world countryCKA, AWS SAA, Terraform Associate, CKAD, RHCSA with no degree. It's expensive as shit but I'm doing it anyway.
- oomkilling myself because of kubernetes event exporterI wanted Discord notifications when pods crashed. What I got was weeks of debugging memory leaks in a tool that loads every event into RAM before deciding to ignore it.
- markdown referencereference for all markdown features available on this blog.
2025
- tailwind v4 + chakra ui: five bugs and how to fix themI wanted to use bg-blue-500 on one button. Four hours later I was debugging CSS specificity wars between two frameworks that really don't want to coexist.
- what writing a linkedin b2b post taught me about b2b saasI spent 3 hours crafting the perfect LinkedIn post. The irony wasn't lost on me. Here's the meta-commentary.
- my first stock picksI picked three stocks like I was evaluating software: Freshworks, Krispy Kreme, and Payoneer. Let's see if reading 10-Q filings actually helps.
- i deleted framer motion and nothing brokeMy portfolio shipped 50kb of JavaScript for hover effects and entrance animations. Turns out CSS does the same thing faster, with no dependencies.
- generating cover images from project namesI needed fallback images for projects without covers. So I built a system that generates deterministic abstract art from any string—same input, same output, cacheable forever.
- css columns ruined my portfolio gridCSS columns fill top-to-bottom, which breaks reading order. I built a manual masonry system that fills left-to-right instead.
- reverse engineering egovph qr verificationI wanted to verify Philippine government IDs without paying Sumsub. So I mapped the public API from source maps and built an open verifier.
- indexeddb ate my user's recordingA user recorded a 4-hour meeting. Hit stop. Nothing showed up. IndexedDB silently deleted the session, and I still don't know why.
- driftlet updates: june 2025Driftlet now has a website, a Docker image, and post tagging. Also, I spent two hours debugging a login issue that was just a wrong username.
- starting a blog mid-2025Another attempt at blogging. I've killed several blogs before. Maybe documenting the graveyard will motivate me to keep this one alive.
- driftlet needs tagsI wanted to write a blog post about Driftlet's next steps. Then I realized I couldn't log in because I never built a password reset flow.