<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: snorremd</title><link>https://news.ycombinator.com/user?id=snorremd</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Wed, 29 Apr 2026 20:17:52 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=snorremd" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by snorremd in "Ghostty is leaving GitHub"]]></title><description><![CDATA[
<p>Interestingly ATProto uses Merkle Search Trees to store data as commits, so in some respects it is similar to git. It even signs each commit (say you post an issue record to your ATProto personal data server) it is inserted into your merkle search tree based on content and id hashing rules, and then the new root node in the tree is signed so you can verify its integrity.<p>Now there is absolutely a benefit to co-locating issues and PRs with your code in the same git repo. In a way it becomes much simpler to move your entire repository and all activity when everything is in the same .git folder.<p>With Tangled your code is stored in your code repository and issues and PRs in your data repository. On the other hand the ATProto stuff is what means your project becomes discoverable and that other users in the network automatically can interact with your repository (likes, issues, etc).</p>
]]></description><pubDate>Wed, 29 Apr 2026 12:31:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=47947434</link><dc:creator>snorremd</dc:creator><comments>https://news.ycombinator.com/item?id=47947434</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47947434</guid></item><item><title><![CDATA[New comment by snorremd in "Ghostty is leaving GitHub"]]></title><description><![CDATA[
<p>I kept a Docker install of GitLab running for many years at my first full time employer out of university back in 2014 to 2020. It was really not too difficult. Every once a while they would release a major version that required a migration or config update, but mostly the updates were a docker compose pull and docker compose up away. At our single company scale with only some 25 developers max (don't remember exactly anymore) a self-hosted instance on a moderate VM was super stable and quite boring. And boring is often good. It might be that hosting GitLab for much bigger organizations is a different beast!<p>I remember that the first instance of their CI solution was a separate server/service that coordinated CI jobs on runners. That was a bit cumbersome. But then they integrated the CI coordination into the main server and you only needed to figure out the CI runner part.<p>Today I would likely have gone for Forgejo with runners for such a small company if I were to self-host. Less moving parts and smaller footprint.</p>
]]></description><pubDate>Wed, 29 Apr 2026 12:25:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=47947377</link><dc:creator>snorremd</dc:creator><comments>https://news.ycombinator.com/item?id=47947377</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47947377</guid></item><item><title><![CDATA[New comment by snorremd in "End of an era for me: no more self-hosted git"]]></title><description><![CDATA[
<p>I've recently been setting up web servers like Forgejo and Mattermost to service my own and friends' needs. I ended up setting up Crowdsec to parse and analyse access logs from Traefik to block bad actors that way. So when someone produces a bunch of 4XX codes in a short timeframe I assume that IP is malicious and can be banned for a couple of hours. Seems to deter a lot of random scraping. Doesn't stop well behaved crawlers though which should only produce 200-codes.<p>I'm actually not sure how I would go about stopping AI crawlers that are reasonably well behaved considering they apparently don't identify themselves correctly and will ignore robots.txt.</p>
]]></description><pubDate>Wed, 11 Feb 2026 15:06:14 +0000</pubDate><link>https://news.ycombinator.com/item?id=46975860</link><dc:creator>snorremd</dc:creator><comments>https://news.ycombinator.com/item?id=46975860</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46975860</guid></item><item><title><![CDATA[New comment by snorremd in "Matrix messaging gaining ground in government IT"]]></title><description><![CDATA[
<p>When me and a bunch of friends and acquaintances switched away from Slack a little under a year ago (I think) we looked into Matrix. One of the primary requirements was that even our non-technical friends should be able to use it.<p>At the time Matrix/Element had recently launched their Matrix 2.0 efforts and I tried setting up the whole stack without resorting to their all in one shell-script meant for non-production use. I did not mind hosting four different servers (Synapse, Matrix Auth Service (MAS), Call, etc), but did find the integration and config job a bit tedious. The main blocker though was the lack of an invite-system in the new Matrix Auth Server. Also the fact that the Element X app uses a new Livekit based call server while other clients/apps use a different approach is also something not great.<p>We ended up going for Mattermost. One service easily hosted with Docker. One app, and easy invites. While I think federation would be cool, right now Mattermost was a bit simpler to get up and running.<p>Element seems more focused on enterprise and government contracts than self-hosters. I think this is fine, they need to pay their bills. But Matrix 2.0 for self-hosters might need a better story right now.</p>
]]></description><pubDate>Mon, 09 Feb 2026 13:23:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=46944937</link><dc:creator>snorremd</dc:creator><comments>https://news.ycombinator.com/item?id=46944937</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46944937</guid></item><item><title><![CDATA[New comment by snorremd in "Cloudflare acquires Astro"]]></title><description><![CDATA[
<p>I'm in the same boat as you. I've built a personal home page with Astro and hosted it on Cloudflare. It has been really cheap, only paying for worker subscription at 5 dollars per month. The site has been running non-stop essentially without downtime. And as you say the user experience of Astro's static HTML, css and minimal JS output on Cloudflare edge CDN network is really good.<p>But with the events of the world being what they are I have been considering moving my Astro page to BunnyCDN and thus Europe (where I live). The only Cloudflare specific feature I've used is D1 database so migrating now shouldn't be too difficult. I really hope Cloudflare does not make it difficult to use Astro on other providers, either intentionally or by accident. Next.js for a long time was essentially a framework that only ran great on Vercel, and using other providers was asking to become a second citizen. I believe it is somewhat better now with proper provider plugin system, but still.<p>Astro has been great and I understand they need to find a way to economically sustain their business. Joining a big company like Cloudflare is one way to do that. I can't complain too much never having opted to use Astro's commercial offerings. So I only hope they keep Astro open. I'm building a new product on top of Astro now and would hate to see it become a Cloudflare-only product.<p>Congratulations to the Astro team!</p>
]]></description><pubDate>Sat, 17 Jan 2026 12:08:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=46657400</link><dc:creator>snorremd</dc:creator><comments>https://news.ycombinator.com/item?id=46657400</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46657400</guid></item><item><title><![CDATA[New comment by snorremd in "Gpg.fail"]]></title><description><![CDATA[
<p>I’ve ended up the same place as you. I had previously set up my gpg key on a Yubikey and even used that gpg key to handle ssh authentication. Then at some point it just stopped working, maybe the hardware on my key broke. 2FA still works though.<p>In any case I figured storing an SSH key in 1Password and using the integrated SSH socket server with my ssh client and git was pretty nice and secure enough. The fact the private key never leaves the 1Password vault unencrypted and is synced between my devices is pretty neat. From a security standpoint it is indeed a step down from having my key on a physical key device, but the hassle of setting up a new Yubikey was not quite worth it.<p>I’m sure 1Password is not much better than having a passphrase-protected key on disk. But it’s a lot more convenient.</p>
]]></description><pubDate>Sun, 28 Dec 2025 00:43:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=46407164</link><dc:creator>snorremd</dc:creator><comments>https://news.ycombinator.com/item?id=46407164</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46407164</guid></item><item><title><![CDATA[New comment by snorremd in "Try Switching to Kagi"]]></title><description><![CDATA[
<p>I love that Kagi puts the "monetization" icon right next to results so I can avoid navigating to them. This means I'm much less likely to click on Medium.com links and other monetized blogs and sites. Often times the good content is on some personal website where the creator doesn't really care about earning money off it.<p>Another neat feature is the possibility to rank results or block them manually so you can lower visibility of certain sites. Really help push the scammy sites down.<p>Compare this to Google Search where the first half page is paid results (ads) and the rest of the results are of dubious quality. And you don't really have much of a way to influence your search results.</p>
]]></description><pubDate>Tue, 29 Apr 2025 07:54:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=43829767</link><dc:creator>snorremd</dc:creator><comments>https://news.ycombinator.com/item?id=43829767</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43829767</guid></item><item><title><![CDATA[New comment by snorremd in "European Cloud, Global Reach"]]></title><description><![CDATA[
<p>Scaleway is indeed the closest thing we have to AWS, Google Cloud and Azure by a European company. They are fast building out a comprehensive managed cloud with IAM, managed databases, containers, etc. I do hope they succeed. I've only used them for hobby projects, so my experience is limited to lighter workloads. But the UI is pretty good, and they have APIs and CLI for all operations.</p>
]]></description><pubDate>Mon, 24 Mar 2025 10:32:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=43459311</link><dc:creator>snorremd</dc:creator><comments>https://news.ycombinator.com/item?id=43459311</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43459311</guid></item><item><title><![CDATA[New comment by snorremd in "SQL style guide by Simon Holywell"]]></title><description><![CDATA[
<p>This. Relying on developers manually trying to follow a style guide is a recipe for not having a consistent style. Instead something like pgFormatter should be used. I'm not sure what the state of SQL formatters and IDE support is these days. Not sure how many command based options there are.<p>And people who use things like Datagrip or other IDEs will probably format with their IDE's preferences unless there is a plugin for things like pgFormatter. This works well if there is a company mandated editor/IDE, but not so well when you have developers across various editors and IDEs.</p>
]]></description><pubDate>Fri, 15 Nov 2024 07:07:15 +0000</pubDate><link>https://news.ycombinator.com/item?id=42144562</link><dc:creator>snorremd</dc:creator><comments>https://news.ycombinator.com/item?id=42144562</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42144562</guid></item><item><title><![CDATA[New comment by snorremd in "Restic: Backups done right"]]></title><description><![CDATA[
<p>A killer feature rustic has over restic is built-in support for .gitignore files. So all your dependencies and build output is automatically ignored in your backups.</p>
]]></description><pubDate>Sun, 13 Oct 2024 19:40:05 +0000</pubDate><link>https://news.ycombinator.com/item?id=41830896</link><dc:creator>snorremd</dc:creator><comments>https://news.ycombinator.com/item?id=41830896</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41830896</guid></item><item><title><![CDATA[New comment by snorremd in "BorgBackup 2.0 supports Rclone – over 70 cloud providers in addition to SSH"]]></title><description><![CDATA[
<p>I see they have gotten support for S3 (and other storage providers) via OpenDal. Might need to revisit rustic for my backup needs then! I once started looking at what it would take to build a GUI using Tauri (Rust backend <-> JS/Web frontend), but didn't have time to figure out the APIs.<p>What I really like about Rustic is that it understands .gitignore natively so you can backup your entire workspace without dragging a lot of dependencies, compiled binaries, and other unnecessary data with you into your backups.</p>
]]></description><pubDate>Tue, 01 Oct 2024 07:23:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=41705549</link><dc:creator>snorremd</dc:creator><comments>https://news.ycombinator.com/item?id=41705549</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41705549</guid></item><item><title><![CDATA[New comment by snorremd in "Show HN: htmgo - build simple and scalable systems with golang + htmx"]]></title><description><![CDATA[
<p>As a developer who has worked extensively with React and Reagent (a ClojureScript wrapper around React) I actually enjoy this kind of syntax. Better that then some custom HTML templating syntax I need to learn in addition to the language.<p>It doesn't look too bad if one also break the code into multiple functions to make "layouts" and "components".<p>I have had lots of fun building with Bun, ElysiaJS, and HTMX. Might test your go library out as well. Looks pretty neat.</p>
]]></description><pubDate>Sun, 29 Sep 2024 12:49:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=41686992</link><dc:creator>snorremd</dc:creator><comments>https://news.ycombinator.com/item?id=41686992</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41686992</guid></item><item><title><![CDATA[New comment by snorremd in "NIST to forbid requirement of specific passwords character composition"]]></title><description><![CDATA[
<p>This! Required frequent changes just makes people who don't use password managers choose weaker passwords to be able to remember them easily. And they'll almost guaranteed just choose the same password as before with a new post or prefix. "mychildhoodteacher1", "mychildhoodteacher2", etc.<p>It would be better to encourage users to use a single random four word passphrase and stick to that forever. Add 2FA and you are golden. But legacy systems gonna legacy. I still see systems with max password lengths of 12 characters in the wild, and no 2FA to boot. It's been a while since I got my password back in clear text though, so perhaps we're moving in the right direction.</p>
]]></description><pubDate>Wed, 25 Sep 2024 06:44:49 +0000</pubDate><link>https://news.ycombinator.com/item?id=41644378</link><dc:creator>snorremd</dc:creator><comments>https://news.ycombinator.com/item?id=41644378</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41644378</guid></item><item><title><![CDATA[New comment by snorremd in "Why is F# code robust and reliable?"]]></title><description><![CDATA[
<p>This is the number one thing that made Clojure work for me despite being dynamically typed. Having confidence that values did not change under my feet after sending them into functions or across thread boundaries was so refreshing. In immutably valued languages even if you technically might be sending a reference to an immutable value type, you can at least practically think about it as pass by value instead.<p>I never really got into F# or Haskell (more than some tutorials) so can't really comment on the type safety part.</p>
]]></description><pubDate>Tue, 24 Sep 2024 06:09:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=41633540</link><dc:creator>snorremd</dc:creator><comments>https://news.ycombinator.com/item?id=41633540</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41633540</guid></item><item><title><![CDATA[New comment by snorremd in "Eyechat"]]></title><description><![CDATA[
<p>I mean, if a website claims to have tens if not close to a hundred "legitimate interest" cookies I'm reasonably sure they are living of wildly invasive ad tracking. I immediately close these websites just as you do.<p>It would be swell if more of the web was made by passionate people to share knowledge for free. I know this is a privileged attitude as creating content takes time which is not free. But some of the best web sites are the ones without monetisation. We need a better monetisation system for the web that is based on people paying for content instead of people being sold as user data.</p>
]]></description><pubDate>Thu, 08 Aug 2024 11:17:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=41190227</link><dc:creator>snorremd</dc:creator><comments>https://news.ycombinator.com/item?id=41190227</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41190227</guid></item><item><title><![CDATA[New comment by snorremd in "Storing UTC is not a silver bullet (2019)"]]></title><description><![CDATA[
<p>Exactly.<p>What I've found is that if you save the UTC timestamp + an IANA time zone (e.g. Europe/Paris) you are good. How you convert time for a given IANA time zone at a given UTC time should be consistent. For example in 2024-07-23T10:00:00Z, Europe/Paris should use the offset for the CEST timezone (UTC +02:00 hours).<p>If at a later point EU gets rid of daylight savings time and France decides to stay on CET year around, date libraries can account for this when you parse the UTC date string and convert it to the provided IANA time zone.<p>So UTC + IANA time zone gives you an accurate point in local time as long as your date libraries handles IANA time zones correctly.</p>
]]></description><pubDate>Tue, 23 Jul 2024 08:36:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=41043945</link><dc:creator>snorremd</dc:creator><comments>https://news.ycombinator.com/item?id=41043945</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41043945</guid></item><item><title><![CDATA[New comment by snorremd in "Cloudflare Connectivity Issues in Eastern US and Central Europe"]]></title><description><![CDATA[
<p>Hey now. I'm sure Cloudflare can deliver 502 Bad Gateway pages with less latency than any other cloud provider. ;)</p>
]]></description><pubDate>Thu, 20 Jun 2024 19:09:15 +0000</pubDate><link>https://news.ycombinator.com/item?id=40742143</link><dc:creator>snorremd</dc:creator><comments>https://news.ycombinator.com/item?id=40742143</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40742143</guid></item><item><title><![CDATA[New comment by snorremd in "Cloudflare Connectivity Issues in Eastern US and Central Europe"]]></title><description><![CDATA[
<p>Mine are offline as well (502 Bad Gateway). I'm in one of the affected regions, Europe West.</p>
]]></description><pubDate>Thu, 20 Jun 2024 19:02:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=40742059</link><dc:creator>snorremd</dc:creator><comments>https://news.ycombinator.com/item?id=40742059</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40742059</guid></item><item><title><![CDATA[New comment by snorremd in "What You Get After Running an SSH Honeypot for 30 Days"]]></title><description><![CDATA[
<p>You end up sharing signals (IPs) to their crowd-sourced bad IP databases, but only get 3 free IP lists on the free plan. To get some of the bigger IP lists you need an enterprise plan at $2500 a month.<p>Essentially they use the free customers to build the lists that drive their enterprise sales, which is fair enough as you get to use their free dashboard and open source software. But to me it seems they're really only targeting enterprise customers as a business.</p>
]]></description><pubDate>Sun, 16 Jun 2024 10:47:11 +0000</pubDate><link>https://news.ycombinator.com/item?id=40696086</link><dc:creator>snorremd</dc:creator><comments>https://news.ycombinator.com/item?id=40696086</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40696086</guid></item><item><title><![CDATA[New comment by snorremd in "AI headphones let wearer listen to a single person in a crowd by looking at them"]]></title><description><![CDATA[
<p>In the same boat. I have some tinnitus (low frequency, radio static like noise) and struggle with conversation in loud places with lots of background noise and conversation. If I sit in a loud bar it is hopeless hearing what anyone but the closest two persons are saying. Conversation in normal settings are mostly no issue.<p>So something that would enhance the speech of whomever I'm looking at would be super cool. Apple AirPods already have some sound shaping abilities to react to environment and mode. They also support specific voice enhancement if you put your phone down in front of the person speaking. If they ever support directional voice enhancement, like in this research, directly in the AirPods it would help me so much with social interactions in loud places.</p>
]]></description><pubDate>Wed, 29 May 2024 06:45:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=40509188</link><dc:creator>snorremd</dc:creator><comments>https://news.ycombinator.com/item?id=40509188</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40509188</guid></item></channel></rss>