<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: chris_armstrong</title><link>https://news.ycombinator.com/user?id=chris_armstrong</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sat, 04 Apr 2026 09:16:58 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=chris_armstrong" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by chris_armstrong in "Is Show HN dead? No, but it's drowning"]]></title><description><![CDATA[
<p>The answer, as always, is to write a compelling story about it, and make the front page of ‘new’.</p>
]]></description><pubDate>Tue, 17 Feb 2026 21:42:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=47053815</link><dc:creator>chris_armstrong</dc:creator><comments>https://news.ycombinator.com/item?id=47053815</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47053815</guid></item><item><title><![CDATA[New comment by chris_armstrong in "Los Angeles ends strange rite of passage with new fridge law"]]></title><description><![CDATA[
<p>No where in Australia would you expect a fridge to be supplied as part of a tenancy. It does restrict what you can buy, as may removalists will not touch move a fridge if there’s too many stairs or if you can’t get it in the door</p>
]]></description><pubDate>Mon, 05 Jan 2026 23:59:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=46506977</link><dc:creator>chris_armstrong</dc:creator><comments>https://news.ycombinator.com/item?id=46506977</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46506977</guid></item><item><title><![CDATA[New comment by chris_armstrong in "The architecture of “not bad”: Decoding the Chinese source code of the void"]]></title><description><![CDATA[
<p>I would say Australian English relies on this negation even more than British English, to the point of being confusing without more cultural context.</p>
]]></description><pubDate>Thu, 11 Dec 2025 22:28:45 +0000</pubDate><link>https://news.ycombinator.com/item?id=46238176</link><dc:creator>chris_armstrong</dc:creator><comments>https://news.ycombinator.com/item?id=46238176</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46238176</guid></item><item><title><![CDATA[New comment by chris_armstrong in "The Mozilla Cycle, Part III: Mozilla Dies in Ignominy"]]></title><description><![CDATA[
<p>Genuine independence is almost impossible at this size, because you need a strong internal discipline to only rely on small donors, and not bend your organisation’s mission to keep larger donors</p>
]]></description><pubDate>Sun, 23 Nov 2025 02:12:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=46020122</link><dc:creator>chris_armstrong</dc:creator><comments>https://news.ycombinator.com/item?id=46020122</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46020122</guid></item><item><title><![CDATA[New comment by chris_armstrong in "The Mozilla Cycle, Part III: Mozilla Dies in Ignominy"]]></title><description><![CDATA[
<p>I think this because nonprofits are subject to a similar market discipline as companies: they compete for funding, relevance, market share etc.<p>And their board composition converges similarly as those same people are relied upon for their connections to fundraise, hire, etc. They don’t want to be seen taking an unusual strategy as it would  be perceived as risky and jeopardising precious donated funds, so the same groupthink emerges.<p>Even if someone outside these circles was hired, they’d be knocked down with the smallest misstep, with the veiled criticism they weren’t suitable for the position (ie someone with better connections should have been chosen), so even they will fall into line.</p>
]]></description><pubDate>Sun, 23 Nov 2025 02:10:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=46020107</link><dc:creator>chris_armstrong</dc:creator><comments>https://news.ycombinator.com/item?id=46020107</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46020107</guid></item><item><title><![CDATA[New comment by chris_armstrong in "The Mozilla Cycle, Part III: Mozilla Dies in Ignominy"]]></title><description><![CDATA[
<p>Non profit organisations trying to remain relevant (or just survive) behave this way because they arent much different from companies operating in a market for profit.<p>Their leadership is often not that much different, with similar people working in similar jobs educated in the same institutions and walking in the same social circles, producing the same solutions to the existential problem of organisational survival.</p>
]]></description><pubDate>Sun, 23 Nov 2025 01:09:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=46019814</link><dc:creator>chris_armstrong</dc:creator><comments>https://news.ycombinator.com/item?id=46019814</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46019814</guid></item><item><title><![CDATA[New comment by chris_armstrong in "Shell Grotto: England's mysterious underground seashell chamber"]]></title><description><![CDATA[
<p>I stand corrected - there’s so little known about it that it’s probably some strange labor of love from recent centuries</p>
]]></description><pubDate>Sat, 08 Nov 2025 11:22:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=45855906</link><dc:creator>chris_armstrong</dc:creator><comments>https://news.ycombinator.com/item?id=45855906</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45855906</guid></item><item><title><![CDATA[New comment by chris_armstrong in "Shell Grotto: England's mysterious underground seashell chamber"]]></title><description><![CDATA[
<p>It was discovered in the 1800s, the shell grotto is much much older and probably built over a very long period of time</p>
]]></description><pubDate>Sat, 08 Nov 2025 09:00:00 +0000</pubDate><link>https://news.ycombinator.com/item?id=45855278</link><dc:creator>chris_armstrong</dc:creator><comments>https://news.ycombinator.com/item?id=45855278</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45855278</guid></item><item><title><![CDATA[New comment by chris_armstrong in "Shell Grotto: England's mysterious underground seashell chamber"]]></title><description><![CDATA[
<p>This is probably the highlight of a visit to an otherwise unremarkable English seaside town. The chambers are very old (even by English standards) and so unlike anything else medieval that is still around.</p>
]]></description><pubDate>Sat, 08 Nov 2025 03:03:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=45853743</link><dc:creator>chris_armstrong</dc:creator><comments>https://news.ycombinator.com/item?id=45853743</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45853743</guid></item><item><title><![CDATA[New comment by chris_armstrong in "Why I love OCaml (2023)"]]></title><description><![CDATA[
<p>It's interesting reading many of the associated comments, because there is a genuinely active effort to address many of the pain points of the language:<p>* Windows support has improved to the point where you can just download opam, and it will configure and set up a working compiler and language tools for you[^1]. The compiler team treat Windows as an first tier target. opam repository maintainers ensure new libraries and library versions added to the opam repository are compiled and tested for Windows compatibility, and authors are encouraged to fix it before making a release if its reasonably straightforward<p>* debugger support with gdb (and lldb) is slowly being improved thanks to efforts at Tarides<p>* opam is relatively stable (I've never found it "buggy and surprising"), but 
there are aspects (like switches that behave more like python venvs) which don't provide the most modern behaviour. dune package management (which is still in the works) will simplify this considerably, but opam continues to see active development and improvement from release to release.<p>* the platform team (again) are working on improving documentation with worked recipes and examples for popular uses cases (outside of the usual compiler and code generation cases) with the OCaml Cookbook: <a href="https://ocaml.org/cookbook" rel="nofollow">https://ocaml.org/cookbook</a><p>There are other things I find frustrating or that I work around, or are more misperceptions:<p>* there isn't a builtin way to copy files because the standard library is deliberately very small (like Rust), but there is a significant ecosystem of packages (this is different to other languages which cram a lot into their standard library). The result is a lot of friction for newcomers who have to install something to get what they need done, but that's valued by more experienced developers who don't want the whole kitchen sink in their binary and all its supply chain issues.[^2]<p>* the type inference can be a bit of a love/hate thing. Many people find it frustrating because of the way it works, and start annotating everything to short-circuit it. I've personally found it requires a bit of work to understand what it is doing, and when to rely on it, and when not to (essentially not trying to make it do things it simply will never be able to do).[^3]<p>* most people use singly-linked lists because they work reasonably well for their use cases and don't get in their way. There are other data structures, they work well and have better performance (for where it is needed). The language is pragmatic enough to offer mutable and immutable versions.<p>* ocamlformat is designed to work without defaults (but some of them I find annoying and reconfigure)<p>Please don't take this as an apology for its shortcomings - any language used in the wild has its frustrations, and more "niche" languages like OCaml have more than a few. But for me it's amazing how much the language has been modernised (effects-based runtime, multicore, etc) without breaking compatibility or adding reams of complexity to the language. Many of these things have taken a long time, but the result is usually much cleaner and better thought out than if they were rushed.<p>[^1] This in itself is not enough, and still "too slow". It will improve with efforts like relocatable OCaml (enabling binary distribution instead of compiling from source everywhere) and disentangling the build system from Unixisms that require Cygwin.<p>[^2] I particularly appreciate that the opam repository is actively tested (all new package releases are tested in a CI for dependency compatibility and working tests), curated (if its too small to be library, it will probably be rejected) and pruned (unmaintained packages are now being archived)<p>[^3] OCaml sets expectations around its type inference ("no annotations!") very high, but the reality is that it relies on a very tightly designed and internally coherent set of language constructs in order to achieve a high level of type inference / low level of annotation, but these are very different to how type inference works in other languages. For example, I try and avoid using the same field name in a module because of the "flat namespace" of field names used to infer record types, but this isn't always possible (e.g. generated code), so I find myself compensating by moving things into separate modules (which are relatively cheap and don't pollute the scope as much).</p>
]]></description><pubDate>Sat, 08 Nov 2025 01:44:26 +0000</pubDate><link>https://news.ycombinator.com/item?id=45853322</link><dc:creator>chris_armstrong</dc:creator><comments>https://news.ycombinator.com/item?id=45853322</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45853322</guid></item><item><title><![CDATA[New comment by chris_armstrong in "Why every Rust crate feels like a research paper on abstraction"]]></title><description><![CDATA[
<p>I also find languages like OCaml avoid a lot of this nonsense in their libraries because the ability to build layers and layers of complex abstraction isn’t there in the same way as Haskell, Rust, or any of the LISPs</p>
]]></description><pubDate>Mon, 20 Oct 2025 02:41:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=45639792</link><dc:creator>chris_armstrong</dc:creator><comments>https://news.ycombinator.com/item?id=45639792</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45639792</guid></item><item><title><![CDATA[New comment by chris_armstrong in "Why every Rust crate feels like a research paper on abstraction"]]></title><description><![CDATA[
<p>This resonates. I spent a fair bit of time thinking about library design for an OCaml library that didn’t directly expose more complicated language features (like functors and first class modules) where they weren’t needed.<p>(I presented on it recently: <a href="https://www.chrisarmstrong.dev/posts/icfp-wrapup-2025-10-18" rel="nofollow">https://www.chrisarmstrong.dev/posts/icfp-wrapup-2025-10-18</a>)</p>
]]></description><pubDate>Mon, 20 Oct 2025 02:40:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=45639785</link><dc:creator>chris_armstrong</dc:creator><comments>https://news.ycombinator.com/item?id=45639785</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45639785</guid></item><item><title><![CDATA[New comment by chris_armstrong in "The Unix Executable as a Smalltalk Method [pdf]"]]></title><description><![CDATA[
<p>The ICFP/SPLASH papers are now starting to find their way to HN.<p>This was a HUGE combined programming conference with several competing tracks over 7 days. You can find the program here ^1 (you can often find a link to the abstract or full paper if you click on it)<p>Streams from the sessions will also show up here^2 (you’ll need to match the day and room and ff to the time it appeared)<p>^1: <a href="https://conf.researchr.org/program/icfp-splash-2025/program-icfp-splash-2025/" rel="nofollow">https://conf.researchr.org/program/icfp-splash-2025/program-...</a>?<p>^2: <a href="https://youtube.com/playlist?list=PLyrlk8Xaylp5ihrTVeOSaylaBe4ZORkSI&si=kyXFBwVMIC5Nmh67" rel="nofollow">https://youtube.com/playlist?list=PLyrlk8Xaylp5ihrTVeOSaylaB...</a></p>
]]></description><pubDate>Sat, 18 Oct 2025 01:13:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=45623976</link><dc:creator>chris_armstrong</dc:creator><comments>https://news.ycombinator.com/item?id=45623976</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45623976</guid></item><item><title><![CDATA[New comment by chris_armstrong in "Zig got a new ELF linker and it's fast"]]></title><description><![CDATA[
<p>zig has a cross-compiler frontend (zig cc) which can be used as a drop-in replacement for a custom sysroot + binutils + gcc for several platforms. I've used it to build OCaml cross-compilers that only depend on zig itself (<a href="https://www.chrisarmstrong.dev/posts/ocaml-cross-compilation-an-experiment" rel="nofollow">https://www.chrisarmstrong.dev/posts/ocaml-cross-compilation...</a>).<p>There are other projects that have used it in a similar way too.<p>[1] <a href="https://actually.fyi/posts/zig-makes-rust-cross-compilation-just-work/" rel="nofollow">https://actually.fyi/posts/zig-makes-rust-cross-compilation-...</a>
[2] <a href="https://jcbhmr.com/2024/07/19/zig-cc-cmake/" rel="nofollow">https://jcbhmr.com/2024/07/19/zig-cc-cmake/</a></p>
]]></description><pubDate>Mon, 22 Sep 2025 00:52:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=45328068</link><dc:creator>chris_armstrong</dc:creator><comments>https://news.ycombinator.com/item?id=45328068</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45328068</guid></item><item><title><![CDATA[New comment by chris_armstrong in "Zig got a new ELF linker and it's fast"]]></title><description><![CDATA[
<p>If I recall correctly, this is one of the final pieces that allows zig to be used as a fully self-contained cross-compiling C toolchain (once its linker is enabled for more platforms / formats)</p>
]]></description><pubDate>Mon, 22 Sep 2025 00:32:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=45327974</link><dc:creator>chris_armstrong</dc:creator><comments>https://news.ycombinator.com/item?id=45327974</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45327974</guid></item><item><title><![CDATA[New comment by chris_armstrong in "Étoilé – desktop built on GNUStep"]]></title><description><![CDATA[
<p>Damn this is a blast from the past - it was such an ambitious project with so many interesting ideas to explore. CoreObject itself was revolutionary in its thinking about distributed document sharing and versioning, let alone some of desktop environment ideas for managing projects.<p>I know Quentin Mathé, kept CoreObject going for a decade longer, but I haven't heard from the rest of those involved for a very long time.</p>
]]></description><pubDate>Thu, 04 Sep 2025 04:59:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=45123741</link><dc:creator>chris_armstrong</dc:creator><comments>https://news.ycombinator.com/item?id=45123741</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45123741</guid></item><item><title><![CDATA[New comment by chris_armstrong in "OCaml as my primary language"]]></title><description><![CDATA[
<p>I almost never find a use for GADTs or functors or carefully specifying module types, but when I need them, they help me get stuff done neatly.<p>Even the object system which most OCaml developers avoid, is actually very useful for some specific modelling scenarios (usually hierarchies in GUIs or IaC) that comes with similar type system guarantees and minimal type annotations.</p>
]]></description><pubDate>Thu, 14 Aug 2025 00:49:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=44895600</link><dc:creator>chris_armstrong</dc:creator><comments>https://news.ycombinator.com/item?id=44895600</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44895600</guid></item><item><title><![CDATA[New comment by chris_armstrong in "OCaml as my primary language"]]></title><description><![CDATA[
<p>As someone who uses OCaml for hobby projects, I appreciate how little the language gets in your way when you want to just “get shit done”, despite the language’s origins in academia and industrial uses.<p>The type system usually means that I might take longer to get my code to compile, but that I won’t spend much (if any) time debugging it once I’m done.<p>I’m in the middle of pulling together bits of a third party library and refactoring them over several days work, and I’m pretty confident that most of the issues I’ll face when done will be relatively obvious runtime ones.</p>
]]></description><pubDate>Thu, 14 Aug 2025 00:46:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=44895588</link><dc:creator>chris_armstrong</dc:creator><comments>https://news.ycombinator.com/item?id=44895588</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44895588</guid></item><item><title><![CDATA[New comment by chris_armstrong in "Researchers value null results, but struggle to publish them"]]></title><description><![CDATA[
<p>Onlynulls, the subscription-only service you’d be too ashamed to have your supervisor find you on.</p>
]]></description><pubDate>Fri, 25 Jul 2025 23:04:23 +0000</pubDate><link>https://news.ycombinator.com/item?id=44689544</link><dc:creator>chris_armstrong</dc:creator><comments>https://news.ycombinator.com/item?id=44689544</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44689544</guid></item><item><title><![CDATA[New comment by chris_armstrong in "The Art of Lisp and Writing (2003)"]]></title><description><![CDATA[
<p>I think the tragedy is that we don't have fluid ways to move between them, that these different development modes (solitary and social, dynamic and static) have produced philosophically and practically incompatible tools and methodologies.</p>
]]></description><pubDate>Sun, 15 Jun 2025 14:32:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=44282480</link><dc:creator>chris_armstrong</dc:creator><comments>https://news.ycombinator.com/item?id=44282480</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44282480</guid></item></channel></rss>