<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Hacker News: elitan</title><link>https://news.ycombinator.com/user?id=elitan</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Wed, 06 May 2026 22:49:36 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=elitan" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by elitan in "An Update on Heroku"]]></title><description><![CDATA[
<p>Heroku's git-push-to-deploy was magic in 2012. Sad to see it go out like this.<p>I've been building Frost <a href="https://github.com/elitan/frost" rel="nofollow">https://github.com/elitan/frost</a>, open source and self-hosted. Same idea, git push to deploy, automatic SSL, custom domains, but on your own VPS. Docker-native, no vendor lock-in, no pricing surprises.<p>The angle that's a bit different: it's designed for AI coding agents. Simple config they write correctly, clear errors, no K8s complexity to hallucinate. You give your agent the install URL and it sets up the whole server.</p>
]]></description><pubDate>Sat, 07 Feb 2026 08:25:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=46922255</link><dc:creator>elitan</dc:creator><comments>https://news.ycombinator.com/item?id=46922255</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46922255</guid></item><item><title><![CDATA[New comment by elitan in "Ask HN: What are you working on? (January 2026)"]]></title><description><![CDATA[
<p>Building Frost, a simple self-hosted deployment platform. Docker-only, single-user, no Kubernetes. You point it at a repo or image, it handles the build → health check → deploy → stop old container flow.<p>Stack: Bun, Next.js, SQLite, Kysely. Been building it almost entirely with Claude Code which has been a surprisingly effective workflow for this kind of infra tooling.<p><a href="https://github.com/elitan/frost" rel="nofollow">https://github.com/elitan/frost</a></p>
]]></description><pubDate>Mon, 12 Jan 2026 07:32:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=46585250</link><dc:creator>elitan</dc:creator><comments>https://news.ycombinator.com/item?id=46585250</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46585250</guid></item><item><title><![CDATA[New comment by elitan in "CLI agents make self-hosting on a home server easier and fun"]]></title><description><![CDATA[
<p>Been using Claude Code to build a small deployment tool (Frost) for exactly this use case. The meta experience is interesting - using an AI agent to build tooling that makes self-hosting easier.<p>What I've found: Claude Code is great at the "figure out this docker/nginx/systemd incantation" part but the orchestration layer (health checks, rollbacks, zero-downtime deploys) still benefits from purpose-built tooling. The AI handles the tedious config generation while you focus on the actual workflow.<p>github.com/elitan/frost if curious</p>
]]></description><pubDate>Mon, 12 Jan 2026 07:24:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=46585196</link><dc:creator>elitan</dc:creator><comments>https://news.ycombinator.com/item?id=46585196</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46585196</guid></item><item><title><![CDATA[New comment by elitan in "Creators of Tailwind laid off 75% of their engineering team"]]></title><description><![CDATA[
<p>Amazon (AWS) is not cheap! :D</p>
]]></description><pubDate>Wed, 07 Jan 2026 18:20:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=46530262</link><dc:creator>elitan</dc:creator><comments>https://news.ycombinator.com/item?id=46530262</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46530262</guid></item><item><title><![CDATA[New comment by elitan in "Instant database clones with PostgreSQL 18"]]></title><description><![CDATA[
<p>interesting, you have a link?</p>
]]></description><pubDate>Tue, 23 Dec 2025 21:19:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=46369595</link><dc:creator>elitan</dc:creator><comments>https://news.ycombinator.com/item?id=46369595</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46369595</guid></item><item><title><![CDATA[New comment by elitan in "Instant database clones with PostgreSQL 18"]]></title><description><![CDATA[
<p>Plagiarized from what? Happy to address if you can point to what you're referring to.</p>
]]></description><pubDate>Tue, 23 Dec 2025 21:12:26 +0000</pubDate><link>https://news.ycombinator.com/item?id=46369521</link><dc:creator>elitan</dc:creator><comments>https://news.ycombinator.com/item?id=46369521</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46369521</guid></item><item><title><![CDATA[New comment by elitan in "Instant database clones with PostgreSQL 18"]]></title><description><![CDATA[
<p>For those who can't wait for PG18 or need full instance isolation: I built Velo, which does instant branching using ZFS snapshots instead of reflinks.<p>Works with any PG version today. Each branch is a fully isolated PostgreSQL container with its own port. ~2-5 seconds for a 100GB database.<p><a href="https://github.com/elitan/velo" rel="nofollow">https://github.com/elitan/velo</a><p>Main difference from PG18's approach: you get complete server isolation (useful for testing migrations, different PG configs, etc.) rather than databases sharing one instance.</p>
]]></description><pubDate>Tue, 23 Dec 2025 13:21:42 +0000</pubDate><link>https://news.ycombinator.com/item?id=46365130</link><dc:creator>elitan</dc:creator><comments>https://news.ycombinator.com/item?id=46365130</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46365130</guid></item><item><title><![CDATA[New comment by elitan in "The unexpected effectiveness of one-shot decompilation with Claude"]]></title><description><![CDATA[
<p>helpful</p>
]]></description><pubDate>Sat, 06 Dec 2025 17:54:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=46175191</link><dc:creator>elitan</dc:creator><comments>https://news.ycombinator.com/item?id=46175191</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46175191</guid></item><item><title><![CDATA[New comment by elitan in "Show HN: Allein - Markdown editor with AI autocompletion, completely offline"]]></title><description><![CDATA[
<p>This looks really good, love the local LLM support. Will try this instead of Notion which is my current note taking app. Thank you!</p>
]]></description><pubDate>Wed, 19 Nov 2025 19:45:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=45984147</link><dc:creator>elitan</dc:creator><comments>https://news.ycombinator.com/item?id=45984147</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45984147</guid></item><item><title><![CDATA[New comment by elitan in "Show HN: Velo – Git-like branching for PostgreSQL databases using ZFS snapshots"]]></title><description><![CDATA[
<p>It's a killer feature indeed. Glad you liked it! :)</p>
]]></description><pubDate>Tue, 14 Oct 2025 17:23:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=45582589</link><dc:creator>elitan</dc:creator><comments>https://news.ycombinator.com/item?id=45582589</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45582589</guid></item><item><title><![CDATA[New comment by elitan in "Show HN: Velo – Git-like branching for PostgreSQL databases using ZFS snapshots"]]></title><description><![CDATA[
<p>Hey HN! I built Velo to solve a problem I kept running into: testing database migrations and debugging production issues without copying around massive database dumps or waiting for slow clones.<p>The core idea: use ZFS copy-on-write snapshots to branch PostgreSQL databases the way you branch Git repos. A 100GB database branches in ~2 seconds and takes ~100KB of space initially. Each branch is a complete, isolated PostgreSQL instance running in Docker.<p>How it works:<p>- Runs CHECKPOINT to flush PostgreSQL buffers (ensures consistency)<p>- Creates a ZFS snapshot (filesystem-level, instant)<p>- Clones the snapshot to a new dataset (CoW means no data copying)<p>- Spins up a new PostgreSQL container pointing at the clone<p>The mental model is: Project = Git repo, Branch = Git branch. Commands like `velo branch create api/test-migration` or `velo branch reset api/dev`.<p>I also added point-in-time recovery using WAL archiving, so you can create branches from specific timestamps (e.g., "5 minutes before the incident").<p>Requirements: Linux + ZFS + Docker.<p>Built using Bun and TypeScript.<p>Let me know what you think :)</p>
]]></description><pubDate>Tue, 14 Oct 2025 13:51:05 +0000</pubDate><link>https://news.ycombinator.com/item?id=45580038</link><dc:creator>elitan</dc:creator><comments>https://news.ycombinator.com/item?id=45580038</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45580038</guid></item><item><title><![CDATA[Show HN: Velo – Git-like branching for PostgreSQL databases using ZFS snapshots]]></title><description><![CDATA[
<p>Article URL: <a href="https://github.com/elitan/velo">https://github.com/elitan/velo</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=45580008">https://news.ycombinator.com/item?id=45580008</a></p>
<p>Points: 3</p>
<p># Comments: 3</p>
]]></description><pubDate>Tue, 14 Oct 2025 13:48:27 +0000</pubDate><link>https://github.com/elitan/velo</link><dc:creator>elitan</dc:creator><comments>https://news.ycombinator.com/item?id=45580008</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45580008</guid></item><item><title><![CDATA[New comment by elitan in "Ask HN: What are you working on? (October 2025)"]]></title><description><![CDATA[
<p>Sure is! Thank you :)</p>
]]></description><pubDate>Mon, 13 Oct 2025 13:47:06 +0000</pubDate><link>https://news.ycombinator.com/item?id=45568293</link><dc:creator>elitan</dc:creator><comments>https://news.ycombinator.com/item?id=45568293</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45568293</guid></item><item><title><![CDATA[New comment by elitan in "Ask HN: What are you working on? (October 2025)"]]></title><description><![CDATA[
<p>Two things related to Postgres:<p>* Velo - Postgres with instant branching (<a href="https://github.com/elitan/velo" rel="nofollow">https://github.com/elitan/velo</a>)<p>* Terra - Declarative schema management for Postgres (<a href="https://github.com/elitan/terra" rel="nofollow">https://github.com/elitan/terra</a>)<p>Some fun side projects i hack on during the evenings and weekends.</p>
]]></description><pubDate>Mon, 13 Oct 2025 09:10:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=45566344</link><dc:creator>elitan</dc:creator><comments>https://news.ycombinator.com/item?id=45566344</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45566344</guid></item><item><title><![CDATA[New comment by elitan in "AI tools I wish existed"]]></title><description><![CDATA[
<p>I'm building #4:<p>> A hybrid of Strong (the lifting app) and ChatGPT where the model has access to my workouts, can suggest improvements, and coach me. I mainly just want to be able to chat with the model knowing it has detailed context for each of my workouts (down to the time in between each set).<p>here: <a href="https://j4.coach/" rel="nofollow">https://j4.coach/</a><p>Still early, have ~30 min per day to work on it but it's usable and improving every week :)</p>
]]></description><pubDate>Tue, 30 Sep 2025 06:13:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=45422459</link><dc:creator>elitan</dc:creator><comments>https://news.ycombinator.com/item?id=45422459</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45422459</guid></item><item><title><![CDATA[New comment by elitan in "New research reveals longevity gains slowing, life expectancy of 100 unlikely"]]></title><description><![CDATA[
<p>I have the opposite feeling.</p>
]]></description><pubDate>Sat, 30 Aug 2025 17:52:56 +0000</pubDate><link>https://news.ycombinator.com/item?id=45076647</link><dc:creator>elitan</dc:creator><comments>https://news.ycombinator.com/item?id=45076647</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45076647</guid></item><item><title><![CDATA[New comment by elitan in "If you have a Claude account, they're going to train on your data moving forward"]]></title><description><![CDATA[
<p>i'm fine with it. happy to seed.</p>
]]></description><pubDate>Fri, 29 Aug 2025 18:47:56 +0000</pubDate><link>https://news.ycombinator.com/item?id=45067914</link><dc:creator>elitan</dc:creator><comments>https://news.ycombinator.com/item?id=45067914</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45067914</guid></item><item><title><![CDATA[New comment by elitan in "Claude Sonnet 4 now supports 1M tokens of context"]]></title><description><![CDATA[
<p>have you ever hired humans?</p>
]]></description><pubDate>Tue, 12 Aug 2025 18:36:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=44880169</link><dc:creator>elitan</dc:creator><comments>https://news.ycombinator.com/item?id=44880169</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44880169</guid></item><item><title><![CDATA[New comment by elitan in "Rethinking CLI interfaces for AI"]]></title><description><![CDATA[
<p>For sure.</p>
]]></description><pubDate>Sun, 20 Jul 2025 08:11:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=44622962</link><dc:creator>elitan</dc:creator><comments>https://news.ycombinator.com/item?id=44622962</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44622962</guid></item><item><title><![CDATA[New comment by elitan in "Rethinking CLI interfaces for AI"]]></title><description><![CDATA[
<p>I had the same thought when I was dog fooding a CLI tool I've been vibe coding. It's a CLI   for deploying Docker apps on any server. An here is the exact PR "I" did.<p><a href="https://github.com/elitan/lightform/pull/35">https://github.com/elitan/lightform/pull/35</a><p>One of the advantages of vibe coding CLI tools like this is that it's easy for the AI to debug itself, and it's easy to see where it gets stuck.<p>And it usually gets stuck because of:<p>1. Errors
2. Don't know what command to run<p>So:<p>1. Errors must be clear and *actionable* like `app_port` ("8080") is a string, expected a number.
2. The command should have simple, actionable and complete help (`--help`) sections for all commands.</p>
]]></description><pubDate>Sat, 19 Jul 2025 21:19:00 +0000</pubDate><link>https://news.ycombinator.com/item?id=44619510</link><dc:creator>elitan</dc:creator><comments>https://news.ycombinator.com/item?id=44619510</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44619510</guid></item></channel></rss>