792 karma · joined February 4, 2012
- Real estate has real-world use cases
- Stocks have real-world use cases
- Bitcoin has real-world use cases
It's meaningless to describe any of these as pyramid schemes because "to profit you must be able to sell at a higher price to someone else". That's true of buying or selling anything.
The difference is, you can also self-custody your Bitcoin. Obviously what's in your custody is just a private key; but for all intents and purposes that is self-custody. You are the sole person in control of those coins.
So Bitcoin gives you the choice of how you want to store it. Traditional money does not give you that choice. At a certain point there are physical and practical limits to how much cash you can self-custody (not to mention transport or transfer from one place or person to another).
Literally the only way you can profit with stocks is if people keep buying in at higher prices. It's the perfect instantiation of a pyramid scheme.
We've been doing a lot of outreach on social media platforms like Twitter. It's been pretty easy finding people who are part of our target audience, and asking them if they'd be happy jumping on a 15 minute zoom call to help give us some feedback.
- They're small and single-purposed
- They don't inherit (or at the very least, extremely light inheritance)
- There's a very clear relationship between the state and the methods (e.g. a counter class, or a future/promise)
For example in JavaScript, I think you can still uses classes and end up with functional-ish code: https://bluepnume.medium.com/functional-ish-javascript-205c0...
I get around that in js mostly by avoiding classes and `this` entirely unless I'm sure I'm going to have a large number of instances of something. But there is the mental overhead of "Do I need to wrap this function in an arrow function before passing it around to avoid getting an unexpected `this`?"
So yeah, not saying I have a great solution -- just that none of the existing solutions really seem ideal.
Just use vanilla functions and objects, and when in need of something that looks like a class, reach for the revealing module pattern:
https://gist.github.com/zcaceres/bb0eec99c02dda6aac0e041d0d4...
I do a lot of work on SDKs which run in semi-hostile environments, so prototype pollution is something I'm frequently running up against.
Yep, and I think that determining `this` at the call-site is really awful, and has been the cause of many more bugs than is reasonable.
OOP you can do in JS with just `class` and `extends`, you no longer need to care too much about prototypes and how they work. Prototypes have become much more of an implementation detail in recent years.
I would still remove them in favor of arrow functions and spreads. Unless you can show me any code which is pivotal to writing some tool which absolutely can not be done using the alternatives.