20 ms·
Urbit: an operating function
- pcmonk 11y agoFront page with demo videos: http://urbit.org http://urbit.org
- xena 11y agoThis is a really interesting read. I'm excited for urbit now!
- kungfooguru 11y agoReading anything from them always reminds me of TempleOS. There are some hilarious gems if you skim it, like "Urbit is highly intolerant of computation error, for obvious reasons, and should be run in an EMP shielded data center on ECC memory."
- MichaelAza 11y agoI always think of TempleOS as well. Both project maintainers have created some impressive and/or interesting technology that is hindered by inflated self importance and being different for the sake of being different. Another common point - HN has a soft spot for both and upvotes most content related to these projects.
- yarvin9 11y agoIt'd be interesting to hear a more detailed description of what you'd classify as "different for the sake of being different." There's certainly plenty of code in this world that's the same for the sake of being the same. It's not terribly interesting to use CGA graphics for the sake of being different. On the other hand, I do wonder whether my children will grow up learning 1970s programming for the sake of being the same.
- deegles 11y agoOne example is that they flipped the meaning of 0 and 1 in their new language. >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.
- pcmonk 11y agoThis is exactly the way it's used in shell scripting, and honestly, it's more useful that way for us because it makes booleans default to true instead of false. If we're going to redo everything, we may as well do it right this time.
- minitech 11y ago> This is exactly the way it's used in shell scripting You say that like it’s a good thing.
- yarvin9 11y agoI'll give you that one! It's an old mistake and not very costly in practice, but the intuitive rightness isn't worth the pain in the butt. But the pain in the butt also isn't painful enough to match the difficulty of fixing it. I actually got this bad idea from Unix: !strcmp(), etc. It's certainly easier to overload error codes into a 0=true scheme, although Urbit doesn't actually do that.
- yarvin9 11y agoTempleOS is definitely more of a religious experience. They're also way ahead of us in CGA graphics. I think pretty much anything but the most fly-by-night data centers use parity memory, but I'm always concerned by the failure to spend a couple extra bucks on chicken wire for EMP shielding. The Carrington event actually did happen.
- thesnider 11y agoI wouldn't be so sure of that -- none of Google's clusters use ECC, for instance.
- miah_ 11y agoReally? "This paper studied the incidence and characteristics of DRAM errors in a large fleet of commodity servers. Our study is based on data collected over more than 2 years and covers DIMMs of multiple vendors, generations, technolo- gies, and capacities. All DIMMs were equipped with error correcting logic (ECC) to correct at least single bit errors" from conclusion 1. "The conclusion we draw is that error correcting codes are crucial for reducing the large number of memory errors to a manageable number of uncorrectable errors. In fact, we found that platforms with more powerful error codes (chip- kill versus SECDED) were able to reduce uncorrectable er- ror rates by a factor of 4–10 over the less powerful codes." DRAM Errors in the Wild: A Large-Scale Field Study : http://research.google.com/pubs/pub35162.html http://research.google.com/pubs/pub35162.html
- agumonkey 11y agoUrbit confuses me to frightening levels. Psychedelic substances levels. Kudos to them.
- tptacek 11y agoIt's too bad, really, because someone should do a serious general-purpose overlay network project, and it's clear that Urbit isn't it.
- yarvin9 11y agoYou're probably capable of something more interesting than a "middlebrow dismissal..."
- tptacek 11y agoI think Urbit spends a lot of time framing overlay networks in obscurantist and obfuscatory terms, tightly coupling the simple, useful idea of layering a more flexible network on top of restrictive IPv4 networks with less useful ideas like a series of new programming environments with their own ASCII pronunciation guide. I'm not sure what I gave was a middlebrow dismissal; it was just terse. I find Urbit unserious. I think that's unfortunate, because someone should do a serious, pragmatic overlay network.
- yarvin9 11y agoWe'll call it a terse highbrow dismissal, then. My terse highbrow dismissal: separating the programming environment from the protocol results in serious, pragmatic problems. For instance: protocols specified in English, in which messages are validated by hand and not by a type system.
- tptacek 11y agoThe notion that Urbit believes it can solve all the problems, rather than tackling a single important problem, is one of the things that makes it unserious to me. The inflexibility of the Internet service model is a serious problem. Poor formal methods for verifying protocols is a serious (albeit not lucrative) problem. Programming languages that make it difficult to express correct programs: serious problem. It is not clear to me how the solution to all three of those problems is the same startup.
- fit2rule 11y agoInteresting stuff, but in my usual 15 minutes of attention-span for things like this, utterly impenetrable. Can anyone who has had the privilege of being invited to the Urbit network enlighten us as to just how useful it is shaping up to be in light of, say, the situation with IPFS by comparison? (http://ipfs.io http://ipfs.io) Because to me, it seems that IPFS may well be ahead in terms of actual applicability right now. Am I mistaken?
- yarvin9 11y agoI love IPFS, and it's definitely ahead in terms of applicability. IPFS is solving a different problem -- it's a storage network, not a personal server. IPFS is more comparable to Freenet or BitTorrent. Urbit is more comparable to Sandstorm, although of course they're technically very different.
- fit2rule 11y agoLike I said, I'm yet to finish boning up on what, exactly, Urbit is .. Sorry - not trying to be pedantic - but how is IPFS not a personal server? I can serve content with it right now, in fact - its what I mostly use it for at the moment. I guess Urbit is more of an 'operating environment' that allows applications to be built, then?
- yarvin9 11y agoYes -- Urbit is a "server" in the sense of "computer," which you control and which runs your own apps. IPFS stores and serves your data; so does Dropbox, Cloudflare, etc. In a sense the best way to see IPFS is as a distributed CDN, of course with an immutable namespace that actually works.
- msutherl 11y agoDo you foresee Urbit making use of IPFS?
- 11y ago
- jitl 11y agothe concepts expressed in the first section "Obstacles" are interesting and make for good reading, but the implementation strategy in "Definition" are nuts. The authors completely disregard human nature and usability when designing Hoon. Random variable names? Sigils-only syntax? If they want to replace Unix and the Internet, they should remember why Unix won: because it was easy tp get things done. In Urbit new developers not only have to learn all the new concept words, they also have to suffer through a brainfuck/perl syntax and a hostile programming style. Success seems impossible.
- pcmonk 11y agoThe random three-letter variable names are only used in the kernel, and they're meant to only be used in code that's small/simple enough that they're warranted. In my opinion, we use too many of them, and I've been converting many of them to longer, more descriptive names. The rule that "punctuation is syntax, text is content" is useful, and it becomes very natural with a bit of practice. Hoon is very much not designed to be apparently usable, it is designed to be actually usable. Personally, I find it to be one of the most usable languages I've ever used.
- yarvin9 11y agoApparent usability isn't the same as actual usability. Pretty much everyone who learns Hoon is surprised by how easy it was, which may be a good thing or a bad thing depending. There are about a hundred runes (digraphs) in Hoon, but you mostly see only 10 or 15. Also, they're organized by internal structure (all | runes do the same kind of thing), and most runes are macros which resolve to about 20 built-in forms. It's a couple of orders of magnitude easier than learning Chinese, which again may be a good thing or a bad thing. Variable names designed to be memorable rather than meaningful are pretty normal in both math and functional programming. Math uses Greek letters for the same purpose, for instance. Also, as we note explicitly, this is a style that's optimal for simple code - in any language, you'd probably write add(a, b), not add(left_argument, right_argument). Actually, Perl originally won because it was easy to get things done. It's had problems since, but for different reasons...
- 11y ago
- deleted 11y ago[deleted]
- gkya 11y agoI do computing daily i.e. I use the internet like anyone else, and I use Emacs for feeds, mail, writing, programming little tools in elisp etc. Now after having read this, I cannot see how it be supposed to improve my daily computing routine. I think that it is indeed revolutionary this Urbit thing, in that it is as opaque and unpractically idealistic as any other revolution.
- csense 11y agoThe architecture is exciting. The problem is that the aesthetics of the tooling seems deliberately designed to alienate new users. For example the whitepaper gives new names to every punctuation symbol! And poking around the repo, there are gems like this: "A...variable name is a random pronounceable three-letter string, sometimes with some vague relationship to its meaning, but usually not..." "Nock, for mysterious reasons, uses 0 as true...and 1 as false..." The architecture is really cool, but the syntax is terrible.
- pcmonk 11y agoTraditional punctuation names suck. "Ampersand", "at sign", "caret"? For a language like hoon where we use a lot of symbols, that gets really tiring. Having one-syllable names for glyphs is really convenient, and they tend to roll of the tongue. Everyone's free to use whatever names they want, of course, we just find these useful. Most people love these once they get used to them. I don't think you can judge syntax by looking at it -- you have to use it for a little while. Hoon's syntax looks hard, but it's actually rather pleasant to use.
- yarvin9 11y agoAlso, the three-letter variable names aren't part of Hoon -- they're just a convention that works well if (and only if) you have short, simple functions. I've actually taken to using TLVs with a Hungarian suffix in C -- it works well if (and only if) you have short, simple functions. One way to think about variable names: declaring a variable is a way of saying "I couldn't quite get this into point-free form." Names should be the exception, not the rule. Again, this is much more true in a functional language.
- tptacek 11y agoThis right here is what I mean when I suggest Urbit is unserious. "Green is just yellow and blue. Why do we call it 'green'? That name sucks. From now on, we're going to call it 'yellue'." There's overreaching first-principles boil-the-ocean dorm room rethinking of concepts, and then there's renaming the ASCII characters.
- KaiserPro 11y agoisnt this basically the same idea as plan 9, but with some more opinions on "decentralised" networks.
- jpt4 11y agoTo the depths of my familiarity, Urbit is basically the same, to some shade or degree, including but not limited too, the ideas listed here: https://news.ycombinator.com/item?id=10279931 https://news.ycombinator.com/item?id=10279931
- yarvin9 11y agoLoosely, yes, they're both network operating systems. And of course, Plan 9 is brilliant. :-) All the details are different....
- masonicb00m 11y agoAwesome. 'For example, %= sounds like "centis" rather than "percent equals." Since even a silent reader will subvocalize, the length and complexity of the sound is a tax on reading the code.' This is great. Clever how some of the sounds are reminiscent of existing readings.
- david-given 11y ago"Since even a silent reader will subvocalize..." Actually, no. I don't.
- JoshTriplett 11y agoNeither do I. One of the very first things that guides on how to speed-read tell you is to stop yourself from internally reading aloud.
- icebraining 11y agoFor code, I've never even needed to stop myself; it's just intuitive. The idea that one reads code as one reads prose just seems weird. Code has so much structure (and so few operators, usually) that I can just directly map the symbols to the semantics, bypassing the composing characters.
- yarvin9 11y ago"Subvocalize" has a literal meaning (micro-activation of the vocal cords) which good silent readers avoid. But you're still activating the vocal areas of the brain [0]. If you read much poetry, you'll see that the connection between reading and sound is pretty inseparable. [0] http://www.ncbi.nlm.nih.gov/pubmed/23223279 http://www.ncbi.nlm.nih.gov/pubmed/23223279
- JoshTriplett 11y agoI wonder how much of that is pronunciation and how much is grammar and parsing. The latter don't require sounds.
- toothbrush 11y agoJavaScript needed to be able to read text document. Next.
- pcmoore 11y agoFor a more accessible alternative approach to all this madness see this mirror project https://github.com/tibru/tibru https://github.com/tibru/tibru
- yarvin9 11y agoThey do say noitatimi is the highest form of yrettalf...
- agumonkey 11y agoYou're such a snoc.
- jpt4 11y agoI do so enjoy seeing the casual vivisection of that which tends towards attracting mystical appreciation; what remains intact is all the more deservedly numinous. For an exactly diametric plunge from the same origin into the rarefied esoteric, there is: https://github.com/mnemnion/ax/blob/master/commentary%20on%20ax.md https://github.com/mnemnion/ax/blob/master/commentary%20on%2...
- icebraining 11y agoRarefied esoteric what?
- jpt4 11y ago"Esoteric" as in "the esoteric", its nominalized adjectival [0] guise. [0] https://en.wikipedia.org/wiki/Nominalized_adjective https://en.wikipedia.org/wiki/Nominalized_adjective
- deleted 11y ago[deleted]
- cgh 11y agoI'm not associated with this project, but your questions are answered in the Urbit white paper: http://urbit.org/preview/~2015.9.25/materials/whitepaper http://urbit.org/preview/~2015.9.25/materials/whitepaper
- fiatjaf 11y agoReally, you didn't read the whitepaper.
- fiatjaf 11y agoThe aesthetics is what is making this thing possible. Thinking with the old words would not allow development of new things. I don't know if this is good or bad, but it is sincerely trying to do new things, so a new language is appropriate.
- Rusky 11y agoNew things are developed every day with old words. There are existing words for just about everything Urbit does.
- jpt4 11y agoIndeed, even a Post Res mathematical structuralist will admit the instrumental utility of common words for similar entities; would you care to list a few, and their mappings between the jargon of Earth and Mars?
- fiatjaf 11y agoYou didn't get it. Not radically new things. There are existing words, but using them wouldn't allow the people from Urbit to think about combining concepts in the radically different way they are doing. In fact, they would end up saying: well, all we are trying to do already exists, so let's just write a library here, another there. You can argue this would be better, but their goal is to do a completely different thing, even if it looks it could be done with a new library for something.
- Rusky 11y agoNo... I got what you meant. But there are plenty of new languages and even reinvent-the-world projects that reuse existing terminology just fine. There's nothing about using existing words that makes it harder to "develop new things"- in fact, it makes it easier.
- eggy 11y agoNew things? Is Urbit based on Unix/Linux and the Von Neumann architecture? If so, it is just cosmetic coating on top of the same old foundation. I really like what's going on with people trying to create something like Urbit or old Lisp Machines on new hardware (not Von Neumann based). Interim OS, PilOS (PicoLisp on bare metal). I am still not sold on immutable data is the way forward either. I am reading a 1991 book by Peter M. Kogge "The Architecture of Symbolic Computers", playing with Shen, and interested to see what becomes of vector-based computing hardware with a language like J/APL. Lisp Machines still enthrall me, and I think a new take on them can be just what's needed to recreate computing. Not just a copy of the old Lisp Machines, but an entire rethinking of them.
- fiatjaf 11y agoThe best tagline for the project is what is written on the whitepaper, that a planet in Urbit is "the browser for the server side."
- throwawayyay123 11y agoI think it's important to note that Urbit - a very interesting piece of work that deserves more attention - would've been presented at Strange Loop if not the PC crowd made Strange Loop disinvite Curtis Yarvin (the creator of Urbit) for reasons unrelated to Urbit. Using throwaway for obviously reasons.
- yarvin9 11y agoI obviously find this a very interesting subject. However, I suspect there are better times and places to discuss it...
- throwawayyay123 11y agoI don't mean to take attention away from the real conversation here. However, there are a lot of people who are unaware of the back story, and this seems like a good place to make people aware of it.
- SrslyJosh 11y agoI like how your rhetoric removes all agency from the conference organizers, like they had no choice but to do what that horrible PC crowd wanted.
- JulianMorrison 11y ago"Do users want their own general-purpose personal cloud computer?" No, they do not. General purpose computers, as such, are useless and boring. They are only useful when converted into one or more appliances. Modern OSes are very good at this. Cloud general purpose compute exists. Its niche to the community of appliance builders, because nobody has any use for it directly.
- fiatjaf 11y ago"in the cloud, all users have is a herd of special-purpose appliances". The argument of the whitepaper is that our current internet and Unix environment does not allow for anything else than a cloud with lots of special-purpose appliances, but that does not mean this is the desirable situation, neither for the appliance builders nor for their users.
- SrslyJosh 11y agoI got as far as the first mention of Hoon, and then I thought to myself, "Oh fuck, didn't I read this a year or two ago?" It's all downhill from there.
- ClintEhrlich 11y agoThe flaw in this white paper is that it starts by explaining the solution instead of the problem. So everyone should start by skipping to the bottom and reading the conclusion: >In 1985 it seemed completely natural and inevitable that, by 2015, everyone in the world would have a network computer. Our files, our programs, our communication would all go through it. >When we got a video call, our computer would pick up. When we had to pay a bill, our computer would pay it. When we wanted to listen to a song, we'd play a music file on our computer. When we wanted to share a spreadsheet, our computer would talk to someone else's computer. What could be more obvious? How else would it work? . . . >The Internet didn't scale into an open, high-trust network of personal servers. It scaled into a low-trust network that we use as a better modem — to talk to walled-garden servers that are better AOLs. We wish it wasn't this way. It is this way. This is the problem Urbit aspires to solve: Why does everything suck? Why aren't we living in the future we were promised in 1985, where everything is easy because all software plays nice together? Why do we have a planetary series of Rube Goldberg machines instead of the fun version of the Borg? The answer is that we've been building everything on top of leaky abstraction, piling band-aids on top of band-aids instead of just starting with a stable foundation. Urbit's solution is to replace every OS, file system, and communications protocol on Earth with a single application: Urbit. The project is meant to be the biggest pain in the ass ever. It's an attempt to fix everything that is wrong with computers by rebooting the entire information age. The beauty is that it doesn't all have to happen at once. Urbit can function like a kernel for all non-Urbit systems: They get to call Urbit to receive its super-reliable data, but it never makes system calls so they can't inject side effects into the shiny new Urbit ecosystem. Over time, if Urbit works as intended, it will assimilate everything else. Once you understand the stakes, Nock and Hoon no longer look like cruel jokes. It would be madness to expect coders to invest all that effort to learn 'just another language.' It's only pseudo-madness to make the same demands while promising that their code will still work a million years from now, because all computers will still be running Urbit. Instead of caviling about details like how to pronounce the code when reading it aloud, let's delve into the issues that really matter: I. Does modern computing suffer from a leaky abstraction problem that needs to be solved? II. If so, is the solution to build an overlay network that provides a global static functional namespace? III. If so, is Urbit a viable implementation of that solution? IV. If so, what is the likelihood of Urbit reaching the critical mass necessary for mass adoption? The last question is the one that interests me the most. In order to overcome the massive inertia behind legacy computing, Urbit needs a killer app: Something that exploits the new system's intrinsic advantages to accomplish feats that were previously impossible. So... uh... Any suggestions?
- kopter 11y agoIf things are really so screwed up, and we need to recover the dreams of the past, why not "recurse on the idea of the computer", and invest in something like Pharo Smalltalk instead?
- a-dub 11y agoThe backup plan is to typeset and publish the mailing list as a collaboratively written science fiction novel in the event that the main project fails...
- _m19m 11y agoThis seems to come up at regular intervals. It's worth noting that the architects of this system are the "facist teenage Dungeon Master[s]" of http://thebaffler.com/blog/mouthbreathing-machiavellis http://thebaffler.com/blog/mouthbreathing-machiavellis
- asdaqeqweq 11y agoThat doesn't seem worth noting.
- rolandnsharp 11y ago>We know one thing about the whole network: by default, a social "network" is a monarchy. It has one corporate dictator, its developer. By default, a true network is a republic; its users govern it. And more important: a distributed community cannot coerce its users. Perhaps there are cases where monarchy is more efficient and effective -- but freedom is a product people want. It's a product people say that they want. Isn't freedom terrifying. The freedom business has never payed as well as the slave business. That was a fun white paper to read, even if I had to skim over the programmatical parts. The strangest part of this all is that they don't even know what to do with it. Okay, we have the perfect computing system, now what? Do we simply live here, all nice and connected.
- norswap 11y agoI've always heard: do one thing and do it right. It's the Unix philosophy, before it was totally disregarded. Urbit seems to take the total counterpoint of this advice, and I wonder whether it's a good idea. What I don't get is what it is trying to achieve. The stated goal are too abstract. What are some use-cases? Is it really necessary to scrap the whole OS and languages to achieve these goals? I do sympathize with the idea of rewriting everything from scratch, and I too feel that "almost everything is terrible" in software-land. But I doubt rewriting everything without having a firm grasp on the underlying issues is the way to go. It it a fun exercise, and inspiring besides, but I'm unsure it can be more than that.