Hacker News new | ask | show | jobs
by sventhereturned 2129 days ago
Disclosure: I work at DFINITY, but not on this team. I can probably answer most questions folks may have...
7 comments

* What are the usecases where this [the Internet Computer and/or Motoko] shines?

* Can you expand on Orthogonal Persistence -- is this a "per actor" persistence, or from the references to blockchain is it some sort of shared state between actors?

* How does the internet look/feel/work different once this exists?

Hi there! Diego from DFINITY here...

1. Compared to other forms of DECENTRALIZED compute, IC + Motoko shines in making web apps with User experience comparable to centralized providers (AWS, GCP, Azure). Example: You can build simple react web social network and expect quick reads (in milliseconds) and writes (1-3 seconds). Note I did not say "blocks" or "finalization." I deliberately trying not to have a leaky abstraction from the POV of the app developer.

Compared to CENTRALIZED compute, you can create "open internet services" like an open version of TikTok where the control of the app and its features can be be done by (in simple terms) voting. Example: https://www.youtube.com/watch?v=_MkRszZw7hU

More broadly, one of the things that is surprising (it was to me when I joined, and it still is), how much of the cloud stack that developers or compute providers create is not necessary when you have protocol-based compute. As a developer, some things like firewalls, databases, seem less important in enforcing the security and scalability of my apps. I realize as I type this can sound a bit naive AND esoteric... and I think the only way to really show this is by action and folks just playing with it. Few words will really convey this as much as people playing with it directly, I get that.

2. Our compute model are "canisters" which (if you are familiar with actor model) are actors that contain both their code and their state. Actors communicate by sending messages to each other (as actor model implies). Example: I could create a twitter canister. Orthogonal persistance means its state can grow without me spinning up DBs or worrying about replication and consistency.

https://sdk.dfinity.org/docs/language-guide/motoko.html#_ort...

3. Oh boy thats a big question... I don't think I can do better than our founder Dom: https://www.youtube.com/watch?v=dALucsAgAwE

Was that a helpful set of answers?

Yes, it was, thank you.
Where can we find the code that implements this language and the wasm runtime with persistence? I couldn't find it in DFINITY's github account
Hi there! Diego from DFINITY here...

Good question. It is not public yet. We have started opening more in summer 2020 (this post is an example) as things start to line up. Some of the folks in the Languages do give talks Motoko and Wasm... and expect us to open up further.

I do not expect that answer will truly sate your curiosity, and I am very humbled you are even interested to read the code and go deep. That means a lot, thank you.

If I understand the persistence stuff correctly, programs don't do explicit I/O but instead just run forever and thus use normal variables and data structures to store state.

This sounds very convenient until one fine day you decide add a new feature, so you need to change your code, but the new code has different variables and there may not be any sensible way to "port" the data.

” Motoko provides numerous features to help you leverage this environment, including language features that allow your heap to self-migrate when you upgrade the software of a canister.” https://sdk.dfinity.org/docs/language-guide/motoko.html

So in this sense it could be a bit like creating migrations to your database. Maybe on ”cloud scale” you just would like to migrate the data when it is used.

Edit: Few more details in this document: https://sdk.dfinity.org/docs/language-guide/actors-async.htm...

Okay, so the magic ingredient is that variables that are marked "stable" are treated specially. Nice!
Not sure what the problem is supposed to be. Is the idea here that the programs don't do I/O (e.g. to disk/db/etc) ever?

Because that's not probably what it happens...

Sounds more like you don't have to worry about mapping your variables to and from an underlying persistent store - it happens automagically.

It's an idea that has been tried on and off for decades and is obviously very appealing but tends to have lots of interesting problems when it has been used for a while - often when you want to access your data outside the context of your application.

Distributed consensus on all your memory sounds potentially (very) slow compared to typical server side virtual machines. True? If so, what sorts of applications is the language designed to be ideal for?
Interesting language. What is dfinity's business model?
Actually, I would love to see an example that does a call to a REST API. I see some examples in the docs to talk to React, but not this.
As this is WebAssembly couldn't you just share some in browser demo where users form a huge compute clusters over WebRTC on their own web browsers? Add in browser REPL and you rock.