Hacker Newsnew | past | comments | ask | show | jobs | submit | mratsim's commentslogin


"What programming computers is really like."

EDIT: Although perhaps it's even more important when dealing with humans and contracts. Someone could deliberately interpret the words in a way that's to their advantage.


Years ago I started a collection of convolution optimization resources: https://github.com/mratsim/laser/wiki/Convolution-optimisati...

Also checked and apparently Nvidia Cutlass now supports generic convolutions: https://github.com/NVIDIA/cutlass


The Internet Engineering Task Force, which in particular standardizes TLS, has acknowledge my contributions for my contributions to the very generic and globally useful hashing-to-curve primitive: https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-hash-t...

And BLS signatures are standards as well: https://www.ietf.org/archive/id/draft-irtf-cfrg-bls-signatur...


BLS signatures are general purpose, the only Ethereum specific thing is choosing which elliptic curves are used for public keys and which for signatures as well as a prefix before hashing inputs.

Similarly KZG polynomial commitments are generic, the Ethereum specific thing is the trusted setup ceremony which needs to be specialized per protocol.

The finite field backends and the elliptic curves supported are all generic as well: https://github.com/mratsim/constantine/blob/master/constanti...


Great question, first of all I did extensive research https://github.com/mratsim/constantine/wiki/Constant-time-ar....

Then the library defines its own types SecretBool and SecretWord throughough library that cannot be mixed with regular Nim types and are based on uint32/uint64 so the compiler cannot assume 0/1 and do boolean logic.

Assembly is used to avoid compilers getting too smart and reintroducing branches but the no-assembly fallback should still compile without branches.

By convention, all variable-time cryptographic functions are suffixed _vartime.

There is a plan to add automated constant-time checks as well https://github.com/mratsim/constantine/issues/7.


Author here, adding an accompanying post focused on performance: https://ethresear.ch/t/releasing-constantine-v0-1-0-a-modula...


Reminded me of Bastiat's candlestick maker's petition:

http://bastiat.org/en/petition.html


Why is it different?

People don't have to comply to GDPR but if they want to serve EU folks then they don't have a choice.


The EU claims their law applies globally regardless of if people set foot in or do business in the EU. According to the EU, an EU citizen just needs to visit a site and the law applies, regardless of where the site is hosted.

According to the EU, the GDPR applies to some small shop owner in China with a website that harvests all data it can that isn't advertising in the EU, courting EU citizens in any way, has no business with the EU, etc.


Once privacy is considered as a fundamental human right, everything makes sense. When an EU citizen visit a site and the site collects their data in an unbounded way, their privacy is violated and any goverment should be responsible of protecting its citizen.

In my point of view, this is a difference of how much we define privacy as human right and what data are considered private.


> Once privacy is considered as a fundamental human right, everything makes sense.

Does it? I agree it should be, and I want to work towards a better world also, but pretending you have jurisdiction when you clearly do not, doesn't seem helpful in any way.


I suppose it will be treated as other international jurisprudence. However it is indeed not practical for individuals.


According to the US, an US citizen just have to open a bank account anywhere in the world and the law applies, regardless of where the bank is hosted.


Author here,

Nim supports variadic generic, it's an arbitrary limitation so that shape and stride small vectors that describe a tebsor can be stack-allocated and fit in a cacheline.

Also at the time, Nim default heap allocator was not compatible with OpenMP.

Edit: it can be configured via a compile-time flag to 8 or 10 or anything: https://github.com/mratsim/Arraymancer/blob/master/src%2Farr...


6 dimensions is sufficient for a dataset of 3d hyperspectral video (batch, time, x, y, z, channels). I think it wil cover the vast majority of usecases :D


That was my reasoning for this "restriction".


I've never worked with a project with more than 7 dimensions, yet


What would be the 7 dimensions?


They always take two months at the very minimum as well because buyers as to go to many banks or a loan broker. You have notaries involved and right to step away from a sale, no question asked for 10 days iirc.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: