<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Isaac Urman's Blog</title>
    <link>https://isaacurman.com/blog</link>
    <description>Technical articles and tutorials on software development by Isaac Urman.</description>
    <language>en-US</language>
    <lastBuildDate>Wed, 26 Aug 2026 10:56:46 GMT</lastBuildDate>
    <atom:link href="https://isaacurman.com/feed.xml" rel="self" type="application/rss+xml"/>
    <managingEditor>contact@isaacurman.com (Isaac Urman)</managingEditor>
    <webMaster>contact@isaacurman.com (Isaac Urman)</webMaster>
    <image>
      <url>https://isaacurman.com/opengraph-image</url>
      <title>Isaac Urman's Blog</title>
      <link>https://isaacurman.com/blog</link>
    </image>
    
    <item>
      <title>Building an App That Refuses to Guess</title>
      <link>https://isaacurman.com/blog/an-app-that-refuses-to-guess</link>
      <guid isPermaLink="true">https://isaacurman.com/blog/an-app-that-refuses-to-guess</guid>
      <description>I built a financial planning tool for my own situation and then started turning it into a product. The rule that shaped it: when a required fact is missing, say so, rather than producing a confident number.</description>
      <pubDate>Mon, 17 Aug 2026 00:00:00 GMT</pubDate>
      <category>Personal Finance</category>
      <category>Determinism</category>
      <category>Architecture</category>
      <category>TypeScript</category>
    </item>
    <item>
      <title>What Launching Billing Taught Me About Getting Paid</title>
      <link>https://isaacurman.com/blog/what-launching-billing-taught-me</link>
      <guid isPermaLink="true">https://isaacurman.com/blog/what-launching-billing-taught-me</guid>
      <description>ResuPals went from a free client-side tool to a product with accounts, plans, and Stripe. Every hard lesson was about the gap between a payment starting and the money actually arriving.</description>
      <pubDate>Fri, 14 Aug 2026 00:00:00 GMT</pubDate>
      <category>Stripe</category>
      <category>Next.js</category>
      <category>Cloudflare</category>
      <category>Product</category>
    </item>
    <item>
      <title>Taking the Machine Fingerprint Off Agent Output</title>
      <link>https://isaacurman.com/blog/taking-the-machine-fingerprint-off-agent-output</link>
      <guid isPermaLink="true">https://isaacurman.com/blog/taking-the-machine-fingerprint-off-agent-output</guid>
      <description>Three portable agent skills that strip the tells out of AI prose and code. Why the signal sits above the word level, why every rule carries an evidence grade, and why I refused to build it against a detector.</description>
      <pubDate>Tue, 11 Aug 2026 00:00:00 GMT</pubDate>
      <category>AI</category>
      <category>Agentic Coding</category>
      <category>Agent Skills</category>
      <category>Writing</category>
    </item>
    <item>
      <title>Electra v1: The Agent Orchestrator I Built to Find Out What I Wanted</title>
      <link>https://isaacurman.com/blog/alpha-agent-orchestrator-electra-v1</link>
      <guid isPermaLink="true">https://isaacurman.com/blog/alpha-agent-orchestrator-electra-v1</guid>
      <description>An always-on host running a Telegram-fronted agent gateway and a task orchestrator, dispatching coding agents across isolated identities. It worked well enough to show me what I actually needed instead.</description>
      <pubDate>Wed, 05 Aug 2026 00:00:00 GMT</pubDate>
      <category>Agentic Coding</category>
      <category>Orchestration</category>
      <category>Self-Hosting</category>
      <category>Linux</category>
    </item>
    <item>
      <title>Measuring a Room and Keeping the Disagreements</title>
      <link>https://isaacurman.com/blog/measuring-a-room-and-keeping-the-disagreements</link>
      <guid isPermaLink="true">https://isaacurman.com/blog/measuring-a-room-and-keeping-the-disagreements</guid>
      <description>A weekend floor planner built because a sectional was arriving and I needed to know if it fit. The useful part was refusing to resolve measurements that did not agree.</description>
      <pubDate>Fri, 31 Jul 2026 00:00:00 GMT</pubDate>
      <category>Tools</category>
      <category>Geometry</category>
      <category>TypeScript</category>
      <category>Three.js</category>
    </item>
    <item>
      <title>Rebuilding Ephemera as a Zero-Knowledge Secret Sharing App</title>
      <link>https://isaacurman.com/blog/rebuilding-ephemera-zero-knowledge</link>
      <guid isPermaLink="true">https://isaacurman.com/blog/rebuilding-ephemera-zero-knowledge</guid>
      <description>Ephemera v2 is a ground-up rebuild. Client-side AES-256-GCM encryption with keys the server never sees, a reveal gate that stops link previews from burning one-time secrets, real tests, and a migration path that upgraded the live database without downtime.</description>
      <pubDate>Thu, 30 Jul 2026 00:00:00 GMT</pubDate>
      <category>Next.js</category>
      <category>TypeScript</category>
      <category>WebCrypto</category>
      <category>tRPC</category>
      <category>PostgreSQL</category>
      <category>Security</category>
      <category>Testing</category>
      <category>Encryption</category>
    </item>
    <item>
      <title>Building the Throwaway Version First</title>
      <link>https://isaacurman.com/blog/building-the-throwaway-version-first</link>
      <guid isPermaLink="true">https://isaacurman.com/blog/building-the-throwaway-version-first</guid>
      <description>I spent a weekend building an MVP of an app I actually want to make properly, with no intention of shipping it. The point was to find out which decisions were real.</description>
      <pubDate>Wed, 22 Jul 2026 00:00:00 GMT</pubDate>
      <category>Prototyping</category>
      <category>Architecture</category>
      <category>Product</category>
    </item>
    <item>
      <title>Generating a Thousand Years of History, and the People Living in It</title>
      <link>https://isaacurman.com/blog/generating-a-past-and-the-people-in-it</link>
      <guid isPermaLink="true">https://isaacurman.com/blog/generating-a-past-and-the-people-in-it</guid>
      <description>Procedural history written as a prefix on an existing change log, and a population that is derived on demand rather than stored. Two problems that turned out to have the same shape.</description>
      <pubDate>Sun, 12 Jul 2026 00:00:00 GMT</pubDate>
      <category>Procedural Generation</category>
      <category>Architecture</category>
      <category>Determinism</category>
      <category>TypeScript</category>
    </item>
    <item>
      <title>Agentic Coding in a Production Monorepo: The Harness Matters More Than the Model</title>
      <link>https://isaacurman.com/blog/agentic-coding-in-production</link>
      <guid isPermaLink="true">https://isaacurman.com/blog/agentic-coding-in-production</guid>
      <description>How I actually use coding agents like Claude Code and Codex day to day - and why guardrails, not prompts, are what make them safe in a real codebase.</description>
      <pubDate>Fri, 03 Jul 2026 00:00:00 GMT</pubDate>
      <category>AI</category>
      <category>Agentic Coding</category>
      <category>Claude Code</category>
      <category>Developer Experience</category>
    </item>
    <item>
      <title>Space, Time, and Knowledge: Modeling a World as One Graph</title>
      <link>https://isaacurman.com/blog/space-time-knowledge-one-graph</link>
      <guid isPermaLink="true">https://isaacurman.com/blog/space-time-knowledge-one-graph</guid>
      <description>How a character creator turned into a world engine, and the three-axis model that made almost every feature after that a question of where a new entity sits rather than what new system to build.</description>
      <pubDate>Fri, 26 Jun 2026 00:00:00 GMT</pubDate>
      <category>Architecture</category>
      <category>Data Modeling</category>
      <category>Procedural Generation</category>
      <category>TypeScript</category>
    </item>
    <item>
      <title>Google Maps for a Fantasy World, and Why I Did Not Build That</title>
      <link>https://isaacurman.com/blog/google-maps-for-a-fantasy-world</link>
      <guid isPermaLink="true">https://isaacurman.com/blog/google-maps-for-a-fantasy-world</guid>
      <description>Infinite zoom from a continent down to a single room sounds like a tile pyramid. For a procedurally generated world it is a trap, and nested documents are the better answer.</description>
      <pubDate>Tue, 12 May 2026 00:00:00 GMT</pubDate>
      <category>Procedural Generation</category>
      <category>Architecture</category>
      <category>SVG</category>
      <category>TypeScript</category>
    </item>
    <item>
      <title>Deploying Ephemera with Coolify and Traefik</title>
      <link>https://isaacurman.com/blog/deploying-ephemera-coolify-traefik</link>
      <guid isPermaLink="true">https://isaacurman.com/blog/deploying-ephemera-coolify-traefik</guid>
      <description>A deep dive into deploying a Next.js application with PostgreSQL on a self-hosted Coolify instance, troubleshooting Traefik routing, health checks, and Docker networking.</description>
      <pubDate>Thu, 29 Jan 2026 00:00:00 GMT</pubDate>
      <category>Coolify</category>
      <category>Traefik</category>
      <category>Docker</category>
      <category>Next.js</category>
      <category>PostgreSQL</category>
      <category>Self-Hosting</category>
    </item>
    <item>
      <title>I Scraped Every Rental Listing in a City to Pick a Neighborhood</title>
      <link>https://isaacurman.com/blog/scraping-rental-listings-to-pick-a-neighborhood</link>
      <guid isPermaLink="true">https://isaacurman.com/blog/scraping-rental-listings-to-pick-a-neighborhood</guid>
      <description>A weekend tool that pulled rental listings into SQLite, tracked price changes over time, and told me which listings were actually a good deal instead of just new.</description>
      <pubDate>Tue, 27 Jan 2026 00:00:00 GMT</pubDate>
      <category>Scraping</category>
      <category>SQLite</category>
      <category>TypeScript</category>
      <category>Tools</category>
    </item>
    <item>
      <title>Building ResuPals - A Privacy-First Resume Builder</title>
      <link>https://isaacurman.com/blog/building-resupals-privacy-first-resume-builder</link>
      <guid isPermaLink="true">https://isaacurman.com/blog/building-resupals-privacy-first-resume-builder</guid>
      <description>How I built a fully client-side resume and cover letter builder with friendly mascot characters, focusing on privacy, ATS compliance, and user experience.</description>
      <pubDate>Tue, 20 Jan 2026 00:00:00 GMT</pubDate>
      <category>Next.js</category>
      <category>TypeScript</category>
      <category>Privacy</category>
      <category>UX Design</category>
    </item>
    <item>
      <title>Building My Homelab - Virtualization with Proxmox</title>
      <link>https://isaacurman.com/blog/homelab-proxmox-virtualization</link>
      <guid isPermaLink="true">https://isaacurman.com/blog/homelab-proxmox-virtualization</guid>
      <description>How I built a production-grade virtualization platform using Proxmox VE to run multiple isolated services with VM lifecycle management and operational best practices.</description>
      <pubDate>Thu, 15 Feb 2024 00:00:00 GMT</pubDate>
      <category>Proxmox</category>
      <category>Virtualization</category>
      <category>Homelab</category>
      <category>Linux</category>
    </item>
    <item>
      <title>Self-Hosting with Coolify and Cloudflare</title>
      <link>https://isaacurman.com/blog/self-hosting-coolify-cloudflare</link>
      <guid isPermaLink="true">https://isaacurman.com/blog/self-hosting-coolify-cloudflare</guid>
      <description>How I deployed my portfolio and other web applications using Coolify as a self-hosted PaaS with Cloudflare for DNS and TLS.</description>
      <pubDate>Thu, 08 Feb 2024 00:00:00 GMT</pubDate>
      <category>Self-Hosting</category>
      <category>Coolify</category>
      <category>Cloudflare</category>
      <category>DevOps</category>
    </item>
    <item>
      <title>Secure Remote Access with Tailscale</title>
      <link>https://isaacurman.com/blog/tailscale-secure-remote-access</link>
      <guid isPermaLink="true">https://isaacurman.com/blog/tailscale-secure-remote-access</guid>
      <description>How I use Tailscale to create a secure overlay network for remote administration without exposing management ports to the internet.</description>
      <pubDate>Thu, 01 Feb 2024 00:00:00 GMT</pubDate>
      <category>Tailscale</category>
      <category>Security</category>
      <category>Networking</category>
      <category>Homelab</category>
    </item>
    <item>
      <title>Scaling Minecraft Servers to 100+ Concurrent Players</title>
      <link>https://isaacurman.com/blog/scaling-minecraft-100-players</link>
      <guid isPermaLink="true">https://isaacurman.com/blog/scaling-minecraft-100-players</guid>
      <description>Lessons from running community Minecraft servers at scale, including performance tuning, monetization, and operational workflows.</description>
      <pubDate>Sun, 28 Jan 2024 00:00:00 GMT</pubDate>
      <category>Minecraft</category>
      <category>Game Servers</category>
      <category>Scaling</category>
      <category>Community</category>
    </item>
    <item>
      <title>Building Observability with Prometheus and Grafana</title>
      <link>https://isaacurman.com/blog/prometheus-grafana-monitoring</link>
      <guid isPermaLink="true">https://isaacurman.com/blog/prometheus-grafana-monitoring</guid>
      <description>How I built a monitoring stack with Prometheus metrics, Grafana dashboards, and Discord alerting to maintain visibility across my infrastructure.</description>
      <pubDate>Thu, 25 Jan 2024 00:00:00 GMT</pubDate>
      <category>Prometheus</category>
      <category>Grafana</category>
      <category>Monitoring</category>
      <category>DevOps</category>
    </item>
    <item>
      <title>Network Segmentation with Unifi</title>
      <link>https://isaacurman.com/blog/unifi-network-segmentation</link>
      <guid isPermaLink="true">https://isaacurman.com/blog/unifi-network-segmentation</guid>
      <description>How I designed my home network around security boundaries and controlled ingress using Unifi networking gear.</description>
      <pubDate>Thu, 18 Jan 2024 00:00:00 GMT</pubDate>
      <category>Networking</category>
      <category>Unifi</category>
      <category>Security</category>
      <category>Homelab</category>
    </item>
    <item>
      <title>Building a Cosmic Portfolio with Next.js</title>
      <link>https://isaacurman.com/blog/building-my-portfolio</link>
      <guid isPermaLink="true">https://isaacurman.com/blog/building-my-portfolio</guid>
      <description>How I designed and built a unique portfolio website with an animated black hole background using Next.js and Canvas.</description>
      <pubDate>Mon, 15 Jan 2024 00:00:00 GMT</pubDate>
      <category>Next.js</category>
      <category>Design</category>
      <category>Canvas</category>
    </item>
    <item>
      <title>Building a Minecraft Server Consulting Business on Fiverr</title>
      <link>https://isaacurman.com/blog/minecraft-server-consulting</link>
      <guid isPermaLink="true">https://isaacurman.com/blog/minecraft-server-consulting</guid>
      <description>How I ran a freelance consulting business helping clients build, optimize, and scale their Minecraft servers.</description>
      <pubDate>Fri, 12 Jan 2024 00:00:00 GMT</pubDate>
      <category>Freelance</category>
      <category>Minecraft</category>
      <category>Consulting</category>
      <category>Java</category>
    </item>
    <item>
      <title>5 TypeScript Tips I Wish I Knew Earlier</title>
      <link>https://isaacurman.com/blog/typescript-tips</link>
      <guid isPermaLink="true">https://isaacurman.com/blog/typescript-tips</guid>
      <description>Practical TypeScript patterns and techniques that will level up your code quality and developer experience.</description>
      <pubDate>Wed, 10 Jan 2024 00:00:00 GMT</pubDate>
      <category>TypeScript</category>
      <category>JavaScript</category>
      <category>Tips</category>
    </item>
    <item>
      <title>Running Atomic Linux on Framework 16 with Bazzite</title>
      <link>https://isaacurman.com/blog/atomic-linux-bazzite-framework16</link>
      <guid isPermaLink="true">https://isaacurman.com/blog/atomic-linux-bazzite-framework16</guid>
      <description>My experience running Bazzite, an immutable Fedora-based OS, on a Framework 16 laptop for development and systems work.</description>
      <pubDate>Fri, 05 Jan 2024 00:00:00 GMT</pubDate>
      <category>Linux</category>
      <category>Bazzite</category>
      <category>Framework</category>
      <category>Fedora</category>
    </item>
    <item>
      <title>React Performance Patterns That Actually Matter</title>
      <link>https://isaacurman.com/blog/react-performance</link>
      <guid isPermaLink="true">https://isaacurman.com/blog/react-performance</guid>
      <description>Practical performance optimization techniques for React applications, focused on real-world scenarios.</description>
      <pubDate>Fri, 05 Jan 2024 00:00:00 GMT</pubDate>
      <category>React</category>
      <category>Performance</category>
      <category>JavaScript</category>
    </item>
    <item>
      <title>night signal</title>
      <link>https://isaacurman.com/achievements</link>
      <guid isPermaLink="true">https://isaacurman.com/feed-secret-void-signal</guid>
      <description>Achievement hunters: you found the feed secret. Noch noticed your subscription. Visit /achievements, and try /feed if you are curious.</description>
      <pubDate>Mon, 01 Jan 2024 00:00:00 GMT</pubDate>
    </item>
  </channel>
</rss>