<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: zrail</title><link>https://news.ycombinator.com/user?id=zrail</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Thu, 27 Aug 2026 08:49:40 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=zrail" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by zrail in "Tailcat – Like netcat, but over Tailscale’s data plane"]]></title><description><![CDATA[
<p>I dug into it a bit because I had the same question. The network layer here is wrapping around the Tailscale daemon's magicsock, which is the thing that does all the DERPing and NAT hole punching. Tailcat builds sort of a fake control plane that does a one way key exchange over DERP (the Meow message type) between client and server, then both sides do the normal CallMeMaybe dance to connect.</p>
]]></description><pubDate>Wed, 26 Aug 2026 21:35:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=49456262</link><dc:creator>zrail</dc:creator><comments>https://news.ycombinator.com/item?id=49456262</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49456262</guid></item><item><title><![CDATA[New comment by zrail in "Bookshelf – Self-hosted eBook library that runs on object storage"]]></title><description><![CDATA[
<p>VersityGW is very handy.</p>
]]></description><pubDate>Tue, 25 Aug 2026 02:11:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=49428312</link><dc:creator>zrail</dc:creator><comments>https://news.ycombinator.com/item?id=49428312</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49428312</guid></item><item><title><![CDATA[New comment by zrail in "Homelab Ingress with Deterministic IPv6"]]></title><description><![CDATA[
<p>Hey folks, author here. I wrote in depth about web ingress, one of the more complicated bits in my homelab. The discussion about my previous homelab piece was pretty interesting if you'd like some context: <a href="https://news.ycombinator.com/item?id=48872031">https://news.ycombinator.com/item?id=48872031</a></p>
]]></description><pubDate>Thu, 13 Aug 2026 11:31:06 +0000</pubDate><link>https://news.ycombinator.com/item?id=49284427</link><dc:creator>zrail</dc:creator><comments>https://news.ycombinator.com/item?id=49284427</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49284427</guid></item><item><title><![CDATA[Homelab Ingress with Deterministic IPv6]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.petekeen.net/homelab-ingress-with-deterministic-ipv6/">https://www.petekeen.net/homelab-ingress-with-deterministic-ipv6/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=49284380">https://news.ycombinator.com/item?id=49284380</a></p>
<p>Points: 2</p>
<p># Comments: 1</p>
]]></description><pubDate>Thu, 13 Aug 2026 11:26:02 +0000</pubDate><link>https://www.petekeen.net/homelab-ingress-with-deterministic-ipv6/</link><dc:creator>zrail</dc:creator><comments>https://news.ycombinator.com/item?id=49284380</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49284380</guid></item><item><title><![CDATA[New comment by zrail in "The Valley of Webhooks"]]></title><description><![CDATA[
<p>I dunno about "old timey", I wrote a system that does exactly this like six months ago. Granted, it's a money tracking system.<p>It's always surprising to me how much of the real world runs on CSV and EDI files sent back and forth over SFTP.</p>
]]></description><pubDate>Thu, 06 Aug 2026 01:42:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=49191397</link><dc:creator>zrail</dc:creator><comments>https://news.ycombinator.com/item?id=49191397</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49191397</guid></item><item><title><![CDATA[New comment by zrail in "The Valley of Webhooks"]]></title><description><![CDATA[
<p>Webhooks are a painful problem. To clarify, Stripe's events API definitely ships a cursor and polling it has been the method preferred by large consumers for a long time.</p>
]]></description><pubDate>Wed, 05 Aug 2026 16:16:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=49184908</link><dc:creator>zrail</dc:creator><comments>https://news.ycombinator.com/item?id=49184908</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49184908</guid></item><item><title><![CDATA[New comment by zrail in "Pi's Minimalism Is Its Advantage"]]></title><description><![CDATA[
<p>Thanks!</p>
]]></description><pubDate>Wed, 05 Aug 2026 02:49:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=49178018</link><dc:creator>zrail</dc:creator><comments>https://news.ycombinator.com/item?id=49178018</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49178018</guid></item><item><title><![CDATA[New comment by zrail in "Pi's Minimalism Is Its Advantage"]]></title><description><![CDATA[
<p>Out of curiosity, do you use the pi-xmpp[1] extension or do you have your own?<p>[1]: <a href="https://pi.dev/packages/pi-xmpp" rel="nofollow">https://pi.dev/packages/pi-xmpp</a></p>
]]></description><pubDate>Wed, 05 Aug 2026 01:36:45 +0000</pubDate><link>https://news.ycombinator.com/item?id=49177569</link><dc:creator>zrail</dc:creator><comments>https://news.ycombinator.com/item?id=49177569</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49177569</guid></item><item><title><![CDATA[New comment by zrail in "Ask HN: Who wants to be hired? (August 2026)"]]></title><description><![CDATA[
<p>Location: Michigan, US (EST)<p>Remote: Yes<p>Willing to relocate: No<p>Technologies: Ruby, Rails, MySQL, PostgreSQL, Redis, Sidekiq, Docker, Kubernetes, AWS, Python, Go, Fintech, SFTP, CSV<p>Résumé/CV: <a href="https://www.petekeen.net/resume" rel="nofollow">https://www.petekeen.net/resume</a><p>Email: hi@petekeen.net<p>Backend engineer with 18+ years of experience going deep on complex systems to find the highest-leverage improvements. Led greenfield projects from design through deployment at fintechs you've heard of; built payment and accounting systems processing billions of dollars. Wrote the book on integrating Stripe with Rails.<p>ex-Stripe, ex-Gusto.</p>
]]></description><pubDate>Mon, 03 Aug 2026 23:48:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=49162811</link><dc:creator>zrail</dc:creator><comments>https://news.ycombinator.com/item?id=49162811</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49162811</guid></item><item><title><![CDATA[New comment by zrail in "AI financial advice is surprisingly good, especially if you ask right questions"]]></title><description><![CDATA[
<p>I spun up a simplefin sync tool recently and they made some surprising errors with some of my accounts (incorrect sign, completely missing some transactions). Also they don't do investments, which is problematic when our primary "checking" is actually a brokerage account.<p>I found SnapTrade[1] which gives away a free personal account with up to 20 brokerage connections (i.e. logins, not accounts).<p>I'm using simplefin for credit cards and loans and SnapTrade for investment accounts. Seems to be working well so far.<p>[1]: <a href="https://snaptrade.com">https://snaptrade.com</a></p>
]]></description><pubDate>Sun, 02 Aug 2026 02:30:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=49140502</link><dc:creator>zrail</dc:creator><comments>https://news.ycombinator.com/item?id=49140502</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49140502</guid></item><item><title><![CDATA[New comment by zrail in "AI financial advice is surprisingly good, especially if you ask right questions"]]></title><description><![CDATA[
<p>That's not really DCA, at least how I understand it. DCA is something like "I have $520,000 in cash right now today sitting in checking, I'm going to buy $10,000 a week of VTSAX for the next 52 weeks" which on average is a bad strategy.<p>What you're describing is better analyzed as a continuing series of lump sum investments. You're investing as soon as you have cash available, not unnecessarily holding onto cash.</p>
]]></description><pubDate>Sun, 02 Aug 2026 02:18:06 +0000</pubDate><link>https://news.ycombinator.com/item?id=49140453</link><dc:creator>zrail</dc:creator><comments>https://news.ycombinator.com/item?id=49140453</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49140453</guid></item><item><title><![CDATA[New comment by zrail in "The Glass Famine"]]></title><description><![CDATA[
<p>It comes out mid-August according to <a href="https://www.amazon.com/gp/aw/d/0593467426/" rel="nofollow">https://www.amazon.com/gp/aw/d/0593467426/</a></p>
]]></description><pubDate>Thu, 30 Jul 2026 17:29:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=49113029</link><dc:creator>zrail</dc:creator><comments>https://news.ycombinator.com/item?id=49113029</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49113029</guid></item><item><title><![CDATA[New comment by zrail in "My security camera shipped a GitHub admin token in its login page"]]></title><description><![CDATA[
<p>(Pedantically) Maximum prefix length of /64 is only required if you want/need SLAAC. If you're assigning static addresses or using DHCPv6 for assignment you can go as small as you want. It's not weird to see /127 for tunnel subnets, for example.</p>
]]></description><pubDate>Fri, 24 Jul 2026 17:17:11 +0000</pubDate><link>https://news.ycombinator.com/item?id=49038789</link><dc:creator>zrail</dc:creator><comments>https://news.ycombinator.com/item?id=49038789</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49038789</guid></item><item><title><![CDATA[New comment by zrail in "Show HN: I replaced a $120k bowling center system with $1,600 in ESP32s"]]></title><description><![CDATA[
<p>Having grown up in a small midwest town in an R&R desert, I think the canonical answer is a liquor license.</p>
]]></description><pubDate>Mon, 20 Jul 2026 01:27:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=48973427</link><dc:creator>zrail</dc:creator><comments>https://news.ycombinator.com/item?id=48973427</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48973427</guid></item><item><title><![CDATA[New comment by zrail in "Rebuilding My Homelab with Compose, Ruby, IPv6, and No Kubernetes"]]></title><description><![CDATA[
<p>> I'd expect you to want this<p>The thing is, I don't want any of that. At least, I don't want any of it to be dynamic. For my purposes the more I can determine at deploy time and make static the better.<p>K8s is a stack of dozens-to-hundreds of control loops that are built around the idiosyncrasies of a particular distributed key-value store that is only moderately fit for purpose. This is all great fun if you want to learn about it (I did!) and/or if you get to be a user rather than an operator.</p>
]]></description><pubDate>Thu, 16 Jul 2026 16:29:42 +0000</pubDate><link>https://news.ycombinator.com/item?id=48936729</link><dc:creator>zrail</dc:creator><comments>https://news.ycombinator.com/item?id=48936729</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48936729</guid></item><item><title><![CDATA[New comment by zrail in "Rebuilding My Homelab with Compose, Ruby, IPv6, and No Kubernetes"]]></title><description><![CDATA[
<p>Sure! That's the setup I was running before all of this. My problems are likely entirely my own making, tbh, as described in the article.<p>IME K8s in general and longhorn especially behaved poorly in the face of heterogeneous hardware where the largest node is flaky and has more cores and memory than the rest of the nodes combined.<p>My point is that, for me, in my setup, with my own idiosyncratic constrains, trying to keep up with Talos + longhorn + fluxcd expended way too many spoons in any given month.</p>
]]></description><pubDate>Thu, 16 Jul 2026 16:14:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=48936535</link><dc:creator>zrail</dc:creator><comments>https://news.ycombinator.com/item?id=48936535</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48936535</guid></item><item><title><![CDATA[New comment by zrail in "Rebuilding My Homelab with Compose, Ruby, IPv6, and No Kubernetes"]]></title><description><![CDATA[
<p>Hey thanks! That's my favorite recent addition.<p>The host machines resolve a GUA from an ISP-provided prefix like normal. On top of that, I l33t'd my way to a fun ULA prefix. Each host's prefix, the stack network prefixes, and container addresses are deterministically derived from hashes of each component's name.<p>As of today I haven't made any of the ULA stuff routable, although that was the original impetus for it. Clients see each host's GUA in DNS and generally route traffic through Caddy. Cross-host traffic is almost entirely through Tailscale. I run DNS refreshes at deploy time and hourly, but I haven't dealt with Comcast rotating my PD assignment yet. It's been stable for a couple years so I'm probably due.</p>
]]></description><pubDate>Thu, 16 Jul 2026 16:07:39 +0000</pubDate><link>https://news.ycombinator.com/item?id=48936447</link><dc:creator>zrail</dc:creator><comments>https://news.ycombinator.com/item?id=48936447</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48936447</guid></item><item><title><![CDATA[New comment by zrail in "Rebuilding My Homelab with Compose, Ruby, IPv6, and No Kubernetes"]]></title><description><![CDATA[
<p>Agree! There are a ton of people out there that are happily running k8s on their homelab and there is absolutely nothing wrong with that. I tried it and found it was just too much for me.</p>
]]></description><pubDate>Thu, 16 Jul 2026 15:54:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=48936254</link><dc:creator>zrail</dc:creator><comments>https://news.ycombinator.com/item?id=48936254</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48936254</guid></item><item><title><![CDATA[New comment by zrail in "Rebuilding My Homelab with Compose, Ruby, IPv6, and No Kubernetes"]]></title><description><![CDATA[
<p>I haven't, mostly for personal reasons rather than technical ones.</p>
]]></description><pubDate>Thu, 16 Jul 2026 15:53:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=48936234</link><dc:creator>zrail</dc:creator><comments>https://news.ycombinator.com/item?id=48936234</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48936234</guid></item><item><title><![CDATA[New comment by zrail in "Rebuilding My Homelab with Compose, Ruby, IPv6, and No Kubernetes"]]></title><description><![CDATA[
<p>Hey, author here. This is a piece about moving away from kubernetes and toward something that I can actually maintain as a solo person who has a life outside of k9s. It's not really intended to be "anti-kubernetes", more like "kubernetes really is too hard for my purposes".<p>IMO the best change that I've made has been to give deterministic IPv6 addresses to every container and then using those for ingress.<p>I'm curious to hear where y'all think the line is between docker compose with Ruby glue and "Dear friend, you have built a Kubernetes".</p>
]]></description><pubDate>Sat, 11 Jul 2026 13:52:00 +0000</pubDate><link>https://news.ycombinator.com/item?id=48872069</link><dc:creator>zrail</dc:creator><comments>https://news.ycombinator.com/item?id=48872069</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48872069</guid></item></channel></rss>