<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: noelwelsh</title><link>https://news.ycombinator.com/user?id=noelwelsh</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Fri, 17 Apr 2026 12:47:30 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=noelwelsh" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by noelwelsh in "Signals, the push-pull based algorithm"]]></title><description><![CDATA[
<p>Overall, very nice article. A few notes:<p>* I think the first implementation in JS land was Flapjax, which was around 2008: <a href="https://www.flapjax-lang.org/publications/" rel="nofollow">https://www.flapjax-lang.org/publications/</a><p>* The article didn't discuss glitch-freedom, which I think is fairly important.</p>
]]></description><pubDate>Mon, 06 Apr 2026 07:40:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=47657993</link><dc:creator>noelwelsh</dc:creator><comments>https://news.ycombinator.com/item?id=47657993</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47657993</guid></item><item><title><![CDATA[New comment by noelwelsh in "Fermented foods shaped human biology"]]></title><description><![CDATA[
<p>I think most sourdough recipes are written by people who are really into sourdough, because they involve so much bullshit. I was going to give up on sourdough until I discovered:<p>* 200g starter, 400g water, 600g flour, 10g salt. Mix together.<p>* Fold it over itself a few times every hour or so.<p>* When it looks risen, put it into whatever you want to bake it in, let it rise for another 30 minutes or so, bake at around 200C for about 30 minutes.<p>It's easier than fast yeast bread, as there is less kneading.</p>
]]></description><pubDate>Thu, 26 Mar 2026 20:56:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=47535611</link><dc:creator>noelwelsh</dc:creator><comments>https://news.ycombinator.com/item?id=47535611</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47535611</guid></item><item><title><![CDATA[New comment by noelwelsh in "Java 26 is here"]]></title><description><![CDATA[
<p>'Tis true. At the same time, Project Valhalla will be the most significant change to the JVM in a very long time, and probably its best chance to stay relevant in the future.</p>
]]></description><pubDate>Tue, 17 Mar 2026 20:14:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=47417678</link><dc:creator>noelwelsh</dc:creator><comments>https://news.ycombinator.com/item?id=47417678</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47417678</guid></item><item><title><![CDATA[Parametricity, or Comptime Is Bonkers]]></title><description><![CDATA[
<p>Article URL: <a href="https://noelwelsh.com/posts/comptime-is-bonkers/">https://noelwelsh.com/posts/comptime-is-bonkers/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=47334380">https://news.ycombinator.com/item?id=47334380</a></p>
<p>Points: 2</p>
<p># Comments: 0</p>
]]></description><pubDate>Wed, 11 Mar 2026 11:46:15 +0000</pubDate><link>https://noelwelsh.com/posts/comptime-is-bonkers/</link><dc:creator>noelwelsh</dc:creator><comments>https://news.ycombinator.com/item?id=47334380</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47334380</guid></item><item><title><![CDATA[New comment by noelwelsh in "Ask HN: What Are You Working On? (March 2026)"]]></title><description><![CDATA[
<p>I'm writing a book, which covers the mental models for writing code in a functional style. The examples are in Scala, but it will be useful if you use other modern languages like Rust, Kotlin, Swift, OCaml, or Typescript.<p><a href="https://functionalprogrammingstrategies.com/" rel="nofollow">https://functionalprogrammingstrategies.com/</a></p>
]]></description><pubDate>Mon, 09 Mar 2026 10:35:14 +0000</pubDate><link>https://news.ycombinator.com/item?id=47307222</link><dc:creator>noelwelsh</dc:creator><comments>https://news.ycombinator.com/item?id=47307222</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47307222</guid></item><item><title><![CDATA[New comment by noelwelsh in "Async Programming Is Just Inject Time"]]></title><description><![CDATA[
<p>This article would benefit from an introduction that lays out the structure of what is to come. I'm expecting an article on effect systems, but it jumps straight into a chunky section on the implementation of function calls. I'm immediately wondering why this is here, and what is has to do with effect systems.<p>Also, this is a very operational description: how it works. It's also possible to give a denotational description: what it means. Having both is very useful. I find that people tend to start with the operational and then move to the denotational.</p>
]]></description><pubDate>Fri, 06 Mar 2026 13:34:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=47274712</link><dc:creator>noelwelsh</dc:creator><comments>https://news.ycombinator.com/item?id=47274712</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47274712</guid></item><item><title><![CDATA[New comment by noelwelsh in "Noem Can't Explain Why She Hired 8-Day-Old Company for Ad Campaign"]]></title><description><![CDATA[
<p>Employed her boyfriend</p>
]]></description><pubDate>Thu, 05 Mar 2026 09:58:49 +0000</pubDate><link>https://news.ycombinator.com/item?id=47259780</link><dc:creator>noelwelsh</dc:creator><comments>https://news.ycombinator.com/item?id=47259780</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47259780</guid></item><item><title><![CDATA[New comment by noelwelsh in "AMD will bring its “Ryzen AI” processors to standard desktop PCs for first time"]]></title><description><![CDATA[
<p>Yeah the next generation of Strix Halo is what would get me excited. I think right now TSMC has no capacity, so maybe we have to wait another year. Kinda ironic that all CPU/RAM capacity is being sold to LLM companies, and as a result we can't get the hardware needed for good local LLMs.</p>
]]></description><pubDate>Thu, 05 Mar 2026 07:41:58 +0000</pubDate><link>https://news.ycombinator.com/item?id=47258784</link><dc:creator>noelwelsh</dc:creator><comments>https://news.ycombinator.com/item?id=47258784</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47258784</guid></item><item><title><![CDATA[New comment by noelwelsh in "RE#: how we built the fastest regex engine in F#"]]></title><description><![CDATA[
<p>No one will mistake your posts for LinkedIn slop. You actually have something to say, with coherent arguments presented in paragraphs containing multiple sentences.<p>If you want sentences without capitalization to be your thing, then go for it. It's just a weird hill to die on, taking away from the readability of your posts for no real reason.</p>
]]></description><pubDate>Wed, 04 Mar 2026 20:25:55 +0000</pubDate><link>https://news.ycombinator.com/item?id=47253309</link><dc:creator>noelwelsh</dc:creator><comments>https://news.ycombinator.com/item?id=47253309</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47253309</guid></item><item><title><![CDATA[New comment by noelwelsh in "RE#: how we built the fastest regex engine in F#"]]></title><description><![CDATA[
<p>I love regular expression derivatives. One neat thing about regular expression derivatives is they are continuation-passing style for regular expressions. The derivative is "what to do next" after seeing a character, which is the continuation of the re. It's a nice conceptual connection if you're into programming language theory.<p>Low-key hate the lack of capitalization on the blog, which made me stumble over every sentence start. Great blog post a bit marred by unnecessary divergence from standard written English.</p>
]]></description><pubDate>Wed, 04 Mar 2026 12:28:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=47246531</link><dc:creator>noelwelsh</dc:creator><comments>https://news.ycombinator.com/item?id=47246531</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47246531</guid></item><item><title><![CDATA[New comment by noelwelsh in "Two kinds of error"]]></title><description><![CDATA[
<p>I agree with this, and I'd add there are two modes of processing errors: fail-fast (stop on first error) and fail-last (do as much processing as possible, collecting all errors). The later is what you want to do when, for example, validating a form: validate every field and return all the errors to the user.</p>
]]></description><pubDate>Tue, 03 Mar 2026 20:40:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=47238651</link><dc:creator>noelwelsh</dc:creator><comments>https://news.ycombinator.com/item?id=47238651</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47238651</guid></item><item><title><![CDATA[New comment by noelwelsh in "Against Query Based Compilers"]]></title><description><![CDATA[
<p>The article doesn't mention the other side of the tradeoff, which is that features like Rust's traits or macros make the language more expressive. Given that Rust's LSP server is pretty snappy, these features don't seem to cause problem in practice for incremental compilation.</p>
]]></description><pubDate>Tue, 03 Mar 2026 08:36:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=47229788</link><dc:creator>noelwelsh</dc:creator><comments>https://news.ycombinator.com/item?id=47229788</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47229788</guid></item><item><title><![CDATA[New comment by noelwelsh in "CSP for Pentesters: Understanding the Fundamentals"]]></title><description><![CDATA[
<p>Pro tip: define your acronyms! This is not about constraint satisfaction programming, communicating sequential programming, or cloud service providers</p>
]]></description><pubDate>Sat, 28 Feb 2026 18:42:11 +0000</pubDate><link>https://news.ycombinator.com/item?id=47198764</link><dc:creator>noelwelsh</dc:creator><comments>https://news.ycombinator.com/item?id=47198764</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47198764</guid></item><item><title><![CDATA[New comment by noelwelsh in "Those who can, teach history"]]></title><description><![CDATA[
<p>But do they? Study history and you'll learn about the Great Man theory of history (<a href="https://en.wikipedia.org/wiki/Great_man_theory" rel="nofollow">https://en.wikipedia.org/wiki/Great_man_theory</a>) and its problems.</p>
]]></description><pubDate>Thu, 26 Feb 2026 15:27:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=47167364</link><dc:creator>noelwelsh</dc:creator><comments>https://news.ycombinator.com/item?id=47167364</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47167364</guid></item><item><title><![CDATA[New comment by noelwelsh in "Dissecting the CPU-memory relationship in garbage collection (OpenJDK 26)"]]></title><description><![CDATA[
<p>There are a few ways of looking at this:<p>- Purely on the JVM, you probably want ZGC (or Shenandoah) because latency is more important than throughput.<p>- On Erlang / the BEAM VM, each thread gets its own private heap, so GC is a per thread operation. If the request doesn't spill over the heap then GC would never need to run during a request handler and all memory could be reclaimed when the handler finishes.<p>- There can still be cases where a request handler allocates memory that is no solely owned by it. E.g. if it causes a new database connection to be allocated in a connection pool, that connection is not owned by the request handler and should not be deallocated when the handler finishes.<p>- The general idea you're getting at is often called "memory regions": you can point to a scope in the code and say "all the memory can be freed when this scope exits". In this case the scope is the request handler. It's the same idea behind arena or slab memory allocation. There are languages that can encode this, and do safe automatic memory management without GC. Rust is an obvious example, but I don't find it very ergonomic. I think the OxCaml [1] and Scala 3 [2] approaches are better.<p>[1]: <a href="https://oxcaml.org/documentation/stack-allocation/reference/" rel="nofollow">https://oxcaml.org/documentation/stack-allocation/reference/</a><p>[2]: <a href="https://docs.scala-lang.org/scala3/reference/experimental/cc.html" rel="nofollow">https://docs.scala-lang.org/scala3/reference/experimental/cc...</a></p>
]]></description><pubDate>Thu, 26 Feb 2026 10:34:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=47164226</link><dc:creator>noelwelsh</dc:creator><comments>https://news.ycombinator.com/item?id=47164226</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47164226</guid></item><item><title><![CDATA[New comment by noelwelsh in "The Misuses of the University"]]></title><description><![CDATA[
<p>When I was at university, my institution was investing $millions in building various new building. A grumbled to my supervisor, who explained to me that this was important to attracting new students.<p>It's an unfortunate truth that decisions to attend a given university are often made based on an image in the student's (or their parents) head about what a university should look like, rather than things like academics.</p>
]]></description><pubDate>Wed, 25 Feb 2026 17:49:06 +0000</pubDate><link>https://news.ycombinator.com/item?id=47154980</link><dc:creator>noelwelsh</dc:creator><comments>https://news.ycombinator.com/item?id=47154980</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47154980</guid></item><item><title><![CDATA[New comment by noelwelsh in "Cardiorespiratory fitness is associated with lower anger and anxiety"]]></title><description><![CDATA[
<p>Hear hear! Exercise at scale is an urban design problem.</p>
]]></description><pubDate>Tue, 24 Feb 2026 19:03:58 +0000</pubDate><link>https://news.ycombinator.com/item?id=47141172</link><dc:creator>noelwelsh</dc:creator><comments>https://news.ycombinator.com/item?id=47141172</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47141172</guid></item><item><title><![CDATA[New comment by noelwelsh in "Generalized Sequential Probability Ratio Test for Families of Hypotheses [pdf]"]]></title><description><![CDATA[
<p>From 2014, with 43 cites in Google Scholar: <a href="https://scholar.google.com/scholar?cites=4354840623154369813&as_sdt=2005&sciodt=0,5&hl=en" rel="nofollow">https://scholar.google.com/scholar?cites=4354840623154369813...</a><p>Might want to check the cites for more recent work ("Efficiency in sequential testing" looks relevant) and also the literature on "bandit best arm identification", which seems to be distinct from this line of work but tackles broadly the same problem.</p>
]]></description><pubDate>Mon, 23 Feb 2026 21:44:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=47129365</link><dc:creator>noelwelsh</dc:creator><comments>https://news.ycombinator.com/item?id=47129365</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47129365</guid></item><item><title><![CDATA[New comment by noelwelsh in "I Don't Like Magic"]]></title><description><![CDATA[
<p>That was interesting. Thanks!</p>
]]></description><pubDate>Sun, 22 Feb 2026 07:26:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=47109038</link><dc:creator>noelwelsh</dc:creator><comments>https://news.ycombinator.com/item?id=47109038</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47109038</guid></item><item><title><![CDATA[New comment by noelwelsh in "I Don't Like Magic"]]></title><description><![CDATA[
<p>If you have this attitude I hope you write everything in assembly. Except assembly is compiled into micro-ops, so hopefully you avoid that by using an 8080 (according to a quick search, the last Intel CPU to not have micro-ops.)<p>In other words, why is one particular abstraction (e.g. Javscript, or the web browser) ok, but another abstraction (e.g. React) not? This attitude doesn't make sense to me.</p>
]]></description><pubDate>Sat, 21 Feb 2026 21:06:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=47104752</link><dc:creator>noelwelsh</dc:creator><comments>https://news.ycombinator.com/item?id=47104752</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47104752</guid></item></channel></rss>