<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: EnigmaCurry</title><link>https://news.ycombinator.com/user?id=EnigmaCurry</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Thu, 18 Jun 2026 08:29:39 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=EnigmaCurry" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by EnigmaCurry in "Show HN: machine0 – Persistent NixOS VMs You Control from the CLI"]]></title><description><![CDATA[
<p>I'm happy to see this, and I have lots of thoughts about this. Building declarative services on Nix is a far superior way of distributing Linux to VMs than most any other way I've tried. I am working [1] on very similar things, but I've been leaning more on the self-hosted path, my VM template targets libvirt and Proxmox VE with a single CLI api. I even have an experimental branch that targets DigitalOcean. For VMs especially, I want my OS to be immutable. My VMs should contain no state other than my application state. Upgrades should be a full image replacement and reboot.<p>So in my template, I have created the VMs with two disks: first one is for NixOS and is built from an image, and it is read-only. The second is mounted to /var and is used for all system configuration as well as application state. If I have multiple VMs, they can all share the same base image (thin provisioned). That's the mode that I want for my deployments of services, immutable and as stateless as possible. For agent use, its different, you actually want a mutable NixOS root so that the agent can do what it wants.<p>I built three modes: immutable, semi-mutable, and mutable. mutable removes the read-only lock on the root, and just lets you manage the VM as a pet. semi-mutable adds an ephemeral overlayfs that gets wiped the next time you upgrade the base image. So that gives you kind of the best of both worlds: an immutable read-only base image and the ability to "nix profile add" whatever you (or your agent) wants, but with the contract that these imperatively installed things will disappear the next time you upgrade. Are you planning on adding a LICENSE to your machine0-nixos repo?<p>[1] <a href="https://github.com/EnigmaCurry/nixos-vm-template" rel="nofollow">https://github.com/EnigmaCurry/nixos-vm-template</a></p>
]]></description><pubDate>Mon, 15 Jun 2026 17:47:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=48544704</link><dc:creator>EnigmaCurry</dc:creator><comments>https://news.ycombinator.com/item?id=48544704</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48544704</guid></item><item><title><![CDATA[New comment by EnigmaCurry in "My thoughts after using Clojure for about a month"]]></title><description><![CDATA[
<p>I am learning Clojure this week, and my test project is a calculator / unit convertor [1]. I wanted it to run in the CLI and on the web, so it targets several hosted platforms: Babashka / JVM / ClojureScript. It's a single code base written in cross platform .cljc files. I already have about 250 tests written for the abstract calculator API, run as a test matrix across platforms, so the project is already in a good place for testing a new runtime.<p>I just learned about basilisp from the parent comment, so I asked Claude to add Python support to the same .cljc files I have, and we finished the port in about 30mins, and then fixed Python specific test cases for another 30 mins, but now all of the existing tests are passing. That's impressive in several ways.<p>Portability is achieved by testing. You have to put the platforms you want to support into your test harness, and the earlier the better. A calculator is purely functional, so this is a fairly straight forward port and really easy to test for. I'm not sure about larger projects, but it seems like there is something seriously right about Clojure's design that makes this easy to do.<p>[1] <a href="https://github.com/EnigmaCurry/calc" rel="nofollow">https://github.com/EnigmaCurry/calc</a></p>
]]></description><pubDate>Thu, 04 Jun 2026 06:54:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=48395025</link><dc:creator>EnigmaCurry</dc:creator><comments>https://news.ycombinator.com/item?id=48395025</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48395025</guid></item><item><title><![CDATA[New comment by EnigmaCurry in "The seed oil panic is hurting my cardiac patients"]]></title><description><![CDATA[
<p>That may have been the dumbest line in the article, the oils in question, are made out of seeds.</p>
]]></description><pubDate>Sun, 24 May 2026 15:44:49 +0000</pubDate><link>https://news.ycombinator.com/item?id=48258212</link><dc:creator>EnigmaCurry</dc:creator><comments>https://news.ycombinator.com/item?id=48258212</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48258212</guid></item><item><title><![CDATA[New comment by EnigmaCurry in "Setting up a free *.city.state.us locality domain (2025)"]]></title><description><![CDATA[
<p>Yes. The registrar is for the root domain. You provide your own DNS. DNS can do wildcards for any root domain its delegated.</p>
]]></description><pubDate>Wed, 13 May 2026 18:40:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=48125721</link><dc:creator>EnigmaCurry</dc:creator><comments>https://news.ycombinator.com/item?id=48125721</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48125721</guid></item><item><title><![CDATA[New comment by EnigmaCurry in "The Claude Code Source Leak: fake tools, frustration regexes, undercover mode"]]></title><description><![CDATA[
<p>Sent from my Ipad</p>
]]></description><pubDate>Wed, 01 Apr 2026 00:26:49 +0000</pubDate><link>https://news.ycombinator.com/item?id=47595277</link><dc:creator>EnigmaCurry</dc:creator><comments>https://news.ycombinator.com/item?id=47595277</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47595277</guid></item><item><title><![CDATA[New comment by EnigmaCurry in "From Proxmox to FreeBSD and Sylve in our office lab"]]></title><description><![CDATA[
<p>Same. Here's how I scratch the NixOS itch on Proxmox and/or libvirt[1]. One interface for both targets.<p>[1] <a href="https://github.com/EnigmaCurry/nixos-vm-template" rel="nofollow">https://github.com/EnigmaCurry/nixos-vm-template</a></p>
]]></description><pubDate>Mon, 30 Mar 2026 17:07:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=47576937</link><dc:creator>EnigmaCurry</dc:creator><comments>https://news.ycombinator.com/item?id=47576937</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47576937</guid></item><item><title><![CDATA[New comment by EnigmaCurry in "A most elegant TCP hole punching algorithm"]]></title><description><![CDATA[
<p>Yes, that solves it completely. But the exercise we were trying to do was to do it without that.</p>
]]></description><pubDate>Sun, 15 Mar 2026 06:48:15 +0000</pubDate><link>https://news.ycombinator.com/item?id=47384912</link><dc:creator>EnigmaCurry</dc:creator><comments>https://news.ycombinator.com/item?id=47384912</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47384912</guid></item><item><title><![CDATA[New comment by EnigmaCurry in "A most elegant TCP hole punching algorithm"]]></title><description><![CDATA[
<p>> Many home routers try to preserve the source port in external mappings. This is a property called “equal delta mapping” – it won’t work on all routers but for our algorithm we’re sacrificing coverage for simplicity.<p>It is precisely this point that has flummoxed me when connecting my p2p wireguard config[1] with a friend that uses a pfsense router, no matter what we tried, pfsense always chooses a random source port.<p>But in the simple case this blog outlines, if both ends use the same source port, this method punches through 2 firewalls effortlessly:<p>[1] <a href="https://blog.rymcg.tech/blog/linux/wireguard_p2p/" rel="nofollow">https://blog.rymcg.tech/blog/linux/wireguard_p2p/</a></p>
]]></description><pubDate>Sun, 15 Mar 2026 05:37:26 +0000</pubDate><link>https://news.ycombinator.com/item?id=47384626</link><dc:creator>EnigmaCurry</dc:creator><comments>https://news.ycombinator.com/item?id=47384626</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47384626</guid></item><item><title><![CDATA[New comment by EnigmaCurry in "When does MCP make sense vs CLI?"]]></title><description><![CDATA[
<p>Use APIs for building things (and preparing for things to be built upon). Production.<p>Use CLI for exploration, coding, and learning. Greenfield.<p>In general, Declarative > Imperative.</p>
]]></description><pubDate>Mon, 02 Mar 2026 00:13:36 +0000</pubDate><link>https://news.ycombinator.com/item?id=47212283</link><dc:creator>EnigmaCurry</dc:creator><comments>https://news.ycombinator.com/item?id=47212283</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47212283</guid></item><item><title><![CDATA[New comment by EnigmaCurry in "Using a laptop as an HDMI monitor for an SBC"]]></title><description><![CDATA[
<p>GPD Pocket 4</p>
]]></description><pubDate>Thu, 09 Oct 2025 16:15:06 +0000</pubDate><link>https://news.ycombinator.com/item?id=45529747</link><dc:creator>EnigmaCurry</dc:creator><comments>https://news.ycombinator.com/item?id=45529747</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45529747</guid></item><item><title><![CDATA[New comment by EnigmaCurry in "Babel is why I keep blogging with Emacs"]]></title><description><![CDATA[
<p>yes I used to use it too :) I think I've written three or four SSG since then haha.</p>
]]></description><pubDate>Fri, 03 Oct 2025 00:04:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=45457109</link><dc:creator>EnigmaCurry</dc:creator><comments>https://news.ycombinator.com/item?id=45457109</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45457109</guid></item><item><title><![CDATA[New comment by EnigmaCurry in "Babel is why I keep blogging with Emacs"]]></title><description><![CDATA[
<p>> Anybody have something better?<p>I wrote this to publish Org docs to S3 - <a href="https://github.com/EnigmaCurry/s3-publish.el" rel="nofollow">https://github.com/EnigmaCurry/s3-publish.el</a> - I wanted something extremely lightweight, not even wanting to commit things to git like I normally would and waiting for CI to build something. Uploading html directly to S3 means it gets published in <1s from push.</p>
]]></description><pubDate>Thu, 02 Oct 2025 19:29:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=45454304</link><dc:creator>EnigmaCurry</dc:creator><comments>https://news.ycombinator.com/item?id=45454304</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45454304</guid></item><item><title><![CDATA[New comment by EnigmaCurry in "Show HN: TailGuard – Bridge your WireGuard router into Tailscale via a container"]]></title><description><![CDATA[
<p>Yea on Linux I can run 10 different VPNs (or 10 wg peers) no problem, this limitation of Android is super annoying to me. I think OPs solution is quite a good one for Android users.</p>
]]></description><pubDate>Wed, 10 Sep 2025 18:58:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=45202142</link><dc:creator>EnigmaCurry</dc:creator><comments>https://news.ycombinator.com/item?id=45202142</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45202142</guid></item><item><title><![CDATA[New comment by EnigmaCurry in "Show HN: TailGuard – Bridge your WireGuard router into Tailscale via a container"]]></title><description><![CDATA[
<p>This is at least a limitation in Android itself:<p><a href="https://developer.android.com/reference/android/net/VpnService.html" rel="nofollow">https://developer.android.com/reference/android/net/VpnServi...</a><p>"There can be only one VPN connection running at the same time. The existing interface is deactivated when a new one is created."<p>Note this is not about routing some traffic to the VPN and other traffic to the clear net. This is about running two VPN connections simultaneously.</p>
]]></description><pubDate>Wed, 10 Sep 2025 18:43:15 +0000</pubDate><link>https://news.ycombinator.com/item?id=45201955</link><dc:creator>EnigmaCurry</dc:creator><comments>https://news.ycombinator.com/item?id=45201955</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45201955</guid></item><item><title><![CDATA[New comment by EnigmaCurry in "Benben: An audio player for the terminal, written in Common Lisp"]]></title><description><![CDATA[
<p>Maybe try <a href="https://github.com/nschlia/ffmpegfs">https://github.com/nschlia/ffmpegfs</a></p>
]]></description><pubDate>Fri, 18 Jul 2025 20:42:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=44609606</link><dc:creator>EnigmaCurry</dc:creator><comments>https://news.ycombinator.com/item?id=44609606</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44609606</guid></item><item><title><![CDATA[New comment by EnigmaCurry in "Rust needs a web framework"]]></title><description><![CDATA[
<p>I feel like my Rust code takes 3x as long to write as my Python code, but the gpt results for rust are about 10x better, because the tooling is a backstop against hallucinations.<p>I really like the Rust tooling and I like exhaustive pattern matching. Python post-dev debugging time is probably 10x vs Rust. That's why I choose Rust.</p>
]]></description><pubDate>Mon, 07 Oct 2024 02:01:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=41762088</link><dc:creator>EnigmaCurry</dc:creator><comments>https://news.ycombinator.com/item?id=41762088</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41762088</guid></item><item><title><![CDATA[New comment by EnigmaCurry in "Diskomator – NVMe-TCP at your fingertips"]]></title><description><![CDATA[
<p>How does this compare with iSCSI?</p>
]]></description><pubDate>Wed, 15 Nov 2023 21:26:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=38282750</link><dc:creator>EnigmaCurry</dc:creator><comments>https://news.ycombinator.com/item?id=38282750</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38282750</guid></item><item><title><![CDATA[New comment by EnigmaCurry in "Rhino Linux is a rolling release Ubuntu-based distribution"]]></title><description><![CDATA[
<p>EndeavourOS sway edition (community) [1] has been a pretty great start for preconfigured wayland+sway+waybar and various integration. I added some more stuff to my ~/.config in my own repo [2], but it was a good place to start, and EndeavourOS is basically just rolling Arch Linux with some extra niceties. The included EnvyControl [3] switcher between  nvidia to integrated is nice (yea you do have to reboot tho to switch), so I have used the regular i3 config with Xorg for playing some games (nvidia hardware graphics), but use sway for my day to day use (integrated graphics on wayland).<p>[1] <a href="https://github.com/EndeavourOS-Community-Editions/sway">https://github.com/EndeavourOS-Community-Editions/sway</a><p>[2] <a href="https://github.com/enigmacurry/sway-home">https://github.com/enigmacurry/sway-home</a><p>[3] <a href="https://discovery.endeavouros.com/hardware/envy-control/2023/03/" rel="nofollow noreferrer">https://discovery.endeavouros.com/hardware/envy-control/2023...</a></p>
]]></description><pubDate>Thu, 10 Aug 2023 20:59:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=37081712</link><dc:creator>EnigmaCurry</dc:creator><comments>https://news.ycombinator.com/item?id=37081712</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37081712</guid></item><item><title><![CDATA[New comment by EnigmaCurry in "Apple brings Final Cut Pro and Logic Pro to iPad"]]></title><description><![CDATA[
<p>irrevocable licenses are pretty different than subscriptions.</p>
]]></description><pubDate>Tue, 09 May 2023 16:16:39 +0000</pubDate><link>https://news.ycombinator.com/item?id=35876594</link><dc:creator>EnigmaCurry</dc:creator><comments>https://news.ycombinator.com/item?id=35876594</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=35876594</guid></item><item><title><![CDATA[New comment by EnigmaCurry in "Apple brings Final Cut Pro and Logic Pro to iPad"]]></title><description><![CDATA[
<p>Ownership.</p>
]]></description><pubDate>Tue, 09 May 2023 15:34:30 +0000</pubDate><link>https://news.ycombinator.com/item?id=35875957</link><dc:creator>EnigmaCurry</dc:creator><comments>https://news.ycombinator.com/item?id=35875957</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=35875957</guid></item></channel></rss>