@@ -10,11 +10,7 @@ This is documentation about how to write Gall apps. Some knowledge of Hoon is a
1010 always accessible enough to beginners. We are planning to rewrite these in the
1111 near future. There is still useful information to be found in the meantime.
1212
13−;=
14− ;h2
15− ;div(id "api"): API Connectors
16− ==
17−==
13+## API Connectors
1814
1915> Note: This lesson depends on some code that needs to be updated before the examples will work correctly. This will be addressed in the near future. We apologize!
2016
@@ -517,11 +513,7 @@ this doc:
517513--
518514```
519515
520−;=
521− ;h2
522− ;div(id "generators"): Generators
523− ==
524−==
516+## Generators
525517
526518Up until now we've poked apps directly. This requires the user to
527519specify the mark, and it requires the app to accept the arguments in a
@@ -685,11 +677,7 @@ Which causes `~sampel-sipnym` to print `[%receiving 'howdy']` and
685677- Create a generator for `:click` from [Web Apps](#backend) so that you can run `:click|poke` to poke it.
686678
687679
688−;=
689− ;h2
690− ;div(id "http"): Writing an HTTP Request
691− ==
692−==
680+## Writing an HTTP Request
693681
694682There's a variety of arvo services we haven't touched on yet.
695683Let's figure out how to make HTTP requests and set timers.
@@ -897,11 +885,7 @@ Let's try it out:
897885~fintud-macrep:dojo> :up &atom 'off'
898886```
899887
900−;=
901− ;h2
902− ;div(id "marks"): Marks
903− ==
904−==
888+## Marks
905889
906890We've used predefined marks already, but we haven't yet created
907891our own marks. Let's write a sample mark of our own, then chain
@@ -1022,11 +1006,7 @@ mark.
10221006
10231007The minimal correct input, then, is `&mime &hymn &cord &atom 17`.
10241008
1025−;=
1026− ;h2
1027− ;div(id "network"): Network Messages
1028− ==
1029−==
1009+## Network Messages
10301010
10311011In the following we assume that you have some knowledge of Hoon. If you don't, check out chapters 1 and 2 of the Hoon tutorial and check back when you're ready.
10321012
@@ -1373,11 +1353,7 @@ urbit as for sending messages between apps on different urbits.
13731353- Put `even` and `odd` on two separate urbits and pass the messages over the network. Post a link to a working solution in :talk to receive a cookie.
13741354
13751355
1376−;=
1377− ;h2
1378− ;div(id "security"): Security Drivers
1379− ==
1380−==
1356+## Security Drivers
13811357
13821358A security driver is a file in `/=home=/sec/<tld>/<domain>/hoon`
13831359that handles the authentication for all HTTP requests to
@@ -1651,11 +1627,7 @@ library.
16511627Remember, of course, that the best strategy for building security
16521628drivers is to copy a similar one and tweak it to taste.
16531629
1654−;=
1655− ;h2
1656− ;div(id "state"): State
1657− ==
1658−==
1630+## State
16591631
16601632In the last section we built a few small apps that sent moves. These apps were
16611633entirely stateless, however. Most useful apps require some amount of state.
@@ -1772,11 +1744,7 @@ Sample output:
17721744```
17731745
17741746
1775−;=
1776− ;h2
1777− ;div(id "subscriptions"): Subscriptions
1778− ==
1779−==
1747+## Subscriptions
17801748
17811749We've dealt fairly extensively with "poke" messages to an app, but these
17821750are somewhat limited. A poke is a one-way message, but more often we
@@ -2102,11 +2070,7 @@ nullability. If `err` is `~`, then the subscription was successful and we tell
21022070that to the user. Otherwise, we print out the error message.
21032071
21042072
2105−;=
2106− ;h2
2107− ;div(id "backend"): Backend
2108− ==
2109−==
2073+## Backend
21102074
21112075We've done purely functional web pages as hook files, and we've
21122076done command line apps, so now let's interact with an app over