<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: jaen</title><link>https://news.ycombinator.com/user?id=jaen</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sat, 30 May 2026 21:11:49 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=jaen" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by jaen in "Voxel Space"]]></title><description><![CDATA[
<p>The game originally used a "voxel" engine [1], but the final release switched to affine texture mapping (with a heightmap-based terrain, still).<p>The voxel-style engines tend to feature a longer draw distance (due to it being cheaper to render, as you can easily use various hacks to eg. halve texture accesses far away).<p>For a detailed look into the rendering of Magic Carpet, start from Slide 8 of [2].<p>[1]: <a href="https://tcrf.net/Prerelease:Magic_Carpet_(DOS)#1993" rel="nofollow">https://tcrf.net/Prerelease:Magic_Carpet_(DOS)#1993</a>
[2]: <a href="https://web.archive.org/web/20180330004301/http://www.glenncorpes.com/procedural-landscapes-gdce-2001" rel="nofollow">https://web.archive.org/web/20180330004301/http://www.glennc...</a></p>
]]></description><pubDate>Sat, 30 May 2026 17:50:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=48338900</link><dc:creator>jaen</dc:creator><comments>https://news.ycombinator.com/item?id=48338900</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48338900</guid></item><item><title><![CDATA[New comment by jaen in "Bijou64: A variable-length integer encoding"]]></title><description><![CDATA[
<p>There's still speculation though - if eg. most values are of 1 or 2-byte length, you can <i>speculate</i> that any control-valued byte <i>is actually</i> control. You can even do a compensation pass to try to fix some amount of mis-speculations, and then bomb out if that fails.<p>With that, it's <i>mostly</i> byte-parallel (though data-dependent as I mentioned).</p>
]]></description><pubDate>Fri, 29 May 2026 18:00:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=48326885</link><dc:creator>jaen</dc:creator><comments>https://news.ycombinator.com/item?id=48326885</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48326885</guid></item><item><title><![CDATA[New comment by jaen in "Bijou64: A variable-length integer encoding"]]></title><description><![CDATA[
<p>Right, I think we have a slightly different definition of SIMD: You mean byte-parallel, I mean "doable with SIMD instructions". I also didn't imply the performance would be <i>better</i> than other methods...<p>Even though decoding the lengths must be serial (since's there's no unambiguous way to differentiate a tag and data byte), it's still doable within the <i>wider</i> SIMD registers, so there's some <i>theoretical</i> efficiency gain to be had (depending on the shape of the data).<p>On a general note, the continuation bit and prefix byte forms are <i>equivalent</i>, you just broadcast the prefix byte and compare against an increasing vector to convert it to a mask. Yeah, there's probably more fiddly SIMD if there are multiple prefixes in the register, but doable (it's just not <i>byte-parallel</i>, you eg. unroll the serial decode loop 8 times or whatever your maximum output byte width is, and mask out).<p>Simplified:<p><pre><code>  // Just maps a byte to its position in the register
  __m128i idx = _mm_setr_epi8(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15);
  // Broadcast the prefix
  __m128i nn = _mm_set1_epi8((char)prefix_byte);
  // Get applicable locations: prefix_byte contains the length, if byte_pos < len, the corresponding byte will be set
  __m128i m = _mm_cmpgt_epi8(nn, idx);
  // If you *really* want a high-bit mask:
  m = _mm_and_si128(m, _mm_set1_epi8((char)0x80));</code></pre></p>
]]></description><pubDate>Fri, 29 May 2026 17:33:45 +0000</pubDate><link>https://news.ycombinator.com/item?id=48326454</link><dc:creator>jaen</dc:creator><comments>https://news.ycombinator.com/item?id=48326454</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48326454</guid></item><item><title><![CDATA[New comment by jaen in "Bijou64: A variable-length integer encoding"]]></title><description><![CDATA[
<p>This doesn't seem particularly hard to SIMD, especially when the CPU architecture has "compress/expand" horizontal instructions. The first byte fully encodes the length, which is not harder than the continuation bits of (U)LEB128. It's a basically a common length-prefixed encoding with an extra subtract added in, so someone has probably figured out an efficient algorithm.<p>It might be <i>slightly</i> more <i>instructions</i> than some other serial VL (variable-length) integer codec choices, but overall I don't think it's more <i>difficult</i>.<p>The very efficient SIMD VL codecs tend to stripe (separate) the control and data bits, so they're in a different design space anyway.</p>
]]></description><pubDate>Fri, 29 May 2026 16:57:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=48325932</link><dc:creator>jaen</dc:creator><comments>https://news.ycombinator.com/item?id=48325932</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48325932</guid></item><item><title><![CDATA[New comment by jaen in "Building current, a browser-based file sharing tool, with Rust and WASM"]]></title><description><![CDATA[
<p>I think it should be possible to do P2P / relay-less communication using WebRTC? eg. <a href="https://github.com/jchorl/sendfiles" rel="nofollow">https://github.com/jchorl/sendfiles</a><p>Hopefully P2P WebTransport takes off soon... <a href="https://w3c.github.io/p2p-webtransport/" rel="nofollow">https://w3c.github.io/p2p-webtransport/</a></p>
]]></description><pubDate>Thu, 28 May 2026 17:58:14 +0000</pubDate><link>https://news.ycombinator.com/item?id=48312858</link><dc:creator>jaen</dc:creator><comments>https://news.ycombinator.com/item?id=48312858</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48312858</guid></item><item><title><![CDATA[New comment by jaen in "Use boring languages with LLMs"]]></title><description><![CDATA[
<p>Your intuition is not right, I have plenty of experience with REPL-driven development, even having used <i>all</i> the tools you have mentioned in your post. (and Clojure Spec is exactly the <i>runtime specification</i> part I was referring to in my comment...)<p>Logically, it's more the other way around - REPLs are in that sense a compensation for static types, since nothing forbids having a REPL <i>and</i> static types (see: eg. Julia. OCaml, Haskell, Scala etc. have REPLs too, but they are closed-world).<p>There's a fundamental trade-off though, with the open- vs closed-world assumption - if your types and (generic) methods are open world, then certain kinds of errors are just not analyzable. (this is a more general mathematical truth, also occurring in eg. description logics and the Semantic Web)<p>As you hinted, REPLs also don't work well for eg. large pipelines farmed out to clusters of machines, or anything that requires a high degree of static assurance, eg. control software - you either must statically analyze for all errors for it to even be <i>legal</i>, or the cost of having to "live fix" an error is much larger than preventing it in the first place (or just impractical for clusters).<p>Sure, a degree of live patching and experimenting is desirable (namedrop JPL as Lispers do), but that's a somewhat orthogonal concern.<p>A Lisp-style REPL combines introspection and live patching for both code and data. This can be achieved in many heterogenous ways besides a REPL, though. It's just not a nice, curated and holistic experience. But <i>agents</i> don't really care about that. LLMs don't get magic feelings. They can easily work around minor annoyances and a lack of ergonomics (assuming it doesn't burn context).<p>(Since LLMs tend to leave junk behind and slowly corrupt everything over time, a persistent image is also not necessarily a good thing. Reproducibility is also harder.)<p>The Unix philosophy "everything is a file" can ultimately also be viewed as image-based programming. [1] The system <i>is</i> the image.<p>As long as you have a way to <i>address</i> (via files, namespaced symbols, UUIDs, URLs, numbers etc.) the code, the execution state (ie. the stack frames) and memory (ie. the heap of objects), it has the same effect.<p>The problem with most software is that its internals are not addressable. I don't think one has to use eg. Lisp to fix that though. I do acknowledge that <i>most</i> static languages fail here.<p>[1]: "Unix, Plan 9 and the Lurking Smalltalk" <a href="https://www.humprog.org/~stephen/research/papers/kell19unix-personal.pdf" rel="nofollow">https://www.humprog.org/~stephen/research/papers/kell19unix-...</a></p>
]]></description><pubDate>Wed, 27 May 2026 14:58:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=48295363</link><dc:creator>jaen</dc:creator><comments>https://news.ycombinator.com/item?id=48295363</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48295363</guid></item><item><title><![CDATA[New comment by jaen in "Use boring languages with LLMs"]]></title><description><![CDATA[
<p>I love REPL-driven development, and exploratory "programming" via small snippets is likely part of the endgame (the more the agent strays outside its comfort zone, the more it's needed). It also looks like it paradoxically saves context, since piling up many small snippets is still better than trying to fix a one-shot gone horribly wrong.<p>And yeah, if Clojure had a better static safety story, it would actually rank high, since it's high-abstraction with metaprogramming capabilities, excellent <i>runtime</i> specifications, and has a good "garden path" ie. natural code is good code.<p>(As a devil's advocate though, REPLs can be replaced with gluing together scripts with ad-hoc state/caching via the file system, which LLMs seem to be pretty good at already...)<p>So as an addendum, introspectability is also important ie. allowing to discover the state and composition of the system at any moment - though that's partially a language (eg. reflection) and partially a tooling (eg. debuggers) issue.</p>
]]></description><pubDate>Tue, 26 May 2026 20:34:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=48285605</link><dc:creator>jaen</dc:creator><comments>https://news.ycombinator.com/item?id=48285605</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48285605</guid></item><item><title><![CDATA[New comment by jaen in "Use boring languages with LLMs"]]></title><description><![CDATA[
<p>LLMs have a limited context window - similar to the limited attention span and memory of humans. LLMs also have trouble attending to many constraints at once.<p>Therefore the best language for agents is likely the one that, on one hand erases all irrelevant details (ie. raises the level of abstraction and does not force focusing on eg. memory management), and on the other hand encodes any <i>domain-relevant</i> details in the code (eg. using advanced type systems, annotations, contracts, spec-like tests eg. property-based).<p>Human readability is a separate concern and still relevant, but the two mentioned properties actually generally improve on that as well (at least for engineers persistent enough to scale the tower of abstraction).<p>Based on this, it seems Go is certainly not that "agent endgame" language. It has large amounts of boilerplate, a general lack of <i>safety</i> around concurrency features, a pretty middling static safety story overall with a generally underpowered type system.<p>I don't think the perfect language exists, yet, but just wildly imagining, it would probably be something like a cross between Scala, Elixir and Lean (or equivalents). Unfortunately none of those languages also have the large training corpus required to make them perform well in all agenting engineering situations (yet).<p>For any language comparison, one must separate the expressiveness of the language, which limits the <i>long-term</i> possibilities for agents, and the training corpus, which is what mostly gives it the <i>current</i> standing. I think we are still in the phase where the languages are separated by essentially random non-design factors such as the amount of training environments the frontier labs are willing to create for them.<p>Given that, the syntax does not matter all that much, as long as the base language itself is flexible enough - as a another wild idea, it's also possible that eg. Python could mostly swallow all these features through external tools (eg. the pre-existing type checkers or linters), and if the frontier labs bother to RL on those tools, that would also work (see also: Mojo).</p>
]]></description><pubDate>Tue, 26 May 2026 20:12:55 +0000</pubDate><link>https://news.ycombinator.com/item?id=48285357</link><dc:creator>jaen</dc:creator><comments>https://news.ycombinator.com/item?id=48285357</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48285357</guid></item><item><title><![CDATA[New comment by jaen in ".NET (OK, C#) finally gets union types"]]></title><description><![CDATA[
<p>You seem to be aggressively misreading what I said, stuck in your own "world" and instead of asking for clarifying questions, making unfounded assumptions.<p>> I began by noting that TS has literals and set theoretic types<p>Can you please quote me <i>exactly</i> the part of your original comment that implies that literal types are structural and have subtyping? Because that is what I said. If you did <i>imply</i> that, well, excuse me for helping you by clarifying then.<p>> aggressively trying to prove that TS is somehow "better" than Haskell<p>Sorry, what? Refer to the first line of this comment. Just saying that some type system features are extensions or harder to use in Haskell says nothing about the superiority of TS. This is completely your imagination.<p>Here's me criticizing TS 4 months ago: <a href="https://news.ycombinator.com/item?id=46501061">https://news.ycombinator.com/item?id=46501061</a><p>> I wasn't the one to bring Zod into a discussion of type systems...<p>Not sure why this is even relevant, but this was a <i>direct</i> reply to: "...language like TS, which is not type safe at runtime, and which will happily ingest an unexpected value, silently coerce it in all sorts of fun and wacky ways"<p>Zod (just a random library) is a direct counter-example to that. There may be better counter-examples. One just needs a proof of existence - it doesn't have to be good.<p>I then had to repeat that I am <i>also</i> talking about static <i>types</i> because of: "...exhaustive runtime schema for your zero-first non-empty integer array example...". TS can both enforce that as a <i>type</i> (which you never presented for Haskell) and as a value. (nominally typed solutions quickly run into ergonomic problems like phantom types not being composable across library boundaries - eg. refinement types, which are even safer by nature, are structural!)<p>In any case, I'd estimate 99% of people using TS don't encounter any type safety issues caused by the <i>design</i> of TS. Haskell has `unsafeCoerce` too, just a bit wordier than in TS.<p>If wanting to talk about real unsoundness, one would mention something like <i>bivariance</i> (see also: linked comment), but even then almost all of that is entirely irrelevant in <i>most</i> practical software engineering.<p>> (a) I don't understand literals and set theoretic types, despite this whole thread being in reply to a post where I give examples of them in TS; and (b) that I care which type system is "better".<p>Huh, what? Again, I'm thinking none of that. Again, you imply you know better what I'm thinking...<p>> Structural typing would be a gaping hole in Haskell's strict type safety<p>I mean, yeah, let me just repeat OCaml and Scala here, both also famously type safe languages... Why make an argument when there's two immediate counterexamples that were already mentioned?<p>> but I do note I seem to have the edge there<p>This pretty much sums up the difference in attitude, I'm not here to score internet points in an argument.<p>I just wanted to comment on why the world is not black and white and even technically flawed languages like TS have something to learn from.</p>
]]></description><pubDate>Mon, 25 May 2026 17:35:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=48269456</link><dc:creator>jaen</dc:creator><comments>https://news.ycombinator.com/item?id=48269456</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48269456</guid></item><item><title><![CDATA[New comment by jaen in "Bytecode VMs in surprising places (2024)"]]></title><description><![CDATA[
<p>References for the Quake virtual machines:<p>Quake 1 had QuakeC: [1] <a href="https://en.wikipedia.org/wiki/QuakeC" rel="nofollow">https://en.wikipedia.org/wiki/QuakeC</a> [2] Hello world in QuakeC - <a href="https://www.leonrische.me/pages/quakec_bytecode_hello_world.html" rel="nofollow">https://www.leonrische.me/pages/quakec_bytecode_hello_world....</a><p>Quake 2 moved to native binaries.<p>Quake 3 had a new VM that enabled compiling regular C using LCC: [1] <a href="https://fabiensanglard.net/quake3/qvm.php" rel="nofollow">https://fabiensanglard.net/quake3/qvm.php</a> [2] Spec - <a href="https://www.icculus.org/~phaethon/q3mc/q3vm_specs.html" rel="nofollow">https://www.icculus.org/~phaethon/q3mc/q3vm_specs.html</a></p>
]]></description><pubDate>Mon, 25 May 2026 15:00:39 +0000</pubDate><link>https://news.ycombinator.com/item?id=48267679</link><dc:creator>jaen</dc:creator><comments>https://news.ycombinator.com/item?id=48267679</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48267679</guid></item><item><title><![CDATA[New comment by jaen in ".NET (OK, C#) finally gets union types"]]></title><description><![CDATA[
<p>Yeah, you're just continuing to take whatever was written argumentatively/maliciously as predicted.<p>Does not seem like this:<p>> Please respond to the strongest plausible interpretation of what someone says, not a weaker one that's easier to criticize. Assume good faith.<p>> Personally, I consider all of Go to be a mistake.<p>You also consider Scala and OCaml to be mistakes? Because all of what I've mentioned also works in a very similar way in Scala.<p>> an appeal to authority<p>No, I didn't appeal to authority. It's the opposite - it's statistics. Multiple experienced language designers don't add features later for nothing. For a similar process, see eg. closures getting added to every mainstream language.<p>> complete, exhaustive runtime schema<p>Again, I wasn't talking about runtime schemas, but types. I only mentioned runtime as a counterpoint to the false statement that TypeScript doesn't enforce this. Only reducing this to runtime checking is a fallacy, again.<p>> A little hypocritical, no?<p>No, they aren't comparable since I wasn't using the examples as supports for an argument of whether X is better than Y. Strawmen involve argumentation.<p>> read my comment...  examples... that were already in my comment<p>I read it in detail, the problem is you didn't really read <i>my</i> comment in detail, which illustrated both the subtyping and structural typing aspects (albeit trivially, yes), which yours didn't.<p>> You're also fairly clearly using string literals to type input without properly parsing it<p>Okay then, the arrogance of this is pretty astounding... You seem to know what I'm doing better than I am!<p>To be clear, I'm not doing any of that. And I've written Haskell way before I wrote any TypeScript.</p>
]]></description><pubDate>Sun, 24 May 2026 14:08:36 +0000</pubDate><link>https://news.ycombinator.com/item?id=48257400</link><dc:creator>jaen</dc:creator><comments>https://news.ycombinator.com/item?id=48257400</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48257400</guid></item><item><title><![CDATA[New comment by jaen in ".NET (OK, C#) finally gets union types"]]></title><description><![CDATA[
<p>OCaml and Scala, both also famously strongly typed functional languages, also have structural typing (OCaml even has many different kinds at many different levels!). Mainstream, Go is based on structural (interface) typing.<p>The Person/Wine example is a pointless strawman. That's not what structural typing is generally used for.<p>The entire comment is basically making up strawmans...
I didn't give <i>practical</i> examples to save space, obviously, it was just to disambiguate what I meant.<p>TypeScript has several runtime-safe advanced validators based on its type system (most well-known being Zod), capable of enforcing types similar to what I provided.<p>To conclude, these type system features were added by <i>multiple</i> experienced language designers for a reason, to languages that <i>already</i> had functional ADTs, so going "huh but what are these even useful for?!" to me sounds a bit clueless (or argumentative), so I don't see a productive continuation to this discussion.</p>
]]></description><pubDate>Sun, 24 May 2026 12:38:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=48256787</link><dc:creator>jaen</dc:creator><comments>https://news.ycombinator.com/item?id=48256787</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48256787</guid></item><item><title><![CDATA[New comment by jaen in ".NET (OK, C#) finally gets union types"]]></title><description><![CDATA[
<p>By Haskell's type system do you mean with all the GHC extensions?<p>Because TypeScript has structural sub-typing, while standard Haskell (eg. `A | B | C`) has neither subtyping nor structural typing, which both are very useful features for safe "integration/glue" type of programs.<p>(String) literals form a fundamental part of the TS "row polymorphism" (record types) and eg. tuple union type implementation.<p>You can type a non-empty array that starts with zero...<p><pre><code>    type Arr = [0, ...number[]];
    const a: Arr = [0, 1, 2, 3, 4]
</code></pre>
Now try in Haskell.</p>
]]></description><pubDate>Sun, 24 May 2026 09:57:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=48255974</link><dc:creator>jaen</dc:creator><comments>https://news.ycombinator.com/item?id=48255974</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48255974</guid></item><item><title><![CDATA[New comment by jaen in ".NET (OK, C#) finally gets union types"]]></title><description><![CDATA[
<p>These are not what are commonly called tagged unions. It's actually closer to an untagged union.<p>The C# union does not store any discriminator. Just look at the implementation - it's a single `object?` field.<p>The discriminative part is handled by run-time type information, which is stored in the object itself, not the union - which is why the C# built-in implementation <i>requires</i> boxing.<p>Also, you can use the same class/record type ("discriminator") in <i>several</i> different unions - again, a feature which ADTs/sum-types/tagged unions in most functional languages do not have.<p>You can even store one single <i>object</i> (ie. identical by reference equality) in several different union values at the same time, theoretically, which in combination with mutability is... uhh, certainly not common functional/mathematical semantics.</p>
]]></description><pubDate>Sun, 24 May 2026 08:05:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=48255459</link><dc:creator>jaen</dc:creator><comments>https://news.ycombinator.com/item?id=48255459</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48255459</guid></item><item><title><![CDATA[New comment by jaen in ".NET (OK, C#) finally gets union types"]]></title><description><![CDATA[
<p>String literals are structural types which are way more expressive than regular (Haskell) ADTs, which are nominal types.<p>In TS in particular, in combination with other features (mapped types), they are equivalent to row polymorphism + whatever Haskell/GHC features enable type families to specialize on constant literal arguments (or you can use atomic types, but that's not structural / open-world)... so pretty advanced.<p>This is valid TS/Python:<p><pre><code>    type ABC = "A" |"B" | "C"
    type AB = "A" | "B"
    const x: AB = "A";
    const y: ABC = x;
</code></pre>
The equivalent Haskell requires using several extensions.</p>
]]></description><pubDate>Sun, 24 May 2026 07:54:23 +0000</pubDate><link>https://news.ycombinator.com/item?id=48255399</link><dc:creator>jaen</dc:creator><comments>https://news.ycombinator.com/item?id=48255399</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48255399</guid></item><item><title><![CDATA[New comment by jaen in "Show HN: Pablo – a Chrome extension that copies UI from any website"]]></title><description><![CDATA[
<p>err... copyright-violation-as-a-service?</p>
]]></description><pubDate>Fri, 22 May 2026 19:41:16 +0000</pubDate><link>https://news.ycombinator.com/item?id=48240545</link><dc:creator>jaen</dc:creator><comments>https://news.ycombinator.com/item?id=48240545</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48240545</guid></item><item><title><![CDATA[New comment by jaen in "Schanuel's Conjecture and the Semantics of Triton's FPSan"]]></title><description><![CDATA[
<p>Wow, that's pretty cool. Translating (almost) arbitrary floating point programs into weird integer programs while also preserving equivalence under <i>non-strict</i> floating point semantics? Mathematics can be surprisingly wonderful.</p>
]]></description><pubDate>Sun, 17 May 2026 19:10:55 +0000</pubDate><link>https://news.ycombinator.com/item?id=48172225</link><dc:creator>jaen</dc:creator><comments>https://news.ycombinator.com/item?id=48172225</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48172225</guid></item><item><title><![CDATA[New comment by jaen in "A molecule with half-Möbius topology"]]></title><description><![CDATA[
<p>open access arXiv link to pre-print for those that actually want to read it:<p><a href="https://arxiv.org/abs/2507.03516" rel="nofollow">https://arxiv.org/abs/2507.03516</a></p>
]]></description><pubDate>Sun, 17 May 2026 09:08:25 +0000</pubDate><link>https://news.ycombinator.com/item?id=48167246</link><dc:creator>jaen</dc:creator><comments>https://news.ycombinator.com/item?id=48167246</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48167246</guid></item><item><title><![CDATA[New comment by jaen in "What could Functional Architecture mean? [video]"]]></title><description><![CDATA[
<p>Part of FUNARCH 2025 (ACM SIGPLAN Workshop on Functional Software Architecture).<p>Links to other talks/abstracts: <a href="https://functional-architecture.org/events/funarch-2025/" rel="nofollow">https://functional-architecture.org/events/funarch-2025/</a></p>
]]></description><pubDate>Fri, 15 May 2026 09:43:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=48146551</link><dc:creator>jaen</dc:creator><comments>https://news.ycombinator.com/item?id=48146551</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48146551</guid></item><item><title><![CDATA[New comment by jaen in "Just Use Go"]]></title><description><![CDATA[
<p>Yeah, I'm fully aware, no point in "works for me"-ing this.<p>CGO_ENABLED=0 breaks nsswitch etc. and overall makes Go a poor ecosystem inhabitant. Only usable if you only care about your own system.</p>
]]></description><pubDate>Fri, 15 May 2026 09:36:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=48146496</link><dc:creator>jaen</dc:creator><comments>https://news.ycombinator.com/item?id=48146496</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48146496</guid></item></channel></rss>