<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>Sat, 24 Oct 2026 12:21:28 +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 "11 year old unsoundness bugs found in Rust borrow checker"]]></title><description><![CDATA[
<p>Even back in 2013 there were these ideas: <a href="https://forum.nim-lang.org/t/278" rel="nofollow">https://forum.nim-lang.org/t/278</a><p>I think you & I are really back & forth-ing "the PLang not enforcing/strongly encouraging a very specific way of doing things that a whole ecosystem/community organizes around".  Relying instead on self-organization has many pros & cons, to be sure.  Lisp suffered much the same "until" Common Lisp (which still leaves many things open).  My tag line lately is: delegation affords so much, but trust sure is tricky.  Much of the time people seem to discount the often rather large cost of establishing/maintaining trust.  (I'm not saying <i>you</i> are - just that it's an easy thing to do.  I think it's why there is this is a big megathread on "trusting rust", even though "rust" is a <i>veritable suffix</i> of "trust".  Lol.)</p>
]]></description><pubDate>Tue, 13 Oct 2026 16:40:42 +0000</pubDate><link>https://news.ycombinator.com/item?id=50074600</link><dc:creator>cb321</dc:creator><comments>https://news.ycombinator.com/item?id=50074600</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=50074600</guid></item><item><title><![CDATA[New comment by cb321 in "11 year old unsoundness bugs found in Rust borrow checker"]]></title><description><![CDATA[
<p>Yeah.  Other ecosystems are undeniably larger than Nim's.  I keep hearing about how LLMs are going to nullify that advantage with "not so sloppy" ports of anything to any PLang, but I've yet to see that pattern materialize.  "What is a clean interface" is probably a kind of subjective judgement call, but also very clearly depends on PLangs and even PLang <i>cultures</i>.  For example, the microdependency culture of Rust/JS/Node have <i>very</i> little to do with the PLang's themselves.<p>EDIT: With Cython how I mostly kept things organized was the "caller allocation" so common in C where memory was always managed the usual mostly refcounting way of CPython/NumPy, but I had dozens (maybe even 100) little "kernels" I could pass that memory into that could even use Intel/MSFT "intrinsic" asm calls (things like immintrin.h) or even just #include C code which did similar.  It didn't seem too bad to me, but Nim always seemed a more complete solution (at the PLang level - not counting ecosys). (And these days there is even NimPy (<a href="https://github.com/yglukhov/nimpy" rel="nofollow">https://github.com/yglukhov/nimpy</a>) to write low-level speed-up code for Python in Nim.)</p>
]]></description><pubDate>Tue, 13 Oct 2026 15:50:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=50073647</link><dc:creator>cb321</dc:creator><comments>https://news.ycombinator.com/item?id=50073647</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=50073647</guid></item><item><title><![CDATA[New comment by cb321 in "11 year old unsoundness bugs found in Rust borrow checker"]]></title><description><![CDATA[
<p>This is misinformation.  There is (at least!): `method`, procedurally typed fields (inside case-object variants or not), run-time keyed `Table` with proc values, {.dynlib.}, importc/importcpp things.  Beyond that, yes, Nim has rare compile-time superpowers that <i>do</i> lead many of its proponents to use static constructs (totally grant that!).  So, you may not see a lot of dynamic dispatch in code bases, but there is little stopping you from using them in your own code.</p>
]]></description><pubDate>Tue, 13 Oct 2026 15:46:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=50073582</link><dc:creator>cb321</dc:creator><comments>https://news.ycombinator.com/item?id=50073582</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=50073582</guid></item><item><title><![CDATA[New comment by cb321 in "11 year old unsoundness bugs found in Rust borrow checker"]]></title><description><![CDATA[
<p>Most things like "sanely" and "20%" are pretty subjective.  To me writing (or really reading well written) Nim (<a href="https://nim-lang.org" rel="nofollow">https://nim-lang.org</a>) is <i>less</i> effort than writing Python or Typescript.  Nim is mostly Ada & Lisp ideas packaged in a more terse & flexible surface syntax.  Nim also has nice compile-time introspection and very low effort macros to allow packaging near zero-code APIs like github.com/c-blake/cligen.  Also, something like 5 out of 5 times I've investigated some Rust alternative to some Nim code, the Rust ran more slowly than my Nim on my tested CPUs.<p>With access to inline asm, all speed is ultimately more a measure of effort applied than PLang.  So those perf ideas are just "with my level of effort".  Even Python via Cython has pretty direct access to asm.  The "do it in pure X" that Sun popularized (even in a meta-/cross-PLang-sense) as a business attempt to define Java virtual machines as <i>The</i> platform has had many casualties, not the least of which is the quality of discussion of PLang practicalities, not just on HN, but everywhere.</p>
]]></description><pubDate>Tue, 13 Oct 2026 15:14:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=50073013</link><dc:creator>cb321</dc:creator><comments>https://news.ycombinator.com/item?id=50073013</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=50073013</guid></item><item><title><![CDATA[New comment by cb321 in "Benchmark in Milliseconds"]]></title><description><![CDATA[
<p>This is basically the philosophy of <a href="https://github.com/c-blake/bu/blob/main/doc/tim.md" rel="nofollow">https://github.com/c-blake/bu/blob/main/doc/tim.md</a> , but it uses a somewhat fancier estimator of the minimum than the sample min of dt's (which in some sense is guaranteed to be "a little" high).<p>There are other benchmarking points in that document about measurement footguns that can arise from targeting a specific duration like the 200..400ms of TFA with an easy but careless problem scale-up (like the Ben Hoyt example of footnote 4).<p>With that tool, in user space with just CPU freq pinning, I routinely see CPU bound times that are stable to single digit microseconds month to month on the same machine and see 0.01% to 0.2% effects on 10ms scale activity (yes, 1..20 bps) and the reported uncertainty usually captures the variation all right, but the distribution is not really Gaussian/Normal and instead has more shape parameters and/or you would want a 95% CI or some such as mentioned elsethread here.</p>
]]></description><pubDate>Tue, 06 Oct 2026 21:45:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=49984566</link><dc:creator>cb321</dc:creator><comments>https://news.ycombinator.com/item?id=49984566</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49984566</guid></item><item><title><![CDATA[New comment by cb321 in "Bad benchmarks and evals: Senior SWE-Bench, napkin math, and winter tires"]]></title><description><![CDATA[
<p>You're welcome.<p>Another lesser known wrinkle along these lines is that if more of Aristarchus of Samos' work on heliocentricity had been developed into a "calculational framework" for planetary motion by a contemporaneous Ptolemy competitor (a la Copernicus in 1543), various relativity ideas might well have started in 270BC instead of 1600 AD.<p>Aristarchus was already <i>WAY</i> ahead of a few games - making a guess that "absolute rest" was illusory and tiny stars were similar to giant Sol.  If not for Archimedes' serious star power, we might not even know of Aristarchus' heliocentric ideas!  Relativity ideas of various kinds are short intellectual hops from "the absolute rest of your intuition is illusory".<p>Aristarchus and his supporters just had to assert The Stars were very distant -- far enough for there to be <i>NO PARALLAX</i>! Various "coincidences" all conspired to suppress Aristarchus' plausibility, like: A) Just <i>HOW DISTANT</i> stars are/local galactic stellar density &| B) poor human <i>VISUAL ACUITY</i> relative to C) Earth <i>ORBIT</i> vs. Sun <i>LUMINOSITY</i> (parallax baseline) & maybe existence of Moon to vent atmo &| D) <i>VERY SLOW</i> (3 millennium) development from near prehistoric glass (1500BC) to grinding lenses for human eyes in the 1300s AD leading to Galileo's telescopes & etc.  If <i>ANY</i> of (A)..(D) were about ~10x better (<i>ALL</i> of which are <i>imaginably</i> so), the day <i>that</i> universe changed could've been <i>much</i> earlier.  Heck, even if Aristarchus just had a really good spin doctor like a major religion pushing the plausibility of "Sun=A close Star", that might've been enough.<p>Archimedes almost invented the underlying ideas of integration and limits and all that, too.  Close but no cigar, but (had that been in hand) analytic geometry and differential equations are short steps away.  I mean, Newton surely noted the equivalence of gravitational and inertial "mass" (charge vs. kinematics) which is the weak principle of equivalence of GR, after all.  Like I said - "littered".  ;-)  There are probably whole books written on the topic (or adjacent topics) of "All the Things Humanity Nearly Figured Out Earlier" that have a more historical bent than the usual "sci-fi tilt".</p>
]]></description><pubDate>Mon, 14 Sep 2026 17:39:23 +0000</pubDate><link>https://news.ycombinator.com/item?id=49700826</link><dc:creator>cb321</dc:creator><comments>https://news.ycombinator.com/item?id=49700826</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49700826</guid></item><item><title><![CDATA[New comment by cb321 in "Bad benchmarks and evals: Senior SWE-Bench, napkin math, and winter tires"]]></title><description><![CDATA[
<p>Yeah.  My point was mostly to expand upon your original post - sorry if it sounded like I disagreed.  You say the same in your original "iteration of speculation and observation".  Everything else is about what "derive" and "knowledge" might mean (I agree "medieval" usually means pre-Renaissance and Galileo is modern-era), how much empirical "proof" is in "derive", etc.  However, all you need for "possible" is "the idea", some "consequences", and ways to test.<p>So, to push back a tad on your more recent "only thing that I am aware of" and to maybe explain my above point better, I do think there was enough information/ideas in the abstract in Galileo/Newton/Leibniz' times to suggest the idea.  Leibniz himself pushed back hard on Newton's absolute space/time (long before Mach).  For Leibniz, it would have been counterintuitive space/time vs. counterintuitive fixed speed.  So, that pushback itself could have been enough of a "clue" in your terms -- in some alternate timeline -- to drive a speculation-observation cycle starting from different inertial concepts - with Galilean moon eclipses then enough a clue that fast speeds existed to fool our slow-speed intuitions.  (And all this in the "modern era".)<p>So, I continue to think it "not impossible" that the relativity principle <i>could</i> have arisen before any EM theory at all -- it just <i>didn't</i>.  That matters for these kinds of speculative questions about what information horizons support what developments.  A single "fast enough" fixed speed is is not <i>that</i> wild & crazy.  The modern world has a zillion obscure physics theories like that (mostly just because so many more people work on that stuff, but that's a probability thing, not a possibility thing, and I suppose also partly inspired by how physics turned out - so not truly independent).  History is littered with things that could have happened, but didn't.<p>P.S.: and apologies for "mistakes a fundamental error". I of course meant "makes a", if you wanted any evidence that I was <i>not</i> an LLM. ;-)</p>
]]></description><pubDate>Mon, 14 Sep 2026 12:48:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=49695963</link><dc:creator>cb321</dc:creator><comments>https://news.ycombinator.com/item?id=49695963</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49695963</guid></item><item><title><![CDATA[New comment by cb321 in "Bad benchmarks and evals: Senior SWE-Bench, napkin math, and winter tires"]]></title><description><![CDATA[
<p>This is something of an aside on your first paragraph and lh712's.  The theory of special relativity (and field theory in general) can be "derived" (as done in e.g., Landau, Lifshitz _Classical Theory Of Fields_) without empirical observation using concepts known to Galileo/Newton (if they count as "Medieval") - just with different assumptions/ideas about inertial frames.  If you assume there is any phenomenon with a fixed observed speed in all "inertial frames" then you get special relativity with Einstein's gestalt-switch.  After that it is, like so much in physics, a matter of thinking of an experiment to distinguish what matches capital-N Nature best.<p>Thinking otherwise mistakes a fundamental error that the only way for something to happen is how it historically happened.  Reconciling observations <i>forced</i> relativity historically, but it could have been sussed out without those.  That there were very fast but finite speed phenomena (which could motivate relativity reducing to Newtonian models) was seen in 1676 by Rømer with the speed of light and eclipses of Io, a Galilean moon of Jupiter.  It probably <i>could</i> have been done with Galileo's telescopes in 1610.  (That is just one example of a phenomenon with a very fast yet finite speed to suggest other experiments to test that "hypothetical relativity".)<p>TBH, this all relates to teaching "physics without calculus" and that sort of thing.  Is the most clear presentation/derivation that which mirrors the history of our muddled yet ever demuddling ideas or that which starts from our most thoroughly demuddled ideas, best notations, etc.?  The momentum is certainly the historical approach, yet there are notable exceptions.</p>
]]></description><pubDate>Mon, 14 Sep 2026 10:39:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=49694704</link><dc:creator>cb321</dc:creator><comments>https://news.ycombinator.com/item?id=49694704</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49694704</guid></item><item><title><![CDATA[New comment by cb321 in "Bad benchmarks and evals: Senior SWE-Bench, napkin math, and winter tires"]]></title><description><![CDATA[
<p>Something Dan does not observe in his article (perhaps Jamie does elsewhere? edit: or even Dan elsewhere) is that the same problem which makes the memory latency benchmark unrealistic (or at least misleading) often impacts hash table lookup benchmarks as mentioned at <a href="https://github.com/c-blake/bu/blob/main/doc/memlat.md" rel="nofollow">https://github.com/c-blake/bu/blob/main/doc/memlat.md</a> and probably many other benchmarks.  Essentially, CPU work prediction/speculative execution has become so good that much care is often required to measure latency rather than reciprocal throughput.  This all started in the 1990s (or probably earlier with Cray), but I guess there's been an ongoing educational failure/oversimplification tendency.<p>Of course, throughput at one "level of work" is often latency at a higher level (like command-to-command execution, for example).  So, "what matters" might be throughput or "latency".  It all depends.  :-)  People often fiddle with such semantics to market methods, products, ideas, ... and marketing is often at cross purposes with understanding.</p>
]]></description><pubDate>Mon, 14 Sep 2026 10:05:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=49694423</link><dc:creator>cb321</dc:creator><comments>https://news.ycombinator.com/item?id=49694423</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49694423</guid></item><item><title><![CDATA[New comment by cb321 in "bzip3"]]></title><description><![CDATA[
<p>Agreed!  Relatedly: <a href="https://news.ycombinator.com/item?id=49599953">https://news.ycombinator.com/item?id=49599953</a></p>
]]></description><pubDate>Mon, 07 Sep 2026 16:47:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=49600308</link><dc:creator>cb321</dc:creator><comments>https://news.ycombinator.com/item?id=49600308</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49600308</guid></item><item><title><![CDATA[New comment by cb321 in "bzip3"]]></title><description><![CDATA[
<p>I just tried a tar file of a git clone of the linux kernel sources where the most recent commit is 72c395024dac5e215136cbff793455f065603b06 (early Feb of this year).  zstd -19 got a slightly smaller size (3582930348 bytes vs bz3 -b 511's 3597411687 bytes or 0.4% advantage to zstd).  More significantly 4-core zstd decompression was 2.05 seconds vs a whopping <i>297 seconds</i> for bzip3 -dj4 - 145x or over 2 orders of magnitude slower (about as much time to decode as to encode in the first place).  bzip3 1.5.3 compiled with gcc-16.1.0.  Granted, the .git objects are all compressed already and uncompressed tar-ball was only 5426667520 bytes, but even so...A lot of people care about fast(-ish) decompression.  Maybe I did something wrong?  Maybe `rm -rf .git` first would be a better benchmark?</p>
]]></description><pubDate>Mon, 07 Sep 2026 16:14:30 +0000</pubDate><link>https://news.ycombinator.com/item?id=49599953</link><dc:creator>cb321</dc:creator><comments>https://news.ycombinator.com/item?id=49599953</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49599953</guid></item><item><title><![CDATA[New comment by cb321 in "Oceans hit highest temperature on record"]]></title><description><![CDATA[
<p>The "scatter line plot" in TFA is all same shade of red on white with no year labels.  This seems like a missed visualization opportunity.  Using some kind of color scheme/gradient to represent the 1979-2026 years in a way that can show long-term "trend".  (A 50 frame movie at, say, 5 fps with same axes or maybe "all years" as faded background as the current year pops around in bold is another possibility, but a scientific paper format doesn't let people do .mp4s.)  I know I've seen multi-colored "scatter lines" in IPCC reports.  Seemed worth asking rather than doing it myself.</p>
]]></description><pubDate>Mon, 24 Aug 2026 20:47:55 +0000</pubDate><link>https://news.ycombinator.com/item?id=49425625</link><dc:creator>cb321</dc:creator><comments>https://news.ycombinator.com/item?id=49425625</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49425625</guid></item><item><title><![CDATA[New comment by cb321 in "Finger: the 1971 social network that never died"]]></title><description><![CDATA[
<p>Don't forget head, tail, mount, strip, touch, etc.<p>My GF when I was first learning these names was convinced the Unix principals did all this quite deliberately and "finger" was her headliner argument.  Evidently, even in 1971 someone complained: <a href="https://blog.robertelder.org/intro-to-pinky-command/" rel="nofollow">https://blog.robertelder.org/intro-to-pinky-command/</a> (relevant to that source, Usenet/Net News/mailing lists may be another social network which never <i>exactly</i> died and even today LKML, zsh-workers, etc. are main communication avenues).</p>
]]></description><pubDate>Tue, 18 Aug 2026 12:00:11 +0000</pubDate><link>https://news.ycombinator.com/item?id=49344399</link><dc:creator>cb321</dc:creator><comments>https://news.ycombinator.com/item?id=49344399</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49344399</guid></item><item><title><![CDATA[New comment by cb321 in "Mojo 1.0"]]></title><description><![CDATA[
<p>I only said anything at all because the implication was not "missing minor nits about whatever your favorite proxy for 'will rely' is" but rather "nothing at all".  FWIW, the keyword was "index" and the result was adix, and I only meant the package system & "a" directory were discoverable.  Exact keyword search systems indeed make discovery harder, but that is some whole other complaint.  There are always many complaints.<p>There are a million ways to define both "top 10 language" and "weak std lib", but the C stdlib is not great and C++'s was bad enough to spawn Boost.  And I'm sure many firms all but say "do not use" parts of many top10 stdlibs.  In any event, we don't disagree that Nim's stdlib being stronger would be better or that poor delegation or unconsolidated discussion are problems.  We disagree on very little, including I'm sure that there is more to a PLang than its stdlib.<p>What is present/missing in any stdlib (or really in almost anything period) is also often much more subtle and subjective than simple sales pitches one hears.  To be concrete, there are "useful" (to <i>someone</i>) things in the Nim stdlib not in either Python's or Go's like std/critbits, std/pegs, ropes, packedsets, intsets, editdistance, etc. Nim stdlib substring search behind "xyz".find() is layered to let you, if you want, pre-build a `SkipTable` (the way regex engines let you pre-"compile" regexes).  Subtle in diversity of both kind and granularity and subjective as in "<i>who</i> cares?"<p>Yes, all that and more is all available in all the ecosystems of anything "popular", but that brings you back to "trust proxies", like "prerelease" numbers, a <i>very</i> weak one, IMO. E.g., I have never used a neovim with a version >0.13, but it's been a trooper; one man's 0.7 is another's 7.0. <i>TRUST IS TRICKY!</i>  A count of distinct reliers for some values of "distinct" and "rely" or various update patterns would be better (have their own issues, of course, but at least measures "company" as in "what misery loves", LOL).</p>
]]></description><pubDate>Thu, 13 Aug 2026 16:13:05 +0000</pubDate><link>https://news.ycombinator.com/item?id=49288142</link><dc:creator>cb321</dc:creator><comments>https://news.ycombinator.com/item?id=49288142</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49288142</guid></item><item><title><![CDATA[New comment by cb321 in "Mojo 1.0"]]></title><description><![CDATA[
<p>I don't know what @winding means, exactly, but at best this seems highly misleading.  Nim had babel packages by around 2010 (when it was called Nimrod and there was a Tower of Babel name scheme) and then nimble packages since 2014 or so.  Also, literally 30 seconds on <a href="https://nim-lang.org" rel="nofollow">https://nim-lang.org</a> (click on Documentation) and you get to <a href="https://nimble.directory/" rel="nofollow">https://nimble.directory/</a> , search for index and get to adix which has all sorts of efficient Table variants.<p>There has never been much prog.lang. benefit from being "in the stdlib/core" in Nim (unlike Python or Go, say).  The benefit is more "software distribution" for the dependency allergic, but the Nim culture is much less micro-deps than seems in vogue lately.  All that said, I think having a more batteries core distribution is valuable - just less than you might guess - and practically that needs delegation.</p>
]]></description><pubDate>Wed, 12 Aug 2026 21:08:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=49278585</link><dc:creator>cb321</dc:creator><comments>https://news.ycombinator.com/item?id=49278585</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49278585</guid></item><item><title><![CDATA[New comment by cb321 in "Decoding the obfuscated bash script on a Uniqlo t-shirt"]]></title><description><![CDATA[
<p>There is a python3 variant in this thread [1], but if that is not "standard enough" (as someone else may have mentioned bash itself is not POSIX), this awk would also work { Warning - this awk is 1000s of times faster than the bash. So, you really probably want that sleep { and sure 100s of times faster yet may be possible. } }:<p><pre><code>    #!/usr/bin/awk -f
    BEGIN {
      # Split on spaces so multi-byte utf8 works
      nText  = split("♥ P E A C E ♥ F O R ♥ A L L", tmp, " ")
      for (i = 0; i < nText; i++) text[i] = tmp[i + 1]
      color0 = 12; color1 = 208  # xterm-256 color cube range
      nColor = color1 - color0   # Could be a pretty gradient
      w = ENVIRON["COLUMNS"]; if (w == "") w = 80
      h = ENVIRON["LINES"];   if (h == "") h = 24
      freq = 0.2
      for (t = 0; 1; t++) {
        x     = int(w/2 + w/4*sin(t*freq) + 0.5)  # x pos ~ sine
        color = color0 + int((nColor*t)/h)%nColor # cycle colors
        ch    = text[t % nText]                   # cycle chars
        printf("%*s\033[38;5;%dm%s\033[m\n", x, "", color, ch)
        fflush()
      # system("sleep 0.1") # awk has no builtin sleep
      }
    }
</code></pre>
As to "bug reports", the T-shirt published script also fails with LC_ALL=C for me as mentioned else-thread.<p>FWIW, I think ancient practice to reach for `bc` instead of `awk` or even the arithmetic built into shells often annoys.  The only reason I keep `bc` installed at all is to compile Linux kernels.  Someone had some patch set to Linux to eliminate this very dependency many years ago now.<p>[1] <a href="https://news.ycombinator.com/item?id=48830669">https://news.ycombinator.com/item?id=48830669</a></p>
]]></description><pubDate>Wed, 08 Jul 2026 21:58:39 +0000</pubDate><link>https://news.ycombinator.com/item?id=48837951</link><dc:creator>cb321</dc:creator><comments>https://news.ycombinator.com/item?id=48837951</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48837951</guid></item><item><title><![CDATA[New comment by cb321 in "Decoding the obfuscated bash script on a Uniqlo t-shirt"]]></title><description><![CDATA[
<p>That Matrix visual was actually specifically mentioned as an inspiration in the video by the designer being linked to/discussed elsethread (e.g. <a href="https://news.ycombinator.com/item?id=48830326">https://news.ycombinator.com/item?id=48830326</a> )</p>
]]></description><pubDate>Wed, 08 Jul 2026 13:59:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=48832079</link><dc:creator>cb321</dc:creator><comments>https://news.ycombinator.com/item?id=48832079</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48832079</guid></item><item><title><![CDATA[New comment by cb321 in "Decoding the obfuscated bash script on a Uniqlo t-shirt"]]></title><description><![CDATA[
<p>FWIW, his screens looked a lot like OSX to me (which tracks with graphic design users in my experience).<p>Anyway, he seems like a very nice fellow and I wish him and almost all T-shirt designers well.  That bash script just gave me a lot of pause.  (And even that seems possibly downstream of him being nice and doing it himself to spare his team from what he called a "FrankenProject".)</p>
]]></description><pubDate>Wed, 08 Jul 2026 13:48:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=48831951</link><dc:creator>cb321</dc:creator><comments>https://news.ycombinator.com/item?id=48831951</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48831951</guid></item><item><title><![CDATA[New comment by cb321 in "Decoding the obfuscated bash script on a Uniqlo t-shirt"]]></title><description><![CDATA[
<p>Yeah.  The Flask web-page prototype was indeed in Python.  (The prequel shirt was Go.)<p>{ Also, it was my own Py version which I mostly did in case anyone wanted to actually run the thing after such interest was expressed on this thread. :-) }<p>I already said regular devs and LLMs can both gen copy-pasta.  That said, being "mostly" a Python dev, asking some LLM to translate to bash for him seems even more likely to me.  Only he or those close to him knows for sure.  You & I cannot settle it here conclusively (as also said).<p>I also noted from the video that the ♥s (hearts) worked on whatever version of bash he tested with though it failed for me (which is why I wrote that Python).  And his terminal title bar is switching between `tput` and `bc` and such meaning that what he was demoing was not some Python script. ¯\_(ツ)_/¯<p>EDIT: Ah..another resolution of the hearts is to <i>not</i> run in an LC_ALL=C environment.  Oops!  `LC_ALL=en_US.UTF-8 bash ..` fixed it.  Oh well, I think the Python script is nicer in almost every way.  E.g., you could |head -n60 and send it to a line printer/dot matrix reminiscent of the 1980s computers he shows in the video, although your printer driver would have to strip the color escapes with a `sed` or maybe <a href="https://github.com/c-blake/bu/blob/main/noc.nim" rel="nofollow">https://github.com/c-blake/bu/blob/main/noc.nim</a>. ;-)</p>
]]></description><pubDate>Wed, 08 Jul 2026 13:37:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=48831809</link><dc:creator>cb321</dc:creator><comments>https://news.ycombinator.com/item?id=48831809</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48831809</guid></item><item><title><![CDATA[New comment by cb321 in "Decoding the obfuscated bash script on a Uniqlo t-shirt"]]></title><description><![CDATA[
<p>For anyone that cares, this is a slightly less stupid Python version:<p><pre><code>    #!/usr/bin/env python3
    from os   import environ; E = environ.get
    from math import sin
    from time import sleep
    text = "♥PEACE♥FOR♥ALL" # The text to sine-scroll animate
    nText  = len(text)      # Number of utf8 chars
    freq   = 0.2            # Frequency scaling factor
    color0 = 12             # xt256 Color cube segment 12..<208
    color1 = 208; nColor = color1 - color0
    (w, h) = (int(E("COLUMNS", 80)), int(E("LINES", 24)))
    t = 0
    while True:
        x = (w/2) + (w/4)*sin(t*freq)           # x pos via sine value
        x = max(0, min(w - 1, int(x + 0.5)))    # bound to tty width
        color = color0 + ((nColor*t)//h)%nColor # cycle colors
        ch = text[t%nText]  # Get char & Use xterm-256 color escs
        print("%*s\033[38;5;%sm%s\033[m\n" % (x, "", color, ch))
        t += 1
        sleep(0.1)   # original used bc shell outs to rate-limit
</code></pre>
As mentioned in <a href="https://news.ycombinator.com/item?id=48830634">https://news.ycombinator.com/item?id=48830634</a> , the heart symbols did not otherwise even work for my bash and some have commented on liking the screen saver.</p>
]]></description><pubDate>Wed, 08 Jul 2026 11:45:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=48830669</link><dc:creator>cb321</dc:creator><comments>https://news.ycombinator.com/item?id=48830669</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48830669</guid></item></channel></rss>