<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: thomasbacklund</title><link>https://news.ycombinator.com/user?id=thomasbacklund</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Thu, 16 Jul 2026 05:27:41 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=thomasbacklund" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by thomasbacklund in "[dead]"]]></title><description><![CDATA[
<p>I am still curious.<p>As a FB software engineer you can probably work at any company you want to, so one must assume you want to work at Meta. And why is this?<p>Serious question here, please respond.</p>
]]></description><pubDate>Wed, 15 Dec 2021 08:36:42 +0000</pubDate><link>https://news.ycombinator.com/item?id=29563398</link><dc:creator>thomasbacklund</dc:creator><comments>https://news.ycombinator.com/item?id=29563398</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=29563398</guid></item><item><title><![CDATA[New comment by thomasbacklund in "[dead]"]]></title><description><![CDATA[
<p><a href="https://en.wikipedia.org/wiki/Criticism_of_Facebook" rel="nofollow">https://en.wikipedia.org/wiki/Criticism_of_Facebook</a></p>
]]></description><pubDate>Tue, 14 Dec 2021 21:23:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=29558034</link><dc:creator>thomasbacklund</dc:creator><comments>https://news.ycombinator.com/item?id=29558034</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=29558034</guid></item><item><title><![CDATA[New comment by thomasbacklund in "Show HN: pocket-sockets is a small TCP/WebSockets lib written in TypeScript"]]></title><description><![CDATA[
<p>I made this nice little client/server socket lib which has the same interface both for TCP sockets and WebSockets. Free to use, MIT licensed.<p>You all know that browsers require WebSockets but when doing server to server communication regular TCP sockets are leaner and faster.<p>With pocket-sockets you can switch the underlying sockets as you need but use the same interface for both TCP and WebSockets.<p>Small, neat and few dependencies. Written in TypeScript with a bunch of tests to it :)<p>It also supports SSL/TLS encryption.<p>Happy SYN/ACK day!</p>
]]></description><pubDate>Tue, 28 Sep 2021 14:20:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=28683090</link><dc:creator>thomasbacklund</dc:creator><comments>https://news.ycombinator.com/item?id=28683090</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=28683090</guid></item><item><title><![CDATA[Show HN: pocket-sockets is a small TCP/WebSockets lib written in TypeScript]]></title><description><![CDATA[
<p>Article URL: <a href="https://github.com/bashlund/pocket-sockets">https://github.com/bashlund/pocket-sockets</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=28683089">https://news.ycombinator.com/item?id=28683089</a></p>
<p>Points: 3</p>
<p># Comments: 1</p>
]]></description><pubDate>Tue, 28 Sep 2021 14:20:50 +0000</pubDate><link>https://github.com/bashlund/pocket-sockets</link><dc:creator>thomasbacklund</dc:creator><comments>https://news.ycombinator.com/item?id=28683089</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=28683089</guid></item><item><title><![CDATA[New comment by thomasbacklund in "Migrating from Docker to Podman"]]></title><description><![CDATA[
<p>Sure :)
follow me as @bashlund on twitter but also star the repo on github <a href="https://github.com/simplenetes-io/simplenetes" rel="nofollow">https://github.com/simplenetes-io/simplenetes</a></p>
]]></description><pubDate>Mon, 06 Sep 2021 06:45:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=28431100</link><dc:creator>thomasbacklund</dc:creator><comments>https://news.ycombinator.com/item?id=28431100</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=28431100</guid></item><item><title><![CDATA[New comment by thomasbacklund in "Migrating from Docker to Podman"]]></title><description><![CDATA[
<p>Thanks for asking :)
Writing this much Bash is quite straining because there is a lot of typing, but it is also liberating in the sense of coding very close to the OS (utils).<p>Also, most of it is not written in Bash, it's written in Posix standard, which is even more spartanic, but is then compatible with Dash and Ash (BusyBox) also, which is good because Bash is not always available.<p>To make Simplenetes we used another tool we also created which is meant for writing shell script apps and to perform agent-less automation, it is called Space.sh [1]<p>About tools for getting an overview of the cluster, there is only the command line tooling as for now, which does parts of the job, but tools for analyzing traffic and such is not created yet.<p>1: <a href="https://space.sh/" rel="nofollow">https://space.sh/</a></p>
]]></description><pubDate>Sun, 05 Sep 2021 15:26:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=28425022</link><dc:creator>thomasbacklund</dc:creator><comments>https://news.ycombinator.com/item?id=28425022</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=28425022</guid></item><item><title><![CDATA[New comment by thomasbacklund in "Migrating from Docker to Podman"]]></title><description><![CDATA[
<p>Indeed, the goal has to keep the number of moving parts down as much as possible so it can be easy to understand the full cluster and how to troubleshoot it. But of course, it still requires knowledge about the architecture to do so.</p>
]]></description><pubDate>Sat, 04 Sep 2021 21:59:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=28419710</link><dc:creator>thomasbacklund</dc:creator><comments>https://news.ycombinator.com/item?id=28419710</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=28419710</guid></item><item><title><![CDATA[New comment by thomasbacklund in "Migrating from Docker to Podman"]]></title><description><![CDATA[
<p>Thanks,<p>We use haproxy pods for inbound traffic, they perform TLS termination and simply pass the traffic over to a local proxy pod.<p>The haproxy pod (and all other pods) communicate with each other over this local proxy service which is running on each host.<p>We have a very simplified and robust overall architecture, were each pod allocates a specific virtual port and the proxy will try each host for that pod (and remember status), meaning we don't need to keep track of global routing tables and update each host's ip tables (shivering) when pods come and go. We don't use iptables.<p>If some instance of a pod is unavailable the proxy will seamlessly try another instance of the pod.<p>Initially we tried to config haproxy to do all this proxying for us, but it was asking too much.<p>Good to know is that Simplenetes is still in beta.</p>
]]></description><pubDate>Sat, 04 Sep 2021 19:28:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=28418271</link><dc:creator>thomasbacklund</dc:creator><comments>https://news.ycombinator.com/item?id=28418271</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=28418271</guid></item><item><title><![CDATA[New comment by thomasbacklund in "Migrating from Docker to Podman"]]></title><description><![CDATA[
<p>I have really enjoyed using Podman and will keep using it. I have found it be to stable (running on CentOS) for our production stuff.<p>Shameless plug:
We built Simplenetes[1] around Podman (a simpler alternative to Kubernetes, but written in 100% shell script :)<p>1: <a href="https://simplenetes.io/" rel="nofollow">https://simplenetes.io/</a></p>
]]></description><pubDate>Sat, 04 Sep 2021 15:25:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=28415914</link><dc:creator>thomasbacklund</dc:creator><comments>https://news.ycombinator.com/item?id=28415914</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=28415914</guid></item><item><title><![CDATA[New comment by thomasbacklund in "Show HN: Simplenetes – I replaced Kubernetes with 17k lines of shell script"]]></title><description><![CDATA[
<p>I like the detailed questions :)<p>The line count is a rough (overestimate) summoning the source of the three projects involved, simplenetes, simplenetesd and podc, and it also includes comments and blank lines.<p>The compiled output pulls in some dependency modules which is reusable code (STRING, etc). So it's not clear where to draw the line :)<p>Reason the compiled output gets bigger is because the compilation process `(make.sh)` includes compilations of actions, which I use when connecting over SSH agentless to manage the nodes. This tough part is handled by Space.sh [1]<p>[1] <a href="https://github.com/space-sh" rel="nofollow">https://github.com/space-sh</a></p>
]]></description><pubDate>Sat, 03 Apr 2021 06:55:26 +0000</pubDate><link>https://news.ycombinator.com/item?id=26678887</link><dc:creator>thomasbacklund</dc:creator><comments>https://news.ycombinator.com/item?id=26678887</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=26678887</guid></item><item><title><![CDATA[New comment by thomasbacklund in "Show HN: Simplenetes – I replaced Kubernetes with 17k lines of shell script"]]></title><description><![CDATA[
<p>You are looking at the `./release/sns` file, which is the "compiled" release, it's like looking at the .exe (404 kb isn't that bad for an ".exe")<p>The source files involved are smaller [1].<p>[1] <a href="https://github.com/simplenetes-io/simplenetes/tree/master/include" rel="nofollow">https://github.com/simplenetes-io/simplenetes/tree/master/in...</a></p>
]]></description><pubDate>Fri, 02 Apr 2021 08:29:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=26669910</link><dc:creator>thomasbacklund</dc:creator><comments>https://news.ycombinator.com/item?id=26669910</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=26669910</guid></item><item><title><![CDATA[New comment by thomasbacklund in "Show HN: Simplenetes – I replaced Kubernetes with 17k lines of shell script"]]></title><description><![CDATA[
<p>Thanks for taking the time l0b0!<p>A lot of good points.<p>Coding in shell sure is a challenge, I try to avoid bashims where I can, that's why most scripts are .sh not .bash, since they run also with dash/ash (that's why preferring `[` over `[[`).<p>The only Bash requirement we have is the `podc` (pod compiler) since it parses YAML docs, I couldn't pull that one off without the more powerful Bash.<p>The code base as a whole absolutely needs testing and shellchecks all over the place to be labelled as mature in any sense.<p>Our other large shell project is Space.sh [1] where go overboard on testing, each module is tested under a bunch of distributions. [2] [3]
Next step would be to do the same for Simplenetes.<p>Given that in shell that the only way to protect a variable from functions down the call stack accessing it is to redeclare/shadow it as "local" brings some murky waters.<p>BUT, isn't it amazing what is actually possible to do with Shell??<p>For me Simplenetes in the long run is not about it being written in Shell, I'm perfectly happy rewriting it in Rust if we get traction on it.<p>Simplenetes is primarily about having a simpler architecture of what a container cluster is and <i>is not</i>. I think many projects just get too complex because they want to fill every single use case out there, while the interesting part is saying no to things.<p>[1] <a href="https://github.com/space-sh/space" rel="nofollow">https://github.com/space-sh/space</a>
[2] <a href="https://github.com/space-sh/space/tree/master/test" rel="nofollow">https://github.com/space-sh/space/tree/master/test</a>
[3] <a href="https://github.com/space-sh/space/blob/master/.github/workflows/main.yml" rel="nofollow">https://github.com/space-sh/space/blob/master/.github/workfl...</a></p>
]]></description><pubDate>Fri, 02 Apr 2021 08:24:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=26669893</link><dc:creator>thomasbacklund</dc:creator><comments>https://news.ycombinator.com/item?id=26669893</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=26669893</guid></item><item><title><![CDATA[New comment by thomasbacklund in "Show HN: Simplenetes – I replaced Kubernetes with 17k lines of shell script"]]></title><description><![CDATA[
<p>Thanks for sharing, I'll have a peek :) Heroku is ACE</p>
]]></description><pubDate>Thu, 01 Apr 2021 22:44:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=26667200</link><dc:creator>thomasbacklund</dc:creator><comments>https://news.ycombinator.com/item?id=26667200</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=26667200</guid></item><item><title><![CDATA[New comment by thomasbacklund in "Show HN: Simplenetes – I replaced Kubernetes with 17k lines of shell script"]]></title><description><![CDATA[
<p>Thank you :)</p>
]]></description><pubDate>Thu, 01 Apr 2021 22:40:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=26667153</link><dc:creator>thomasbacklund</dc:creator><comments>https://news.ycombinator.com/item?id=26667153</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=26667153</guid></item><item><title><![CDATA[New comment by thomasbacklund in "Show HN: Simplenetes – I replaced Kubernetes with 17k lines of shell script"]]></title><description><![CDATA[
<p>Thank you aabhay for a nice comment.<p>Seems like my click-baity title brought out some strong feelings :)<p>I do actually like Kubernetes. I recommend it to clients, I assess candidates who are to work with it, but I do really think it is a Beast. Because it is.<p>Kubernetes is like C++, extremely useful but it just keeps growing and nobody really knows all of it.<p>While Simplenetes is like... Lua, batteries not included, your boss will not approve, it doesnt't hit the buzzspot, but some people will secretely use it and be happy about it.</p>
]]></description><pubDate>Thu, 01 Apr 2021 22:38:49 +0000</pubDate><link>https://news.ycombinator.com/item?id=26667129</link><dc:creator>thomasbacklund</dc:creator><comments>https://news.ycombinator.com/item?id=26667129</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=26667129</guid></item><item><title><![CDATA[New comment by thomasbacklund in "Show HN: Simplenetes – I replaced Kubernetes with 17k lines of shell script"]]></title><description><![CDATA[
<p>If you want something simpler and use podman you can try `podc` [1] which compiles a pod yaml spec into a single executable shell script with a nice managagement CLI api to it.<p>[1] <a href="https://github.com/simplenetes-io/podc" rel="nofollow">https://github.com/simplenetes-io/podc</a></p>
]]></description><pubDate>Thu, 01 Apr 2021 20:40:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=26665746</link><dc:creator>thomasbacklund</dc:creator><comments>https://news.ycombinator.com/item?id=26665746</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=26665746</guid></item><item><title><![CDATA[New comment by thomasbacklund in "Show HN: Simplenetes – I replaced Kubernetes with 17k lines of shell script"]]></title><description><![CDATA[
<p>Thanks!!
We do use it in production, it is however fresh from the keyb so giving it some time before putting sensitive stuff in there.
About the state, it's perfectly doable, but requires some more Ops than k8s and isn't as flexible, naturally.</p>
]]></description><pubDate>Thu, 01 Apr 2021 20:34:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=26665673</link><dc:creator>thomasbacklund</dc:creator><comments>https://news.ycombinator.com/item?id=26665673</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=26665673</guid></item><item><title><![CDATA[New comment by thomasbacklund in "Show HN: Simplenetes – I replaced Kubernetes with 17k lines of shell script"]]></title><description><![CDATA[
<p>No, don't build the next Netflix on Simplenetes.<p>However, if you are just dealing with a three node cluster (Yes I know many of you are running tri-cycles with k8s stickers on it) then maybe it can be fine for many applications to not have a scheduler.<p>Simplenetes does however support multiple replicas of pods so if one node fails it can be OK.</p>
]]></description><pubDate>Thu, 01 Apr 2021 20:24:39 +0000</pubDate><link>https://news.ycombinator.com/item?id=26665570</link><dc:creator>thomasbacklund</dc:creator><comments>https://news.ycombinator.com/item?id=26665570</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=26665570</guid></item><item><title><![CDATA[New comment by thomasbacklund in "Show HN: Simplenetes – I replaced Kubernetes with 17k lines of shell script"]]></title><description><![CDATA[
<p>Oh geez.. Hehe, thank you for pointing that out <i>facepalm</i></p>
]]></description><pubDate>Thu, 01 Apr 2021 20:18:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=26665512</link><dc:creator>thomasbacklund</dc:creator><comments>https://news.ycombinator.com/item?id=26665512</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=26665512</guid></item><item><title><![CDATA[New comment by thomasbacklund in "Show HN: Simplenetes – I replaced Kubernetes with 17k lines of shell script"]]></title><description><![CDATA[
<p>Haha :) Well, the learning has been great I can confirm that. My script-fu is on a whole new level now, it was already quite up there after creating Space.sh [1]<p>Waste of time... Well... Let's not think too much about that. I'm at least a very happy user of this :)<p>[1] <a href="https://github.com/space-sh/space" rel="nofollow">https://github.com/space-sh/space</a></p>
]]></description><pubDate>Thu, 01 Apr 2021 20:16:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=26665490</link><dc:creator>thomasbacklund</dc:creator><comments>https://news.ycombinator.com/item?id=26665490</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=26665490</guid></item></channel></rss>