Full-stack software developer specializing in custom web applications, Node.js development, and database design. Experienced metal fabricator and welder.
Latest Blog Posts
-
Alpine.js Highlighting and Completion for Neovim
Tree-sitter and legacy syntax highlighting for Alpine.js directives in Neovim, plus nvim-cmp completion and snippets across HTML, EJS, Blade, Twig, Liquid, and more.
-
EJS Template Support for Neovim
Tree-sitter syntax highlighting, LSP attachment, and LuaSnip snippets for EJS templates in Neovim. ejs.nvim wires up the embedded_template parser with language injection for accurate HTML and JavaScript colorization.
-
Two Ways to Build With AI: Runtime Dependency vs. Build Tool
“Built with AI” can mean two very different things. One results in software that depends on AI to run, with ongoing costs and unpredictable output. The other uses AI to build software that runs fine without it.
-
Mainframe: Headless WordPress Theme
WordPress theme built for headless setups. Full dashboard, full REST API, minimal public face. No plugins required.
-
Express Map: Visual Route and Middleware Navigation for VS Code
VS Code extension that provides visual route, middleware, and template navigation for Express.js apps. No running server required.
-
Alpine.js Tools: IntelliSense and Syntax Highlighting for VS Code
JavaScript syntax highlighting inside Alpine directives, hover documentation for every directive and magic property, IntelliSense completions, and snippets across HTML, EJS, PHP, Twig, Nunjucks, and Blade.