<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Tristan Wagner</title><description>Senior Software Engineer based in Osaka, Japan. Building across the stack with TypeScript, Python, Go, and C.</description><link>https://tristanwagner.dev/</link><item><title>Building an open-source usage guard for Cloudflare Workers</title><link>https://tristanwagner.dev/posts/cf-usage-guard/</link><guid isPermaLink="true">https://tristanwagner.dev/posts/cf-usage-guard/</guid><description>How and why I built cf-usage-guard, a zero-dependency circuit breaker that automatically stops your Cloudflare Workers from running up surprise bills.</description><pubDate>Fri, 10 Apr 2026 00:00:00 GMT</pubDate></item><item><title>Web application penetration testing checklist</title><link>https://tristanwagner.dev/posts/webapp-security-checklist/</link><guid isPermaLink="true">https://tristanwagner.dev/posts/webapp-security-checklist/</guid><description>A comprehensive checklist for testing web application security, from session management to XSS.</description><pubDate>Thu, 06 Jun 2024 00:00:00 GMT</pubDate></item><item><title>Self-hosting Immich with Traefik and Coolify</title><link>https://tristanwagner.dev/posts/self-hosting-immich-with-traefik/</link><guid isPermaLink="true">https://tristanwagner.dev/posts/self-hosting-immich-with-traefik/</guid><description>How to deploy Immich behind Traefik when Coolify manages your reverse proxy.</description><pubDate>Sat, 01 Jun 2024 00:00:00 GMT</pubDate></item><item><title>Debug Node.js through npx</title><link>https://tristanwagner.dev/notes/debug-npx-commands/</link><guid isPermaLink="true">https://tristanwagner.dev/notes/debug-npx-commands/</guid><description>How to attach a debugger to commands run via npx.</description><pubDate>Thu, 30 May 2024 00:00:00 GMT</pubDate></item><item><title>List all globally installed npm packages</title><link>https://tristanwagner.dev/notes/list-global-npm-packages/</link><guid isPermaLink="true">https://tristanwagner.dev/notes/list-global-npm-packages/</guid><description>Quick command to see what&apos;s installed globally via npm.</description><pubDate>Thu, 30 May 2024 00:00:00 GMT</pubDate></item><item><title>Node.js REPL with top-level await</title><link>https://tristanwagner.dev/notes/node-async-repl/</link><guid isPermaLink="true">https://tristanwagner.dev/notes/node-async-repl/</guid><description>Launch a Node REPL that supports async/await at the top level.</description><pubDate>Thu, 30 May 2024 00:00:00 GMT</pubDate></item><item><title>Suppress Node.js deprecation warnings</title><link>https://tristanwagner.dev/notes/suppress-node-warnings/</link><guid isPermaLink="true">https://tristanwagner.dev/notes/suppress-node-warnings/</guid><description>Remove noisy warnings from Node.js output.</description><pubDate>Thu, 30 May 2024 00:00:00 GMT</pubDate></item><item><title>Add swap space on a Linux VPS</title><link>https://tristanwagner.dev/notes/add-swap-linux/</link><guid isPermaLink="true">https://tristanwagner.dev/notes/add-swap-linux/</guid><description>Quick commands to add swap and limit RAM usage on a Linux server.</description><pubDate>Wed, 29 May 2024 00:00:00 GMT</pubDate></item><item><title>fzf essential keybinds</title><link>https://tristanwagner.dev/notes/fzf-keybinds/</link><guid isPermaLink="true">https://tristanwagner.dev/notes/fzf-keybinds/</guid><description>The two fzf keybinds you&apos;ll use most.</description><pubDate>Wed, 29 May 2024 00:00:00 GMT</pubDate></item><item><title>Fix instanceof checks with Jest mocks</title><link>https://tristanwagner.dev/notes/instanceof-with-mocks/</link><guid isPermaLink="true">https://tristanwagner.dev/notes/instanceof-with-mocks/</guid><description>Make instanceof work correctly when testing with mocked objects in Jest.</description><pubDate>Wed, 29 May 2024 00:00:00 GMT</pubDate></item><item><title>Mount SMB drives from the terminal on macOS</title><link>https://tristanwagner.dev/notes/mount-smb-macos/</link><guid isPermaLink="true">https://tristanwagner.dev/notes/mount-smb-macos/</guid><description>Mount, list, and unmount SMB network drives from the command line.</description><pubDate>Wed, 29 May 2024 00:00:00 GMT</pubDate></item><item><title>Vim: yank current file path to clipboard</title><link>https://tristanwagner.dev/notes/vim-yank-filepath/</link><guid isPermaLink="true">https://tristanwagner.dev/notes/vim-yank-filepath/</guid><description>Copy the current file path in Vim to the system clipboard.</description><pubDate>Wed, 29 May 2024 00:00:00 GMT</pubDate></item><item><title>WezTerm essential keybinds</title><link>https://tristanwagner.dev/notes/wezterm-keybinds/</link><guid isPermaLink="true">https://tristanwagner.dev/notes/wezterm-keybinds/</guid><description>The most useful WezTerm keyboard shortcuts.</description><pubDate>Wed, 29 May 2024 00:00:00 GMT</pubDate></item><item><title>How to try Neovim distros without messing up your config</title><link>https://tristanwagner.dev/posts/trying-nvim-distros/</link><guid isPermaLink="true">https://tristanwagner.dev/posts/trying-nvim-distros/</guid><description>Run multiple Neovim configurations side by side using NVIM_APPNAME.</description><pubDate>Wed, 29 May 2024 00:00:00 GMT</pubDate></item><item><title>Install SearXNG on your Nginx server</title><link>https://tristanwagner.dev/posts/install-searxng-nginx/</link><guid isPermaLink="true">https://tristanwagner.dev/posts/install-searxng-nginx/</guid><description>Step-by-step guide to installing SearXNG metasearch engine behind Nginx.</description><pubDate>Fri, 22 Jul 2022 00:00:00 GMT</pubDate></item><item><title>Setting up HTTPS on nginx with Certbot</title><link>https://tristanwagner.dev/posts/vps-https-certbot/</link><guid isPermaLink="true">https://tristanwagner.dev/posts/vps-https-certbot/</guid><description>How to set up HTTPS on an nginx server using Certbot and Let&apos;s Encrypt.</description><pubDate>Sun, 05 Jun 2022 00:00:00 GMT</pubDate></item></channel></rss>