Live data from Hacker News

Urbit: a personal cloud computer

doc.urbit.org

201–210 of 281 posts

Re: Urbit: a personal cloud computer

#201
post #136

Earlier quoted context omitted.

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…

I haven't read all of Unqualified Reservations, but what I have read so far (Dawkins, Open Letter, Gentle Introduction) has not been difficult to read at all. Perhaps long and winding, but not opaque. In fact, I find Moldbug to be much more accessible than his sources of inspiration (which are standard fare if you even want to even begin with political theory).

Yeah, people who think Moldbug is opaque should try reading a little Carlyle. A few years back I spent a week powering through Carlyle's main political works (Chartism, Latter-Day Pamphlets, Shooting Niagara, and the Occasional Discourse), and it took a couple of days just to get acclimated to his writing style. By comparison, Moldbug is a breeze.

Re: Urbit: a personal cloud computer

#202

Earlier quoted context omitted.

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…

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.wod.dur)
          }
        }
      }
    }
  }
Is this better? Arguably, it's easier to learn. But I'm not sure I would regard it as better.

Also, for your convenience we've assigned CVC nonsense names to all the ASCII characters. Pasting from the source:

  ++  ace  (just ' ')
  ++  bar  (just '|')
  ++  bas  (just '\\')
  ++  buc  (just '$')
  ++  cab  (just '_')
  ++  cen  (just '%')
  ++  col  (just ':')
  ++  com  (just ',')
  ++  doq  (just '"')
  ++  dot  (just '.')
  ++  fas  (just '/')
  ++  gal  (just '')
  ++  hax  (just '#')
  ++  kel  (just '{')
  ++  ker  (just '}')
  ++  ket  (just '^')
  ++  lus  (just '+')
  ++  hep  (just '-')
  ++  pel  (just '(')
  ++  pam  (just '&')
  ++  per  (just ')')
  ++  pat  (just '@')
  ++  sel  (just '[')
  ++  sem  (just ';')
  ++  ser  (just ']')
  ++  sig  (just '~')
  ++  soq  (just '\'')
  ++  tar  (just '*')
  ++  tec  (just '`')
  ++  tis  (just '=')
  ++  wut  (just '?')
  ++  zap  (just '!')
One of the problems with using these handy little glyphs in syntax (and an even worse problem with using Unicode glyphs in programming, btw) is that "semicolon" is not convenient to say. The length of the vocalization matters a lot to how you think about a symbol, even if you don't often say it.

Re: Urbit: a personal cloud computer

#203
post #174

Earlier quoted context omitted.

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…

https://github.com/urbit/urbit/blob/master/urb/zod/arvo/eyre...

What is pimp? What is pest seam marl?

What do any of these names mean? What does any of this do? Forget not knowing the syntax, the names look like gibberish.

Re: Urbit: a personal cloud computer

#204
post #135

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 in…

This is solid and thoughtful feedback. Thanks.

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.

Re: Urbit: a personal cloud computer

#205

Earlier quoted context omitted.

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

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, maybe you rolled your own decrement, so the interpreter can't match it with the jet it uses for stock Hoon decrement.

That's okay, because the jet matching mechanism is not in any way specialized to the code. All you have to do is (a) get your compiler for the new language to emit a proper jet hint for your things-you-want-to-be-fast, (b) write correctly matched C implementations, and (c) add them to a static array.

Or to put it more briefly: a well-designed Nock implementation is not in any way coupled to the Hoon or Arvo layers.

One of the not-quite-finished things about our interpreter right now (other than that it interprets the tree directly and so gets about 1.5 Nock mips, which is pathetic) is that jets have to be compiled into the kernel and aren't opened by dlopen. Ideally we'd even load something like a PNACL/LLVM object, and we'd get it the same way we get the Hoon source, ie, via Urbit itself.

Re: Urbit: a personal cloud computer

#206
post #170

Earlier quoted context omitted.

I never would have guessed that Urbit has funding. That sounds like a very interesting job.

Peter Thiel is known for his financial support of both neoreactionarism and various types of out-there futurism; I wouldn't be surprised if he's involved, and I'm sure he's not the only jillionaire with similar interests.

On the other hand if someone told me that a certain angel is funding Urbit, I would probably have guessed that it was Peter Thiel. It seems like just the kind of ambitious/ridiculous and politically loaded project he would be interested in.

I have no idea whether Urbit is as significant an idea as Mr. Moldbug suggests, but it's too interesting not to try out at least.

Re: Urbit: a personal cloud computer

#207
post #174

Earlier quoted context omitted.

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…

https://github.com/urbit/urbit/blob/master/urb/zod/arvo/eyre... What is pimp? What is pest seam marl? What do any of these names mean? What does any of this do? Forget not knowing the syntax, the names look like gibberish.

I think the classic analogy is "grep." But they are commented, at least:

  ++  pimp              ::  traced request
    $:  ful=?           ::  | === HEAD
        fur=(unit mark) ::  type goal
        hen=duct        ::  event trace
        som=seam        ::  logical request
        pez=pest        ::  request state
        sip=marl        ::  injected scripts
    ==                  ::
I think this is not at all an unusual data structure for one to find in an HTTP server, no?

Now, this style (four-letter lapidary arm names, usually not nonsense strings but nonsense words) works in some places but not others. Frankly, %eyre is not exactly a triumph of the lapidary style...

Re: Urbit: a personal cloud computer

#209
post #190
post #170

Earlier quoted context omitted.

Peter Thiel is known for his financial support of both neoreactionarism and various types of out-there futurism; I wouldn't be surprised if he's involved, and I'm sure he's not the only jillionaire with similar interests.

> Peter Thiel is known for his financial support of... neoreactionarism Do you have examples?

Sure. He funds Eliezer Yudkowsky through MIRI; "friendly AI" futurism is at this point a branch of the "Dark Enlightenment". Thiel himself has famously said "I no longer believe that freedom and democracy are compatible".

Re: Urbit: a personal cloud computer

#210
post #175

Earlier quoted context omitted.

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 in…

Thank you very much for your long explanation. I really do care because I really like the idea of this. (Even I don't understand everything for now) The question is: Why is my pier not trying to reach any of the available carriers then but only ~zod?

Your submarine "needs" ~zod to be found by anyone because:

   try=> ->- (sein ->-
... ~zod is your parent ship. Without him, you simply have no forwarding address.

If your batz wizardry is sufficient and ~zod is not there (both of these are things that we are not counting on being true when you run Urbit for the first time) you will still get the same result in your terminal, you can reach out and contact other carriers and their friends, even without ~zod. They just can't find you. And you need to find another way to bootstrap your clay (filesystem) if you care about having local clay.

Think about the difficulty of coordinating multiple stakeholders, compared to the ease of explaining the "benevolent dictator" model that most of computing is really based on today. If the only thing that ~zod needs to do is point submarines at one another and facilitate the existence of other signing ships under his domain, that's very easy. Doing those things without ~zod's cooperation will require some further thought and more explanation.

I am a carrier owner (~del) and I count on ~zod to make it easy for new subs to find me. It's very convenient this way. But, anyone who knows how to type:

   :~del/main=/bin/hi ~dalnel
... can also reach out to my carrier and run "hi" (become mmy neighbor) to find ~dalnel with my help, and exchange keys with him (~dalnel is the cruiser, like ~zod's ~doznec).

~zod never needs to get involved. There is, however, no magic under the hood. My carrier ~del works exactly the same way, except he is not preferred in the same way by the submarine client implementation.

Post reply on HN