Live data from Hacker News

Urbit: a personal cloud computer

doc.urbit.org

221–230 of 281 posts

Re: Urbit: a personal cloud computer

#221
post #202

Earlier quoted context omitted.

Wow, now I'm curious about the language. Looks like made-up gibberish at first sight: ++ lax :: lax:as:go |_ [her=ship dur=dore] :: per client ++ cluy :: cluy:lax:as:go ^- [p=life q=gens r=acru] :: client crypto ?~ lew.wod.dur !! ?. =(fak.ton r.i.lew.wod.dur) ~|([%client-wrong-fake her] !!) :+ p.p.q.i.lew.wod.dur q.q.i.lew.wod.dur (haul r.q.i.lew.wod.dur) ::

Suppose we wrote this with keywords. I can't stomach a naked keyword so I'll put a colon on the front. We might write: :function lax { :object :tuple{her: ship dur: dore} { :function cluy { :produce :tuple{p: life q: gens r: acru} :ifno lew.wod.dur :error :unless (equals fak.ton r.i.lew.wod.dur) { :record :tuple{%client-wrong-fake her} :error } :then { :tuple { p.p.q.i.lew.wod.dur q.q.i.lew.wod.dur (haul r.q.i.lew.wo…

> Is this better? Arguably, it's easier to learn. But I'm not sure I would regard it as better.

For what criteria of 'better'?

I can't really present an argument either way since I'm not familiar enough with the language, but it does seem like it requires a fairly high amount of cognitive overhead for... I'm not sure exactly. Keystrokes?

There is something to be said about the efficiency of glyph-based writing systems like kanji, so APL might've been on to something, but overloading common ascii characters and creating meaningless words? That seems like a lot of noise for brains without extraordinary working memory to filter out on a regular basis.

I'm sure thinking and writing in it are fine (even brainfuck isn't difficult to write), but for something intending to be the backbone of the internet, I would've assumed maintainability to have been the most important design goal.

Re: Urbit: a personal cloud computer

#222
post #200

Earlier quoted context omitted.

Is the given text your attempt at eliminating reserved keywords by using nonsense as keywords? Other languages have simply decided to use contextual keywords, which preserves familiarity and flexibility.

Good lord, no! Hoon has no reserved words at all. The nonsense words are all names. This is entirely a style choice. The actual name syntax is roughly Lisp's - for instance, (my-long-function arg1 arg2) does the same thing (roughly) in Hoon as in Lisp. In the "lapidary" Hoon in which most of the kernel is written, facets (variable names, roughly) are meaningless TLV strings, usually CVC (consonant-variable-consonant)…

In the "lapidary" Hoon in which most of the kernel is written, facets (variable names, roughly) are meaningless TLV strings, usually CVC (consonant-variable-consonant). The user experience is much the same as with Greek letters in math: you remember the binding between symbol and semantics if you know the code you're looking at. If you are learning the code, your first task is to learn that binding. Once you know the code, there is no quasi-semantic intermediary - a meaningful name - between the symbol and the concept.

Have you been reading a lot of Heidegger or was this an independent decision?

Re: Urbit: a personal cloud computer

#223
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.

Oh, yeah. Sorry, typed that on phone. Just meant "a cycle".

Re: Urbit: a personal cloud computer

#224
post #200

Earlier quoted context omitted.

Good lord, no! Hoon has no reserved words at all. The nonsense words are all names. This is entirely a style choice. The actual name syntax is roughly Lisp's - for instance, (my-long-function arg1 arg2) does the same thing (roughly) in Hoon as in Lisp. In the "lapidary" Hoon in which most of the kernel is written, facets (variable names, roughly) are meaningless TLV strings, usually CVC (consonant-variable-consonant)…

In the "lapidary" Hoon in which most of the kernel is written, facets (variable names, roughly) are meaningless TLV strings, usually CVC (consonant-variable-consonant). The user experience is much the same as with Greek letters in math: you remember the binding between symbol and semantics if you know the code you're looking at. If you are learning the code, your first task is to learn that binding. Once you know the…

The latter. :-)

Re: Urbit: a personal cloud computer

#225
post #205

Earlier quoted context omitted.

This goes even deeper. Let's just go on and assume that Urbit's spec-bearing T-shirt includes everything you need for IO. Now consider this promise from Mr Yarvin, found in the older Urbit thread someone linked to: "And actually, if you don't like Hoon [Urbit's strange, obfuscated high level programming language] you can build your own language on this platform. So long as it compiles to Nock [purportedly documented…

Why would you write a new Nock back-end at the same time as a compiler for a new language? Even if you did, you'd want to test the new interpreter with the old language, and the new language with the old interpreter, before going any further. There is certainly no free lunch in this system. If your CPU is radiating heat, it is spending a bunch of time in Nock formulas which could be better optimized. For instance, ma…

A given Nock implementation is intimately coupled to a matched Hoon compiler.

Attempts to write anything just to T-shirt spec and run on a given Nock-based platform are almost certain to fail. The real spec you'd be required to write to is implied by the platform implementation. Marketing problem: That real spec is not very elegant and it doesn't zip down to a handful of bytes. It doesn't fit on a T-shirt. It's not a stable specification. It doesn't describe an open platform. Yet Urbit marketing copy wants me to believe all those things.

Re: Urbit: a personal cloud computer

#226
post #200

Earlier quoted context omitted.

Good lord, no! Hoon has no reserved words at all. The nonsense words are all names. This is entirely a style choice. The actual name syntax is roughly Lisp's - for instance, (my-long-function arg1 arg2) does the same thing (roughly) in Hoon as in Lisp. In the "lapidary" Hoon in which most of the kernel is written, facets (variable names, roughly) are meaningless TLV strings, usually CVC (consonant-variable-consonant)…

Please define "TLV", "OLV", and "lapidary".

Three-letter variable, one-letter variable, http://www.merriam-webster.com/dictionary/lapidary.

Re: Urbit: a personal cloud computer

#227
post #202

Earlier quoted context omitted.

Suppose we wrote this with keywords. I can't stomach a naked keyword so I'll put a colon on the front. We might write: :function lax { :object :tuple{her: ship dur: dore} { :function cluy { :produce :tuple{p: life q: gens r: acru} :ifno lew.wod.dur :error :unless (equals fak.ton r.i.lew.wod.dur) { :record :tuple{%client-wrong-fake her} :error } :then { :tuple { p.p.q.i.lew.wod.dur q.q.i.lew.wod.dur (haul r.q.i.lew.wo…

> Is this better? Arguably, it's easier to learn. But I'm not sure I would regard it as better. For what criteria of 'better'? I can't really present an argument either way since I'm not familiar enough with the language, but it does seem like it requires a fairly high amount of cognitive overhead for... I'm not sure exactly. Keystrokes? There is something to be said about the efficiency of glyph-based writing system…

Essentially, I'd say most peoples' brains are better at associative memory than they think they are.

When you see a digraph like -> or ?: in C, do you think "hyphen greater-than" or "question-colon"? Your brain long ago learned to treat these as individual symbols, not strings of two characters. And this despite not even having easy-to-say names for them. (In Hoon they are "hepgar" and "wutcol" respectively.)

Re: Urbit: a personal cloud computer

#228
post #205

Earlier quoted context omitted.

Why would you write a new Nock back-end at the same time as a compiler for a new language? Even if you did, you'd want to test the new interpreter with the old language, and the new language with the old interpreter, before going any further. There is certainly no free lunch in this system. If your CPU is radiating heat, it is spending a bunch of time in Nock formulas which could be better optimized. For instance, ma…

A given Nock implementation is intimately coupled to a matched Hoon compiler. Attempts to write anything just to T-shirt spec and run on a given Nock-based platform are almost certain to fail. The real spec you'd be required to write to is implied by the platform implementation. Marketing problem: That real spec is not very elegant and it doesn't zip down to a handful of bytes. It doesn't fit on a T-shirt. It's not a…

If you s/is/could be/, I would agree. I would say s/is/should not be/. That is, it is possible to screw this up and create "intimacy" (high coupling), but obviously I recommend against it.

Put it this way: when it's properly done, the jets (specific optimizations) are coupled to your compiler and libraries about the way your display server is coupled to your graphics driver. As a programmer you can't, don't and shouldn't know what if any GPU is executing your GL. Or at least, if you do - mistakes have been made.

Added to this is the fact that it's possible to obtain at least decent performance just by using standard basic math, eg, decrement. Yes, you can roll your own decrement - but at this point you are just being perverse.

Re: Urbit: a personal cloud computer

#229
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…

So "you really want your data model to be acyclic" means, "you want your programming language to forbid construction of cyclic data structures"? So, for example, connected graphs are not objects you can represent?

you can, but they become a special second-class type of reference separate from ownership.

Re: Urbit: a personal cloud computer

#230
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."

I definitely wouldn't endorse this description - it's a bit secondhand.

What I'd say is that Urbit is not designed to be a darknet. It is not Tor and it's not Bitcoin. Also, it is not designed for external governments, or even its mysterious and sketchy founders, to govern - it is designed to govern itself. (Through user-level reputation mechanisms which have yet to be built, but are relatively easy to build - because the limited supply of identities controls Sybil attacks.)

In particular, Urbit should be quite good at enabling anonymous free speech beyond the reach of governments. A self-hosted node in your closet is quite practical and effective. There is no anonymization / onion routing (and you can't trivially route Urbit over Tor, because Urbit uses UDP), but someone could build that.

Although I don't want them to. I want to enable anonymous, or better yet pseudonymous, free speech. I don't want to help people buy drug$ or childpron through the mail. Fortunately or unfortunately, there are already much better tools for that.

Post reply on HN