Examples at: two-js/.
Feels good. Maybe not ultra featured, and could have more simple examples in docs, but still good.
One of the main features of Two.js appears to be the fact that it can natively render to either SVG and canvas, rather than creating SVG through DOM hacks as done by other projects.
This is one of those idealistic W3C specifications with super messy implementations all over.
On 2024-03-18, Ciro Santilli received an anonymous 1000 Monero donation (worth ~126k USD at the time) to his self-custody wallet, which pushed him over his public plea for 100k USD goal to quit his job for one year.
The transaction ID was
5c6af4df39021f3a4a053ef169c9b397e6d6bf6c7e557d3f08e4e1675d7d3eed
to self hist custody wallet with address 47kzoCeRMTohJhADejtsGmGimvQKzNsuST7u2aVhAD1VX5WDbh3v1FPUoJoTK3NTJVUgAM3dWCqC4Tmp9KSQaJi6GGYWgYn
. This is a roof generated by his Monero wallet: InProofV2AVFBmFhofH4GoG5NsaDutkdNWRTaEhuFgHpHTkpprRmuZ54B8FdUwFp71gqfp2jJpDUrhB3GCzZ2p8CNbh2TW1Z88ShmYWEwtkZFLccEMw9PhH3vWcMVo9mKaRsH3WgJXqq9
.Since this donation is so huge, it deserves some comments and a bit of a retrospective. The path to this donation has been an interactive one, and it is described below.
After starting the OurBigBook Project, Ciro started the sponsor Ciro Santilli's work on OurBigBook.com page on cirosantilli.com and setup some donation methods to help support the project, and possibly try to capitalize a bit on Ciro Santilli's Stack Overflow contributions.
His sponsors are absolutely crazy amazing people, but Ciro simply could attract a large enough amount of small sponsors to reach life changing amounts under those circumstances. This is partly due to Video "And I am not and never have been 'familiar' scene from The Big Short (2015)".
As such, Ciro came to realize more and more that the best approach would be to reach out to a smaller number of rich people, given that the things he works on niche, but may appeal to a particularly wealthy tranche of the population: STEM people. Other experiences and ideas that contribute to this realization are:
- the creation of the OurBigBook Fellowship, which as of writing consisted of a single donation. During this exercise, Ciro Santilli gave about 2k USD to help a promising Brazilian student. In doing so, he understood a lot about what goes on inside a "rich person's" head when considering a donation
- it is hard to decide who to donate to and find those people. In part because as soon as you create a public donation system with an application process, people will game the fuck out of it. Perhaps the Lost Horse LLC approach of "they find you" is the best?
- it is basically impossible to donate more than 1% of your net worth if you have a family. Even 1% you may be discouraged about. Perhaps with reason due to previous bad donations they have made.
- the increasing wealth inequality of this world, perhaps one of the greatest problems we now face
Then, whenever a larger donation would come through and surprise Ciro, he would improve his sponsor page statements. First a private 150 USD by an awesome sponsor. Then the 2023-09 ~810$ Bitcoin one. Finally came the 2023-11-20 100 Monero one. And it was that one that pushed Ciro to start his "100k USD = 1 year campaign".
Finally on 2024-03-13, Ciro received an anonymous 10 Monero donation to self-custody wallet. He had clearly stated that one should make a test donation to that wallet before the big one, so 10 Monero felt like it could be the test one. Ciro communicated the reception at: mastodon.social/@cirosantilli/112112988286298258 and twitter.com/cirosantilli/status/1769464788009066710:
I cashed out 10 XMR on @AgoraDesk for ~1,375 USD, and kept some change in the wallet for fun. This donation confirms that my self-hosted wallet and cash-out work just fine, so feel free to drop those millions whenever you want Mr. Anon :-)
Over the next few days, Ciro checked his wallet more often than his previously self imposed once a weekend max, and as expected, he found the big one on a slightly despaired around midnight sleepless night (partly due to parenthood). He was feeling particularly bored and a bit sad with his work life that night. And there it was. 1000 Monero on the wallet. Needless to say, not much sleep was done on that evening!!!
1000 Monero donation (~126,000 USD) reaction video by Ciro Santilli
. Source. Still of the reaction video after finding out about the big donation around about midnight
. Source. Screenshot of Ciro Santilli's Monero wallet with 1000 Monero in it just after the donation
. The following days were also tense, with Ciro having a trial by fire on selling large amounts of Monero on the UK, which is not trivial as it had been banned from all major exchanges. But he managed. Further notes on that at: www.reddit.com/r/Monero/comments/17arz9f/converting_xmr_to_gbp_in_the_uk/. Ciro also decided to keep about 200 Monero around just for fun as a crazy moonshot.
Another major factor likely Ciro having published his article: Section "Cool data embedded in the Bitcoin blockchain" in 2019. This is something he wrote entirely for fun during an intense 3 week side-time binge in 2019, though some large updates were made later on. It was this article that likely some crypto-dude attention to Ciro Santilli's profile. As of 2024, there is said to be about 20 crypto billionaires, so perhaps there are about 2000 crypto 10 millionaires[ref], which is the minimum net worth for a donation of 100k USD to be feasible (1% mark). And perhaps a reasonable number of them are just nerds who got rich, and want to improve the world. There are two lessons from this:
- follow your instincts, always. If something seems mega fun and quick, do it!
- making money from a few rich people (or entities like organizations) is easier than working for a bunch of poor people, because you have to convince less people. If you reach many poor people however, things are much more stable as you can lose a few customers and still be fine
Another factor in the donation, Ciro Santilli believes, is that many rich people thing that education is bullshit. Many successful people are neurodiverse and as such, it is only natural that a large number of rich people want to improve our educational system, which tends to be the very epitome of "boring and average normality" which Ciro Santilli so much detests. This can also be seen in people such as:
- Michael J. Saylor and his Saylor Academy
- Peter Thiel and his Thiel Fellowship
Announcements:
- pre-announcement before everything was clearly documented online:
- main announcement
Amazing reactions from the Monero Reddit community: www.reddit.com/r/Monero/comments/1brryao/ciro_santilli_received_a_1000_xmr_donation_to/These people have some serious trust issues!!! Perhaps not surprising from a privacy coin community. Ciro's Twitter post: twitter.com/cirosantilli/status/1775961945193017790
geonic_
comments:Reaction video is fake. Very bad acting.
Inaeipathy
comments:Well, anyways, I would be very unsurprised if this 1000 XMR was sent to him by himself for... reasons.
-TrustyDwarf-
comments:Anyone mind to explain wtf this ugly piece of webpage reminding me of geocities from the 90s is about? I'd read it myself but I can't because it already gave me eye cancer.
rbrunner7
comments:It's all quite strange. Never mind the 90s design, people built good websites already back then with the tools at hand, but even their "About" isn't very clear. If you need 5 minutes to be reasonably sure what it is all about they are still doing it wrong.
Sketch of the typical superconducting phase diagram of a Type-I superconductor
. Source. This is natural question because both integer factorization and discrete logarithm are the basis for the most popular public-key cryptography systems as of 2020 (RSA and Diffie-Hellman key exchange respectively), and both are NP-intermediate. Why not use something more provenly hard?
- cs.stackexchange.com/questions/356/why-hasnt-there-been-an-encryption-algorithm-that-is-based-on-the-known-np-hard "Why hasn't there been an encryption algorithm that is based on the known NP-Hard problems?"
There is no userland process for it, it is handled directly by the Linux kernel: unix.stackexchange.com/questions/439801/what-linux-process-is-responsible-for-responding-to-pings/768739#768739
TODO what it means to solve an Ising model in general?
stanford.edu/~jeffjar/statmech/lec4.html gives some good notions:
- is the expectation value of the value. It is therefore a number between -1.0 an and 1.0, -1.0 means everything is always down, 0.0 means half up half down, and 1.0 means all up
- : correlation between neighboring states. TODO.
WellSync, if you are gonna useSync this wonky language thing inSync one place, you might as well useSync it everywhereSync and make it more decent. See also: how to convert
async
to sync in JavaScript.Their CLI debugger is a bit crap compared to GDB, basic functionality is either lacking or too verbose:Documentation at: nodejs.org/dist/latest-v16.x/docs/api/debugger.html
- stackoverflow.com/questions/65493221/how-to-break-at-a-specific-function-or-line-with-the-node-js-node-inspect-comman
- stackoverflow.com/questions/70486188/how-to-break-on-uncaught-exception-on-the-node-js-node-inspect-command-line-debu Some operations are only possible on the browser debug UI...
TypeScript is good. It does find errors in your JavaScript. But it is a form of "turd polishing". But Ciro Santilli would rather have a polished turd than a non-polished one.
Part of the reason TypeScript became popular is due to the universality of asset bundlers. Once you are already using an asset bundler, changing the
.js
extension into .ts
to get a less shitty experience is an easy choice.The other big reason is that JavaScript is so lose with type conversions, notably undefined happily converting to strings without problems, and any missing properties of Object happily being undefined. We should actually use ES6 Map everywhere instead of using Objects as maps.
Since TypeScript is not the default form of the language however, it inevitably happens that you need to add external types for a gazillion projects that are using raw JavaScript, and sometimes fight a lot to get things to work. And so we have: github.com/DefinitelyTyped/DefinitelyTyped. Not sure if this is beautiful, or frightening.
But in the end, as with other type of static linters, TypeScript generally transforms a few hard to debug runtime issues, into a bunch of stupid to solve compile time issues, which is generally a good thing.
The fact that this it parses comments JSDoc comments in JavaScript files is quite amazing.
Examples under typescript. Run each one of them with:Helper:
npx tsc example.ts
node example.js
tsr() (
# ts Run
f="$1"
npx tsc "$f"
node "${f%.*}.js"
)
tsr example.ts
- typescript/inferFromInit.ts. Should fail with:since TypeScript infers the type of
hello.ts:2:1 - error TS2322: Type 'string' is not assignable to type 'number
i
from first assignment asstring
, and we then attempt anumber
assignment later on - typescript/inferAfterInit.ts. Does not fail, as the first assignment cannot be computationally determined at runtime without breaking computer science.
- typescript/js-from-ts/main.ts: call JavaScript file typescript/js-from-ts/notmain.js from TypeScript.TODO we are unable to make it typecheck that require, i.e. make that fail, but we've seen cases in complex codebases where that did happen and www.typescriptlang.org/docs/handbook/intro-to-js-ts.html has infinite information on supporting it. So... how to make it fail??
npx tsc jsFromTs.ts && node jsFromTs.js
- typescript/functionArgument.ts: basic argument tests
- typescript/functionOptionalArgument.ts:
f(n?: number)
- typescript/functionOptionalArgument.ts:
- typescript/functionOptions.ts:
f({n, s}: {n: number, s: string})
Some major annoyances of TypeScript:
- destructuring assignment in function arguments requires repeating all arguments:
- stackoverflow.com/questions/12710905/how-do-i-dynamically-assign-properties-to-an-object-in-typescript how to dynamically assign properties to objects without defining explicit interfaces? We really need a syntax of type:
const myobj = { i: 2, [s string], } if (something) { myobj.s = 'asdf' }
Unlisted articles are being shown, click here to show only listed articles.