Archive

2026 (72)
May (1)
  1. Polishing the notes Personal
April (26)
  1. Astro client islands under a strict CSP — pinning the hydration inlines by sha256 hash Tech
  2. Astro Justified Gallery Layout — a modern replacement for the Flickr classic Projects
  3. First npm package shipped Personal
  4. A Callout component for Astro — info boxes with socials and band members Tech
  5. Embedding Google Maps GDPR-compliant — consent box with app links Tech
  6. Fresh coffee, fresh code Personal
  7. Embedding YouTube videos GDPR-compliant — three-tier consent box without a cookie Tech
  8. Leaflet + Stadia Maps behind a strict CSP: two gotchas Tech
  9. Why Stadia Maps instead of OpenStreetMap tiles? Tech
  10. A walk without a phone Personal
  11. Caching webmention avatars locally at build time Tech
  12. Security headers for an Astro site behind Caddy Tech
  13. Setting up a Forgejo Actions runner for self-hosted CI/CD Tech
  14. CSS Grid does more than I think Personal
  15. Book recommendation: A Philosophy of Software Design Personal
  16. Rain sounds better through an open window Personal
  17. VPS migration: less stress than expected Personal
  18. Bike chain oiled, world in order Personal
  19. Hua Hin Photography
  20. Typst instead of LaTeX Personal
  21. Pasta experiment: bread instead of parmesan Personal
  22. Image Voice Memos Projects
  23. Cleaned up the desk Personal
  24. Forgejo on Debian 13 with Rootless Podman On-Premises & Private Cloud
  25. Initial VPS Setup on Debian On-Premises & Private Cloud
  26. Podcast pick: 99% Invisible Personal
March (42)
  1. Half-marathon in my head Personal
  2. Bookmark: Patterns by Addy Osmani Personal
  3. Resolving Obsidian Wiki-Links in Astro with a Custom Remark Plugin Development
  4. My Website Development
  5. New keyboard, old hands Personal
  6. Troubleshooting Mastodon Backfeed and Stale Webmentions Development
  7. POSSE to Mastodon: State, Media Uploads, and Safer Deploys Development
  8. Webmentions: Receiving and Sending Cross-Site Reactions Development
  9. Syndication Links Without Frontmatter Editing Development
  10. Improving Bluesky Syndication: Notes, Images, and State Development
  11. POSSE to Bluesky with the AT Protocol Development
  12. Microformats2: Marking Up Posts for the IndieWeb Development
  13. Joining the IndieWeb Development
  14. Obfuscating Contact Data on a Static Site Development
  15. Closing the Loop: Bluesky Reactions as Webmentions Development
  16. Live Webmentions Without SSR: A Hybrid Approach Development
  17. Thailand — Not! Personal
  18. Syndicating Photos to Flickr with POSSE Development
  19. Adding Notes, Links, and Archives Development
  20. Distinguishing Collection Sets from Category Collections Development
  21. Structuring Photos as a Collection Tree Development
  22. Building the Photo Stream Development
  23. Migrating the Vision Script from OpenAI to Claude Development
  24. Photo Albums with Astro's Content Layer Development
  25. Early rising, an honest attempt Personal
  26. Vision Rate-Limit Runbook for Photo Sidecars Development
  27. Monorepo, yes or no Personal
  28. Generating Photo Sidecars Locally Before a VPS Deploy Development
  29. Obsidian to VPS Pipeline: Sync, Pull, and Redeploy Development
  30. April weather in March Personal
  31. RSS is alive, I think Personal
  32. Triggering VPS Deploys with GitHub Actions On-Premises & Private Cloud
  33. Mirroring GitHub to Codeberg Without a Third-Party Action On-Premises & Private Cloud
  34. Installing Podman Locally and on a VPS On-Premises & Private Cloud
  35. GitHub SSH on a VPS (Reliable Deploy Access) On-Premises & Private Cloud
  36. Keeping the Website Running After a VPS Reboot On-Premises & Private Cloud
  37. Operating Astro SSR in Production with Podman On-Premises & Private Cloud
  38. Updating the Website Repository on a VPS On-Premises & Private Cloud
  39. Caddy for Astro + Podman (HTTPS and Canonical Host) On-Premises & Private Cloud
  40. Concert with a half-empty hall Personal
  41. Deploying Astro SSR to a VPS with Podman On-Premises & Private Cloud
  42. How to build your Website from Local Setup to VPS On-Premises & Private Cloud
February (3)
  1. Museum visit without a plan Personal
  2. Password manager migration Personal
  3. End of winter, half relieved Personal
2025 (5)
December (1)
  1. Hallo, Welt! Personal
October (3)
  1. Kuala Lumpur Photography
  2. Chiang Mai Photography
  3. Phuket Photography
March (1)
  1. Singapore Photography
2019 (1)
March (1)
  1. Bangkok Photography