@@ -34,7 +34,8 @@ a value, it prints that value out. To try this out, you have to start
34the app, then you can poke it from the command line with the following
34the app, then you can poke it from the command line with the following
37− ~fintud-macrep:dojo> |start %echo
37+ ~fintud-macrep:dojo> |start %examples-echo
39 ~fintud-macrep:dojo> :examples-echo 5
40 ~fintud-macrep:dojo> :examples-echo 5
40 [%argument 5]
41 [%argument 5]
@@ -57,7 +58,7 @@ do that is to poke it from the command line, which we we did with
57`:echo 5` (`:[app-name] [argument(s)]`).
58`:echo 5` (`:[app-name] [argument(s)]`).
59In this case, `++poke-noun` takes an argument `arg` and prints it out
60In this case, `++poke-noun` takes an argument `arg` and prints it out
60−with `~&` ([sigpam](/hoon/twig/sig-hint/pam-dump/)). This is an unusual
61+with `~&` ([sigpam](../../hoon/twig/sig-hint/pam-dump/)). This is an unusual
61rune that formally "does nothing", but the interpreter detects it and
62rune that formally "does nothing", but the interpreter detects it and
62printfs the first child, before executing the second as if the first
63printfs the first child, before executing the second as if the first
63didn't exist. This is a slightly hacky way of printing to the console,
64didn't exist. This is a slightly hacky way of printing to the console,
@@ -169,7 +170,7 @@ Run it with these commands:
170 ~fintud-macrep:dojo> |start %examples-pong
171 ~fintud-macrep:dojo> |start %examples-pong
172− ~fintud-macrep:dojo> :pong &examples-urbit ~sampel-sipnym
173+ ~fintud-macrep:dojo> :examples-pong &urbit ~sampel-sipnym
175Replace `~sampel-sipnym` with another urbit. The easiest thing to do is
176Replace `~sampel-sipnym` with another urbit. The easiest thing to do is
@@ -220,7 +221,7 @@ Let's walk through each of these elements step by step.
220If you look up `++bone` in `hoon.hoon`, you'll see that it's a number
221If you look up `++bone` in `hoon.hoon`, you'll see that it's a number
221(`@ud`), and that it's an opaque reference to a duct. `++duct` in
222(`@ud`), and that it's an opaque reference to a duct. `++duct` in
222hoon.hoon is a list of `wire`s, where `++wire` is an alias for `++path`.
223hoon.hoon is a list of `wire`s, where `++wire` is an alias for `++path`.
223−`++path` is a list of `++span`s, which are ASCII text. Thus, a duct is a
224+`++path` is a list of `++knot`s, which are ASCII text. Thus, a duct is a
224list of paths, and a bone is an opaque reference to it (in the same way
225list of paths, and a bone is an opaque reference to it (in the same way
225that a Unix file descriptor is an opaque reference to a file structure).
226that a Unix file descriptor is an opaque reference to a file structure).
226Thus, to truly understand bones, we must understand ducts.
227Thus, to truly understand bones, we must understand ducts.
@@ -234,7 +235,7 @@ Sometimes, the module can immediately handle the event and produce any
234necessary results. For example, when we poked the `++poke-atom` arm
235necessary results. For example, when we poked the `++poke-atom` arm
235above, we poked %gall, our application server, which was able to respond
236above, we poked %gall, our application server, which was able to respond
236to our poke directly. When the module cannot service the request itself,
237to our poke directly. When the module cannot service the request itself,
237−it sends instructions to another kernel module or application (the the
238+it sends instructions to another kernel module or application (through the
238%gall module) to do a specified action, and produces the result from
239%gall module) to do a specified action, and produces the result from
@@ -283,7 +284,7 @@ The move ends with `*` (that is, any noun) since each type of move takes
283different data. In our case, a `%poke` move takes a target (urbit and
284different data. In our case, a `%poke` move takes a target (urbit and
284app) and marked data, then pokes the arm of the corresponding mark on
285app) and marked data, then pokes the arm of the corresponding mark on
285that app on that urbit with that data. `[to-urbit-address %pong]` is the
286that app on that urbit with that data. `[to-urbit-address %pong]` is the
286−target urbit and app, `%atom` is the mark`, and`'howdy'\` is the data.
287+target urbit and app, `%atom` is the `mark`, and`'howdy'` is the data.
288When arvo receives a `%poke` move, it calls the appropriate `++poke`.
289When arvo receives a `%poke` move, it calls the appropriate `++poke`.
289The same mechanism is used for sending messages between apps on the same
290The same mechanism is used for sending messages between apps on the same
@@ -304,7 +305,7 @@ urbit as for sending messages between apps on different urbits.
305- Write two apps, `even` and `odd`. When you pass an atom to `even`,
306- Write two apps, `even` and `odd`. When you pass an atom to `even`,
306 check whether it's even. If so, divide it by two and recurse;
307 check whether it's even. If so, divide it by two and recurse;
307− otherwise, poke `odd` with it. When `odd` recieves an atom, check
308+ otherwise, poke `odd` with it. When `odd` receives an atom, check
308 whether it's equal to one. If so, terminate, printing "%success".
309 whether it's equal to one. If so, terminate, printing "%success".
309 Otherwise, check whether it's odd. If so, multiply it by three, add
310 Otherwise, check whether it's odd. If so, multiply it by three, add
310 one, and recurse; otherwise, poke `even` with it. When either app
311 one, and recurse; otherwise, poke `even` with it. When either app
@@ -312,30 +313,30 @@ urbit as for sending messages between apps on different urbits.
312 the end, you should be able to watch Collatz's conjecture play out
313 the end, you should be able to watch Collatz's conjecture play out
313 between the two apps. Sample output:
314 between the two apps. Sample output:
317− ~fintud-macrep:dojo> :even &atom 18
317+~fintud-macrep:dojo> :even &atom 18
318− [%even 18]
318+[%even 18]
319− [%odd 9]
319+[%odd 9]
320− [%even 28]
320+[%even 28]
321− [%even 14]
321+[%even 14]
322− [%odd 7]
322+[%odd 7]
323− [%even 22]
323+[%even 22]
324− [%odd 11]
324+[%odd 11]
325− [%even 34]
325+[%even 34]
326− [%odd 17]
326+[%odd 17]
327− [%even 52]
327+[%even 52]
328− [%even 26]
328+[%even 26]
329− [%odd 13]
329+[%odd 13]
330− [%even 40]
330+[%even 40]
331− [%even 20]
331+[%even 20]
332− [%even 10]
332+[%even 10]
333− [%odd 5]
333+[%odd 5]
334− [%even 16]
334+[%even 16]
335− [%even 8]
335+[%even 8]
336− [%even 4]
336+[%even 4]
337− [%even 2]
337+[%even 2]
338− %success
338+%success
340- Put `even` and `odd` on two separate urbits and pass the messages
341- Put `even` and `odd` on two separate urbits and pass the messages
341 over the network. Post a link to a working solution in :talk to
342 over the network. Post a link to a working solution in :talk to