2,795 karma · joined March 20, 2008
Web: http://oleganza.com
Twitter: @oleganza
Email: oleganza@gmail.com
[ my public key: https://keybase.io/oleganza; my proof: https://keybase.io/oleganza/sigs/AJQSAr3c4OGeX1kGNlkC7CA4GCHrwFxd_d0NRObC-P0 ]
So if you design a language and want to use Lisp-like syntax, I recommend to also check out io before steaming ahead.
I'd bet FE has similar arrangement - no one wants obvious comparison with an obvious loser by some metric.
But many people have themselves or have family/friends that need to save their money, or escape with their money. Or, recently: escape with all banking cards being blocked and find themselves having to live off Bitcoin. Cryptocurrencies are solving very real problems right now, for millions of people in Latin America, Asia and Europe:
1. They help remit money across the globe: Hawala network is way more scalable since there is a secure global settlement layer - the blockchain. No need to have 3-4 hops through trusted parties. You can directly exchange cash for bitcoin in one place and the opposite in another.
2. They help moving personal cash across the border: if you can't trust or use your bank, you won't be able to safely move more than a small pack of $$$ through customs. Crypto is your only option to save your money.
3. They help you pay the bills wherever you are regardless of your residence/visa status. You may not be able to open a bank account in a foreign country, but you would be able to book a flight, a place to live, pay for taxi, pay for cellphone, pay for food delivery through crypto-interfaces such as cheapair, travala and gift-card gateways like bitrefill to use amazon/uber/airbnb/careem and thousands of other merchants.
Philosophical reasoning like "Rust should have small stdlib" is horseshit. Ideal language has every function perfectly designed in the stdlib (kinda like PHP in 2003, lol). But to get closer to that dream you need some sustainable organization that maintains and expands that stdlib, wishes to do so and has resources to do that continuously.
If it's just random 5 people doing maintenance and hacking at their spare time, that's not enough for an expanding library of diverse code. That could be enough only for keeping very core features working/improving like const generics and borrow checker.
Example: nobody cares if a concert planned on November 19, 2024 at 19:00 in Honolulu starts in 12345600 seconds or 12349200 seconds since now. But everyone cares that everone's calendars and watches are in sync by that time and show specifically that date and that time, regardless of how many times people switched DST or timezones in the years in-between.
Apart from purely political/commercial reasons, I don't see why.
Sandbox and App Store are mutually exclusive reasons for this situation.
Option A: you have good security architecture, so running arbitrary code is safe because all the data is well-isolated and programs cannot mess with each other's data. There is no need to have humans reviewing apps, apart from optional parental controls that people may opt into.
Option B: you don't have good security, so you need to micro-manage app publication and have ability to revoke them, in case an exploit is discovered.
Also, for a development machine, when you run arbitrary 3rd party open source dependencies, build scripts etc, you really want iPad-like security model where each project lives in its own sandbox. But the Unix permission system is an unusable mess, so even if you put your project in a container, your build script can still push to git repo and do other fun stuff outside build folder.
Good parents don't parent via restrictions, but by offering kids something better to do with their time. Restrictions are powerful if they are super-clear and super-limited ("do not kill", "do not steal"). Just making a pile of good-to-have "don'ts" diminishes the effect and risks brewing revolt.
If you manage society and worry that people smoke too much or drink too much, or don't do enough sports, or eat junk food, figure out a way to make a better alternative more available and more satisfying. Be a good parent who guides to a better way, not an annoying parent who simply barks "no" left and right.
Languages like Rust, of course, provide basic memory safety out of the box, but most importantly they also provide means to package unsafe code under safe API and debug it once and for all. And ecosystem of easy to use packages help reusing good code instead of reinventing your own binary buffers every single damn time, as it's usually done in C.
So maybe it's not the unsafeness itself, but rather inability to build powerful reusable abstractions that plagues C? Everyone has to step on the same rake again and again and again.
Notice similarity between places like Florida (less power-hungry governments + freedom-loving population) and places like Belarus and Russia (more authoritarian central gov that does not fear for losing its seat in the next election): both were shutting down things to a much lesser degree than everyone else. I think the reason is exactly the combo of "I can have arbitrary power as long as I have good PR" in the average democratic political environment.
Of course, freedom comes with responsibility. If no one can take your coins easily, you won't be able to recover them easily from someone else either. That's an alternative compared to super-centralized hierarchical finance. People often imply that one is strictly worse than another without considering both advantages and disadvantages.
First, we both agree that the market is far from saturated with BTC. When/if it is, then sure many more places will accept BTC.
Second, even with USD you are separating payment processors and issuers. Visa/MC being shut down does not make USD worthless. Just like if some major exchanges disappear, that would only make people seek some other ways to perform transactions they want to perform.
Crypto may be higher on radar because there's lure of high returns because market is expanding rapidly, and, as in any bubble, some things will pop and some people will hold the bag. Just like with dotcom bubble or california gold rush.
PS. Even though California rush left most people without much direct profit, the indirect profit was that California was populated, infrastructure developed and it became an important part of the global economy, and as a free state was one more place where people could move to build a better future for themselves, even if they were not directly interested in the gold itself.
As for volatility, that's purely a function of holding distribution and market liquidity (and the market right now is far from saturated - hence 30% dips and huge potential upside in the future). As soon as the "whales" are thinly spread across the globe, you don't have a risk of your coins' value suddenly crash because of one guy selling his holdings.
Regardless of the church you subscribe to (deflationary spiral of death VS austrian hard money libertopia), the fact remains that people:
- want to save value for later,
- want it to be liquid,
- want it to be secure
Govs' monopoly on money and ad-hoc issuance policy does not make fiat currencies a good fit. Physical gold is hard to secure, transport and partially liquidate. Gold certs and all sorts of funds are subject to counterparty risk that we begin with (see the history full of abuses in that realm). Real estate is expensive, comes with high taxes and is very far from being liquid.
Bitcoin solves all these issues because it's far more liquid and easier to secure than gold or real estate. That creates a leverage against how much gov could inflate their money supply or tax other assets: they more they do, the more value flows out into Bitcoin. Today Bitcoin is a tiny slice of the pie, but in the future it may be very visible and offer real competition and make all the people who do not even use Bitcoin find themselves in a more stable fiat environment as a result.
I'd like to see material around modern stuff (Keccak and ECC) with only a cursory discussion of pitfalls of the past standards in contrast with the current stuff. And more time on asymmetric, discrete log and fiat-shamir protocols that are so much fun and require really a 7th grade algebra to grasp.
I've also made a couple of videos on ECC basics with that approach: https://www.youtube.com/channel/UCk0r9S76wngNPJb_GlhJYdw
EDIT: what i mean, is focus first on how to use primitives and what they promise, rather than how they actually work. Once you feel like you can play with these legos, it's more fun to dig deeper and see why ECDLP is hard and how ciphers are made. But please don't start from within - it's an annoying boring mess that distracts from the true beauty: the cool things you can build with these tools.
Secondly, yes, asymmetric encryption is slower, so you almost always use hybrid scheme: asymmetric scheme (ElGamal, for instance) for encrypting the symmetric key, and then a symmetric scheme (e.g. AES) for the bulk of the data.
Only in very exotic protocols such as digicash blind signatures or anonymous credentials with "algebraic MACs", you want your actual content encrypted directly via ElGamal or RSA, so that you can do some operations or proofs about the ciphertext — in those cases you can't encrypt symmetrically as that would erase all the algebraic relations.