$ git log --oneline ./blog
Blog
Writing about frontend craft, developer tooling, and the things I learn along the way.
cea819a (HEAD → latest)
A Sandbox That Boots in 60ms - MicroVMs vs Containers for Untrusted Code
For years you had to pick between fast containers and safe VMs. MicroVMs quietly killed that tradeoff, booting a fully isolated Linux in under 60ms. Why a container was never really a sandbox.
(tag: v2026) 44 commits
-
c40222eRendering Millions of Points in the Browser Without Killing the Tab -
813ee06The Part of the Job AI Can't Grade - A Developer's Edge in the Age of AI -
fd1cebbYou Can't Avoid the Hard Part - When to Take the Big Swing -
ea7ef8dBeing Cheap With Your Tools Is a Tax on Your Time -
907a78dA Different Favicon for Dev, Preview and Prod -
dc1cabdYou Are the CI Now - Local CI With gh-signoff -
e2ec6d7Make Claude Build Your Slides with reveal.js, Not a Design Tool -
2d0c429Don't Just Ship With AI. Learn With It. -
c67256eOrchestrating AI Models Like a Tech Lead -
8be2483Forget Job Titles, Staff Your Team by Archetype -
b272a40Distill Your Codebase to Its Essence -
4a1496eGive Claude Permanent Memory with Basic Memory MCP + Obsidian -
454336aBuilding a Homelab Automation Stack with Hermes Agent -
3091de7Bun.SQL: I Stopped Fighting Node.js and Finally Built a Backend -
3a0ba73Ghostty AppleScript: Auto-Build Your Project Terminal Layout on Startup -
b50fa60nvim-treesitter Was Archived. Here's What You Actually Need to Do. -
6b4e00aHow I Built My Personal AI Assistant with Bun and the Claude Agent SDK -
c7b93aaLazyVim: The Neovim Distro I Wish I'd Started With -
58fe7c5Stop Burning Tokens: How I Cut My Claude Code Costs in Half -
e2b1296The MCP Servers Worth Installing in 2026 (Frontend Dev Edition) -
177e91fClaude Code Security: AI That Scans Your Codebase Like a Security Researcher -
e11d644Bun's Terminal API - Write CLI Tools Without the Boilerplate -
dd74290fzf — The One CLI Tool I Recommend to Everyone -
3f60e54Bun Is Now Part of Anthropic — What That Actually Means for You -
e00fd3cNeovim 0.12's Built-in Plugin Manager — Should You Ditch lazy.nvim? -
e1c7356Claude Can Now Control Your Mac — Here's How I'm Using It -
e6db796The 2026 Mac Terminal Setup: Ghostty + Starship + Catppuccin -
5506140Claude Code /loop - Recurring Autonomous Workflows That Actually Work -
270b014avante.nvim vs CodeCompanion - AI Inside Neovim in 2026 -
93c8ed7Claude Code Hooks and Subagents - The Advanced Stuff -
d9b8005Ghostty Panes vs tmux Panes - When to Use Which -
9014e72My CLAUDE.md That Actually Works -
f7307fcGhostty + tmux - The Productivity Setup I Actually Use -
7f036c6Ghostty 1.3 — Scrollback Search and My Updated Config -
dc7792eMy Neovim Config - Opinionated, Minimal, and Actually Usable -
8f0ad6dAeroSpace - Stop swiping, start switching -
f5cf13eHow to keep code quality high when AI writes the code -
4ded056clipssh - Paste Screenshots Into Your Remote Terminal -
65c18dc2026 Is the Year of CLIs, Skills, and APIs -
b36de9cBuilding for Agents - When AI Becomes Your Primary User -
194906aYou Don't Need OpenClaw - Claude Code Is Already a Personal AI Assistant -
53d5565How I Turned Slack Chaos Into Linear Tickets With Claude Code -
4361d3fHow I Actually Use Claude Code - A Workflow That Works -
a8356c1Building Reusable Bun Modules - Why Bun Makes It Stupidly Easy
(tag: v2025) 9 commits
-
113a647Seamlessly Switch Between Personal and Work GitHub Accounts on macOS -
e4a8047A Minimal Ghostty Config (That Actually Makes Sense) -
8368beaAI Coding Revolution: How Artificial Intelligence is Changing the Way We Code -
5f23dd2How to Enable Borders on Vim LSP Hover Information (The Simple Way) -
10c0459The Magic of Smooth Scrolling: Two Lines of CSS That Transform User Experience -
63b172eLinear MCP Server – The AI Sidekick You Didn't Know You Needed -
e2b9f01GitHub's MCP Server Goes Public - A Game Changer for AI Development -
3988048Vibe Coding: When AI Becomes Your Coding Bestie -
6541965Connect to Sentry MCP Server - A Developer's Guide
(tag: v2024) 5 commits
-
284ca4dDemystifying codebases: How to use AI to understand complex codebases easily and quickly? -
8c1b3c8The Ten Commandments of Software Development -
75cf961Things learnt from BunJS to CRA migration -
faad9e5Supercharge your Git Workflow with the Jira-Git Commit VSCode Extension -
9511887Enforcing coding standards via Typescript, Husky and Lint-staged
(tag: v2023) 4 commits
(tag: v2022) 13 commits
-
93d6d57Frontend Performance Optimisation -
b2f4527Useful CSS Generators -
37db9e5You don't need these many state variables -
ab08d9fMy take on CSS Grids -
7a661c6Monitor your website speed using Pagespeed API and Google Sheets -
c9cd4e1How to create React Hooks? - A simple guide -
48344f0How to cache your Gatsby site for faster builds in Github Actions? -
a2e5f33Dynamic OG images for your Gatsby blog -
27baba9How I started a tech blog? -
d3e8254Growing your Online Presence - 101 -
6906b31How to post to Instagram using an API? -
cdd9b0aHow to Select a Random Value from an Array? -
e5482a7Bookmarklets - No more boring tasks
$ echo "new post every month" · subscribe via rss ↗