<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: fesc</title><link>https://news.ycombinator.com/user?id=fesc</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sun, 24 May 2026 21:55:00 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=fesc" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by fesc in "My IRC client runs on Kubernetes"]]></title><description><![CDATA[
<p>>  for a few thousands users<p>It makes absolutely no sense to base this decision on the number of users. We have some applications that don't even have 10 users but still use k8s.<p>Try to understand the point that was made in the original comment: Kubernetes is a way to actually make infrastructure simpler to understand for a team which maintains lots of different applications, as it can scale from a deployment with just one pod to hundreds of nodes and a silly microservices architecture.<p>The point is not that every application might need this scalability, no the point is that for a team needing to maintain lots of different applications, some internal, some for customers, some in private datacenters, some in the cloud, Kubernetes can be the single common denominator.<p>Hell, I'm a hardcode NixOS fan but for most services, I still prefer to run them in k8s just as it is more portable. Today I might be okay having some service sitting on some box, running via systemd. But tomorrow I might want to run this service highly available on some cluster. Using k8s that is simple, so why not do it from the start by just treating k8s as a slighly more powerful docker-compose.</p>
]]></description><pubDate>Sat, 24 Aug 2024 18:32:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=41340323</link><dc:creator>fesc</dc:creator><comments>https://news.ycombinator.com/item?id=41340323</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41340323</guid></item><item><title><![CDATA[New comment by fesc in "Authelia and Lldap: Authentication, SSO, User Management for Home Networks"]]></title><description><![CDATA[
<p>I disagree, seems like a pretty standard structure of one directorz per app and inside that subfolders for configuration, secrets, opaque various data. Not complicated at all really.</p>
]]></description><pubDate>Sat, 13 Jul 2024 06:10:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=40952175</link><dc:creator>fesc</dc:creator><comments>https://news.ycombinator.com/item?id=40952175</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40952175</guid></item><item><title><![CDATA[New comment by fesc in "Germany solar power output jumps to record highs"]]></title><description><![CDATA[
<p>Why is it obviously wrong?<p>During a duration of time it is okay so say an amount of energy (MWh) was produced, right?</p>
]]></description><pubDate>Wed, 15 May 2024 11:22:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=40365407</link><dc:creator>fesc</dc:creator><comments>https://news.ycombinator.com/item?id=40365407</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40365407</guid></item><item><title><![CDATA[New comment by fesc in "Grace Version Control System"]]></title><description><![CDATA[
<p>> We sometimes call merges "commits" in Git, and, again, leaky abstraction and overloaded term.<p>You abuse the term leaky abstraction here. That isn’t a leaky abstraction as a merge commit is literally a commit, isn’t it?</p>
]]></description><pubDate>Fri, 10 May 2024 10:38:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=40317301</link><dc:creator>fesc</dc:creator><comments>https://news.ycombinator.com/item?id=40317301</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40317301</guid></item><item><title><![CDATA[New comment by fesc in "Humane AI Pin review: not even close"]]></title><description><![CDATA[
<p>Some YouTuber talked about this and I think they were pretty on point: Of course for consumers this could all happen in some app on the phone.<p>But a 3rd party app will always be less integrated, have less permissions than functionality included by the manufacturer.<p>And for all this AI integration wide access is pretty much required as you'd want it to access your photos, notes, all kind of apps, etc.<p>This way manufacturers would have too much leverage over companies developing that kind of AI, as they could always develop better features than them with their own AI agent.<p>I think Apple Watch is a pretty good example of that already. Third party watches will never be as good as Apple Watch just because Apple won't let them.</p>
]]></description><pubDate>Thu, 11 Apr 2024 17:26:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=40004599</link><dc:creator>fesc</dc:creator><comments>https://news.ycombinator.com/item?id=40004599</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40004599</guid></item><item><title><![CDATA[New comment by fesc in "Testcontainers"]]></title><description><![CDATA[
<p><p><pre><code>  Testcontainers is awesome and all the hate it gets here is undeserved.

  Custom shell scripts definitely can't compete.

  For example one feature those don't have is "Ryuk": A container that testcontainers starts which monitors the lifetime of the parent application and stops all containers when the parent process exits.

  It allows the application to define dependencies for development, testing, CI itself without needing to run some command to bring up docker compose beforehand manually.
  
  One cool usecase for us is also having a ephemeral database container that is started in a Gradle build to generate jOOQ code from tables defined in a Liquibase schema.</code></pre></p>
]]></description><pubDate>Wed, 28 Feb 2024 11:29:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=39536555</link><dc:creator>fesc</dc:creator><comments>https://news.ycombinator.com/item?id=39536555</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39536555</guid></item><item><title><![CDATA[New comment by fesc in "JavaScript Bloat in 2024"]]></title><description><![CDATA[
<p>Yeah but once per page, which is why it is okay to disable cache as the author wanted to simulate a cold load of each of those pages.</p>
]]></description><pubDate>Fri, 23 Feb 2024 12:13:36 +0000</pubDate><link>https://news.ycombinator.com/item?id=39479624</link><dc:creator>fesc</dc:creator><comments>https://news.ycombinator.com/item?id=39479624</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39479624</guid></item><item><title><![CDATA[New comment by fesc in "Launch HN: Diversion (YC S22) – Cloud-Native Git Alternative"]]></title><description><![CDATA[
<p>Honestly I don’t understand why not more people use a GUI for git.<p>What you describe would be 1 Minute of work and maybe 10 clicks with a very low probability of shooting yourself in the foot in Tower.</p>
]]></description><pubDate>Mon, 22 Jan 2024 17:27:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=39092299</link><dc:creator>fesc</dc:creator><comments>https://news.ycombinator.com/item?id=39092299</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39092299</guid></item><item><title><![CDATA[New comment by fesc in "The day I started believing in unit tests"]]></title><description><![CDATA[
<p>What would "integration tests" (that you don't write) look then in your opinion?<p>I ask because in my team we also a long time made the destinction between unit/integration based on a stupid technicality in the framework we are using.<p>We stopped doing that and now we mostly write integration tests (which in reality we did for a long time).<p>Of course this all arguing over definitions and kind of stupid but I do agree with the definition of the parent commenter.</p>
]]></description><pubDate>Tue, 19 Dec 2023 15:39:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=38696941</link><dc:creator>fesc</dc:creator><comments>https://news.ycombinator.com/item?id=38696941</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38696941</guid></item><item><title><![CDATA[New comment by fesc in "Deno Cron"]]></title><description><![CDATA[
<p>The same reason why most people stopped manually editing some random files via FTP to do deployments: to get a proper reproducible, automated and monitored production environment.</p>
]]></description><pubDate>Wed, 29 Nov 2023 20:14:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=38464644</link><dc:creator>fesc</dc:creator><comments>https://news.ycombinator.com/item?id=38464644</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38464644</guid></item><item><title><![CDATA[New comment by fesc in "Tracking Austrian grocery prices by scraping store sites"]]></title><description><![CDATA[
<p>But on the other hand it seems that produce is of higher quality in NL on average than in DE.</p>
]]></description><pubDate>Sun, 17 Sep 2023 12:10:55 +0000</pubDate><link>https://news.ycombinator.com/item?id=37544196</link><dc:creator>fesc</dc:creator><comments>https://news.ycombinator.com/item?id=37544196</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37544196</guid></item><item><title><![CDATA[New comment by fesc in "Nomad can do everything that K8s can"]]></title><description><![CDATA[
<p>I stopped reading when the solution for DNS was AWS and the solution for stateful sets was AWS EC2.<p>This is just a very weird comparison. Seems like the author doesn’t understand why people run K8s.<p>Of course they also “managed” several k8s clusters using… wait for it… AWS.<p>I’d say, when you are all in AWS, then fine don’t use k8s. But you also don’t need Nomad then in most cases.<p>And if you do need nomad on AWS then that’s fine as well, but it’s not comparable to k8s in general.</p>
]]></description><pubDate>Mon, 24 Jul 2023 17:58:15 +0000</pubDate><link>https://news.ycombinator.com/item?id=36851856</link><dc:creator>fesc</dc:creator><comments>https://news.ycombinator.com/item?id=36851856</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=36851856</guid></item><item><title><![CDATA[New comment by fesc in "Docs as Code at Linode (2020)"]]></title><description><![CDATA[
<p>I am a little bit disappointed.<p>This is just plain old static site generation?<p>By "docs as code" I expected something like programmatically verifying that the code examples compile, maybe even spinning up VMs and testing that the example commands lead to the expected output.</p>
]]></description><pubDate>Tue, 11 Jul 2023 10:55:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=36679187</link><dc:creator>fesc</dc:creator><comments>https://news.ycombinator.com/item?id=36679187</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=36679187</guid></item><item><title><![CDATA[New comment by fesc in "Wolfi: A community Linux OS designed for the container and cloud-native era"]]></title><description><![CDATA[
<p>What the hell is an OS without a kernel?<p>Is this less an OS and more like a toolchain to build container images?</p>
]]></description><pubDate>Tue, 27 Jun 2023 12:01:07 +0000</pubDate><link>https://news.ycombinator.com/item?id=36491646</link><dc:creator>fesc</dc:creator><comments>https://news.ycombinator.com/item?id=36491646</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=36491646</guid></item><item><title><![CDATA[New comment by fesc in "GitHub Copilot X – Sign up for technical preview"]]></title><description><![CDATA[
<p>Except it isn't, so e.g. running containers still need a VM.<p>I wish macOS had something like WSL built-in.</p>
]]></description><pubDate>Wed, 22 Mar 2023 18:41:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=35265373</link><dc:creator>fesc</dc:creator><comments>https://news.ycombinator.com/item?id=35265373</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=35265373</guid></item><item><title><![CDATA[New comment by fesc in "How do Nix builds work?"]]></title><description><![CDATA[
<p>Great article! I think I knew most of it already but I’ve never seen all of it covered so succinctly and easy to understand!<p>I think in the case of Nix it is especially important to have a good grasp of the fundamentals so that you can verify your (possibly wrong) assumptions when troubleshooting a build failure, evaluation failure or when using the higher level constructs of nixpkgs.</p>
]]></description><pubDate>Sat, 04 Mar 2023 08:04:42 +0000</pubDate><link>https://news.ycombinator.com/item?id=35019150</link><dc:creator>fesc</dc:creator><comments>https://news.ycombinator.com/item?id=35019150</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=35019150</guid></item><item><title><![CDATA[New comment by fesc in "Poste.io – Complete Mail Server"]]></title><description><![CDATA[
<p>I am using a small German email provider and I can't remember the last time I got spam.<p>What's even crazier is that they are so confident in their spam filter that they simply reject mails classified as spam. But that hasn't been a problem since the few years I have been using them as well.</p>
]]></description><pubDate>Thu, 23 Feb 2023 11:47:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=34909300</link><dc:creator>fesc</dc:creator><comments>https://news.ycombinator.com/item?id=34909300</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=34909300</guid></item><item><title><![CDATA[New comment by fesc in "Tailscale Funnel"]]></title><description><![CDATA[
<p>Yeah, but having that is clearly not aligned with making money. They could make it more difficult or impossible to use headscale at any moment.</p>
]]></description><pubDate>Fri, 18 Nov 2022 19:14:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=33660413</link><dc:creator>fesc</dc:creator><comments>https://news.ycombinator.com/item?id=33660413</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=33660413</guid></item><item><title><![CDATA[New comment by fesc in "How to build software like an SRE"]]></title><description><![CDATA[
<p>If you think Ansible and Docker are solving the same problem you haven’t understood yet why people use containers for deploying software.<p>We use them because then what’s running in prodcution is 100% the same as is running locally when testing the application.<p>You can hardly get there using Ansible.</p>
]]></description><pubDate>Mon, 17 Oct 2022 12:17:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=33232504</link><dc:creator>fesc</dc:creator><comments>https://news.ycombinator.com/item?id=33232504</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=33232504</guid></item><item><title><![CDATA[New comment by fesc in "JDK 19 Release Notes"]]></title><description><![CDATA[
<p>> Kotlin's co-routines are simply syntactic sugar for simple callbacks<p>That's only partly true. And yeah they're callbacks but not like e.g. we know from JS.<p>As far as I know CPS basically means that the Kotlin compiler turns a function like that:<p><pre><code>    suspend fun myFunction(param: String) {
      val asyncVal = someSuspendingFunction()
      val asyncVal2 = anotherSuspendingFunctio(asyncVal)
      return someCalculation(asyncVal2)
    }

</code></pre>
Into a modified method and *class* like that:<p><pre><code>     // The different parts of the function get put into different ifs
     // The state that is normally in the JVM stack frame is holded in a custom class which is a subclass of https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.coroutines/-continuation/
     // Some integer tracks where in the function we are
     fun myFunction(param: String, continuation: Something<MyFunctionClass>?) { 
        continuation = continuation ?: MyFunctionContinuation(param)
        if (continuation.state == 0) {
          contination.state = 1
          someSuspendingFunction(continuation)
          return SUSPEND
        }
        if (continuation.state == 1) {
           // The result mechanism is in the Contiuation interface/abstract class. It can be used to later receive the async result
           // of callig annother suspending function
           continuation.asyncVal = contiuation.getResult()
           anotherSuspendingFunction(continuation.asyncVal, continuation)
           return SUSPEND
        }
        if (continuation.state == 2) {
           continuation.asyncVal2 = contiuation.getResult()
           return FINISHED(someCalculation(continuation.asyncVal2))
        }
     }

     class MyFunctionContinuation: Continuation {
        
        // Function arguments
        val param: String
        
        // Every suspending function needs this. It tracks where in the function we currently are
        val state: Int = 0
       
        // Local variables inside the function. Those would normally live in the JVM function stack 
        // But the  Coroutine runtime needs to be able to "rehydrate" the JVM function stack once a non-blocking call finishes
        var asyncVal: <Don't remember>
        var asyncVal2: <Don't remember>

     }
</code></pre>
I hope the basic idea comes across.<p>I read this sometime in some book about coroutines. But you can see that there is <i>some</i> overhead. The basic idea is to replicate the function call stack in a custom datastructure. This way we can be deep inside a normal JVM callstack and also have a separate Kotlin Coroutine callstack.<p>Once the coroutine wants to suspend it can simply return from the JVM callstack but the Kotlin callstack is preserved. Later when we want to continue we can call the same function again, with the Kotlin callstack now containing the result of the async operation.<p>If the JVM can do this natively we wouldn't need this second Kotlin coroutine callstack because the native JVM callstack would support this.</p>
]]></description><pubDate>Tue, 20 Sep 2022 15:35:25 +0000</pubDate><link>https://news.ycombinator.com/item?id=32913183</link><dc:creator>fesc</dc:creator><comments>https://news.ycombinator.com/item?id=32913183</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=32913183</guid></item></channel></rss>