on master help sign in
Merge remote-tracking branches 'knubie/master', 'joemfb/moar', 'joemfb/run-in', 'fang/master' and 'origin/fix-use-fs'

fixes #51 fixes #24

commit6a66d0540a796bf678dd41947636c0a962c4a5b7 authorPhilip C Monk <philip.monk@tlon.io> dateWed 29 Jun 2016, 16:13 (10 years ago) parent8bbc06ab5debf24e5c9feaf1b4599a6eb3e
11 files changed+425−101
docs/about/glossary.md+270 docs/arvo/generators.md+9−66 docs/hoon/library/2h.md+44 docs/hoon/twig/bar-core/dot-trap.md+3 docs/hoon/twig/bar-core/hep-loop.md+9 docs/hoon/twig/bar-core/tar-gill.md+5 docs/hoon/twig/bar-core/tis-gate.md+6 docs/using/filesystem.md+20−27 docs/using/messaging.md+45−1 docs/using/setup.md+2−1 docs/using/shell.md+12−6
docs/about/glossary.mdnew file+270
@@ -0,0 +1,270 @@
1+---
2+navhome: '/docs'
3+next: True
4+sort: 3
5+title: Urbit glossary
6+---
7+
8+# Urbit glossary
9+
10+Urbit is renowned for its exotic terminology. Here's a simple overview
11+from the strange words in.
12+
13+As Dijkstra put it: "The purpose of abstraction is not to be vague, but
14+to create a new semantic level in which one can be absolutely precise."
15+
16+## Ships
17+
18+An Urbit `ship` is a cryptographic identity, a human-memorable name, and
19+a packet routing address. Ships are classed by the number of bits in
20+their address:
21+
22+ Size Name Parent Object Example
23+ ----- ------ ------ ------ -------
24+ 2^8 galaxy ~ supernode ~zod
25+ 2^16 star galaxy supernode ~doznec
26+ 2^32 planet star user ~tasfyn-partyv
27+ 2^64 moon planet device ~sigsam-nimbot-tasfyn-partyv
28+ 2^128 comet ~ bot ~racmus-mollen-fallyt-linpex--watres-sibbur-modlux-rinmex
29+
30+Any ship can be called an `urbit`.
31+
32+> A summary [here](http://urbit.org/posts/address-space/).
33+
34+An Urbit identity is a string like `~firbyr-napbes`. It means nothing,
35+but it's easy to remember and say out loud. `~firbyr-napbes` is actually
36+just a 32-bit number, like an IP address, that we turn into a
37+human-memorable string.
38+
39+Technically, an urbit is a secure digital identity that you own and
40+control with a cryptographic key, like a Bitcoin wallet. As in Bitcoin,
41+the supply of urbits is mathematically limited. This keeps the network
42+friendly, by making spam and abuse expensive.
43+
44+An urbit name is just a number; smaller numbers make shorter names.
45+Shorter names are easier to remember, so they're more valuable. So
46+urbits are classified by the number of bits in their name. (A ship name
47+is just a scrambled base-256 representation of the number.)
48+
49+A 32-bit urbit (like `~firbyr-napbes`) is called a "planet." A 16-bit
50+urbit (like `~pollev)` is a "star." An 8-bit ship (like `~mun`) is a
51+"galaxy." A planet is an identity for an independent, adult human. Stars
52+and galaxies are network infrastructure.
53+
54+Each planet or star is launched by its "parent," the star or galaxy
55+whose number is its bottom half. So the planet `~firbyr-napbes`,
56+`0xdead.beef` or `3.735.928.559`, is the child of `~pollev`, `0xbeef` or
57+`48.879`, whose parent is `~mun`, `0xef`, `239`. The parent of `~mun`
58+and all galaxies is `~zod`, `0`.
59+
60+### Nock
61+
62+> Nock is a Turing-complete, non-lambda combinator interpreter.
63+
64+- `noun`: an `atom` or a `cell`
65+- `atom`: any natural number
66+- `cell`: any ordered pair of `noun`s
67+- `subject`: a `noun` - the data against which a `formula` is
68+ evaluated
69+- `formula`: a `noun` - a function at the Nock level
70+- `product`: a `noun` - the result of evaluating a `formula` against a
71+ `subject`
72+
73+*See [Nock definition](../../nock/definition/).*
74+
75+### Hoon
76+
77+> Hoon is a strict, higher-order typed functional language that compiles
78+> itself to Nock.
79+
80+###### `span`: an inferred type
81+
82+A `span` defines a set (finite or infinite) of `noun`s and ascribes some
83+semantics to it. There is no Hoon syntax for a `span`; it is always
84+produced as the inferred range of an expression (`twig`).
85+
86+*See [basic types](../../hoon/basic/#-type-span-and-mold).*
87+
88+###### `core`: a code-data `cell`
89+
90+The code (`battery`) is the head, the data (`payload`) is the tail. All
91+code-data structures in normal languages (functions, objects, modules,
92+etc) become `core`s in Hoon.
93+
94+- `battery`: the code of a `core`, a tree of `arm`s
95+- `payload`: the data in a `core`
96+
97+*See [basic types](../../hoon/basic)*.
98+
99+###### `arm`: a named, functionally-computed attribute of a `core`
100+
101+The `twig` of each `arm` is compiled to a Nock formula, with the
102+enclosing `core` itself as the subject.
103+
104+There are two kinds of `arm`s: `dry` and `wet`. Most arms are dry.
105+
106+- `dry`: normal, `++`, polymorphic by means of *variance*
107+
108+For a `dry` `arm`, we ask, is the new `payload` compatible with the old
109+`payload` (against which the `core` was compiled)?
110+
111+- `wet`: unusual, `+-`, polymorphic by means of *genericity*
112+
113+A `wet` `arm` uses the `twig` as a macro. We create a new type analysis
114+path, which works as if we expanded the callee with the caller's
115+context.
116+
117+*See [advanced types](/hoon/advanced)*.
118+
119+###### `metal`: a variance model
120+
121+Every `core` has a `metal` which defines its *variance* model (ie, the
122+properties of the `span` of a compatible `core`). The default is `gold`
123+(invariant).
124+
125+- `gold`: *invariant*
126+- `lead`: *bivariant*
127+- `zinc`: *covariant*
128+- `iron`: *contravariant*
129+
130+*See [advanced types](/hoon/advanced)*.
131+
132+###### `gate`: a function/lambda/closure
133+
134+A `gate` is a `core` with one `arm`. To call a `gate` on an argument,
135+replace the `sample` (at tree address `6` in the `core`) with the
136+argument, and then compute the `arm`.
137+
138+The `payload` of a `gate` has a shape of `{sample context}`.
139+
140+- `sample`: the argument tuple
141+- `context`: the subject in which the `gate` was defined
142+
143+*See [basic types](../../hoon/basic/#-core-p-span-q-map-term-span),
144+[`%-` or `:call`](../../hoon/twig/cen-call/hep-call/) (the `twig` for
145+calling a `gate`).*
146+
147+###### `mold`: a type constructor / validator
148+
149+A mold is an idempotent `gate` (function), accepting any `noun`, and
150+producing a range with a useful `span`.
151+
152+- `bunt`: the value a `mold` produces when normalizing its default
153+ sample
154+- `icon`: the `span` of the `mold`'s range
155+
156+*See [`mold` `twig`s](/hoon/twig/buc-mold/).*
157+
158+###### `atom`
159+
160+A Hoon `atom` span describes a Nock `atom`, with two additional pieces
161+of metadata: an `aura`, and an optional constant.
162+
163+An `atom` span is `warm` or `cold` based on whether the constant exists.
164+
165+- `warm`: if the constant is `~` (null), any `atom` is in the `span`
166+- `cold`: if the constant is `[~ atom]`, its only legal value is
167+ `atom`.
168+
169+*See [basic types](../../hoon/basic/#-atom-p-term-q-unit-atom)*
170+
171+###### `aura`: a soft `atom` type
172+
173+`aura` is a name for an atom type. It represents the structure of an
174+`atom` in a string beginning with `@`. An aura may represent units,
175+print format, or other semantics. Its constraints on the value of an
176+atom aren't enforced in any way.
177+
178+Two `aura`s are compatible if one is a prefix of the other. You can
179+change any `aura` into any other `aura` by casting through the empty
180+`aura`, `@`. The standard library has molds which alias many common
181+auras.
182+
183+Some common auras and their aliases:
184+
185+- `term` (`@tas`): a symbol - an atomic ASCII string which obeys
186+ symbol rules: lowercase and digit only, infix hyphen ("kebab-case"),
187+ first character must be lowercase alphabetic.
188+- `cord` (`@t`): UTF-8 text, least-significant-byte first
189+- `char` (`@tD`): a character, a single unicode byte (for multi-byte
190+ characters and codepoints, see `@c`)
191+
192+*See [basic types](../../hoon/basic/#-atom-p-term-q-unit-atom)*.
193+
194+###### `twig`: a Hoon expression
195+
196+A `twig` is a Hoon expression. Specifically, `twig` is the mold for the
197+noun that a Hoon source expression compiles to. A twig is always a cell.
198+
199+A twig has one of two forms: `{twig twig}`, which produces the ordered
200+pair of the two twigs, or a cell `{stem bulb}`, where `stem` is an
201+atomic symbol.
202+
203+- `stem`: an atomic symbol (`@tas`) - the name of a `twig`.
204+- `bulb`: The `mold` of the `twig`'s contents.
205+
206+Most `twig`s have a *regular form*, beginning with a `sigil` which is
207+either a `keyword` or a `rune`. Some `twig`s also have a syntactic
208+*irregular form*; a few have *only* an *irregular form*.
209+
210+- `sigil`: a `keyword` or `rune` used to begin a `twig`
211+- `keyword`: the value of a stem, prefixed with `:`.
212+- `rune`: a pair of ASCII symbols used to begin a `twig`.
213+
214+For example, the stem `%if` becomes the keyword
215+[`:if`](../../hoon/twig/wut-test/col-if/), with the rune `?:`. The first
216+symbol in a rune represents a family of related `twig`s. For example,
217+the [`?` family](../../hoon/twig/wut-test/) are all conditionals.
218+
219+The keyword or rune forms are up to the programmer's choice. Most
220+existing code uses runes, but the keyword form makes the learning path
221+easier.
222+
223+A regular twig has two syntactic forms, *tall* and *flat*:
224+
225+- `tall`: multiple lines, no parentheses, two or more spaces between
226+ tokens
227+- `flat`: one line, parentheses, one space between tokens
228+
229+`tall` twigs can contain `flat` ones, but not vice versa. All irregular
230+forms are `flat`.
231+
232+*See [`twig` concept](../../hoon/concepts/#-twig-expression),
233+[expressions](../../hoon/twig/), and [syntax](../../hoon/syntax/)*.
234+
235+###### `limb`: attribute or variable reference
236+
237+To resolve a `limb` named "foo", the `subject` is searched depth-first,
238+head-first for either a `face` named "foo" or a `core` with an `arm` of
239+"foo". If a `face` is found, the result is a `leg`, if a `core` is
240+found, the result is the `product` of the `arm`.
241+
242+- `leg`: a subexpression, or subtree of the `subject`.
243+- `wing`: a list of `limb`s, searched from right to left (`a.b` means
244+ `b` within `a`).
245+
246+*See [Limbs and wings](../../hoon/twig/limb)*
247+
248+###### `face`: a labeled subtree
249+
250+Hoon has no scope or symbol-table; there is only the `subject`. To
251+"declare" a "variable" is to construct a new `subject`:
252+`[name=value old-subject]`.
253+
254+A `face` is a `span` that wraps a name (`@tas`) around another `span`.
255+
256+*See [advanced types](../../hoon/advanced/#-face-aliases-and-bridges)*.
257+
258+###### `nest`: type compatibility test
259+
260+`nest` is an internal function on two spans, which produces yes if the
261+set of nouns in the second span is provably a subset of the first.
262+
263+*See [advanced types](../../hoon/advanced/)*.
264+
265+###### `loobean`: a Hoon boolean
266+
267+`0` (`%.y`) is *yes*, `1` (`%.n`) is *no*.
268+
269+> Why? It's fresh, it's different, it's new. And it's annoying. And it
270+> keeps you on your toes. And it's also just intuitively right.
docs/arvo/generators.md+9−66
@@ -72,81 +72,26 @@ We'll need a new mark for our arguments. Let's call it
7272> (/mar/examples/ping/message.hoon).
7373
7474```
75−:: Up-ness monitor. Accepts atom url, 'on', or 'off'
7675::
77−:::: /hoon/up/examples/app
76+:::: /hoon/message/ping/examples/app
7877 ::
7978/? 314
80−|%
81−++ move {bone card}
82−++ card
83− $% {$hiss wire $~ $httr {$purl p/purl}}
84− {$wait wire @da}
85− ==
86−++ action
87− $% {$on $~} :: enable polling('on')
88− {$off $~} :: disable polling('off)
89− {$target p/cord} :: set poll target('http://...')
90− ==
91−--
92−|_ {hid/bowl on/_| in-progress/_| target/@t}
93−++ poke-atom
94− |= url-or-command/@t ^- (quip move +>)
95− =+ ^- act/action
96− ?: ?=($on url-or-command) [%on ~]
97− ?: ?=($off url-or-command) [%off ~]
98− [%target url-or-command]
99− ?- -.act
100− $target [~ +>.$(target p.act)]
101− $off [~ +>.$(on |)]
102− $on
103− :- ?: |(on in-progress) ~
104− [ost.hid %hiss /request ~ %httr %purl (need (epur target))]~
105− +>.$(on &, in-progress &)
106− ==
107−::
108−
109−:: ~& 'i get here'
110−:: ^- {(list move) _+>.$}
111−:: ?: =('off' url)
112−:: [~ +>.$(on |)]
113−:: ?: =('on' url)
114−:: :_ +>.$(on &, in-progress &)
115−:: ?: |(on in-progress)
116−:: ~
117−:: [ost.hid %them /request ~ (need (epur target)) %get ~ ~]~
118−:: [~ +>.$(target url)]
119−++ sigh-httr
120− |= {wir/wire code/@ud headers/mess body/(unit octs)}
121− ~& 'arrive here'
122− ^- {(list move) _+>.$}
123− ?: &((gte code 200) (lth code 300))
124− ~& [%all-is-well code]
125− :_ +>.$
126− [ost.hid %wait /timer (add ~s10 now.hid)]~
127− ~& [%we-have-a-problem code]
128− ~& [%headers headers]
129− ~& [%body body]
130− :_ +>.$
131− [ost.hid %wait /timer (add ~s10 now.hid)]~
132−++ wake-timer
133− |= {wir/wire $~} ^- (quip move +>)
134− ?: on
135− :_ +>.$
136− [ost.hid %hiss /request ~ %httr %purl (need (epur target))]~
137− [~ +>.$(in-progress |)]
138−::
139−++ prep ~& target _`. ::
79+|_ {to/@p message/@t}
80+++ grab
81+ |%
82+ ++ noun {@p @t}
83+ --
14084--
14185```
14286
14387The app can easily be modified to use this (`/app/examples/ping.hoon`):
14488
14589```
90+:: Allows one ship to ping another with a string of text
14691::
14792:::: /hoon/ping/examples/app
14893 ::
149−/? 151
94+/? 314
15095|%
15196 ++ move {bone term wire *}
15297--
@@ -172,8 +117,6 @@ The app can easily be modified to use this (`/app/examples/ping.hoon`):
172117::
173118++ coup |=(* `+>)
174119--
175−
176−
177120```
178121
179122Now we can run this with:
@@ -195,7 +138,7 @@ to `:examples-ping`, let's put it in `/gen/examples/ping/send.hoon`:
195138
196139```
197140:- %say
198−|= {^ {{to/@p message/?($~ {text/@t $~})} $~}
141+|= {^ {to/@p message/?($~ {text/@t $~})} $~}
199142[%examples-ping-message to ?~(message 'howdy' text.message)]
200143```
201144
docs/hoon/library/2h.md+44
@@ -461,6 +461,50 @@ Examples
461461
462462------------------------------------------------------------------------
463463
464+### `+-run:in`
465+
466+Apply gate to set (often called *map*)
467+
468+Produce a `++set` containing the products of gate `b` applied to each element
469+in `a`.
470+
471+Accepts
472+-------
473+
474+`a` is a `++set`.
475+
476+`b` is a gate.
477+
478+Produces
479+--------
480+
481+A set.
482+
483+Source
484+------
485+
486+ +- run :: apply gate to values
487+ ~/ %run
488+ |* b/gate
489+ =| c/(set _?>(?=(^ a) (b n.a)))
490+ |- ?~ a c
491+ =. c (~(put in c) (b n.a))
492+ =. c $(a l.a, c c)
493+ $(a r.a, c c)
494+
495+
496+
497+Examples
498+--------
499+
500+ > =s (sy ~["a" "A" "b" "c"])
501+ > s
502+ {"A" "a" "c" "b"}
503+ > (~(run in s) cuss)
504+ {'A' 'C' 'B'}
505+
506+------------------------------------------------------------------------
507+
464508### `+-tap:in`
465509
466510Set to list
docs/hoon/twig/bar-core/dot-trap.md+3
@@ -52,3 +52,6 @@ A more interesting trap:
5252
5353Note that we can use `:moar()` or `$()` to recurse back into the
5454trap, since it's a core with an `$` arm.
55+
56+> `:moar()` expands to `:make($)` (`%=($)`), accepting a *jogging* body
57+> containing a list of changes to the subject.
docs/hoon/twig/bar-core/hep-loop.md+9
@@ -21,6 +21,15 @@ sort: 4
2121
2222Regular: *1-fixed*.
2323
24+## Discussion
25+
26+The `:loop` keyword (and `|-` rune) can be thought of as a "recursion point" -
27+since `:loop` makes a `:trap` (a core with one arm named `$`), we can recurse
28+back into it with `:moar()` or `$()`.
29+
30+> `:moar()` expands to `:make($)` (`%=($)`), accepting a *jogging* body
31+> containing a list of changes to the subject.
32+
2433## Examples
2534
2635A trivial loop doesn't even recurse:
docs/hoon/twig/bar-core/tar-gill.md+5
@@ -32,6 +32,11 @@ is still only one copy of the code, however).
3232Genericity is a powerful and dangerous tool. Use gills only if
3333you think you know what you're doing.
3434
35+Just as with a `:gate`, we can recurse back into a `:gill` with `:moar()` or `$()`.
36+
37+> `:moar()` expands to `:make($)` (`%=($)`), accepting a *jogging* body
38+> containing a list of changes to the subject.
39+
3540## Examples
3641
3742Wet and dry gates in a nutshell:
docs/hoon/twig/bar-core/tis-gate.md+6
@@ -24,6 +24,12 @@ Regular: *2-fixed*.
2424
2525## Discussion
2626
27+A gate is a core with one arm named `$`, so, just as with `:loop` (`|-`),
28+we can recurse back into it with `:moar()` or `$()`.
29+
30+> `:moar()` expands to `:make($)` (`%=($)`), accepting a *jogging* body
31+> containing a list of changes to the subject.
32+
2733## Examples
2834
2935A trivial gate:
docs/using/filesystem.md+20−27
@@ -108,30 +108,30 @@ Unmounts the path `%/web` from whatever name it was mounted as.
108108
109109Unmounts the Unix path `/generators`.
110110
111−### `|merge desk beak [strategy]`
111+### `|merge desk beak[, =gem strategy]`
112112
113113Merges a `beak` into a `desk` using an optional merge `strategy`.
114114
115−A `beak` is either a desk (`%home`), a plot-desk cell (`[~doznec
116−%home]`), or a plot-desk-case (`/~doznec/home/2/web/md`)
115+A `beak` is a ship-desk-case triple, encoded as a path(`/~doznec/home/2`)
117116
118117**Examples:**
119118
120− |merge %home-work /=home= %fine
119+ |merge %home-work /=home=, =gem %fine
121120
122121Merge `/=home=` into `%home-work` using merge strategy `%fine`.
123122
124− |merge %examples [~wacbex-ribmex %examples]
123+ |merge %examples ~wacbex-ribmex %examples
125124
126125Merge the `%examples` desk from `~waxbex-ribmex`
127126
128127### `|sync desk plot [plot-desk]`
129128
130129Subscribe to continuous updates from remote `plot` on local `desk`.
131−`plot-desk` can specify the remote `desk` name. When omitted it's
132−assumed to be the same as `desk`. Moons have `|sync %home ~parent
133−%kids` automatically set up (where `~parent` is the planet that issued
134−the moon).
130+`plot-desk` can specify the remote `desk` name. When omitted it is
131+defaulted to being the same as `desk`. Non-comet urbits have `|sync
132+%home ~parent %kids` automatically set up (where `~parent` is the
133+planet that issued a moon, the star that issued a planet, or the
134+galaxy that issued a star).
135135
136136**Examples:**
137137
@@ -140,8 +140,7 @@ the moon).
140140### `|unsync desk plot [plot-desk]`
141141
142142Unsubscribe from updates from remote `plot` on local `desk` with
143−optional `plot-desk`. Arguments must match original `|sync` command
144−exactly.
143+optional `plot-desk`. Arguments must match original `|sync` command.
145144
146145Example:
147146
@@ -160,7 +159,7 @@ Example:
160159`%init` - Used if it's the first commit to a desk. Also can be
161160used to "reinitialize" a desk -- revision numbers keep going up,
162161but the new revision isn't necessarily a descendent of the
163−previously-numbered version.
162+previously-numbered version, allowing merges to be rerun.
164163
165164`%this` - Keep what's in Bob's desk, but join the ancestry.
166165
@@ -209,32 +208,26 @@ Finally, we annotate any conflicts, if we know how.
209208Remove the data at `path`. `path` must be a path to actual node, not
210209a 'directory'
211210
212−### `|cp to from how`
211+### `|cp to from`
213212
214−Copy the subtree `from` into the subtree `to`, committing it with the
215−specified merge strategy `how`.
213+Copy the file at `from` into the path `to`.
216214
217−#### `|mv to from how`
215+#### `|mv to from`
218216
219−Move the subtree `from` into the subtree `to`, committing it with the
220−specified merge strategy `how`.
217+Move the file at `from` into the path `to`.
221218
222219In `%clay`, `|mv` is just a shorthand for `|cp` then `|rm`. The `|rm`
223220doesn't happen unless the `|cp` succeeds.
224221
225222### Generators
226223
227−<h3 class="first child"><code>+cat path</code> / <code>+cal [path
228−...]</code></h3>
224+<h3 class="first child"><code>+cat path [path ...]</code></h3>
229225
230−Similar to Unix `cat`. `+cat` takes a single `path`, `+cal` a list of
231−paths.
226+Similar to Unix `cat`. `+cat` takes one or more `path`s, and prints
227+their contents.
232228
233−Produces the contents of the file at the given `path`.
229+### `+ls path`
234230
235−### `+ls path` / `+ll [path ...]`
236−
237−Similar to Unix `ls`. `+ls` takes a single `path`, `+ll` a list of
238−paths.
231+Similar to Unix `ls`. `+ls` takes a single `path`.
239232
240233Produces a list of names at the `path`.
docs/using/messaging.md+45−1
@@ -27,7 +27,9 @@ For the most part we use `:talk` as a single-instance of Slack: one main channel
2727
2828Let's join `/urbit-meta`:
2929
30− ~your-urbit: ;join ~doznec/urbit-meta
30+Use `ctrl-x` to switch from `:dojo` to `:talk`, then:
31+
32+ ~your-urbit:talk> ;join ~doznec/urbit-meta
3133
3234You'll see:
3335
@@ -95,14 +97,56 @@ insert a Unicode bullet-point character in an appropriate space
9597in your post, to show you the prospective linebreak. Your essay
9698will be posted in multiple lines.
9799
100+ ~your-urbit:talk> this is a long message, so it will by truncated right at this•spot
101+
102+will print as
103+
104+ ~your-urbit; this is a long message, so it will by truncated right at this
105+ ~your-urbit; spot
106+
98107#### URLs
99108
100109A URL is any valid URL.
101110
111+ ~your-urbit:talk> http://example.com
112+
102113### Commands
103114
104115A command is a hoon expression, prefaced by '#'.
105116
117+ ~your-urbit:talk> #(add 2 2)
118+
119+### Activating Lines
120+
121+A line number identifying the *subsequent* line is displayed every 5 lines.
122+
123+ ---------[0]
124+ ~your-urbit; this is my message
125+ ~your-urbit@ this is an @ message
126+ ~your-urbit; this is a long message, so it will by truncated right at this
127+ ~your-urbit; spot
128+ ~your-urbit/ http://example.com/
129+ ---------[5]
130+ ~your-urbit# (add 2 2) 4
131+
132+You can use a line number to *activate* a line:
133+
134+ ~your-urbit:talk> ;0
135+
136+which prints the number, line identifier, timestamp, sender, audience,
137+and contents:
138+
139+ ? 0
140+ 0v3.hl51p.jhege.amhec.vb37r.3rejr at ~2016.6.24..04.48.21..a235
141+ ~your-urbit to ~another-urbit
142+ this is my message
143+
144+Activating a URL will print the full URL (it could have been truncated),
145+and activating a command will evaluate it.
146+
147+You can activate the most recent line with `;`, the second-most recent with
148+`;;`, and so on.
149+
106150### Creating and managing stations
107151
108152`;create journal %serious-journal 'description'` - Creates a `%journal`, a privately writable publicly readable station.
docs/using/setup.md+2−1
@@ -16,7 +16,8 @@ is both a network address and a memorable name.
1616
1717You are probably creating one of two kinds of urbit: a 32-bit
1818"planet" or a 128-bit "comet." For a quick terminology guide
19−and high-level refresher, refer to this [handy reference sheet](/about/terminology).
19+and high-level refresher, refer to this [handy reference
20+sheet](/docs/about/glossary).
2021
2122If you have an Urbit invitation, you'll have a planet like
2223`~fintud-macrep` and `~fortyv-tombyt-tabsen-sonres`. To create
docs/using/shell.md+12−6
@@ -28,7 +28,7 @@ Evaluate a hoon expression:
2828Tall form Hoon may require multiple lines:
2929
3030 ~your-urbit:dojo> %+ add
31− ~your-urbit:dojo< 2
31+ ~your-urbit:dojo< 2
3232 ~your-urbit:dojo< 2
3333
3434Use `=var` to save a shell variable:
@@ -74,6 +74,8 @@ Run system commands from `:hood`, like `reload`, using `|`:
7474
7575**`+moon`** - Generate a random moon from a planet. No arguments.
7676
77+ ~your-urbit:dojo> +moon
78+
7779**`+solid`** - Compile the current state of the kernel and output a noun. Usually downloaded to a file in unix. No arguments.
7880
7981 ~your-urbit:dojo> .urbit/pill +solid
@@ -100,11 +102,15 @@ The hood is the system daemon. See `gen/hood` and `app/hood`.
100102
101103**`|mass`** - Prints the current memory usage of all the kernel modules. No arguments.
102104
105+ ~your-urbit:dojo> |mass
106+
103107**`|reload`** - Reloads a kernel module (vane) from source. Accepts any number of vane names.
104108
105109 ~your-urbit:dojo> |reload %clay %eyre
106110
107−**`|reset`** - Reloads `hoon.hoon`. No arguments.
111+**`|reset`** - Reloads `hoon.hoon` and all modules. No arguments.
112+
113+ ~your-urbit:dojo> |reset
108114
109115**`|start`** - Starts an app. Accepts an app name.
110116
@@ -129,7 +135,7 @@ Set any envronment variable:
129135
130136 44
131137
132−(There are a few special variables that the dojo expects. See below.)
138+(There are a few special variables that the dojo maintains. See below.)
133139
134140#### `:` - Send to app
135141
@@ -149,9 +155,9 @@ Save a new `md` file in `web`:
149155
150156The last component of the path is expected to be the mark (or mime type).
151157
152−#### `.` - Download to Unix
158+#### `.` - Export to Unix
153159
154−Download a noun to Unix with `.`:
160+Export a noun to Unix with `.`:
155161
156162 ~your-urbit:dojo> .foo/bar/baz (add 2 2)
157163
@@ -181,7 +187,7 @@ Use `_` to run a gate (or function):
181187 ~your-urbit:dojo> _|=({a/@} (mul a 3)) 3
182188 :: produces
183189 9
184− :: assign an arbitrary function to get the status code from an http request
190+ :: use a function to get the status code from an http request
185191 ~your-urbit:dojo> _|=({p/@ud q/* r/*} p) +http://google.com
186192 :: produces
187193 301