7 ms·
https://github.com/urbit/urbit/blob/master/urb/zod/arvo/ames.hoon#L470 https://github.com/urbit/urbit/blob/master/urb/zod/arvo/ames... There are hundreds of li
by lumpypua 12y ago
https://github.com/urbit/urbit/blob/master/urb/zod/arvo/ames.hoon#L470 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 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-neoreaction.png 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.
- valvar 12y agoI 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).
- lexcorvus 12y agoYeah, 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.
- MrBuddyCasino 12y agoHe does have really odd political views. I know HN shouldn't be about politics, but this was a really interesting read: http://www.thebaffler.com/blog/mouthbreathing-machiavellis/ http://www.thebaffler.com/blog/mouthbreathing-machiavellis/ It looks like he thinks that the benevolent-dictator-for-life model is how countries should be run. And Peter Thiel seems to agree with him.
- jarcane 12y agoThat is quite actually one of the creepiest things I've read in a while. I've always been fundamentally uncomfortable with a certain wing of Valley thought, but man, even I didn't think it went that far and in such lofty halls.
- mikeash 12y agoI thought it was pretty common to think that a benevolent dictatorship was a great way to run a country. The problem is in making sure your dictator is benevolent. Nobody knows how to do that, so we try non-dictatorial systems instead.
- MrBuddyCasino 12y agoExactly.
- VexXtreme 12y agoThey even seem to have a subreddit: https://www.reddit.com/r/DarkEnlightenment/ https://www.reddit.com/r/DarkEnlightenment/ The whole "ideology" is basically just fascism and institutional racism dressed up as something else. Despicable. I would never use any software from some Hitler-reboot type of person. Don't empower and feed such people. They are usually narcissistic megalomaniacs who think they are fit to rule and tyrannize others.
- lexcorvus 12y agoBefore accusing someone of being a "Hitler-reboot type of person", perhaps you should, you know, actually read what they have to say about Hitler. For example: Since most people are neither historians nor philosophers, the fact that Hitler was on the extreme Right, and this Reaction is also on the extreme Right, raises some natural concerns. Again: the only way to face these concerns is to (a) provide a complete engineering explanation of Hitler, and (b) include an effective anti-Hitler device in our design. —Mencius Moldbug, http://unqualified-reservations.blogspot.com/2009/09/gentle-introduction-to-unqualified.html http://unqualified-reservations.blogspot.com/2009/09/gentle-... In other words, an explicit design goal is to avoid Hitler-like outcomes (because, duh). Thus, the accusation that he's a "Hitler-reboot type of person" reflects either simple ignorance—which you can fix by doing a little reading—or outright mendacity—for which, I'm afraid, there may be no cure.
- urbit 12y agoStepping 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...
- Locke1689 12y agoIs 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.
- urbit 12y agoGood 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). 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. I think our small sum of experience with this daring idea is that sometimes, it works better than other times. Basically, TLV naming is appropriate for code that is simple, but not trivial. (Trivial code, like "++add", is "ultralapidary" and gets OLV names - like "a" and "b".) Ideally all of the Arvo kernel and Hoon self-compiler would meet the TLV standard of quality. All of it is written this way, though. In general, if you should be writing lapidary code, you know it, and if you don't know you shouldn't. (And should use more or less normal names as in any Lisp.)
- rgrieselhuber 12y agoIs that image of associated blogs generated using some tool?
- ricardobeat 12y agoWow, 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) ::
- urbit 12y agoSuppose 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 '<') ++ gar (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.
- axlprose 12y ago
- JDulin 12y agoAs a coder of "various ability and background", I found that Hoon source code was a relaxing joy to read and write after a few weeks of dedicated study. It is, believe it not, designed with readability as a first-class priority. However, a common meme in language design today is that "Code should read like prose." This sounds good, because it means languages are easy to learn. Who wants to learn a bunch of symbols and patterns and junk? I want to code (Python, JavaScript, etc.) now! But when we program, we aren't dealing with the trivial knowledge English is efficient at exchanging in an email, or the subtly it portrays in a novel. We are talking to a computer. The ideas we explain to a computer are often much more complex than we can explain precisely with English in any reasonable amount of time, so complex we often lose ourselves in them. Mathematicians and physicists gave up on making human language explain specific technical ideas long ago. Have you ever read a paper on cosmic topology or quantum field theory? There's a comforting padded bumper of English framing the ideas, but the reason the paper is published is in symbols which would appear to the uninitiated as "hundreds of lines of noise." The English is usually just an introduction. I think Hoon is wonderful [1] because it has both power and predictability. Power lets you express complex ideas concisely and easily, while predictability lets you read and understand someone else's code without frustration. Perl is powerful because it's dense, but it does so at the cost of predictably. Mathematics symbols are terribly powerful, but wildly unpredictable [2]. Python is sort of powerful and sort of predictable. The seductiveness of English simulacra programming languages is that you often don't realize how much power you're giving up because it's just so relaxing to not think about symbols and patterns when your code has the predictability of an email. Hoon's power is in the zoology of runes (Digraphs) and it's predictability is rooted in its homoiconicity. Every symbol on the keyboard is utilized to build powerful runes, each of which in turn is utilized to append predictable structure onto your AST. When you understand the basic patterns of these constructions and reductions, it's not hard to read someone else's library and understand it in an afternoon. I can't say the same for the Java SDKs I come across. [3] I'm not saying it isn't inaccessible at first and doesn't take time to learn. I am saying it is worth it. [1] It's my favorite language - It is just plain fun. [2] That's why the English frame around a physics paper is there - It tells you what each symbol represents in this paper and what they're trying to do. [3] The language design also includes several decisions to avoid the pratfalls of other homoiconic languages (Primarily the readability of Lisp), but those are explained in the docs.