<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: cb321</title><link>https://news.ycombinator.com/user?id=cb321</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Fri, 15 May 2026 18:24:45 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=cb321" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by cb321 in "Leaving the Physical World"]]></title><description><![CDATA[
<p>Ah.  Good searching!  So, maybe the 800,000 computers was "in DNS but un-pingable IP hosts" (dial-up was a big then then) or maybe included non-IP "networked" hosts or who knows..  Anyway, I agree that your finds make it more likely to be 1992/3 than 1994.  Thanks!</p>
]]></description><pubDate>Thu, 14 May 2026 15:43:42 +0000</pubDate><link>https://news.ycombinator.com/item?id=48137099</link><dc:creator>cb321</dc:creator><comments>https://news.ycombinator.com/item?id=48137099</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48137099</guid></item><item><title><![CDATA[New comment by cb321 in "Leaving the Physical World"]]></title><description><![CDATA[
<p>I am unfamiliar with the history of the piece.  Many things are possible.  He may have "mostly wrote" it in 1992 and then "polished it" for a 1994 Oita conference, but was somewhat sloppy in internally updating everything date-dependent like the coup part.  People also can be very flowery/metaphorical about using the word "coup".  Not sure if they even have attendee/speaker lists online for those Oita conferences anymore, but that might also help if he wasn't at all of them.  Bitrot / entropy can corrupt the digital world as well as the physical, just with more checksums <i>if</i> the referents still exist. ;-)</p>
]]></description><pubDate>Thu, 14 May 2026 14:22:25 +0000</pubDate><link>https://news.ycombinator.com/item?id=48135855</link><dc:creator>cb321</dc:creator><comments>https://news.ycombinator.com/item?id=48135855</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48135855</guid></item><item><title><![CDATA[New comment by cb321 in "Leaving the Physical World"]]></title><description><![CDATA[
<p>That's what I thought, too, but the top of the article says "For the Conference on HyperNetworking, Oita, Japan" which was in '94.  So, I thought maybe "last summer" was internally even off by a couple years?  I'm really not sure, but someone around these parts probably knows.  Worth mentioning that also in the early 90s people did refer to the Russian Federation as the Soviet Union sometimes as a shortening of "the former Soviet Union".<p>The estimate of "The Internet" connecting 800,000 computers is probably also pretty surgically date-identifying (at least to isolate 1992 to 1998 given how fast it was growing at the time, though estimation error might cause a <i>little</i> trouble!).  For example, <a href="https://web.mit.edu/people/mkgray/net/internet-growth-summary.html" rel="nofollow">https://web.mit.edu/people/mkgray/net/internet-growth-summar...</a> also suggests 1994 (although that estimate was 0.6 million) while 1992 would be more like 200,000 although as per my scare quotes (and that MIT link) "The Internet" was also a somewhat vague term at the time.  And by 1998 it was surely over 10 million which makes the @karel-3d quite likely incorrect, although who knows - maybe that's when the EFF first put it up on their web site?<p>EDIT: I mostly think it matters since observations that might have seemed quite prescient in 1992 (like also-Mormon Orson Scott Card's even more prescient ideas in 1985 <i>Ender's Game</i> with Locke & Demosthenes political chat personas based on 1980s BBS/UUCP network activity) were very much things everyone was saying by 1998.</p>
]]></description><pubDate>Thu, 14 May 2026 12:56:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=48134730</link><dc:creator>cb321</dc:creator><comments>https://news.ycombinator.com/item?id=48134730</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48134730</guid></item><item><title><![CDATA[New comment by cb321 in "Leaving the Physical World"]]></title><description><![CDATA[
<p>I <i>think</i> this was written in 1994 for this conference <a href="https://seclists.org/interesting-people/1994/Mar/64" rel="nofollow">https://seclists.org/interesting-people/1994/Mar/64</a> , but I'm not 100% sure.  It refers to "last summer's coup in the Soviet Union" which may also date it.  Maybe it should have a (1994) in the title.  Or, I don't know, maybe it's from even earlier?  Some of the other pieces have nice dates at the bottom, like the Declaration of Independence for Cyberspace a bit over 30 years ago.  EDIT: @karel-3d elsethread seems to think this one is (1998).</p>
]]></description><pubDate>Thu, 14 May 2026 12:39:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=48134542</link><dc:creator>cb321</dc:creator><comments>https://news.ycombinator.com/item?id=48134542</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48134542</guid></item><item><title><![CDATA[New comment by cb321 in "From RGB to L*a*b* color space (2024)"]]></title><description><![CDATA[
<p>In fact, to support your point, it is perhaps questionable from first principles if 3 dimensions not 4 is right. Leaving out tetra chromats and the (partially) color blind, normal human light perception is 1 kind of rod and 3 kinds of cones (i.e. 4 photo receptors, plus some light sensitive ganglia that don't seem to participate in vision, but diurnal regulation).<p>So, sure, this "4th dimension" (for normals) might be as simple as "candelas" - truly orthogonal, but one does hear an awful lot about "ambient" or "candela contrastive" (a term I just made up) kinds of effects.  (EDIT: e.g. in color calibration of projectors in dark rooms vs. living rooms, for example, but I'm sure there are many.)  I am just one person, but it feels like candela brightness matters for color perception.  So, maybe luminous intensity is not actually exactly orthogonal.  Maybe this is all covered in the 1931 CIE documents, though.</p>
]]></description><pubDate>Sun, 08 Mar 2026 16:54:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=47298824</link><dc:creator>cb321</dc:creator><comments>https://news.ycombinator.com/item?id=47298824</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47298824</guid></item><item><title><![CDATA[New comment by cb321 in "Why does C have the best file API"]]></title><description><![CDATA[
<p>To support your point, it's also used in basically every shared library / DLL system.  While usually used "for code", a "shared pure data library" has many applications.  There are also 3rd party tools to make this convenient from many PLangs like HDF5, <a href="https://github.com/c-blake/nio" rel="nofollow">https://github.com/c-blake/nio</a> with its FileArray for Nim, Apache Arrow, etc.<p>Unmentioned so far is that defaults for max live memory maps are usually much higher than defaults for max open files.  So, if you are careful about closing files after mapping, you can usually get more "range" before having to move from OS/distro defaults.  (E.g. for `program foo*`-style work where you want to keep the foo open for some reason, like binding them to many read-only NumPy array variables.)</p>
]]></description><pubDate>Mon, 02 Mar 2026 09:51:00 +0000</pubDate><link>https://news.ycombinator.com/item?id=47215799</link><dc:creator>cb321</dc:creator><comments>https://news.ycombinator.com/item?id=47215799</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47215799</guid></item><item><title><![CDATA[New comment by cb321 in "Index, Count, Offset, Size"]]></title><description><![CDATA[
<p>:-)<p>If it helps anyone explain the SkiFire point any better, I like to analogize it to an I-bar cursor vs. a block cursor for text entry.  An I-bar is unambiguously "between characters" while a block cursor is not.  So, there are questions that arise for block cursors that basically never arise for I-bar cursors.  When just looking at an integer like 2 or 3, there is no cursor at all.  So, we must instead rely on names/conventions/assumptions with their attendant issues.<p>To be clear, <i>I</i> liked the SkiFire explanation, but having multiple ways to describe/think about a problem is usually helpful.</p>
]]></description><pubDate>Sat, 21 Feb 2026 16:28:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=47102221</link><dc:creator>cb321</dc:creator><comments>https://news.ycombinator.com/item?id=47102221</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47102221</guid></item><item><title><![CDATA[New comment by cb321 in "Index, Count, Offset, Size"]]></title><description><![CDATA[
<p>As @SkiFire correctly observes[^1], off-by-1 problems are more fundamental than 0-based or 1-based indices, but the latter still vary enough that some kind of discrimination is needed.<p>For many years (decades?) now, I've been using "index" for 0-based and "number" for 1-based as in "column index" for a C/Python style [ix] vs. "column number" for a shell/awk/etc. style $1 $2.  Not sure this is the best terminology, but it <i>is</i> nice to have something consistent.  E.g., "offset" for 0-based indices means "off" and even the letter "o" in some case becomes "the zero of some range".  So, "offset" might be better than "index" for 0-based.<p>[^1]: <a href="https://news.ycombinator.com/item?id=47100056">https://news.ycombinator.com/item?id=47100056</a></p>
]]></description><pubDate>Sat, 21 Feb 2026 12:19:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=47100094</link><dc:creator>cb321</dc:creator><comments>https://news.ycombinator.com/item?id=47100094</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47100094</guid></item><item><title><![CDATA[New comment by cb321 in "D Programming Language"]]></title><description><![CDATA[
<p>I don't use D.. I find Nim helps with even lower ceremony.  That said, it's hard for me to understand how "getting into gcc" is failure.  The list of such PLangs is very short.  People can be very parochial, though.  They probably mean pretty shallow things (just one example, but something like "failed to convert me, personally", or "jobs I'd like to apply for", or etc.).<p>Maybe people should instead talk about how they use D or what they'd like to see added to D?  In an attempt to be the change one wants to see, I'd say named arguments are a real win and there seem to be some stalled proposals for that in D last I checked.</p>
]]></description><pubDate>Thu, 12 Feb 2026 12:36:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=46988055</link><dc:creator>cb321</dc:creator><comments>https://news.ycombinator.com/item?id=46988055</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46988055</guid></item><item><title><![CDATA[New comment by cb321 in "D Programming Language"]]></title><description><![CDATA[
<p>This can very clearly be said about C++ as well, which may have started out as C With Classes but became very kitchen sinky.  Most things that get used accrete a lot of features over time, though.<p>FWIW, I think "standing out" due to paradigm commitment is mostly downstream of "xyz-purity => fewer ways to do things => have to think/work more within the constraints given".  This then begs various other important questions, of course.. E.g., do said constraints actually buy users things of value overcoming their costs, and if so for what user subpopulations?  Most adoption is just hype-driven, though.  Not claiming you said otherwise, but I also don't think the kind of standing out you're talking about correlates so well to marketing.  E.g., browsers marketed Javascript (which <i>few</i> praised for its PLang properties in early versions).</p>
]]></description><pubDate>Thu, 12 Feb 2026 12:28:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=46987977</link><dc:creator>cb321</dc:creator><comments>https://news.ycombinator.com/item?id=46987977</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46987977</guid></item><item><title><![CDATA[New comment by cb321 in "The Holy Grail of Linux Binary Compatibility: Musl and Dlopen"]]></title><description><![CDATA[
<p>Yeah.  I've been doing this for almost 10 years now.  It's not APE/cosmopolitan (which also "kinda works" with Nim but has many lowest common denominator platform support issues, e.g. posix_fallocate).  However, it does let you have very cross-Linux portable binaries.  Maybe beyond Linux.<p>Some might appreciate a concrete instance of this advice inline here.  For `foo.nim`, you can just add a `foo.nim.cfg`:<p><pre><code>    @if gcc:
      gcc.exe       = "musl-gcc"
      gcc.linkerexe = "musl-gcc"
      passL         = "-static -s" @end
</code></pre>
There is also a "NimScript" syntax you could use a `foo.nims`:<p><pre><code>    if defined gcc:  # nim.cfg runs faster than NimScript
      switch "gcc.exe"      , "musl-gcc"
      switch "gcc.linkerexe", "musl-gcc"
      switch "passL"        , "-static -s"</code></pre></p>
]]></description><pubDate>Mon, 26 Jan 2026 20:14:49 +0000</pubDate><link>https://news.ycombinator.com/item?id=46770881</link><dc:creator>cb321</dc:creator><comments>https://news.ycombinator.com/item?id=46770881</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46770881</guid></item><item><title><![CDATA[New comment by cb321 in "I built a 2x faster lexer, then discovered I/O was the real bottleneck"]]></title><description><![CDATA[
<p>DNA researchers developed a parallel format for gzip they call "bgzip" ( <a href="https://learngenomics.dev/docs/genomic-file-formats/compression-and-BGZF/" rel="nofollow">https://learngenomics.dev/docs/genomic-file-formats/compress...</a> ) that makes data seem less trapped behind a decompression perf wall.  Zstd is still a bit faster (but < ~2X) and also gets better compression ratios (<a href="https://forum.nim-lang.org/t/5103#32269" rel="nofollow">https://forum.nim-lang.org/t/5103#32269</a>)</p>
]]></description><pubDate>Sun, 25 Jan 2026 18:11:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=46756484</link><dc:creator>cb321</dc:creator><comments>https://news.ycombinator.com/item?id=46756484</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46756484</guid></item><item><title><![CDATA[New comment by cb321 in "I built a 2x faster lexer, then discovered I/O was the real bottleneck"]]></title><description><![CDATA[
<p>Besides `ar` as a sibiling observed, you might also be thinking of pixz - <a href="https://github.com/vasi/pixz" rel="nofollow">https://github.com/vasi/pixz</a> , but really any archive format (cpio, etc.) can, in principle, just put a stake in the ground to have its last file be any kind of binary / whatever index file directory like Zip.  Or it could hog a special name like .__META_INF__ instead.</p>
]]></description><pubDate>Sun, 25 Jan 2026 17:54:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=46756324</link><dc:creator>cb321</dc:creator><comments>https://news.ycombinator.com/item?id=46756324</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46756324</guid></item><item><title><![CDATA[New comment by cb321 in "I built a 2x faster lexer, then discovered I/O was the real bottleneck"]]></title><description><![CDATA[
<p>One aspect of the question is that "permissions" are mostly regulated at the time of open and user-code should check for failures.  This was a driving inspiration for the tiny 27 lines of C virtual machine in <a href="https://github.com/c-blake/batch" rel="nofollow">https://github.com/c-blake/batch</a> that allows you to, e.g., synthesize a single call that mmaps a whole file <a href="https://github.com/c-blake/batch/blob/64a35b4b35efa8c52afb648628a1402a446b14a3/examples/total.c#L9-L44" rel="nofollow">https://github.com/c-blake/batch/blob/64a35b4b35efa8c52afb64...</a> which seems like it would have also helped the article author.</p>
]]></description><pubDate>Sun, 25 Jan 2026 12:04:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=46753362</link><dc:creator>cb321</dc:creator><comments>https://news.ycombinator.com/item?id=46753362</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46753362</guid></item><item><title><![CDATA[New comment by cb321 in "Gathering Linux Syscall Numbers in a C Table"]]></title><description><![CDATA[
<p>This description matches my own experience.  E.g., I recall having to use my own macro-based syscall() things when the inotify system was first introduced because glibc did not have support for years and then it was years more for slow moving Linux distros to pick up the new glibc version.<p>Unsaid was that much of this project separation comes from glibc being born as (and probably still being) a "portable libc with extra GNU-ish features", not a Linux-specific thing.<p>Honestly, some of this pain might have been avoided had the Bell Labs guys made <i>two</i> libraries - the syscall interface part of `libc`, called say `libos`, and the more articulated language run-time (string/buffered IO/etc./etc) the actual `libc`.  Then the kernel could "easily" ship with libos and libc's could vary.  To even realize this might be helpful someday likely required foresight beyond reason in the mid-1970s.  Then, afterwards, Makefile's and other build system stuff probably wanted to stay with "-lc" in various places and then glibc/others wanted to support that and so it goes.  Integration can be hard to un-do.</p>
]]></description><pubDate>Thu, 22 Jan 2026 11:45:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=46718011</link><dc:creator>cb321</dc:creator><comments>https://news.ycombinator.com/item?id=46718011</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46718011</guid></item><item><title><![CDATA[New comment by cb321 in "Gentoo Linux 2025 Review"]]></title><description><![CDATA[
<p>I am replying here as a kind of "better place to attach".<p>Anyway, to answer grandparent, I basically never had rebuild loops in 19 years.. just emerge -uU world every day or sometimes every week.  I have been running the same base system since..let's see:<p><pre><code>    qlop -tvm|h1
    2007-01-18T19:50:33 >>> x11-base/xorg-server-1.1.1-r4: 9m23s
</code></pre>
I have never once had to rebuild the whole system from scratch in those 19 years.  (I've just rsync'd the rootfs from machine to machine as I upgraded HW and gradually rebuilt because as many others here have said, for me it wasn't about "perf of everything" or some kind of reproducible system - "more customization + perf of some things".)  The upgrade from monolithic X11 to split X11 was "fun", though. /s<p>I do engage in all sorts of package.mask/per-package use/many global use.  I have my own portage/local overlay for things where I disagree with upstream.  I even have an automated system to "patch" my disagreements in.  E.g, I control how fast I upgrade my LLVM junk so I do it on my own timeline.  Mostly I use gcc.  I control that, too.  Any really slow individual build, basically.<p>If over the decades, they ever did anything that made it look like crazy amounts of rebuilds would happen, I'd tend to wait a few days/week or so and then figure something out.  If some new dependency brings in a mountain of crap, I usually figure out how to block that.</p>
]]></description><pubDate>Sun, 11 Jan 2026 21:29:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=46580325</link><dc:creator>cb321</dc:creator><comments>https://news.ycombinator.com/item?id=46580325</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46580325</guid></item><item><title><![CDATA[New comment by cb321 in "Gentoo Linux 2025 Review"]]></title><description><![CDATA[
<p>While I was always a sourced-base/personalized distribution personality type, this is also a big part of why I moved to Gentoo in early 2004 (for amd64, not Risc-V / other embedded per your example).  While Pentium-IV's very deep pipelines and compiler flag sensitivities (and the name itself for the fastest Penguin) drove the for-speed perception of the compile-just-for-my-system style, it really plays well to all customization/configuation hacker mindsets.</p>
]]></description><pubDate>Sun, 11 Jan 2026 13:49:14 +0000</pubDate><link>https://news.ycombinator.com/item?id=46575750</link><dc:creator>cb321</dc:creator><comments>https://news.ycombinator.com/item?id=46575750</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46575750</guid></item><item><title><![CDATA[New comment by cb321 in "Developing a high level language over Zig"]]></title><description><![CDATA[
<p>Popularity is one thing { and probably more people use it than a non-existing new PLang you are only at the design phase of :-) }, but I think you misunderstood the backend idea.  Nim has a javascript backend via `nim js` and on that backend you can use `emit` to do inline javascript, just as on the C/C++ backends you can use emit to put out C/C++.  So, if you did do a zig backend, being able to emit inline zig would be part of that.  It may still not be what you want, of course.</p>
]]></description><pubDate>Fri, 09 Jan 2026 13:25:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=46553570</link><dc:creator>cb321</dc:creator><comments>https://news.ycombinator.com/item?id=46553570</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46553570</guid></item><item><title><![CDATA[New comment by cb321 in "The C3 Programming Language"]]></title><description><![CDATA[
<p>One application of such a feature would be something like a "cligen.c3" (like the Nim <a href="https://github.com/c-blake/cligen" rel="nofollow">https://github.com/c-blake/cligen</a> or its /python/cg.py port or etc.).  Mostly it just seems a more complete signature extraction, though.  Any other kind of documentation system might benefit.</p>
]]></description><pubDate>Sat, 03 Jan 2026 21:35:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=46481865</link><dc:creator>cb321</dc:creator><comments>https://news.ycombinator.com/item?id=46481865</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46481865</guid></item><item><title><![CDATA[New comment by cb321 in "The C3 Programming Language"]]></title><description><![CDATA[
<p>I see from `test/test_suite/compile_time_introspection/paramsof.c3t` that there is a way to get names & types of function parameters [1].  The language also seems to support default values { e.g. `int foo(int a, int b = 2) {...}` } and even call with keyword arguments/named parameters [2], but I couldn't find any `defaultof` or similar thing in the code.  Does anyone know if this is just an oversight / temporary omission?<p>[1] <a href="https://github.com/c3lang/c3c/blob/master/test/test_suite/compile_time_introspection/paramsof.c3t" rel="nofollow">https://github.com/c3lang/c3c/blob/master/test/test_suite/co...</a><p>[2] <a href="https://c3-lang.org/language-fundamentals/functions/" rel="nofollow">https://c3-lang.org/language-fundamentals/functions/</a></p>
]]></description><pubDate>Sat, 03 Jan 2026 17:45:15 +0000</pubDate><link>https://news.ycombinator.com/item?id=46479408</link><dc:creator>cb321</dc:creator><comments>https://news.ycombinator.com/item?id=46479408</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46479408</guid></item></channel></rss>