Live data from Hacker News

Urbit: a personal cloud computer

doc.urbit.org

171–180 of 281 posts

Re: Urbit: a personal cloud computer

#171

the only bad things seems that everyone is dependent from a server run by one company. why is there a need for this kind of registry? wouldn't be a distributed system better for this?

Man, I just wrote you a big long explanation of how you can update your filesystem even if your parent ship is gone, with shell command examples, but then my battery died before I had a chance to post it, and I'm totally not rewriting it now because I'm sure you don't care that much, and the real punchline is all of this information is about to be obsolete anyway.

The long and the short is, there are carriers (I have one), who are enumerated in the source code (like by public keys) and they are not dependant on each other, except for the sake of being able to route to child ships. So if ~zod is down, and everyone depends on ~zod, the network is indeed hosed. Everyone with active links can continue talking to each other, but nobody new can find anyone, and nobody can find anyone new. Every ship depends on a carrier for routing.

By convention, every time you launch from your pier, you get a new random port number and any ship that was looking for you at your old address needs to hear about your new address from a higher-up ship.

So it is distributed, but finitely distributed. There are only 256 carriers allowed, and they are the only ships that are really independent. Though there has been talk about fleshing out how ships can be separable from their "sein" domain, or parent ships, currently almost everyone is from the same lineage and thus depends on the same pair of servers for pretty much everything regarding the network.

This "centralized" design is indeed a core feature of the network, and it even relies on DNS to be bootstrapped, another centralized system. Now, can you show me a decentralized system that doesn't need any of that? I don't know exactly how magnet links or tor, or freenet work, but I am skeptical that they are honestly less centralized than this when it comes to bootstrapping.

Re: Urbit: a personal cloud computer

#173
post #20

Urbit is a weird thing that feels like it comes from a parallel universe of computing. It's a bit hard to wrap your head around it at first, but it has some neat ideas. I like this article which introduces it: Urbit is perhaps how you'd do computing in a post-singularity world, where computational speed and bandwidth are infinite, and what's valuable is security, trust, creativity, and collaboration. It's essentially…

"Despite messages between ships being encrypted, the founders state that they've purposely designed the network to make it as easy as possible for governments to regulate and control. It's not entirely clear why this is supposed to be a good thing."

Darn. Most of my interest in it just evaporated.

Re: Urbit: a personal cloud computer

#174
post #129

Oh, Urbit! Where to begin?... First of all, this is staggeringly brilliant. You should pay attention to it in the coming months. I am not sure if it's destined to be the future, but I sure as hell hope it is. I had the privilege of interning at Tlon, the company working on Urbit's development, this summer. It owns most of the namespace (Personal cloud computer IP addresses, essentially.) and is where the architect of…

https://github.com/urbit/urbit/blob/master/urb/zod/arvo/ames... There are hundreds of lines of noise. This makes perl and forth look absurdly readable. What on earth do the directory and file names mean? I dunno how familiar people on HN are but the original author of urbit is Mencius Moldbug, a neoreactionary blogger. His style of writing is absurdly obfuscated and purposely impenetrable if containing some interesti…

Stepping away from the Algol keyword tradition is obviously a risk. At the same time, after using a keyword-free syntax for a while, reserved words feel really weird.

Someone just emailed and pointed out that he couldn't check out Urbit on Windows, because it has a file con.c. Oh, right, reserved filenames. How are reserved words different? The difference is - you're used to them.

Also, perceived usability (while it matters for marketing) is not the same thing as actual usability. Actual usability is something you only find out when you try to actually use something. We have a good bit of experience inflicting the syntax on coders of various abilities and backgrounds, and we're pretty satisfied with the result.

It helps that the syntax is quite a bit more regular than it appears at first glance. It's much more regular than Perl, and it also comes with a vocalization model that makes it easy to say out loud.

For instance, "=+", which more or less declares a variable, is "tislus." A lot of things like "=+" also start with "=", ie, "tis." You wind up learning about a hundred of these digraphs or "runes," which is a lot less than, say, Chinese.

Speaking of Perl, have you heard - Larry Wall is a Christian? I don't think this makes Perl a Christian programming language, though.One of the joys of our engineering inheritance from the 20th century, which was really humanity's golden age of political insanity, is that we get to stand on the shoulders of loons. We fly Christian astronauts into space on Nazi rockets programmed by Communist physicists. And it works...

Re: Urbit: a personal cloud computer

#175
post #171

the only bad things seems that everyone is dependent from a server run by one company. why is there a need for this kind of registry? wouldn't be a distributed system better for this?

Man, I just wrote you a big long explanation of how you can update your filesystem even if your parent ship is gone, with shell command examples, but then my battery died before I had a chance to post it, and I'm totally not rewriting it now because I'm sure you don't care that much, and the real punchline is all of this information is about to be obsolete anyway. The long and the short is, there are carriers (I have…

Follow-up: As I suspected, regarding magnet links

> The first time a client joints the DHT network it generates a random 160-bit ID from the same space as infohashes, and then bootstraps its connection to the DHT network using hard-coded addresses of clients controlled by the client developer.

This sounds really quite like the process of creating a submarine, and reaching out to the carrier ~zod. The fact that the init process is hardcoded to trust ~zod doesn't change that you can really init your ship's filesystem from any other ship, provided you can reach it.

Carriers are all found through the existing DNS infrastructure. Other ships are able to be reached "in-band" by asking a carrier for an introduction. Without this seed or hardcoded list (or by conducting a brute-force search), or some kind of broadcast mechanism, bootstrapping a distributed network is not actually possible.

Re: Urbit: a personal cloud computer

#176

Earlier quoted context omitted.

"Despite messages between ships being encrypted, the founders state that they've purposely designed the network to make it as easy as possible for governments to regulate and control. It's not entirely clear why this is supposed to be a good thing."

My take on that is that this design choice arrises from the anti-democratic authoritarian sentiments which (at least one of) the developers apparently hold. At least they have repeatedly expressed these sorts of sentiments in their rather long winded blog(s).

Have you considered that democracy is not actually immune to authority, and it's really a reflection of this, rather than a window into the designs of one crazy person? (hi Curtis)

Maybe every system that comes along and says "impossible to be subverted by centralized governments" in reality is just saying "come and try to stop me, Federales". Do you think that is that what we all should be doing instead?

Re: Urbit: a personal cloud computer

#177

The project is based on a fundamental insincerity, which makes me suspicious. All material about Urbit makes a big point of their minimal spec, again so in the linked piece: "The spec fits on a T-shirt and gzips to 340 bytes." What do people expect when they read a thing like that? I don't know about you, bit I'd expect that I could ignore the obfuscated strangeness of their higher level languages etc and just implem…

> The project is based on a fundamental insincerity, which makes me suspicious. All material about Urbit makes a big point of their minimal spec, again so in the linked piece: "The spec fits on a T-shirt and gzips to 340 bytes." Last I read something like this (I don't know if it was about Urbit or something else), it turned out that there was no IO included in that spec. So, useless for any real-world purpose, and a…

The IO are events, and the events come from unix (for example: signals, files and sockets).

Urbit is not meant to replace Unix. "They call us, we don't call them" is the fundamental precept in play here. I assure you there is I/O in Urbit, the vanes include an HTTP server, a Hoon-interpreting shell which accepts keyboard input from a terminal, and a UDP layer for facilitating ship-to-ship communications. All of that is written in Hoon, which compiles into Nock.

Re: Urbit: a personal cloud computer

#178
post #82

The choice of 0 for true and 1 for false is _wrong:_ On the Curry-Howard correspondence (and above) a type corresponds to a false sentence when it is not inhabited, like 0, and to a true sentence when it is. The Curry-Howard correspondence is fundamental, and so that is the. correct way to go, absent evidence in the other direction. I don't know whether Nock is a better foundation for a programming language than the…

IANAM, but I thought really if there was one great lesson of 20th-century mathematics, it's that nothing (ie, no system of axioms) is fundamental and superior to all others. For instance, Church-Turing equivalence does not tell you that Church's model of computing is more fundamental than Turing's or vice versa.

If you look at where lambda comes from, it comes out of this same project of metamathematics that originates in the 19th century with people like Frege - how do you describe math in terms of math? Then it was discovered that this project could be repurposed as a definition of computing. Reusing old standards is a thing that happens, but sometimes you'd come up with a different approach if you were starting from scratch. As I've pointed out elsewhere on this thread, the shared theoretical foundation of lambda does not lead to a family of languages that are compatible in any meaningful sense.

It was probably a bad decision to make 0 true and 1 false, but not for mathematical reasons. There is always a lot of C coupled to Urbit, and what ends up happening is that the easiest way to handle this problem is to write C in a sort of dialect in which 0 is true and 1 is false. This is slightly cumbersome, and the perceived elegance of 0 == true isn't at all worth it. However, it's also nowhere near awful enough to revisit the question, which would be quite tricky considering the self-compiling nature of the system!

Re: Urbit: a personal cloud computer

#179
post #126
post #82

The choice of 0 for true and 1 for false is _wrong:_ On the Curry-Howard correspondence (and above) a type corresponds to a false sentence when it is not inhabited, like 0, and to a true sentence when it is. The Curry-Howard correspondence is fundamental, and so that is the. correct way to go, absent evidence in the other direction. I don't know whether Nock is a better foundation for a programming language than the…

Aside from the zero/one thing, if I'm understanding this right, Nock is based on the SKI combinator calculus, where the combinators are S: λxyz.xz(yz) K: λxy.x I: λx.x From there, you can express anything from the lambda calculus, and vice-versa. So I think it's reasonable to say that Nock is just a machine-friendly way of expressing the lambda calculus.

I wouldn't say it's based on SKI - just relatively similar. There are a lot of ways to skin this cat.

SKI is obviously a lot simpler mathematically, but I wouldn't want to try to use it as a compiler target...

Re: Urbit: a personal cloud computer

#180
post #102

Earlier quoted context omitted.

I can field that one. If a has A reference to B and B has a reference to C and C has a reference to A, then we have q cycle. Cycles play merry hell with garbage collectors and reference count destructors. Languages that force references to be a strict tree or DAG get cheap destruction in return - see C++ without pointers for example - I pop a local object off the stack and it's gone, along with all its children - no…

Did you mistype q cycle? I tried googling it, but found 0 relevant results.

I have never heard of it either, but I know some hoon and it makes intuitive sense to me.

If I tell you a linked list of atoms (@) is made from this tile (type):

[p=@ q=*]

it becomes obvious, right?

[p=1 q=[p=2 ..]]

[p=1 q=[p=2 q=[p=3 q=[p=4 q=~]]]]

This should look like building a list from 1-4. There are no cycles, ~ is a terminator.

Q is the reference to the next item in the list.

This would constitute a cycle:

z=[p=1 q=[p=2 q=z]]

Post reply on HN