HackerTrans
TopNewTrendsCommentsPastAskShowJobs

xelxebar

2,944 karmajoined 11 anni fa
Contact info:

    Email local-part: boexahgahk
    Email domain: wilsonb.com

Submissions

Ridiculously Huge Numbers [video]

youtube.com
1 points·by xelxebar·6 mesi fa·1 comments

comments

xelxebar
·3 giorni fa·discuss
Would love to talk. I sent an email to the maybe-address string in you profile, but it bounced.
xelxebar
·3 giorni fa·discuss
In my stress tests, I've not seen any issues with overheating. My 10G ONU connects to the router over an ethernet cable, and the SFP+ module that plugs into does get quite warm, though not hot enough to be uncomfortable.
xelxebar
·3 giorni fa·discuss
Turris doesn't sell directly, AFAICT. The product page has links to distributors under the Order Now heading. They're selling for 500 EUR or so.
xelxebar
·4 giorni fa·discuss
Apparently, WiFi is spotty on OPNsense. I did start looking into home grown options, but WiFi 7 with 10Gbit ethernet is no joke. Most hardware ends up being power-hungry and noisy.

The Omnia NG is fanless, meaning quiet and power-efficient. It's also small and relatively stylish. The small hardware LCD is very handy, and everything Just Works. The whole package is just so well put together.
xelxebar
·4 giorni fa·discuss
You can run vanilla if you want. Their Turris OS is just a custom distro with some added userspace niceties. One of the coolest is a snapshot system that reduces "unbricking" the device to just a menu click at bootup.

There are even people who have gotten NixOS running on it, apparently.
xelxebar
·4 giorni fa·discuss
Why 7 (802.11be) when the bandwidth isn't really used? Genuine question. The GL-BE9300 mentioned here clocks in well within WiFi 5 range even.

I've got 10Gbps fiber at home (egregious, I know), and the only OpenWRT router I found that can saturate it is the Turris Omnia NG[0]. The price tag is a notch up from others but it's legitimately one of the best pieces of hardware I've ever owned. A perf3 test against an in-town server was able to pull 800 Megabytes per second; the router is no joke.

If you have a thick line to your ISP, I highly recommend!

[0]:https://www.turris.com/en/products/omnia-NG/
xelxebar
·8 giorni fa·discuss
This is about software developers.
xelxebar
·11 giorni fa·discuss
Love the title.

I believe the authors are riffing off the wonderful 1970 Counterexamples in Topology[0] book. There's a minor tradition of this among the cognoscenti. The topology book is an absolute gem and very approachable if you have working familiarity with the fundamentals.

[0]:https://en.wikipedia.org/wiki/Counterexamples_in_Topology
xelxebar
·13 giorni fa·discuss
Bash is HN's little punching bag language for some reason. Every post about shell programming or project thereof sees a hoard of comments denouncing the language in vage, unspecific terms, "if you need to write more than $N lines of sh, you should use a REAL language".

I'm truly mystified as to why we're doing this. True, shell programming has footguns, but they're not egregiously numerous compared to the typical suggestioned replacements.

Funnily enough, when the issues with these other languages are brought up—like arbitrary code execution on module import—instead of shallow comments, we often cue an informative and interesting discussion.

Why do we HNers treat the shell language so differently?

One of my working hypotheses is that it's due to shell being both ubiquitous and unfamiliar. Everyone uses it but earnest study is rare. That perhaps make it an easy stress sink for our various sublimated frustrations.

I'm an unabashed (heh) fan of shell programming. It really is a beautiful little language once you learn how to think in terms of data streams, dynamic scope, and DSL design.
xelxebar
·18 giorni fa·discuss
Just noticed this, but intriguingly, Catalan numbers are (2n C n)/(n+1), which hints at a connection with trees.

Off the cuff, notice that the diagonal has n+1 intersection points, and a path that never passes through the diagonal gives a forest via the isomorphism with ballot sequences [0]. Any sequence that does pass below the diagonal can be "rotated" into one that doesn't, and so there are probably n+1 paths in each "path class" on average.

Conversely, this would suggest that all paths contained in just one upper or lower triangle of the square can be counted by the Catalan numbers. Indeed, a 2x2 square has just 2 such paths and (2n C n)/(n+1) = 6/3 = 2.

[0]:https://blog.wilsonb.com/posts/2026-02-27-easy-random-trees....
xelxebar
·19 giorni fa·discuss
> I wonder if we should really just call them... vectors?

Maybe. I think the term is just unfamiliar. The word "vector" is equally unhelpful when you first encounter it, but the concept has enough mindshare that we just acclimate.

Apparently, "vector" in the mathematical sense was coined by Hamilton in the mid 1800s, so around the same time as "torsor". It means something like "courier" which is sensible in Euclidean space but kind of divorced from the algebraic definition. You can still see the "carry along" roots if you squint, but I think the same is mostly true of "torsor", too.

In other words, instead of renaming things, maybe we should just evangelize more? Maybe the quintessential example should be radial directions just to hint at the historical terminology use?
xelxebar
·19 giorni fa·discuss
Words happen more than they are chosen, cf. "computer". The term "torsor" in this sense likely comes from the French "torseur" [0], which was used to describe rigid-body motions via a fundamental screw-like action.

The hypothesis seems to be that the idea of affine spaces came out of that theory, for whatever reason, which was subsequently generalized to principle bundles and finally into what we have now. The point is that, at every step along the way, we want to connect the incrementally new ideas to existing ones, and creating a hard break with new, idiosyncratic terminology is itself obfuscatory.

My beef is more with use of the heavily-overloaded words "regular" and "normal" in math, which just seems like lazy naming:

> In the normal extension K/Q, every normal subgroup of the regular representation acts on a normal scheme that is regular in codimension one, whose normal bundle — orthonormal to the regular surface at each regular value — carries a normal operator whose spectrum follows a normal distribution over a space that is at once regular and normal, all indexed by a regular cardinal.

That's like 8 different meanings of normal and 6 different meanings of regular. lol

[0]:https://fr.wikipedia.org/wiki/Torseur
xelxebar
·19 giorni fa·discuss
Thanks for the article. I do think your more elementary approach is good pedagogy since the subject is so broadly familiar already. I just like torsors, since they elegantly encode the "arbitrary choice" needed to deal with lots of objects.

Thanks for the writeup!
xelxebar
·20 giorni fa·discuss
The baseless log here is just a torsor [0]!

Lots of things are torsors: position, currency values, calendar dates etc. the vales themselves are arbitrary, and translating/scaling them by some value doesn't make a functional difference. Torsors let us talk about these things without needing to make such an arbitrary choice a priori.

In the case of baseless logs, the underlying set is "information units", i.e. log 2 is bits, log e is nats, log 10 is digits, etc. The conversion factors give us the torsor's group, and picking a privileged unit is just a trivialization of the torsor.

The vector division notation is, similarly, encoding a g-torsor in precisely the same way as length units are.

The examples so far are all torsors with abelian groups, but specifying position both requires choosing an origin and a length unit. The group of this torsor is a suitable semidirect product between translation and scaling, which gives a non-abelian group.

Most of the time we just implicitly choose a trivialization, which often causes confusion because it identifies objects with operations on them, e.g. conflating vectors as positions with vectors as translations. The author's treatise on problems with geometric algebra [1] even brings up this point!

[0]:https://math.ucr.edu/home/baez/torsors.html

[1]:https://alexkritchevsky.com/2024/02/28/geometric-algebra.htm...
xelxebar
·29 giorni fa·discuss
This could possibly be hinting at a hyperbolic geometry. The game HyperRogue[0] gives of similar feels: you'll be walking through a cat invite land and spot a small dot on the horizon, only to discover that it's yet another vast infinite land. The game also kind of goes all in on the different tilings that a hyperbolic plane admits!

[0]:https://zenorogue.itch.io/hyperrogue
xelxebar
·mese scorso·discuss
> I've spent the last decade in erlang / elixir / OTP.

Do you have a blog? I would love a peek into your unique experience.
xelxebar
·2 mesi fa·discuss
Eep. You're right. Evidently, I didn't even know what a sieve was in this context and wrote a search instead. You got me to do a bit of research. Actually, this discussion is exactly where I think APL shows one of it's strengths. It feels like a human communication tool more than any other PL I've mucked about with. The hard parts here are not language issues but fundamental understanding ones.

It's a tad tricky to carefully analyze the asymptotics of my above prime generator, since the search space of Without (~) shrinks on each iteration. I think Merten's theorem gives an estimate of e^-γ/log(p_i), which we need to sum for all primes up to N. Taking prime density 1/log(n) and integrating N/(log x)^2 over our range is O(N^2/log N), I think.

> Mutating a bit array in place is pretty important to classical sieve performance.

Challenge accepted:

    p⊣{x[⍵+n×⍳⌊N÷n←p⍪←x[⍵]]←0 ⋄ 1+⍣{(x⍪1)[⍵+1]≠0}⊢⍵}⍣{⍵=N-2}0⊣x p←(1↓1+⍳N)⍬
We just directly set roughly N/p items to 0 on each iteration—proper sieve semantics—which should give O(N log log N), unless I'm missing something.
xelxebar
·2 mesi fa·discuss
> At some point you get what APL is all about, and you can move on with life without too many regrets.

Unfortunately, this seems to be a common experience. A lot of smart people only engage with APL via toy puzzles, like you did, and bounce off because that gives no insight about how to use the language in real life. IME, to really start getting APL you need to write and rewrite a full application 20 times.

It helps to read code from the masters, too [0, 1, 2, 3, 4]. These all approach architecture in different ways: pedagogical FP style, OOP heavy, data-oriented design, event-driven state-machine, or a mix of the above.

[0]:https://dfns.dyalog.com/

[1]:https://github.com/Co-dfns/MicroUI-APL

[2]:https://github.com/Dyalog/ewc

[3]:https://github.com/Co-dfns/Co-dfns

[4]:https://github.com/Dyalog/Jarvis/blob/master/Source/Jarvis.d...

> As you can see, the famous prime generator is not even the Eratostenes' sieve, but a simple N^2 divisor counting computation.

Well, that's because you wrote a divisor function, not a seive. Arguably, the ease of typing an outer product (i.e ∘.|⍨⍳N) can tempt us into writing quadratic algorithms unnecessarily, but this is just an experience issue, IMO.

If we want a seive, we can just write one directly:

    p⊣{ω~n×1+⍳⌊N÷p⍪←n←ω↑⍨1⌊≢ω}⍣≡1↓1+⍳N⊣p←⍬
The algorithm is O(N log log N) as expected of a naive Eratosthenes implementation. You'll need ⎕IO←0 if you want to try it out.

There's also a faster seive by Roger Hui [0] in the dfns workspace as well as a family of prime number functions [1] for things more than just prime generation.

[0]:https://dfns.dyalog.com/n_sieve.htm

[1]:https://dfns.dyalog.com/n_pco.htm
xelxebar
·2 mesi fa·discuss
> Pretty much write-only

I've written and worked on real-world APL applications, and this doesn't fit my experience. APL allows writing some of the most readable code out there, specifically because it makes whole-application architecture imminently more visible.

I like APL because it keeps me from bike-shedding on boilerplate or ceremony and forces me to consistently think about fundamental issues in the problem domain.

That said, APL by beginners (including myself, years ago) can be pretty terrible and effectively write-only. The steep learning curve is very real, and learning to write good APL is synonymous with learning good application architecture and UX.
xelxebar
·2 mesi fa·discuss
> So if I understand this right K is one of the more popular/recommended APL-derivatives nowadays.

Only APL and K see real industry use. Both are actively developed. K is really a family of mutually incompatible languages, called K3, K4, K5, etc. Financial applications and most of the development is on K4, as far as I understand.

> Which APL derivatives (with an active/healthy userbase) besides k would you recommend to take a closer look at?

But why not APL? Dyalog has a team actively working on their interpreter, and industry has mostly converged around Dyalog APL now. If you want something well-worn through real-world use, then it's basically the only choice, unless you have money to drop on K4 or Shakti. Also, the literature is dominated by APL.

If you're more interested in array languages for their mathematical appeal and for tinkering on puzzle problems, then BQN will probably suit your tastes. If you don't like the symbols and want something open-source, then J is a strong option. If you wonder what kind of baby APL and Forth would have, then Uiua is just for you.

Note that while J and BQN can be considered APL variants, K is somewhat of a separate beast.

Have fun!