writing

notes on building software, understanding systems, and choosing better tradeoffs.

rss feed

start here

  1. 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.

    5 min read
  2. 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.

    7 min read
  3. avery v3

    892 commits. the personal AI agent i've been trying to build since 2023 is finally becoming something i'm proud of.

    3 min read

archive

42 entries

2026

  1. flow editora record of the local markdown editor i built around this site's custom rendering engine. the public experiment has since been retired.5 min read
  2. writings for discussionhow WFDs work, when to write one, the states a document can be in, frontmatter format, and the markdown features available.11 min read
  3. 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.14 min read
  4. back to basicsI've decided to return to my roots.1 min read
  5. 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.4 min read
  6. avery v3892 commits. the personal AI agent i've been trying to build since 2023 is finally becoming something i'm proud of.3 min read
  7. 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.3 min read
  8. 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.7 min read
  9. the illusion of best practicessoftware engineering is full of rules that people follow without thinking. most of them are wrong for you.2 min read
  10. openclaw SUCKSit just sucks.1 min read
  11. 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.4 min read
  12. 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.1 min read
  13. 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.5 min read
  14. 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.17 min read
  15. 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.7 min read
  16. 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.1 min read
  17. 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.9 min read
  18. 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.3 min read
  19. 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.4 min read
  20. 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.11 min read
  21. should this site have a footeri keep going back and forth on whether a footer adds anything to this site.1 min read
  22. stepping backmost things are on hold for a bit. three projects stay. here's what and why.2 min read
  23. 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.7 min read
  24. 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.6 min read
  25. 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.3 min read
  26. 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.5 min read
  27. picking an analytics provideri want to know if anyone's actually reading this. not to optimize anything, just to know.5 min read
  28. 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.16 min read
  29. 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.6 min read
  30. 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.5 min read
  31. markdown referencereference for all markdown features available on this blog.5 min read

2025

  1. 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.4 min read
  2. 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.2 min read
  3. 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.3 min read
  4. 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.3 min read
  5. 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.4 min read
  6. 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.3 min read
  7. 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.3 min read
  8. 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.3 min read
  9. 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.2 min read
  10. 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.1 min read
  11. 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.1 min read