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 a combination of a programming language, OS, virtual machine, social network, and digital identity platform.
"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."
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 the system works full-time. They are funded, well enough, by VCs you know of. Urbit is not really launched yet though - We spent the summer doing a lot of work getting the network, file system, protocols, and application layer in "Industrial grade" shape, and I believe more of that is happening this fall.
Because the system is still unlaunched and the docs are being retooled, I imagine these pages are discombobulating. That's... expected. Urbit has a lot of odd ideas that take time to appreciate. However, if you do take the time to understand the motivation behind the design of everything from Hoon's appearance to the network protocol replacement for TCP to the vision for future social networks, you'll find some of the best and most complete computer science research done in decades in networks, systems, and functional programming. The essential idea is not an outlandish one - We need a new basis of computing and networking to build digital identities with, and 1970s system software is not up to the task.
It's unfortunate that ambition and a sense of humor can be misinterpreted as a joke today. For now, you'll just have to take my word for it [1] that these guys are deadly serious and have the technical chops to back up their ambition. Future documentation and applications built on the OS should soon make that more immediately evident.
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 interesting ideas. The exact same thing is true of urbit. Interesting ideas but obfuscated the point of utter inaccessibility.
Here's sort of the wider group of blogs he philosophically aligns with:
His views are likely unpopular around here but I am a fan of a bunch of those other blogs, and I've tried to dive into Moldbug's blog Unqualified Reservations a few times. It's kind of insane—the guy is clearly very intelligent—yet writes in his own discursive style that is absolutely opaque.
Wait, so they wrote their own bytecode, functional language (complete with compiler and libraries), functional operating system, TCP replacement, and distributed storage protocol? And will presumably write all their own apps, or some kind of interface layer that will allow non-Hoon code to run on their system efficiently? That has to be one of the most ridiculously ambitious projects I've ever seen. Good luck to them I guess, but I've always been a believer in not reinventing too many wheels at once
"It's definitely air travel. It's not exactly flying."
This phrase has an Alan Kay-ish quality, and was enough to pique my interest. Anyone seriously trying to execute on a project that addresses this concern seems worth following. Who knows, you might even succeed :)
I've been watching this since it's started. It has some magical atmosphere around it and you never now whether it's serious or not; whether it's a real technical project or some kind of artistic performance.
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 Lambda Calculus, but it is at least as elegant—I'm glad someone is seeing where it leads I'm a fan of internet freedom, which often requires anonymity, and so I have my doubts about an OS that preserves exerything as a feature of the design.
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!
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.
It's probably the second time that I come across Urbit and found it attention worthy, but... how hard would it be to explain at least some of the concepts in plain English and with some nice intuitive drawings/schemas on the side, really?
I mean, this http://doc.urbit.org/doc/hoon/tut/1/ is supposed to be a "tutorial" but it's definitely not what anyone else would call a "tutorial". It's more like a "philosophical introduction" to a PhD paper, which would be ok if labeled as such. A tutorial should be about "how do I do X using Y, without bothering to really understand Y" because this is what a tutorial is about, a "mostly wrong" "mental shortcut" that you take in order to gain some kind of "feel for how something works" before actually delving deeper and reading up on the theory.
Our documentation has advanced since this was posted. I'd be interested to talk more out of band, but can't find your email. If you're up for it I'm galen at tlon.io.
This is fun stuff. Reading around a bit I found this:
"While nowhere near the simplest such automaton known, and certainly not of any theoretical interest, Nock is so stupid that if you gzip the spec, it's only 374 bytes. Nock's only arithmetic operation is increment. So decrement is an O(n), operation; add is O(m * n)... "
Don't they mean 'subtraction' rather than 'add'?
edit: This is so fascinating, it has me totally enthralled. Think smalltalk meets lisp meets some wild eyed programmer who knows just how to appeal to the general frustration most programmers should have (do they?) about the state of our art.
Best post on HN in a long time, very curious how this one will turn out in the long term. May all your ships come in ;)
edit2:
Digging around a bit more: Peter Thiel and a bunch of others have apparently invested in this through a vehicle called 'Tion', https://angel.co/tlon (the Thiel reference is that Thiel backed John Burnham, who is co-founder in Tion).
I'm not sure on the specifics here, but I'd have thought that subtraction would be O(n). To perform n - m on a simple register machine with only increment, you just count from m up to n (and count from 0 up to n, outputting 0 if you reach n, since subtraction is partial).
EDIT: It seems they are going for a naive implementation where subtract just repeatedly calls decrement, so yes, that's going to be O(m*n).
Is it just me, or is anyone else reminded of the story of Project Xanadu? (A great read[1], if you have an hour to spare.)
Especially this part:
> Shapiro also discovered that the group had been working together so long it had developed a kind of private slang. It took months to comprehend what the programmers were talking about. Most of them were book lovers and trivia mongers who enjoyed developing a metaphor based on obscure sources and extending it via even more unlikely combinations. For instance, the object in the Xanadu system that resembled a file was called a bert, after Bertrand Russell. With files called bert, there had to be something called an ernie, and so in the Xanadu publishing system, an ernie was the unit of information for which users would be billed. To understand the details of Xanadu, Shapiro had to learn not only the names for things, but also the history of how those names had come to be.
They had me going in the Nock spec until "We should note that in Nock and Hoon, 0 (pronounced "yes") is true, and 1 ("no") is false. Why? It's fresh, it's different, it's new. And it's annoying. And it keeps you on your toes. And it's also just intuitively right."
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 implement stuff to that minimal spec.
So you expect you can do that. But you can't. That minimal spec might as well not exist; you can't just read it and go on to implement, say, a programming language on top of Urbit.
"But you can!" you might object. Try it. Read nothing but that spec and implement, say, a tiny BASIC on top of it. Compile some simple programs. Run them. Now, what happens? Nothing, for now. But look, my processor core is heating up. Something must be happening! Just wait. Wait. Wait. No, still nothing. Wait some more. Just a few years, maybe? No, still nothing (except heat). Etc.
So no, that elegant spec doesn't give you anything but a way to heat your computing cabinet.
Realizing this, I put Urbit in the "suspicious, may be a con" bin. Hasn't escaped from there, yet.
> 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 as you said, insincere.
I definitely was thinking about something like this, but not exactly this. I mean, yeah, the only way to save ourselves from damnation is to finally announce "enough of 70's!" and rewrite everything from scratch, so the idea is dear to me, but that actual implementation of the idea is… maybe "weird" is the right word. I'll continue reading, but I already have a feeling that after I'll get myself completely familiar with it, I will hope it will not succeed.
I hope it will succeed but that it won't be the only thing that will succeed and that some will take inspiration from it to build something even better. Challenging the status quo as such is a useful property and showing that you can in fact reboot is useful as well.
That said, the more I read about it (a couple of hours so far) the more I'm thinking it will not succeed because of some of the weirder philosophical decisions that have already been cast in stone.
It's basically a variation on the 'landgrab' theme. Think bitcoin or the domain name system with half the space grabbed up by the ruling corporation, with an arbitrary 'ingroup' and a very large 'outgroup'.
You'd think that by now the whole point the web rammed home with its unbridled success is that open is better but I guess the mobile walled gardens have whetted the appetite of future wannabe corporate overlords.
Anyway, I still wish them best of luck, that's an economic move on my part, it costs nothing and I suspect they are self limiting enough that it will not achieve the world domination they are dreaming of. See also: the singularity.
I can't decide if it's a science fiction novel written in code form, a programming environment, a game, a radical creative take on computing and networking ... Whatever it is, it's genius.
It seems like a work of genius, but it may be many years before an artificial intelligence can fully interpret its unique significance.
In fact it reminds me about a massive book on cellular automation that I once picked up, which went to incredible length in interpreting the potential of dynamic patterns in 2D space. It was a monument to extreme intellectual rigour and dedication, if nothing else. If only I could remember the title.
I know enough to be interested. Not enough to know if its nonsense.
Although, I read this:
"A pier is an Urbit virtual machine that hosts one or more Urbit identities, or ships. When you run bin/vere -c, it automatically creates a 128-bit ship, or submarine. Your name (a hash of a randomly-generated public key) will look something like:
[+] [-] GuiA|11 years ago|reply
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 a combination of a programming language, OS, virtual machine, social network, and digital identity platform.
http://alexkrupp.typepad.com/sensemaking/2013/12/a-brief-int...
[+] [-] walterbell|11 years ago|reply
[+] [-] agumonkey|11 years ago|reply
if no, you're gonna experience even weirder things
[+] [-] JDulin|11 years ago|reply
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 the system works full-time. They are funded, well enough, by VCs you know of. Urbit is not really launched yet though - We spent the summer doing a lot of work getting the network, file system, protocols, and application layer in "Industrial grade" shape, and I believe more of that is happening this fall.
Because the system is still unlaunched and the docs are being retooled, I imagine these pages are discombobulating. That's... expected. Urbit has a lot of odd ideas that take time to appreciate. However, if you do take the time to understand the motivation behind the design of everything from Hoon's appearance to the network protocol replacement for TCP to the vision for future social networks, you'll find some of the best and most complete computer science research done in decades in networks, systems, and functional programming. The essential idea is not an outlandish one - We need a new basis of computing and networking to build digital identities with, and 1970s system software is not up to the task.
It's unfortunate that ambition and a sense of humor can be misinterpreted as a joke today. For now, you'll just have to take my word for it [1] that these guys are deadly serious and have the technical chops to back up their ambition. Future documentation and applications built on the OS should soon make that more immediately evident.
[1] Or start reading the tutorials!
[+] [-] lumpypua|11 years ago|reply
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 interesting ideas. The exact same thing is true of urbit. Interesting ideas but obfuscated the point of utter inaccessibility.
Here's sort of the wider group of blogs he philosophically aligns with:
http://rationalwiki.org/w/images/d/d5/Scharlachs-visualizing...
His views are likely unpopular around here but I am a fan of a bunch of those other blogs, and I've tried to dive into Moldbug's blog Unqualified Reservations a few times. It's kind of insane—the guy is clearly very intelligent—yet writes in his own discursive style that is absolutely opaque.
[+] [-] jcburke|11 years ago|reply
[+] [-] guscost|11 years ago|reply
[+] [-] state|11 years ago|reply
What we're brewing in the lab has diverged quite a bit from what's publicly available. Even these docs are quite out of date.
If you're interested in keeping up with what we're doing: either sign up at http://urbit.org or send me an email, galen at tlon.io.
[+] [-] _dps|11 years ago|reply
"It's definitely air travel. It's not exactly flying."
This phrase has an Alan Kay-ish quality, and was enough to pique my interest. Anyone seriously trying to execute on a project that addresses this concern seems worth following. Who knows, you might even succeed :)
[+] [-] sz4kerto|11 years ago|reply
I've been watching this since it's started. It has some magical atmosphere around it and you never now whether it's serious or not; whether it's a real technical project or some kind of artistic performance.
I think I have a destroyer somewhere.
[+] [-] canjobear|11 years ago|reply
[+] [-] state|11 years ago|reply
[+] [-] Zillion|11 years ago|reply
[+] [-] urbit|11 years ago|reply
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!
[+] [-] jdpage|11 years ago|reply
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.
[+] [-] javaexpert101|11 years ago|reply
[+] [-] Estragon|11 years ago|reply
I'm looking for a virtual machine (or NaCl-like sandbox) which does this.
Edit: To anyone who downvoted me, could you please let me know why?
[+] [-] nnq|11 years ago|reply
I mean, this http://doc.urbit.org/doc/hoon/tut/1/ is supposed to be a "tutorial" but it's definitely not what anyone else would call a "tutorial". It's more like a "philosophical introduction" to a PhD paper, which would be ok if labeled as such. A tutorial should be about "how do I do X using Y, without bothering to really understand Y" because this is what a tutorial is about, a "mostly wrong" "mental shortcut" that you take in order to gain some kind of "feel for how something works" before actually delving deeper and reading up on the theory.
[+] [-] state|11 years ago|reply
Our documentation has advanced since this was posted. I'd be interested to talk more out of band, but can't find your email. If you're up for it I'm galen at tlon.io.
[+] [-] jacquesm|11 years ago|reply
"While nowhere near the simplest such automaton known, and certainly not of any theoretical interest, Nock is so stupid that if you gzip the spec, it's only 374 bytes. Nock's only arithmetic operation is increment. So decrement is an O(n), operation; add is O(m * n)... "
Don't they mean 'subtraction' rather than 'add'?
edit: This is so fascinating, it has me totally enthralled. Think smalltalk meets lisp meets some wild eyed programmer who knows just how to appeal to the general frustration most programmers should have (do they?) about the state of our art.
Best post on HN in a long time, very curious how this one will turn out in the long term. May all your ships come in ;)
edit2:
Digging around a bit more: Peter Thiel and a bunch of others have apparently invested in this through a vehicle called 'Tion', https://angel.co/tlon (the Thiel reference is that Thiel backed John Burnham, who is co-founder in Tion).
[+] [-] Chattered|11 years ago|reply
EDIT: It seems they are going for a naive implementation where subtract just repeatedly calls decrement, so yes, that's going to be O(m*n).
[+] [-] yebyen|11 years ago|reply
It is a reference to something out of Jorge Luis Borges
[+] [-] yongjik|11 years ago|reply
Especially this part: > Shapiro also discovered that the group had been working together so long it had developed a kind of private slang. It took months to comprehend what the programmers were talking about. Most of them were book lovers and trivia mongers who enjoyed developing a metaphor based on obscure sources and extending it via even more unlikely combinations. For instance, the object in the Xanadu system that resembled a file was called a bert, after Bertrand Russell. With files called bert, there had to be something called an ernie, and so in the Xanadu publishing system, an ernie was the unit of information for which users would be billed. To understand the details of Xanadu, Shapiro had to learn not only the names for things, but also the history of how those names had come to be.
[1] http://archive.wired.com/wired/archive/3.06/xanadu_pr.html
[+] [-] urbit|11 years ago|reply
[+] [-] macu|11 years ago|reply
[+] [-] pxndx|11 years ago|reply
[+] [-] gfodor|11 years ago|reply
[+] [-] weinzierl|11 years ago|reply
[+] [-] johnloeber|11 years ago|reply
[+] [-] jeremyrwelch|11 years ago|reply
[+] [-] unknown|11 years ago|reply
[deleted]
[+] [-] newuser88273|11 years ago|reply
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 implement stuff to that minimal spec.
So you expect you can do that. But you can't. That minimal spec might as well not exist; you can't just read it and go on to implement, say, a programming language on top of Urbit.
"But you can!" you might object. Try it. Read nothing but that spec and implement, say, a tiny BASIC on top of it. Compile some simple programs. Run them. Now, what happens? Nothing, for now. But look, my processor core is heating up. Something must be happening! Just wait. Wait. Wait. No, still nothing. Wait some more. Just a few years, maybe? No, still nothing (except heat). Etc.
So no, that elegant spec doesn't give you anything but a way to heat your computing cabinet.
Realizing this, I put Urbit in the "suspicious, may be a con" bin. Hasn't escaped from there, yet.
[+] [-] perlgeek|11 years ago|reply
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 as you said, insincere.
[+] [-] wmf|11 years ago|reply
Can you explain what the actual problem is? "Only X lines of code" puffery is endemic in programming so I'm not sure why Urbit should be singled out.
[+] [-] easytiger|11 years ago|reply
If the spec expands does the guy wearing the t-shirt have to eat lots of pizza?
[+] [-] chops|11 years ago|reply
This seems crazy ambitious on its own, and add to it that it's public domain. Very curious where this will be headed.
[+] [-] unknown|11 years ago|reply
[deleted]
[+] [-] krick|11 years ago|reply
[+] [-] krick|11 years ago|reply
[+] [-] jacquesm|11 years ago|reply
That said, the more I read about it (a couple of hours so far) the more I'm thinking it will not succeed because of some of the weirder philosophical decisions that have already been cast in stone.
It's basically a variation on the 'landgrab' theme. Think bitcoin or the domain name system with half the space grabbed up by the ruling corporation, with an arbitrary 'ingroup' and a very large 'outgroup'.
You'd think that by now the whole point the web rammed home with its unbridled success is that open is better but I guess the mobile walled gardens have whetted the appetite of future wannabe corporate overlords.
Anyway, I still wish them best of luck, that's an economic move on my part, it costs nothing and I suspect they are self limiting enough that it will not achieve the world domination they are dreaming of. See also: the singularity.
[+] [-] thibauts|11 years ago|reply
[+] [-] macu|11 years ago|reply
In fact it reminds me about a massive book on cellular automation that I once picked up, which went to incredible length in interpreting the potential of dynamic patterns in 2D space. It was a monument to extreme intellectual rigour and dedication, if nothing else. If only I could remember the title.
[+] [-] zenlikethat|11 years ago|reply
[+] [-] tunesmith|11 years ago|reply
[+] [-] sjclemmy|11 years ago|reply
Although, I read this:
"A pier is an Urbit virtual machine that hosts one or more Urbit identities, or ships. When you run bin/vere -c, it automatically creates a 128-bit ship, or submarine. Your name (a hash of a randomly-generated public key) will look something like:
~machec-binnev-dordeb-sogduc--dosmul-sarrum-faplec-nidted,...
and I laughed. A lot.
[+] [-] k2enemy|11 years ago|reply
[+] [-] jevinskie|11 years ago|reply
[+] [-] hyyypr|11 years ago|reply
And somehow makes it even more magical than when you read the docs.
[+] [-] youngthugger|11 years ago|reply
[+] [-] amelius|11 years ago|reply
1. A new computing model, similar to how combinators work.
2. A programming language which produces expressions involving these combinators.
3. An operating system built on the above.
4. A cloud computing environment built on the above.
Sorry, but while interesting, this sounds a little too ambitious, even by HN standards :)