19/ and when you do, the software on your machine is in connection with every other person in the Urbit-verse, or, rather, the software running on THEIR machines. You can type at your local Urbit, and interact with other people and their local Urbits. These local things >>>
-
-
30/ OK, I need to do some work now. I will continue this thread later today, perhaps, with critiques I have. If anyone has questions on what I've written so far, please respond to this tweet, and I'll try to answer later.
Show this thread -
31/ Phillip, as you know, I was employed by Tlon for 18 months (one 6 mo contract, a yr off, then back for a 12 mo contract) and I heard the view expressed internally by multiple people "documentation should be bad, so that normies can't understand".https://twitter.com/pcmonk/status/1502307438023757829 …
Show this thread -
32/ The exact phrasing was something like "It's good that the wall is so hard to scale, so that only the best smartest people can make it inside. I don't want the normies to be able to understand. This should only be for the elite."
Show this thread -
33/ /shrug How many documentation people have quit Tlon because their attempts to make things accessible conflicted with Curtis' dictates to only explain it One Way? At least two, I believe. >>>https://twitter.com/pcmonk/status/1502314551735304193 …
Show this thread -
34/ I actually started writing a book to explain Urbit to normies, modeled on Kernigan & Ritchie's "The C Programming Language". Curtis was excited about this (about 3 yrs back, IIRC?) but then got upset when he read a draft of the first 5 chapters "I was explaining it wrong"
Show this thread -
35/ ...so that's when I got disgusted and gave up on the project. So re
@pcmonk 's quote "it has never made its way to the docs". It's exactly the reverse - no attempt to make things comprehensible has made its way to the docs. Maybe not intentional obfuscation, but >Show this thread -
36/ intentional refusal to de-obfuscate / explain things in a way that 2 or 3 different docs guys wanted to, in order to reach normie users / coders.
Show this thread -
37/ Docs (at least as of 2-3 years ago; I admin that I have not checked since then) suffer from three problems: (a) a severe lack of organization. As anyone who has read Molds essays knows, Curtis loves discursive digressions. Essay on type theory shoehorned into docs on vars
Show this thread -
38/ (b) Obscure naming. The team (i.e. Curtis) was in love w 4 letter words (Tlon, Hook, Nock) and extended this to EVERYTHING. Which led to active anti-intuitive names like "gate", "wing", "door". Also, team (Curtis) rejected 90% correct analogies. >>>
Show this thread -
39/ e.g. Hoon has a concept of a chunk of code, that does a thing, based on input data, and this chunk of code is named. Is this a "function", a "procedure", something like that? NO!!! DO NOT CALL IT THAT. It differs in some subtle ways from a function, so don't call it that.
Show this thread -
40/ When I started writing a book on programming Hoon there was a very strong disagreement - the stance from the top was "if we call it a function, OR EVEN COMPARE IT TO A FUNCTION, people will be lulled into a false sense of security...so call it a "battery" so that
Show this thread -
41/ ...people will be INTENTIONALLY confused, and will have to approach Hoon from first principles. It is GOOD that they have no basis to compare things.
Show this thread -
42/ I ran a small tutorial group off site, and a dozen people followed EXACTLY when I explained "the 'battery' is a library of functions. The 'sample' is the arguments that are passed into the function. The 'context' is like the Windows registry, or the unix env vars"
Show this thread -
43/ a "core" is a library + some data for it to operate on. If a library has just one function in it, it's called a "gate". etc etc etc It took me MONTHS to decode these things ... and once I got it...it was all so simple. Bad docs / an insular culture kept me in the dark.
Show this thread -
44/ ...which gets me to (c) all the docs are circular / self-referential. It's ok to introduce new concepts with new names ... but you need to make a directional acyclical graph of concepts Good: animal - moves, respirates mammal - subtype of animal w hair dog - nice mammal
Show this thread -
45/ bad: hoon - a core core - battery + payload battery - left arm of core payload - sample + context sample - left arm of payload context - right arm of payload Note also that the definitions in the Hoon docs confuse two different things: concept and implementation
Show this thread -
46/ Explaining concepts is useful. Explaining implementation is useful. But they are distinct things, and the explanation of the two things should be kept separate. If a conversation is about the hot water heater and where in the house it's located, the context >>>
Show this thread -
47/ of the question "wait, it's in the basement? What's a 'basement' ?" wants an answer "a utility space located inside a house" and NOT "formed from cinderblocks with mortar binding". Both are useful, but, again, they need to be segregated.
Show this thread -
48/ So anyway, once I finally made the break through to understand Hoon ... it really wasn't remotely that complicated. It had like 1 new concept, and 30 new words for old concepts ... and there was absolutely no reason that I could not have understood it all in 4 hours.
Show this thread -
49/ And so basically a month of my life, and a huge amount of anxiety (bc I was doing contract work, and felt guilty and dumb for not getting up to speed ASAP) was caused by ... intentionally terrible docs. I'm still angry, now that I think about it again.
Show this thread -
50/ Because of the intentionally obfuscated / actively harmful docs, I can't recommend it. If the docs were not malevolent, I'd say "maybe, yes, to enjoy stretching your brain a bit". There's no ROI in the marketplace.https://twitter.com/ROGUEWEALTH/status/1502322704426455044 …
Show this thread -
51/ So, that was a lot of negative. On some positive (about the Hoon language): I do find a bunch of the experiments that Curtis did to be quite interesting, and there is a sort of artistic cohesiveness and simpleness to it that I appreciate. With good docs, I'd like it!
Show this thread -
52/ Nock is an interesting experiment in a minimal virtual machine, and I respect it for what it is. Hoon, OTOH, is a terrible language. There's the old quote "it is original and good...but what is original is not good, and what is good is not original." There's some of that
Show this thread -
53/ Every other programming language in the word uses keywords like "if", "then", "else", "try", "catch", etc. if you see code like if a==1 then print "equal" else print "unequal" end even a non-coder can figure this out.
Show this thread -
54/ Hoon does not use keywords. It uses an innovation - every thing that would be a keyword in a standard language is a "rune" (a two character sequence).
Show this thread -
55/ where standard languages would use GetType(0x12) Hoon uses !>(0x12) prounced "zaggar"...because there's a special pronunciation guide for runes.
Show this thread -
56/ so the "reserved keywords" of Hoon include things like =+ =< =/ =. =: ?: ?. ?+ ?& etc Reading code is just a vast pile of these runes.pic.twitter.com/pLPYFggJZI
Show this thread -
57/ Here's an example of some (pretty clean, very readable) Hoon https://github.com/urbit/urbit/blob/41ce22d6ae18678f9979f7ab5bef54f5c65fb6e7/pkg/arvo/sys/vane/gall.hoon …pic.twitter.com/V1zmeazjp1
Show this thread -
58/ Note how a lot of effort has gone into naming things so that all of the variable names h̵e̵l̵p̵ ̵c̵o̵n̵v̵e̵y̵ ̵t̵h̵e̵i̵r̵ ̵p̵u̵r̵p̵o̵s̵e̵s̵ are four letters long. call load scry take list skip move unit slog apps
Show this thread - Show replies
New conversation -
Loading seems to be taking a while.
Twitter may be over capacity or experiencing a momentary hiccup. Try again or visit Twitter Status for more information.