Class 1 / Class 2 Problems
kk.org
kk.org
> Blockchain tech could unleash collaborations of several million members working on one project in real time, or orgs that are far more leaderless than today.
How? Projects like the Linux Kernel already have thousands of contributors. It's not clear what putting their work in a distributed ledger would do to encourage more users.
Twitter has millions of people generating content for it. Could a magic blockchain give people micro-cents every time their post was upvoted? Maybe. But that doesn't require a blockchain.
Could a global art project distribute funds via a smart contract? I guess. But with millions of users, people will gravitate towards leaders. Even if it's just following the way an paid-for "influencer" votes.
I too think that most of the tech problems inherent in DLT / smart contracts can be solved. But it isn't immediately clear what use they will be.
It's not even funny anymore.
If you authenticate all users and retain central administration, then blockchain's constraints simply don't apply.
On top of this, smart contracts take the code that would usually run these centrally administrated APIs and makes it public. I think this is the more powerful idea.
It's not just a decentralized ledger anymore, but a decentralized and public execution environment. And it's not crazy to believe that we've barely scratched the surface of what this type of execution environment can enable in user/provider interactions and user/user interactions.
If my spouse borrows my authentication device (with or without my permission) - then that ID is being used by multiple people.
I think it's analogous to a decentralized SSO (e.g. Google login, Apple ID login, etc.) that can be used as a source of identity without the service provider/smart contract writer needing to implement it themselves.
With Ethereum-style blockchains, this auth is built into the programming language itself. The msg.sender field is guaranteed to be consistent with the actual sender of a transaction. If it isn't, the computation that is ran will not be published to the blockchain.
This sort of auth infrastructure is not trivial to implement and you get it for free by deploying your service on blockchain. In addition, you get persistent storage for free. On top of that, smart contracts have common published interfaces. My IERC721 implementation will respond to the same calls as your IERC721 implementation. Standardized APIs is not really a thing on the normal Internet, but it's commonplace in web3.
EDIT: by "for free" I mean in terms of implementation and infrastructure work. The gas fees definitely are not free.
So, not very secure. Passwords aren't very secure on its own and practically always supplemented by human support systems and alternative factors of authentication. In really critical systems like government, these supplements extend all the way to a physical meeting with a bureaucrat. What's my recourse if I lose my blockchain secret?
All of that is the main cost of a serious user authentication system. Who cares if the msg.sender field is guaranteed to be consistent with the sender of a transaction if no one knows who the sender actually is.
So much this. If you don't care about credential theft or recovery, authentication is a straightforward problem. With a blockchain what changes is that you just can't care about this problem, and when it happens, your user is f*cked.
Like a login/password… With a specific difference, that if you lose your private key or if it's stolen, you're doomed and you cannot recover. The user authentication story is actually the weakest point of blockchains/cryptocurrencies, and that's exactly why 99% of their user actually uses a third-party wallet.
Also, smart contract sound like some magic sauce, but in fact aren't anything magical, they are short programs that can be executed on public data in the ledger, that's it. And the execution environment isn't distributed either (at least in the meaning of distributed computing, every node have to process the entire contract).
The only ways they can modify this ledger is publically and immutably defined at the creation of the smart contract. Sure they're not magic, but at any given time, you can query events published by that contract and query that contract's state. That's at least different than the traditional internet.
It may feel like I'm moving the goal posts but I'm just trying to highlight the differences between the stuff that happens on the traditional internet vs web3.
> It's not just a decentralized ledger anymore, but a decentralized and public execution environment.
“decentralized and public execution environment” really sounds like you could execute arbitrary programs in a distributed fashion (which would be really cool), which is absolutely not what smart contracts are.
If you can see through the hype, blockchains distributed across jurisdictions and organizations really do solve real problems for real people. Denying that is only putting blinders on. Maybe you don’t have those problems yet, maybe normal people don’t have those problems yet. That’s great, but it’s a snapshot in time; it doesn’t say anything about the dynamics of the systems involved, or what people will want in the future, or how and why that might change.
This is especially important to keep in mind when reading the prognostications of a futurist like Kevin Kelly.
Yes, everything you said is possible. But it requires each company to build an open api and make things interoperable.
Crypto pushes things to the protocol layer https://www.usv.com/writing/2016/08/fat-protocols/ which leads to things being interoperable. For example, https://www.blockchaingamer.biz/news/1869/the-dragon-fightin....
Since the protocols are public info, you can build off of them. It's why there is so much progress in all this space because the contracts are open, you can clone them, build new ones that make use of them etc.
Try doing that in a non crypto world. You are at the mercy of what Facebook, Instagram or whatever other company decides to open up to let you build off of.
It's a push for a more open internet, imo. Where data can flow fluidly where the users want it. Contracts are build out in the open, with the incentives pushed away from the application layer (less FBs) to the protocol layer (more stripes?). Applications can build off of the protocols but they make use of open data and open protocols that other applications can easily make use of as well. Making it easier to come in and compete with the FBs of the world.
Sure, Facebook might deprecate an API. But that doesn't stop me from being able to do generic HTTP requests for JSON documents.
And, while I love decentralisation, it appears that the majority of people gravitate to big providers. Because they provide better services or a bigger audience or demonstrate more trust.
And I'm still not sure what I'd use a smart contract for. Programmers don't seem any more competent than lawyers when it comes to writing bug-free documents.
I’d love to have a discussion about the topics raised, but it’s no fun to have a discussion with someone who is repeatedly critical and a little fired up before even understanding the fundamentals. Skeptical is fine, but the specific criticisms raised don’t even make sense in the way that I understand the space.
It’s my observation that people make comments that ‘don’t make sense in the way that I understand the space’ very frequently, and while it’s certainly an indication that we don’t understand each other, and may be an indication that someone is mistaken, it is not obviously indicative of emotion, and in any case the presence of emotion isn’t obviously indicative of incorrectness or irrationality.
Regardless of the correctness of your diagnosis (which you now will never be certain of) the move is a conversational gambit that isn’t likely to lead to anything constructive.
What are you referring to as the long-term play? What’s the goal?
Sometimes I can’t find a way to nudge a particular conversation toward constructiveness, but I can raise a way in which we all might be able to have more constructive conversations in the future.
A small drop of antidote against the psychological warfare going on. I’m still learning, but it feels right.
Once you have declared someone’s position invalid because of their emotional state rather than their logic, that person can no longer trust you to take anything they say seriously.
In effect, you are declaring yourself to be an untrustworthy interlocutor.
I recognize that you may have the goal of increasing constructive conversations, but it’s not clear how this technique is going to serve that goal, game theory or not.
ethereum smart contracts are "neat" but szabo, miller, et al. have been working on them for decades and bjg business hasn't jumped on them yet.
maybe we'll come up with a use... i've heard mumblings about agtech decentralized something or other.
kk touched on the idea here of tech monoculture and it's risks. what happens if stuff we trust breaks and we don't have a backup plan. maybe people are waiting for someone else to assume the risk and verify smart contracts work?
It's been such a struggle to get anywhere near to making it do something useful.
But what if, one day, it actually works?
What could happen if we all had access to enormous amounts of very cheap energy? Have we thought even a little bit about all the bad things that might happen as a result?
Once upon a time, people thought nuclear fission energy would bring "power too cheap to meter". They did not realize all the associated costs.
If fusion ever comes, it will be expensive, even more than fission is now. It can still happen, if big gov and big corp put their money into it, but it's kind of unlikely. Solar plus fission is the more conservative (less risky) way to go.
Websearch Yucca Valley; do you want your aquifer to be downstream of that?
The trick for technologists is to make their technology ubiquitous before anyone sees the consequences. It's done over and over again and it is hard to see a way out that does not stifle innovation.
Maybe I'm just being picky about the examples but I'm convinced there is a class in the middle where an implementation of a product has been refined by company a) and company b) can't get past class 1 problems but ships due to other reasons.
I'd give examples as, early stabs at a smartphone before iOS or Android, or laptops that try to imitate a macbook with inferior divers and hardware components.
it's easy to find this content with a few exploratory clicks, but seems weird it would do that since other commenters obviously saw the content.
anyway, if you have a problem finding the link, i typed this in and got there directly.
https://kk.org/thetechnium/class-1-class-2-problems/
ymmv
For example, we can make an algorithm that ranks (and decides fate of) webpages or pandemic data, or applicants for special training programs, or for higher learning - all this via ranking members via some utility function.
Take the last example of applicants. We can make that tech perfect with respect to the given utility function (IQ, expected profit from individual's life's work). But putting that perfect math decision process into universal practice, we will cause various unknown unhealthy biases to maintain or develop themselves and prevent the outsiders not captured by the utility function from getting a chance. See the movie G.A.T.T.A.C.A. for compelling depiction of society like that.
One way to prevent this dystopic stagnation via perfection is to apply the "perfect technology" less strictly and allow for some randomization. Put some humanity into practice.
We can make a technology perfect for some purpose, but we can't seem to agree on the purposes. So maybe don't put perfect technology everywhere.
"Wanna perfect technology? Be careful what you wish for".
- Printing press -> Uppity peasants
- Electric light -> Sleep problems
- Air conditioning -> Weight gain
This is the correct one https://kk.org/thetechnium/class-1-class-2-problems/
But every time I try to post it, it changes automatically to kk.org once posted.
1. After posting, I'm redirect to https://news.ycombinator.com/newest where the link works 2. I click to open the discussion, now on this page link no longer works 3. Going back to /newest, the link no longer works!
<link itemprop="url" rel="canonical" href="http://kk.org">
And the second is the correct one: <link rel='canonical' href='https://kk.org/thetechnium/class-1-class-2-problems/' />
I'm imagining HN takes the first, always, and doesn't use any extra logic to try and discern (when there are multiple) which should be used.https://html.spec.whatwg.org/multipage/semantics.html#the-li...
Doesn't really help too much with which one is the url to use but the link rel one is more righteous.
In this case, there's a naming problem. "Class 1" and "Class 2" don't give any semantic content. Is there a "Class 3" coming along?
Let me suggest "Inadequacy Problems" and "Ubiquity Problems" as alternatives.
There are also Class 0 problems, like fusion, where just getting things off the ground is difficult.
They supply useful context and are not ambiguous.
Class 1: medical devices, explosives, renewable energy credits, depreciable property, lasers, streetcars, UK national insurance, railroads, electronics, felonies...
If you're going to coin a term, make it a good one.
Aside: the joke I've heard was always naming, resource management, and off-by-one errors.
Resource management would include cache invalidation, malloc/free, open()/close(), accept()/close(), dup()/close(), garbage collection, etc. etc.
https://skeptics.stackexchange.com/questions/19836/has-phil-...
So I guess from this perspective, there's really only one hard problem in computer science: resource management and off-by-one errors.
> In this case, there's a naming problem. "Class 1" and "Class 2" don't give any semantic content.
To me, the names suggested a connection or analogy to Type 1 and Type 2 errors, also known as False Positives and False Negatives. I was wrong, as it turns out, but the opaqueness of the labels, while annoying and unnecessary, isn't unprecedented.