Colin is talking about criticising implementation decisions in software, in particular unconstructive criticism bereft of context.
Colin is criticising your idea, but is also trying to understand how you formed that idea in the first place, in an effort to hedge against the possibility it has good reasons he can't see. He's not just saying, "your idea is garbage".
This comment was flagged dead, and I have vouched for it. Please don't downvote it ... it clearly shows an underlying misunderstanding, and as such deserves to be answered.
My comment that you reference was an attempt to find the merit in the idea that I couldn't see, but I assumed would be there because I was assuming the proposer thought it was a good one. I was starting from a position of "Well, this person thinks it's a good idea, but I can't see why, so let's see if we can find how it would work, and what problems it solves. Then we can address any potential drawbacks."
It was intended to be an invitation to get some discussion about how it would work, what it would do, what problems it would solve, and where the value lay. I was surprised and disappointed that no reply was forthcoming, and the thread died.
I guess I just wasn't clear enough, and for that I am saddened.
I liked the reply you posted, I'd be happy for getting such feedback / replies. And I think your reply can be edited a little bit, to start in a little bit more positive tone,
by changing from this:
> There are many, many problems with the idea, ...
Nope. I think it's better to start with, This is interesting. then the questions. if you really see problems, state them. lead with engagement not criticism.
October is a massive holiday month for China. 10 1 is National Day, Mid-Autumn festival is around that time, and Golden Week is as well. This should not be surprising that work shut down. Lots of people take a break then.
That's not actually right. An async function will always return a promise, so if you return a promise directly it's indeed pretty much the same as if you return a promise that waits on that promise; it's the calling function that actually awaits on the returned promise.
The main difference would be error handling: if you have a catch block that returns a different value, returning the promise directly would actually throw in the calling function, whereas if you "return await", it's going to get caught in your catch block, resolving the promise to your own custom value.
The italis section is just a thing I add to comments sometimes: a few sentences that loosely relate to the thing I am talking about. It can be a quote, an imagined dialog, a flippant comment, ... other examples are at [0][1].
I was annoyed.
I'm physicist and computer projects have the annoying custom of picking names from physics, engineering or what else. Other people also come up with their own names, why should not computer tech people also do this?
Atom editor, Electron framework, Neutrino.js, Crankshaft, ...
Thanks for the explanation. I think the italis is cool and fresh.
hmmm, really interesting how you feel about the names. It sounds like that is super annoying.
I never thought about how naming would affect people invested in the names like this.
I don't think I need to defend it, so I'm not trying to here, just sharing that for me, beamsplitter sounds like such a cool word, as if a beam were a physical thing like a rock that could be split. Also something solid in itself, and connotes advanced, possibly war, tech. lasers. I'll going for that connotation. hash functions are usually very pathetically named.
also there's more to this name in this project because my initial design imagined the "beam" of the input, ricocheting around a network of s-boxes getting mixed. It seemed to me like the perfect hash, aesthetically and efficiently, and universal. but to my disappointment, I couldn't get a pure, s-box only design to work. I had to include some "traditional mixing function hacks" like multiplication, rotation and xor. But I wanted to keep the name because it was aspirational.
I can imagine that it must feel like all these annoying computer software people taking all these names that are not from their area, but from your area, and not leaving anything good for the rest. And when they have such high profile already! Like nobody will listen to the poor physicists, especially once all their names are taken, and then it will be more lonely. A nameless space, with nothing left. Sounds pretty sad.
Funny is for me, it seems physics stands above software, so using such names is a way to increase perceived value. But from your view, software has the higher profile.
Let me apologize for my complaints. It didn't occur to me that these names might be used out of admiration for a field.
I've also have to admit that physics needs relatively few new names in general which would make picking one a lot easier. There are also naming patterns as well, e.g. for superpartners (new articles in supersymmetry are either prefixed with S- or suffixed with -ion [0] in a predictable way).
That was cool to read your reply. actually looking back over my code, I see my achievement was better than I thought. I only used addition, and rotation. no mult, nor xor.
technically tho rotation can be thought of as including multiplication and xor. but also not. so I don't know.
that's a good idea. if you want to post some code turning some historical nist randomness beacon data into 1024 64-bit integers, then test it and run it against smasher using the included utilities script (to run tests in parallel) I'm happy to include the results in the readme.
this was not meant to create some mystery around the included s-box, though I get that it does do that.
the funny thing is the very fears that are being promoted about this are in a way, sort of exactly the weaknesses that this parameterisible family of hash function was designed to secure against.
I mean people are afraid that there's somehow malevolent design floor but that could be true in any hash function with this you can use the structure to create your own hash function but bringing your nest box which to me at least greatly reduces the idear that there's some sort of exploit that could be persisting.
anyway, that unintended mystery is not bad at all in I'm my opinion. it's fun to watch people suspect byes I got from random.
it's also flattering because I think the skill required to create some sort of crazy exploitable sbox is way above me and way above the level of skill required to create a very good hash function.
people thinking that was my plan, hear this, it does not sound like a very smart plan to spend all that effort creating one amazing exploitable sbox that looks random but then at the same time say and even encourage people to use their own sbox.
I don't feel the suspicion of the sbox being bad actually requires any defense of it, because it seems just ridiculous to me, but I do think it's interesting to point out, like, that sort of a plan suspected doesn't really make sense.
I'm not saying the people who have such suspicions are ridiculous at all. they just haven't thought it through, I think and I understand the instinct to paranoia especially directed at works in this space. I think it's a fairly appropriate instinct. you just need to think things through.
the point was by using an s-box, you can bring your own s-box, to allay (or I guess create) such fears about exploitable designs, and create your own hash function.
some thoughts about how to do that I invite in the readme. I'm not prescribing rules. pick your own, pick whatever you like. The point is you can make your own hash function that will probably be a good hash function. I definitely think you should test it with smasher, or whatever, to make sure it doesn't have any kind of flaws. I'm fairly convinced, after testing a few random boxes, you'll be highly likely to make your own good hashes with this.
I think the really cool thing is to consider whether there exists a clever classical algorithm that uses some sort of anealing approach and some clever hacks based on the structure of integer multiplication to solve the multiplication table in sub exponential time. I like the approach in the paper of moving from binary to blocks, to try to create subproblems.
Since 2012, I've wondered whether creating equivalences between tables in different radices, or using some of the statistics such that any choice of a factor radix unit, limits the possible values of the intermediate products adjacent to it, or that a delta of change in any of the intermediate products would produce a cascade of changes along its intersecting row column, and other things like that, to break the symmetry and kind of hack out a little bit more information.
https://news.ycombinator.com/item?id=23125032
This is good