From be038f4c1148bf599fbd3e0d93aa42c9473baf97 Mon Sep 17 00:00:00 2001 From: johncburnham Date: Fri, 8 Aug 2014 20:36:35 -0700 Subject: [PATCH] reworked the site --- main/pub/fab/site/documentation/hymn.hook | 75 - main/pub/fab/site/hymn.hook | 71 +- main/pub/fab/site/ref/foreword/hymn.hook | 6 +- main/pub/fab/site/ref/vol0/hymn.hook | 6 +- main/pub/fab/site/ref/vol1/hymn.hook | 6 +- main/pub/fab/site/ref/vol2/hymn.hook | 6 +- main/pub/fab/site/ref/vol3/hymn.hook | 8 +- main/pub/fab/site/ref/vol4/hymn.hook | 8 +- main/pub/fab/site/tut/arvo1/hymn.hook | 6 +- main/pub/fab/site/tut/arvo2/hymn.hook | 6 +- main/pub/fab/site/tut/hoon1/hymn.hook | 6 +- main/pub/fab/site/tut/hoon2/hymn.hook | 6 +- main/pub/fab/site/tut/hoon3/hymn.hook | 6 +- main/pub/fab/site/tut/hoon4/hymn.hook | 6 +- main/pub/fab/site/tut/hoon5/hymn.hook | 6 +- main/pub/fab/site/tut/hoon6/hymn.hook | 6 +- main/pub/fab/site/tut/hoon7/hymn.hook | 6 +- main/pub/fab/site/tut/nock1/hymn.hook | 6 +- main/pub/fab/site/tut/nock2/hymn.hook | 6 +- main/pub/fab/site/tut/nock3/hymn.hook | 6 +- main/pub/src/doc/intro.md | 55 - main/pub/src/doc/ref/vol2.md | 1314 +---------------- main/pub/src/doc/ref/vol3.md | 170 +-- .../doc/say/2013-09-24-urbit-intro.markdown | 391 ----- main/pub/src/doc/say/arvo/1.md | 8 +- main/pub/src/doc/say/arvo/2.md | 13 +- main/pub/src/doc/say/hoon/1.md | 8 +- main/pub/src/doc/say/hoon/2.md | 8 +- main/pub/src/doc/say/hoon/3.md | 8 +- main/pub/src/doc/say/hoon/4.md | 8 +- main/pub/src/doc/say/hoon/5.md | 8 +- main/pub/src/doc/say/hoon/6.md | 10 +- main/pub/src/doc/say/hoon/7.md | 11 +- main/pub/src/doc/say/nock/1.md | 8 +- main/pub/src/doc/say/nock/2.md | 8 +- main/pub/src/doc/say/nock/3.md | 9 +- main/pub/src/site/res/footer.html | 15 - main/pub/src/site/res/head.html | 39 - main/pub/src/site/res/logo.png | Bin 1040 -> 0 bytes main/pub/src/site/res/sidebar.html | 21 - main/pub/src/site/res/styles.css | 596 -------- 41 files changed, 187 insertions(+), 2779 deletions(-) delete mode 100644 main/pub/fab/site/documentation/hymn.hook delete mode 100644 main/pub/src/doc/intro.md delete mode 100644 main/pub/src/doc/say/2013-09-24-urbit-intro.markdown delete mode 100644 main/pub/src/site/res/footer.html delete mode 100644 main/pub/src/site/res/head.html delete mode 100644 main/pub/src/site/res/logo.png delete mode 100644 main/pub/src/site/res/sidebar.html delete mode 100644 main/pub/src/site/res/styles.css diff --git a/main/pub/fab/site/documentation/hymn.hook b/main/pub/fab/site/documentation/hymn.hook deleted file mode 100644 index 2ed8ddc6fc..0000000000 --- a/main/pub/fab/site/documentation/hymn.hook +++ /dev/null @@ -1,75 +0,0 @@ -:: -:: -:::: - :: -/= sid /^ manx /: /===/pub/src/site/res/sidebar /hymn/ -/= fot /^ manx /: /===/pub/src/site/res/footer /hymn/ -/= sty /^ @t /: /===/pub/src/site/res/styles /css/ -:: -:::: ~tomsyt-balsen - :: -;html - ;head - ;title: Urbit: Personal Cloud Computing - ;style:"{(trip sty)}" - == - ;body - ;+ sid - ;div(class "content container") - ;div(class "page documentation") - ;h1(class "page-title"): Documentation - ;p ; If you want to build a deep understanding of how Urbit works, - ; start with Nock. If you would prefer to just try stuff - ; out, start with Arvo. - == - ;p ; This documentation is a work in progress. Feedback and corrections - ; are welcome. Pull requests are encouraged. The repo for this site - ; lives ;{a(href "https://github.com/urbit/urbit.github.io") "here"}. - ; We would love your help in making this reference more useful. - == - ;p ; Arvo is still actively being changed and updated. - ; As Arvo development cools, more documentation will emerge. - == - ;ul - ;li - ;p:(h2:"Tutorial") - ;strong: Nock - ;ol - ;li:(p:(a/"/gen/main/pub/fab/site/tut/nock1":"Intro to Nock")) - ;li:(p:(a/"/gen/main/pub/fab/site/tut/nock2":"Nock is Easy")) - ;li:(p:(a/"/gen/main/pub/fab/site/tut/nock3":"Using Nock")) - == - ;strong: Hoon - ;ol - ;li:(p:(a/"/gen/main/pub/fab/site/tut/hoon1":"Intro to Hoon")) - ;li:(p:(a/"/gen/main/pub/fab/site/tut/hoon2":"Types")) - ;li:(p:(a/"/gen/main/pub/fab/site/tut/hoon3":"Hoon Computes")) - ;li:(p:(a/"/gen/main/pub/fab/site/tut/hoon4":"Gates")) - ;li:(p:(a/"/gen/main/pub/fab/site/tut/hoon5":"Tiles")) - ;li:(p:(a/"/gen/main/pub/fab/site/tut/hoon6":"Type Inference")) - ;li:(p:(a/"/gen/main/pub/fab/site/tut/hoon7":"Odds, Ends, Quirks")) - == - ;strong: Arvo - ;ol - ;li:(p:(a/"/gen/main/pub/fab/site/tut/arvo1":"Basic Arvo")) - ;li:(p:(a/"/gen/main/pub/fab/site/tut/arvo2":"More Basic Arvo")) - == - == - ;li - ;p:(h2:"Reference") - ;ul - ;li:(p:(a/"/gen/main/pub/fab/site/ref/foreword":";{strong "Foreword"}: Nock")) - ;li:(p:(a/"/gen/main/pub/fab/site/ref/preface":";{strong "Preface"}: Hoon Abstract")) - ;li:(p:(a/"/gen/main/pub/fab/site/ref/vol0":";{strong "Volume 0"}: Version Stub")) - ;li:(p:(a/"/gen/main/pub/fab/site/ref/vol1":";{strong "Volume 1"}: Hoon Structures")) - ;li:(p:(a/"/gen/main/pub/fab/site/ref/vol2":";{strong "Volume 2"}: Hoon Compiler")) - ;li:(p:(a/"/gen/main/pub/fab/site/ref/vol3":";{strong "Volume 3"}: Arvo Core")) - ;li:(p:(a/"/gen/main/pub/fab/site/ref/vol4":";{strong "Volume 4"}: Arvo Vanes")) - ;li:(p:(a/"/gen/main/pub/fab/site/ref/postface":";{strong "Postface"}")) - == - == - == - == - == - == -== diff --git a/main/pub/fab/site/hymn.hook b/main/pub/fab/site/hymn.hook index fab4f8c47b..43383a7979 100644 --- a/main/pub/fab/site/hymn.hook +++ b/main/pub/fab/site/hymn.hook @@ -1,26 +1,73 @@ -:: Top level of the Urbit documentation. :: -:::: /hook/site/src/pub +:: +:::: :: -/= bod /^ manx /: /===/pub/src/doc/intro /psal/ -/= sid /^ manx /: /===/pub/src/site/res/sidebar /hymn/ -/= fot /^ manx /: /===/pub/src/site/res/footer /hymn/ -/= sty /^ @t /: /===/pub/src/site/res/styles /css/ +/= sty /^ @t /: /===/pub/fab/site/styles /css/ :: :::: ~tomsyt-balsen :: ;html ;head - ;title: Urbit + ;title: Urbit: Personal Cloud Computing ;style:"{(trip sty)}" == ;body - ;+ sid ;div(class "content container") - ;div.subpage - ;+ bod + ;div(class "page documentation") + ;h1(class "page-title"): Documentation + ;p ; If you want to build a deep understanding of how Urbit works, + ; start with Nock. If you would prefer to just try stuff + ; out, start with Arvo. + == + ;p ; This documentation is a work in progress. Feedback and corrections + ; are welcome. Pull requests are encouraged. The repo for this site + ; lives ;{a(href "https://github.com/urbit/urbit.github.io") "here"}. + ; We would love your help in making this reference more useful. + == + ;p ; Arvo is still actively being changed and updated. + ; As Arvo development cools, more documentation will emerge. + == + ;ul + ;li + ;p:(h2:"Tutorial") + ;p:(a/"/gen/main/pub/fab/site/tut/setup":"Setup") + ;strong: Nock + ;ol + ;li:(p:(a/"/gen/main/pub/fab/site/tut/nock1":"Intro to Nock")) + ;li:(p:(a/"/gen/main/pub/fab/site/tut/nock2":"Nock is Easy")) + ;li:(p:(a/"/gen/main/pub/fab/site/tut/nock3":"Using Nock")) + == + ;strong: Hoon + ;ol + ;li:(p:(a/"/gen/main/pub/fab/site/tut/hoon1":"Intro to Hoon")) + ;li:(p:(a/"/gen/main/pub/fab/site/tut/hoon2":"Types")) + ;li:(p:(a/"/gen/main/pub/fab/site/tut/hoon3":"Hoon Computes")) + ;li:(p:(a/"/gen/main/pub/fab/site/tut/hoon4":"Gates")) + ;li:(p:(a/"/gen/main/pub/fab/site/tut/hoon5":"Tiles")) + ;li:(p:(a/"/gen/main/pub/fab/site/tut/hoon6":"Type Inference")) + ;li:(p:(a/"/gen/main/pub/fab/site/tut/hoon7":"Odds, Ends, Quirks")) + == + ;strong: Arvo + ;ol + ;li:(p:(a/"/gen/main/pub/fab/site/tut/arvo1":"Basic Arvo")) + ;li:(p:(a/"/gen/main/pub/fab/site/tut/arvo2":"More Basic Arvo")) + ;li:(p:(a/"/gen/main/pub/fab/site/tut/arvo3":"Apps")) + ;li:(p:(a/"/gen/main/pub/fab/site/tut/arvo4":"Functional Publishing I")) + ;li:(p:(a/"/gen/main/pub/fab/site/tut/arvo5":"Functional Publishing II")) + == + == + ;li + ;p:(h2:"Reference") + ;p:(a/"/gen/main/pub/fab/site/ref/foreword":";{strong "Foreword"}: Nock") + ;p:(a/"/gen/main/pub/fab/site/ref/preface":";{strong "Preface"}: Hoon Abstract") + ;p:(a/"/gen/main/pub/fab/site/ref/vol0":";{strong "Volume 0"}: Version Stub") + ;p:(a/"/gen/main/pub/fab/site/ref/vol1":";{strong "Volume 1"}: Hoon Structures") + ;p:(a/"/gen/main/pub/fab/site/ref/vol2":";{strong "Volume 2"}: Hoon Compiler") + ;p:(a/"/gen/main/pub/fab/site/ref/vol3":";{strong "Volume 3"}: Arvo Core") + ;p:(a/"/gen/main/pub/fab/site/ref/vol4":";{strong "Volume 4"}: Arvo Vanes") + == + == == == - ;+ fot == -== +== diff --git a/main/pub/fab/site/ref/foreword/hymn.hook b/main/pub/fab/site/ref/foreword/hymn.hook index 52c5c40ce1..380ebe6fcc 100644 --- a/main/pub/fab/site/ref/foreword/hymn.hook +++ b/main/pub/fab/site/ref/foreword/hymn.hook @@ -1,8 +1,6 @@ +/= sty /^ @t /: /===/pub/fab/site/styles /css/ /= bod /^ manx /: /===/pub/src/doc/ref/nock /psal/ -/= sid /^ manx /: /===/pub/src/site/res/sidebar /hymn/ -/= fot /^ manx /: /===/pub/src/site/res/footer /hymn/ -/= sty /^ @t /: /===/pub/src/site/res/styles /css/ :: :::: ~tomsyt-balsen :: @@ -12,12 +10,10 @@ ;style:"{(trip sty)}" == ;body - ;+ sid ;div(class "content container") ;div.subpage ;+ bod == == - ;+ fot == == diff --git a/main/pub/fab/site/ref/vol0/hymn.hook b/main/pub/fab/site/ref/vol0/hymn.hook index 8dc89978d5..45b53dd323 100644 --- a/main/pub/fab/site/ref/vol0/hymn.hook +++ b/main/pub/fab/site/ref/vol0/hymn.hook @@ -1,7 +1,5 @@ /= bod /^ manx /: /===/pub/src/doc/ref/vol0 /psal/ -/= sid /^ manx /: /===/pub/src/site/res/sidebar /hymn/ -/= fot /^ manx /: /===/pub/src/site/res/footer /hymn/ -/= sty /^ @t /: /===/pub/src/site/res/styles /css/ +/= sty /^ @t /: /===/pub/fab/site/styles /css/ :: :::: ~tomsyt-balsen :: @@ -11,12 +9,10 @@ ;style:"{(trip sty)}" == ;body - ;+ sid ;div(class "content container") ;div.subpage ;+ bod == == - ;+ fot == == diff --git a/main/pub/fab/site/ref/vol1/hymn.hook b/main/pub/fab/site/ref/vol1/hymn.hook index a4eed8b96c..52b4ab01d6 100644 --- a/main/pub/fab/site/ref/vol1/hymn.hook +++ b/main/pub/fab/site/ref/vol1/hymn.hook @@ -1,7 +1,5 @@ +/= sty /^ @t /: /===/pub/fab/site/styles /css/ /= bod /^ manx /: /===/pub/src/doc/ref/vol1 /psal/ -/= sid /^ manx /: /===/pub/src/site/res/sidebar /hymn/ -/= fot /^ manx /: /===/pub/src/site/res/footer /hymn/ -/= sty /^ @t /: /===/pub/src/site/res/styles /css/ :: :::: ~tomsyt-balsen :: @@ -11,12 +9,10 @@ ;style:"{(trip sty)}" == ;body - ;+ sid ;div(class "content container") ;div.subpage ;+ bod == == - ;+ fot == == diff --git a/main/pub/fab/site/ref/vol2/hymn.hook b/main/pub/fab/site/ref/vol2/hymn.hook index dc56256223..2d77aab970 100644 --- a/main/pub/fab/site/ref/vol2/hymn.hook +++ b/main/pub/fab/site/ref/vol2/hymn.hook @@ -1,7 +1,5 @@ +/= sty /^ @t /: /===/pub/fab/site/styles /css/ /= bod /^ manx /: /===/pub/src/doc/ref/vol2 /psal/ -/= sid /^ manx /: /===/pub/src/site/res/sidebar /hymn/ -/= fot /^ manx /: /===/pub/src/site/res/footer /hymn/ -/= sty /^ @t /: /===/pub/src/site/res/styles /css/ :: :::: ~tomsyt-balsen :: @@ -11,12 +9,10 @@ ;style:"{(trip sty)}" == ;body - ;+ sid ;div(class "content container") ;div.subpage ;+ bod == == - ;+ fot == == diff --git a/main/pub/fab/site/ref/vol3/hymn.hook b/main/pub/fab/site/ref/vol3/hymn.hook index 8dc89978d5..b8a6b62edd 100644 --- a/main/pub/fab/site/ref/vol3/hymn.hook +++ b/main/pub/fab/site/ref/vol3/hymn.hook @@ -1,7 +1,5 @@ -/= bod /^ manx /: /===/pub/src/doc/ref/vol0 /psal/ -/= sid /^ manx /: /===/pub/src/site/res/sidebar /hymn/ -/= fot /^ manx /: /===/pub/src/site/res/footer /hymn/ -/= sty /^ @t /: /===/pub/src/site/res/styles /css/ +/= sty /^ @t /: /===/pub/fab/site/styles /css/ +/= bod /^ manx /: /===/pub/src/doc/ref/vol3 /psal/ :: :::: ~tomsyt-balsen :: @@ -11,12 +9,10 @@ ;style:"{(trip sty)}" == ;body - ;+ sid ;div(class "content container") ;div.subpage ;+ bod == == - ;+ fot == == diff --git a/main/pub/fab/site/ref/vol4/hymn.hook b/main/pub/fab/site/ref/vol4/hymn.hook index 8dc89978d5..1a4d79284a 100644 --- a/main/pub/fab/site/ref/vol4/hymn.hook +++ b/main/pub/fab/site/ref/vol4/hymn.hook @@ -1,7 +1,5 @@ -/= bod /^ manx /: /===/pub/src/doc/ref/vol0 /psal/ -/= sid /^ manx /: /===/pub/src/site/res/sidebar /hymn/ -/= fot /^ manx /: /===/pub/src/site/res/footer /hymn/ -/= sty /^ @t /: /===/pub/src/site/res/styles /css/ +/= sty /^ @t /: /===/pub/fab/site/styles /css/ +/= bod /^ manx /: /===/pub/src/doc/ref/vol4 /psal/ :: :::: ~tomsyt-balsen :: @@ -11,12 +9,10 @@ ;style:"{(trip sty)}" == ;body - ;+ sid ;div(class "content container") ;div.subpage ;+ bod == == - ;+ fot == == diff --git a/main/pub/fab/site/tut/arvo1/hymn.hook b/main/pub/fab/site/tut/arvo1/hymn.hook index 2e69ea5c6c..c16d430887 100644 --- a/main/pub/fab/site/tut/arvo1/hymn.hook +++ b/main/pub/fab/site/tut/arvo1/hymn.hook @@ -1,7 +1,5 @@ +/= sty /^ @t /: /===/pub/fab/site/styles /css/ /= bod /^ manx /: /===/pub/src/doc/say/arvo/1 /psal/ -/= sid /^ manx /: /===/pub/src/site/res/sidebar /hymn/ -/= fot /^ manx /: /===/pub/src/site/res/footer /hymn/ -/= sty /^ @t /: /===/pub/src/site/res/styles /css/ :: :::: ~tomsyt-balsen :: @@ -11,12 +9,10 @@ ;style:"{(trip sty)}" == ;body - ;+ sid ;div(class "content container") ;div.subpage ;+ bod == == - ;+ fot == == diff --git a/main/pub/fab/site/tut/arvo2/hymn.hook b/main/pub/fab/site/tut/arvo2/hymn.hook index c7bc9e0d50..1823681ace 100644 --- a/main/pub/fab/site/tut/arvo2/hymn.hook +++ b/main/pub/fab/site/tut/arvo2/hymn.hook @@ -1,7 +1,5 @@ +/= sty /^ @t /: /===/pub/fab/site/styles /css/ /= bod /^ manx /: /===/pub/src/doc/say/arvo/2 /psal/ -/= sid /^ manx /: /===/pub/src/site/res/sidebar /hymn/ -/= fot /^ manx /: /===/pub/src/site/res/footer /hymn/ -/= sty /^ @t /: /===/pub/src/site/res/styles /css/ :: :::: ~tomsyt-balsen :: @@ -11,12 +9,10 @@ ;style:"{(trip sty)}" == ;body - ;+ sid ;div(class "content container") ;div.subpage ;+ bod == == - ;+ fot == == diff --git a/main/pub/fab/site/tut/hoon1/hymn.hook b/main/pub/fab/site/tut/hoon1/hymn.hook index 89cabc5465..73ec84e94c 100644 --- a/main/pub/fab/site/tut/hoon1/hymn.hook +++ b/main/pub/fab/site/tut/hoon1/hymn.hook @@ -1,7 +1,5 @@ +/= sty /^ @t /: /===/pub/fab/site/styles /css/ /= bod /^ manx /: /===/pub/src/doc/say/hoon/1 /psal/ -/= sid /^ manx /: /===/pub/src/site/res/sidebar /hymn/ -/= fot /^ manx /: /===/pub/src/site/res/footer /hymn/ -/= sty /^ @t /: /===/pub/src/site/res/styles /css/ :: :::: ~tomsyt-balsen :: @@ -11,12 +9,10 @@ ;style:"{(trip sty)}" == ;body - ;+ sid ;div(class "content container") ;div.subpage ;+ bod == == - ;+ fot == == diff --git a/main/pub/fab/site/tut/hoon2/hymn.hook b/main/pub/fab/site/tut/hoon2/hymn.hook index e168149669..cbf2441d49 100644 --- a/main/pub/fab/site/tut/hoon2/hymn.hook +++ b/main/pub/fab/site/tut/hoon2/hymn.hook @@ -1,7 +1,5 @@ +/= sty /^ @t /: /===/pub/fab/site/styles /css/ /= bod /^ manx /: /===/pub/src/doc/say/hoon/2 /psal/ -/= sid /^ manx /: /===/pub/src/site/res/sidebar /hymn/ -/= fot /^ manx /: /===/pub/src/site/res/footer /hymn/ -/= sty /^ @t /: /===/pub/src/site/res/styles /css/ :: :::: ~tomsyt-balsen :: @@ -11,12 +9,10 @@ ;style:"{(trip sty)}" == ;body - ;+ sid ;div(class "content container") ;div.subpage ;+ bod == == - ;+ fot == == diff --git a/main/pub/fab/site/tut/hoon3/hymn.hook b/main/pub/fab/site/tut/hoon3/hymn.hook index ba2ee8c855..91432fab6e 100644 --- a/main/pub/fab/site/tut/hoon3/hymn.hook +++ b/main/pub/fab/site/tut/hoon3/hymn.hook @@ -1,7 +1,5 @@ +/= sty /^ @t /: /===/pub/fab/site/styles /css/ /= bod /^ manx /: /===/pub/src/doc/say/hoon/3 /psal/ -/= sid /^ manx /: /===/pub/src/site/res/sidebar /hymn/ -/= fot /^ manx /: /===/pub/src/site/res/footer /hymn/ -/= sty /^ @t /: /===/pub/src/site/res/styles /css/ :: :::: ~tomsyt-balsen :: @@ -11,12 +9,10 @@ ;style:"{(trip sty)}" == ;body - ;+ sid ;div(class "content container") ;div.subpage ;+ bod == == - ;+ fot == == diff --git a/main/pub/fab/site/tut/hoon4/hymn.hook b/main/pub/fab/site/tut/hoon4/hymn.hook index 4bf7e5c091..9dc9197ac8 100644 --- a/main/pub/fab/site/tut/hoon4/hymn.hook +++ b/main/pub/fab/site/tut/hoon4/hymn.hook @@ -1,7 +1,5 @@ +/= sty /^ @t /: /===/pub/fab/site/styles /css/ /= bod /^ manx /: /===/pub/src/doc/say/hoon/4 /psal/ -/= sid /^ manx /: /===/pub/src/site/res/sidebar /hymn/ -/= fot /^ manx /: /===/pub/src/site/res/footer /hymn/ -/= sty /^ @t /: /===/pub/src/site/res/styles /css/ :: :::: ~tomsyt-balsen :: @@ -11,12 +9,10 @@ ;style:"{(trip sty)}" == ;body - ;+ sid ;div(class "content container") ;div.subpage ;+ bod == == - ;+ fot == == diff --git a/main/pub/fab/site/tut/hoon5/hymn.hook b/main/pub/fab/site/tut/hoon5/hymn.hook index 72391f7746..794bc7770d 100644 --- a/main/pub/fab/site/tut/hoon5/hymn.hook +++ b/main/pub/fab/site/tut/hoon5/hymn.hook @@ -1,7 +1,5 @@ +/= sty /^ @t /: /===/pub/fab/site/styles /css/ /= bod /^ manx /: /===/pub/src/doc/say/hoon/5 /psal/ -/= sid /^ manx /: /===/pub/src/site/res/sidebar /hymn/ -/= fot /^ manx /: /===/pub/src/site/res/footer /hymn/ -/= sty /^ @t /: /===/pub/src/site/res/styles /css/ :: :::: ~tomsyt-balsen :: @@ -11,12 +9,10 @@ ;style:"{(trip sty)}" == ;body - ;+ sid ;div(class "content container") ;div.subpage ;+ bod == == - ;+ fot == == diff --git a/main/pub/fab/site/tut/hoon6/hymn.hook b/main/pub/fab/site/tut/hoon6/hymn.hook index 14ee228af7..e6faf2f273 100644 --- a/main/pub/fab/site/tut/hoon6/hymn.hook +++ b/main/pub/fab/site/tut/hoon6/hymn.hook @@ -1,7 +1,5 @@ +/= sty /^ @t /: /===/pub/fab/site/styles /css/ /= bod /^ manx /: /===/pub/src/doc/say/hoon/6 /psal/ -/= sid /^ manx /: /===/pub/src/site/res/sidebar /hymn/ -/= fot /^ manx /: /===/pub/src/site/res/footer /hymn/ -/= sty /^ @t /: /===/pub/src/site/res/styles /css/ :: :::: ~tomsyt-balsen :: @@ -11,12 +9,10 @@ ;style:"{(trip sty)}" == ;body - ;+ sid ;div(class "content container") ;div.subpage ;+ bod == == - ;+ fot == == diff --git a/main/pub/fab/site/tut/hoon7/hymn.hook b/main/pub/fab/site/tut/hoon7/hymn.hook index 3e1301ded6..63043ec28f 100644 --- a/main/pub/fab/site/tut/hoon7/hymn.hook +++ b/main/pub/fab/site/tut/hoon7/hymn.hook @@ -1,7 +1,5 @@ +/= sty /^ @t /: /===/pub/fab/site/styles /css/ /= bod /^ manx /: /===/pub/src/doc/say/hoon/7 /psal/ -/= sid /^ manx /: /===/pub/src/site/res/sidebar /hymn/ -/= fot /^ manx /: /===/pub/src/site/res/footer /hymn/ -/= sty /^ @t /: /===/pub/src/site/res/styles /css/ :: :::: ~tomsyt-balsen :: @@ -11,12 +9,10 @@ ;style:"{(trip sty)}" == ;body - ;+ sid ;div(class "content container") ;div.subpage ;+ bod == == - ;+ fot == == diff --git a/main/pub/fab/site/tut/nock1/hymn.hook b/main/pub/fab/site/tut/nock1/hymn.hook index 8acfdb1d9d..3379b66e57 100644 --- a/main/pub/fab/site/tut/nock1/hymn.hook +++ b/main/pub/fab/site/tut/nock1/hymn.hook @@ -1,7 +1,5 @@ /= bod /^ manx /: /===/pub/src/doc/say/nock/1 /psal/ -/= sid /^ manx /: /===/pub/src/site/res/sidebar /hymn/ -/= fot /^ manx /: /===/pub/src/site/res/footer /hymn/ -/= sty /^ @t /: /===/pub/src/site/res/styles /css/ +/= sty /^ @t /: /===/pub/fab/site/styles /css/ :: :::: ~tomsyt-balsen :: @@ -11,12 +9,10 @@ ;style:"{(trip sty)}" == ;body - ;+ sid ;div(class "content container") ;div.subpage ;+ bod == == - ;+ fot == == diff --git a/main/pub/fab/site/tut/nock2/hymn.hook b/main/pub/fab/site/tut/nock2/hymn.hook index 0735a0865c..74357b2698 100644 --- a/main/pub/fab/site/tut/nock2/hymn.hook +++ b/main/pub/fab/site/tut/nock2/hymn.hook @@ -1,7 +1,5 @@ /= bod /^ manx /: /===/pub/src/doc/say/nock/2 /psal/ -/= sid /^ manx /: /===/pub/src/site/res/sidebar /hymn/ -/= fot /^ manx /: /===/pub/src/site/res/footer /hymn/ -/= sty /^ @t /: /===/pub/src/site/res/styles /css/ +/= sty /^ @t /: /===/pub/fab/site/styles /css/ :: :::: ~tomsyt-balsen :: @@ -11,12 +9,10 @@ ;style:"{(trip sty)}" == ;body - ;+ sid ;div(class "content container") ;div.subpage ;+ bod == == - ;+ fot == == diff --git a/main/pub/fab/site/tut/nock3/hymn.hook b/main/pub/fab/site/tut/nock3/hymn.hook index 4a3702c035..9a2df6246e 100644 --- a/main/pub/fab/site/tut/nock3/hymn.hook +++ b/main/pub/fab/site/tut/nock3/hymn.hook @@ -1,7 +1,5 @@ +/= sty /^ @t /: /===/pub/fab/site/styles /css/ /= bod /^ manx /: /===/pub/src/doc/say/nock/3 /psal/ -/= sid /^ manx /: /===/pub/src/site/res/sidebar /hymn/ -/= fot /^ manx /: /===/pub/src/site/res/footer /hymn/ -/= sty /^ @t /: /===/pub/src/site/res/styles /css/ :: :::: ~tomsyt-balsen :: @@ -11,12 +9,10 @@ ;style:"{(trip sty)}" == ;body - ;+ sid ;div(class "content container") ;div.subpage ;+ bod == == - ;+ fot == == diff --git a/main/pub/src/doc/intro.md b/main/pub/src/doc/intro.md deleted file mode 100644 index 80a2908db0..0000000000 --- a/main/pub/src/doc/intro.md +++ /dev/null @@ -1,55 +0,0 @@ -#What is Urbit? - -We got tired of system software from the 1970s. So we wrote our own. From scratch. - -##Nock, a minimal virtual machine - -[Nock](https://github.com/urbit/urbit/blob/master/urb/zod/spec/nock/5.txt) is a homoiconic combinator algebra, not much fancier than SKI combinators. The spec fits on a T-shirt and gzips to 340 bytes. Nock's data model is simple: a noun is an atom or a cell. An atom is any natural number. A cell is an ordered pair of any two nouns. - -Nock cannot create cycles and needs no GC. Its only arithmetic operator is increment, so it is not inherently efficient; an efficient Nock interpreter works by recognizing standard Nock formulas and matching them to pre-written manual optimizations. We never extend Nock or call out to Unix from it. - -##Hoon, a typed functional language - -Hoon is a strict, typed, functional language that compiles itself to Nock. The Hoon compiler is 4000 lines of Hoon. Adding standard libraries, the self-compiling kernel is 8000 lines. - -Hoon has no particular familial relationship to other languages you may know. It uses its own type inference algorithm and is as different from Haskell as from Lisp. Hoon syntax is also completely unfamiliar. Hoon has the same relationship to Nock that C has to assembly; as thin a layer as possible. It is possible to learn Hoon without Nock, but it's probably not a good idea. - -As a functional systems language, Hoon is especially good at metaprogramming, self-virtualization, hotpatching; marshalling and validating untyped data; decoding and encoding binary message formats. Hoon is designed for event programming, so there is no concurrency model. - -##Arvo, a functional operating system - -Arvo is an event-driven server OS built on the same event library as node.js (libuv). Unlike node.js, Arvo is written in Hoon, isolated from Unix and a persistent single-level store. Arvo can update itself and its data and programs indefinitely from its own state. After the image is created, it lives indefinitely and is never modified externally. - -Arvo is modular. Present modules provide a network messaging protocol, a REPL and task manager, a revision-controlled filesystem, a text console, and an HTTP server. The Arvo codebase is about 6500 lines, which is probably too big. - -##Clay, a global immutable namespace - -Clay is a feature of Arvo: a secure, referentially transparent and decentralized filesystem. The root of the namespace is a global PKI. Each identity serves its own filesystem tree. Files are nouns, not atoms, with arbitrary tree structure. - -Identities, which are also routable addresses, are either key fingerprints or hierarchically assigned short numbers. All numbers are mapped to phonemic strings for memorability. Identities are transferrable and irrevocable; ownership is established by key pinning. The system has a superficial resemblance to Bitcoin, but works more like land than money. It does not use mining or a blockchain. - -Since Clay is immutable, all paths contain a revision, which is either a change number, a date, or a label. A request is a special case of a subscription, so syndication is straightforward. Clay also has a synthesis mode which computes a functional namespace on the client side. - -##What is Urbit good for? - -Urbit is good for everything, of course! It is a new general-purpose computing layer. We look forward to a future where the current Internet exists only as an underground series of tubes which transports you to your Urbit. - -More specifically, Urbit is a personal cloud computer. Right now, the cloud computers we use run OSes designed for minicomputers in the '70s. An ordinary user can no more drive a Linux box in the cloud than fly an A320. So she has to sit in coach class as a row in someone else's database. It's definitely air travel. It's not exactly flying. - -The user of the future will fly her own computer. She will own and control her own identity and her own data. She will even host her own apps. She will not be part of someone else's Big Data. She will be her own Little Data. Unless she's a really severe geek, she will pay some service to store and execute her Urbit ship - but she can move it anywhere else, anytime, for the cost of the bandwidth. - -A user can't manage a general-purpose computer unless she basically understands what it's doing. She may not be a programmer, but she needs at least a rough mental model of her computer's state. - -A personal computer has to be a *simple* computer. This is why we built a new system software stack from scratch, with the goal of bringing it in under 10,000 lines of code. Urbit is about 50% over this complexity budget, but nobody's perfect. - -##What can it do now? - -Urbit at present is not good for anything but screwing around. For screwing around, it answers all your needs and is happy to consume any amount of unwanted time. - -It does basically work as described above, though. Urbit at present propagates all its updates through its own filesystem, runs its own chat server over its own network protocol, etc. As of early 2014, it is an interesting prototype, not a useful device. - -##How can I join the revolution? - -Just wait. If you're cool enough, someone will send you an invitation. - -Psych! No, actually, you can go here. diff --git a/main/pub/src/doc/ref/vol2.md b/main/pub/src/doc/ref/vol2.md index addf5c131d..9d72218119 100644 --- a/main/pub/src/doc/ref/vol2.md +++ b/main/pub/src/doc/ref/vol2.md @@ -1,6 +1,6 @@ -volume 2, Hoon libraries and compiler +#volume 2, Hoon libraries and compiler - chapter 2a, basic unsigned math +##chapter 2a, basic unsigned math ##++add @@ -1017,8 +1017,8 @@ Accepts a list `a` and a gate `b`. Produces the list with the gate applied to ea Activate jet. Build wet %gold gate that accepts two lists, `a` and `b`. Homogenizes both lists and makes them the subject of the following code. - Kick dry %gold trap. - Cast the resulting list to the type of list `b`. + Kick dry %gold trap + Cast the resulting list to the type of list `b`. If: a is null, Then: produce `b`. Else: produce the tuple where `i.a` is the head, and the toss of `a` for `i.a` is the tail. @@ -6583,1309 +6583,3 @@ Produce the cord of a tape. ##++wood -section 2eK, formatting (layout) - -##++re - -##++ram - -##++win - -##++din - -##++fit - -##++rig - -##++wig - -section 2eL, formatting (path) - -##++ab - -##++bix - -##++hif - -##++huf - -##++hyf - -##++pev - -##++pew - -##++piv - -##++piw - -##++qeb - -##++qex - -##++qib - -##++qix - -##++seb - -##++sed - -##++sev - -##++sew - -##++sex - -##++sib - -##++siq - -##++sid - -##++siv - -##++siw - -##++six - -##++sov - -##++sow - -##++sox - -##++ted - -##++tip - -##++tiq - -##++tid - -##++til - -##++urs - -##++urt - -##++voy - -##++vym - -##++vyn - -##++ag - -##++ape - -##++bay - -##++bip - -##++dem - -##++dim - -##++dum - -##++fed - -##++hex - -##++lip - -##++qut - -##++sym - -##++tyq - -##++viz - -##++vum - -##++wiz - -##++co - -##++rear - -##++rent - -##++rend - -##++a-co - -##++d-co - -##++r-co - -##++s-co - -##++v-co - -##++w-co - -##++x-co - -##++y-co - -##++z-co - -##++em-co - -##++ox-co - -##++ro-co - -##++ne - -##++d - -##++x - -##++v - -##++w - -##++mu - -##++zag - -##++zig - -##++zug - -##++so - -##++bisk - -##++crub - -##++nuck - -##++nusk - -##++perd - -##++royl - -##++tash - -##++twid - -##++zust - -##++scot - -##++scow - -##++slav - -##++slaw - -##++slay - -##++smyt - -section 2eM, regular-expressions - -##++pars - -##++nor - -##++les -##++lep - -##++alm - -##++alb - -##++mis - -##++anns - -##++mall - -##++bets - -##++ranc - -##++flap - -##++rang - -##++chun - -##++seac - -##++sead - -##++sade - -##++seap - -##++cape - -##++lower - -##++upper - -##++digit - -##++print - -##++graph - -##++blank - -##++space - -##++cntrl - -##++alpha - -##++alnum - -##++punct - -##++wordc - -##++white - -##++xdigi - -##++chad - -##++escd - -##++escp - -##++unid - -##++proc - -##++cont - -##++abor - -##++matc - -##++chet - -##++blak - -##++deep - -##++rexp - -##++repg - -section 2eN, pseudo-cryptography - -##++un - -##++wre - -##++wre - -##++xaf - -##++xar - -##++zaf - -##++zar - -##++zyf - -##++zyr - -section 2eO, virtualization - -##++mack - -Accpet a nock subject-formula cell. -Produce a unit result, treating 11 as a crash (i.e. pure nock). - -####Summary - - Creates a dry %gold gate accepting cell ['sub' 'fol']. - Its output is a unit (of a noun). - Let 'ton' be the result of minking the sample, with a sky that produces - ~ on any input, halting interpretation. - Unless ton has stem 0, produce the empty unit, otherwise produce one - containing ton's bulb. - -####Examples - - ~zod/try=> (mack [[1 2 3] [0 1]]) - [~ [1 2 3]] - ~zod/try=> (mack [41 4 0 1]) - [~ 42] - ~zod/try=> (mack [4 0 4]) - ~ - ~zod/try=> (mack [[[0 2] [1 3]] 4 4 4 4 0 5]) - [~ 6] - ~zod/try=> ;;((unit ,@tas) (mack [[1 %yes %no] 6 [0 2] [0 6] 0 7])) - [~ %no] - -##++mink - -Bottom-level mock (virtual nock) interpreter. - -####Summary - - Accepts a nock subject-formula cell, and an %iron gate which - accepts any noun and produces a unit, which is defined to be mock 11. - Produces a ++tone, which is the result of the virtualized computation. - --- - For clarity, a ++tone with stem %0 will be referred to as a "success", - one with stem %1 as a "block", and one with stem %2 as a "crash". - --- - Activate jet. - Creates a dry %gold gate accepting cell ['sub' 'fol'] and gate 'sky'. - Let 'tax' be a statically bunted list of term-noun pairs. (hint list) - Do (recursion point) produce a tone: - If fol is an atom - Produce a crash of fol. - Else if the head of fol is a cell - Let hed be the result of recurring with fol replaced by its head. - If hed is a crash - Yield it - Otherwise let 'tal' be the result of recurring with fol replaced - by its tail. - Switch on the type of tal by stem: - If tal is a success - If hed is a block produce hed. - Else (success) produce a success of a cell of the bulbs of hed - and tal. - If tal is a block - If hed is a success produce tal. - Else (block) produce a block of welding the bulbs of hed and tal. - Else (crash) produce tal - Otherwise (the head of fol is an atom) switch on fol, - by default producing a crash of tax. - If fol has stem 0 and an atom bulb we name 'b' - If b is 0 produce a crash of tax. - If b is 1 produce a success of sub. - If sub is an atom produce a crash of tax - Otherwise let 'now' be the cap of b, and 'lat' be the mas of b - Tail-recur with b replaced by lat, and sub replaced by: if now is 2, - its head, else its tail. - If fol has stem 1 and a bulb we name 'b' - Produce a success of b - If fol has stem 2 and a bulb whose head is a cell. - Let 'ben' be the result of recurring with fol replaced by its bulb. - Unless ben is a success, produce ben. - Else assert that ben contains a cell, and tail-recur with - sub and fol replaced by the head and tail of ben's bulb - If fol has stem 3 and a bulb we name 'b' - Let 'ben' be the result of recurring with fol replaced by b. - Unless ben is a success, produce ben. - Else produce a success of (loobean) whether ben contains a cell. - If fol has stem 4 and a bulb we name 'b' - Let 'ben' be the result of recurring with fol replaced by b. - Unless ben is a success, produce ben. - Else unless ben contains an atom produce a crash of tax. - Otherwise produce a success of ben's contents, incremented. - If fol has stem 5 and a bulb we name 'b' - Let 'ben' be the result of recurring with fol replaced by b. - Unless ben is a success, produce ben. - Else unless ben contains a cell produce a crash of tax. - Otherwise produce a success of (loobean) whether the bulb of ben has - a tail equal to its head. - If fol has stem 6, 7, 8, or 9 - Tail-recur with its bulb expanded per nock specification. - If fol has stem 10 and a cell bulb whose head is an atom - Tail-recur with for replaced by its bulb's tail - If fol has stem 10 and a bulb that can be destructured as [[b c] d] - Let ben be the result of recurring with fol replaced by v. - Unless ben is a success, produce ben. - If b is %hunk, %lose, %mean, or %spot - Tail-recur with fol replaced by d and tax prepended with a pair of - b and the bulb of ben. - Else tail-recur with just fol replaced by d. - -####Examples - - XX - -##++mock - -Accepts a nock subject-formula cell and an %iron gate which -accepts any noun and produces a unit (this is used as nock 11). -Produces a ++toon, which is a sucesful, blocked, or crashed result. - -####Summary - - Compose ++mook and ++mink. - -####Examples - - ~zod/try=> (mock [5 4 0 1] ,~) - [%0 p=6] - ~zod/try=> (mock [~ 11 1 0] |=(* `999)) - [%0 p=999] - ~zod/try=> (mock [~ 0 1.337] ,~) - [%2 p=~] - ~zod/try=> (mock [~ 11 1 1.337] ,~) - [%1 p=~[1.337]] - ~zod/try=> (mock [[[4 4 4 4 0 3] 10] 11 9 2 0 1] |=(* `[+<])) - [%0 p=14] - ~zod/try=> (mock [[[4 4 4 4 0 3] 10] 11 9 2 0 1] |=(* `[<+<>])) - [%0 p=[49 52 0]] - ~zod/try=> ;;(tape +:(mock [[[4 4 4 4 0 3] 10] 11 9 2 0 1] |=(* `[<+<>]))) - "14" - -####++mook - -Intelligently render crash annotation. - -####Summary - - Accepts a ++tone, produces a ++toon - --- - Create a dry %gold gate accepting a tone we name 'ton' - Its output is a toon. - Unless the stem of ton is %2, produce ton. - Produce a frond with a stem of 2 and the following bulb: - Let yel be the length of ton's bulb. - Replace the bulb of ton, - If yel > 256 (otherwise keep it static) - With the weld of - its top 128 elements - And a list of term-noun pairs: - The last 128 elements of ton's bulb - Preceded by a %lose-stemmed frond of - A cord from the tape - "[skipped " - A @ud rendering of yel - 256 - " frames]" - Do (*recursion point*) produce a list of tanks: - For each element in the bulb of ton - Switch on its leaf, by default leaving the element out of the product - For each %hunk, clam it to a tank - For each %lose, produce a leaf with the element clammed to an atom - and tripped (to a tape). - For each %mean, if the elment is an atom treat it as a %lose - Otherwise let mac be the element macked by its tail. - If the computation fails, produce a "####" leaf, else clam - the result to a tank. - For each %spot, let sot be the element clammed to a spot. - Produce a leaf with - The weld of - The path in sot converted to a tank and then a tape - ":<[" - [[p.p ] ] in the pint in sot rendered as @ud - " " - [[ q.p] ] in the pint in sot rendered as @ud - "].[" - [ [p.q ]] in the pint in sot rendered as @ud - " " - [ [ q.p]] in the pint in sot rendered as @ud - "]>" - -####Examples - - ~zod/try=> (mook [%0 5 4 5 1]) - [%0 p=[5 4 5 1]] - ~zod/try=> (mook [%2 ~[[%hunk %rose ["<" "," ">"] ~[[%leaf "err"]]]]]) - [%2 p=~[[%rose p=[p="<" q="," r=">"] q=[i=[%leaf p="err"] t=~]]]] - ~zod/try=> (mook [%2 ~[[%malformed %elem] [%lose 'do print']]]) - [%2 p=~[[%leaf p="do print"]]] - ~zod/try=> (mook [%2 ~[[%spot /b/repl [[1 1] 1 2]] [%mean |.(!!)]]]) - [%2 p=~[[%leaf p="/b/repl/:<[1 1].[1 2]>"] [%leaf p="####"]]] - -####++mang - -Mang is just like mack, but accepting a sky. -It produces a unit computation result. - -####Summary - - Creates a dry %gold gate accepting cell ['sub' 'fol'] and an - %iron unit-clam 'sky'. - Its output is a unit (of a noun). - Let 'ton' be the result of monging the sample. - Unless ton has stem 0, produce the empty unit, otherwise produce one - containing ton's bulb. - -##++mung - -##++mule - -##++mute - -section 2eP, diff **noted as "(move me)" in source** - -++ berk -++ diff -++ loss - ++ abet - ++ hink - ++ lonk - ++ lune - ++ merg - ++ main -++ locz -++ lore -++ role -++ lump -++ lure -++ limp -++ hump -++ husk -++ lurk -++ lusk - ++ abet - ++ done - ++ main -++ nude - ++ axes - ++ tred - -section 2eW, lite number theory - -++ egcd -++ pram -++ ramp -++ fo - ++ dif - ++ exp - ++ fra - ++ inv - ++ pro - ++ sit - ++ sum -++ ga - ++ dif - ++ dub - ++ pro - ++ toe - ++ sit - ++ fra - ++ inv - ++ pow - ++ pro - -section 2eX, jetted crypto - -++ aesc - ++ en - ++ de -++ ahem - ++ cipa - ++ co - ++ ix - ++ ro - ++ su - ++ pen - ++ co - ++ ix - ++ ro - ++ su - ++ pin - ++ co - ++ ix - ++ ro - ++ su - ++ mcol - ++ pode - ++ sube - ++ be - ++ ankh - ++ sark - ++ srow - ++ subs - ++ ex - ++ ix -++ curt - ++ cla - ++ sqr - ++ inv - ++ cad - ++ cub -++ ed - ++ norm - ++ xrec - ++ ward - ++ scam - ++ etch - ++ curv - ++ deco - ++ bb - ++ puck - ++ suck - ++ sign - ++ veri - -section 2eY, SHA-256 - -++ shad -++ shaf -++ shak -++ sham -++ shas -++ shax -++ shaw -++ og - ++ rad - ++ raw -++ shaz -++ shal -++ shan - -section 2eZ, OLD rendering - -++ show - ++ shep - ++ shop -++ at - ++ r - ++ rf - ++ rn - ++ rt - ++ rta - ++ rtam - ++ rub - ++ rud - ++ rum - ++ rup - ++ ruv - ++ rux - -chapter 2f, Hoon proper - -section 2fA, miscellaneous funs - -++ bull -++ cain -++ cell -++ core -++ cube -++ face -++ bean -++ flay -++ flee -++ foil -++ fork -++ cove -++ comb -++ cond -++ cons -++ fitz -++ flan -++ flip -++ flor -++ hike -++ hoax -++ hoof -++ jock -++ look -++ make -++ noah -++ onan -++ rain -++ ream -++ reck -++ seed -++ seem -++ seer -++ sell -++ pave -++ loot -++ slam -++ slim -++ slit -++ slym -++ slap -++ slop -++ skol -++ spat -++ spuc -++ spec -++ spud -++ slot -++ slum -++ stab -++ wash - -section 2fB, macro expansion - -++ ah - ++ blue - ++ gray - ++ puce -++ al - ++ blah - ++ home - ++ bunt - ++ clam - ++ cloq - ++ whip -++ ap - ++ etch - ++ feck - ++ hock - ++ open - ++ rake - ++ rusk - -section 2fC, compilation proper - -++ ut - ++ burn - ++ busk - ++ conk - ++ crop - ++ dext - ++ sint - ++ cool - ++ dank - ++ dart - ++ deal - ++ dial - ++ dish - ++ doge - ++ dole - ++ duck - ++ dune - ++ dunk - ++ fino - ++ fink - ++ finq - ++ fire - ++ firm - ++ fish - ++ fuse - ++ gain - ++ hang - ++ harp - ++ lose - ++ chip - ++ heal - ++ mint - ++ nice - ++ grow - ++ moot - ++ mull - ++ both - ++ nice - ++ grow - ++ bake - ++ meet - ++ nest - ++ cong - ++ cram - ++ dext - ++ sint - ++ park - ++ peek - ++ play - ++ reco - ++ repo - ++ rest - ++ seek - ++ seep - ++ sift - ++ snub - ++ tack - ++ tock - ++ wrap - -section 2fD, grammar - -++ vang -++ vast - ++ gash - ++ gasp - ++ glam - ++ hasp - ++ mota - ++ plex - ++ pray - ++ prey - ++ phax - ++ posh - ++ poof - ++ poon - ++ poor - ++ porc - ++ rump - ++ rood - ++ rupl - ++ sail - Templating language for rendering HTML web documents. - --- - Build dry %gold gate with sample bean `tol`. - Push bunt of bean `lin` onto the core below. - Build core, - --- - ++ ape - The apex node of - --- - Slam cook with: - The reverse of `amp` and the following gate: - Build dry %gold gate with sample tuna `tum`. Yield twig. - If: `tum` is [%e *], an element, - Then: Produce the twig of twig `p.tum` and sag slammed with `q.tum` - Else: Produce the sag slammed with `tum` and null, the twig of `tum` - --- - ++ amp - Entry point of the XML tree. Start parsing a template at `sem`. - Continue to parse with ++ba if in tall form and ++bat if in wide form. - --- - Gonadify pfix with: - sem, - If: tol, - Then: bam, - Else: bat - --- - ++ bam - Begin to parse the template in tall form. - --- - Slam knee with: - The bunt of tuna. - Build dry %gold trap which is cached (memoized) - Gonadify pose with: - Stag slammed with %f, pfix gonadified with: - (plus ace), 1 or whitespaces, - Cook slammed with rab, puv - Stag slammed with %e, pfix gonadified with: - `ag, - nal - Stag slammed with %e, hul, - Stag slammed with %f, nup, - Gonadify pfix with: - tis, - Stag slammed with %f, nol - Gonadify pfix with: - hep - Stag slammed with: - %a, - Gonadify pfix with gap, talL - Gonadify pfix with: - lus - Stag slammed with: - %b, - Gonadiffy pfix with gap, tall - Gonadify pfix with: - tar - Stag slammed with: - %c, - Gonadify pfix with gap, tall - Gonadify pfix with: - cen - Stag slammed with: - %d, - Gonadify pfix with gap, tall - Slam easy with [%f [%a [%smdq 10 ~]] ~] - --- - ++ bat - Begin to parse an entire template line in wide form. - --- - Slam knee with: - The bunt of tuna - Build dry %gold trap which is cached (memoized) - Gonadify pose with: - Stag slammed with %f, nup - Stag slammed with %f, ped - Stag slammed with: - %e, - Gonadify plug with hip, lif - Terminate pose gonadification. - --- - ++ bet - Begin to parse an inner line section in wide form. - --- - Slam knee with: - The bunt of tuna - Build dry %gold trap which is cached (memoized) - Gonadify pose with: - bat, - Gonadify pfix with: - hep - Stag slammed with %a, wide - Gonadify pfix with: - lus - Stag slammed with %b, wide - Gonadify pfix with: - tar - Stag slammed with %c, wide - Gonadify pfix with: - cen - Stag slammed with %d, wide - Terminate pose gonadification. - --- - ++ fry - Element or attribute name. - May contain '_', signifying ':', optionally followed by - class and/org id - --- - Slam cook with: - Build dry %gold gate with sample term `a`, unit term `b`: - If: `b` is null, - Then: Produce [%dtzz %tas a], - Else: Produce [[%dtzz %tas a] [%dtzz %tas u.b]] - Gonadify plug with: - sym, - Gonadify pose with: - Stag slammed with null, pfix gonadified with cab, sym. - Easy slammed with null. - ++ hag - Tag head - --- - Slam cook with: - Build dry %gold gate with sample twig `a` and produces `a`. - Gonadify plug with: - Stag slammed with: - %dtzz, - Stag slammed with: - %tas - Pose gonadified with: - Jest slammed with %script, - Jest slammed with %style, - Stag slammed with %clsg, jaw - Terminate plug gonadification. - ++ hig - Simple tag head. - --- - Slam cook with: - Build dry %gold gate with sample twig `a`, list of twigs `b`. Produce [a %clsg b]. - hog. - ++ hog - Tag head. - --- - Slam cook with: - Build dry %gold gate with sample tile: - twig `a` - unit term `b` - unit term `c` - unit twig `d` - list of twigs `e` - Terminate tile construction. - Yield pair of twig, list of twigs. - Set `e` to: If: `b` is null, - Then: Produce `e`, - Else: Produce [[[%dtzz %tas %class] [%smdq (trip u.b)]] e] - Set `e` to: If: `c` is null, - Then: Produce `e`, - Else: Produce [[[%dtzz %tas %id] [%smdq (trip u.c)]] e] - Set `e` to: If: `d` is null, - Then: Produce `e`, - Else: Produce [[[%dtzz %tas %href] u.d] e] - Produce pair [a e]. - Gonadify plug with: - fry, - Pose gonadified with: - Stag slammed with null, pfix gonadified with dot, sym - Easy slammed with null, - Pose gonadified with stag slammed with - Stag slammed with null, pfix gonadified with hax, sym - Easy slammed with null, - Pose gonadified with stag slammed with - Stag slammed with null, pfix gonadified with dot, stag slammed with %smdg, soil - Easy slammed with null, - Pose gonadified with: - ifix slammed with [pel per] and, - More slammed with plug gonadified with com, ace and, - Plug gonadified with fry, pfix gonadified with ace, wide - Easy slammed with null - Terminate pose gonadification. - Terminate plug gonadification. - ++ hoy - Tail attributes. - --- - Star slammed with: - pfix gonadified with: - plug gonadified with gap, tis - plug gonadified with fry, pfix gonadified with gap, tall - Terminate pfix gonadification. - ++ hul - Tall preface. - --- - Cook slammed with: - Build dry %gold gate with sample element tuna `a`, list twig `b`, list tuna `c`, - Yield [twig (list tuna)] element tuna. - Produce [[p.a %clsg (weld q.a b)] c] - Gonadify plug with hog, hoy, nol - ++ jaw - Wide attributes - --- - Gonadify pose with: - ifix slammed with [pel per] and, - More slammed with plug gonadified with com, ace, and, - plug gonadified fry, pfix gonadified with ace, wide - Easy slammed with null. - Terminate pose gonadification. - ++ lif - Wide elements. - --- - Slam cook with: - Build dry %gold gate with sample list of tuna `a` which produces `a` - Gonadify pose with: - pfix gonadied with col, pep - cold slammed with null, sem - easy slammed with null - --- - ++ luf - Wide elements. - --- - Slam cook with: - Build dry %gold gate with sample list of tuna `a` which produces `a` - Star slammed with: - Gonadify pfix with ace, bet. - --- - ++ nal - Unescaped tall tail. - --- - Slam cook with sample: - Build dry %gold gate with sample list of tuna `a` which produces `a`, - Slam ifix with: - Tile autoons gap and plug gonadified with gap, duz, - Slam most with: - gap, - Gonadify pfix with: - Gonadify pose with: - Gonadify pfix with: - ace, - Cook slammed with: - Build dry %gold gate with sample tape `a` which produces: - [%a %smdq (weld a `tape`[`@`10 ~])], - where (weld a `tape`[`@`10 ~] is the concatenation - of tape `a` with the newline character. - Star slammed with shim slamme with 32, 255. - Terminate pfix gonadification. - Terminate pose gonadification. - Terminate pfix gonadification. - - --- - ++ nol - Tall tail. - --- - Assert that tol is true, that we are parsing a tall form part of the template. - Slam cook with: - Build dry %gold gate with sample list of tuna `a` which produces `a`, - Gonadify pose with: - Slam cold with null, sem - pfix gonadified with col, pep called with tol replaced by false, to continue to parse in wide form. - pfix gonadified with: - Gonadify plug with col, ace. - Slam cook with rab called with tol replaced by false, to continue to parse in wide form, and puv. - ifix slammed with: - [gap :~(plug gap duz)], which disregards non-code before plug gonadifed with gap and duz. - Most slammed with gap, amp. - Temrinate pose gonadification. - --- - ++ nup - Wide quote. - --- - Slam cook with: - Build dry %gold gate with sample list of tuna `a` which produces `a` - Gonadify pose with: - Gonadify less with: - jest slammed with '"""'< - ifix slammed with: - [doq doq] - Cook slammed with rab, puv - inde slammed with: - ifix slammed with: - Jest slammed with '"""\0a' and jest slammed with '\0a"""', - Cook slammed with rab, puv called with `lin` tossed for false. - Terminate pose gonnadification. - --- - - ++ pab - Bracketed element. - --- - Slam ifix with [kel ker], plug gonadified with: - hig, to parse an uppercase letter followed by, - luf, to parse wide elements. - --- - - ++ ped - Wide flow. - --- - Slam cook with: - Dry %gold gate with sample list of tuna `a` which produces `a` - ifix slammed with [pel per], more slammed with ace, bet. - --- - - ++ pep - Wrapper tuna. - --- - Slam cook with: - Build dry %gold gate with sample list of tuna `a` which produces `a` - Gonadify pose with: - ped, - ifix slammed with: - [pel per], - More slammed with ace, bet - cook slammed with: - Build dry %gold gate with sample cord, - Which produces list of element [%a %smdg (trip +<)]. - qut - Gonadify plug with bat, easy slammed with null. - Terminate plug gonadification. - Terminate pose gonadification. - --- - - ++ puv - Wide/tall flow. Parse wide form interpolated Hoon code in any tag, - - --- - Slam cook with: - Build dry %gold with samlpe list of beets `a` which produces `a` - The slam of star with: - Gonadify pose with: - pfix gonadified with: - bas, - pose slammed with: - mask slammed with tape "-+*%;\{", - bas, doq, bix:ab. - pfix gonadified with hep, stag slammed with %a, sump - pfix gonadified with lus, stag slammed with %b, sump - pfix gonadified with tar, stag slammed with %c, sump - pfix gonadified with cen, stag slammed with %d, sump - pfix gonadified with sem, stag slammed with %e, - less gonadified with: - bas, kel, - If: tol, Then: fail, Else: doq - prn - If: lin, Then: fail, - Else: Gonadify less with: - Jest slammed with '\0a"""', - Just slammed with '\0a' - Stag slammed with %a, sump - Terminate pose gonadification. - --- - ++ rab - Beet to tuna. - --- - Build a dry %gold gate with sample list of beets, `reb` - Yield list of tuna. - Push bunt of [sim=(list ,@) tuz=(list tuna)] - Kick dry %gold trap. Yield list of tuna. - If: `reb` is null, - Then: Set `sim` to Unless: tol, Then: Produce sim, - Else: Produce [10 |-(?~(sim sim ?:(=(32 i.sim) $(sim t.tim) sim)))] - Else: If: The head of `reb` is an atom, - Then: Produce the toss `reb` for the tail of `reb`, `sim` for [i.reb sim] - Else: Push `zut` is the toss of `reb` for the tail of `reb`, `sim` for null - If: `sim` is null, Then: Produce [i.reb zut], - Else: Produce [[%a %smdq (flop sim)] i.reb zut] - ++ sag - Produce a twig from a tuna. - --- - Build dry %gold gate with sample list of tunas, `lut` - Yield twig. - Pair %cltr and, - Build dry %gold trap. Yield list of twigs. - If: `lut` is null, - Then: Produce [[%dtzz %n ~] ~], - Else: Switch on the head of the head of `lut`, - if %a, produce [[%clfs p.i.lut] $(lut, t.lut)], - if %b, produce [p.i.lut $(lut t.lut)] - if %c, produce the reverse cell of null and, - Triple %cndt, cast of [p.i.lut $(lut t.lut)] to a twig and, - Triple %tsbr, cast of [[%axil %noun] [%axil %noun]] to a tile and, - Pair %brcn and, - Yield a map of terms to feet, - Reverse cell of [~ ~] and, - Push `sug` is [[%& 12] ~] - Triple %$, %elm, and, - Quad %wtsg, `sug`, [%cnts `sug` [[[%& 1] ~] [~ 13]]] - if %d, produce [%cnhp] - if %e, produce - if %f, produce - where $(lut, t.lut) is the toss of `lut` for the tail of `lut`. - Terminate switch statement. - --- - ++ scat - ++ soil - ++ sump - ++ noil - ++ toad - ++ rung - ++ gunk - ++ muck - ++ butt - ++ loaf - ++ lobe - ++ exqa - ++ exqb - ++ exqc - ++ exqd - ++ exqe - ++ norm - ++ boog - ++ wisp - ++ toad - ++ rune - ++ glop - ++ gunk - ++ butt - ++ ulva - ++ hank - ++ loaf - ++ lobe - ++ mash - ++ muck - ++ teak - ++ race - ++ rack - ++ rick - ++ expa - ++ expb - ++ expc - ++ expd - ++ expe - ++ expf - ++ expg - ++ exph - ++ expi - ++ expj - ++ expk - ++ expm - ++ expn - ++ expo - ++ expp - ++ expq - ++ expr - ++ exps - ++ expt - ++ expu - ++ expv - ++ expw - ++ expx - ++ expy - ++ expz - ++ hina - ++ hinb - ++ hinc - ++ hind - ++ hine - ++ hinf - ++ hing - ++ bonk - ++ bont - ++ bony - ++ bonz - ++ lung - ++ long - ++ lobo - ++ loon - ++ lute - ++ rope - ++ tall - ++ wide - ++ hill - ++ howl - ++ toil - ++ wart -++ vest -++ vice - - diff --git a/main/pub/src/doc/ref/vol3.md b/main/pub/src/doc/ref/vol3.md index 80cfc9dfc3..2a7ec09a88 100644 --- a/main/pub/src/doc/ref/vol3.md +++ b/main/pub/src/doc/ref/vol3.md @@ -1,90 +1,90 @@ -volume 3, Arvo models and skeleton +#volume 3, Arvo models and skeleton -++ arch -++ bead -++ care -++ case -++ desk -++ cage -++ chop -++ curd -++ disk -++ duct -++ gene -++ glob -++ herd -++ hilt -++ hypo -++ khan -++ lens - ++ v - ++ w - ++ x - ++ y - ++ z -++ logo -++ lode -++ mark -++ mill -++ milt -++ monk -++ mold -++ muse -++ mosh -++ move -++ ovum -++ pane -++ pone -++ ship -++ sled -++ slut -++ vile -++ wire -++ slod -++ slub + ++ arch + ++ bead + ++ care + ++ case + ++ desk + ++ cage + ++ chop + ++ curd + ++ disk + ++ duct + ++ gene + ++ glob + ++ herd + ++ hilt + ++ hypo + ++ khan + ++ lens + ++ v + ++ w + ++ x + ++ y + ++ z + ++ logo + ++ lode + ++ mark + ++ mill + ++ milt + ++ monk + ++ mold + ++ muse + ++ mosh + ++ move + ++ ovum + ++ pane + ++ pone + ++ ship + ++ sled + ++ slut + ++ vile + ++ wire + ++ slod + ++ slub -section 3bE, Arvo core +##section 3bE, Arvo core -++ vent - ++ ruck - ++ wink - ++ doze - ++ sike - ++ souk - ++ sunk - ++ song - ++ spuc - ++ sump - ++ said - ++ scry - ++ soar - ++ swim -++ vint -++ viol -++ is - ++ beck - ++ dink - ++ dint - ++ doos - ++ hurl - ++ race - ++ fire - ++ jack - ++ kick + ++ vent + ++ ruck + ++ wink + ++ doze + ++ sike + ++ souk + ++ sunk + ++ song + ++ spuc + ++ sump + ++ said + ++ scry + ++ soar + ++ swim + ++ vint + ++ viol + ++ is + ++ beck + ++ dink + ++ dint + ++ doos + ++ hurl + ++ race + ++ fire + ++ jack + ++ kick -Postface +##Postface - ++ come - ++ keep - ++ load - ++ peek - ++ poke - ++ wish -++ come -++ keep -++ load -++ peek -++ poke -++ vega -++ veer -++ wish + ++ come + ++ keep + ++ load + ++ peek + ++ poke + ++ wish + ++ come + ++ keep + ++ load + ++ peek + ++ poke + ++ vega + ++ veer + ++ wish diff --git a/main/pub/src/doc/say/2013-09-24-urbit-intro.markdown b/main/pub/src/doc/say/2013-09-24-urbit-intro.markdown deleted file mode 100644 index 5b27cf9947..0000000000 --- a/main/pub/src/doc/say/2013-09-24-urbit-intro.markdown +++ /dev/null @@ -1,391 +0,0 @@ ---- -layout: post -category: blog -author: cgy -title: Welcome to Urbit -date: 2013-9-24 15:00 ---- -But wait - what the hell is Urbit? - -One of Urbit's problems is that we don't exactly have a word for -what Urbit is. If there is such a word, it somehow means both -"operating system" and "network protocol," while somehow also -implying "functional" and "deterministic." - -Not only is there no such word, it's not even clear there -_should_ be one. And if there was, could we even hear it? -As Wittgenstein said: if a lion could talk, we would not -understand him. But heck, let's try anyway. - -As a network protocol, we could call Urbit a "seven-layer -protocol" - that is, a protocol that specifies the complete -semantics of the general-purpose computer that processes it. As -any decent IETF ninja will tell you, this is a very bad idea for -all sorts of extremely obvious reasons. - -And from the OS perspective, Urbit is yet another slice of -userspace crap with the temerity to call itself an "operating -system." Urbit is not actually an OS in the bare-metal sense. -It's a VM that runs on Linux or OS X. Someday it might be so -daring as to descend to Xen. Urbit has no interest at all in -drivers, peripherals, etc. It is just a UDP transceiver in the -cloud. Worst of all - Urbit is not even preemptive. A poser! -(Actually all the real work, as in node, is done by libuv.) - -Moreover, this VM is formally isolated from your actual OS. And -everything that uses it. Nothing in Urbit can request system -services or call existing libraries. So Urbit is not only badly -designed and fraudulently hyped. It's also profoundly useless. - -Well... your browser has been reasonably successful with this -restriction. But your browser was never designed to be any kind -of OS. To the extent that it's sort of become an OS, it is -specialized for the very undemanding job of being a client. A -general-purpose client, which is neat. But not a general-purpose -server - which is a much harder problem. - -A general-purpose server is a slab of code that feels totally -confident when faced with the problem of storing _all your -personal and/or corporate data_, across _arbitrary functional -upgrades_, for _all time forever_, while efficiently executing -and managing _any useful program or programs, transient or -persistent_. Yeah, that's a server OS. - -So, conventionally, this industrial strength slab of code is -written with conventional OS techniques involving (a) bare metal -and (b) like, semaphores and shit. The kernel alone is like 12 -million lines of code. Not that a browser is any much smaller. - -And so, 20th-century network computing is the world's most -beautiful wire, between two dumpsters of shit spaghetti. Two -_completely different_ dumpsters. It turns out that with a big -enough dumpster of shit spaghetti, you can feed the world. And -why not two? Incompatibility creates jobs, you know. - -Oh, and you can have a client without an identity. But you can't -have a _server_ without an identity. So Urbit has to solve _that_ -problem. Unless it's just going to be a Web server. (Urbit is -actually a perfectly decent Web server.) Unless it has an actual -identity model, your general-purpose server - presumably a -_network_ server - has no network effect. No identity, no -network. No network, who the hell cares? - -And unlike your ordinary, common or garden Web application -server, Urbit does need that network effect. You see, it's not -even our own work. It's something we found. On an unmarked USB -stick by the side of the road three kilometers from Area 51. - -We think it's probably still human engineering. First of all, -there are no aliens. Second, Urbit uses Unicode. Do the aliens -have Unicode? Or SHA-256? _Where did Unicode come from, -anyway?_ And at the I/O level, we see UDP, HTTP, etc. The -command line does Emacs keys. At the very least, someone on -Earth (or at least _from_ Earth) has done some porting. - -But other than these cosmetic details, there's not much sign of a -connection to ordinary Earth computing. For instance, Urbit -isn't written in any of our Earth languages. It is written in -something called Hoon, which is a strict, higher-order, typed -functional language - but has nothing in else in common with -other Earth languages, functional or not. Hoon does not even -use standard PL theory. And its syntax is just as alien, although -at least it confines itself to the ASCII plane. (And you -probably thought the "A" in "ASCII" stood for "American.") - -Worse yet, Hoon is not written in anything normal. It's written -in Hoon. To be precise - the Hoon compiler compiles itself to a -much simpler automaton, Nock. Besides machine language itself, -and its various bytecode homages, there are three simple formal -models of computing - Turing machines, lambda calculus, and Chuck -Moore. There is also a fourth which no one has ever found useful -for anything: combinators. Nock is a combinator automaton. - -While nowhere near the simplest such automaton known, and -certainly not of any _theoretical_ interest, Nock is so stupid -that if you gzip the spec, it's only 374 bytes. Nock's only -arithmetic operation is increment. So decrement is an `O(n)`, -operation; add is `O(m*n)`... - -Clearly not a practical system. Even if this... _thing_... that -sits on top of it was in any way, shape or form remotely sane. - -So why not try it? Heck, why not at least check it out? Strange -and foolish dreamers may hie themselves to teh github: - -[https://github.com/urbit](https://github.com/urbit) - -Various people have built and run Urbit on Ubuntu, Homebrew and -MacPorts. It's possible that all these people were stone cold -ninjas. Urbit is a pretty cool toy, I think, if you're a ninja. -Unfortunately it is not really ready for ordinary rice farmers. -If you can't resolve build dependencies by hand, we're sorry. -Urbit is probably not yet ready for you. - -Where should you run Urbit? Ideally, in the cloud. Urbit can -punch a decent NAT hole. It doesn't like to, though - what does? -Bear in mind that your Urbit instance is a single-level store - -your state is saved as a log and a checkpoint (as in Redis - -except that Redis is both fast and reliable). This will work -much better on server hardware. That said, there are plenty of -good reasons to keep your servers in the closet with the plants. - -Next, you need a ticket. Or not. You at least need to decide -whether you want a ticket or not. Actually, the answer is -simple. You do want one. But you don't need one - not yet. - -Because Urbit, the OS, never depends on Earth semantics, it needs -its own network protocol - Ames. Ames is a P2P protocol with its -own public-key infrastructure. (Ames is encrypted, but the -current cryptosuite, suite A, is worthless snakeoil. Don't trust -it with your Trader Joe receipts.) Ames runs over UDP, and pays -as little attention to IP routing as possible. Needless to say, -Urbit does not use the DNS at all. - -To sling packets on Ames, you need an identity. Needless to say, -there are a lot of ways to do distributed cryptographic identity, -all of them bad. - -The general reason all PKIs suck is called "Zooko's Triangle." -Your identities can be distributed, secure, or human-meaningful - -pick any two. There is no way to solve Zooko's Triangle. The -only way to attack it is to compromise on at least one vertex. - -To see how Urbit works, let's start with a standard solution. An -Urbit identity is called a "ship." You can launch your own ship -by generating a 2048-bit RSA key and hashing it to a 128-bit -fingerprint, which is your identity. This trivial design is the -basis of all distributed, secure PKIs. - -Unfortunately, an identity should be above all a _name_. A -128-bit fingerprint looks like this: - - 316.931.986.049.624.498.975.974.005.376.666.572.699 - -which isn't a name. For no better reason than the fact that, -unless you're an autistic savant, you are basically a monkey with -an overgrown monkey brain. A name is something that fits in a -register. Your monkey brain doesn't have 128-bit registers. - -Suppose we could use 64-bit fingerprints? At first this seems -even less promising. First of all, your monkey brain doesn't -have 64-bit registers, either. Second, at 64 bits, collisions -are already a real problem. - -But we can solve both these problems. Your monkey brain doesn't -have 64-bit registers. But anything that lets us do 64-bit -identities might stretch down to 32 bits. And at 64 or 32 bits, -we can't assign identities by random hash. So we'll have to find -another way of distributing them. - -A 32-bit identity - or even a 16-bit identity - will still never -be human-meaningful. Perhaps we can make it human-memorable. -Meaningful addresses are a nice feature in a social network, but -memorable addresses are essential. And if we have memorable -addresses, perhaps we can build meaningful names on top. - -The classic example of a memorable address is a street address. -Your street address identifies you precisely, using a name. You -have this great brain hardware for remembering names. But what -does the name of your street _mean_? Nothing at all, usually. -And even if it does mean something, by accident or design, that -meaning has nothing at all to do with you. (One of us grew up in -Columbia, Maryland, which has street names like "Greek Boy -Place.") - -So all we need is a simple, tasteful, memorable way to remember -32 bits - and we're on our way to approximating the Triangle. - -Decimal notation is the worst way of remembering a 32-bit number. -IP notation is a little better. Urbit has a typically crude -approach: we map every byte to a CVC phoneme, making names like: - - ~tasfyn-partyv - ~sivbud-barnel - ~tomsyt-balsen - -These strings, while quite meaningless, are no less memorable -than real human names in many a language. Moreover, they form a -language of their own, and become more memorable as you use them. -And there are 4 billion of them, which (as we'll see) is almost -exactly the right number. - -But how do we distribute them? One obvious solution is a proof -of work scheme, as in Bitcoin. Coordinating a global -proof-of-work scheme is quite nontrivial, however. Also, there -is a second reason to compromise 100% decentralization: packet -routing. It might be possible to use a blockchain as a global -routing table. It would take some thinking about. - -Furthermore, there's a clue here that the Bitcoin approach just -isn't getting. The limited subspace of short names, within the -general space of 128-bit names, is essentially _real estate_. -There is absolutely no reason, moral or practical, to give this -real estate away for free to people whose only contribution is -generating CO2 on their GPUs. Mining is not in any way a -productive activity. - -Rather, initially, this real estate belongs to Urbit itself. If -Urbit has value, its real estate has value. If Urbit has no -value, its so-called real estate is a bunch of worthless bits. -Therefore, any value in the real estate can, should, and will be -used to bootstrap the system from an economic perspective. Ie, -it belongs to and will be captured by Urbit's developers and/or -early adopters. If you find this morally wrong, sorry. You're -probably some kind of a communist. - -But because Urbit is a free republican society - not (ahem) a -fascist corporate dictatorship like Google, Facebook or Twitter - -a crucial aspect of launching or transferring a ship is that the -decision is irreversible. - -As the master of an Urbit ship, your informal title is -cryptographic and _allodial_ - no one, not the government and -certainly not us, can challenge it. Unless the attacker can -steal your secrets. In which case, of course, she might as well -be you. That's like Bitcoin too. - -If Bitcoin is money, Urbit is land. (Floating land is still -land, if there's a limited amount of it.) You own both in the -same way, by proving you can keep a secret. A Bitcoin is not -useful for anything, except selling to a greater fool. (We're -just kidding - we're huge Bitcoin fans.) But an Urbit ship is -directly useful, so long as Urbit itself is useful. - -You fill your Bitcoin wallet either by creating new coins, or -buying old ones from Satoshi and his cronies. You build your -Urbit fleet by buying ships from us and our cronies. (Don't ask -what we had to do to get them from the aliens. Those aliens are -into a lot of strange shit, man.) Ships are transferable, but -Urbit is not designed to be a digital currency. Transaction -overhead is artificially high. Again, as in real estate. - -Urbit at present is empty and worthless. So 32-bit ships - -destroyers - are $0. Launch a 128-bit ship (a submarine) and -ask me, ~tasfyn-partyv, for one. We'll send you one, two, or a -dozen. You can be as anonymous as you want, if you're polite. -But, if the network lives, a destroyer price will develop. It -will be very low at first, but not zero. Urbit is designed to be -free as in speech. It's not designed to be free as in beer. - -How, cryptographically, are cloud ships distributed? And how are -packets routed? The answer is the same - the prefix hierarchy. - -In Urbit's naval terminology, ships above 64 bits are -"submarines." 64-bit ships are "yachts." 32-bit, "destroyers." -16-bit, "cruisers." 8-bit, "carriers." This also resembles a -feudal hierarchy, so it comes with a feudal terminology. There -are 256 imperial carriers, 65.280 royal cruisers, 4.294.901.760 -rebel destroyers, uncounted scads of private yachts, and more or -less infinitely many rogue submarines. - -Every ship but a submarine has a "will," or certificate chain - a -linked list of "deeds." The first deed in this list is signed by -the ship's hierarchical prefix, or "flagship." Mere submarine are -independent; carriers create cruisers; cruisers create -destroyers; destroyers create yachts. - -A submarine is the fingerprint of its own public key; a carrier's -fingerprint is predefined in the kernel. Anyone can create any -number of 128-bit submarines, whose free and independent -society the 64-bit naval hierarchy cannot interfere with. And -of course, since Urbit is (a) in the public domain and (b) not -patented, anyone can fork Urbit and change the carrier -fingerprints. Anyone can also create his own independent and -incompatible DNS, but efforts in this direction have not been -crowned with great success. In general, the easier it is -technically to fork open-source code or an open standard, the -less likely a fork is to actually happen. - -An independent ship is an independent reputation. Your flagship -hierarchy, though it created your ship, has no control over it - -so your reputations are and should be separate. But there are -not 2^64 independent reputations in Urbit, only 2^32. Cruisers -have no control over the destroyers they create, but yachts have -no independence from the destroyers that created them. - -The reason for this is simple - a destroyer corresponds not to a -person, but to any institution with its own independent -reputation. Yachts are for users, bots, or other sub-identities -of this institution. Each destroyer has 2^32 of them, which is, -of course, a lot. - -How does independence work in practice? By pinning/TOFU. For -any deed number, or "life," the first instance is accepted. Thus -when changing secrets, perhaps to transfer a ship, the donor -signs a new deed created by the recipient. Once any ship sees -this deed, it will never accept another signed by the old owner. -Thus, a cruiser cannot sell the same new destroyer twice. -Similarly, deed 7 of ~tasfyn-partyv signs deed 8; but no ship -which has a deed 8 for ~tasfyn-partyv will either accept deed 7, -or any other purported deed 8 which deed 7 later signs. - -Preventing a "double spend" thus depends on propagating the -latest deed. For this purpose, the ocean is divided into two -kinds of ships: friends and non-friends of the ship being -transferred. The ship has a list of its cryptographic partners, -or "neighbors," for which it holds a symmetric key and a routing -(IP) address. - -The new owner sends the new deed to all the neighbors, thus -locking the old owner out of them. Future new friends will get -the new owner's will the same way they get the new owner's IP -address - by a lookup through the flagship hierarchy. Thus if we -update both neighbors and flagship, the old owner is locked out -and the new owner is locked in. - -Technically, this is very much an imperfect procedure. It relies -on social trust to make it effective. For example, a malicious -seller could edit his neighbor list before delivering the ship. -You probably don't want to buy a used destroyer from someone you -distrust. Of course, the same is true of cars. - -And more broadly, the naval hierarchy can and should provide -general administrative support. For one thing, the big ships -route your packets, at least when establishing contact with your -fellow destroyers. - -So - do you want an Urbit destroyer? You know you do. Moreover, -they're free. Of course, if you are satisfied with a name that -looks like - - ~machec-binnev-dordeb-sogduc--dosmul-sarrum-faplec-nidted - -you can keep swimming around Urbit in your submarine. - -For a while, anyway. Because, besides memorability, there is -another reason for short names. - -What's neat about short names is that there's a finite number of -them. This is not a bug, but a feature. Essentially, to borrow -the thinking of political scientist James Scott, a finite space -is _governable_. An infinite space is ungovernable. - -If there are an infinite number of identities, there is no way -for anyone to distinguish between a new user and a banned user. -A reputation can be punished by destroying it, but anyone can -start again at zero. A parasite whose only reason to use the -network is to abuse it can keep coming back for more. An email -spammer will never run out of addresses to spam from. - -IPv4 is a limited space, which almost but doesn't cure spam. The -problem is that IPv4 addresses are neither personal nor property, -so there is generally no easy way to punish a spammer as he -deserves through IP blacklisting. He is very unlikely to be in -any sense the owner of the IP address on his packets. - -But if the email address and the IP address were the same thing, -and the present fuzzy economic relationship between the user of -an IP address were clear and simple, killing spam would become -easy. You spam from a destroyer; you go on a list of spammers; -no one will accept your unsolicited messages, ever. - -You can get around this. You can buy a new destroyer. But the -thing is - it costs you *money*. You're not spamming for the -fun of it. If a destroyer costs a mere $1, the spam you send -from it needs to earn you $1. - -This does not make it trivial for the forces of light to hunt you -down and render you into processed meat clippings. But it sure -as heck evens the game. Who will win? I guess we'll see. - -So do you want an Urbit destroyer? Read the [documentation](/2013/11/18/urbit-is-easy-ch1.html) for instructions. Come on, they're free... diff --git a/main/pub/src/doc/say/arvo/1.md b/main/pub/src/doc/say/arvo/1.md index ab8e7a7a43..4cb9ee19e3 100644 --- a/main/pub/src/doc/say/arvo/1.md +++ b/main/pub/src/doc/say/arvo/1.md @@ -1,10 +1,4 @@ ---- -layout: tutpage -axis: doc-arvo -categories: tut -sort: 1 -title: I - Basic Arvo ---- +#Basic Arvo These sections assume you've gotten Arvo up and running; if not, [do so](/setup) first. diff --git a/main/pub/src/doc/say/arvo/2.md b/main/pub/src/doc/say/arvo/2.md index 409949e4cf..886601b8fb 100644 --- a/main/pub/src/doc/say/arvo/2.md +++ b/main/pub/src/doc/say/arvo/2.md @@ -1,11 +1,6 @@ ---- -layout: tutpage -axis: doc-arvo -categories: tut -sort: 1 -title: II - More Basic Arvo ---- -#Local revision control +#More Basic Arvo + +##Local revision control Now you're ready to see the full power of this fully armed and operational revision-controlled filesystem. @@ -146,7 +141,7 @@ But one could argue that it's just a party trick. But once your revision control system and your scheduler are jammed into one phone booth... why not jam networking in there too? -#Network revision control# +##Network revision control# Arvo is the OS. Urbit is the network. In theory you could write an Urbit client that wasn't Arvo, though it's hard to see why. diff --git a/main/pub/src/doc/say/hoon/1.md b/main/pub/src/doc/say/hoon/1.md index c77ff50d06..67c2bb3d0e 100644 --- a/main/pub/src/doc/say/hoon/1.md +++ b/main/pub/src/doc/say/hoon/1.md @@ -1,10 +1,4 @@ ---- -layout: tutpage -axis: doc-hoon -categories: tut -sort: 1 -title: I - Intro To Hoon ---- +#Intro to Hoon > Like all men in Babylon, I have been proconsul; like all, a slave. > - The Lottery in Babylon diff --git a/main/pub/src/doc/say/hoon/2.md b/main/pub/src/doc/say/hoon/2.md index e16de0d134..10b607a0c2 100644 --- a/main/pub/src/doc/say/hoon/2.md +++ b/main/pub/src/doc/say/hoon/2.md @@ -1,10 +1,4 @@ ---- -layout: tutpage -axis: doc-hoon -categories: tut -sort: 2 -title: II - Moar Hoon Types ---- +#Types > What good is a phone call if you're unable to speak? > - The Matrix diff --git a/main/pub/src/doc/say/hoon/3.md b/main/pub/src/doc/say/hoon/3.md index 1e0237b0fb..b92aa0451f 100644 --- a/main/pub/src/doc/say/hoon/3.md +++ b/main/pub/src/doc/say/hoon/3.md @@ -1,10 +1,4 @@ ---- -layout: tutpage -axis: doc-hoon -categories: tut -sort: 3 -title: III - Hoon Computes ---- +#Hoon Computes > I've only been in love with a beer bottle and a mirror. > - Sid Vicious diff --git a/main/pub/src/doc/say/hoon/4.md b/main/pub/src/doc/say/hoon/4.md index 8838ad6cce..7fa4958d3b 100644 --- a/main/pub/src/doc/say/hoon/4.md +++ b/main/pub/src/doc/say/hoon/4.md @@ -1,10 +1,4 @@ ---- -layout: tutpage -axis: doc-hoon -categories: tut -sort: 4 -title: IV - Gates ---- +#Gates > Anyone who thinks he's original is merely ignorant. > - Nicolás Gómez Dávila diff --git a/main/pub/src/doc/say/hoon/5.md b/main/pub/src/doc/say/hoon/5.md index 8e093a6119..a52f4c54b2 100644 --- a/main/pub/src/doc/say/hoon/5.md +++ b/main/pub/src/doc/say/hoon/5.md @@ -1,10 +1,4 @@ ---- -layout: tutpage -axis: doc-hoon -categories: tut -sort: 5 -title: V - Tiles ---- +#Tiles > Not to get knowledge, but to save yourself from having > ignorance foisted upon you. diff --git a/main/pub/src/doc/say/hoon/6.md b/main/pub/src/doc/say/hoon/6.md index 182b7ba6da..866f547dff 100644 --- a/main/pub/src/doc/say/hoon/6.md +++ b/main/pub/src/doc/say/hoon/6.md @@ -1,10 +1,4 @@ ---- -layout: tutpage -axis: doc-hoon -categories: tut -sort: 6 -title: VI - Type Inference ---- +#Type Inference > Ever, as before, does Madness remain a mysterious-terrific, > altogether infernal boiling-up of the Nether Chaotic Deep, @@ -961,4 +955,4 @@ perfectly capable of inferring that when you weld `(list a)` and change might confuse. In short: generic polymorphism is cool but wacky. Leave it to -the experts, please! \ No newline at end of file +the experts, please! diff --git a/main/pub/src/doc/say/hoon/7.md b/main/pub/src/doc/say/hoon/7.md index 54b383de53..fe5bef9662 100644 --- a/main/pub/src/doc/say/hoon/7.md +++ b/main/pub/src/doc/say/hoon/7.md @@ -1,10 +1,5 @@ ---- -layout: tutpage -axis: doc-hoon -categories: tut -sort: 7 -title: VII - Odds, Ends, Quirks ---- +#Odds, Ends, Quirks + ##A bestiary of cores## @@ -1214,4 +1209,4 @@ In freehand mode (F-Hoon), do whatever the heck you want. Note that while uppercase is not permitted in a symbol, `-` is, suggesting a generally Lisp-like state of gross hyphenated disorder. F-mode is best used for top-layer software which -nothing else is based on; prototyping and casual coding; etc. \ No newline at end of file +nothing else is based on; prototyping and casual coding; etc. diff --git a/main/pub/src/doc/say/nock/1.md b/main/pub/src/doc/say/nock/1.md index 59db351b78..18f452f3b0 100644 --- a/main/pub/src/doc/say/nock/1.md +++ b/main/pub/src/doc/say/nock/1.md @@ -1,10 +1,4 @@ ---- -layout: tutpage -axis: doc-nock -categories: tut -sort: 1 -title: I - Intro To Nock ---- +#Intro to Nock > What one fool can do, another can. > - Ancient Simian proverb diff --git a/main/pub/src/doc/say/nock/2.md b/main/pub/src/doc/say/nock/2.md index 60946b6d5c..48d6a4e39b 100644 --- a/main/pub/src/doc/say/nock/2.md +++ b/main/pub/src/doc/say/nock/2.md @@ -1,10 +1,4 @@ ---- -layout: tutpage -axis: doc-nock -categories: tut -sort: 2 -title: II - Nock Is Easy ---- +#Nock is Easy > You get used to it. I don't even see the code. All I see is blonde, brunette, redhead. > - The Matrix diff --git a/main/pub/src/doc/say/nock/3.md b/main/pub/src/doc/say/nock/3.md index 573cc04b91..7df460e13e 100644 --- a/main/pub/src/doc/say/nock/3.md +++ b/main/pub/src/doc/say/nock/3.md @@ -1,10 +1,5 @@ ---- -layout: tutpage -axis: doc-nock -categories: tut -sort: 3 -title: III - Using Nock ---- +#Using Nock + > But are you crazy enough? > - Point Break diff --git a/main/pub/src/site/res/footer.html b/main/pub/src/site/res/footer.html deleted file mode 100644 index 394f1087e9..0000000000 --- a/main/pub/src/site/res/footer.html +++ /dev/null @@ -1,15 +0,0 @@ - diff --git a/main/pub/src/site/res/head.html b/main/pub/src/site/res/head.html deleted file mode 100644 index 8b1756ac2e..0000000000 --- a/main/pub/src/site/res/head.html +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - {% if page.title == "Home" %} - {{ site.title }} · {{ site.tagline }} - {% else %} - {{ page.title }} · {{ site.title }} - {% endif %} - - - - - - - - - - - - - - - - - - - diff --git a/main/pub/src/site/res/logo.png b/main/pub/src/site/res/logo.png deleted file mode 100644 index 130275c9984087445d8d82ff2f99412ba3d4ebff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1040 zcmeAS@N?(olHy`uVBq!ia0vp^6(G#P1|%(0%q{^b$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@%$q!2978H@y_wtS``AFFjdvI0jfPE*Ga3vWcQd|a+ra2E zp{%K_84Q_sG2T^}-d@77(78-%d0pL4J544>J(<6sa{eDHT>om}orosX7=a zNC@z7u(2>VF&>0c;;Gwj@4Wo7C1LfMG~@5zzO^NEpLt$fZX>tfj<0pK;-8%Xv!3qW zy?gz$ojTsz@8+#c(DvB;XYc!|`y%+XZZKSu@&5WR#YAf7_wVIe7Ugkqado2le+@($vbXV&LJ-S6JNk3Mf1-Rt{I>&NpYZnLEiKeE}nlIz=1C3&&r%Uid;dTV82 zEIxZlQ#SLO>#w8g=1Lr|+rNHo!m`e35l?;_KPa*Kdum^Er>~gSkFQ^^Mo;zKA5~vd zbH!Kw_s^a0|2!?qT-3B#T<4Ng%Sqo0&)PDQE!uP?~jcLinUPm!IA@XEtV8zCiLRTj=^Z-=&4xcf~Ouv=zM6 z?x!aFzI2Jx?k!9l?;0ok3+|in&$vWnUUtqYzYmrhHQf5nnVO}l?>M`}?TwoK@f%a7 zKDZDO5*qqCyZv11bFtZ*gk+2qCV9OvE^FnvBQQrp?B@oF*_#CKlm;oMX$Ok1Hf=q& zXyMUiIxOuy1<8Jz-%NwtH!Kpr?UfUxyQAN;_eQhT+l`)EAM8uMD3CNc>fpkOOV1zl zdvT=e*^MP(AC@Lf?4Ka2JS%y!*TLyCu5{S)S)^B$Y-rM#?XKzA6O%mI>Y$>2TGz$w z6Ta$acbbLh*6`P^3!lgGXM4xrN#|`_-<(lCZ+7y3f9v~nzpM=VExPXml`TvrJt@fO z^39s3x8+O7{5PGR!nJNXr(RwVnjONkDdjY4w)NeN${9A5!nvi=%AQPG+gdzsy0qJ| zO#3|XSK_B7qB^%_Bk%9F{QBUd|0#Jpx&FI{4>vdelQ`1$z`3nF))6(i8oSI~HRWg6 z>HM6DO^Y;QLPM=sy6-I96Ds3t0#DY0pw#WG6j9>N3QFS*3E(8(1Exd-axc!!FSp8Q z&$*|ht!*uw+}}50ZN25CH#6LYedS^K0;H$uAWz^jt@-oj#Y9fqGfQyi-o3p=veV99 oa=|oIq4?q(rK}nInRplyfB!68;-I+{n8g`9UHx3vIVCg!00u_X>i_@% diff --git a/main/pub/src/site/res/sidebar.html b/main/pub/src/site/res/sidebar.html deleted file mode 100644 index c303a645e6..0000000000 --- a/main/pub/src/site/res/sidebar.html +++ /dev/null @@ -1,21 +0,0 @@ - diff --git a/main/pub/src/site/res/styles.css b/main/pub/src/site/res/styles.css deleted file mode 100644 index 3743b51161..0000000000 --- a/main/pub/src/site/res/styles.css +++ /dev/null @@ -1,596 +0,0 @@ - - -* { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} - -html, -body { - margin: 0; - padding: 0; -} - -html { - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 14px; - line-height: 1.5; -} -@media (min-width: 38rem) { - html { - font-size: 16px; - } -} - -body { - color: #515151; - background-color: #fff; - -webkit-text-size-adjust: 100%; - -ms-text-size-adjust: 100%; -} - -/* No `:visited` state is required by default (browsers will use `a`) */ -a { - line-height: 1.1rem; - color: #555; - text-decoration: none; -} -li a, p a { - display: inline-block; - border-bottom: 2px solid #ccc; -} -/* `:focus` is linked to `:hover` for basic accessibility */ -a:hover, -a:focus { - text-decoration: underline; -} - -li a:hover, p a:hover, -li a:hover, p a:focus { - border-bottom: 2px solid #555; -} - -/* Headings */ -h1, h2, h3, h4, h5, h6 { - margin-bottom: .5rem; - font-weight: bold; - line-height: 1.25; - color: #313131; - text-rendering: optimizeLegibility; -} -h1 { - font-size: 1.2rem; -} -h2 { - margin-top: 1rem; - font-size: 1rem; -} -h3 { - margin-top: 1.5rem; - font-size: .9rem; -} -h4, h5, h6 { - margin-top: .9rem; - font-size: .9rem; - font-weight: 500; - letter-spacing: .03rem; -} - -/* Body text */ -p { - max-width: 42rem; - margin-top: 0; - margin-bottom: 1rem; -} - -strong { - color: #303030; -} - - -/* Lists */ -ul, ol, dl { - margin-top: 0; - margin-bottom: 1rem; -} - -dt { - font-weight: bold; -} -dd { - margin-bottom: .5rem; -} - -/* Misc */ -hr { - position: relative; - margin: 1.5rem 0; - border: 0; - border-top: 1px solid #eee; - border-bottom: 1px solid #fff; -} - -abbr { - font-size: 85%; - font-weight: bold; - color: #555; - text-transform: uppercase; -} -abbr[title] { - cursor: help; - border-bottom: 1px dotted #e5e5e5; -} - -/* Code */ -code, -pre, .codeblock { - font-family: Menlo, Monaco, "Courier New", monospace; -} -code { - padding: .25em .5em; - font-size: 90%; - background-color: #f9f9f9; - border-radius: none; -} -pre, .codeblock { - display: block; - margin-top: 0; - margin-bottom: 1rem; - padding: 1rem; - font-size: .9rem; - line-height: 1.4; - white-space: pre; - white-space: pre-wrap; - word-break: break-all; - word-wrap: break-word; - width: 42rem; - background-color: #f9f9f9; -} -pre code, .codeblock code { - padding: 0; - font-size: 90%; - color: inherit; - background-color: transparent; -} -.highlight { - margin-bottom: 1rem; - border-radius: none; -} -.highlight pre { - margin-bottom: 0; -} - -/* Quotes */ -blockquote { - padding: .5rem 1rem; - padding-left: 0; - max-width: 32rem; - margin: .8rem 0; - color: #7a7a7a; -} -blockquote p:last-child { - margin-bottom: 0; -} -@media (min-width: 30rem) { - blockquote { - padding-right: 5rem; - padding-left: 0; - } -} - -img { - display: block; - margin: 0 0 1rem; - border-radius: none; - min-width:100%; - max-width:100%; - height:auto; -} - -/* Tables */ -table { - margin-bottom: 1rem; - width: 100%; - border: 1px solid #e5e5e5; - border-collapse: collapse; -} -td, -th { - padding: .25rem .5rem; - border: 1px solid #e5e5e5; -} -tbody tr:nth-child(odd) td, -tbody tr:nth-child(odd) th { - background-color: #f9f9f9; -} - - -/* - * Custom type - * - * Extend paragraphs with `.lead` for larger introductory text. - */ - -.lead { - font-size: 1.25rem; - font-weight: 300; -} - - -/* - * Messages - * - * Show alert messages to users. You may add it to single elements like a `

`, - * or to a parent if there are multiple elements to show. - */ - -.message { - margin-bottom: 1rem; - padding: 1rem; - color: #717171; - background-color: #f9f9f9; -} - - -/* - * Container - * - * Center the page content. - */ - -.container { - max-width: 42rem; - padding-left: 1rem; - padding-right: 1rem; - margin-left: auto; - margin-right: auto; -} - - -/* - * Masthead - * - * Super small header above the content for site name and short description. - */ - -.masthead { - padding-top: 1rem; - padding-bottom: 1rem; - margin-bottom: 3rem; -} -.masthead-title { - margin-top: 0; - margin-bottom: 0; - color: #505050; -} -.masthead-title a { - color: #505050; -} -.masthead-title small { - font-size: 75%; - font-weight: 400; - color: #c0c0c0; - letter-spacing: 0; -} - - -/* - * Posts and pages - * - * Each post is wrapped in `.post` and is used on default and post layouts. Each - * page is wrapped in `.page` and is only used on the page layout. - */ - -.page, -.subpage, -.post { - margin-top: 2rem; - margin-bottom: 4em; -} - -/* Blog post or page title */ -.page-title, -.post-title, -.post-title a { - color: #303030; -} - -/* Meta data line below post title */ -.post-date { - display: block; - margin-top: -.5rem; - margin-bottom: 1rem; - color: #9a9a9a; -} - -/* Related posts */ -.related { - padding-top: 2rem; - padding-bottom: 2rem; - border-top: 1px solid #eee; -} -.related-posts { - padding-left: 0; - list-style: none; -} -.related-posts h3 { - margin-top: 0; -} -.related-posts li small { - font-size: 75%; - color: #999; -} -.related-posts li a:hover { - color: #268bd2; - text-decoration: none; -} -.related-posts li a:hover small { - color: inherit; -} - - -/* - * Pagination - * - * Super lightweight (HTML-wise) blog pagination. `span`s are provide for when - * there are no more previous or next posts to show. - */ - -.pagination { - overflow: hidden; /* clearfix */ - margin-left: -1rem; - margin-right: -1rem; - font-family: "PT Sans", Helvetica, Arial, sans-serif; - color: #ccc; - text-align: center; -} - -/* Pagination items can be `span`s or `a`s */ -.pagination-item { - display: block; - padding: 1rem; - border: 1px solid #eee; -} -.pagination-item:first-child { - margin-bottom: -1px; -} - -/* Only provide a hover state for linked pagination items */ -a.pagination-item:hover { - background-color: #f5f5f5; -} - -@media (min-width: 30rem) { - .pagination { - margin: 3rem 0; - } - .pagination-item { - float: left; - width: 50%; - } - .pagination-item:first-child { - margin-bottom: 0; - border-top-left-radius: 4px; - border-bottom-left-radius: 4px; - } - .pagination-item:last-child { - margin-left: -1px; - border-top-right-radius: 4px; - border-bottom-right-radius: 4px; - } -} - -.hll { background-color: #ffffcc } - - -.css .o, -.css .o + .nt, -.css .nt + .nt { color: #999; } - -.toggle { - display: none; -} -.subnav li.active .toggle, .toggle.active { - display: block; -} - -.setup .subnav li.active > a { - border-color: #000; - font-weight: bold; - color: #000; -} - -.sidebar-about { - height: 3rem; -} - -.sidebar-about h1 { - font-size: 1rem; - font-weight: 500; - display: inline-block -} - -.sidebar-about > a:focus, -.sidebar-about > a:hover { - border: none; - text-decoration: none; -} - -.sidebar-about h1.title { - border-bottom: 3px solid transparent; -} - -.sidebar-about h1.logo { - margin-top: .6rem; - margin-right: .6rem; - margin-left: -2rem; - margin-bottom: 0; - height: 1rem; - float: left; -} - -@media only screen and (max-width: 500px) { - .sidebar-about h1.logo { - margin-left: 0; - } -} - -img.logo { - width: 1.2rem; - height: 1.2rem; -} - -.sidebar-about p.lead { - font-size: .8rem; - font-weight: normal; -} - -.sidebar-nav { - margin: 0; - padding: 0; -} - -.sidebar-nav li > a { - border: none; - border-bottom: 3px solid #fff; -} - -.sidebar-about h1.title:focus, -.sidebar-about h1.title:hover, -.sidebar-nav li > a.active, -.sidebar-nav li > a:focus, -.sidebar-nav li > a:hover { - text-decoration: none; - border-bottom: 3px solid #555; -} - -.sidebar-about > a > img { - width: 30px; -} - -.sidebar-nav-item { - display: inline-block; - min-width: 13rem; - font-size: 1rem; -} - -.footer { - margin-bottom: 4rem; -} - -.footer .sidebar-nav-item { - margin-top: 4rem; -} - -ul,ol { - padding-left: 2rem; -} - -ol { - list-style-type: upper-roman; -} - -ul { - list-style-type: circle; -} - -ul.chat { - list-style-type: none; -} - -ul.chat li { - margin-bottom: 2rem; -} - -.doc-hoon h1, .doc-hoon h2 { - margin-top: 3rem; -} - -.documentation > ul { - list-style-type: none; - padding-left: 0; - float: left; -} - -.documentation ul > li { - float: left; - width: 13rem; -} - -code, .subnav > ul > li > ul { - font-family: "Menlo", "Courier New", courier, monospace; - color: inherit; -} - -.subnav > ul > li > ul { - font-size: .9rem; - overflow: hidden; - height: 0; - margin-right: 2rem; -} - -.subnav > ul > li.active > ul { - overflow: visible; - height: auto; -} - -.subnav > ul > li .section { - display: inline-block; -} - -.setup .subnav li > a.expand, .subnav > ul > li .expand { - font-size: .6rem; - border: 0; -} - -.setup .subnav li > a.expand:before, .subnav > ul > li .expand:before { - content: "\25B6"; - font-size: .6rem; -} - -.setup .subnav li > a.expand:before { - margin-right: .6rem; -} - -.setup .subnav li.active > a.expand:before, .subnav > ul > li.active .expand:before { - content: "\25BC"; - font-size: .6rem; -} - -.subnav, .subnav ul { - list-style-type: none; - padding: 0; - margin: 0 0 .6rem 0; -} - -.subnav ul > li > ul > li { - margin-bottom: .3rem; -} - -.subnav a.active { - font-size: 1rem; - font-weight: 700; - color: #333; - border-bottom: 2px solid #555; -} - -.page.setup .subnav .toggle { - margin: 1rem 0 2rem 1.6rem; -} - -@media only screen and (min-width: 54rem) { - .doc-hoon .subnav.arms a{ - font-size: .8rem; - } - .doc-hoon .subnav.runes, .doc-hoon .subnav.arms { - position: fixed; - top: 8rem; - left: 50%; - margin-left: -30rem; - overflow-y: scroll; - } - .subnav > ul > li > ul { - margin-right: 0; - } -}