on master help sign in
Merge pull request #227 from urbit/next-slim

Urbit.org Next

commit5311b9e1563f03db5c95872c6c449f67858d373a authorMatilde Park <matilde@tlon.io> dateTue 15 Oct 2019, 14:30 (7 years ago) parent94cc303e92abc7
214 files changed+9539−42980
.gitmodules+1−1 config.toml+4−17 content/_primer.md−4 content/posts/2019-10-3-roadmap.md → content/blog/2019-10-3-roadmap.md+5−6 content/posts/2019-5-roadmap.md → content/blog/2019-5-roadmap.md+4−6 content/blog/_index.md+6 content/posts/a-founders-farewell.md → content/blog/a-founders-farewell.md+4−4 content/posts/an-urbit-overview.md → content/blog/an-urbit-overview.md+4−4 content/posts/announcing-urbit-grants.md → content/blog/announcing-urbit-grants.md+4−4 content/posts/azimuth-as-multipass.md → content/blog/azimuth-as-multipass.md+4−5 content/posts/azimuth-is-on-chain.md → content/blog/azimuth-is-on-chain.md+4−4 content/posts/azimuth-security-bounty-program.md → content/blog/azimuth-security-bounty-program.md+4−4 content/posts/beliefs-and-principles.md → content/blog/beliefs-and-principles.md+4−4 content/posts/bootstrapping-urbit-from-ethereum.md → content/blog/bootstrapping-urbit-from-ethereum.md+4−4 content/posts/common-objections-to-urbit.md → content/blog/common-objections-to-urbit.md+4−4 content/posts/governance-of-urbit.md → content/blog/governance-of-urbit.md+4−4 content/posts/interim-constitution.md → content/blog/interim-constitution.md+4−4 content/posts/landscape-a-portrait.md → content/blog/landscape-a-portrait.md+5−7 content/posts/magic.md → content/blog/magic.md+4−4 content/posts/the-100-year-computer.md → content/blog/the-100-year-computer.md+4−6 content/posts/the-dao-as-a-lesson-in-decentralized-governance.md → content/blog/the-dao-as-a-lesson-in-decentralized-governance.md+4−3 content/posts/the-state-of-landscape.md → content/blog/the-state-of-landscape.md+4−5 content/posts/the-urbit-address-space.md → content/blog/the-urbit-address-space.md+4−4 content/posts/toward-a-frozen-operating-system.md → content/blog/toward-a-frozen-operating-system.md+4−4 content/posts/toward-a-new-clay.md → content/blog/toward-a-new-clay.md+4−4 content/posts/urbit-and-the-blockchain.md → content/blog/urbit-and-the-blockchain.md+4−4 content/posts/urbit-grants-and-mid-2019-gifts.md → content/blog/urbit-grants-and-mid-2019-gifts.md+4−5 content/posts/what-is-urbit-for.md → content/blog/what-is-urbit-for.md+4−4 content/posts/why-urbit-probably-does-not-need-a-blockchain.md → content/blog/why-urbit-probably-does-not-need-a-blockchain.md+4−4 content/bounties.md+4−2 content/docs+1−1 content/faq.md+123−133 content/governance.md+21 content/media.md+4 content/posts/_index.md → content/media/_index.md+1−1 content/posts/blockchannel-episode-19-virtual-land-in-the-clouds-with-urbit.md → content/media/blockchannel-episode-19-virtual-land-in-the-clouds-with-urbit.md+4−3 content/posts/blueprint-2017-galen-wolfe-pauly-on-the-distributed-web.md → content/media/blueprint-2017-galen-wolfe-pauly-on-the-distributed-web.md+5−3 content/posts/epicenter-episode-205-urbit-a-digital-republic-reinventing-the-internet.md → content/media/epicenter-episode-205-urbit-a-digital-republic-reinventing-the-internet.md+5−3 content/posts/governing-the-future-e09-urbit-a-user-owned-internet-on-top-of-the-internet.md → content/media/governing-the-future-e09-urbit-a-user-owned-internet-on-top-of-the-internet.md+4−3 content/posts/lambdaconf-2016-curtis-yarvin-urbit-a-clean-slate-functional-operating-stack.md → content/media/lambdaconf-2016-curtis-yarvin-urbit-a-clean-slate-functional-operating-stack.md+5−3 content/posts/lambdaconf-2018-ted-blackman-ford-urbits-build-system.md → content/media/lambdaconf-2018-ted-blackman-ford-urbits-build-system.md+5−3 content/posts/the-ether-review-46-curtis-yarvin-and-galen-wolfe-pauly-on-urbit.md → content/media/the-ether-review-46-curtis-yarvin-and-galen-wolfe-pauly-on-urbit.md+5−3 content/posts/the-future-of-precision-agriculture-is-decentralized.md → content/media/the-future-of-precision-agriculture-is-decentralized.md+5−4 content/posts/urbit-and-the-not-so-dark-future-of-the-internet.md → content/media/urbit-and-the-not-so-dark-future-of-the-internet.md+4−3 content/media/what-is-urbit.md+10 content/privacy.md+15−14 content/tos.md+2−2 content/understanding-urbit/_index.md+9 content/understanding-urbit/network-and-os.md+39 content/understanding-urbit/project-history.md+38 content/understanding-urbit/simple-durable-yours.md+53 content/understanding-urbit/technical-overview.md+47 content/understanding-urbit/urbit-id.md+67 content/understanding-urbit/your-last-computer.md+38 content/posts/2016-10-6-update.md → content/updates/2016-10-6-update.md+4−3 content/posts/2016-5-16-roadmap.md → content/updates/2016-5-16-roadmap.md+4−4 content/posts/2016-7-20-update.md → content/updates/2016-7-20-update.md+4−3 content/posts/2016-8-30-update.md → content/updates/2016-8-30-update.md+4−3 content/posts/2017-1-30-update.md → content/updates/2017-1-30-update.md+4−3 content/posts/2017-10-7-update.md → content/updates/2017-10-7-update.md+4−3 content/posts/2017-11-14-update.md → content/updates/2017-11-14-update.md+4−3 content/posts/2017-12-16-update.md → content/updates/2017-12-16-update.md+4−3 content/posts/2017-12-2-update.md → content/updates/2017-12-2-update.md+4−4 content/posts/2017-12-22-update.md → content/updates/2017-12-22-update.md+4−3 content/posts/2017-3-1-update.md → content/updates/2017-3-1-update.md+4−3 content/posts/2017-4-17-update.md → content/updates/2017-4-17-update.md+4−3 content/posts/2017-5-11-roadmap.md → content/updates/2017-5-11-roadmap.md+4−3 content/posts/2017-8-11-update.md → content/updates/2017-8-11-update.md+5−4 content/posts/2017-9-23-update.md → content/updates/2017-9-23-update.md+4−3 content/posts/2017-9-29-update.md → content/updates/2017-9-29-update.md+4−3 content/posts/2018-1-13-update.md → content/updates/2018-1-13-update.md+4−3 content/posts/2018-1-6-update.md → content/updates/2018-1-6-update.md+4−3 content/posts/2018-10-12-update.md → content/updates/2018-10-12-update.md+4−5 content/posts/2018-10-24-update.md → content/updates/2018-10-24-update.md+5−6 content/posts/2018-11-20-update.md → content/updates/2018-11-20-update.md+5−6 content/posts/2018-11-6-update.md → content/updates/2018-11-6-update.md+4−5 content/posts/2018-12-18-update.md → content/updates/2018-12-18-update.md+5−6 content/posts/2018-2-17-update.md → content/updates/2018-2-17-update.md+4−3 content/posts/2018-2-24-update.md → content/updates/2018-2-24-update.md+4−3 content/posts/2018-2-5-update.md → content/updates/2018-2-5-update.md+4−4 content/posts/2018-2-9-update.md → content/updates/2018-2-9-update.md+4−3 content/posts/2018-3-24-update.md → content/updates/2018-3-24-update.md+6−5 content/posts/2018-3-5-update.md → content/updates/2018-3-5-update.md+4−3 content/posts/2018-4-14-update.md → content/updates/2018-4-14-update.md+4−3 content/posts/2018-4-7-update.md → content/updates/2018-4-7-update.md+4−3 content/posts/2018-5-16-update.md → content/updates/2018-5-16-update.md+4−4 content/posts/2018-5-23-update.md → content/updates/2018-5-23-update.md+4−4 content/posts/2018-5-29-update.md → content/updates/2018-5-29-update.md+4−3 content/posts/2018-5-30-update.md → content/updates/2018-5-30-update.md+4−3 content/posts/2018-6-14-update.md → content/updates/2018-6-14-update.md+5−6 content/posts/2018-6-21-update.md → content/updates/2018-6-21-update.md+4−4 content/posts/2018-6-6-update.md → content/updates/2018-6-6-update.md+4−3 content/posts/2018-7-13-update.md → content/updates/2018-7-13-update.md+4−5 content/posts/2018-7-20-update.md → content/updates/2018-7-20-update.md+4−4 content/posts/2018-7-3-update.md → content/updates/2018-7-3-update.md+4−4 content/posts/2018-7-30-update.md → content/updates/2018-7-30-update.md+4−4 content/posts/2018-8-23-update.md → content/updates/2018-8-23-update.md+4−5 content/posts/2018-8-30-update.md → content/updates/2018-8-30-update.md+4−5 content/posts/2018-8-8-update.md → content/updates/2018-8-8-update.md+4−5 content/posts/2018-9-11-update.md → content/updates/2018-9-11-update.md+4−5 content/posts/2019-2-11-update.md → content/updates/2019-2-11-update.md+5−8 content/posts/2019-2-25-update.md → content/updates/2019-2-25-update.md+5−8 content/posts/2019-2-26-network-update.md → content/updates/2019-2-26-network-update.md+4−7 content/posts/2019-2-4-update.md → content/updates/2019-2-4-update.md+5−6 content/posts/2019-3-11-update.md → content/updates/2019-3-11-update.md+4−7 content/posts/2019-3-27-update.md → content/updates/2019-3-27-update.md+5−8 content/posts/2019-3-4-update.md → content/updates/2019-3-4-update.md+5−8 content/posts/2019-4-11-update.md → content/updates/2019-4-11-update.md+5−8 content/posts/2019-5-10-update.md → content/updates/2019-5-10-update.md+5−6 content/posts/2019-5-17-update.md → content/updates/2019-5-17-update.md+5−6 content/posts/2019-5-31-update.md → content/updates/2019-5-31-update.md+5−6 content/posts/2019-6-14-update.md → content/updates/2019-6-14-update.md+5−7 content/posts/2019-7-25-update.md → content/updates/2019-7-25-update.md+5−7 content/updates/_index.md+6 content/using/_index.md+5 content/using/develop.md+96 content/using/install.md+76 content/using/operations/_index.md+7 content/using/operations/creating-a-comet.md+30 content/using/operations/stars-and-galaxies.md+42 content/using/operations/using-bridge.md+65 content/using/operations/using-your-ship.md+1412 sass/_main.scss+465−528 sass/_responsive.scss+28−105 sass/grid.scss+1542 sass/indigo.scss+2407−20515 sass/primer.scss−16889 sass/styles.scss+1−2 static/_redirects+9−8 static/assets/back-arrow.svg−3 static/assets/dropdown.svg−1 static/assets/menu-close.svg−7 static/assets/menu-open.svg−3 static/images/aegean-1.png static/images/aegean-2.png static/images/aegean-3.png static/images/aegean.svg−1 static/images/arvo-complete.svg−1 static/images/arvo-large.svg−84 static/images/azimuth.svg−1 static/images/blockchain-fade.svg−1 static/images/business.svg−1 static/images/face.svg−23 static/images/faces.svg−88 static/images/file.svg−1 static/images/galaxies-old.svg−19 static/images/galaxies.svg−1 static/images/iot.svg−62 static/images/megacorp.svg−1 static/images/moons.svg−73 static/images/network-diagram.gif static/images/network-diagram.svg−1240 static/images/new-blockchain.svg−1 static/images/new-independence.svg−1 static/images/offchain.svg−1 static/images/passcode.svg−1 static/images/personal-blockchain 2.svg−129 static/images/personal-blockchain.svg−1 static/images/planets-old.svg−43 static/images/planets.svg−1 static/images/program.svg−1 static/images/server.svg−1 static/images/single-interface-green.svg−109 static/images/single-interface.svg−111 static/images/standard-code.svg−1 static/images/stars-old.svg−8 static/images/stars.svg−1 static/images/sticker-1.svg−6 static/images/sticker-2.svg−11 static/images/technical-problem.svg−1 static/images/their-code.svg−1 static/images/urbit-complete.svg−1 static/images/what-urbit-is.svg−1 static/php/airtable/hoonschool.php−3 static/php/airtable/src/Airtable.php−118 static/php/airtable/src/Request.php−155 static/php/airtable/src/Response.php−246 static/primer.js−61 static/runes.js+856 static/scripts.js+82−46 static/viewport-units-buggyfill.js+472 syntaxes/hoon.sublime-syntax+66 templates/404.html+19−22 templates/base.html+35−17 templates/doc.html+8−22 templates/essays/list.html+30 templates/essays/post.html+48 templates/index.html+152−41 templates/list.html+36 templates/media/list.html+51 templates/page.html+52−21 templates/page_indiced.html+68 templates/partials/footer.html+49−54 templates/partials/navigation-docs.html+118−72 templates/partials/navigation-search.html+4 templates/partials/navigation-special.html−60 templates/partials/navigation.html−60 templates/partials/pagination.html+77 templates/partials/search-overlay.html+14−8 templates/partials/top-alert.html−9 templates/posts/list.html−55 templates/posts/single.html−63 templates/primer.html−1056 templates/rss.xml+19−19 templates/sections/docs.html+8−22 templates/sections/docs/chapters.html+7−22 templates/sections/index.html−46 templates/shortcodes/full.html+3 templates/shortcodes/oversize.html+3 templates/shortcodes/soundcloud.html+8−9 templates/shortcodes/youtube.html+2−2 templates/understanding-urbit/list.html+65 templates/understanding-urbit/post.html+57 templates/updates/list.html+58
.gitmodules+1−1
@@ -1,3 +1,3 @@
11[submodule "content/docs"]
22 path = content/docs
3− url = git@github.com:urbit/docs.git
3+ url = https://github.com/urbit/docs.git
config.toml+4−17
@@ -17,6 +17,8 @@ generate_rss = true
1717# Whether to do syntax highlighting
1818# Theme can be customised by setting the `highlight_theme` variable to a theme supported by Zola
1919highlight_code = true
20+extra_syntaxes = ["syntaxes"]
21+highlight_theme = "demain"
2022
2123# Whether to build a search index to be used later on by a JavaScript library
2224build_search_index = true
@@ -29,26 +31,11 @@ build_search_index = true
2931# {name = "authors"}, # Basic definition: no RSS or pagination
3032# ]
3133#
32−taxonomies = [
33− {name = "posts", rss = true},
34−]
34+
3535
3636[extra]
37−urbit_menu = [
38− {url = "$BASE_URL", name = "Urbit"},
39− {url = "$BASE_URL/primer/", name = "Primer"},
40− {url = "$BASE_URL/posts/", name = "Posts"},
41− {url = "$BASE_URL/docs/", name = "Docs"},
42−]
43−
44−urbit_footer = [
45− {url = "$BASE_URL/faq/", name = "FAQ"},
46− {url = "$BASE_URL/tos/", name = "Terms of Service"},
47− {url = "$BASE_URL/privacy/", name = "Privacy Policy"},
48− {url = "$BASE_URL/bounties/", name = "Bug Bounties"},
49−]
5037
5138docs_number_chapters = true
5239
5340[extra.author]
54−name = "urbit.org"
41+name = "urbit.org"
content/_primer.mddeleted−4
@@ -1,4 +0,0 @@
1−+++
2−title = "Primer"
3−template = "primer.html"
4−+++
content/posts/2019-10-3-roadmap.md → content/blog/2019-10-3-roadmap.mdrenamed+5−6
@@ -2,9 +2,10 @@
22title = "~2019.10 Roadmap"
33date = 2019-10-03
44description = "Galen Wolfe-Pauly on the road ahead for the identity/OS/interface/community stack."
5−search = false
6−[taxonomies]
7−posts = ["Essays"]
5+aliases = ["/posts/essays/2019-10-3-roadmap", "/posts/2019-10-3-roadmap"]
6+[extra]
7+author = "Galen Wolfe-Pauly"
8+ship = "~ravmel-ropdyl"
89+++
910
1011![](https://media.urbit.org/site/posts/essays/2019-10-3-roadmap.jpg)
@@ -106,6 +107,4 @@ Urbit.org is about ready for a refresh — so we’re in the process of rebuildi
106107
107108We’d also like to populate urbit.org with a lot more content about what we’re working on and thinking about. We do a reasonable job of writing updates, but many of our projects get released without any background info. Tlon and the Urbit community are full of smart, thoughtful people — and we’d like to do a lot more to surface their work. We plan to close out the year with both a new website and a lot of writing about what we’ve been building. Not everyone wants to read the source code!
108109
109−That covers it for now. If you have questions or want to chat — find us in `~dopzod/urbit-help`. See you online!
110−
111−Galen Wolfe-Pauly `~ravmel-ropdyl`
110+That covers it for now. If you have questions or want to chat — find us in `~dopzod/urbit-help`. See you online!
content/posts/2019-5-roadmap.md → content/blog/2019-5-roadmap.mdrenamed+4−6
@@ -1,11 +1,11 @@
11+++
22title = "~2019.5 Roadmap"
33date = 2019-05-16
4−author = "Galen Wolfe-Pauly"
54description = "Where we are and where we're going as of mid-2019."
6−aliases = ["/posts/essays/2019-5-roadmap"]
7−[taxonomies]
8−posts = ["Essays"]
5+aliases = ["/posts/essays/2019-5-roadmap", "/posts/2019-5-roadmap"]
6+[extra]
7+author = "Galen Wolfe-Pauly"
8+ship = "~ravmel-ropdyl"
99+++
1010
1111![](https://media.urbit.org/site/posts/essays/2019-5-roadmap-1.png)
@@ -99,5 +99,3 @@ Hoon school was the first effort in this direction. We intend to do a lot more:
9999- Hoon School participants understand clearly how to build a Modulo agent, and invite others into it.
100100- The road toward building an Azimuth module is well understood, paved, and clear.
101101- We have clear instructions and tutorials for building Azimuth modules and using Azimuth as a login or reputation primitive.
102−
103−**Galen Wolfe-Pauly** `~ravmel-ropdyl`
content/blog/_index.mdnew file+6
@@ -0,0 +1,6 @@
1++++
2+title = "Blog"
3+sort_by = "date"
4+template = "essays/list.html"
5+page_template = "essays/post.html"
6++++
content/posts/a-founders-farewell.md → content/blog/a-founders-farewell.mdrenamed+4−4
@@ -1,11 +1,11 @@
11+++
22title = "A Founder's Farewell"
33date = 2019-01-14
4−author = "Curtis Yarvin"
54description = "My goal was always to fire myself at the first possible opportunity. I'm super happy to reach it."
6−aliases = ["/posts/essays/a-founders-farewell"]
7−[taxonomies]
8−posts = ["Essays"]
5+aliases = ["/posts/essays/a-founders-farewell", "/posts/a-founders-farewell"]
6+[extra]
7+author = "Curtis Yarvin"
8+ship = "~sorreg-namtyv"
99+++
1010
1111![Curtis Yarvin portrait](https://storage.googleapis.com/media.urbit.org/site/farewell.png)
content/posts/an-urbit-overview.md → content/blog/an-urbit-overview.mdrenamed+4−4
@@ -1,11 +1,11 @@
11+++
22title = "An Urbit Overview"
33date = 2016-05-11
4−author = "Galen Wolfe-Pauly"
54description = "A high-level overview of Urbit."
6−aliases = ["/posts/essays/an-urbit-overview"]
7−[taxonomies]
8−posts = ["Essays"]
5+aliases = ["/posts/essays/an-urbit-overview", "/posts/an-urbit-overview"]
6+[extra]
7+author = "Galen Wolfe-Pauly"
8+ship = "~ravmel-ropdyl"
99+++
1010![](https://media.urbit.org/site/blog-0.jpg)
1111
content/posts/announcing-urbit-grants.md → content/blog/announcing-urbit-grants.mdrenamed+4−4
@@ -1,11 +1,11 @@
11+++
22title = "Announcing: Urbit Grants Program"
33date = 2019-08-06
4−author = "Robert Mariani"
54description = "Announcing Urbit Grants, a way to earn stars through contributing."
6−aliases = ["/posts/essays/announcing-urbit-grants"]
7−[taxonomies]
8−posts = ["Essays"]
5+aliases = ["/posts/essays/announcing-urbit-grants", "/posts/announcing-urbit-grants"]
6+[extra]
7+author = "Robert Mariani"
8+ship = "~lodleb-ritrul"
99+++
1010
1111We’ve long been grateful for the hard work of our open-source community, so we’re pleased to announce Grants, a program that gives contributors the opportunity to be compensated for their efforts. It’s in beta right now at [grants.urbit.org](https://grants.urbit.org/).
content/posts/azimuth-as-multipass.md → content/blog/azimuth-as-multipass.mdrenamed+4−5
@@ -1,11 +1,11 @@
11+++
22title = "Azimuth as Multipass"
33date = 2019-05-16
4−author = "Galen Wolfe-Pauly"
54description = "What if everyone had a single 'civilizational key'?"
6−aliases = ["/posts/essays/azimuth-as-multipass/"]
7−[taxonomies]
8−posts = ["Essays"]
5+aliases = ["/posts/essays/azimuth-as-multipass/", "/posts/azimuth-as-multipass"]
6+[extra]
7+author = "Galen Wolfe-Pauly"
8+ship = "~ravmel-ropdyl"
99+++
1010
1111![](https://media.urbit.org/site/posts/essays/azimuth-as-multipass-1.png)
@@ -28,4 +28,3 @@ Perhaps part of how we ended up in the world we’re in is that we didn’t have
2828
2929We think everyone needs an identity that can hold money and have packets routed to it. Start there, and it’s quite fun to imagine where you end up. A civilized digital society might even be possible after all.
3030
31−**Galen Wolfe-Pauly** `~ravmel-ropdyl`
content/posts/azimuth-is-on-chain.md → content/blog/azimuth-is-on-chain.mdrenamed+4−4
@@ -1,11 +1,11 @@
11+++
22title = "Azimuth is On-Chain"
33date = 2019-01-14
4−author = "Galen Wolfe-Pauly"
54description = "The Urbit address space, now called Azimuth, is on the blockchain. And too many other things to fit into a single post."
6−aliases = ["/posts/essays/azimuth-is-on-chain"]
7−[taxonomies]
8−posts = ["Essays"]
5+aliases = ["/posts/essays/azimuth-is-on-chain", "/posts/azimuth-is-on-chain"]
6+[extra]
7+author = "Galen Wolfe-Pauly"
8+ship = "~ravmel-ropdyl"
99+++
1010
1111![](https://media.urbit.org/site/arvo-4.svg)
content/posts/azimuth-security-bounty-program.md → content/blog/azimuth-security-bounty-program.mdrenamed+4−4
@@ -1,11 +1,11 @@
11+++
22title = "Azimuth Security Bounty Program"
33date = 2019-07-22
4−author = "Anthony Arroyo"
54description = "Inviting you (and your friends) to help us make Azimuth as secure as possible."
6−aliases = ["/posts/essays/azimuth-security-bounty-program"]
7−[taxonomies]
8−posts = ["Essays"]
5+aliases = ["/posts/essays/azimuth-security-bounty-program", "/posts/azimuth-security-bounty-program"]
6+[extra]
7+author = "Anthony Arroyo"
8+ship = "~poldec-tonteg"
99+++
1010
1111![](https://media.urbit.org/site/posts/essays/azimuth-security-bounty-program-1.jpg)
content/posts/beliefs-and-principles.md → content/blog/beliefs-and-principles.mdrenamed+4−4
@@ -1,11 +1,11 @@
11+++
22title = "Beliefs and principles guiding the Urbit project."
33date = 2016-05-11
4−author = "Galen Wolfe-Pauly + Curtis Yarvin"
54description = "We believe."
6−aliases = ["/posts/essays/beliefs-and-principles"]
7−[taxonomies]
8−posts = ["Essays"]
5+aliases = ["/posts/essays/beliefs-and-principles", "/posts/beliefs-and-principles"]
6+[extra]
7+author = "Curtis Yarvin + Galen Wolfe-Pauly"
8+ship = "~sorreg-namtyv + ~ravmel-ropdyl"
99+++
1010![](https://media.urbit.org/site/blog-2.jpg)
1111
content/posts/bootstrapping-urbit-from-ethereum.md → content/blog/bootstrapping-urbit-from-ethereum.mdrenamed+4−4
@@ -1,11 +1,11 @@
11+++
22title = "Bootstrapping Urbit from Ethereum"
33date = 2017-09-20
4−author = "Curtis Yarvin + Galen Wolfe-Pauly"
54description = "We've decided to launch Urbit's constitution as a system of Ethereum contracts."
6−aliases = ["/posts/essays/bootstrapping-urbit-from-ethereum"]
7−[taxonomies]
8−posts = ["Essays"]
5+aliases = ["/posts/essays/bootstrapping-urbit-from-ethereum", "/posts/bootstrapping-urbit-from-ethereum", "/blog/2017.9.20-bootstrapping-urbit-from-ethereum/", "/blog/2017.9-eth/"]
6+[extra]
7+author = "Curtis Yarvin + Galen Wolfe-Pauly"
8+ship = "~sorreg-namtyv + ~ravmel-ropdyl"
99+++
1010*TL;DR:*
1111
content/posts/common-objections-to-urbit.md → content/blog/common-objections-to-urbit.mdrenamed+4−4
@@ -1,11 +1,11 @@
11+++
22title = "Common Objections to Urbit"
33date = 2016-06-28
4−author = "Curtis Yarvin"
54description = "Some common objections to Urbit, discussed."
6−aliases = ["/posts/essays/common-objections-to-urbit"]
7−[taxonomies]
8−posts = ["Essays"]
5+aliases = ["/posts/essays/common-objections-to-urbit", "/posts/common-objections-to-urbit", "/posts/objections/"]
6+[extra]
7+author = "Curtis Yarvin"
8+ship = "~sorreg-namtyv"
99+++
1010![](https://media.urbit.org/site/blog-9.jpg)
1111
content/posts/governance-of-urbit.md → content/blog/governance-of-urbit.mdrenamed+4−4
@@ -1,11 +1,11 @@
11+++
22title = "Governance of urbit.org"
33date = 2019-01-11
4−author = "Erik Newton"
54description = "On Stewardship of the Urbit project"
6−aliases = ["/posts/essays/governance-of-urbit"]
7−[taxonomies]
8−posts = ["Essays"]
5+aliases = ["/posts/essays/governance-of-urbit", "/posts/governance-of-urbit"]
6+[extra]
7+author = "Erik Newton"
8+ship = "~patnes-rigtyn"
99+++
1010![](https://storage.googleapis.com/media.urbit.org/site/governance-1.svg)
1111
content/posts/interim-constitution.md → content/blog/interim-constitution.mdrenamed+4−4
@@ -1,11 +1,11 @@
11+++
22title = "Interim Constitution"
33date = 2016-05-16
4−author = "Tlon"
54description = "The governing rules for the early days of the Urbit network."
6−aliases = ["/posts/essays/interim-constitution"]
7−[taxonomies]
8−posts = ["Essays"]
5+aliases = ["/posts/essays/interim-constitution", "/posts/interim-constitution"]
6+[extra]
7+author = "Tlon"
8+ship = ""
99+++
1010![](https://media.urbit.org/site/blog-7.jpg)
1111
content/posts/landscape-a-portrait.md → content/blog/landscape-a-portrait.mdrenamed+5−7
@@ -1,11 +1,11 @@
11+++
22title = "Landscape: A Portrait"
33date = 2019-09-03
4−author = "Matilde Park"
54description = "On the latest Urbit user interface, and the interfaces to come."
6−aliases = ["/posts/essays/landscape-a-portrait/"]
7−[taxonomies]
8−posts = ["Essays"]
5+aliases = ["/posts/essays/landscape-a-portrait/", "/posts/landscape-a-portrait"]
6+[extra]
7+author = "Matilde Park"
8+ship = "~haddef-sigwen"
99+++
1010
1111![](https://media.urbit.org/site/posts/essays/landscape-a-portrait-1.png)
@@ -14,7 +14,7 @@ Alongside [the v0.8.0 launch](https://urbit.org/posts/2019-7-25-update/) we rele
1414
1515Served after installation on your ship’s HTTPS port, it allows you to interact with Arvo through a web interface built with [Indigo](https://github.com/urbit/indigo), our new UI design language. It has a home screen, which exposes ‘tiles’ for each Landscape application – each able to integrate and customise information from elsewhere in the system and from the broader internet – and connects them to full-screen, graphical applications.
1616
17−The first set of application includes Chat (a new, streamlined chat client), a basic Weather information tile, an analog clock, and Publish, a place for publishing, subscribing, and commenting on ‘notebooks’ – invite-oriented blogs hosted on your ship.
17+The first set of application includes Chat, a new, streamlined chat client, a basic Weather information tile, an analog clock, and Publish, a place for publishing, subscribing, and commenting on ‘notebooks’ – invite-oriented blogs hosted on your ship.
1818
1919![](https://media.urbit.org/site/posts/essays/landscape-a-portrait-2.png)
2020
@@ -83,5 +83,3 @@ We will backport these exploratory developments into Landscape as they continue
8383Most importantly, we’ll continue to iterate on how we onboard new developers. [Hoon School](https://urbit.org/hoonschool) continues to evolve; its first cohort is thriving and friendly. We have a dedicated cast of teachers and ongoing access to much of the Urbit team through this stream.
8484
8585If you’d like to join us here, you’ll discover a computer that you can learn and master from the bottom up. Right now, it is a labyrinth for the intrepid; but for the future, and forever, it is _mappable_. A landscape, after all, doesn’t show a single leaf, but the earth and the horizon ahead.
86−
87−**Matilde Park** `~haddef-sigwen`
content/posts/magic.md → content/blog/magic.mdrenamed+4−4
@@ -1,11 +1,11 @@
11+++
22title = "Magic"
33date = 2016-05-16
4−author = "Curtis Yarvin"
54description = "A thought-experiment to explain the Urbit user experience."
6−aliases = ["/posts/essays/magic"]
7−[taxonomies]
8−posts = ["Essays"]
5+aliases = ["/posts/essays/magic", "/posts/magic"]
6+[extra]
7+author = "Curtis Yarvin"
8+ship = "~sorreg-namtyv"
99+++
1010![](https://media.urbit.org/site/blog-7.jpg)
1111
content/posts/the-100-year-computer.md → content/blog/the-100-year-computer.mdrenamed+4−6
@@ -1,11 +1,11 @@
11+++
22title = "The 100-Year Computer"
33date = 2019-05-14
4−author = "Galen Wolfe-Pauly"
54description = "One way to think about Urbit: as a \"100-year computer.\""
6−aliases = ["/posts/essays/the-100-year-computer/"]
7−[taxonomies]
8−posts = ["Essays"]
5+aliases = ["/posts/essays/the-100-year-computer/", "/posts/the-100-year-computer"]
6+[extra]
7+author = "Galen Wolfe-Pauly"
8+ship = "~ravmel-ropdyl"
99+++
1010
1111![](https://media.urbit.org/site/posts/essays/100-year-computer-1.png)
@@ -23,5 +23,3 @@ In theory we could all be using Apple I’s today, but they’re a bit cumbersom
2323Imagine that a computer was something you kept forever. It would comfortably store your entire life: your writing, photos, blood tests, even your genome. Your computer would never show you ads, interrupt you against your wishes, or send your data to someone else without your permission.
2424
2525Imagine a computer that was extremely valuable to you, that you’d pay thousands of dollars to recover, but you used *less* than the one you do today.
26−
27−**Galen Wolfe-Pauly** `~ravmel-ropdyl`
content/posts/the-dao-as-a-lesson-in-decentralized-governance.md → content/blog/the-dao-as-a-lesson-in-decentralized-governance.mdrenamed+4−3
@@ -1,10 +1,11 @@
11+++
22title = "The DAO as a Lesson in Decentralized Governance"
33date = 2016-06-24
4−author = "Curtis Yarvin"
54description = "What's the right lesson for the decentralization community to learn from the collapse of the DAO?"
6−[taxonomies]
7−posts = ["Essays"]
5+aliases = ["/posts/essays/the-dao-as-a-lesson-in-decentralized-governance", "/posts/the-dao-as-a-lesson-in-decentralized-governance"]
6+[extra]
7+author = "Curtis Yarvin"
8+ship = "~sorreg-namtyv"
89+++
910What's the right lesson for the decentralization community to
1011learn from the collapse of the DAO?
content/posts/the-state-of-landscape.md → content/blog/the-state-of-landscape.mdrenamed+4−5
@@ -1,11 +1,11 @@
11+++
22title = "The State of Landscape"
33date = 2019-05-16
4−author = "Galen Wolfe-Pauly"
54description = "An update on the state of Landscape and the Urbit network."
6−aliases = ["/posts/essays/the-state-of-landscape"]
7−[taxonomies]
8−posts = ["Essays"]
5+aliases = ["/posts/essays/the-state-of-landscape", "/posts/the-state-of-landscape"]
6+[extra]
7+author = "Galen Wolfe-Pauly"
8+ship = "~ravmel-ropdyl"
99+++
1010
1111![](https://media.urbit.org/site/posts/essays/the-state-of-landscape-1.png)
@@ -72,4 +72,3 @@ Many of us spend all day on Landscape, use it from our phones, and find it reall
7272
7373We operate one public channel, `~dopzod/urbit-help` for answering any of your questions about the system. And, from time to time, we have been creating topic-centric channels and announcing them publicly. This has been a lot of fun. Come join us if you’re feeling brave.
7474
75−**Galen Wolfe-Pauly** `~ravmel-ropdyl`
content/posts/the-urbit-address-space.md → content/blog/the-urbit-address-space.mdrenamed+4−4
@@ -1,11 +1,11 @@
11+++
22title = "The Urbit Address Space"
33date = 2016-05-16
4−author = "Galen Wolfe-Pauly, Curtis Yarvin"
54description = "An overview of Urbit's cryptographic address space."
6−aliases = ["/posts/essays/the-urbit-address-space"]
7−[taxonomies]
8−posts = ["Essays"]
5+aliases = ["/posts/essays/the-urbit-address-space", "/posts/the-urbit-address-space"]
6+[extra]
7+author = "Galen Wolfe-Pauly + Curtis Yarvin"
8+ship = "~ravmel-ropdyl + ~sorreg-namtyv"
99+++
1010![](https://media.urbit.org/site/blog-3.jpg)
1111
content/posts/toward-a-frozen-operating-system.md → content/blog/toward-a-frozen-operating-system.mdrenamed+4−4
@@ -1,11 +1,11 @@
11+++
22title = "Toward a Frozen Operating System"
33date = 2017-05-10
4−author = "Curtis Yarvin + Galen Wolfe-Pauly"
54description = "Is it possible to freeze an entire OS?"
6−aliases = ["/posts/essays/toward-a-frozen-operating-system"]
7−[taxonomies]
8−posts = ["Essays"]
5+aliases = ["/posts/essays/toward-a-frozen-operating-system", "/posts/toward-a-frozen-operating-system", "/blog/2017.5-frozen/"]
6+[extra]
7+author = "Curtis Yarvin + Galen Wolfe-Pauly"
8+ship = "~sorreg-namtyv + ~ravmel-ropdyl"
99+++
1010Is it possible to freeze an entire OS, so that its codebase never changes and
1111never has to change? Is the proposition even meaningful? Is it practical?
content/posts/toward-a-new-clay.md → content/blog/toward-a-new-clay.mdrenamed+4−4
@@ -1,11 +1,11 @@
11+++
22title = "Toward a New %clay"
33date = 2016-07-14
4−author = "Curtis Yarvin"
54description = "Urbit's revision-control system, %clay, is itself due for a (medium-sized) revision!"
6−aliases = ["/posts/essays/toward-a-new-clay"]
7−[taxonomies]
8−posts = ["Essays"]
5+aliases = ["/posts/essays/toward-a-new-clay", "/posts/toward-a-new-clay", "/blog/clay"]
6+[extra]
7+author = "Curtis Yarvin"
8+ship = "~sorreg-namtyv"
99+++
1010
1111TLDR: (a) Urbit's revision-control system, `%clay`, is itself due
content/posts/urbit-and-the-blockchain.md → content/blog/urbit-and-the-blockchain.mdrenamed+4−4
@@ -1,11 +1,11 @@
11+++
22title = "Urbit and the Blockchain Wars"
33date = 2017-09-25
4−author = "Curtis Yarvin"
54description = "A bit about the 'idea maze' of choosing to bootstrap from Ethereum"
6−aliases = ["/posts/essays/urbit-and-the-blockchain"]
7−[taxonomies]
8−posts = ["Essays"]
5+aliases = ["/posts/essays/urbit-and-the-blockchain", "/posts/urbit-and-the-blockchain", "/blog/2017.9-critique/"]
6+[extra]
7+author = "Curtis Yarvin"
8+ship = "~sorreg-namtyv"
99+++
1010![](https://media.urbit.org/site/blog-1.jpg)
1111
content/posts/urbit-grants-and-mid-2019-gifts.md → content/blog/urbit-grants-and-mid-2019-gifts.mdrenamed+4−5
@@ -1,11 +1,11 @@
11+++
22title = "Urbit Grants and mid-2019 Gifts"
33date = 2019-06-10
4−author = "Galen Wolfe-Pauly & Alex Matzner"
54description = "Announcing an upcoming Urbit grants program and star gifts for Mid-2019."
6−aliases = ["/posts/essays/urbit-grants-and-mid-2019-gifts"]
7−[taxonomies]
8−posts = ["Essays"]
5+aliases = ["/posts/essays/urbit-grants-and-mid-2019-gifts", "/posts/urbit-grants-and-mid-2019-gifts"]
6+[extra]
7+author = "Galen Wolfe-Pauly + Alex Matzner"
8+ship = "~ravmel-ropdyl + ~mignyt-mogseb"
99+++
1010
1111![](https://media.urbit.org/site/posts/essays/urbit-grants-and-mid-2019-gifts-1.jpg)
@@ -39,4 +39,3 @@ Making the process of rewarding contributors is something we’ve thought a lot
3939
4040Please [subscribe to our newsletter](http://eepurl.com/b7x7hj) to make sure you receive future announcements.
4141
42−– **Galen** `~ravmel-ropdyl` & **Alex** `~mignyt-mogseb`
content/posts/what-is-urbit-for.md → content/blog/what-is-urbit-for.mdrenamed+4−4
@@ -1,11 +1,11 @@
11+++
22title = "What is Urbit For?"
33date = 2016-05-11
4−author = "Galen Wolfe-Pauly"
54description = "A vision of the Urbit-powered future."
6−aliases = ["/posts/essays/what-is-urbit-for"]
7−[taxonomies]
8−posts = ["Essays"]
5+aliases = ["/posts/essays/what-is-urbit-for", "/posts/what-is-urbit-for"]
6+[extra]
7+author = "Galen Wolfe-Pauly"
8+ship = "~ravmel-ropdyl"
99+++
1010![](https://media.urbit.org/site/blog-1.jpg)
1111
content/posts/why-urbit-probably-does-not-need-a-blockchain.md → content/blog/why-urbit-probably-does-not-need-a-blockchain.mdrenamed+4−4
@@ -1,11 +1,11 @@
11+++
22title = "Why Urbit Probably Doesn't Need a Blockchain"
33date = 2016-07-14
4−author = "Curtis Yarvin"
54description = "Urbit (probably) doesn't need a blockchain, because the Urbit address-space PKI is a special case of a consensus ledger."
6−aliases = ["/posts/essays/why-urbit-probably-does-not-need-a-blockchain/"]
7−[taxonomies]
8−posts = ["Essays"]
5+aliases = ["/posts/essays/why-urbit-probably-does-not-need-a-blockchain/", "/posts/why-urbit-probably-does-not-need-a-blockchain/", "/blog/blockchain/"]
6+[extra]
7+author = "Curtis Yarvin"
8+ship = "~sorreg-namtyv"
99+++
1010![](https://media.urbit.org/site/blog-1.jpg)
1111
content/bounties.md+4−2
@@ -1,7 +1,9 @@
11+++
2−title = "Bug Bounties"
2+title = "Bounties"
33+++
44
5−We're running a security bug bounty program with [HackerOne](https://hackerone.com). See the [Tlon Corp](https://hackerone.com/tlon/) page for more information. If you've found a vulnerablity, and you'd like to claim a bounty, please submit a report there. Note that our bounty program is currently focused on [Azimuth](https://github.com/urbit/azimuth) vulnerabilities.
5+We run a security bug bounty program with [HackerOne](https://hackerone.com). See the [Tlon Corp](https://hackerone.com/tlon/) page at HackerOne for more information.
6+
7+If you've found a vulnerablity, and you'd like to claim a bounty, please submit a report there. Note that our bounty program is currently focused on [Azimuth](https://github.com/urbit/azimuth) vulnerabilities.
68
79For general inquiries and disclosures, please contact our security team at [security@tlon.io](mailto:security@tlon.io).
content/docs+1−1

Submodule changed.

content/faq.md+123−133
@@ -1,179 +1,169 @@
11+++
22title = "FAQ"
3+template = "page_indiced.html"
4+[extra]
5+hidetitle = "true"
36+++
47
5−## Contents
8+## Urbit
69
7−<details><summary>The Urbit Project</summary>
10+### What is Urbit? {#what-is-urbit}
811
9−- [What is Urbit?](#what-is-urbit)
10−- [How secure is Urbit right now?](#how-secure-is-urbit)
11−- [How can I contribute to Urbit?](#contribute)
12−- [Who is building Urbit?](#who-builds-urbit)
12+Urbit reimagines the internet as a peer-to-peer network designed to stay that way. Previous attempts to "decentralize" the internet have only attempted to solve certain corners of the problem. Urbit proposes that only a new stack, built from the ground up as a tightly integrated system, can realize a great user experience for people using a peer-to-peer web.
1313
14−</details>
14+Combining a deterministic operating system (Urbit OS / Arvo) and a secure, global identity layer (Urbit ID / Azimuth), the Urbit project has created something that’s never existed before: an encrypted peer-to-peer network where you can be sure that messages are never tampered with or surveilled, and where strangers on that network can be trusted by default.
1515
16+The connected world anticipated by Urbit is a much friendlier one, much like the early Internet, where collegial discussion and collaboration was the norm. Problems that are unsolvable without large-scale political centralization in our current internet – data breaches, spam, fake reviews, malware-spreading, harassment – become tractable when individuals control their computing again. You have one login for everything. You own and control all of your software and all of your data by default. Software is designed around the friendships, families, communities, and organizations you're already a part of – not the other way around.
1617
17−<details><summary>Azimuth</summary>
18+### How secure is Urbit right now? {#how-secure-is-urbit}
1819
19−- [What is Azimuth?](#what-is-azimuth)
20−- [What are stars, galaxies, and planets?](#stars-galaxies-planets)
21−- [How many planets, stars, and galaxies are active?](#how-many-planets-stars-galaxies)
22−- [What are comets and moons?](#comets-moons)
23−- [What is a `@p`? Why is my username generated for me?](#what-is-@p)
24−- [Can I change my `@p`?](#change-my-@p)
25−- [How do I get an identity?](#get-an-identity)
26−- [How do I transfer an identity to someone else?](#transfer-identity)
27−- [What is the best way to access Azimuth?](#access-azimuth)
20+Urbit ID / Azimuth, Urbit's identity layer, is live on the Ethereum blockchain and has been audited by Open Zeppelin, Blockchain at Berkeley, and Bloctrax. [We run a bug bounty program](https://hackerone.com/tlon) on HackerOne.
2821
29−</details>
22+Urbit OS / Arvo is still an early beta. Arvo is safe to play with, but it’s not yet a place to store or share private information. Urbit's cryptographic protocols have not been professionally audited, and the OS itself doesn't provide protection from attackers on the network — although we haven't seen any yet.
3023
31−<details><summary>Urbit HD Wallet</summary>
24+### How can I contribute to Urbit? {#contribute}
3225
33−- [What is the Urbit HD Wallet?](#urbit-hd-wallet)
34−- [What is a master ticket?](#master-ticket)
35−- [What is an ownership address?](#ownership-address)
36−- [What are proxies?](#proxies)
37−- [What are seeds?](#seeds)
38−- [What does it mean to “set public keys”?](#set-public-keys)
39−- [What do I do if I want to own multiple identities?](#multiple-points)
40−- [How should I take care of my Urbit HD Wallet?](#custody)
41−- [I have a galaxy or star with lockup conditions. How does this work?](#lockup-conditions)
26+We encourage outside contributors to become a part of the project. The best way to do this is to check out [Urbit](https://github.com/urbit) on GitHub, look at the pinned repositories, and check out our [Contributing](https://urbit.org/docs/getting-started/contributing/) guide. After you've gotten familiar with the system, feel free to open issues and make pull requests.
4227
43−</details>
28+### Who is building Urbit? {#who-builds-urbit}
4429
45−<details><summary>Arvo</summary>
30+[Tlon](https://tlon.io), a San Francisco-based company, is the primary developer of Urbit, along with [various independent developers](https://github.com/urbit/urbit/graphs/contributors) and [urbit.live](https://urbit.live).
4631
47−- [What is Arvo?](#what-is-arvo)
48−- [What is unique about Arvo?](#what-is-unique-about-arvo)
49−- [How is Arvo connected to Ethereum?](#arvo-ethereum)
50−- [Will the Arvo network survive if Ethereum dies?](#if-ethereum-dies)
51−- [How do I install Arvo?](#install-arvo)
52−- [How do I use Arvo?](#use-arvo)
53−- [How do over-the-air updates work?](#over-the-air-updates)
54−- [What is Landscape?](#what-is-landscape)
55−- [I have an Urbit identity, now what?](#now-what)
32+## Objections to Urbit
5633
57−</details>
34+### Who is Curtis? {#who-is-curtis}
5835
59−<details><summary>Grants</summary>
36+Urbit started back in 2002 as Curtis Yarvin’s personal project. Curtis developed the original prototype for Urbit and, separately, wrote a blog on history and politics under the pen name ‘Mencius Moldbug’.
6037
61−- [What are the different types of grants?](#grants-1)
62−- [How do I get a gift?](#grants-2)
63−- [How often are gifts awarded?](#grants-3)
64−- [How large are gifts?](#grants-31)
65−- [What happens if a user does not complete a proposal but meets some milestones?](#grants-4)
66−- [Do I have to pay taxes on stars?](#grants-5)
67−- [Can I create a bounty?](#grants-6)
68−- [How are proposals approved?](#grants-7)
69−- [If I win a proposal, do I have an exclusive claim on the project?](#grants-8)
70−- [Will milestones be embedded in a smart contract?](#grants-9)
71−- [Does reputation play a role in the assessment of grants?](#grants-10)
72−- [I completed a proposal. When will I receive payment?](#grants-11)
73−- [Can I see the proposals of others that have been accepted?](#grants-12)
74−- [How do I safely store my stars?](#grants-13)
75−- [Can I delegate a bounty or proposal to someone else?](#grants-14)
76−- [Do I need to sign a contract?](#grants-15)
38+In early 2019, Curtis left the Urbit project and gave all of his voting interest (both as address space and voting shares in the company) back to Tlon. He retains a non-voting, minority interest in both the address space and the company — but is not involved in the day-to-day development or operations.
7739
78−</details>
40+Curtis laid the foundation for Urbit by delivering its first prototype but, since 2013, it has been refined and almost entirely rewritten by a community of developers. No one working on Urbit today had anything to do with Curtis’s writing. For the most part, we couldn’t be less interested in it.
7941
80−## The Urbit project
42+The community of people who build Urbit have widely varied ways of thinking and looking at the world, but they all share two things: the desire to build neutral infrastructure for all people and to think from first principles about hard problems. We welcome spirited debate and disagreement as a primary tool for refining our work. Successful infrastructure, we think, serves all people — no matter their background, culture, or worldview.
8143
82−### What is Urbit? {#what-is-urbit}
44+### Why aren't there more planets? {#more-planets}
8345
84−Urbit reimagines the internet as a peer-to-peer network designed to stay that way at a scale. Previous attempts to "decentralize" the internet have only attempted to solve certain corners of the problem. Urbit proposes that only a new stack, built from the ground-up as a tightly integrated system, can realize a truly peer-to-peer web.
46+Urbit is designed to be as simple as possible. The sponsorship tree for Urbit ID simply expands by squaring the size of the last tier. That is, there are <span class="mono">2<sup>8</sup> (256)</span> galaxies, <span class="mono">(2<sup>8</sup>)<sup>2</sup> = 2<sup>16</sup> (~65K)</span> stars, <span class="mono">(2<sup>16</sup>)<sup>2</sup> = 2<sup>32</sup> (~4B)</span> planets. There are <span class="mono">2<sup>64</sup></span> moons — but moons are tethered to their planet, unlike stars and planets.
8547
86−Combining a deterministic operating system (Arvo) and a secure, global identity layer (Azimuth), the Urbit project has created something that’s never existed before: an encrypted peer-to-peer network where you can be sure that messages are never tampered with or surveilled, and where others can be trusted to have good intentions.
48+This pattern exists because it’s a simple way to enforce the scarcity of addresses and build a friendly network. When a tier of the address space begins to be populated, we start populating the next tier down. When Urbit nears the limit of <span class="mono">2<sup>32</sup> (4B)</span> planets, we’ll figure out a way to populate the <span class="mono">2<sup>64</sup></span> moons. The galaxies that govern the Urbit ID contracts can always vote to upgrade them — and we expect that they will.
8749
88−The online world anticipated by Urbit is a much friendlier one, much like the early Internet, where collegial discussion and collaboration was the norm. Problems that are unsolvable without large-scale political centralization in our current internet – data breaches, spam, fake reviews, malware-spreading, harassment – become tractable for individuals. You have one login for everything. You own and control all of your software and all of your data by default. Software is designed around the friendships, families, communities, and organizations you're already apart of – not the other way around.
50+(For more background on why Urbit ID is the way it is, read [this](/understanding-urbit/urbit-id/).)
8951
90−### How secure is Urbit right now? {#how-secure-is-urbit}
52+The problem with populating the moons now is that <span class="mono">2<sup>64</sup></span> is a *really, really big* number. We’ll need some way of differentiating between humans and their devices (to prevent devices turning into rogue botnets). But that’s a hard problem, and we prefer to start with the simplest possible solution before solving hard problems. The current scheme works. Once we need to update it, we’ll figure it out.
9153
92−Azimuth, Urbit's identity layer, is live on the Ethereum blockchain and has been audited by Open Zeppelin, Blockchain at Berkeley and Bloctrax. [We run a bug bounty program](https://hackerone.com/tlon) on HackerOne.
54+It’s also worth noting that, while there are almost 8B people on Earth, there are almost certainly not 8B internet users. Facebook has about 2.5B users, Apple has about 1B. Urbit has a long way to go before we get close to <span class="mono">2<sup>32</sup></span>.
9355
94−The rest of the Urbit project is still in research-mode. Arvo is safe to play with, but it’s not yet a place to store or share private information. Urbit's cryptographic protocols have not been professionally audited, and the operating system itself doesn't provide protection from attackers on the network.
56+### Why do you use Ethereum? {#why-eth}
9557
96−### How can I contribute to Urbit? {#contribute}
58+As of 2019, Ethereum is the most widely deployed, most secure, and best documented general purpose blockchain. Using Ethereum is a practical engineering choice. It’s the best way to bootstrap real cryptographic ownership. We’re not specifically interested in Ethereum one way or the other.
9759
98−We encourage outside contributors to become a part of the project. The best way to do this is to check out [Urbit](https://github.com/urbit) on Github, look at the pinned repositories, and check out our [Contributing](https://urbit.org/docs/getting-started/contributing/) guide. After you've gotten familiar with the system, feel free to open issues and make pull requests.
60+One day we’d really like the Urbit ID registry to be hosted on Urbit OS itself. But the first challenge is getting Urbit OS to be completely secure.
9961
100−### Who is building Urbit? {#who-builds-urbit}
62+### Why is Hoon so weird? {#why-hoon}
10163
102−[Tlon](https://tlon.io), a San Francisco-based company, is the primary developer of Urbit, along with [various independent developers](https://github.com/urbit/urbit/graphs/contributors) and [urbit.live](https://urbit.live).
64+There are things about Urbit that are weird by design, and some that are weird because we haven’t gotten around to cleaning them up. Hoon, for the most part, is weird by design, but there are a few things about it we’d like to clean up.
10365
104−## Azimuth
66+The runes are, once you get the hang of them, pretty nice. Your mileage may vary, of course, but many talented engineers have spent many, many hours writing Hoon. It’s a simple, practical language. But the learning curve can be a bit high.
10567
106−### What is Azimuth? {#what-is-azimuth}
68+The standard library and naming is something we’ve discussed changing, and it could happen. It’s definitely up for debate whether or not the four-letter naming convention works well. The vanes (kernel modules) have largely moved away from this convention.
69+
70+The right way to think about Hoon is as the ‘C of Urbit’. It’s a bare bones language that gets you pretty close to Nock. Eventually, we’ll probably implement more expressive languages that compile to Urbit. But for now, satisfy your curiosity and [sign up for Hoon School](/hoonschool/).
71+
72+### What is the point of Nock? {#why-nock}
10773
108−Azimuth is a general-purpose PKI ("public key infrastructure") that Urbit uses as an identity system. This system is implemented as a suite of smart contracts on the Ethereum blockchain, and it determines which Ethereum addresses own which Urbit planets, stars, or galaxies. In Arvo, a single identity is called a "ship," whereas in Azimuth, a single identity is just an "identity."
74+The primary technical reason we can’t run our own computers already is that they don’t all compute the same way. Nock solves this problem. It provides a single computing foundation for the whole network. It’s also deterministic — which is an important feature for anything you’re going to put sensitive data into.
75+
76+It’s true that Nock, without jets, is slow. With the ability to call out to a native function, it’s not so bad. We’ve been working on a new Nock interpreter for Grall Truffle that’s about 10x faster than the current one — so we’re not all that worried about performance for the time being.
77+
78+### Can I really host my Urbit with someone else? {#why-hosting}
79+
80+As a rule, anyone that has physical access to your computer owns you. They can steal your secrets and read its contents. There’s no way around that. We can’t prevent anyone hosting your Urbit from inspecting it — but we think it’s much nicer to host an Urbit than to run a web service for two reasons:
81+
82+One, you own your Urbit ID with a key that you never have to give your host. Your host only gets an operating key, and you can always revoke that key remotely. So, you might lose your data but it’s up to you to take good care of your identity.
83+
84+Two, your Urbit runs inside a VM. There’s a very clear line over which a host should never step: your event log. This is not unlike the way that cloud hosting works today. Netflix is hosted on AWS — one of their biggest competitors. Luckily, the AWS terms of service protects Netflix from a legal standpoint.
85+
86+At the end of the day, if you’re really worried about security, it’s quite easy to host Urbit yourself. This means that people who care a lot about privacy can still get the same usability as those who want the convenience of hosting.
87+
88+## Urbit ID
89+
90+### What is Urbit ID? {#what-is-urbit-id}
91+
92+Urbit ID is a general-purpose PKI ("public key infrastructure") that Urbit uses as an identity system. This system is implemented as a suite of smart contracts on the Ethereum blockchain, and it determines which Ethereum addresses own which Urbit planets, stars, or galaxies. In Urbit OS, a single identity is called a "ship", whereas in Urbit ID a single identity is just an "identity."
10993
11094### What are stars, galaxies, and planets? {#stars-galaxies-planets}
11195
112−Urbit identities come in three classes: galaxies, stars, and planets. The length of an identity’s name will tell you its class. Galaxies are 8-bit and have names like `~mul`. Galaxies issue 16-bit stars (`~dacmul`), which can themselves issue 32-bit planets (`~laptel-holfur`).
96+Urbit IDs come in three classes: galaxies, stars, and planets. The length of an identity’s name will tell you its class. Galaxies are 8-bit and have names like `~mul`. Galaxies issue 16-bit stars (`~dacmul`), which can themselves issue 32-bit planets (`~laptel-holfur`).
97+
98+Planets are intended for everyday use by individuals, and there are 4.3 billion of them (two to the 32nd power). Stars and galaxies, on the other hand, are meant to act as network infrastructure: on the Urbit OS network they provide routing and are responsible for distributing software updates.
11399
114−Planets are intended for everyday use by individuals, and there are 4.3 billion of them (2 to the 32nd power). Stars and galaxies, on the other hand, are meant to act as network infrastructure: on the Arvo network they provide routing and are responsible for distributing software updates.
100+### What is Azimuth? {#what-is-azimuth}
101+
102+Azimuth is what we call the set of Ethereum contracts that make up Urbit ID. It's also kind of a [cool astronomical concept](https://en.wikipedia.org/wiki/Azimuth).
115103
116104### How many planets, stars, and galaxies are active? {#how-many-planets-stars-galaxies}
117105
118−The raw data on most Azimuth events that have occurred can be found [on the Azimuth website](https://azimuth.network/stats/events.txt). We’re currently working on generalized tooling for viewing these events.
106+The raw data on most Urbit ID / Azimuth events that have occurred can be found [on the Azimuth website](https://azimuth.network/stats/events.txt). We’re currently working on generalized tooling for viewing these events.
119107
120108You can also inspect and execute functions in the [azimuth.eth](https://etherscan.io/address/azimuth.eth#code) contract on Etherscan.
121109
122110### What are comets and moons? {#comets-moons}
123111
124−In addition to the three classes of identities mentioned above, there are two other kinds of Urbit ships that are _not_ registered on Azimuth.
112+In addition to the three classes of identities mentioned above, there are two other kinds of Urbit ships that are _not_ registered in the Urbit ID / Azimuth contracts.
125113
126114Moons are 64 bits, issued by planets, and have names like `~doznec-salfun-naptul-habrys`. Moons are meant for connected devices: phones, desktops, smart TVs, digital thermostats, and other IoT devices. Moons are subordinated to their parent planet.
127115
128−Comets are 128 bits and have no parents. They can be launched by anyone. They are temporary, disposable identities. Being disposable and essentially unlimited, they will likely not be trusted by default by others on the Arvo network, though you shouldn't have any problem until the network grows much larger. They have long, hard-to-memorize names, like `~racmus-mollen-fallyt-linpex--watres-sibbur-modlux-rinmex`.
116+Comets are 128 bits and have no parents. They can be launched by anyone. They are temporary, disposable identities. Being disposable and essentially unlimited, they will likely not be trusted by default by others on the Urbit OS network, though you shouldn't have any problem until the network grows much larger. They have long, hard-to-memorize names, like `~racmus-mollen-fallyt-linpex-watres-sibbur-modlux-rinmex`.
129117
130−### What is a `@p`? Why is my username generated for me? {#what-is-@p}
118+### What is a `@p`? Why is my username generated for me? {#what-is-patp}
131119
132−A `@p` (pronounced *pat-pee*) is a name like `~zod` or `~lodleb-ritrul` composed of pronounceable, three-letter phonemic elements like `zod`, `lod`, `leb`, `rit` and `rul`. Shorter names, such as `~zod` and `~marzod`, are assigned to ships with special duties on the Arvo network ([stars and galaxies](@/docs/concepts/galaxies-stars-and-planets.md), respectively. Longer names like `~palfun-foslup` are identities for typical users.
120+A `@p` (pronounced *pat-pee*) is a name like `~zod` or `~lodleb-ritrul` composed of pronounceable, three-letter phonemic elements like `zod`, `lod`, `leb`, `rit` and `rul`. Shorter names, such as `~zod` and `~marzod`, are assigned to ships with special duties on the Arvo network stars and galaxies, respectively. Longer names like `~palfun-foslup` are identities for typical users.
133121
134−These names map directly to a corresponding number in the urbit address space. Galaxies occupy the 8-bit address space, so any galaxy is actually a number between zero and 255. Stars occupy the 16-bit address space, and planets occupy the 32-bit address space.
122+These names map directly to a corresponding number in the Urbit ID address space. Galaxies occupy the 8-bit address space, so any galaxy is actually a number between zero and 255. Stars occupy the 16-bit address space, and planets occupy the 32-bit address space.
135123
136−### Can I change my `@p`? {#change-my-@p}
124+### Can I change my `@p`? {#change-my-patp}
137125
138−Unfortunately not, since there is a 1:1 mapping between name and identity.
126+Nope. There is a 1:1 mapping between name and identity. Think of your `@p` sort of like a phone number. It's just a random synthetic name that doesn't leak any personal information about you.
139127
140128### How do I get an identity? {#get-an-identity}
141129
142−You can either find someone to give you one, or try an ERC-721 (NFT) exchange (Google or Twitter should help you with this). This will probably involve a purchase and a transfer to an Ethereum address that you own. We recommend using [Bridge](https://github.com/urbit/bridge/releases) to access the address that the identity is transferred to.
130+The easiest way is to find a friend who can give you one. They're out there — just ask around.
131+
132+Or, if you must, try an ERC-721 (NFT) exchange (Google or Twitter should help you with this). This will probably involve a purchase and a transfer to an Ethereum address that you own. We recommend using [Bridge](https://bridge.urbit.org) to access the address that the identity is transferred to.
143133
144134If you don't want to use Bridge, a tool like [Etherscan](https://etherscan.io) will allow you to execute functions in the [ecliptic.eth](https://etherscan.io/address/ecliptic.eth#code) contract.
145135
146136### How do I transfer an identity to someone else? {#transfer-identity}
147137
148−Access the Ethereum address that holds the identity you wish to transfer via [Bridge](https://github.com/urbit/bridge/releases).
138+Access the Ethereum address that holds the identity you wish to transfer via [Bridge](https://bridge.urbit.org).
149139
150−### What is the best way to access Azimuth? {#access-azimuth}
140+### What is the best way to access my Urbit ID? {#access-azimuth}
151141
152−We recommended using [Bridge](https://github.com/urbit/bridge/releases) for all Azimuth-related operations. It’s great for managing your identities, as well as for viewing information about identities you don’t own.
142+We recommended using [Bridge](https://bridge.urbit.org) for all Urbit ID-related operations. It’s great for managing your identities, as well as for viewing information about identities you don’t own.
153143
154−We have seen publicly hosted versions of Bridge online. We strongly recommend avoiding these websites as they may compromise your security and privacy.
144+Be careful about using hosted versions of Bridge not hosted on urbit.org. Since Bridge touches your private keys, it can also steal them.
155145
156146## Urbit HD Wallet
157147
158148### What is the Urbit HD Wallet? {#urbit-hd-wallet}
159149
160−The Urbit Hierarchical Deterministic (HD) Wallet is a custom Ethereum wallet based on BIP39 and BIP44 – the same underlying technology used by wallet providers like Ledger, Trezor, Metamask, and MyEtherWallet. You can think of the Urbit HD wallet as a wallet of wallets, which lets you keep a single passphrase for all of your Azimuth keys. Azimuth uses multiple keys with different capabilities – a bit like permissions – so that you can keep the more valuable keys in cold storage while keeping less valuable keys, used in day-to-day operation, more easily accessible. If you're only operating a planet, you shouldn't have to worry about this: you can simply think of your "master ticket" as the password to your Urbit identity. If you're operating a star or galaxy, the Urbit HD Wallet allows you to implement a multi-tier key custody scheme.
150+The Urbit Hierarchical Deterministic (HD) Wallet is a custom Ethereum wallet based on BIP39 and BIP44 – the same underlying technology used by wallet providers like Ledger, Trezor, Metamask, and MyEtherWallet. You can think of the Urbit HD wallet as a wallet of wallets, which lets you keep a single passphrase for all of your Urbit ID keys. Urbit ID uses multiple keys with different capabilities – a bit like permissions – so that you can keep the more valuable keys in cold storage while keeping less valuable keys, used in day-to-day operation, more easily accessible. If you're only operating a planet, you shouldn't have to worry about this: you can simply think of your "master ticket" as the password to your Urbit ID. If you're operating a star or galaxy, the Urbit HD Wallet allows you to implement a multi-tier key custody scheme.
161151
162−To learn about the specifics, check out our [HD Wallet documentation](@/docs/concepts/azimuth.md#the-urbit-hd-wallet) and the [Urbit HD Wallet Spec (UP 8)](https://github.com/urbit/proposals/blob/master/008-urbit-hd-wallet.md).
152+If you're interested, you can read the spec here: [Urbit HD Wallet Spec (UP 8)](https://github.com/urbit/proposals/blob/master/008-urbit-hd-wallet.md).
163153
164154### What is a master ticket? {#master-ticket}
165155
166−The "master ticket" is the entropy seed from which your other Azimuth keys are derived. It should be treated like a master password: **you should never share it with anyone, and you must store it very securely (see our practices below).** This ticket is used to derive the Ethereum wallet that holds your ownership keys, your Arvo key – used to boot your Urbit – and the other keys associated with your identity. You’ll have a ticket if you used the Urbit Wallet Generator or claimed a ship on our hosted version of Bridge.
156+The "master ticket" is the entropy seed from which your other Urbit ID keys are derived. It should be treated like a master password: **you should never share it with anyone, and you must store it very securely (see our practices below).** This ticket is used to derive the Ethereum wallet that holds your ownership keys, your Urbit OS key – used to boot your Urbit – and the other keys associated with your identity. You’ll have a ticket if you used the Urbit Wallet Generator or claimed a ship on our hosted version of Bridge.
167157
168158If you're operating a planet, you can use your master ticket to authenticate with Bridge.
169159
170160### What is an ownership address? {#ownership-address}
171161
172−An ownership address is an Ethereum address that owns one or more of your Urbit identities. The Urbit Wallet Generator creates one Urbit HD Wallet and associated addresses for each of your identities. Using the ownership key associated with your ownership address, you can transfer identities to other people, meaning that it’s very important to store securely.
162+An ownership address is an Ethereum address that owns one or more of your Urbit IDs. The Urbit Wallet Generator creates one Urbit HD Wallet and associated addresses for each of your identities. Using the ownership key associated with your ownership address, you can transfer identities to other people, meaning that it’s very important to store securely.
173163
174164### What are proxies? {#proxies}
175165
176−Proxies are seeds derived from your master ticket used to generate sub-wallets, which are in turn used to generate keys that have the ability to execute different Azimuth functions associated with your Urbit identity. Proxies generally have more restricted capabilities than your ownership seed. These capabilities include: spawning child identities, voting, and setting networking keys.
166+Proxies are seeds derived from your master ticket used to generate sub-wallets, which in turn are used to generate keys that have the ability to execute different Urbit ID functions associated with your Urbit identity. Proxies generally have more restricted capabilities than your ownership seed. These capabilities include spawning child identities, voting, and setting networking keys.
177167
178168- Transfer proxy: Can transfer your identity to another Ethereum address.
179169- Spawn Proxy: For stars and galaxies only. Can create new child identities.
@@ -182,13 +172,13 @@ Proxies are seeds derived from your master ticket used to generate sub-wallets,
182172
183173### What are seeds? {#seeds}
184174
185−All Ethereum key-pairs in the Urbit wallet system, including proxies, are produced by 128-bit cryptographically random values called seeds. These seeds are the equivalent of the BIP39 mnemonic of an Ethereum wallet. These seeds are yours alone. An ownership key pair is derived from an ownership seed, and likewise the various proxy key pairs, are generated from their respective proxy seeds.
175+All Ethereum key-pairs in the Urbit wallet system, including proxies, are produced by 128-bit cryptographically random values called seeds. These seeds are the equivalent of the BIP39 mnemonic of an Ethereum wallet and are yours alone. An ownership key pair is derived from an ownership seed and, likewise, the various proxy key pairs are generated from their respective proxy seeds.
186176
187−For detailed information, see the [Urbit HD Wallet Spec (UP 8)](https://github.com/urbit/proposals/blob/master/008-urbit-hd-wallet.md).
177+For detailed information see the [Urbit HD Wallet Spec (UP 8)](https://github.com/urbit/proposals/blob/master/008-urbit-hd-wallet.md).
188178
189179### What does it mean to “set public keys”? {#set-public-keys}
190180
191−This means registering the public keys of your identity's encryption and authentication key pairs (together known as "networking keys") with Azimuth, so that others can discover them. The corresponding private keys can then be used to, for example, run a ship on the Arvo network.
181+This means registering the public keys of your identity's encryption and authentication key pairs (together known as "networking keys") with Urbit ID / Azimuth, so that others can discover them. The corresponding private keys can then be used to, for example, run a ship on the Urbit OS network.
192182
193183You want to reset these keys if they are compromised, or if your ship has sunk. This is of little practical significance today, but resetting your networking keys resets your relationship with other ships on the network.
194184
@@ -198,18 +188,18 @@ We recommend using different HD Wallets for each identity. You are able to assig
198188
199189### How should I take care of my Urbit HD Wallet? {#custody}
200190
201−Urbit identities have accompanying security realities that must be taken seriously. Cryptographic assets are unique among things of value, because all of the responsibility for keeping those assets safe rests with the party that owns them.
191+Urbit IDs have accompanying security realities that must be taken seriously. The responsibility for keeping cryptographic assets safe rests fully with the party that owns them.
202192
203193The nature of decentralization is such that there is no authority that has the power to restore any lost or stolen wallet. Neither can anyone force you to follow good security practices. At most, they can give you recommendations. **Remember:** if critical items, such as your ownership key, are lost or compromised, your assets are likely gone forever.
204194
205195Below we list some good practices for storing keys, strictest first. Higher-value assets should be secured with stricter measures.
206196
207−#### Security Tier 1: Cold Storage*
197+#### Security Tier 1: Cold storage*
208198
209199Cold storage refers to any method in which secrets are stored in a way that is not accessible to any network. Cold-stored keys should only ever be generated offline.
210200
211201Cold storage media options:
212−- Printing the secret on a piece of paper. However, paper wallets are vulnerable to various forms of physical damage, such as rot, water damage, smoke, or fire. Laminating the paper can mitigate some of these risks, but the lamination can potentially trap moisture. Make sure that you trust the printer: some have memory and network connections.
202+- Printing the secret on a piece of paper. However, paper wallets are vulnerable to various forms of physical damage, such as rot, water damage, smoke, or fire. Laminating the paper can mitigate some of these risks, but the lamination can potentially trap moisture. Make sure that you trust the printer; some have memory and network connections.
213203- Storing the secret on a brand-new USB stick or hard drive that has never been connected to a networked machine.
214204- Storing the secret on a hardware wallet like Ledger or Trezor.
215205- Engraving the secret on a strip of stainless steel. This medium is resistant to both water and fire damage.
@@ -221,13 +211,13 @@ Places to store your cold-storage media:
221211
222212It’s a good idea to store your keys redundantly; for example, on both a USB stick and a piece of paper in the safe, in case one of those methods fails. If you deem a key to be valuable enough, you can **shard** it into thirds (or other splits) and store each third in secure, geographically distributed locations. Urbit HD wallets for galaxies automatically provide a 3-way sharded master ticket.
223213
224−#### Security Tier 2: Hardware Wallet or Paper Wallet
214+#### Security Tier 2: Hardware wallet or paper wallet
225215
226−A hardware wallet is a digital storage device that’s purpose-built to store cryptographic secrets. They are unaffected by typical key-stealing malware, and have built-in security mechanisms that other digital devices lack. Do research and make sure that you are buying an authentic device manufactured by trustworthy, technically competent security experts with a good reputation. Trezor and Ledger are two popular brands of hardware wallets.
216+A hardware wallet is a digital storage device that’s purpose-built to store cryptographic secrets. They are unaffected by typical key-stealing malware and have built-in security mechanisms that other digital devices lack. Do your research and make sure that you are buying an authentic device manufactured by trustworthy, technically competent security experts with a good reputation. Trezor and Ledger are two popular brands of hardware wallets.
227217
228−A "paper wallet" is a physical medium printed or engraved with a secret. These are resistent to network attacks, but have the downside that the secret must be entered into a computer by hand, exposing the user to attacks from malware and evesdroppers.
218+A "paper wallet" is a physical medium printed or engraved with a secret. These are resistent to network attacks, but the downside is that the secret must be entered into a computer by hand, exposing the user to attacks from malware and eavesdroppers.
229219
230−#### Security Tier 3: On Your Computer
220+#### Security Tier 3: On your computer
231221
232222This tier includes any method where secrets are stored on an everyday computing platform. Some such methods are:
233223
@@ -237,72 +227,72 @@ This tier includes any method where secrets are stored on an everyday computing
237227
238228This method is risky for a number of reasons. Networked computers can contain malware. Computers that see common use are also prone to crashes and data loss. Storing secrets on cloud accounts mitigates the risk of data destruction, but it exposes a much larger attack surface to malicious actors.
239229
240−For all of these reasons, make sure that you only use Tier 3 methods for the storage of low-value secrets.
230+For all of these reasons, if you use Tier 3 methods, use them only for the storage of low-value secrets.
241231
242232### I have a galaxy or star with lockup conditions. How does this work? {#lockup-conditions}
243233
244234There are two kinds of release schemes for locked up assets: linear and conditional.
245235
246−In either scheme, you start out being able to take one star out of lockup, regardless of the terms set around the lockup as a whole. This way, you get to participate with a star right away. Become useful! Go do something cool!
236+In either scheme, you start out being able to take one star out of lockup, regardless of the terms set around the lockup as a whole. This way, you get to participate with a star right away. Go do something cool!
247237
248238If your lockup involved a galaxy, all of its stars will be locked up, but you will have immediate, lock-free control of the galaxy. You will likely need it to use that star.
249239
250−Note that the "releasing" of stars just means that they become available for you to claim. They don't automatically get transferred to you, you have to withdraw them from the appropriate lockup contract.
240+Note that the "releasing" of stars just means that they become available for you to claim. They don't automatically get transferred to you; you have to withdraw them from the appropriate lockup contract.
251241
252−Linear release is the simplest, and does exactly what it sounds like. Your stars will be released linearly over a period of time. Most commonly, this is a period of four years. If you have four stars in lockup, that means you will be able to withdraw one star per year. In many cases, there is also an initial windup period, which has to pass before the linear releasing begins. Usually, this is one year. Since Azimuth launched in January 2019, this means the linear release will begin in January 2020.
242+Linear release is the simplest: your stars will be released linearly over a period of time. Most often this is a period of four years. If you have four stars in lockup, that means you will be able to withdraw one star per year. In many cases, there is also an initial windup period which has to pass before linear releasing begins, typically one year. Since Azimuth launched in January 2019, the linear release will begin in January 2020.
253243
254−Conditional release is a bit more complicated. If your stars are in conditional lockup, they're likely divided over three so-called tranches. Each of these unlocks only after a unique condition is met. Since it's difficult to verify things about the real world using smart contracts, we instead have the Galactic Senate verify that they've been met. Once the Senate marks a condition for a tranche as cleared, it starts releasing linearly over the period of a year.
244+Conditional release is a bit more complicated. If your stars are in conditional lockup, they're likely divided over three so-called tranches. Each of these unlocks only after a unique condition is met. Since it's difficult to verify things about the real world using smart contracts, the Galactic Senate verifies that they've been met. Once the Senate marks a condition for a tranche as cleared, it starts releasing linearly over the period of a year.
255245
256−## Arvo
246+## Urbit OS
257247
258−### What is Arvo? {#what-is-arvo}
248+### What is Urbit OS? {#what-is-arvo}
259249
260−Arvo is the Urbit operating system, and also the name of the operating system's kernel. Unlike conventional operating systems, it’s functional and deterministic. Arvo is written in Hoon, our purely functional programming language, which compiles to Nock, a compact bytecode language.
250+Urbit OS, also called Arvo, is our functional and deterministic software stack. Arvo is written in Hoon, our purely functional programming language, which compiles to Nock, a compact bytecode language.
261251
262−Instances of the Arvo operating system, called ships, communicate as peers on what we refer to as “the Arvo network.” Using Azimuth, Arvo ships can prove their identities to one another.
252+Instances of Urbit OS / Arvo, called 'ships', communicate as peers on what we refer to as “the Urbit OS network.” Using Urbit ID, Urbit OS ships can prove their identities to one another.
263253
264−### What is unique about Arvo? {#what-is-unique-about-arvo}
254+### What is unique about Urbit OS / Arvo? {#what-is-unique-about-arvo}
265255
266−Arvo is quite different from other operating systems in many ways, but notably because it's completely deterministic. Processing in the system happens in a unique way: when an event happens, a transition function takes that event and the old state of Arvo, and then produces an effect and a new state of Arvo. To visualize:
256+Arvo is different from other operating systems in many ways. One notable way is that it is completely deterministic. Processing in the system happens in a unique way: when an event happens, a transition function takes that event and the old state of Arvo, and produces an effect and a new state of Arvo. To visualize:
267257
268−[event, old state] -> [effects, new state]
258+`[event, old state] -> [effects, new state]`
269259
270260All events are logged to disk, so you can always restore the system to a previous point in time.
271261
272−### How is Arvo connected to Ethereum? {#arvo-ethereum}
262+### How is Urbit OS / Arvo connected to Ethereum? {#arvo-ethereum}
273263
274−When an Arvo ship (instance) is started for the first time, you must use a "keyfile" containing the private keys for your identity's networking keys. Azimuth uses the Ethereum blockchain as its decentralized ledger.
264+When an Arvo ship (instance) is started for the first time you must use a "keyfile" containing the private keys for your identity's networking keys. Urbit ID uses the Ethereum blockchain as its decentralized ledger.
275265
276−See our [Getting Started](@/docs/getting-started/_index.md) guide to learn how to get your ship onto the Arvo network.
266+See our [Getting Started](@/using/install.md) guide to learn how to get your ship onto the Urbit OS / Arvo network.
277267
278−### Will the Arvo network survive if Ethereum dies? {#if-ethereum-dies}
268+### Will the Urbit OS network survive if Ethereum dies? {#if-ethereum-dies}
279269
280−Yes. It would be annoying, but Azimuth would be ported to another decentralized ledger.
270+Yes. It would be annoying, but Urbit ID / Azimuth could be ported to another decentralized ledger, or hosted on Urbit OS / Arvo itself.
281271
282−### How do I install Arvo? {#install-arvo}
272+### How do I install Urbit OS? {#install-urbit-os}
283273
284−Check out our guides [here](@/docs/getting-started/_index.md).
274+Check out our guides [here](@/using/install.md).
285275
286−### How do I use Arvo? {#use-arvo}
276+### How do I use Urbit OS? {#use-urbit-os}
287277
288−The [Using](@/docs/using/_index.md) section of the documentation will help you out.
278+The [Using](@/using/operations/_index.md) section of the documentation will help you out.
289279
290280### How do over-the-air updates work? {#over-the-air-updates}
291281
292−Your sponsor, a star or galaxy that your ship "lives under", may send you new source code for your system. When you receive new source code from your sponsor, your system recompiles itself using that code, performs any necessary data migrations, and keeps running. Ideally this happens seamlessly without the user even noticing, although there is sometimes a slowdown while rebuilding the system from source.
282+Your sponsor, a star or galaxy that your ship is connected to, may send you new source code for your system. When you receive new source code from your sponsor, your system recompiles itself using that code, performs any necessary data migrations, and keeps running. Ideally this happens seamlessly without the user even noticing, although there is sometimes a slowdown while rebuilding the system from source.
293283
294284### What is Landscape? {#what-is-landscape}
295285
296−Landscape is an experimental Arvo web interface that includes social functions such as chat and publishing. You can access Landscape by navigating to `http://localhost:PORT`, where PORT is typically 80, 8080, or 8081 (check your boot messages).
286+Landscape is an experimental Urbit OS web interface that includes social functions such as chat and publishing. You can access Landscape by navigating to `http://localhost:PORT`, where PORT is typically 80, 8080, or 8081 (check your boot messages).
297287
298−### I have an Urbit identity, now what? {#now-what}
288+### I have an Urbit ID, now what? {#now-what}
299289
300−Follow our guide on how to boot a ship [here](@/docs/getting-started/booting-a-ship.md).
290+Follow our guide on how to boot a ship [here](@/using/install.md).
301291
302−Get on the [mailing list](/../#mc_embed_signup). Learn [Hoon](@/docs/learn/hoon/_index.md). Sign up for [Hoon School](@/hoonschool.md). [Make stuff](@/docs/getting-started/contributing.md).
292+Get on the [mailing list](https://urbit.us11.list-manage.com/subscribe/post?u=972a03db9e0c6c25bb58de8c8&amp;id=be143888d2). Learn [Hoon](@/docs/tutorials/hoon/_index.md). Sign up for [Hoon School](@/hoonschool.md). [Make stuff](@/using/install.md).
303293
304294
305−## Grants
295+## Urbit Grants
306296
307297### What are the different types of grants? {#grants-1}
308298
@@ -331,7 +321,7 @@ However, either party may terminate a proposal on seven days’ written notice.
331321
332322### Do I have to pay taxes on stars? {#grant-5}
333323
334−Yes. If you are American, we need your W-9 before we can pay you your stars. If you’re not an American, you don’t need to get us any forms, but you do need to personally follow the relevant tax laws in your jurisdiction. In the United States, stars are considered to be income.
324+Yes. In the United States, stars are considered to be income. If you are American, we need your W-9 before we can pay out your stars. If you’re not an American, you don’t need to get us any forms, but you do need to personally follow the relevant tax laws in your jurisdiction.
335325
336326### Can I create a bounty? {#grants-6}
337327
@@ -367,9 +357,9 @@ We recommend storing each star in its own Ethereum wallet. The private keys to t
367357
368358### Can I delegate a bounty or proposal to someone else? {#grants-14}
369359
370−No. Not unless explicitly authorized by Tlon.
360+No, not unless explicitly authorized by Tlon.
371361
372−## Do I need to sign a contract? {#grants-15}
362+### Do I need to sign a contract? {#grants-15}
373363
374364After you are approved to work on a bounty or a proposal, you will be sent a contract that you'll need to sign. You don't need to sign a contract to receive a gift, though.
375365
content/governance.mdnew file+21
@@ -0,0 +1,21 @@
1++++
2+title = "Governance"
3+[extra]
4+hidetitle = "true"
5++++
6+
7+Our goal is to design Urbit simply, such that as many decisions as possible are made by the architecture of the system itself – that is, code should be law whenever possible. Code can’t anticipate every eventuality, however, and so the system design must include mechanisms that allow decisions to be made outside of the code.
8+
9+Within Urbit, this form of governance is conducted by two groups: the senate of galaxies, and the body of core developers. The senate of galaxies is empowered to make changes to the solidity contracts which define Azimuth, Urbit’s PKI, by majority vote. This process is defined by the contracts themselves.
10+
11+An owner of a galaxy (or a delegate) can propose a new iteration of the contract logic. The proposal can then be voted on for a period of thirty days. Once that period is over, if at least a quarter of the galaxies has voted, and the majority is in favor, the old logic contract will hand over the reigns to the new one.
12+
13+In a similar process, document hashes can be proposed. While their off-chain documents can't be "technically enforced", this mechanism is useful for the Senate to record more abstract decisions.
14+
15+For off-chain process around proposals, as suggested by core developers, please see [senate.md](https://github.com/urbit/azimuth/blob/master/senate.md).
16+
17+The group of core developers manages Urbit’s [GitHub repository](https://github.com/urbit/), which controls Arvo, Urbit’s operating system. Changes and upgrades are decided upon by consensus.
18+
19+You can participate in the governance of the senate by acquiring a galaxy. If you would like to be involved with the governance of Arvo, check out our [developer guide](@/using/develop.md) to learn how you can contribute to core development.
20+
21+
content/media.mdnew file+4
@@ -0,0 +1,4 @@
1++++
2+title = "Media"
3+template = "media/list.html"
4++++
content/posts/_index.md → content/media/_index.mdrenamed+1−1
@@ -1,5 +1,5 @@
11+++
22render = false
33sort_by = "date"
4−in_search_index = false
4+in_search_index = true
55+++
content/posts/blockchannel-episode-19-virtual-land-in-the-clouds-with-urbit.md → content/media/blockchannel-episode-19-virtual-land-in-the-clouds-with-urbit.mdrenamed+4−3
@@ -1,10 +1,11 @@
11+++
22title = "Episode 19: Virtual Land in the Clouds, with Urbit"
33date = 2017-04-16
4−author = "Tlon"
54description = "Galen and Curtis talk Urbit on the BlockChannel podcast."
6−[taxonomies]
7−posts = ["Media"]
5+[extra]
6+author = "Galen Wolfe-Pauly + Curtis Yarvin"
7+ship = "~ravmel-ropdyl + ~sorreg-namtyv"
8+soundcloud = "https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/tracks/318017856&color=%23ff5500&auto_play=false&hide_related=false&show_comments=true&show_user=true&show_reposts=false&show_teaser=true&visual=true"
89+++
910{{ soundcloud(url="https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/tracks/318017856&color=%23ff5500&auto_play=false&hide_related=false&show_comments=true&show_user=true&show_reposts=false&show_teaser=true&visual=true") }}
1011
content/posts/blueprint-2017-galen-wolfe-pauly-on-the-distributed-web.md → content/media/blueprint-2017-galen-wolfe-pauly-on-the-distributed-web.mdrenamed+5−3
@@ -1,10 +1,12 @@
11+++
22title = "Blueprint 2017 Talks: Galen Wolfe-Pauly on the Distributed Web"
33date = 2017-11-20
4−author = "Tlon"
54description = "Galen presents to IDEO on Urbit and decentralized systems."
6−[taxonomies]
7−posts = ["Media"]
5+aliases = ["/posts/blueprint-2017-galen-wolfe-pauly-on-the-distributed-web/"]
6+[extra]
7+author = "Galen Wolfe-Pauly"
8+ship = "~ravmel-ropdyl"
9+youtube = "9cXTGW9J9a0"
810+++
911{{ youtube(id="9cXTGW9J9a0") }}
1012
content/posts/epicenter-episode-205-urbit-a-digital-republic-reinventing-the-internet.md → content/media/epicenter-episode-205-urbit-a-digital-republic-reinventing-the-internet.mdrenamed+5−3
@@ -1,10 +1,12 @@
11+++
22title = "Epicenter #205: Urbit – A Digital Republic Reinventing the Internet"
33date = 2017-10-18
4−author = "Tlon"
54description = "Galen discusses Urbit with Brian Fabian Crain and Meher Roy on the Epicenter podcast."
6−[taxonomies]
7−posts = ["Media"]
5+aliases = ["/posts/epicenter-episode-205-urbit-a-digital-republic-reinventing-the-internet/"]
6+[extra]
7+author = "Galen Wolfe-Pauly"
8+ship = "~ravmel-ropdyl"
9+youtube = "DFeN-TKZor0"
810+++
911{{ youtube(id="DFeN-TKZor0") }}
1012
content/posts/governing-the-future-e09-urbit-a-user-owned-internet-on-top-of-the-internet.md → content/media/governing-the-future-e09-urbit-a-user-owned-internet-on-top-of-the-internet.mdrenamed+4−3
@@ -1,10 +1,11 @@
11+++
22title = "Governing the Future E09: Urbit – A User Owned Internet on top of the Internet"
33date = 2017-08-10
4−author = "Tlon"
54description = "Galen talks with Hampus Jakobsson about Urbit on the Governing the Future podcast."
6−[taxonomies]
7−posts = ["Media"]
5+aliases = ["/posts/governing-the-future-e09-urbit-a-user-owned-internet-on-top-of-the-internet/"]
6+[extra]
7+author = "Galen Wolfe-Pauly"
8+ship = "~ravmel-ropdyl"
89+++
910> What happens when users get to control a piece of the internet. What does this browser of servers mean when we can use own client and still communicate? Can we create a new Internet owned by the people, an internet designed like a city by an architect and not only engineers?
1011
content/posts/lambdaconf-2016-curtis-yarvin-urbit-a-clean-slate-functional-operating-stack.md → content/media/lambdaconf-2016-curtis-yarvin-urbit-a-clean-slate-functional-operating-stack.mdrenamed+5−3
@@ -1,10 +1,12 @@
11+++
22title = "LambdaConf 2016: Curtis Yarvin - Urbit: A Clean Slate Functional Operating Stack"
33date = 2016-09-28
4−author = "Tlon"
54description = "Curtis presents a comprehensive technical overview of Urbit at LambdaConf 2016."
6−[taxonomies]
7−posts = ["Media"]
5+aliases = ["/posts/lambdaconf-2016-curtis-yarvin-urbit-a-clean-slate-functional-operating-stack/"]
6+[extra]
7+author = "Curtis Yarvin"
8+ship = "~sorreg-namtyv"
9+youtube = "bTisf4oxIFo"
810+++
911{{ youtube(id="bTisf4oxIFo") }}
1012
content/posts/lambdaconf-2018-ted-blackman-ford-urbits-build-system.md → content/media/lambdaconf-2018-ted-blackman-ford-urbits-build-system.mdrenamed+5−3
@@ -1,10 +1,12 @@
11+++
22title = "LambdaConf 2018: Ted Blackman - Ford: Urbit's Build System"
33date = 2018-12-20
4−author = "Tlon"
54description = "Ted presents a technical overview of Ford, Urbit's build system, at LambdaConf 2018."
6−[taxonomies]
7−posts = ["Media"]
5+aliases = ["/posts/lambdaconf-2018-ted-blackman-ford-urbits-build-system/"]
6+[extra]
7+author = "Ted Blackman"
8+ship = "~rovnys-ricfer"
9+youtube = "5ZAFEylHdiU"
810+++
911{{ youtube(id="5ZAFEylHdiU") }}
1012
content/posts/the-ether-review-46-curtis-yarvin-and-galen-wolfe-pauly-on-urbit.md → content/media/the-ether-review-46-curtis-yarvin-and-galen-wolfe-pauly-on-urbit.mdrenamed+5−3
@@ -1,10 +1,12 @@
11+++
22title = "The Ether Review #46: Curtis Yarvin & Galen Wolfe-Pauly on Urbit"
33date = 2016-10-24
4−author = "Tlon"
54description = "Curtis and Galen talk about Urbit on The Ether Review podcast."
6−[taxonomies]
7−posts = ["Media"]
5+aliases = ["/posts/the-ether-review-46-curtis-yarvin-and-galen-wolfe-pauly-on-urbit/"]
6+[extra]
7+author = "Curtis Yarvin + Galen Wolfe-Pauly"
8+ship = "~sorreg-namtyv + ~ravmel-ropdyl"
9+soundcloud = "https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/tracks/289783332&color=%23000000&auto_play=false&hide_related=true&show_comments=false&show_user=true&show_reposts=false&show_teaser=false&visual=true"
810+++
911{{ soundcloud(url="https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/tracks/289783332&color=%23000000&auto_play=false&hide_related=true&show_comments=false&show_user=true&show_reposts=false&show_teaser=false&visual=true") }}
1012
content/posts/the-future-of-precision-agriculture-is-decentralized.md → content/media/the-future-of-precision-agriculture-is-decentralized.mdrenamed+5−4
@@ -1,10 +1,11 @@
11+++
22title = "The Future of Precision Agriculture is Decentralized"
33date = 2017-07-17
4−author = "Tlon"
54description = "Anthony Arroyo writes on Urbit and decentralizing agriculture."
6−aliases = ["/posts/essays/the-future-of-precision-agriculture-is-decentralized"]
7−[taxonomies]
8−posts = ["Media"]
5+aliases = ["/posts/essays/the-future-of-precision-agriculture-is-decentralized", "/posts/the-future-of-precision-agriculture-is-decentralized/"]
6+[extra]
7+author = "Anthony Arroyo"
8+ship = "~poldec-tonteg"
99+++
10+
1011[The Future of Precision Agriculture is Decentralized](http://www.anthonyarroyodotcom.com/blog/2017/7/17/the-future-of-precision-agriculture-is-decentralized)
content/posts/urbit-and-the-not-so-dark-future-of-the-internet.md → content/media/urbit-and-the-not-so-dark-future-of-the-internet.mdrenamed+4−3
@@ -1,9 +1,10 @@
11+++
22title = "Urbit and the Not-So-Dark Future of the Internet"
33date = 2017-04-12
4−author = "Tlon"
54description = "Isaac Simpson's high-level introduction to Urbit."
6−[taxonomies]
7−posts = ["Media"]
5+aliases = ["/posts/urbit-and-the-not-so-dark-future-of-the-internet/"]
6+[extra]
7+author = "Isaac Simpson"
88+++
9+
910[Urbit and the Not-So-Dark Future of the Internet](https://medium.com/vandal-press/urbit-and-the-not-so-dark-future-of-the-internet-400c9b667e2)
content/media/what-is-urbit.mdnew file+10
@@ -0,0 +1,10 @@
1++++
2+title = "What is Urbit?"
3+date = 2017-05-15
4+description = "A quick video explainer of how Urbit works."
5+[extra]
6+youtube = "M04AKTCDavc"
7++++
8+{{ youtube(id="M04AKTCDavc") }}
9+
10+[What is Urbit?](https://www.youtube.com/watch?v=M04AKTCDavc)
content/privacy.md+15−14
@@ -1,22 +1,23 @@
11+++
22title = "Privacy Policy"
3+template = "page_indiced.html"
34+++
45
5−## Scope of this Privacy Policy
6+### Scope of this Privacy Policy {#scope}
67
78Tlon Corporation ('Tlon,' 'we,' 'our,' and/or 'us') values the privacy of individuals who use Urbit software, our websites, and related services (collectively, our 'Services'). This privacy policy (the 'Privacy Policy') explains how we collect, use, and share information from users of our Services ('Users'). By using our Services, you agree to the collection, use, disclosure, and procedures this Privacy Policy describes. Beyond the Privacy Policy, your use of our Services is also subject to our Terms of Service.
89
9−## Information We Collect
10+### Information we collect
1011
1112We may collect a variety of information from or about you or your devices from various sources, as described below.
1213
13−## Information You Provide to Us
14+### Information you provide to us
1415
1516*Address Space Information.* When you acquire Urbit address space from Tlon, you provide us with certain information, such as your name and email. You may also provide us with your Ethereum wallet address and public key.
1617
1718*Communications.* If you contact us directly, we may receive additional information about you. For example, when you chat with us in Urbit or contact support, we may receive your email address, the contents of a message or attachments that you may send to us, and other information you choose to provide.
1819
19−## Information We Collect When You Use Our Services
20+### Information we collect when you use our services
2021
2122*Device Information.* We receive information about the device and software you use to access our websites, including IP address, device identifier, web browser type, device model, and operating system version.
2223
@@ -26,7 +27,7 @@ We may collect a variety of information from or about you or your devices from v
2627
2728Please review your web browser 'Help' file to learn the proper way to modify your cookie settings. Please note that if you delete, or choose not to accept, cookies from the Services, you may not be able to utilize the features of the Services to their fullest potential.
2829
29−## How We Use the Information We Collect
30+### How we use the information we collect
3031
3132We use the information we collect:
3233
@@ -38,7 +39,7 @@ We use the information we collect:
3839+ For compliance purposes, including enforcing our Terms of Service or other legal rights, or as may be required by applicable laws and regulations or requested by any judicial process or governmental agency; and
3940+ For other purposes for which we provide specific notice at the time of the collection of the information.
4041
41−## How we Share the Information We Collect:
42+### How we share the information we collect
4243
4344We do not share or otherwise disclose information we collect from or about you except as described below or otherwise disclosed to you at the time of the collection.
4445
@@ -54,34 +55,34 @@ We do not share or otherwise disclose information we collect from or about you e
5455
5556*Consent.* We may also disclose your information with your permission.
5657
57−## Your Choices
58+### Your choices
5859
5960*Marketing Communications.* You can unsubscribe from our promotional emails via the link provided in the emails. Even if you opt-out of receiving promotional messages from us, you will continue to receive administrative messages from us.
6061
6162*Do Not Track.* There is no accepted standard on how to respond to Do Not Track signals, and we do not respond to such signals.
6263
63−## Third Parties
64+### Third parties
6465
6566The Services may contain links to other websites, products, or services that Tlon does not own or operate. We are not responsible for the privacy practices of these third parties. Please be aware that this Privacy Policy will not apply to your activities or any information you disclose to these third parties. We encourage you to read their privacy policies before providing any information to them.
6667
67−## Security
68+### Security
6869
6970We make reasonable efforts to protect your information by using physical and electronic safeguards designed to improve the security of the information we maintain. However, as our Services are hosted electronically, we can make no guarantees as to the security or privacy of your information.
7071
71−## Children's Privacy
72+### Children's privacy
7273
7374We do not knowingly collect, maintain, or use personal information from children under 13 years of age, and no part of the Service is directed to children. If you learn that a child has provided us with personal information in violation of this Privacy Policy, then you may alert us at privacy@tlon.io.
7475
75−## International Visitors
76+### International visitors
7677
7778The Services are hosted in the United States and are intended for visitors located within the United States. If you choose to use the Services from the European Union or other regions of the world with laws governing data collection and use that may differ from U.S. law, then please note that you are transferring your personal information outside of those regions to the United States for storage and processing. Also, we may transfer your data from the U.S. to other countries or regions in connection with storage and processing of data, fulfilling your requests, and operating the Services. By providing any information, including personal information, on or to the Services, you consent to such transfer, storage, and processing.
7879
79−## Changes to this Privacy Policy
80+### Changes to this Privacy Policy
8081
8182We will post any adjustments to the Privacy Policy on this page, and the revised version will be effective when it is posted. If we materially change the ways in which we use or share personal information previously collected from you through the Services, we will notify you through the Services, by email, or other communication.
8283
83−## Contact Information
84+### Contact information
8485
85−Tlon is responsible for processing your information. If you have any questions, comments, or concerns about our processing activities, please email us at privacy@tlon.io.
86+Tlon is responsible for processing your information. If you have any questions, comments, or concerns about our processing activities, please email us at [privacy@tlon.io](mailto:privacy@tlon.io).
8687
8788*Last Updated:* September 12, 2018
content/tos.md+2−2
@@ -1,8 +1,8 @@
11+++
2−title = "Urbit Website Terms of Use"
2+title = "Terms of Use"
33+++
44
5−Last Updated: September 24, 2018,
5+Last Updated: September 24, 2018
66
77Welcome, and thank you for your interest in Tlon Corporation ('*Tlon*,' '*we*,' or '*us*') and our website at urbit.org, along with our related websites and services (collectively, the "Site"). These Terms of Use are a legally binding contract between you and Tlon regarding your use of the Site.
88
content/understanding-urbit/_index.mdnew file+9
@@ -0,0 +1,9 @@
1++++
2+title = "Understanding Urbit"
3+sort_by = "weight"
4+template = "understanding-urbit/list.html"
5+page_template = "understanding-urbit/post.html"
6+[extra]
7+flatten_pagination = "true"
8+hide_next_title = "true"
9++++
content/understanding-urbit/network-and-os.mdnew file+39
@@ -0,0 +1,39 @@
1++++
2+title = "Urbit OS + Network"
3+description = "The Urbit OS + Network + how they work together"
4+weight = 5
5+[extra]
6+flatten_pagination = "true"
7+hide_next_title = "true"
8+hide_previous_title = "true"
9++++
10+
11+
12+
13+Our phones are cluttered with apps, ads, and notifications. Our laptops are basically just web browsers that connect us to services controlled by MEGACORP. Who knows where your messages, images, contacts, and connections live, let alone how long they’ll last or who is looking at them.
14+
15+<img class="mv5 w-100" src="https://media.urbit.org/site/understanding-urbit/network-os/urbit-os-phones%402x.png">
16+
17+The digital world feels like a theme park built to maximize ENGAGEMENT — but we think it’s BORING. What happened to the vision of a computer as a tool that would expand and enrich our lives?
18+
19+While the world has drifted into a fever dream, we built Urbit.
20+
21+<img class="mv5 ba w-100" src="https://media.urbit.org/site/understanding-urbit/network-os/urbit-os-diagram.svg">
22+
23+Your Urbit ID gets you a name, an address, and a crypto wallet — but what about when you want to connect with other people? That’s where Urbit OS comes in.
24+
25+Urbit OS is everything that you need to build and run your own social software and compute with whomever you like. Create a pseudonymous chat group, edit a document together, then split a bar tab and later turn it into a syndicate and start investing. Eventually, maybe you’ll decide to become a microstate that funds everyone in Bitcoin — the possibilities are wide open.
26+
27+Since we’ve got a decentralized identity system to build on and everyone runs their own OS, your social software is actually owned and operated by the collective of Urbit ID owners. You can (and should) do whatever you want.
28+
29+<img class="mv5 ba w-100" src="https://media.urbit.org/site/understanding-urbit/network-os/urbit-os-diagram-apart.svg">
30+
31+We built Urbit OS from scratch. It’s a completely new computing stack. Without getting into the technical details (you can find those [here](@/understanding-urbit/technical-overview.md)), Urbit OS is built to do three things: be a compact and complete system (simple); run forever with no maintenance (durable); and be extensible by anyone (yours).
32+
33+Urbit OS is a completely unified system with no external dependencies. In a single codebase, two orders of magnitude smaller than Linux, you have an entire programming language and operating system. We realize how crazy this is — but it means that a single person can actually understand the entire system. Who is the last person you met that actually understands their entire computer? Urbit OS is like the [1968 Porsche 911](https://cdn.bringatrailer.com/wp-content/uploads/2007/05/1968_Porsche_911_SR_Factor_Race_Car_Engine_1.jpg) of operating systems.
34+
35+At the very bottom of the stack, Urbit OS is just a single, fixed function that we never change. Everything on top is upgradeable over the network. This means your Urbit OS can run forever without you ever having to do any maintenance. Put it on a USB stick, throw it in a drawer for ten years, and forget about it. When you plug it in again, it’ll slowly upgrade itself automatically.
36+
37+Since Urbit OS is completely sealed, it’s all run-from-source. All the code to run the system is yours to modify, tinker with, and extend. Build your own apps, modules, and user experience. Or customize Urbit OS to control your tractor. Even better: collaborate with others on the network to build the experience you’re looking for. It’s entirely up to you.
38+
39+We build Urbit OS so we can finally have a dependable system, that we can commit to and keep far into the future. The modern web already looks dated to us.
content/understanding-urbit/project-history.mdnew file+38
@@ -0,0 +1,38 @@
1++++
2+title = "Project Status + History"
3+description = "Where we've been and were we are now"
4+weight = 7
5+[extra]
6+flatten_pagination = "true"
7+hide_next_title = "true"
8+hide_previous_title = "true"
9++++
10+
11+Can you move to Urbit today and never look back? Not quite yet. Urbit is still young.
12+
13+
14+<img class="mv5 w-100" src="https://media.urbit.org/site/understanding-urbit/project-history/project-status-landscape-earth%402x.png">
15+
16+Currently, Urbit ID is live and deployed. That means you can own a piece of Urbit — if you can find one. There are thousands of people that can potentially invite you, and we give away invites from time to time. Your Urbit ID gets you a name, a sigil, and access to Urbit OS.
17+
18+<img class="mv5 w-100" src="https://media.urbit.org/site/understanding-urbit/project-history/project-status-bridge%402x.png">
19+
20+You can interact with your Urbit ID and invite friends using [Bridge](https://bridge.urbit.org), the Urbit authentication system. You can also use Bridge to boot the current alpha of Urbit OS. Soon you’ll be able to use Bridge for payments and to explore the Urbit network.
21+
22+<img class="mv5 w-100" src="https://media.urbit.org/site/understanding-urbit/project-history/project-status-landscape%402x.png">
23+
24+Urbit OS is a solid alpha. We use it every day to coordinate and chat about the future of Urbit. You’re [welcome to join](@/using/install.md). Our standards are high, so we aren’t asking everyone to use Urbit OS yet. If you’re someone who wants to customize their own software and experiment with a new system, [check it out](@/using/install.md). Otherwise, [join the mailing list](https://urbit.us11.list-manage.com/subscribe/post?u=972a03db9e0c6c25bb58de8c8&amp;id=be143888d2). We have exciting things planned for 2020.
25+
26+Urbit OS isn’t just an interface — it’s a complete system. You should also check out the [GitHub repository](https://github.com/urbit/urbit), our [open grants program](https://grants.urbit.org) and the [documentation](@/docs/_index.md). Building a system from scratch is a huge and enormously fun undertaking. There’s a lot going on, and we do all our development in public. Systems programmers, functional programming nerds, anyone who wants to tinker with their software will probably love playing with Urbit.
27+
28+<img class="mv5 w-100" src="https:///media.urbit.org/site/understanding-urbit/project-history/history-4.svg">
29+
30+At the beginning, Urbit was just a few people with the right combination of imagination and discipline to try to rebuild computing. Now it's a community of thousands of address space holders, dozens of open source developers, at least two independent companies ([Tlon](https://tlon.io) — which works mostly on kernel development and interface design, and [urbit.live](https://urbit.live) — which is building services on the platform), and who knows how many fans.
31+
32+**History**
33+
34+<img class="mv5 w-100" src="https://media.urbit.org/site/understanding-urbit/project-history/project-history-05.svg">
35+
36+**Roadmap**
37+
38+<img class="mv5 w-100" src="https://media.urbit.org/site/understanding-urbit/project-history/project-history-06.svg">
content/understanding-urbit/simple-durable-yours.mdnew file+53
@@ -0,0 +1,53 @@
1++++
2+title = "Simple, Durable, Yours"
3+description = "The core ideas that Urbit is built around"
4+weight = 1
5+[extra]
6+flatten_pagination = "true"
7+hide_next_title = "true"
8+hide_previous_title = "true"
9++++
10+
11+We live in a world dense with computers. We wake up and look at them, we see the world through them, we depend on them completely, and they’re not going away. They’re only becoming more ubiquitous.
12+
13+But computers are a mess.
14+
15+
16+<img class="ba mv5 w-100" src="https://media.urbit.org/site/understanding-urbit/simple-durable-yours/simple-durable-yours-notifications.svg">
17+
18+
19+We spend all our time switching between services, juggling logins and different interfaces. And once we’re logged in, the services we use harvest our data, spy on us, and often shut down with little warning.
20+
21+If computers are going to be a part of our lives for generations to come, we need a sound foundation for them. We need a _system_, not a grab bag of apps and services. Urbit is that system.
22+
23+<img class="ba mv5 w-100" src="https://media.urbit.org/site/understanding-urbit/simple-durable-yours/simple-durable-yours-rock%402x.png">
24+
25+We built Urbit from scratch to be a system that’s simple, durable, and yours. Everything that computing today is not — but should be.
26+
27+What do we mean by simple, durable, and yours? Let’s walk through it one by one.
28+
29+<br /><br />
30+
31+## Simple
32+
33+Urbit is designed to be incredibly simple for ordinary users. Your data, applications, and connections all live in a single, unified OS that belongs to you. Your Urbit requires no system administration and gets all its updates over the air. For developers, Urbit is incredibly compact and efficient. It’s about 50K lines of code — smaller than your average webapp. The entire OS can be understood by a single person and is designed to make building decentralized apps straightforward.
34+
35+<br /><br />
36+
37+## Durable
38+
39+Your Urbit is designed to be durable: both to store your data across generations and to be resilient against crashes. You can't really trust a computer that could disappear or become obsolete. We’ve become accustomed to this distrust, but it’s not the way things should be. Your Urbit is meant to be a permanent digital home. At its foundation, Urbit is designed a bit like a blockchain — making reliability and permanence a priority for the individual.
40+
41+<br /><br />
42+
43+## Yours
44+
45+Finally, your Urbit belongs to you in every possible way. You own it with a private key, control it completely, and can inspect its source code. We want your Urbit to be your digital home. A home you don’t own is just a hotel room.
46+
47+<img class="ba mv5 w-100" src="https://media.urbit.org/site/understanding-urbit/simple-durable-yours/simple-durable-yours-evolution.svg">
48+
49+Urbit began as a sketch, driven from a basic intuition that a better platform could be built. Today, Urbit is two components: Urbit ID, an identity system that’s already live on Ethereum; and Urbit OS, a decentralized network and OS stack that’s young but working well.
50+
51+Over time we’ve quietly evolved Urbit into a carefully engineered, compact system. Urbit isn’t done — but it’s well on its way. The network has been live since 2013 and the interface is coming along nicely. You can own a piece of Urbit today if you can find an invite from a friend, or by buying an Urbit ID. We’re ready for people to begin homesteading this new territory we created with new communities and new software.
52+
53+We think it’s possible to leave today’s technology behind and build something better. Something more humane, calm, and collectively owned. Our vision of the future isn’t one where technology intrudes in every corner of our lives. It’s one where technology is mostly invisible.
content/understanding-urbit/technical-overview.mdnew file+47
@@ -0,0 +1,47 @@
1++++
2+title = "Technical Overview"
3+description = "A quick tour of the technology"
4+weight = 6
5+[extra]
6+flatten_pagination = "true"
7+hide_next_title = "true"
8+hide_previous_title = "true"
9++++
10+
11+
12+
13+Owning a computer, especially a server, can feel like a job. Urbit, on the other hand, is engineered to be maintenance free. We figure that if people are actually going to use a new computing platform, it can’t feel like work. At all.
14+
15+<img class="ba mv5 w-100" src="https://media.urbit.org/site/understanding-urbit/technical-overview/technical-overview-server.svg">
16+
17+So we built our whole stack, starting with the VM, to be as simple and compact as possible. Let’s take a look at what the system looks like from a technical perspective and get a feel for how it’s built.
18+
19+<img class="ba mv5 w-100" src="https://media.urbit.org/site/understanding-urbit/technical-overview/technical-overview-duo.svg">
20+
21+Under the hood, Urbit is two parts: an ID system and an OS. The ID system is live and deployed to Ethereum. The OS is a program that runs on top of any Unix machine with an internet connection.
22+
23+Urbit ID is incredibly simple. An Urbit ID is just a pair of an ID and a public key. Some IDs have the ability to issue a finite number of other IDs. Galaxies, the top-tier of Urbit IDs, have the ability to upgrade the Urbit ID contracts by a majority vote. Each Urbit ID also has a cascade of keys that can perform specific actions which make securing your Urbit ID simple and straightforward. For example, the key for booting Urbit OS is separate from the key for issuing children — keep that one in a safe.
24+
25+All of this is implemented as a [suite of Solidity contracts](https://github.com/urbit/azimuth) that are [deployed to Ethereum](https://etherscan.io/address/azimuth.eth) that we call ‘Azimuth’. We’re not wedded to using Ethereum forever — but it works well for now. Someday we’d like to host Azimuth on Urbit itself.
26+
27+As a compliment to Urbit ID, we implemented the [Urbit HD wallet](https://github.com/urbit/urbit-wallet-generator) which lets most people own their Urbit IDs using a simple passkey that’s easy to remember. This means you own your Urbit ID and can log in to Urbit OS with something like `~ravmel-ropdyl`, `~poldec-tonteg-palfun-foslup`.
28+
29+Until Urbit OS is completely secure (in the next year or so, we hope), you can interact with Urbit ID through a standalone, browser-based interface called [Bridge](https://bridge.urbit.org). Bridge lets you securely manage your keys, transfer your Urbit ID, log in to Urbit OS, and so on.
30+
31+<img class="ba mv5 w-100" src="https://media.urbit.org/site/understanding-urbit/technical-overview/technical-overview-kernel@2x.png">
32+
33+In the simplest terms, Urbit OS is three things: a file, a key, and a program. The file is a log of everything that has ever happened to your Urbit. The key is derived from the same key you own your Urbit ID with.
34+
35+The program is mostly Arvo — our name for the Urbit OS kernel. Arvo is implemented in Hoon, a functional language that compiles down to Nock, our tiny set of opcodes.
36+
37+Arvo’s behavior is completely defined by a transition function that goes from `[event, current-state]` to `[effects, next-state]`. An event might be a keypress, an HTTP request, or a UDP message from another Arvo. An effect might be a command to the Unix terminal, an HTTP response, a UDP message to another Arvo or a move to one of Arvo’s kernel modules or vanes.
38+
39+We currently have vanes for networking (`%ames`), timers (`%behn`), a filesystem (`%clay`), a terminal driver (`%dill`), an http server (`%eyre`), a functional build system (`%ford`), an application server (`%gall`) and a module for managing private keys (`%jael`).
40+
41+The operating system has a runtime called Vere that performs I/O for your OS. Think about it as the way your Urbit can interact with the outside world. It also handles your event log and runs Nock, our machine language.
42+
43+Nock is like a pico-Lisp with no symbols. It's a homoiconic purely functional machine code with 12 opcodes and one universal datatype, the noun: an acyclic binary tree that is either a number (which can also represent an arbitrarily large bytestream) or a cell, which is a pair of nouns.
44+
45+Hoon, the language in which the operating system is implemented, is a purely functional, statically typed, strictly evaluated programming language that compiles to Nock. It’s a little quirky, but at its core it’s a macro extension of Nock.
46+
47+Perhaps most interesting: our whole stack (except for Nock and Vere) is designed to be updated over the air. This is what makes it possible for Urbit to be a computer for life — it can grow with you.
content/understanding-urbit/urbit-id.mdnew file+67
@@ -0,0 +1,67 @@
1++++
2+title = "Urbit ID"
3+description = "An overview of the Urbit ID system"
4+weight = 4
5+[extra]
6+flatten_pagination = "true"
7+hide_next_title = "true"
8+hide_previous_title = "true"
9++++
10+
11+Every time you post a comment, like something, send a message, or use any app or service, you need an account. (And, behind the scenes, a network address.) Neither of these things belongs to you. The way things are going, they never will. No matter what you’re up to with your phone or laptop, you’re dependent on MEGACORP.
12+
13+<img class="ba mv5 w-100" src="https://media.urbit.org/site/understanding-urbit/urbit-id/urbit-id-megacorp.svg">
14+
15+We don’t like being owned by someone else. We think your identity and wallet should feel like a unique and precious object that you can always carry with you. So we built Urbit ID.
16+
17+<img class="ba mv5 w-100" src="https://media.urbit.org/site/understanding-urbit/urbit-id/urbit-id-cards%402x.png">
18+
19+Urbit ID is meant to feel like a civilizational key. If your Urbit ID were a piece of hardware, you could tap it to unlock a door, swipe it to buy a coffee, and plug it into any computer to log in. It’s a unique, beautiful object that’s both an address and a wallet. It’s a key to a secret club and the ticket to your digital life.
20+
21+Your Urbit ID isn’t a physical object (yet). Instead, it’s even simpler. Your Urbit ID is a name and passkey that’s easy to memorize.
22+
23+If you wake up in the desert, unsure how you got there, you’ll be fine so long as you remember your Urbit ID and passkey. With it, you still own your digital identity and your digital assets. If you remember your friend’s Urbit ID you can always connect and send them money or messages.
24+
25+Urbit ID is a simple, decentralized system for people to own their digital addresses and crypto wallets. Urbit ID is a system owned by its users, designed to last far into the future, that’s live and usable today.
26+
27+Urbit ID is a completely separate system from Urbit OS. It’s finished and deployed to Ethereum already. We designed Urbit ID to log in to Urbit OS, but it can be used for anything.
28+
29+For those curious to understand Urbit ID a bit better, we’ll cover the basics of how Urbit ID works.
30+
31+<img class="ba mv5 w-100" src="https://media.urbit.org/site/understanding-urbit/urbit-id/urbit-id-paperwallet%402x.png">
32+
33+
34+Your Urbit ID is a short, memorable address that anyone can use to connect with you that *doesn’t* depend on any company. It’s an address you own completely and can keep forever.
35+
36+For most people, an Urbit ID looks something like `~tinbel-picpel`. You own it with a simple, memorable key twice its length, like `~winter-paches-palfun-foslup`. Urbit IDs are designed not to have any personally identifying information attached to them at all, sort of like a phone number. Each name and password is automatically generated — so we don’t accidentally leak data when we meet a stranger in the digital world.
37+
38+Your Urbit ID and passkey are all you need to log into Urbit OS and send and receive crypto payments. Together, they’re a simple keypair that are easily memorizable. We think it’s the perfect form factor for ordinary people to take control of their digital lives.
39+
40+<img class="b—black ba mv5 w-100" src="https://media.urbit.org/site/understanding-urbit/urbit-id/urbit-id-address-space-2.svg">
41+
42+We want everyone to own their own identity and wallet. One way to do this would be to build a MEGACORP or a State Department of Urbit. But we prefer decentralized, collectively owned systems. So that’s what we built. Let’s look briefly at how that system works.
43+
44+At a high level, there are three important things to understand about the overall Urbit ID system design.
45+
46+First, there are only so many Urbit IDs, so they cost something. Since they cost something, people are less likely to use them to spam or abuse the network. And, when you meet a stranger with an Urbit ID you know they have some skin in the game.
47+
48+<img class="b—black ba mv5 w-100" src="https://media.urbit.org/site/understanding-urbit/urbit-id/urbit-id-address-space-1.svg">
49+
50+
51+Second, Urbit IDs are distributed by a sponsorship tree. Each sponsor issues a fixed number of addresses. Since there are lots of sponsors, there are lots of ways to get an Urbit ID — not just one central authority.
52+
53+Urbit IDs need a sponsor even after they’re issued, but you can always change sponsors and sponsors can always reject children. This means bad actors can be banned and abusive sponsors can be ignored. We think this strikes a nice balance between accountability and freedom.
54+
55+Finally, galaxies form a senate that can upgrade the logic of the Urbit ID system by majority vote. We think Urbit ID should last for quite a long time, but if it ever needs to be changed, the galaxies can facilitate upgrades. Code may be law, but ultimately we acknowledge that human judgement can’t be factored out.
56+
57+(For a bit more on how all this works, see the [FAQ](@/faq.md).)
58+
59+Urbit ID isn’t just a design. It’s [live and deployed](https://azimuth.network) to the Ethereum blockchain.
60+
61+<img class="b—black ba mv5 w-100" src="https://media.urbit.org/site/understanding-urbit/urbit-id/urbit-id-sigils%402x.png">
62+
63+Urbit IDs are digital property, and we think of the entire address space of Urbit IDs as a vast territory of digital land.
64+
65+The scarcity tree of Urbit ID address space drives decentralization even while the project is young, which is great. If Urbit ID is going to last a long time and succeed as neutral infrastructure, it has to be owned and controlled by a wide variety of people.
66+
67+When we launched the Urbit ID system, in January of 2019, there were a few thousand different star and galaxy holders – stewards of this digital land. Since then, that number is on the rise.
content/understanding-urbit/your-last-computer.mdnew file+38
@@ -0,0 +1,38 @@
1++++
2+title = "Your Last Computer"
3+description = "What Urbit should feel like to an everyday user"
4+weight = 2
5+[extra]
6+flatten_pagination = "true"
7+hide_next_title = "true"
8+hide_previous_title = "true"
9++++
10+
11+This whole ‘simple, durable, yours’ thing may sound good, but what does it add up to? What does it feel like?
12+
13+First, let’s talk about what it should feel like in the future.
14+
15+
16+<img class="mv5 w-100" src="https://media.urbit.org/site/understanding-urbit/your-last-computer/your-last-computer-waves%402x.png">
17+
18+Imagine that you can login from anywhere with one simple, memorable name and password. And when you do, an entire OS appears for you. Inside is your whole digital life. Every conversation you’ve ever had, all your biometric data — every step and heartbeat. Your personal mesh of devices: your doors, your car, your irrigation. All of your communities, every message you’ve shared with friends and family. Every connection you’ve made and every archival piece of data, in one place. Secure and private, forever.
19+
20+You own and control this OS completely. Your system doesn’t live on someone else’s server, so there’s no risk of leaking it in a mass data breach or losing it when a service shuts down. Your Urbit is a sealed, secure, and durable system.
21+
22+<img class="ba mv5 w-100" src="https://media.urbit.org/site/understanding-urbit/your-last-computer/your-last-computer-is-rock%402x.png">
23+
24+We’re on our way to this future, building it step by step, but we’re not there yet. The Urbit of today is much more stripped down.
25+
26+The stripped down Urbit – Urbit OS 1 – starts out as a new kind of social network.
27+
28+Today, each of our social tools does one thing. And so each of our communities end up spanning multiple services. Urbit OS 1 gives you the tools to bring these together into one place.
29+
30+In Urbit OS 1, a community shares a set of modules. (Think of a module like an app without the data lock-in.) One community may choose to chat and share a forum. Another may choose to chat and watch the crypto markets. And yet another may chat, share links, ebooks, and a to-do list. Anyone can develop a module, and anyone can create a community.
31+
32+It’s a simple system for intentional digital communities. A first step away from the ill-formed digital world of today. We like to call it ‘social computing’ — on the surface it feels like a new kind of app, but under the hood it’s an OS. It’s customizable all the way down.
33+
34+We think that a new system like this, even in a simple form, will be a relief from the chaos of the current web. Think of it as a “back to the land” computing movement. If we’re ever going to build new digital cities, they’ll have to start as a few colonies on the frontier.
35+
36+<img class="mv5 w-100" src="https://media.urbit.org/site/understanding-urbit/your-last-computer/your-last-computer-ocean%402x.png">
37+
38+Your Urbit is a simpler computer, a quieter computer, a more private computer. We want it to feel predictable, safe, and reliable — things only a complete, sealed system can do. This, we hope, can get us a world where technology keeps us connected, but doesn’t dominate our lives.
content/posts/2016-10-6-update.md → content/updates/2016-10-6-update.mdrenamed+4−3
@@ -1,10 +1,11 @@
11+++
22title = "~2016.10.6 Update"
33date = 2016-10-06
4−author = "Curtis Yarvin + Galen Wolfe-Pauly"
54description = "September's monthly update slipped into October! But don't worry, it's a good one."
6−[taxonomies]
7−posts = ["Updates"]
5+aliases = ["/posts/2016-10-6-update/", "/blog/2016.10-update/"]
6+[extra]
7+author = "Curtis Yarvin + Galen Wolfe-Pauly"
8+ship = "~sorreg-namtyv + ~ravmel-ropdyl"
89+++
910
1011September's monthly update slipped into October! But don't
content/posts/2016-5-16-roadmap.md → content/updates/2016-5-16-roadmap.mdrenamed+4−4
@@ -1,11 +1,11 @@
11+++
22title = "~2016.5.16 Urbit Roadmap 2016"
33date = 2016-05-16
4−author = "Curtis Yarvin"
54description = "Our near-term goals for the Urbit community, documentation, maturity, utility and governance."
6−search = false
7−[taxonomies]
8−posts = ["Updates"]
5+aliases = ["/posts/2016-5-16-roadmap/"]
6+[extra]
7+author = "Curtis Yarvin"
8+ship = "~sorreg-namtyv"
99+++
1010
1111Urbit is in early beta. It works. It doesn't work well enough to be
content/posts/2016-7-20-update.md → content/updates/2016-7-20-update.mdrenamed+4−3
@@ -1,10 +1,11 @@
11+++
22title = "~2016.7.20 Update"
33date = 2016-07-20
4−author = "Curtis Yarvin"
54description = "It's an amazing feeling to realize that the Internet is fully capable of funding and programming its own replacement."
6−[taxonomies]
7−posts = ["Updates"]
5+aliases = ["/posts/2016-7-20-update/", "/blog/2016.7-update/"]
6+[extra]
7+author = "Curtis Yarvin"
8+ship = "~sorreg-namtyv"
89+++
910
1011First, a huge thank you to everyone who helped make our crowdsale a
content/posts/2016-8-30-update.md → content/updates/2016-8-30-update.mdrenamed+4−3
@@ -1,10 +1,11 @@
11+++
22title = "~2016.8.30 Update"
33date = 2016-08-30
4−author = "Curtis Yarvin"
54description = "Here's August's monthly letter from Tlon, only slightly late."
6−[taxonomies]
7−posts = ["Updates"]
5+aliases = ["/posts/2016-8-30-update/", "/blog/2016.8-update/"]
6+[extra]
7+author = "Curtis Yarvin"
8+ship = "~sorreg-namtyv"
89+++
910
1011Here's August's monthly letter from Tlon, only slightly late.
content/posts/2017-1-30-update.md → content/updates/2017-1-30-update.mdrenamed+4−3
@@ -1,10 +1,11 @@
11+++
22title = "~2017.1.30 Update"
33date = 2017-01-30
4−author = "Curtis Yarvin + Galen Wolfe-Pauly"
54description = "In 2017, we're ready to start making the damn thing useful."
6−[taxonomies]
7−posts = ["Updates"]
5+aliases = ["/posts/2017-1-30-update/", "/blog/2017.1-update/"]
6+[extra]
7+author = "Curtis Yarvin + Galen Wolfe-Pauly"
8+ship = "~sorreg-namtyv + ~ravmel-ropdyl"
89+++
910
1011> TLDR: a real Urbit is an Urbit that does real work. This means nontrivial
content/posts/2017-10-7-update.md → content/updates/2017-10-7-update.mdrenamed+4−3
@@ -1,10 +1,11 @@
11+++
22title = "~2017.10.17 Update"
33date = 2017-10-17
4−author = "tonlur-sarret"
54description = "A short update from the Tlon team for the week of ~2017.10.17."
6−[taxonomies]
7−posts = ["Updates"]
5+aliases = ["/posts/2017-10-17-update/"]
6+[extra]
7+author = ""
8+ship = "tonlur-sarret"
89+++
910
1011`~master-morzod` joins Mars Talks to talk about the Urbit operating system. The core team and contributors talk about how to best teach Urbit. Ted explains Hoon casting and does a full expansion of the Nock macros to draw a better connection between Hoon and Nock.
content/posts/2017-11-14-update.md → content/updates/2017-11-14-update.mdrenamed+4−3
@@ -1,11 +1,12 @@
11+++
22title = "~2017.11.14 Update"
33date = 2017-11-14
4−author = "Curtis Yarvin + Galen Wolfe-Pauly"
54description = "As usual, we're guilty of wanting to write code more than prose."
65slug = "2017-11-14-update"
7−[taxonomies]
8−posts = ["Updates"]
6+aliases = ["/posts/2017-11-14-update/", "/blog/2017.11-update/"]
7+[extra]
8+author = "Curtis Yarvin + Galen Wolfe-Pauly"
9+ship = "~sorreg-namtyv + ~ravmel-ropdyl"
910+++
1011
1112As usual, we're guilty of wanting to write code more than prose. Last time we
content/posts/2017-12-16-update.md → content/updates/2017-12-16-update.mdrenamed+4−3
@@ -1,11 +1,12 @@
11+++
22title = "~2017.12.16 Update"
33date = 2017-12-16
4−author = "~rovnys-ricfer"
54description = "A short update from the Tlon team for the week of ~2017.12.16."
65slug = "2017-12-16-update"
7−[taxonomies]
8−posts = ["Updates"]
6+aliases = ["/posts/2017-12-16-update/"]
7+[extra]
8+author = ""
9+ship = "~rovnys-ricfer"
910+++
1011
1112Greetings, intrepid Martians. Thanks for bearing with us these past couple weeks as we pushed through the breach into a new continuity era. It's been a bit of a bumpy ride, but the turbulence is finally beginning to calm down.
content/posts/2017-12-2-update.md → content/updates/2017-12-2-update.mdrenamed+4−4
@@ -1,10 +1,11 @@
11+++
22title = "~2017.12.2 Update"
33date = 2017-12-02
4−author = "~rovnys-ricfer"
54description = "A short update from the Tlon team for the week of ~2017.12.2."
6−[taxonomies]
7−posts = ["Updates"]
5+aliases = ["/posts/2017-12-2-update/"]
6+[extra]
7+author = ""
8+ship = "~rovnys-ricfer"
89+++
910
1011This week Tlon has mostly focused on testing the upcoming continuity breach. We also fixed some compiler problems, made
@@ -72,4 +73,3 @@ There was also a [new episode of Mars Talk](https://youtu.be/1xcjnBu6qFo) with T
7273
7374Those are the highlights from this week. Back to breaching!
7475
75−`~rovnys-ricfer`
content/posts/2017-12-22-update.md → content/updates/2017-12-22-update.mdrenamed+4−3
@@ -1,11 +1,12 @@
11+++
22title = "~2017.12.22 Update"
33date = 2017-12-22
4−author = "~rovnys-ricfer"
54description = "A short update from the Tlon team for the week of ~2017.12.22."
65slug = "2017-12-22-update"
7−[taxonomies]
8−posts = ["Updates"]
6+aliases = ["/posts/2017-12-22-update/"]
7+[extra]
8+author = ""
9+ship = "~rovnys-ricfer"
910+++
1011
1112This past week:
content/posts/2017-3-1-update.md → content/updates/2017-3-1-update.mdrenamed+4−3
@@ -1,10 +1,11 @@
11+++
22title = "~2017.3.1 Update"
33date = 2017-03-01
4−author = "Curtis Yarvin + Galen Wolfe-Pauly"
54description = "Arvo is done, there's a prototype in progress, and more."
6−[taxonomies]
7−posts = ["Updates"]
5+aliases = ["/posts/2017-3-1-update/", "/blog/2017.3.1-update/"]
6+[extra]
7+author = "Curtis Yarvin + Galen Wolfe-Pauly"
8+ship = "~sorreg-namtyv + ~ravmel-ropdyl"
89+++
910
1011*Curtis* (`~sorreg-namtyv`) has reached code-complete (compiling but not tested) on
content/posts/2017-4-17-update.md → content/updates/2017-4-17-update.mdrenamed+4−3
@@ -1,10 +1,11 @@
11+++
22title = "~2017.4.17 Update"
33date = 2017-04-17
4−author = "The Urbit team"
54description = "Individual updates from everyone"
6−[taxonomies]
7−posts = ["Updates"]
5+aliases = ["/posts/2017-4-17-update/", "/blog/2017.4-update/"]
6+[extra]
7+author = "The Urbit team"
8+ship = ""
89+++
910
1011Here's our April update, covering the last month or so. I've taken people's own
content/posts/2017-5-11-roadmap.md → content/updates/2017-5-11-roadmap.mdrenamed+4−3
@@ -1,10 +1,11 @@
11+++
22title = "~2017.5.11 Roadmap"
33date = 2017-05-11
4−author = "Curtis Yarvin + Galen Wolfe-Pauly"
54description = "From AVP to MVP."
6−[taxonomies]
7−posts = ["Updates"]
5+aliases = ["/posts/2017-5-11-roadmap/", "/blog/2017.5-plans/"]
6+[extra]
7+author = "Curtis Yarvin + Galen Wolfe-Pauly"
8+ship = "~sorreg-namtyv + ~ravmel-ropdyl"
89+++
910
1011Urbit today (May 2017) is a working proof-of-concept. The Urbit test network
content/posts/2017-8-11-update.md → content/updates/2017-8-11-update.mdrenamed+5−4
@@ -1,10 +1,11 @@
11+++
22title = "~2017.8.11 Update"
33date = 2017-08-11
4−author = "Curtis Yarvin + Galen Wolfe-Pauly"
54description = "A short update from the Tlon team for the week of ~2017.8.11."
6−[taxonomies]
7−posts = ["Updates"]
5+aliases = ["/posts/2017-8-11-update/"]
6+[extra]
7+author = "Curtis Yarvin + Galen Wolfe-Pauly"
8+ship = "~sorreg-namtyv + ~ravmel-ropdyl"
89+++
910
1011Usually after a crowdsale we rethink our direction a little. Sorry for the
@@ -22,7 +23,7 @@ There are two sides to this effort: design/usability and stability.
2223## Design and usability
2324
2425
25−### Making static publis hing static
26+### Making static publishing static
2627
2728`:tree`, the Urbit publishing framework, can be painfully slow. In part, this
2829is because we do too much work client-side to put pages together. It would make
content/posts/2017-9-23-update.md → content/updates/2017-9-23-update.mdrenamed+4−3
@@ -1,10 +1,11 @@
11+++
22title = "~2017.9.23 Update"
33date = 2017-09-23
4−author = "tonlur-sarret"
54description = "A short update from the Tlon team for the week of ~2017.9.23."
6−[taxonomies]
7−posts = ["Updates"]
5+aliases = ["/posts/2017-9-23-update/"]
6+[extra]
7+author = ""
8+ship = "tonlur-sarret"
89+++
910
1011Galen and Curtis publish Tlon's plans for bootstrapping the Urbit PKI on the Ethereum blockchain. Ted creates a cheat sheet for Hoon. An Urbit podcast is born. The community talks about searching filesystems and cryptographic hashes.
content/posts/2017-9-29-update.md → content/updates/2017-9-29-update.mdrenamed+4−3
@@ -1,10 +1,11 @@
11+++
22title = "~2017.9.29 Update"
33date = 2017-09-29
4−author = "tonlur-sarret"
54description = "A short update from the Tlon team for the week of ~2017.9.29."
6−[taxonomies]
7−posts = ["Updates"]
5+aliases = ["/posts/2017-9-29-update/"]
6+[extra]
7+author = ""
8+ship = "tonlur-sarret"
89+++
910
1011Galen and Curtis comment on Urbit and the blockchain wars. Curtis and a new fan discuss the ideal Urbit virtual machine. `~poldec-tonteg` joins Mars Talks to spread the gospel of Urbit web development. A new contributor makes it easier to sync Urbit files during development.
content/posts/2018-1-13-update.md → content/updates/2018-1-13-update.mdrenamed+4−3
@@ -1,10 +1,11 @@
11+++
22title = "~2018.1.13 Update"
33date = 2018-01-13
4−author = "~rovnys-ricfer"
54description = "A short update from the Tlon team for the week of ~2018.1.13."
6−[taxonomies]
7−posts = ["Updates"]
5+aliases = ["/posts/2018-1-13-update/"]
6+[extra]
7+author = ""
8+ship = "~rovnys-ricfer"
89+++
910
1011This week:
content/posts/2018-1-6-update.md → content/updates/2018-1-6-update.mdrenamed+4−3
@@ -1,10 +1,11 @@
11+++
22title = "~2018.1.6 Update"
33date = 2018-01-06
4−author = "~rovnys-ricfer"
54description = "A short update from the Tlon team for the week of ~2018.1.6."
6−[taxonomies]
7−posts = ["Updates"]
5+aliases = ["/posts/2018-1-6-update/"]
6+[extra]
7+author = ""
8+ship = "~rovnys-ricfer"
89+++
910
1011Short week this week as we recover from the holidays. The biggest news item is that our fork of MyEtherWallet is now
content/posts/2018-10-12-update.md → content/updates/2018-10-12-update.mdrenamed+4−5
@@ -1,11 +1,12 @@
11+++
22title = "~2018.10.12 Update"
33date = 2018-10-12
4−author = "~lodleb-ritrul"
54description = "A short update from the Tlon team for the week of ~2018.10.12."
65slug = "2018-10-12-update"
7−[taxonomies]
8−posts = ["Updates"]
6+aliases = ["/posts/2018-10-12-update/"]
7+[extra]
8+author = "Rob"
9+ship = "~lodleb-ritrul"
910+++
1011
1112![](https://media.urbit.org/fora/updates/2018.10.12-update.png)
@@ -57,5 +58,3 @@ Ethereum testnet, so now we can do our best to break it. Things are about to get
5758real.
5859
5960See you next week.
60−
61−Rob `~lodleb-ritrul`
content/posts/2018-10-24-update.md → content/updates/2018-10-24-update.mdrenamed+5−6
@@ -1,11 +1,12 @@
11+++
22title = "~2018.10.24 Update"
33date = 2018-10-24
4−author = "~lodleb-ritrul"
54description = "A short update from the Tlon team for the week of ~2018.10.24."
65slug = "2018-10-24-update"
7−[taxonomies]
8−posts = ["Updates"]
6+aliases = ["/posts/2018-10-24-update/"]
7+[extra]
8+author = "Rob"
9+ship = "~lodleb-ritrul"
910+++
1011
1112Here's a short update from the team at Tlon for the week of `~2018.10.24`:
@@ -34,6 +35,4 @@ benefited from the talents of *Elliot* `~littel-ponnys`. A test version of this
3435new vane can now hold a connection open and send a steady stream of HTTP data to
3536the client. Big things have small beginnings...
3637
37−See you next week.
38−
39−Rob `~lodleb-ritrul`
38+See you next week.
content/posts/2018-11-20-update.md → content/updates/2018-11-20-update.mdrenamed+5−6
@@ -1,11 +1,12 @@
11+++
22title = "~2018.11.20 Update"
33date = 2018-11-20
4−author = "~lodleb-ritrul"
54description = "A short update from the Tlon team for the week of ~2018.11.20."
65slug = "2018-11-20-update"
7−[taxonomies]
8−posts = ["Updates"]
6+aliases = ["/posts/2018-11-20-update/"]
7+[extra]
8+author = "Rob"
9+ship = "~lodleb-ritrul"
910+++
1011
1112Here's a short update from the team at Tlon for the week of `~2018.11.20`:
@@ -49,6 +50,4 @@ Check out the details in Tlon's
4950[Urbit Proposal](https://fora.urbit.org/proposals/posts/~2018.11.8..19.31.59..ba77~/)
5051on the matter.
5152
52−See you next week.
53−
54−*Rob* `~lodleb-ritrul`
53+See you next week.
content/posts/2018-11-6-update.md → content/updates/2018-11-6-update.mdrenamed+4−5
@@ -1,10 +1,11 @@
11+++
22title = "~2018.11.6 Update"
33date = 2018-11-06
4−author = "~lodleb-ritrul"
54description = "A short update from the Tlon team for the week of ~2018.11.6."
6−[taxonomies]
7−posts = ["Updates"]
5+aliases = ["/posts/2018-11-6-update/"]
6+[extra]
7+author = "Rob"
8+ship = "~lodleb-ritrul"
89+++
910
1011Here's a short update from the team at Tlon for the week of `~2018.11.6`:
@@ -42,5 +43,3 @@ profiler bugs with their combined brilliance. It's unlikely that our heroes will
4243find any Balrogs, but you can never be too sure.
4344
4445It won't be long now, Martians.
45−
46−*Rob* `lodleb-ritrul`
content/posts/2018-12-18-update.md → content/updates/2018-12-18-update.mdrenamed+5−6
@@ -1,11 +1,12 @@
11+++
22title = "~2018.12.18 Update"
33date = 2018-12-18
4−author = "~lodleb-ritrul"
54description = "A short update from the Tlon team for the week of ~2018.12.18."
65slug = "2018-12-18-update"
7−[taxonomies]
8−posts = ["Updates"]
6+aliases = ["/posts/2018-12-18-update/"]
7+[extra]
8+author = "Rob"
9+ship = "~lodleb-ritrul"
910+++
1011
1112Here's a short update from the team at Tlon for the week of `~2018.12.18`:
@@ -53,6 +54,4 @@ cryptographic ownership of your address space. If you haven't received an email
5354a) check your spam folder and, if that doesn't work, b) send an email to
5455[registration@urbit.org](mailto:registration@urbit.org).
5556
56−See you next week.
57−
58−Rob `~lodleb-ritrul`
57+See you next week.
content/posts/2018-2-17-update.md → content/updates/2018-2-17-update.mdrenamed+4−3
@@ -1,10 +1,11 @@
11+++
22title = "~2018.2.17 Update"
33date = 2018-02-17
4−author = "~tonlur-sarret"
54description = "A short update from the Tlon team for the week of ~2018.2.17."
6−[taxonomies]
7−posts = ["Updates"]
5+aliases = ["/posts/2018-2-17-update/"]
6+[extra]
7+ship = "~tonlur-sarret"
8+author = ""
89+++
910
1011Here's what we've all been up to this week:
content/posts/2018-2-24-update.md → content/updates/2018-2-24-update.mdrenamed+4−3
@@ -1,10 +1,11 @@
11+++
22title = "~2018.2.24 Update"
33date = 2018-02-24
4−author = "~tonlur-sarret"
54description = "A short update from the Tlon team for the week of ~2018.2.24."
6−[taxonomies]
7−posts = ["Updates"]
5+aliases = ["/posts/2018-2-24-update/"]
6+[extra]
7+ship = "~tonlur-sarret"
8+author = ""
89+++
910
1011This week was another busy one at the Tlon office. Here's what we were up to.
content/posts/2018-2-5-update.md → content/updates/2018-2-5-update.mdrenamed+4−4
@@ -1,10 +1,11 @@
11+++
22title = "~2018.2.5 Update"
33date = 2018-02-05
4−author = "~rovnys-ricfer"
54description = "A short update from the Tlon team for the week of ~2018.2.5."
6−[taxonomies]
7−posts = ["Updates"]
5+aliases = ["/posts/2018-2-5-update/"]
6+[extra]
7+author = ""
8+ship = "~rovnys-ricfer"
89+++
910
1011*Galen* `~ravmel-ropdyl`, *Jimmy* `~haptyl-wanwes`, and *Chris* `~sigtus-hossyn` worked on the upcoming frontend overhaul, including the new homepage, the _Collections_ and _Streams_ apps, and the primer. *Ted* `~rovnys-ricfer` and *Anton* `~pittyp-datfyn` continued to work on Ford.
@@ -23,4 +24,3 @@ posts = ["Updates"]
2324
2425On [Mars Talk Episode 19](https://www.youtube.com/watch?v=q3Fjnv0RcR0) (our 20th episode!) this week, Keaton and Ted explained Ford, Urbit's functional reactive build system.
2526
26−`~rovnys-ricfer`
content/posts/2018-2-9-update.md → content/updates/2018-2-9-update.mdrenamed+4−3
@@ -1,10 +1,11 @@
11+++
22title = "~2018.2.9 Update"
33date = 2018-02-09
4−author = "~tonlur-sarret"
54description = "A short update from the Tlon team for the week of ~2018.2.9."
6−[taxonomies]
7−posts = ["Updates"]
5+aliases = ["/posts/2018-2-9-update/"]
6+[extra]
7+ship = "~tonlur-sarret"
8+author = ""
89+++
910
1011*Galen* `~ravmel-ropdyl`, *Jimmy* `~haptyl-wanwes`, and *Chris* `~sigtus-hossyn` continue work on the new Urbit front-end.
content/posts/2018-3-24-update.md → content/updates/2018-3-24-update.mdrenamed+6−5
@@ -1,10 +1,11 @@
11+++
2−title = "~2018.4.7 Update"
3−date = 2018-04-07
4−author = "~tonlur-sarret"
2+title = "~2018.3.24 Update"
3+date = 2018-03-24
54description = "A short update from the Tlon team for the week of ~2018.4.7."
6−[taxonomies]
7−posts = ["Updates"]
5+aliases = ["/posts/2018-3-24-update/"]
6+[extra]
7+ship = "~tonlur-sarret"
8+author = ""
89+++
910
1011We've had a busy past few weeks here at Tlon -- here's an update:
content/posts/2018-3-5-update.md → content/updates/2018-3-5-update.mdrenamed+4−3
@@ -1,10 +1,11 @@
11+++
22title = "~2018.3.5 Update"
33date = 2018-03-05
4−author = "~rovnys-ricfer"
54description = "A short update from the Tlon team for the week of ~2018.3.5."
6−[taxonomies]
7−posts = ["Updates"]
5+aliases = ["/posts/2018-3-5-update/"]
6+[extra]
7+author = ""
8+ship = "~rovnys-ricfer"
89+++
910
1011*Galen* `~ravmel-ropdyl`, *Anthony* `~poldec-tonteg`, *Chris* `~sigtus-hossyn`, *Jimmy* `~haptyl-wanwes`, and *Anton*
content/posts/2018-4-14-update.md → content/updates/2018-4-14-update.mdrenamed+4−3
@@ -1,10 +1,11 @@
11+++
22title = "~2018.4.14 Update"
33date = 2018-04-14
4−author = "~tonlur-sarret"
54description = "A short update from the Tlon team for the week of ~2018.4.14."
6−[taxonomies]
7−posts = ["Updates"]
5+aliases = ["/posts/2018-4-14-update/"]
6+[extra]
7+ship = "~tonlur-sarret"
8+author = ""
89+++
910
1011Replacing the internet is hard. Luckily, we have great people helping us do it. Here's what's new this week in Urbit:
content/posts/2018-4-7-update.md → content/updates/2018-4-7-update.mdrenamed+4−3
@@ -1,10 +1,11 @@
11+++
22title = "~2018.4.7 Update"
33date = 2018-04-07
4−author = "~tonlur-sarret"
54description = "A short update from the Tlon team for the week of ~2018.4.7."
6−[taxonomies]
7−posts = ["Updates"]
5+aliases = ["/posts/2018-4-7-update/"]
6+[extra]
7+ship = "~tonlur-sarret"
8+author = ""
89+++
910
1011As always, the Urbit community has been working hard this week to replace the internet. Here's a summary:
content/posts/2018-5-16-update.md → content/updates/2018-5-16-update.mdrenamed+4−4
@@ -1,10 +1,11 @@
11+++
22title = "~2018.5.16 Update"
33date = 2018-05-16
4−author = "~tonlur-sarret"
54description = "A short update from the Tlon team for the week of ~2018.5.16."
6−[taxonomies]
7−posts = ["Updates"]
5+aliases = ["/posts/2018-5-16-update/"]
6+[extra]
7+ship = "~tonlur-sarret"
8+author = ""
89+++
910
1011Summer is around the corner, and the community has been working hard to make Urbit real. Here's an update on what new and exciting things have been happening:
@@ -47,4 +48,3 @@ year.
4748
4849Overall, we're making progress. More next week!
4950
50−`~tonlur-sarret`
content/posts/2018-5-23-update.md → content/updates/2018-5-23-update.mdrenamed+4−4
@@ -1,10 +1,11 @@
11+++
22title = "~2018.5.23 Update"
33date = 2018-05-23
4−author = "~tonlur-sarret"
54description = "A short update from the Tlon team for the week of ~2018.5.23."
6−[taxonomies]
7−posts = ["Updates"]
5+aliases = ["/posts/2018-5-23-update/"]
6+[extra]
7+ship = "~tonlur-sarret"
8+author = ""
89+++
910
1011Here's a short update from Tlon for the week of `~2018.5.22`:
@@ -60,4 +61,3 @@ Overall, summer is getting closer, and we're excited about the work that's getti
6061
6162See you on Friday!
6263
63−`~tonlur-sarret`
content/posts/2018-5-29-update.md → content/updates/2018-5-29-update.mdrenamed+4−3
@@ -1,10 +1,11 @@
11+++
22title = "There is no Urbit ICO"
33date = 2018-05-29
4−author = "~Erik Newton"
54description = "It's a dangerous internet out there, don't get scammed."
6−[taxonomies]
7−posts = ["Updates"]
5+aliases = ["/posts/2018-5-29-update/"]
6+[extra]
7+author = "Erik Newton"
8+ship = "~patnes-rigtyn"
89+++
910
1011FYI: We are not conducting an ICO of any kind. Anything you have heard to the
content/posts/2018-5-30-update.md → content/updates/2018-5-30-update.mdrenamed+4−3
@@ -1,10 +1,11 @@
11+++
22title = "~2018.5.30 Update"
33date = 2018-05-30
4−author = "~tonlur-sarret"
54description = "A short update from the Tlon team for the week of ~2018.5.30."
6−[taxonomies]
7−posts = ["Updates"]
5+aliases = ["/posts/2018-5-30-update/"]
6+[extra]
7+ship = "~tonlur-sarret"
8+author = ""
89+++
910
1011Here's an update from the team at Tlon for the week of `~2018.5.30`:
content/posts/2018-6-14-update.md → content/updates/2018-6-14-update.mdrenamed+5−6
@@ -1,10 +1,11 @@
11+++
22title = "~2018.6.14 Update"
33date = 2018-06-14
4−author = "~tonlur-sarret"
54description = "A short update from the Tlon team for the week of ~2018.6.14."
6−[taxonomies]
7−posts = ["Updates"]
5+aliases = ["/posts/2018-6-14-update/"]
6+[extra]
7+author = "~tonlur-sarret"
8+ship = "~poldec-tonteg"
89+++
910
1011Here's a short update from the team at Tlon for the week of `~2018.6.14`:
@@ -66,6 +67,4 @@ There's also a third set of Hoon exercises which Josh posted to Fora
6667
6768No Mars Talk this week. Ted and Josh will return next week to talk about treaps, and where we're using them in Arvo.
6869
69−That's it for this week!
70−
71−`~tonlur-sarret` and `~poldec-tonteg`
70+That's it for this week!
content/posts/2018-6-21-update.md → content/updates/2018-6-21-update.mdrenamed+4−4
@@ -1,10 +1,11 @@
11+++
22title = "~2018.6.21 Update"
33date = 2018-06-21
4−author = "~tonlur-sarret"
54description = "A short update from the Tlon team for the week of ~2018.6.21."
6−[taxonomies]
7−posts = ["Updates"]
5+aliases = ["/posts/2018-6-21-update/"]
6+[extra]
7+author = "~tonlur-sarret"
8+ship = "~poldec-tonteg"
89+++
910
1011Here's a short update from the team at Tlon for the week of `~2018.6.21`
@@ -57,4 +58,3 @@ feel free to write us a comment below.
5758
5859May `~zod` be with you all. Have a great rest of your week.
5960
60−`~tonlur-sarret` and `~poldec-tonteg`
content/posts/2018-6-6-update.md → content/updates/2018-6-6-update.mdrenamed+4−3
@@ -1,10 +1,11 @@
11+++
22title = "~2018.6.6 Update"
33date = 2018-06-06
4−author = "~tonlur-sarret"
54description = "A short update from the Tlon team for the week of ~2018.6.6."
6−[taxonomies]
7−posts = ["Updates"]
5+aliases = ["/posts/2018-6-6-update/"]
6+[extra]
7+ship = "~tonlur-sarret"
8+author = ""
89+++
910
1011Here's a short update from the team at Tlon for the week of `~2018.6.6`:
content/posts/2018-7-13-update.md → content/updates/2018-7-13-update.mdrenamed+4−5
@@ -1,10 +1,11 @@
11+++
22title = "~2018.7.13 Update"
33date = 2018-07-13
4−author = "~tonlur-sarret"
54description = "A short update from the Tlon team for the week of ~2018.7.13."
6−[taxonomies]
7−posts = ["Updates"]
5+aliases = ["/posts/2018-7-13-update/"]
6+[extra]
7+author = "~tonlur-sarret"
8+ship = "~poldec-tonteg"
89+++
910
1011Here's a short update from the team at Tlon for the week of `~2018.7.13`:
@@ -59,8 +60,6 @@ The Constitution/Keys team -- *Mark* `~palfun-foslup`, *Curtis* `~sorreg-namtyv`
5960
6061We're alive and growing.
6162
62−`~tonlur-sarret` and `~poldec-tonteg`
63−
6463---
6564
6665Photo credit: [Superstudio](https://en.wikipedia.org/wiki/Superstudio)
content/posts/2018-7-20-update.md → content/updates/2018-7-20-update.mdrenamed+4−4
@@ -1,10 +1,11 @@
11+++
22title = "~2018.7.20 Update"
33date = 2018-07-20
4−author = "~tonlur-sarret"
54description = "A short update from the Tlon team for the week of ~2018.7.20."
6−[taxonomies]
7−posts = ["Updates"]
5+aliases = ["/posts/2018-7-20-update/"]
6+[extra]
7+author = "~tonlur-sarret"
8+ship = "~poldec-tonteg"
89+++
910
1011Here's a short update from the team at Tlon for the week of `~2018.7.20`:
@@ -50,7 +51,6 @@ for date/time and hashing (PR's [here](https://github.com/urbit/docs/pulls)).
5051
5152Keep on Hooning, Martians. See you in `/urbit-meta`.
5253
53−`~tonlur-sarret` and `~poldec-tonteg`
5454
5555---
5656
content/posts/2018-7-3-update.md → content/updates/2018-7-3-update.mdrenamed+4−4
@@ -1,10 +1,11 @@
11+++
22title = "~2018.7.3 Update"
33date = 2018-07-03
4−author = "~tonlur-sarret"
54description = "A short update from the Tlon team for the week of ~2018.7.3."
6−[taxonomies]
7−posts = ["Updates"]
5+aliases = ["/posts/2018-7-3-update/"]
6+[extra]
7+author = "~tonlur-sarret"
8+ship = "~poldec-tonteg"
89+++
910
1011![](https://media.urbit.org/fora/updates/~2018.7.2-Update-1.jpg)
@@ -62,4 +63,3 @@ latest pull requests are [here](https://github.com/urbit/docs/pulls).
6263
6364And that's the way it is. Have a great week!
6465
65−`~tonlur-sarret` and `~poldec-tonteg`
content/posts/2018-7-30-update.md → content/updates/2018-7-30-update.mdrenamed+4−4
@@ -1,10 +1,11 @@
11+++
22title = "~2018.7.30 Update"
33date = 2018-07-30
4−author = "~tonlur-sarret"
54description = "A short update from the Tlon team for the week of ~2018.7.30."
6−[taxonomies]
7−posts = ["Updates"]
5+aliases = ["/posts/2018-7-30-update/"]
6+[extra]
7+author = "~tonlur-sarret"
8+ship = "~poldec-tonteg"
89+++
910
1011Here's a short update from the team at Tlon for the week of `~2018.7.30`:
@@ -56,7 +57,6 @@ Also: we'll be hosting another party this month on Friday, August 17th. Save the
5657
5758Okay! Have a great week.
5859
59−`~tonlur-sarret` and `~poldec-tonteg`
6060
6161---
6262
content/posts/2018-8-23-update.md → content/updates/2018-8-23-update.mdrenamed+4−5
@@ -1,10 +1,11 @@
11+++
22title = "~2018.8.23 Update"
33date = 2018-08-23
4−author = "~poldec-tonteg"
54description = "A short update from the Tlon team for the week of ~2018.8.23."
6−[taxonomies]
7−posts = ["Updates"]
5+aliases = ["/posts/2018-8-23-update/"]
6+[extra]
7+author = "Anthony"
8+ship = "~poldec-tonteg"
89+++
910
1011![](https://media.urbit.org/fora/updates/2018.8.23-update-1.jpeg)
@@ -80,5 +81,3 @@ very soon. We hope that the new docs and friendlier Goon will make the task of
8081learning Hoon less of a task and more of an adventure.
8182
8283Next year on Mars!
83−
84−*Anthony* `~poldec-tonteg`
content/posts/2018-8-30-update.md → content/updates/2018-8-30-update.mdrenamed+4−5
@@ -1,10 +1,11 @@
11+++
22title = "~2018.8.30 Update"
33date = 2018-08-30
4−author = "~poldec-tonteg"
54description = "A short update from the Tlon team for the week of ~2018.8.30."
6−[taxonomies]
7−posts = ["Updates"]
5+aliases = ["/posts/2018-8-30-update/"]
6+[extra]
7+author = "Anthony"
8+ship = "~poldec-tonteg"
89+++
910
1011![](https://media.urbit.org/fora/updates/2018.8.29-update-1.jpg)
@@ -52,5 +53,3 @@ happy to have him help us teach the world to hoon. Come and say hi to him on
5253`%talk`, or even better, ask him to help you with your hoon homework ;)
5354
5455Next year on Mars!
55−
56−*Anthony* `~poldec-tonteg`
content/posts/2018-8-8-update.md → content/updates/2018-8-8-update.mdrenamed+4−5
@@ -1,10 +1,11 @@
11+++
22title = "~2018.8.8 Update"
33date = 2018-08-08
4−author = "~tonlur-sarret"
54description = "A short update from the Tlon team for the week of ~2018.8.8."
6−[taxonomies]
7−posts = ["Updates"]
5+aliases = ["/posts/2018-8-8-update/"]
6+[extra]
7+author = "~tonlur-sarret"
8+ship = "~poldec-tonteg"
89+++
910
1011Here's a short update from the team at Tlon for the week of `~2018.8.8`:
@@ -51,8 +52,6 @@ Lastly: We're throwing a party next Friday, August 17th. Link: [meetup.com: Urbi
5152
5253See you on Talk, Martians.
5354
54−`~tonlur-sarret` and `~poldec-tonteg`
55−
5655---
5756
5857Photo credit: Tlon
content/posts/2018-9-11-update.md → content/updates/2018-9-11-update.mdrenamed+4−5
@@ -1,10 +1,11 @@
11+++
22title = "~2018.9.11 Update"
33date = 2018-09-11
4−author = "~poldec-tonteg"
54description = "A short update from the Tlon team for the week of ~2018.9.11."
6−[taxonomies]
7−posts = ["Updates"]
5+aliases = ["/posts/2018-9-11-update/"]
6+[extra]
7+author = "Anthony"
8+ship = "~poldec-tonteg"
89+++
910
1011I've gone short on words and long on links for this update, since sometimes the
@@ -56,5 +57,3 @@ way. They are joined by the newest edition to Tlon: *Jared* `~nidsut-tomdun`.
5657`%amesing` over the entire globe. Say `|hi`!
5758
5859Next year on Mars!
59−
60−*Anthony* `~poldec-tonteg`
content/posts/2019-2-11-update.md → content/updates/2019-2-11-update.mdrenamed+5−8
@@ -1,10 +1,11 @@
11+++
22title = "~2019.2.11 Update"
33date = 2019-02-11
4−author = "~hidrel-fabtel"
54description = "A short update from the Tlon team for the week of ~2019.2.11."
6−[taxonomies]
7−posts = ["Updates"]
5+aliases = ["/posts/2019-2-11-update/"]
6+[extra]
7+author = "Morgan"
8+ship = "~hidrel-fabtel"
89+++
910Here’s a short update from the team for the week of `~2019.2.11`:
1011
@@ -32,8 +33,4 @@ Palladium, a magazine on governance futurism, talk about Urbit through the secon
3233
3334## Meetups
3435
35−If you're in San Francisco on March 1st, we're hosting [an AMA with Galen Wolfe-Pauly](https://www.meetup.com/urbit-sf/events/259144802/), Tlon's CEO.
36−
37−<br>
38−
39−*Morgan* `~hidrel-fabtel`
36+If you're in San Francisco on March 1st, we're hosting [an AMA with Galen Wolfe-Pauly](https://www.meetup.com/urbit-sf/events/259144802/), Tlon's CEO.
content/posts/2019-2-25-update.md → content/updates/2019-2-25-update.mdrenamed+5−8
@@ -1,10 +1,11 @@
11+++
22title = "~2019.2.25 Update"
33date = 2019-02-25
4−author = "~hidrel-fabtel"
54description = "A short update from the Tlon team for the week of ~2019.2.25."
6−[taxonomies]
7−posts = ["Updates"]
5+aliases = ["/posts/2019-2-25-update/"]
6+[extra]
7+author = "Morgan"
8+ship = "~hidrel-fabtel"
89+++
910Here’s a short update from the team for the week of `~2019.2.25`:
1011
@@ -28,8 +29,4 @@ The Hoon School pilot begins Monday. We've received a lot of interest since anno
2829
2930If you're in Austin on March 8th, *Anthony* `~poldec-tonteg` and *Alex* `~mignyt-mogseb` are hosting [a meetup](https://www.meetup.com/urbit-sf/events/259307805/) at [Garage](https://www.garagetx.com/) from 5–7pm.
3031
31−In San Francisco on March 26th, *Galen* `~ravmel-ropdyl` is speaking on [a panel](https://www.eventbrite.com/e/the-future-of-free-speech-online-registration-57429323653) hosted by [Lincoln Network](https://joinlincoln.org/) at [Galvanize](https://www.galvanize.com/campuses/san-francisco).
32−
33−<br>
34−
35−*Morgan* `~hidrel-fabtel`
32+In San Francisco on March 26th, *Galen* `~ravmel-ropdyl` is speaking on [a panel](https://www.eventbrite.com/e/the-future-of-free-speech-online-registration-57429323653) hosted by [Lincoln Network](https://joinlincoln.org/) at [Galvanize](https://www.galvanize.com/campuses/san-francisco).
content/posts/2019-2-26-network-update.md → content/updates/2019-2-26-network-update.mdrenamed+4−7
@@ -1,10 +1,11 @@
11+++
22title = "~2019.2.26 Network Update"
33date = 2019-02-26
4−author = "~poldec-tonteg"
54description = "A short update on network status as of ~2019.2.26."
6−[taxonomies]
7−posts = ["Updates"]
5+aliases = ["/posts/2019-2-26-network-update/"]
6+[extra]
7+author = "Anthony"
8+ship = "~poldec-tonteg"
89+++
910![](https://media.urbit.org/site/posts/updates/~2019.2.26-update-1.jpg)
1011
@@ -33,7 +34,3 @@ Arvo isn’t ready for prime time, but you can definitely experiment with it. Fo
3334### Join Hoon School
3435
3536If you’re interested in learning how to write software for Urbit, we’ll be running online classes to teach the language, Hoon, and more in coming months. If you’re interested to join, [shoot us an email](mailto:support@urbit.org) and we’ll add you to the waitlist.
36−
37−<br>
38−
39−*Anthony* `~poldec-tonteg`
content/posts/2019-2-4-update.md → content/updates/2019-2-4-update.mdrenamed+5−6
@@ -1,10 +1,11 @@
11+++
22title = "~2019.2.5 Update"
33date = 2019-02-05
4−author = "~lodleb-ritrul"
54description = "A short update from the Tlon team for the week of ~2019.2.5."
6−[taxonomies]
7−posts = ["Updates"]
5+aliases = ["/posts/2019-2-5-update/"]
6+[extra]
7+author = "Rob"
8+ship = "~lodleb-ritrul"
89+++
910Here's a short update from the team at Tlon for the week of `~2019.2.5`:
1011
@@ -22,6 +23,4 @@ An integration of this size is not without its difficulties, though. ~zod labore
2223
2324BONUS: *Mark* `~palfun-foslup` aka The Dutch Destroyer decided that full bitcoinification was not happening fast enough for his liking and submitted a PR that added bitcoin rpc support to Arvo. Watch the demo [here](https://twitter.com/mdfang/status/1092171862178701313).
2425
25−See you next week.
26−
27−*Rob* `~lodleb-ritrul`
26+See you next week.
content/posts/2019-3-11-update.md → content/updates/2019-3-11-update.mdrenamed+4−7
@@ -1,10 +1,11 @@
11+++
22title = "~2019.3.11 Update"
33date = 2019-03-11
4−author = "~hidrel-fabtel"
54description = "A short update from the Tlon team for the week of ~2019.3.11."
6−[taxonomies]
7−posts = ["Updates"]
5+aliases = ["/posts/2019-3-11-update/"]
6+[extra]
7+author = "Morgan"
8+ship = "~hidrel-fabtel"
89+++
910Here’s a short update from the team for the week of `~2019.3.11`:
1011
@@ -23,7 +24,3 @@ The `@p` bug [is solved](https://github.com/urbit/arvo/pull/1110), thanks to [@m
2324*Anthony* `~poldec-tonteg`, *Jared* `~nidsut-tomdun`, and *Morgan* `~hidrel-fabtel` made progress on a plan to upgrade our open-source development processes. We’re moving toward making Tlon’s work more public and making it easier for contributors to get involved. As a first step, we’ve assigned maintainers for each of our repositories, and both repository guidelines and a new proposal system are in the works. *Morgan* `~hidrel-fabtel` also started working on re-implementing the website to make content updates and external contributions easier.
2425
2526Until next time.
26−
27−<br>
28−
29−*Morgan* `~hidrel-fabtel`
content/posts/2019-3-27-update.md → content/updates/2019-3-27-update.mdrenamed+5−8
@@ -1,10 +1,11 @@
11+++
22title = "~2019.3.27 Update"
33date = 2019-03-27
4−author = "~hidrel-fabtel"
54description = "A short update from the Tlon team for the week of ~2019.3.27."
6−[taxonomies]
7−posts = ["Updates"]
5+aliases = ["/posts/2019-3-27-update/"]
6+[extra]
7+author = "Morgan"
8+ship = "~hidrel-fabtel"
89+++
910Here’s a short update from the team as of `~2019.3.27`:
1011
@@ -14,8 +15,4 @@ Here’s a short update from the team as of `~2019.3.27`:
1415
1516*Philip* `~wicdev-wisryt` [finished](https://github.com/urbit/arvo/pull/1120) Aquarium, which runs a virtual fleet of ships inside a host ship, and pH, an integration testing framework. `~rigdyn-sondur` [pushed](https://github.com/urbit/urbit/pull/1228) ncurses support. *Joe* `~master-morzod` and *Elliot* `~littel-ponnys` continued work on new `%eyre` (webserver) while Isaac `~novlud-padtyv` [integrated](https://github.com/urbit/arvo/pull/1119) Landscape. Finally, `~pilfer-pandex` and *Benjamin* `~pitmug-roptec` made progress on a reimplementation of the compiler.
1617
17−Until next time.
18−
19−<br>
20−
21−*Morgan* `~hidrel-fabtel`
18+Until next time.
content/posts/2019-3-4-update.md → content/updates/2019-3-4-update.mdrenamed+5−8
@@ -1,10 +1,11 @@
11+++
22title = "~2019.3.04 Update"
33date = 2019-03-04
4−author = "~hidrel-fabtel"
54description = "A short update from the Tlon team for the week of ~2019.3.4."
6−[taxonomies]
7−posts = ["Updates"]
5+aliases = ["/posts/2019-3-4-update/"]
6+[extra]
7+author = "Morgan"
8+ship = "~hidrel-fabtel"
89+++
910Here’s a short update from the team for the week of `~2019.3.4`:
1011
@@ -41,8 +42,4 @@ Our Austin meetup and San Francisco AMA were a blast. You can watch [the recordi
4142
4243Out there on the Internet, people are starting to build their own platforms around Urbit and Azimuth. There are now multiple planet stores and at least one active online community. It's exciting to watch the community start to grow all by itself.
4344
44−Until next time.
45−
46−<br>
47−
48−*Morgan* `~hidrel-fabtel`
45+Until next time.
content/posts/2019-4-11-update.md → content/updates/2019-4-11-update.mdrenamed+5−8
@@ -1,10 +1,11 @@
11+++
22title = "~2019.4.11 Update"
33date = 2019-04-11
4−author = "~hidrel-fabtel"
54description = "A short update from the Tlon team for the week of ~2019.4.11."
6−[taxonomies]
7−posts = ["Updates"]
5+aliases = ["/posts/2019-4-11-update/"]
6+[extra]
7+author = "Morgan"
8+ship = "~hidrel-fabtel"
89+++
910Here’s a short update from the team as of `~2019.4.11`:
1011
@@ -22,8 +23,4 @@ We conducted an Azimuth AMA and an "IDEA BLITZ" on Landscape. Excerpts from the
2223
2324*Ted* `~rovnys-ricfur` shared a [convincing argument](https://github.com/urbit/arvo/pull/1129) for uppercasing Hoon and someone launched [Urbit Classic](http://urbit-classic.org/), running 2016-era Arvo. To be clear, we don't recommend sending them Bitcoin.
2425
25−Until next time.
26−
27−<br>
28−
29−*Morgan* `~hidrel-fabtel`
26+Until next time.
content/posts/2019-5-10-update.md → content/updates/2019-5-10-update.mdrenamed+5−6
@@ -1,16 +1,15 @@
11+++
22title = "~2019.5.10 Update"
33date = 2019-05-10
4−author = "~hidrel-fabtel"
54description = "A short update from the Tlon team for the week of ~2019.5.10."
6−[taxonomies]
7−posts = ["Updates"]
5+aliases = ["/posts/2019-5-10-update/"]
6+[extra]
7+author = "Morgan"
8+ship = "~hidrel-fabtel"
89+++
910
1011![](https://media.urbit.org/site/posts/updates/~2019.5.10-update-1.jpg)
1112
1213**Ted** `~rovnys-ricfur` is rewriting `%ames`, Urbit’s encrypted peer-to-peer messaging protocol, in the [“aloe”](https://github.com/urbit/arvo/tree/aloe) branch. **Philip** `~wicdev-wisryt` has been working on a `bind` rune, [monadic pH tests](https://github.com/urbit/arvo/pull/1152), and `%ames` [“aloe”](https://github.com/urbit/arvo/tree/philip/aloe) with **Ted**. **Jared** `~nidsut-tomdun` is reworking `%gall` and has been pushing [Bridge](https://github.com/urbit/bridge/releases) updates with **Mark** `~palfun-foslup`. **Joe** `~master-morzod` has [cc-release](https://github.com/urbit/urbit/tree/cc-release) – the next major version of Urbit – just about ready to go. This bundles a new multi-process architecture, support for running the full bootstrap sequence, new event dispatch and persistence, a new build system, and more. **Elliot** `~littel-ponnys` merged new [event batching](https://github.com/urbit/urbit/pull/1259) (part of cc-release), which [makes Urbit performance less I/O bound](https://github.com/urbit/urbit/pull/1259#issuecomment-487785371). Finally, **Morgan** `~hidrel-fabtel` and **Alex** `~mignyt-mogseb` launched a public mailing list, [urbit-dev](https://groups.google.com/a/urbit.org/forum/#!forum/dev), a [new proposal system](https://github.com/urbit/proposals), and reimplemented [urbit.org](https://github.com/urbit/urbit.org) to enable fast builds and automatic deployment.
1314
14−Until next time.
15−
16−**Morgan** `~hidrel-fabtel`
15+Until next time.
content/posts/2019-5-17-update.md → content/updates/2019-5-17-update.mdrenamed+5−6
@@ -1,10 +1,11 @@
11+++
22title = "~2019.5.17 Update"
33date = 2019-05-17
4−author = "~hidrel-fabtel"
54description = "A short update from the Tlon team for the week of ~2019.5.17."
6−[taxonomies]
7−posts = ["Updates"]
5+aliases = ["/posts/2019-5-17-update/"]
6+[extra]
7+author = "Morgan"
8+ship = "~hidrel-fabtel"
89+++
910
1011![](https://media.urbit.org/site/posts/updates/~2019.5.17-update-1.png)
@@ -15,6 +16,4 @@ posts = ["Updates"]
1516
1617In other news, the **Interface Team** started a [Twitter account](https://twitter.com/urbitwip) to share work in progress, there's been lively discussion on [urbit-dev](https://groups.google.com/a/urbit.org/forum/#!forum/dev), and we published [a roadmap](https://urbit.org/posts/2019-5-roadmap/).
1718
18−Until next time.
19−
20−**Morgan** `~hidrel-fabtel`
19+Until next time.
content/posts/2019-5-31-update.md → content/updates/2019-5-31-update.mdrenamed+5−6
@@ -1,10 +1,11 @@
11+++
22title = "~2019.5.31 Update"
33date = 2019-05-31
4−author = "~hidrel-fabtel"
54description = "A short update from the Tlon team for the week of ~2019.5.31."
6−[taxonomies]
7−posts = ["Updates"]
5+aliases = ["/posts/2019-5-31-update/"]
6+[extra]
7+author = "Morgan"
8+ship = "~hidrel-fabtel"
89+++
910
1011![](https://media.urbit.org/site/posts/updates/~2019.5.31-update-3.jpg)
@@ -25,6 +26,4 @@ posts = ["Updates"]
2526
2627In other news, the [urbit-dev](https://groups.google.com/a/urbit.org/forum/#!forum/dev) mailing list has been lively, [urbit.org](https://github.com/urbit/urbit.org) now deploys automatically thanks to Netlify, and we're getting ready to breach the network for [cc-release](https://github.com/urbit/urbit/tree/cc-release) next week. Follow [@zodisok](https://twitter.com/zodisok) for updates.
2728
28−Until next time.
29−
30−**Morgan** `~hidrel-fabtel`
29+Until next time.
content/posts/2019-6-14-update.md → content/updates/2019-6-14-update.mdrenamed+5−7
@@ -1,11 +1,11 @@
11+++
22title = "~2019.6.14 Update"
33date = 2019-06-14
4−author = "~hidrel-fabtel"
54description = "Urbit 0.8.0, new %ames, async monad, 64-bit Vere, Haskell Vere, and more."
6−aliases = ["/posts/updates/2019-6-14-update"]
7−[taxonomies]
8−posts = ["Updates"]
5+aliases = ["/posts/updates/2019-6-14-update", "/posts/2019-6-14-update/"]
6+[extra]
7+author = "Morgan"
8+ship = "~hidrel-fabtel"
99+++
1010
1111![](https://media.urbit.org/site/posts/updates/~2019.6.14-update-1.jpg)
@@ -23,6 +23,4 @@ posts = ["Updates"]
2323
2424`~rigdyn-sondur` is on the home stretch with [64-bit Vere](https://github.com/BernardoDeLaPlaz/urbit/commits/vere_64).
2525
26−Until next time.
27−
28−**Morgan** `~hidrel-fabtel`
26+Until next time.
content/posts/2019-7-25-update.md → content/updates/2019-7-25-update.mdrenamed+5−7
@@ -1,11 +1,11 @@
11+++
22title = "~2019.7.25 Update"
33date = 2019-07-25
4−author = "~hidrel-fabtel"
54description = "Urbit 0.8.0, new Landscape, %ames, %kale, Vere, Nix builds, and more."
6−aliases = ["/posts/updates/2019-7-25-update"]
7−[taxonomies]
8−posts = ["Updates"]
5+aliases = ["/posts/updates/2019-7-25-update", "/posts/2019-7-25-update/"]
6+[extra]
7+author = "Morgan"
8+ship = "~hidrel-fabtel"
99+++
1010
1111![](https://media.urbit.org/site/posts/updates/~2019.7.25-update-1.jpg)
@@ -32,6 +32,4 @@ We ran into a slew of issues with the network after launch, which were fixed in
3232
3333**Isaac** `~novlud-padtyv` and **Logan** `~tacryt-socryp` shipped the [new Landscape](https://github.com/urbit/urbit/tree/master/pkg/interface), which features a brand-new interface designed around an OS-like home screen and the ability to integrate new applications. Landscape too [has been merged](https://github.com/urbit/urbit/pull/1367) into the Urbit monorepo.
3434
35−Until next time.
36−
37−**Morgan** `~hidrel-fabtel`
35+Until next time.
content/updates/_index.mdnew file+6
@@ -0,0 +1,6 @@
1++++
2+title = "Updates"
3+sort_by = "date"
4+template = "updates/list.html"
5+aliases = ["/blog/weekly-updates/"]
6++++
content/using/_index.mdnew file+5
@@ -0,0 +1,5 @@
1++++
2+title = "Using"
3+sort_by = "weight"
4+template = "list.html"
5++++
content/using/develop.mdnew file+96
@@ -0,0 +1,96 @@
1++++
2+title = "Developer's Guide"
3+description = "How to get started developing on Urbit."
4+weight = 3
5+template = "page_indiced.html"
6+aliases = ["/docs/using/creating-a-development-ship/", "/docs/getting-started/contributing"]
7++++
8+
9+There are roughly two kinds of development on Urbit: core development and application development. Urbit applications are still young, but can be fun to experiment with. The kernel is much more stable, but generally more challenging from an engineering standpoint.
10+
11+This guide will start by getting you set up to run an Urbit ship, and then tell you everything you need to now do to either.
12+
13+### Setting up your environment
14+
15+We assume you’ve gotten a basic introduction to Urbit. If you haven’t, read the [Understanding Urbit](@/understanding-urbit/_index.md) series, or just jump ahead to the [Technical Overview](@/understanding-urbit/technical-overview.md).
16+
17+Once you’re ready, you can get started on the network right away and take some first steps, without acquiring an identity, by [creating a comet](@/using/operations/creating-a-comet.md).
18+
19+When developing, however, we recommend [booting a development ship](#creating-a-development-ship) and working locally -- you may need to make changes that could, in the wrong hands, destroy the ship’s environment, and it’s best to do so in a safe, separate place.
20+
21+## Core development {#core}
22+
23+Working on the core means improving the Urbit project itself, working with the existing community of Urbit developers.
24+
25+Just arrived and unsure what to work on? An ideal way to get started is by experimenting with the system, talking to other developers, and reading (or [contributing to](https://github.com/urbit/docs)) the [documentation](/docs/).
26+
27+Prefer learning with an instructor? We also offer an online course that covers the basics of Urbit development called [Hoon School](@/hoonschool.md). If course-based learning works well for you, we recommend you sign up.
28+
29+The Urbit developer community congregates around [the urbit-dev mailing list](https://groups.google.com/a/urbit.org/forum/#!forum/dev), the `~dopzod/urbit-help channel` on Landscape, and [Urbit’s GitHub repository](https://github.com/urbit/urbit). It’s a good idea to sign up, see what people are talking about, and introduce yourself.
30+
31+Once you’re comfortable working with Urbit, check out the [project’s issues on GitHub](https://github.com/urbit/urbit/issues) or some of our [contribution bounties](https://grants.urbit.org/).
32+
33+If you’re looking for some guidance, need help, or would prefer direct communication for your ideas, you can also always reach out to us directly at [support@urbit.org](mailto:support@urbit.org).
34+
35+## Application development {#application}
36+
37+When creating user applications on Urbit, you aren’t tied to any particular user interface. They can work without providing a response to the user, or by printing to the Dojo, or with an interface in Landscape, which uses [Eyre](@/docs/tutorials/arvo/eyre.md) (the Arvo vane that serves HTTP to serve a React-based interface to the application through a web browser).
38+
39+When writing applications, you will often make use of [Gall](@/docs/tutorials/hoon/gall.md), the Arvo vane that manages user applications.
40+
41+If you want to see examples of Urbit applications with common functionality requirements, you can see our [examples](https://github.com/urbit/examples) repository. If you want to get started building applications with a Landscape interface, check out our [create-landscape-app](https://github.com/urbit/create-landscape-app) repository.
42+
43+
44+## Creating a development ship {#creating-a-development-ship}
45+
46+To do work with Hoon and with the system, we recommended using a "fake" ship -- one not connected to the network.
47+
48+Because such a ship has no presence on the network, you don't need an Azimuth identity for its purposes. You just need to have [installed our software](/using/install).
49+
50+To create a fake ship named `~zod`, run the command below. You can replace `zod` with any valid Urbit ship-name.
51+
52+```
53+urbit -F zod
54+```
55+
56+Now you should see a block of boot messages, starting with the Urbit version number. Welcome!
57+
58+## Community tutorials {#community-tutorials}
59+
60+Here are some tutorials written by members of the Urbit community. Some are a little outdated, but they may still prove useful.
61+
62+- [Generators](https://github.com/joemfb/mardev/tree/master/docs/gen) by `~master-morzod`
63+- [Urbit by Doing](https://github.com/Fang-/Urbit-By-Doing) by `~palfun-foslup`
64+- [Learning Hoon](https://github.com/knubie/learning-hoon) by `@knubie`
65+- [A Nock Interpreter](https://jtobin.io/nock) by `~nidsut-tomdun`
66+- [Basic Hoonery](https://jtobin.io/basic-hoonery) by `~nidsut-tomdun`
67+
68+If you want to add something to the list, [shoot us an email](mailto:support@urbit.org) or make a pull request in the [docs repository](https://github.com/urbit/docs).
69+
70+## How else can I contribute? {#how}
71+
72+The Urbit project is a global community of developers, users, and fans. If you’re interested in getting involved, there’s space for you; you don’t have to be a developer to be a part of the project.
73+
74+### Running stars and galaxies
75+
76+There are two ways to participate in the Arvo network: as a user running a planet and as an infrastructure provider running a galaxy or a star.
77+
78+For planets, Urbit is a peer-to-peer network where users can interact with each other via Landscape, or using custom applications that anyone can write.
79+
80+Running a planet helps build Urbit’s community, surfaces bugs, and helps core developers improve Urbit under realistic conditions.
81+
82+Stars and galaxies, however, have additional responsibilities and play a role in peer discovery as well as star and planet distribution. You can think of stars and galaxies as similar to the DNS system in the modern Internet. Most users don’t know it exists, but without it, the web wouldn’t work at all.
83+
84+Running a reliable galaxy or star, and spawning stars and planets from them, are excellent ways to help bootstrap the Urbit network.
85+
86+If you’re interested in running a galaxy or star, you’ll be reliably providing peer discovery for your children just by running your node – and we’re doing our best to make this both easy and profitable. If you’re interested in this, see [Star and Galaxy Operations](@/using/operations/stars-and-galaxies.md).
87+
88+If you’re interested in distributing planets, read on.
89+
90+### Distribute points
91+
92+Want to get your friends and family into Urbit? Distribute planets using Bridge with a feature called **delegated sending**.
93+
94+Here’s how it works: any star can grant a number of invites to any of its child planets. Those planets can then send one-time-use invite codes via email to anyone of their choosing.
95+
96+For instructions on how to grant and send invites, check out [Using Bridge](@/using/operations/using-bridge.md).
content/using/install.mdnew file+76
@@ -0,0 +1,76 @@
1++++
2+title = "Install + Setup"
3+weight = 1
4+description = "How to install Urbit."
5+template = "page_indiced.html"
6+aliases = ["/docs/getting-started/"]
7++++
8+
9+Urbit is not yet ready for everyday users -- but if you're technically inclined or generally intrepid, feel free to try it out. It's a good place to explore.
10+
11+In order to get going on the network, you'll need an [Urbit ID](#id). To try the live network out with a disposable identity, you can always [create a comet](@/using/operations/creating-a-comet.md).
12+
13+## Getting an Urbit ID {#id}
14+
15+For an introduction to Urbit IDs and the address space more generally, see [Urbit ID](@/understanding-urbit/urbit-id.md) in [Understanding Urbit](@/understanding-urbit/_index.md).
16+
17+While Tlon does not currently sell or distribute Urbit IDs, there are still a few ways to get your own Urbit ID:
18+
19+- Getting an invitation from a friend
20+- Purchasing an Urbit ID from a third party, such as [urbit.live](https://urbit.live) or [OpenSea](https://opensea.io).
21+
22+Tlon occasionally selects candidates to distribute invitations, and users operating galaxies and stars can spawn and distribute a finite number of stars and planets, respectively.
23+
24+## Install Urbit {#urbit}
25+
26+The Urbit binary runs nicely on a Unix-like operating system – Ubuntu, Fedora, or macOS, for example. If you're using Windows, you'll need to get one of the aforementioned systems. But first, some terminology:
27+
28+- `vere` or `urbit`: the interpreter that runs when you run a command like `./urbit` in your command line
29+- `arvo`: the deterministic OS that lives in a directory whose name matches your Urbit ID, i.e. `~famreb-todmec` lives in `/famreb-todmec`
30+
31+We have different installation instructions for different platforms. To install and run Arvo, the Urbit operating system, and its binary, run the commands that are listed for your operating system.
32+
33+You can check your Arvo installation on any platform by running the `./urbit` command. Installation was successful if you get a block of output that begins with the line below:
34+
35+```
36+Urbit: a personal server operating function
37+```
38+
39+### macOS
40+
41+We provide static binaries for macOS. You can grab the latest stable release as follows:
42+
43+```sh
44+curl -O https://bootstrap.urbit.org/urbit-darwin-v0.8.2.tgz
45+tar xzf urbit-darwin-v0.8.2.tgz
46+./urbit
47+```
48+
49+### Linux (64-bit)
50+
51+We also provide static binaries for 64-bit Linux distributions (Ubuntu, Debian, Fedora, Arch, etc.). You can get the latest stable release similarly:
52+
53+```sh
54+curl -O https://bootstrap.urbit.org/urbit-linux64-v0.8.2.tgz
55+tar xzf urbit-linux64-v0.8.2.tgz
56+./urbit
57+```
58+
59+To access your Urbit via HTTP on port 80 on Ubuntu, you may need to run the following:
60+
61+```sh
62+sudo apt-get install libcap2-bin
63+sudo setcap 'cap_net_bind_service=+ep' /path/to/urbit
64+```
65+
66+### Compile from source
67+
68+If you want to compile from source, see the [instructions on GitHub](https://github.com/urbit/urbit#development).
69+
70+### About swap space
71+
72+If you're running Urbit in the cloud on a small instance, you may need to additionally configure swap space. If you're not, you can safely ignore this section.
73+
74+Urbit wants to map 2GB of memory when it boots up. It won’t necessarily use all this memory, it just wants to see it. On a normal modern PC or Mac, or on a large cloud virtual machine, this is not an issue. On some small cloud virtual machines (Amazon or Digital Ocean) the default memory configuration is smaller than this, and you need to manually configure a swapfile.
75+
76+Digital Ocean has a post on adding swap [here](https://www.digitalocean.com/community/tutorials/how-to-add-swap-space-on-ubuntu-16-04). For Amazon there’s a StackOverflow thread [here](https://stackoverflow.com/questions/17173972/how-do-you-add-swap-to-an-ec2-instance).
content/using/operations/_index.mdnew file+7
@@ -0,0 +1,7 @@
1++++
2+title = "Operations"
3+description = "Instructions on how to use Bridge, your Urbit ship, Stars and Galaxies, and more."
4+sort_by = "weight"
5+weight = 2
6+template = "list.html"
7++++
content/using/operations/creating-a-comet.mdnew file+30
@@ -0,0 +1,30 @@
1++++
2+title = "Creating a Comet"
3+description = "Comets are disposable identities you can use on the live network."
4+weight = 4
5+aliases = ["/docs/using/creating-a-comet/"]
6++++
7+
8+**Comets** are Urbits whose names are 128-bits or 16 syllables, such as:
9+
10+`~dasres-ragnep-lislyt-ribpyl--mosnyx-bisdem-nidful-marzod`
11+
12+Comet names aren't quite as memorable as others, but they're disposable identities that anyone can make for free to join the live network.
13+
14+### Booting a comet
15+
16+To boot your comet, go into the command line and run the following command from the directory that was created during Urbit installation:
17+
18+```sh
19+$ ./urbit -c mycomet
20+```
21+
22+This will take a few minutes and will spin out a bunch of boot messages. Toward the end, you'll see something like:
23+
24+```
25+ames: on localhost, UDP 31337.
26+http: live (insecure, public) on 8080
27+http: live ("secure", public) on 8443
28+http: live (insecure, loopback) on 12321
29+~dasres_marzod:dojo>
30+```
content/using/operations/stars-and-galaxies.mdnew file+42
@@ -0,0 +1,42 @@
1++++
2+title = "Star and Galaxy Operations"
3+description = "Additional information and suggested ettiquette for Star and Galaxy owners."
4+weight = 3
5+aliases = ["/docs/using/operating-a-star/"]
6+template = "page_indiced.html"
7++++
8+
9+To boot your galaxy or star, follow our [installation instructions](@/using/install.md).
10+
11+### Hosting your star
12+
13+If you plan to distribute planets in any capacity, you must keep your star running. If you fail to do so, those planets will become orphans that are unable to communicate with the network.
14+
15+To make this as simple as possible, we’re building Terraform-based tooling for star and planet hosting via Google Cloud Platform. Once it’s ready we’ll open source the tooling so you can host stars and planets for yourself and others.
16+
17+In the meantime, there are [existing instructions](@/using/install.md) for those familiar with booting a Linux instance on GCP, AWS, Digital Ocean, etc.
18+
19+### Distributing planets
20+
21+You can distribute planets from your star via [Bridge](https://bridge.urbit.org/). As a reminder if you do distribute planets, please boot and run your star on the Arvo network, otherwise those planets won't be able to connect, which has a negative effect on the network as a whole, as orphan planets are left with very limited functionality.
22+
23+### Software updates
24+
25+By default, your star accepts software updates from its galaxy and routes them to its planets. You can use this mechanism to push custom software to your planets. Keep in mind that planets expect functional, non-breaking software updates, and generally want to be able to communicate with planets that are sponsored by other stars.
26+
27+#### Breaches
28+
29+To ensure new planets can connect to your ship, users are expected to participate in network-wide breaches by [updating to the latest Urbit version](@/using/install.md), deleting (or archiving) your pier, and then booting your ship using the new binary. If you don’t participate, you won’t be able to communicate with anyone on the network who has updated to the new era.
30+
31+Network-wide breaches are distinct from personal breaches, wherein an individual ship cycles its personal network keys using bridge, and then follows the same steps outlined above.
32+
33+### Star-owner etiquette
34+
35+- If you distribute planets, boot and run your star on the Arvo network, or the planets won't be able to boot for the first time or connect.
36+- A star is networking infrastructure. For that reason, the machine running your star or galaxy must have sufficient bandwidth and processing power for your dependent planets.
37+- When messaging others, communicate using your star only when speaking in an official/infrastructural capacity. Otherwise, use your personal planet.
38+
39+### Taxes
40+
41+Urbit address space has value, which means the distribution of address space has tax implications. You should speak with your tax advisor about these implications.
42+
content/using/operations/using-bridge.mdnew file+65
@@ -0,0 +1,65 @@
1++++
2+title = "Using Bridge"
3+template = "page_indiced.html"
4+description = "How to use Bridge to interact with Azimuth and manage your Urbit ID."
5+weight = 1
6+aliases = ["/docs/getting-started/using-bridge/"]
7++++
8+
9+[Bridge](https://github.com/urbit/bridge) is the application we built for interacting with [Azimuth](https://azimuth.network), the Urbit PKI, and managing your Urbit ID. Importantly, Bridge also allows you to generate a keyfile that you will need to boot your ship so that it can use the Arvo network.
10+
11+This guide assumes that you have an Urbit ID, or that you have found someone to send an Urbit ID to your Ethereum address and are looking to claim it.
12+
13+### Online Bridge
14+
15+To connect to Bridge, go to [https://bridge.urbit.org](https://bridge.urbit.org) into your browser, and enter your identity's credentials in the appropriate fields. If you were invited to claim an Urbit ID, it's very likely that you received an email that would direct you to Bridge, and you can simply follow the hyperlink in that email.
16+
17+Once you arrive, proceed through the steps presented. You'll eventually arrive at a page with a few choices: `Invite`, `Admin`, and `Boot Arvo`. `Admin` is the only option that you're interested in right now; click on it. On the `Admin` page, click the `Download Arvo Keyfile` button. Once you have downloaded the keyfile, you can exit Bridge and proceed to [install the Urbit binary](@/using/install.md).
18+
19+### Offline Bridge
20+
21+Alternatively, Bridge can be run locally. It's more complicated, but we recommend this option for managing sufficiently valuable assets, such as several stars or more. To install local Bridge, navigate to the [release page on GitHub](https://github.com/urbit/bridge/releases/). Download the `.zip` file of the latest version. After you download it, follow the instructions below.
22+
23+To use Bridge:
24+
25+- Unzip the .zip file that you downloaded (bridge-$version.zip).
26+- Open up your command line interface (Terminal on OSX, Command Prompt on Windows).
27+- Navigate to the bridge-$version directory, where $version is the appropriate version number.
28+- Run this command: `python3 -m http.server 5000 --bind 127.0.0.1.`
29+
30+You can then use the Bridge app by navigating to `http://localhost:5000` in your internet browser.
31+
32+Note: Bridge allows you to both make reads and writes to the Ethereum blockchain. Writing to the blockchain, such as changing your networking keys, will incur a transaction cost that will require you to have some ETH in your address.
33+
34+Once the program is running in your browser, go through the steps presented according to the type of wallet you have. You’ll be presented with a few login options. A notable option is Urbit Master Ticket. This is for those who used our Wallet Generator software. If you bought points from an Urbit sale and then used the Wallet Generator, your networking keys will be set for you. All other login options will require you to set your own networking keys.
35+
36+### Accept your transfer
37+
38+If you were given points by Tlon you likely already fully own them. But if someone else sent you a point, then you will first need to use Bridge to accept that transfer.
39+
40+After you access your Ethereum address, if a point was sent to that address, you'll come to a page that has an `Incoming Transfers` header, under which is a graphic. Click the `Details ->` link under that graphic.
41+
42+Now you'll be on the management page of your point. The transfer isn't completed yet, so click `Accept incoming transfer`. Then check both boxes and and click their associated `Sign Transaction` and `Send Transaction` buttons.
43+
44+If you already own a point, click on the `Details ->` under your sigil in the `Your Points` section.
45+
46+### Set your networking keys
47+
48+If you just accepted a point, you'll be returned to your point screen. Notice that that links and buttons are now clickable. You now own this point!
49+
50+Click the link that says `Set network keys`. The field presented in the resulting page expects a 32-byte hexadecimal string. If it's filled already, no action is required. If it is empty, you will need to generate such a string. You can generate this data any way you please, but in the terminal on MacOS or Linux, you can write
51+
52+```sh
53+hexdump -n 32 -e '4/4 "%08X"' /dev/random
54+```
55+
56+and use the result.
57+
58+It should be noted that setting your network keys is an event on the Ethereum network and will therefore cost a trivial, but non-zero, amount of [gas](https://github.com/ethereum/wiki/wiki/Design-Rationale#gas-and-fees) to complete.
59+
60+### Generate your keyfile
61+
62+From the detail page associated with your point, click the `Generate Arvo Keyfile` link and you'll be taken to a page with a field titled `Network seed`. This field should already be filled in, and should match the hexadecimal string that you entered in the previous step. If it's not filled in or does not match, fill it in with the correct string.
63+Click `Generate ->`, which will download a keyfile onto your machine.
64+
65+With that keyfile in hand, you can now exit Bridge and continue to the guide to [install the Urbit binary](@/using/install.md).
content/using/operations/using-your-ship.mdnew file+1412
@@ -0,0 +1,1412 @@
1++++
2+title = "Using Your Ship"
3+description = "How to operate your ship, including using your ship's filesystem and messaging applications, starting a moon, or requesting a DNS proxy."
4+template = "page_indiced.html"
5+weight = 2
6+aliases = ["docs/using/arvo-network-dns/", "docs/using/messaging/", "docs/using/shell/", "docs/using/admin/"]
7++++
8+
9+## DNS proxying {#dns-proxying}
10+
11+We have a system that lets you request a domain name for your ship in the form of `ship.arvo.network`, where `ship` is your ship's name minus the `~`. This allows users to access their ships remotely using Landscape, our graphical web interface.
12+
13+Stars and planets follow the same process DNS proxying process, and galaxies have their own requirements. Moons and comets are not supported.
14+
15+### Planets and Stars
16+
17+For a planet or star's DNS proxying request to be made and fulfilled, they must be hosting their ship someplace with a public IP address, and its HTTP server must be listening on port 80.
18+
19+To get `ship.arvo.network` on a planet or star, you must set up DNS routing with its parent ship by starting the `:dns` app.
20+
21+To do so, simply run this command in your ship's Dojo:
22+
23+```
24+> :dns|request
25+```
26+
27+You'll then be prompted to enter the public IP address of your ship. You can also pass the IP address as an argument, using the .0.0.0.0 (`@if`) syntax. For example:
28+
29+```
30+> :dns|request .1.2.3.4
31+```
32+
33+`:dns`, running locally, will make an HTTP request to that IP address on port 80 to confirm that it is itself available at that IP and port. If that fails, you'll receive a `%bail-early` message in `:chat-cli`; this request will retry a few times. If the self-check is successful, the request is relayed to `~zod`, and you'll receive a message saying, `request for DNS sent to ~zod`. Once `~zod` has acknowledged receipt of the request, your local `:dns` app will send a `:chat-cli` message saying `awaiting response from ~zod`.
34+
35+The request will be picked up shortly, and the `ship.arvo.network` DNS record will be set to the given IP address. Once that's set up, `~zod` will be notified and `~zod` will, in turn, notify your ship. That ship will now try to verify that it can reach itself on `ship.arvo.network` over port 80. If it can't, it'll send a message saying, `unable to access via ship.arvo.network`. If it can, it will configure itself with that domain and say `confirmed access via ship.arvo.network`.
36+
37+Great! You're set up now. Try accessing your `ship.arvo.network` in your browser to use Landscape; we recommend Chrome or Brave.
38+
39+### Galaxies
40+
41+Galaxies are already required to have separate DNS entry at galaxy.urbit.org. There's no automated process for getting that binding, so if you're a galaxy-holder, get in touch with us at support@urbit.org.
42+
43+There is a command for galaxies that will try to re-use their already-necessary Ames DNS entry for HTTPS:
44+
45+```
46+> :dns|auto
47+```
48+
49+This will make HTTP-requests to self-check availability over `galaxy.$AMES-DOMAIN` (currently galaxy.urbit.org), where `galaxy` is the galaxy's name minus the `~`.
50+
51+Otherwise, `:dns|auto` works the same as `:dns|ip` does with stars and planets: if it's available or unavailable, Chat messages, and so on.
52+
53+### More information
54+
55+Configuring a ship's domain causes the `:acme` app to request an HTTPS certificate for that domain from LetsEncrypt. Note that LetsEncrypt also requires that the HTTP server be listening on port 80. If the certificate request fails, `:acme` will send a `:chat-cli` message with an explanation. Once the certificate is successfully retrieved, `:acme` will install it, causing the HTTP servers to restart. A secure server will be started on port 443 (the HTTPS default) if it's available. Otherwise, it will try 8443, and then increment to the next port until it can successfully bind one.
56+
57+The built-in logic for listening on port 80 is similar. Urbit tries to bind port 80; if it cannot, it tries 8080, then increments until it can bind a port. Port 80 is available to unprivileged process on recent version of macOS. Otherwise, the process needs to either be run as root, or be given special permission (CAP\_NET_BIND on Linux).
58+
59+
60+Your urbit (also called your _ship_) is a persistent Unix process that you mainly control from the console.
61+
62+### Shutdown
63+
64+You can turn your urbit off with `Ctrl-d` from the Chat or Dojo prompts.
65+
66+You can force-quit your urbit with `Ctrl-z` from anywhere.
67+
68+### Restart
69+
70+To restart your urbit simply pass the name of your pier:
71+
72+```sh
73+$ ./urbit some-planet
74+```
75+
76+or
77+
78+```sh
79+$ ./urbit comet
80+```
81+
82+### Logging
83+
84+To log an urbit's command line output to a file, use `script`:
85+
86+```sh
87+$ script urbit.log ./urbit your-urbit
88+```
89+
90+### Moving your pier
91+
92+Piers are designed to be portable, but it _must_ be done while the urbit
93+is not running. Urbit networking is stateful, so you can't run two copies
94+of the same urbit in two places.
95+
96+To move a pier, simply move the contents of the directory it lives in.
97+To keep these files as small as possible we usually use the `--sparse`
98+option in `tar`. With a pier `your-urbit/`, something like this should work:
99+
100+```sh
101+tar -Scvzf ~/your-urbit.tar.gz ~/your-urbit/
102+scp your-old-server:~/your-urbit.tar.gz your-new-server:~
103+```
104+
105+Then to unzip it, on your other Unix server, run:
106+
107+```sh
108+tar xfvz your-urbit.tar.gz
109+```
110+
111+Delete the tar file, and, after installing Urbit on your new server, start your urbit back up with:
112+
113+```sh
114+./urbit your-urbit
115+```
116+
117+### Console
118+
119+Your Urbit terminal is separated into two parts: the prompt (the bottom line) and the record (everything above that). The record is shared; all the output from all the apps in your command set appears in it. The prompt is multiplexed.
120+
121+In the CLI, Urbit apps can process your input before you hit return. To see this in action try entering `)` as the first character at the Dojo prompt. Since there is no Dojo command or Hoon expression that starts with ')', the Dojo rejects it.
122+
123+`Ctrl-x` - Switches the prompt between running console apps
124+
125+`Ctrl-c` - Crash current event. Processed at the Unix layer and prints a stack
126+trace.
127+
128+`Ctrl-d` - From Chat or Dojo, stops your Urbit process.
129+
130+`Ctrl-z` - Stops the Urbit process from _anywhere_.
131+
132+`↑` / `↓` - History navigation
133+
134+The following emacs-style key bindings are available:
135+
136+```
137+Ctrl-a Cursor to beginning of the line (Home)
138+Ctrl-b Cursor one character backward (left-arrow)
139+Ctrl-e Cursor to the end of the line (End)
140+Ctrl-f Cursor one character forward (right-arrow)
141+Ctrl-g Beep; cancel reverse-search
142+Ctrl-k Kill to end of line
143+Ctrl-l Clear the screen
144+Ctrl-n Next line in history (down-arrow)
145+Ctrl-p Previous line in history (up-arrow)
146+Ctrl-r Reverse-search
147+Ctrl-t Transpose characters
148+Ctrl-u Kill to beginning of line
149+Ctrl-y Yank from kill buffer
150+```
151+
152+### Landscape
153+
154+On startup Urbit tries to bind to `localhost:80`. If you're already running something on port `80` -- such as any other HTTP server, or another urbit -- you'll find the urbit that you just started on `8080`, `8081`, and so on. For planets only, we also proxy web domains through Urbit's own servers. Any planet `~your-urbit` is also at `your-urbit.arvo.network`, but only after you [set up DNS](#dns-proxying).
155+
156+Once running, you can sign into Landscape, your ship’s web interface, from `http://localhost` or `https://your-urbit.arvo.network`. Since our HTTPS isn't audited / battle tested, we just call it "secure" HTTPS. You can find that on `8443`. Or `8444` (and so on) if you're already running something on `8443`.
157+
158+### Moons {#moons}
159+
160+Planets can spawn moons, which are meant for connected devices: phones, smart TVs, digital thermostats. The basic idea is that your planet runs permanently in a data center somewhere, while moons run on all your devices. Each planet can issue ~4 billion (`2^32`) moons.
161+
162+To generate a random moon from your planet, run:
163+
164+```
165+~sampel-palnet:dojo> +moon
166+moon: ~faswep-navred-sampel-palnet
167+\/~.0wd.rZU67.3jSny.z1vda.7sr-s.EL1Jt.-76Nj.ugXxY.g6-Bx.HvKZl.G53oV.hPnXe.7U3E3.J4CEe.MEVuq.~08Nt\/
168+ .zNT0K.k-Ab~.Nn90d.OZ2fT.-XlQQ.Cfrkf.y6~K0.2Do09.EaE3W.BSK--.5Q~9N.y3QIP.eokH-.T6lwz.gg8MX.7LU5
169+ x.DJROE.IzQsy.OXOLr.IOE3a.-QI40.H5ukK.Cw-u4.uxE-y.V-o1F.Q84g0.effP0.de01g.600g1
170+\/ \/
171+```
172+
173+You must manually edit the output of `+moon` to get the correct format for the `<key>`:
174+
175+- strip out the `\/`
176+
177+- combine into one line, omitting spaces
178+
179+- trim the leading `~.`
180+
181+`<key>` would be `0wd.rZU67.3jSny.z1vda ... <snip> ... effP0.de01g.600g1`
182+in this example.
183+
184+Put `<key>` in a file and that file becomes `<keyfile>`.
185+
186+Another way of generating `<keyfile>` is:
187+
188+```
189+~sampel-palnet:dojo> @moon/key +moon
190+moon: ~faswep-navred-sampel-palnet
191+```
192+
193+`<keyfile>` will be at `path/to/sampel-palnet/.urb/put/moon.key` and does not need editing to be used with the `-k` option.
194+
195+You can use the resulting output in the same installation flow from the [Installing Urbit](@/using/install.md) guide, following the same scheme as for booting a planet. That scheme is:
196+
197+```sh
198+$ ./urbit -w <moonname> -G <key> -c <piername>
199+```
200+
201+or
202+
203+```sh
204+$ ./urbit -w <moonname> -k <keyfile> -c <piername>
205+```
206+
207+The `-c <piername>` argument is not required, but it is recommended; otherwise,
208+the resulting directory is a rather unwieldy moon name.
209+
210+Here's how an example moon might be booted:
211+
212+```sh
213+$ ./urbit -w faswep-navred-sampel-palnet -G <key> -c mymoon
214+```
215+
216+or
217+
218+```sh
219+$ ./urbit -w faswep-navred-sampel-palnet -k <keyfile> -c mymoon
220+```
221+
222+Moons are automatically synced to their parent `%kids` desk, and can control applications on their parent planet using `|link`.
223+
224+### Continuity breaches
225+
226+While the Urbit network is in this alpha state, we sometimes have to reboot the whole network. This happens either when major changes need to be shipped or we hit a bug that can't be fixed over the air.
227+
228+Because Urbit networking is stateful we call this a _continuity breach_. Everything has to be restarted from scratch. Your pier will continue to function after we have breached, but it won’t connect to the rest of the Urbit network.
229+
230+When this happens, back up any files you'd like to save, shut down your urbit, and recreate it (as if you were starting for the first time).
231+
232+## Messaging {#messaging}
233+
234+Let’s get started using the `:chat-cli` application, also known more simply as _Chat_. It's the simplest way to talk to people using the command line interface.
235+
236+### Quickstart
237+
238+The most common uses of `:chat-cli` right now are communicating over a public chat channel on `~dopzod/urbit-help`, and sending direct messages. Everyone is more than welcome in `~dopzod/urbit-help`. It's the place to get help, ask questions and chat about Urbit in general.
239+
240+There are two ways of using `:chat-cli`: from the terminal running the Urbit process, or through the Landscape web UI available from your ship’s URL address, mentioned earlier in this guide.
241+
242+### Joining a chat
243+
244+In `:chat-cli`, any kind of medium for a message is called a _chat_. There are four types of chats: the _channel_ (public with blacklist), _village_ (private with whitelist), the _journal_ (publicly readable, privately writable), and the _mailbox_ (privately readable, publicly writable). But for now we'll be dealing with the _channel_, a publicly accessible chatroom for general use. We'll discuss the other three kinds in the [manual](#messaging-manual) section later on.
245+
246+Let's join the `~dopzod/urbit-help` channel. Use `ctrl-x` to switch from the Dojo prompt to the Chat prompt.
247+
248+Then:
249+
250+```
251+~your-urbit:chat-cli> ;join ~dopzod/urbit-help
252+```
253+
254+Scrolling down your terminal window, you'll probably see a playback of previous `~dopzod/urbit-help` messages that you missed. You c
255+
256+Post a line to `~dopzod/urbit-help:`
257+
258+```
259+~your-urbit:chat-cli= Hello, world!
260+```
261+
262+You'll see your message printed below messages from others that came before it. You can always type `;chats` in the `chat-cli` prompt to list all the chats you're in:
263+
264+
265+
266+Glyphs will be automatically assigned to channels, but have the option of binding a glyph (single non-alphanumeric character) to the channel you're joining; the syntax is in the form of `;join ~dopzod/books +`. The chosen glyph will be the symbol that ends your prompt, and it will be what you use as a shortcut to switch to this channel.
267+
268+```
269+~your-urbit:chat-cli= ;+
270+~your-urbit:chat-cli+
271+```
272+
273+Use `;leave` to unsubscribe from a channel:
274+
275+```
276+~your-urbit:chat-cli= ;leave ~dopzod/urbit-help
277+```
278+
279+Now, let's create a channel we can invite some friends to:
280+
281+```
282+~your-urbit:chat-cli= ;create channel /my-channel
283+```
284+
285+Now you can tell your friends to `;join ~your-urbit/my-channel`.
286+
287+### Direct messaging
288+
289+To send a direct message to someone, first set your audience:
290+
291+```
292+~your-urbit:chat-cli= ;~talsur-todres
293+```
294+
295+You'll see your prompt change:
296+
297+```
298+~your-urbit:chat-cli[~talsur-todres]
299+```
300+
301+Now you and `~talsur-todres` can exchange messages directly.
302+
303+```
304+~your-urbit:chat-cli[~talsur-todres] Hey buddy!
305+```
306+
307+To set your audience back to `~dopzod/urbit-help`:
308+
309+```
310+~your-urbit:chat-cli[~talsur-todres] ;~dopzod/urbit-help
311+```
312+
313+You'll see your prompt change back:
314+
315+```
316+~your-urbit:chat-cli=
317+```
318+
319+#### Hoon
320+
321+You can use Chat to evaluate Hoon code and share the results with everyone in a chat. To do so, preface your Hoon with `#`.
322+
323+```
324+~your-urbit:chat-cli= #(add 2 2)
325+```
326+
327+will print as
328+
329+```
330+~your-urbit# (add 2 2)
331+4
332+```
333+
334+### Creating and managing chats
335+
336+As mentioned before, any urbit can host any number of chats. Existing chats can be deleted or modified with various commands. All commands in this section should be sent from the `chat-cli>` prompt.
337+
338+#### Create
339+
340+Syntax: `;create [type] /name +`, where `+` represents an optional glyph.
341+
342+Creates and joins a chat, where `[type]` is any of the following:
343+- `channel`: public chat. Has a blacklist for write control.
344+- `village`: invite-only chat.
345+- `journal`: publicly readable, invite-only for writing.
346+- `mailbox`: publicly writeable, can only be read by its host.
347+
348+Let's create an example mailbox:
349+
350+```
351+sampel-palnet:chat-cli> ;create mailbox /coolbox ^
352+```
353+
354+#### Delete
355+
356+Syntax: `;delete /name`
357+
358+Deletes a chat.
359+
360+### Status
361+
362+You'll see status notifications when people enter or leave chats you're subscribed to.
363+
364+#### Notifications off
365+
366+Syntax: `;set quiet`
367+
368+Turn off status (and config) notifications.
369+
370+#### Notifications on
371+
372+Syntax: `;unset quiet`
373+
374+Turn on status (and config) notifications.
375+
376+#### Chat glyphs
377+
378+Glyphs are found at the end of your prompt to as a quick indicator of where
379+your messages will be sent.
380+
381+Glyphs are assigned by chat hash out of the following list:
382+
383+```
384+> = + - } ) , . " ' ^ $ % & @
385+```
386+
387+Alphanumeric characters and `|#;:*~_` are reserved; all others (the
388+above list, and `\/!?({<`) can be manually assigned.
389+
390+For example, `-` the glyph at the end of the prompt below might indicates that
391+messages sent from this prompt will go to some chat with that glyph:
392+
393+```
394+~sampel-palnet:chat-cli-
395+```
396+
397+To see what chat is bound to a glyph, use the `;what` command followed by the
398+glyph in question, or use `;what` without specifying a glyph to see all of your
399+subscriptions which are bound to glyphs. For example, to see `=`:
400+
401+```
402+~sampel-palnet:chat-cli> ;what =
403+~dopzod/urbit-help
404+```
405+
406+To see all of your glyph-bound subscriptions:
407+
408+```
409+~sampel-palnet:chat-cli> ;what
410+> ~paldev/numismatic-forum
411+. ~middev/ny-martians
412+= ~dopzod/urbit-help
413+```
414+
415+Not every audience has a glyph, however. When the audience doesn't have a glyph,
416+such as in the case of direct-messaging a ship, we see their name at the end of
417+the prompt instead. Here we're talking directly to `~dannum-mitryl`:
418+
419+```
420+~sampel-palnet:chat-cli[~dannum-mitryl]
421+```
422+
423+#### Bind
424+
425+Syntax: `;bind [glyph] /chat-name`
426+
427+Assigns the chosen glyph to a chat owned by your ship.
428+
429+For example:
430+
431+```
432+~sampel-palnet:chat-cli> ;bind + /my-chat
433+```
434+
435+#### Unbind
436+
437+Syntax: `;unbind [glyph] /chat-name`
438+
439+Unassigns the chosen glyph from a chat owned by your ship.
440+
441+For example:
442+
443+```
444+~sampel-palnet:chat-cli> ;unbind + /my-chat
445+```
446+
447+#### Prefixes
448+
449+Received posts are prefixed with a glyph to let you know what the
450+audience is. You can activate an individual post to see the full
451+audience.
452+
453+There are a few special-purpose glyphs:
454+
455+- `|` - Informational messages
456+- `:` - Posts directly to you
457+- `;` - Posts to you and others (a multiparty conversation)
458+- `*` - Posts to a complex audience that doesn't directly include you.
459+
460+
461+### Configuration
462+
463+#### Set audience
464+
465+`;~ship/chat`
466+
467+Set audience to `~ship/chat`.
468+
469+#### Set audience by glyph
470+
471+Syntax: `;[glyph]`
472+
473+Set audience to the chat previously bound to the chosen glyph.
474+
475+#### Set audience to ship
476+
477+syntax `;~ship`
478+
479+Set audience to another ship.
480+
481+#### Set audience to own chat
482+
483+Syntax: `;%chat`
484+
485+Set audience to a chat on your own ship.
486+
487+#### Set audience and send message
488+
489+Syntax: `;~dannum-mitryl this is a private message`
490+
491+Set the audience and send a post in the same line. This works for all of the
492+above audience commands.
493+
494+Your audience is configured with regard to the following rules (in order):
495+
496+- if you manually set the audience, that audience.
497+- if you activated a post, the post you activated.
498+- audience of the last post sent.
499+
500+### Miscellaneous configuration
501+
502+#### Show timestamps
503+
504+Syntax: `;set showtime`
505+
506+Show the timestamp for each message. This is set by default.
507+
508+#### Hide timestamps
509+
510+Syntax: `;unset showtime`
511+
512+Stop showing the timestamp for each message.
513+
514+#### Change timezone
515+
516+Syntax: `;set timezone [+/-][hours]`
517+
518+Adjust the display of timestamps to a specific timezone. Relative to UTC.
519+
520+#### Sound notification on
521+
522+Syntax: `;set notify`
523+
524+Emit a terminal bell sound if your six-syllable ship name is mentioned in
525+a message. This is set by default.
526+
527+#### Sound notification off
528+
529+Syntax `;unset notify`
530+
531+Do not notify when your ship name is mentioned.
532+
533+#### Set width
534+
535+Syntax: `;set width [number]`
536+
537+Set the rendering width of `:chat-cli` to a specific number of characters.
538+(Minimum of 30.)
539+
540+
541+## Shell {#using-the-shell}
542+
543+The Dojo is our shell; it processes system commands and returns output. It's a
544+good place to quickly experiment with Urbit. On the surface the Dojo is just a
545+Hoon REPL. On the inside, the Dojo is a system for operating on and transforming
546+data in Urbit.
547+
548+### Quickstart
549+
550+You can use the Dojo to run arbitrary Hoon code, as well as non-Hoon system
551+commands.
552+
553+#### Math
554+
555+Evaluate a Hoon expression (whitespace matters):
556+
557+```
558+~your-urbit:dojo> (add 2 2)
559+~your-urbit:dojo> %+ add 2 2
560+```
561+
562+Tall-form Hoon may require multiple lines:
563+
564+```
565+~your-urbit:dojo> %+ add
566+~your-urbit:dojo< 2
567+~your-urbit:dojo< 2
568+```
569+
570+Hoon uses something called [the subject](@/docs/tutorials/hoon/the-subject-and-its-legs.md).
571+The Dojo has its own subject and that's where Hoon's equivalent of variables,
572+called faces, are stored.
573+
574+Use `=var` to save faces to the Dojo subject.
575+
576+```
577+~your-urbit:dojo> =foo (add 2 2)
578+```
579+
580+Note, however, that `=var` is Dojo syntax, not Hoon syntax. You cannot bind a
581+face in a `.hoon` file in this way.
582+
583+#### System commands
584+
585+Use `=dir` to set the current working directory:
586+
587+```
588+~your-urbit:dojo> =dir %/gen
589+```
590+
591+(`%` represents your current directory. For a complete explanation on urbit
592+paths, see the [filesystem section](#filesystem).)
593+
594+Generators (files in `/gen`) are run with `+`:
595+
596+```
597+~your-urbit:dojo> +hello 'world'
598+```
599+
600+Save output to a file in `%clay` with `*`:
601+
602+```
603+~your-urbit:dojo> *some/file/path/hoon 'hello world'
604+```
605+
606+Run system commands from `:hood`, like `reload`, using `|`:
607+
608+```
609+~your-urbit:dojo> |reload %eyre
610+```
611+
612+### Generators
613+
614+Generators are short Hoon scripts, saved as `.hoon` files in the `/gen`
615+directory. Many Dojo commands exist in the form of generators. The syntax for
616+running a generator is `+genname` for a generator saved as `genname.hoon`.
617+
618+#### `+cat`
619+
620+Accepts a path and displays the file. Similar to Unix `cat`.
621+
622+```
623+~your-urbit:dojo> +cat %/gen/curl/hoon
624+```
625+
626+#### `+code`
627+
628+Generates a code that is used to remotely log into your ship. No
629+arguments.
630+
631+```
632+~your-urbit:dojo> +code
633+```
634+
635+#### `+curl`
636+
637+Retrieves data from a URL. Accepts a `tape`. Similar to Unix `curl`.
638+
639+```
640+~your-urbit:dojo> +curl "http://nyt.com"
641+```
642+
643+#### `+hello`
644+
645+Just prints the argument. Accepts a `@ta`.
646+
647+```
648+~your-urbit:dojo> +hello 'mars'
649+```
650+
651+#### `+ls`
652+
653+Similar to Unix `ls`. Accepts a path.
654+
655+```
656+~your-urbit:dojo> +ls %/gen
657+~your-urbit:dojo> +ls /~talsur-todres/home/2/gen/program
658+```
659+
660+#### `+moon`
661+
662+Generates a random moon from a planet. No arguments.
663+
664+```
665+~your-urbit:dojo> +moon
666+```
667+
668+#### `+solid`
669+
670+Compile the current state of the kernel and output a
671+noun. Usually downloaded to a file in unix. No arguments.
672+
673+```
674+~your-urbit:dojo> .urbit/pill +solid
675+```
676+
677+#### `+test`
678+
679+Testrunner. Can test multiple generators at once, conventionally ones
680+in the `/test` folder. Takes a path.
681+
682+```
683+~your-urbit:dojo> +test /lib
684+```
685+
686+#### `+ticket`
687+
688+Generate a ticket for an urbit ship. Takes an urbit name (`@p`).
689+
690+
691+```
692+~your-urbit:dojo> +ticket ~talsur-todres-your-urbit
693+```
694+
695+#### `+tree`
696+
697+Generate a recursive directory listing. Takes a path.
698+
699+```
700+~your-urbit:dojo> +tree %/sys
701+```
702+
703+### Hood
704+
705+The hood is the system daemon. See `gen/hood` and `app/hood`.
706+
707+`|hi` - Sends a direct message. Sort of like Unix `write`. Accepts
708+an urbit name (`@p`) and a string (`tape`, which is text wrapped with double-quotes).
709+
710+```
711+~your-urbit:dojo> |hi ~binzod "you there?"
712+```
713+
714+`|link` / `|unlink` - Link / unlink a remote app. Accepts an
715+Urbit name and an app name.
716+
717+```
718+~your-urbit:dojo> |link ~talsur-todres %octo
719+```
720+
721+`|mass` - Prints the current memory usage of all the kernel modules.
722+No arguments.
723+
724+```
725+~your-urbit:dojo> |mass
726+```
727+
728+`|reload` - Reloads a kernel module (vane) from source. Accepts any
729+number of vane names.
730+
731+```
732+~your-urbit:dojo> |reload %clay %eyre
733+```
734+
735+`|reset` - Reloads `hoon.hoon` and all modules. No arguments.
736+
737+```
738+~your-urbit:dojo> |reset
739+```
740+
741+`|start` - Starts an app. Accepts an app name.
742+
743+```
744+~your-urbit:dojo> |start %curl
745+```
746+
747+---
748+
749+### Dojo manual
750+
751+#### Sources and sinks
752+
753+A Dojo command is either a **source** or a **sink**. A source is just something
754+that can be printed to your console or the result of some computation. A
755+sink is an **effect**: a change to the filesystem, a network message, a
756+change to your environment, or a typed message to an app.
757+
758+Sources can be chained together, but we can only produce one effect per
759+command.
760+
761+#### Sinks
762+
763+#### `=` - Set variable
764+
765+Set any environment variable:
766+
767+```
768+~your-urbit:dojo> =foo 42
769+~your-urbit:dojo> (add 2 foo)
770+
771+44
772+```
773+
774+Make sure to note that `=var` is Dojo syntax, not Hoon syntax. You cannot bind a
775+variable in a `.hoon` file in this way.
776+
777+#### Special variables
778+
779+There are a few special variables that the Dojo maintains.
780+
781+#### `:` - Send to app
782+
783+`:app` goes to a local `app`, `:~ship/app` goes to the `app` on `~ship`.
784+
785+Send a `helm-hi` message to `hood`:
786+
787+```
788+~your-urbit:dojo> :hood &helm-hi 'hi'
789+```
790+
791+Apps usually expect marked data, so `&` is often used here.
792+
793+#### `*` - Save in `%clay`
794+
795+Save a new `.hoon` file in `gen`:
796+
797+```
798+~your-urbit:dojo> *%/gen/foo/hoon '# hello'
799+```
800+
801+The last component of the path is expected to be the mark (or mime
802+type).
803+
804+#### `.` - Export to Unix
805+
806+Export a noun to Unix with `.`:
807+
808+```
809+~your-urbit:dojo> .foo/bar/baz (add 2 2)
810+```
811+
812+Which creates a file at `pier/.urb/put/foo/bar.baz`.
813+
814+This is very often used with `+solid`:
815+
816+```
817+~your-urbit:dojo> .urbit/pill +solid
818+```
819+
820+Which outputs a new `urbit.pill` to `pier/.urb/put/urbit.pill`
821+
822+### Sources
823+
824+#### `&` - Mark conversion
825+
826+Convert between marks using `&`, with the destination mark first. You can stack multiple mark conversions together, and some marks can only be converted to specific other marks. In this example, [Udon](@/docs/tutorials/sail-and-udon.md#udon) is converted to `&hymn` (a mark which supplies the `html`, `head`, `body`, and closing tags) first, before being converted to HTML:
827+
828+```
829+~your-urbit:dojo>&html &hymn &udon ';h1#hello: hello'
830+'<html><head></head><body><h1 id="hello">hello</h1></body></html>'
831+```
832+
833+Performing a conversion straight from Udon to the `&hymn` mark reveals a bit more about its mark conversion:
834+
835+```
836+~your-urbit:dojo>&hymn &udon ';h1#hello: hello'
837+[[%html ~] [[%head ~] ~] [[%body ~] [g=[n=%h1 a=~[[n=%id v="hello"]]] c=~[[g=[n=%$ a=~[[n=%$ v="hello"]]] c=~]]] ~] ~]
838+```
839+
840+As does converting straight from Udon to HTML:
841+
842+```
843+~your-urbit:dojo>&html &udon ';h1#hello: hello'
844+';h1#hello: hello'
845+```
846+
847+#### `_` - Run a function
848+
849+Use `_` to run a gate (or function):
850+
851+Write an arbitrary function and pass data to it:
852+
853+```
854+~your-urbit:dojo> _|=([a=@] (mul a 3)) 3
855+9
856+```
857+
858+Use a function to get the status code from an http request:
859+
860+```
861+~your-urbit:dojo> _|=([p=@ud q=* r=*] p) +http://google.com
862+301
863+```
864+
865+#### `+` `-` - HTTP requests
866+
867+`+http[s]://example.com` - sends a GET request
868+
869+`+http[s]://example.com &json [%s 'hi']` - sends a POST request with the
870+JSON `"hi"` in the body.
871+
872+`-http[s]://example.com &json [%s 'hi']` - sends a PUT request with the
873+JSON `"hi"` in the body.
874+
875+Note that the first of these is a source while the last two are sinks.
876+
877+#### `+` - Generators
878+
879+Generators are simple Hoon scripts loaded from the filesystem. They live
880+in `gen/`.
881+
882+An example of a generator that is built into your urbit is `+code`. It produces
883+the code needed to log into your ship remotely.
884+
885+```
886+~your-urbit:dojo> +code
887+fintyr-haldet-fassev-solhex
888+```
889+
890+### Variables
891+
892+You can use `=` to set an environment variable in Dojo, but there are
893+a few reserved names that have special uses.
894+
895+#### `dir`
896+
897+Current working `%clay` desk and revision. Read / write.
898+
899+**Examples:**
900+
901+```
902+~your-urbit:dojo> =dir %/gen
903+~your-urbit:dojo> +ls %
904+404/hoon docs/ dojo/hoon lib/ listen/hoon md static/udon talk/ testing/udon tree/main/ unmark/ womb/
905+```
906+
907+#### `lib`
908+
909+Current set of libraries (`/lib`) in your environment. Can be set
910+with `/+`. Read / write.
911+
912+**Examples:**
913+
914+```
915+~your-urbit:dojo> /+ number-to-words
916+```
917+Now we can use arms from lib/number-to-words.hoon
918+```
919+~your-urbit:dojo> (to-words:eng-us:number-to-words 123.456)
920+```
921+
922+#### `sur`
923+
924+Current set of structures (`/sur`) in your environment. Can be set
925+with `/-`. Read / write.
926+
927+**Examples:**
928+
929+```
930+~your-urbit:dojo> /- sole
931+```
932+Now we can use arms in sur/sole.hoon.
933+```
934+~your-urbit:dojo> `sole-effect:sole`[%bel ~]
935+```
936+
937+#### `now`
938+
939+The current (128-bit `@da`) time. Read-only.
940+
941+**Example:**
942+
943+```
944+~your-urbit:dojo> now
945+~2016.3.21..21.10.57..429a
946+```
947+
948+#### `our`
949+
950+The current urbit ship. Read-only.
951+
952+**Example:**
953+
954+```
955+~your-urbit:dojo> our
956+~your-urbit
957+```
958+
959+#### `eny`
960+
961+512 bits of entropy. Read-only.
962+
963+**Example:**
964+
965+```
966+~your-urbit:dojo> eny
967+\/0vnt.d474o.gpahj.jcf3o.448fh.2lamb.82ljm.8ol8u.b02vi.mrvvp.b7et2.knb7m.l8he\/
968+ 8.8qb9s.drm36.77n9b.a0qst.30g03.l5lb5.nvsbc.v39tn
969+\/
970+```
971+
972+### Troubleshooting
973+
974+If you encounter `%dy-edit-busy` while entering commands, it is
975+because your Dojo is blocked on a timer or an HTTP request. Type backspace
976+and your Dojo will end the blocked command.
977+
978+
979+## Filesystem {#filesystem}
980+
981+Urbit has its own revision-controlled filesystem, Clay. Clay is a typed, global,
982+referentially transparent namespace. An easy way to think about it is like typed
983+`git`.
984+
985+The most common way to use Clay is to mount a Clay node in a Unix directory. The mounted directory is always at the root of your pier directory.
986+
987+### Quickstart
988+
989+This quick-start guide will walk you through some common commands. Follow along
990+using your Dojo. When you get a `>=` message after entering a command, this means
991+that the command was successful.
992+
993+It's important to note that whenever you want to sync changes from your Unix
994+directory to your ship, you must use the `|commit %desk` command, where `%desk`
995+is the desk that you'd like to sync to.
996+
997+When developing it's a good idea to use a separate desk. Create a `%sandbox`
998+desk based on the `%home` desk:
999+
1000+```
1001+~your-urbit:dojo> |merge %sandbox ~your-urbit %home
1002+```
1003+
1004+Running `our` produces your ship-name, meaning that you can run the following
1005+command instead of typing out the entire thing. Useful for comets due to their
1006+very long names.
1007+
1008+```
1009+~your-urbit:dojo> |merge %sandbox our %home
1010+```
1011+
1012+Most of the time we want to use Clay from Unix. Mount the entire contents of
1013+your `sandbox` desk to Unix:
1014+
1015+```
1016+~your-urbit:dojo> |mount /=sandbox=
1017+```
1018+
1019+To explore the filesystem from inside Urbit `+ls` and `+cat` are useful. `+ls`
1020+displays files in the current directory, and `+cat` displays the contents of
1021+a file.
1022+
1023+We can use `%` to mean "current directory." The result of the command below
1024+is just like using `ls` in a Unix terminal.
1025+
1026+```
1027+~your-urbit:dojo> +ls %
1028+```
1029+
1030+Notice how `+cat %` does the same thing. That's because everything in Clay,
1031+including directories, is a file.
1032+
1033+Sync from your friend `~some-ship`'s `%experiment` desk to your
1034+`%sandbox` desk:
1035+
1036+```
1037+~your-urbit:dojo> |sync %sandbox ~some-ship %experiment
1038+```
1039+
1040+If and when your sync is successful, you will receive a message:
1041+
1042+```
1043+activated sync from %experiment on ~some-ship to %sandbox
1044+```
1045+
1046+The ship that you sync from will get their own message indicating that you're
1047+both connected as peers:
1048+
1049+```
1050+; ~your-urbit is your neighbor.
1051+```
1052+
1053+---
1054+
1055+### Clay manual
1056+
1057+#### Paths
1058+
1059+A path in Clay is a list of URL-safe text, restricted to the characters
1060+`[a z]`,`[0 9]`, `.`, `-`, `_`, and `~`. Formally this is a `(list knot)`,
1061+meaning that each segment, delineated by `/`, is of the `knot` ASCII-text type.
1062+In other words, paths are expressed as `/foo/bar/baz`. File extensions are
1063+separated from file names with `/`, not `.`. Extensions are syntactically
1064+identical to subdirectories, except that they must terminate the path.
1065+
1066+Paths begin with a piece of data called a `beak`. A beak is formally a
1067+`(p=ship q=desk r=case)`; it has three components, and might look like
1068+`/~dozbud-namsep/home/11`.
1069+
1070+The first `beak` component is `ship`, which is, as you might guess, the name of
1071+an Urbit ship. The second component is `desk`, which is a workspace meant to
1072+contain other directories; the default desk is `%home`. The third component is
1073+`case`, which represents version information in various ways: date and time;
1074+a version sequence, which is a value incremented by one whenever a file on the
1075+given `desk` is modified; or an arbitrary plaintext label.
1076+
1077+You can find what your `beak` is at any given moment by
1078+typing `%` in the Dojo and looking at the first three results.
1079+
1080+We use `beak`s because, unlike the current internet, the Urbit network uses a
1081+global namespace. That means that a file named `example.hoon` in the `/gen`
1082+directory on the `%home` desk of your ship `~lodleb-ritrul` would have a
1083+universal address to anyone else on the network:
1084+`/~lodleb-ritrul/home/186/gen/example/hoon`. That, of
1085+course, doesn't mean that everyone on the network has privileges to access that
1086+path.
1087+
1088+The structure that combines a `beak` with further path information is called a
1089+`beam`.
1090+
1091+#### Relative paths
1092+
1093+The `%` command, which we gestured at in the above section, represents the
1094+**relative path**, which is the path where you are currently working. If your
1095+working directory is just your home desk, indicated by the
1096+prompt `~your-planet:dojo>`, then running the command below will print your
1097+working directory's `beam` information: your `beak`, and a `~` that represents
1098+the empty list since no path is present.
1099+
1100+```
1101+~your-urbit:dojo> %
1102+```
1103+
1104+`%`s can be stacked to indicate one level further up in the hierarchy for each
1105+additional `%`. Try the following command:
1106+
1107+```
1108+~your-planet:dojo> %%%
1109+```
1110+
1111+You'll probably notice that it only has your ship name and the empty list. The
1112+two additional `%`s abandoned the `case` and the `desk` information by moving
1113+up twice the hierarchy.
1114+
1115+There are no local relative paths. `/foo/bar` must be written as
1116+`%/foo/bar`.
1117+
1118+#### Substitution
1119+
1120+You don't need to write out the explicit path every time you want to reference
1121+somewhere outside of your working directory. You can substitute `=` for the
1122+segments of a path.
1123+
1124+Recall that a full address in the the Urbit namespace is a `beam`: the
1125+`/ship/desk/case/path`. If you've switched to another desk before, you're
1126+already familiar with substitution syntax:
1127+
1128+```
1129+~your-urbit:dojo> =dir /=sandbox=
1130+```
1131+
1132+The above command substitutes uses substitution to use your current `ship` and
1133+`case`; only the `desk` argument, which is located between the other two, is
1134+given something new. Without substitution, you would need to write:
1135+
1136+```
1137+~your-urbit:dojo> =dir /~your-urbit/home/85
1138+```
1139+
1140+Substitutions work the same way in `beak`s (the `ship/desk/case` part) and
1141+paths. For example, if you are in the `/gen` directory, you can reference a file
1142+in the `/app` directory like below. (`+cat` displays the contents of a file).
1143+
1144+```
1145+~your-urbit:dojo> =dir %/gen
1146+~your-urbit:dojo/=/=/~2018.10.2..00.35.44..d7e8/gen> +cat /===/app/curl/hoon
1147+```
1148+
1149+Note what was substituted out, and note that we don't need to separate `=` with
1150+`/`.
1151+
1152+If we changed our working directory to something called `/gen/gmail`, we could
1153+access a file called
1154+
1155+```
1156+~your-urbit:dojo/=/=/~2018.10.2..00.35.44..d7e8/gen> =dir %/gmail
1157+~your-urbit:dojo/=/=/~2018.10.2..00.35.44..d7e8/gen/gmail> +cat /===/app/=/split/hoon
1158+```
1159+
1160+Because both paths share a directory named `/gmail` at the same position in the
1161+address hierarchy – which, if you recall, is just a `list` – the above command
1162+works!
1163+
1164+We can do the same thing between desks. If `%sandbox` has been merged with
1165+`%home`, the following command will produce the same results as the above
1166+command.
1167+
1168+```
1169+~your-urbit:dojo/=/=/~2018.10.2..00.35.44..d7e8/gen/gmail> +cat /=sandbox=/app/=/split/hoon
1170+```
1171+
1172+Most commonly this is used to avoid having to know the current revision
1173+number in the `dojo`: `/~lodleb-ritrul/home/~2018.10.2..00.35.44..d7e8/gen/example/hoon`
1174+
1175+#### Changing directories
1176+
1177+Change the working directory with `=dir`. It's our equivalent of the Unix `cd`.
1178+
1179+For example, the syntax to navigate to `/home/gen/ask` is:
1180+
1181+```
1182+~your-urbit:dojo> =dir /=home=/gen/ask
1183+```
1184+
1185+This command will turn your prompt into something like this:
1186+
1187+```
1188+~your-urbit:dojo/=/=/~2018.10.2..00.35.44..d7e8/gen/ask>
1189+```
1190+
1191+Using `=dir` without anything else uses the null path, which returns you to
1192+your home desk.
1193+
1194+```
1195+~your-urbit:dojo/=/=/~2018.10.2..00.35.44..d7e8/gen/ask> =dir
1196+```
1197+
1198+Your dojo prompt will turn back into `~your-urbit:dojo>`.
1199+
1200+To go up levels in the path hierarchy, recall the relative path expression
1201+`%`. Stacking them represents another level higher in the hierarchy than
1202+the current working directory for each `%` beyond the initial. The command below
1203+brings you one level up:
1204+
1205+```
1206+~your-urbit:dojo> =dir %/gen
1207+~your-urbit:dojo/=/=/~2018.10.2..00.35.44..d7e8/gen> =dir %%
1208+```
1209+
1210+### Revision-control
1211+
1212+#### Mount
1213+
1214+Syntax: `|mount /clay/path [Unix-name]`
1215+
1216+Mount the `clay-path` at the Unix mount point `Unix-name`.
1217+
1218+**Examples:**
1219+
1220+```
1221+|mount %/gen generators
1222+```
1223+
1224+Mounts `%/gen` to `/generators` inside your pier directory.
1225+
1226+#### Unmount
1227+
1228+```
1229+|unmount [clay-path || Unix-name]
1230+```
1231+
1232+Unmount the path or name from Unix.
1233+
1234+**Examples:**
1235+
1236+```
1237+|unmount %/gen
1238+```
1239+
1240+Unmounts the Clay path `%/gen` from whatever name it was mounted as.
1241+
1242+```
1243+|unmount %generators
1244+```
1245+
1246+Unmounts the Unix path `/generators`.
1247+
1248+#### Merge
1249+
1250+```
1251+|merge desk beak[, =gem strategy]
1252+```
1253+
1254+Merges a `beak` into a `desk` using an optional merge `strategy`.
1255+
1256+A `beak` is a ship-desk-case triple, encoded as a
1257+path(`/~dozbud/home/2`)
1258+
1259+**Examples:**
1260+
1261+```
1262+|merge %home-work /=home=, =gem %fine
1263+```
1264+
1265+Merge `/=home=` into `%home-work` using merge strategy `%fine`.
1266+
1267+```
1268+|merge %examples ~wacbex-ribmex %examples
1269+```
1270+
1271+Merge the `%examples` desk from `~waxbex-ribmex`
1272+
1273+#### Sync
1274+
1275+```
1276+|sync desk plot [plot-desk]
1277+```
1278+
1279+Subscribe to continuous updates from remote `plot` on local `desk`.
1280+`plot-desk` can specify the remote `desk` name. When omitted it defaults
1281+to being the same as `desk`. Non-comet urbits have
1282+`|sync %home ~parent %kids` automatically set up (where `~parent` is the
1283+planet that issued a moon, the star that issued a planet, or the galaxy
1284+that issued a star).
1285+
1286+**Examples:**
1287+
1288+```
1289+|sync %home-local ~dozbud %home
1290+
1291+|sync %home ~doznec
1292+```
1293+
1294+#### Unsync
1295+
1296+```
1297+|unsync desk plot [plot-desk]
1298+```
1299+
1300+Unsubscribe from updates from remote `plot` on local `desk` with
1301+optional `plot-desk`. Arguments must match original `|sync` command.
1302+
1303+Example:
1304+
1305+```
1306+|unsync %home-local ~dozbud %home
1307+```
1308+
1309+#### Label
1310+
1311+```
1312+|label desk name`
1313+```
1314+
1315+Label the current version of `desk` `name`.
1316+
1317+Example:
1318+
1319+```
1320+|label %home release
1321+```
1322+
1323+### Merge strategies
1324+
1325+`%init` - used if it's the first commit to a desk. Also can be used to
1326+"reinitialize" a desk – revision numbers keep going up, but the new
1327+revision isn't necessarily a descendent of the previously numbered
1328+version, allowing merges to be rerun.
1329+
1330+`%this` - keep what's in Bob's desk, but join the ancestry.
1331+
1332+`%that` - take what's in Alice's desk, but join the ancestry. This is
1333+the reverse of `%this`. This is different from `%init` because the new
1334+commit has both sides in its ancestry.
1335+
1336+`%fine` - "fast-forward" merge. This succeeds if and only if one head is in the
1337+ancestry of the other.
1338+
1339+`%meet`, `%mate`, and `%meld` - find the most recent common ancestor to
1340+use as our merge base.
1341+
1342+A `%meet` merge only succeeds if the changes from the merge base to
1343+Alice's head (hereafter, "Alice's changes") are in different files than
1344+Bob's changes. In this case, the parents are both Alice's and Bob's
1345+heads, and the data is the merge base plus Alice's changed files plus
1346+Bob's changed files.
1347+
1348+A `%mate` merge attempts to merge changes to the same file when both
1349+Alice and Bob change it. If the merge is clean, we use it; otherwise, we
1350+fail. A merge between different types of changes – for example,
1351+deleting a file vs changing it – is always a conflict. If we succeed,
1352+the parents are both Alice's and Bob's heads, and the data is the merge
1353+base plus Alice's changed files plus Bob's changed files plus the merged
1354+files.
1355+
1356+A `%meld` merge will succeed even if there are conflicts. If there are
1357+conflicts in a file, then we use the merge base's version of that file,
1358+and we produce a set of files with conflicts. The parents are both
1359+Alice's and Bob's heads, and the data is the merge base plus Alice's
1360+changed files plus Bob's changed files plus the successfully merged
1361+files plus the merge base's version of the conflicting files.
1362+
1363+`%auto` - meta-strategy. Check to see if Bob's desk exists, and if it
1364+doesn't we use an `%init` merge. Otherwise, we progressively try
1365+`%fine`, `%meet`, and `%mate` until one succeeds. If none succeed, we
1366+merge Bob's desk into a scratch desk. Then, we merge Alice's desk into
1367+the scratch desk with the `%meld` option to force the merge. Finally, we
1368+annotate any conflicts, if we know how.
1369+
1370+### Manipulation
1371+
1372+#### `+cat`
1373+
1374+Syntax: `+cat path [path ...]`
1375+
1376+Similar to Unix `cat`. `+cat` takes one or more `path`s, and prints their
1377+contents. If that `path` is a file, the contents of the file is printed. If the
1378+`path` terminates in a directory, the list of names at that path is produced.
1379+
1380+#### `+ls`
1381+
1382+Syntax: `+ls path`
1383+
1384+Similar to Unix `ls`. `+ls` takes a single `path`.
1385+
1386+Produces a list of names at the `path`.
1387+
1388+```
1389+~your-urbit:dojo> +cat %/our/home/gen/curl/hoon
1390+```
1391+
1392+#### `|rm`
1393+
1394+Syntax: `|rm path`
1395+
1396+Remove the data at `path`. `Path` must be a path to the actual node, not a
1397+'directory'.
1398+
1399+#### `|cp`
1400+
1401+Syntax: `|cp to from`
1402+
1403+Copy the file at `from` into the path `to`.
1404+
1405+#### `|mv`
1406+
1407+Syntax: `|mv to from`
1408+
1409+Move the file at `from` into the path `to`.
1410+
1411+In Clay, `|mv` is just a shorthand for `|cp` then `|rm`. The `|rm`
1412+doesn't happen unless the `|cp` succeeds.
sass/_main.scss+465−528
@@ -1,646 +1,583 @@
1−/*
2− * core
3− */
4−@import "indigo.scss";
5−body {
6− font-family: 'Inter UI', -apple-system, BlinkMacSystemFont, Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
7− font-size: (3.5rem / 4);
8− line-height: (6rem / 4);
9− color: #000000;
10−}
11−
12−a {
13− color: #000;
14−}
15−
16−p img {
17− margin: (4rem / 4) 0;
18− width: 100%;
19−}
20−
21−iframe {
22− max-width: 100%;
23−}
24−
25−/*
26− * lay-out
27− */
28−
29−.main-wrapper {
30− margin-top: (24rem / 4);
31−}
32−
33−.wrapper {
34− position: relative;
35− margin: 0 auto;
36− padding: 0 (4rem / 4);
37− max-width: 960px;
38−}
39−
40−.container {
41− display: flex;
42− padding-bottom: (32rem / 4);
43−}
44−
45−.pop-up {
46− width: 100%;
47− max-width: 600px;
48− margin: (28rem / 4) auto;
49− background: #fff;
50−}
51−
52−.container--fixed {
53− position: fixed;
54− margin-top: -(24rem / 4);
55−}
1+// importing typography and parent styles
2+@import "grid";
3+@import "indigo";
4+@import url('https://rsms.me/inter/inter-ui.css');
565
57−// Hack to left-align top-bar text with content
58−.top-bar-inner {
59− max-width: 960px;
60− margin: 0 auto;
61− p {
62− margin-left: (100% / 6);
6+@font-face {
7+ font-family: "Source Code Pro";
8+ src: url("https://storage.googleapis.com/media.urbit.org/fonts/scp-extralight.woff");
9+ font-weight: 200;
6310 }
64−}
6511
66−.content-nav {
67− width: 20%;
68− min-width: 200px;
69− padding-right: (1rem / 4);
70− margin-top: (24rem / 4);
71− &__item {
72− line-height: (8rem / 4);
73− margin-bottom: (1rem / 4);
74− }
75− li {
76− font-size: inherit;
77− line-height: inherit;
12+ @font-face {
13+ font-family: "Source Code Pro";
14+ src: url("https://storage.googleapis.com/media.urbit.org/fonts/scp-light.woff");
15+ font-weight: 300;
7816 }
79−}
8017
81−.content-nav-icon {
82− position: fixed;
83− top: (24rem / 4);
84− width: 10px;
85− height: 10px;
86− cursor: pointer;
87− &:before {
88− content: '';
89− position: absolute;
90− height: 0;
91− border-top: 10px solid transparent;
92− border-bottom: 10px solid transparent;
93− border-right: 10px solid #000;
18+ @font-face {
19+ font-family: "Source Code Pro";
20+ src: url("https://storage.googleapis.com/media.urbit.org/fonts/scp-regular.woff");
21+ font-weight: 400;
9422 }
95−}
9623
97−.container--overflowed {
98− height: 100%;
99− z-index: 0;
100− .content-nav {
101− &__search-bar {
102− width: 100%;
103− padding-left: 0rem;
104− }
105− &__index {
106− height: calc(100% - 48px);
107− overflow-y: scroll;
108− &__item {
109− &:last-child{
110− padding-bottom: 8rem;
111− }
112− }
113− }
114− .list:first-child {
115− padding-bottom: (14rem / 4);
116− }
117− .list li:last-child .subsub-list li:last-child {
118− padding-bottom: 0;
119− }
24+ @font-face {
25+ font-family: "Source Code Pro";
26+ src: url("https://storage.googleapis.com/media.urbit.org/fonts/scp-medium.woff");
27+ font-weight: 500;
12028 }
121−}
12229
123−.content-nav-spacer {
124− width: 20%;
125− min-width: 200px;
126− padding-right: (5rem / 4);
127− &__item {
128− line-height: (8rem / 4);
129− margin-bottom: (1rem / 4);
30+ @font-face {
31+ font-family: "Source Code Pro";
32+ src: url("https://storage.googleapis.com/media.urbit.org/fonts/scp-bold.woff");
33+ font-weight: 600;
13034 }
131−}
13235
133−.content, .content-spacer {
134− flex-basis: 66.66666667%;
135− max-width: 66.66666667%;
136−}
137−
138−.content {
139− position: relative;
140− z-index: 3;
141− margin-top: -(16rem / 4);
142−}
36+ @font-face {
37+ font-family: "Source Code Pro";
38+ src: url("https://storage.googleapis.com/media.urbit.org/fonts/scp-black.woff");
39+ font-weight: 700;
40+ }
14341
144−.content-nav-icon {
145− display: none;
146−}
42+// layout
14743
148−.no-side-nav-column, .nav-column {
149− flex-basis: 33.33333333%;
150− max-width: 33.33333333%;
151− margin-left: 16.66666667%;
44+body {
45+ font-family: "Inter", "Inter UI", -apple-system, sans-serif;
46+ -webkit-font-smoothing: antialiased;
47+ @extend .grid12, .mh4;
48+ font-size: 1rem;
49+ color: #000;
50+ // Something about the main page video is causing the page to overflow.
51+ max-width:100vw;
52+ overflow-x:hidden;
53+}
54+
55+nav {
56+ font-size: 1rem;
57+ line-height: 1.33;
58+ // If you need to flush the nav to break
59+ // the body's margin, use this:
60+ &.full-left {
61+ margin-left: -32px;
62+ padding-left: 32px;
63+ }
64+ &.no-break {
65+ min-width: 232px;
66+ }
67+ &.home li:not(.mt4):not(.mt3) {
68+ margin-top: 8px;
69+ margin-bottom: 8px;
70+ }
15271}
15372
154−.list, .sub-list {
155− list-style: none;
156− margin: 0;
157−}
73+// full-bleed backgrounds
15874
159−.sub-list {
160− padding-left: (4rem / 4);
161− .sub-list {
162− padding-left: 0;
163− }
164− .subsub-list {
165− padding-left: (4rem / 4);
166− }
75+.full-bleed {
76+ margin: 0 -32px 0 -32px;
77+ padding: 0 32px 0 32px;
16778}
16879
169−.list {
170− padding: 0;
171− &__item {
80+// full-bleed images
81+figure.full-bleed {
82+ margin: 0 -32px 0 -32px;
17283 padding: 0;
173− }
17484}
17585
176−.list--horizontal {
177− display: flex;
178− justify-content: flex-start;
179− .list__item {
180− margin-right: (4rem / 4);
181− }
86+section.full-bleed.video-container {
87+ margin: 0 -32px 0 -32px;
88+ padding-top: 0;
18289}
18390
184−.body-regular {
185− margin-bottom: (7rem / 4);
91+figcaption.home {
92+ margin: 4rem auto 0 auto;
18693}
18794
188−.video-wrapper {
189− position: relative;
190− padding-bottom: 56.25%;
191− height: 0;
192−}
95+// margin: 0 auto util
19396
194−.video-wrapper iframe {
195− position: absolute;
196− top: 0;
197− left: 0;
198− width: 100%;
199− height: 100%;
200− border: none;
97+.m0a {
98+ margin: 0 auto;
20199}
202100
203−/*
204− * components
205− */
206−
207−.header {
208− position: fixed;
209− height: (24rem / 4);
210− width: 100%;
211− z-index: 2;
212− top: 0;
213− -webkit-touch-callout: none; /* iOS Safari */
214− -webkit-user-select: none; /* Safari */
215− -khtml-user-select: none; /* Konqueror HTML */
216− -moz-user-select: none; /* Firefox */
217− -ms-user-select: none; /* Internet Explorer/Edge */
218− user-select: none; /* Non-prefixed version, currently
219− supported by Chrome and Opera */
220− &__navigation {
221− display: none;
222− }
223− &__nav-icon {
224− position: absolute;
225− margin-left: (4rem / 4);
226− width: (6rem / 4);
227− height: (10rem / 4);
228− left: 0;
229− top: (6rem / 4);
230− z-index: 3;
231− cursor: pointer;
232− &:before, &:after {
233− content: '';
234− position: absolute;
235− width: 100%;
236− height: (1rem / 4);
237− background: #000;
238− margin-bottom: (4rem / 4);
239− top: 50%;
240− left: 0;
241− transform-origin: 50%;
242− transition: all 0.1s linear;
101+a {
102+ color: inherit;
103+ text-decoration: none;
104+}
105+
106+article {
107+ // default
108+ // links on body text
109+ @extend .lh-copy;
110+ a {
111+ @extend .bb, .b--black;
112+ &.mono {
113+ border-bottom: 0;
114+ }
243115 }
244− &:before {
245− transform: translate(0, -7px);
116+ // post directories
117+ li {
118+ margin: 0rem 1rem 1rem 1rem;
246119 }
247− &:after {
248− transform: translate(0, 7px);
120+ // specific to homepage
121+ nav li {
122+ margin: 0;
249123 }
250− }
251− &__search-icon {
252− -webkit-transform: rotate(-45deg);
253− vertical-align: bottom;
254− }
255124}
256125
257−.has-active-main-nav {
258− overflow: hidden;
259− .header {
260− z-index: 4;
261− background: #000;
262− height: 100%;
263− &__navigation {
264− position: fixed;
265− height: 100%;
266− width: 100%;
267− overflow-y: scroll;
268− display: block;
269− }
270− &__nav-icon {
271− &:before, &:after {
272− bottom: 0;
273− background: #fff;
274− }
275− &:before {
276− transform: rotate(45deg);
277− }
278− &:after {
279− transform: rotate(-45deg);
280− }
126+footer nav {
127+ // non-flattened pagination
128+ &.previous p:first-of-type:not([data-flat=true])::after {
129+ content: "-->";
130+ font-size: 1.25rem;
131+ position: absolute;
132+ right: -36px;
133+ top: 13px;
134+ font-family: "Inter UI", sans-serif;
281135 }
282− a, h2, .h2, h4, .h4 {
283− color: #fff;
136+ &.next p:first-of-type:not([data-flat=true])::before {
137+ content: "<--";
138+ font-size: 1.25rem;
139+ position: absolute;
140+ left: -36px;
141+ top: 13px;
142+ font-family: "Inter UI", sans-serif;
143+ }
144+ // flattened pagination
145+ &.previous p:first-of-type::after {
146+ content: "->";
147+ font-size: 1rem;
148+ position: absolute;
149+ right: -36px;
150+ font-family: "Inter UI", sans-serif;
151+ }
152+ &.next p:first-of-type::before {
153+ content: "<-";
154+ font-size: 1rem;
155+ position: absolute;
156+ left: -36px;
157+ font-family: "Inter UI", sans-serif;
284158 }
285− }
286159}
287160
288−.posts {
289− &__content {
290− z-index: 3;
291− margin-left: -(8rem / 4);
292− }
293−}
161+// essay template
294162
295−.footer {
296− width: 100%;
163+body.essay {
164+ h1 {
165+ font-size: 1rem;
166+ max-width: 95vw;
167+ }
168+ &:not(.bg-white) {
169+ *:not(.search-overlay, nav span) {
170+ color: inherit;
171+ }
172+ p a {
173+ border-bottom: 1px solid;
174+ }
175+ nav span, nav a:not(.section) {
176+ color: rgba(175,175,175,0.4);
177+ }
178+ nav a.section {
179+ color: inherit;
180+ }
181+ // We want the search to not inherit the colors from custom styles
182+ // on essays. Thus, *very selective styles*.
183+ .search-overlay, #search-results ul.search-results__items li a,
184+ #search-results ul.search-results__items li span {
185+ color: black;
186+ }
187+ }
188+ img {
189+ display: block;
190+ // margin: 0 auto;
191+ }
192+ article > *:not(figure):not(picture) {
193+ grid-area: auto / 4 / auto / 10;
194+ @extend .measure-wide;
195+ }
297196}
298197
299−.form {
300− width: 100%;
301− max-width: 320px;
198+// components
199+ // ul reset
200+ul {
201+ margin-block-start: 0;
202+ margin-block-end: 0;
203+ padding-inline-start: 0;
204+ padding-inline-end: 0;
302205}
303206
304−.padding-none {
305− padding: 0 !important;
207+ // p reset
208+ul p {
209+ margin-block-start: 0;
210+ margin-block-end: 0;
306211}
307−
308−.border-none {
309− border: none !important;
212+ // figure reset
213+figure {
214+ margin: 0;
310215}
311216
312−.b-transparent {
313− background: rgba(0,0,0,0.4);
217+ // images for posts
218+img {
219+ max-width: 100%;
314220}
315221
316−.top0 {
317− top: 0;
222+ // flatten headers
223+h1, h2, h3, h4, h5 {
224+ margin-block-start: 0;
225+ margin-block-end: 0;
226+ @extend .fw6;
227+ font-size: 1rem;
318228}
319229
320−.float-right {
321− float: right;
230+h1, .f1 {
231+ @extend .lh-solid;
322232}
323233
324−.search-overlay {
325− .search-bar {
326− &__input {
327− padding-left: 40px;
328− }
329− }
234+h2, .f2, h3, .f3 {
235+ @extend .lh-title;
330236}
331237
332−.search-results {
333− max-height: 400px;
334− &__item a:hover {
335− background: #F9F9F9;
336− span {
337− display:inline-block;
338− }
339− }
238+h3 {
239+ padding: 2rem 0 1rem 0;
340240}
341241
342−.has-active-search-window {
343− .search-overlay {
344− display: block;
345− }
242+h4 {
243+ padding: 1rem 0 0.5rem 0;
346244}
347245
348−#search-reset {
349− cursor: pointer;
350− user-select: none;
246+ // author and ship styling
247+span[rel=author] {
248+ @extend .fw4;
249+ margin-right: 5px;
351250}
352251
353−.form--big {
354− max-width: 390px;
355− .btn {
356− width: 100%;
357− }
252+address {
253+ display: inline;
254+ font-style: normal;
358255}
359256
360−.hoonschool-application {
361− &__experience {
362− resize: vertical;
363− }
257+ // post and nav lists
258+ul.posts, nav ul, nav li {
259+ list-style-type: none;
364260}
365261
366−.tippy-tooltip {
367− border-radius: 0px;
262+nav ul.docs {
263+ line-height: 30px;
368264}
369265
370−/*
371− * styling
372− */
373−
374−// remove default x icon
375− input[type="search"]::-webkit-search-decoration,
376− input[type="search"]::-webkit-search-cancel-button,
377− input[type="search"]::-webkit-search-results-button,
378− input[type="search"]::-webkit-search-results-decoration {
379− display: none;
266+ // pagination
267+nav.previous, nav.next {
268+ max-width: 40% !important;
380269}
381270
382−input[type="search"] {
383− border: 1px solid #B1B2B3;
384− font-size: (4rem / 4);
385− line-height: (6rem / 4);
386− transition: all 0.1s linear;
387− padding-right: 40px;
388− position: relative;
389− border-radius: 0 !important;
271+ // search button and overlay
272+#js-search-window-toggle {
273+ border: 0;
274+ font-family: "Inter", sans-serif;
275+ position: relative;
276+ // width: 80%;
277+ // min-width: 110px;
278+ text-align: left;
279+ background: transparent;
280+ span#search-icon {
281+ display: inline-block;
282+ transform: translate(-7px, 2px) rotate(-45deg);
283+ }
284+ span.search-slash {
285+ font-size: 0.75em;
286+ position: absolute;
287+ right: 0px;
288+ top: 6px;
289+ padding: 6px;
290+ border: 1px solid #b1b2b3;
291+ border-radius: 3px;
292+ }
293+}
294+.has-active-search-window {
295+ .search-overlay {
296+ display: block;
297+ margin: 0 -32px 0 -32px;
298+ padding: 0 32px 0 32px;
299+ height: 100vh;
300+ }
390301}
391302
392−textarea, input[type="text"], input[type="email"], input[type="number"], input[type="search"], select {
393− border: 1px solid #000;
394− padding: 12px;
395− width: 100%;
396− outline: none;
397− box-sizing: border-box;
398− &:active, &:focus {
399− border: 1px solid #000000;
400− }
401− &:required, &:invalid {
402− box-shadow: none !important;
403− border: 1px solid #EE892B;
404− color: #EE892B;
405− }
303+.b-transparent {
304+ background: rgba(0,0,0,0.4);
406305}
407306
408−textarea {
409− resize: horizontal;
307+.pop-up {
308+ width: 100%;
309+ max-width: 600px;
310+ margin: (28rem / 4) auto;
311+ background: #fff;
410312}
411313
412−button, .btn {
413− font-family: 'Inter UI', -apple-system, BlinkMacSystemFont, Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
414− font-weight: 500;
415− font-size: (4rem / 4);
416− line-height: (4rem / 4);
417− user-select: none;
418− padding: (3rem /4) (6rem / 4);
419− margin: 0 0 6px;
420− border: none;
421− cursor: pointer;
314+input[type="search"]::-webkit-search-decoration,
315+input[type="search"]::-webkit-search-cancel-button,
316+input[type="search"]::-webkit-search-results-button,
317+input[type="search"]::-webkit-search-results-decoration {
318+ display: none;
422319}
423320
424−.search-bar {
425− border: 1px solid #B1B2B3;
426− background: #fff;
427− font-size: (4rem / 4);
428− transition: all 0.1s linear;
429− padding: 12px 12px 12px 40px;
430− position: relative;
431− font-weight: normal;
432− text-align: left;
433− box-shadow: none !important;
434− color: #B1B2B3;
321+input[type="search"] {
322+ font-size: (4rem / 4);
323+ line-height: (6rem / 4);
324+ transition: all 0.1s linear;
325+ padding-right: 40px;
326+ position: relative;
327+ border-radius: 0 !important;
328+ &:focus {
329+ outline: 0;
330+ border: 0;
331+ }
435332}
436333
437−.has-valid-input {
438− position: relative;
439− &:after {
440− content: '✓';
441− color: #2AA779;
442− position: absolute;
443− right: 10px;
444− top: 50%;
445− transform: translate(0,-50%);
446− width: 15px;
447− height: 24px;
448− margin-top: -4px;
449− }
450− input[type="text"], input[type="email"], input[type="number"] {
451− border: 1px solid #2AA779;
334+.search-bar {
335+ background: #fff;
336+ font-size: (4rem / 4);
337+ transition: all 0.1s linear;
338+ padding: 12px 0 12px 0;
339+ position: relative;
340+ font-weight: normal;
341+ text-align: left;
342+ box-shadow: none !important;
343+ color: #B1B2B3;
344+ width: 100%;
345+ padding-left: 0rem;
452346 }
453−}
454347
348+ .header__search-icon {
349+ transform: translateY(-1px) rotate(-45deg) scale(1.5);
350+ vertical-align: bottom;
351+ }
455352
456−/*
457− * typography
458− */
353+ .search-overlay {
354+ .search-bar {
355+ &__input {
356+ padding-left: 40px;
357+ }
358+ }
359+ }
459360
460−@import url('https://rsms.me/inter/inter-ui.css');
361+ .search-results {
362+ max-height: 400px;
363+ ul {
364+ position: relative;
365+ }
366+ &__item a:hover {
367+ background: #F9F9F9;
368+ span {
369+ display: inline-block;
370+ &.arrow {
371+ display: inline;
372+ position: absolute;
373+ right: 20px;
374+ }
375+ }
376+ }
377+ }
378+ .glossary-results__item {
379+ padding: 0 1rem 0 1rem;
380+ &:hover {
381+ background-color: #F9F9F9;
382+ }
383+ }
461384
462−@font-face {
463− font-family: "Source Code Pro";
464− src: url("https://storage.googleapis.com/media.urbit.org/fonts/scp-extralight.woff");
465− font-weight: 200;
385+ #search-reset {
386+ cursor: pointer;
387+ font-family: "Inter UI", sans-serif;
388+ user-select: none;
389+ transform: scale(1.5);
390+ }
391+ // tooltipping
392+.tippy-tooltip {
393+ border-radius: 0px;
466394}
467395
468−@font-face {
469− font-family: "Source Code Pro";
470− src: url("https://storage.googleapis.com/media.urbit.org/fonts/scp-light.woff");
471− font-weight: 300;
396+.tippy-content {
397+ color: white;
472398}
473399
474−@font-face {
475− font-family: "Source Code Pro";
476− src: url("https://storage.googleapis.com/media.urbit.org/fonts/scp-regular.woff");
477− font-weight: 400;
400+ // code blocks
401+pre {
402+ margin: 0.5rem 0 0.5rem 0;
403+ padding: 1.25rem;
404+ overflow-x: scroll;
405+ @extend .bg-gray5;
478406}
479407
480−@font-face {
481− font-family: "Source Code Pro";
482− src: url("https://storage.googleapis.com/media.urbit.org/fonts/scp-medium.woff");
483− font-weight: 500;
408+code, .code, .mono {
409+ font-family: "Source Code Pro", monospace;
484410}
485411
486−@font-face {
487− font-family: "Source Code Pro";
488− src: url("https://storage.googleapis.com/media.urbit.org/fonts/scp-bold.woff");
489− font-weight: 600;
412+ // code in headers
413+h1 code, h2 code, h3 code, h4 code {
414+ @extend .red3;
415+ background-color: transparent;
416+ font-weight: 600;
490417}
491−
492−@font-face {
493− font-family: "Source Code Pro";
494− src: url("https://storage.googleapis.com/media.urbit.org/fonts/scp-black.woff");
495− font-weight: 700;
418+ // hoon school
419+iframe#apply {
420+ width: 100%;
496421}
497−
498−.lowercase {
499− text-transform: lowercase;
422+ // indice pages
423+details.page-indiced li {
424+ list-style-type: none;
500425}
501426
502−h1, h2, h3, h4, h5, h6, .text-heading {
503− margin: 0;
504− font-family: 'Inter UI', -apple-system, BlinkMacSystemFont, Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
427+details {
428+ // overflow: scroll on the nav for these indices
429+ // cuts off the open chevron. thus:
430+ padding-left: 2px;
431+ & > summary {
432+ @extend .fw6, .gray2;
433+ cursor: default;
434+ list-style: none;
435+ display: inline-block;
436+ vertical-align: bottom;
437+ &:focus {
438+ outline: 0;
439+ }
440+ &::-webkit-details-marker {
441+ display: none;
442+ }
443+ &::before {
444+ content: "›";
445+ display: inline-block;
446+ vertical-align: baseline;
447+ margin-right: 0.5rem;
448+ @extend .gray1;
449+ font-family: "Inter UI", sans-serif;
450+ font-weight: 400;
451+ }
452+ }
453+ &[open] > summary {
454+ @extend .fw6, .black;
455+ }
456+ &[open] > summary::before {
457+ content: "› ";
458+ display: inline-block;
459+ transform: rotate(90deg);
460+ }
505461}
506462
507−h1, h2, h3, h4 {
508− font-weight: 700;
509−}
510−h1 {
511− font-size: (8rem / 4);
512− line-height: (8rem / 4);
513−}
514−h2 {
515− font-size: (6rem / 4);
516− line-height: (6rem / 4);
517−}
518−h3 {
519− font-size: (5rem / 4);
520− line-height: (5rem / 4);
521−}
522−h4 {
523− font-size: (4.5rem / 4);
524− line-height: (4.5rem / 4);
525−}
526−h5 {
527− font-size: (4rem / 4);
528− line-height: (4rem / 4);
463+body.docs article {
464+ h2 {
465+ margin: 2rem 0 1.5rem 0;
466+ }
467+ ul {
468+ @extend .mt3, .mb4;
469+ }
529470}
530471
531−.article {
532− h1 {
533− margin-bottom: (7rem / 4);
534− }
535− h2 {
536− margin-top: (8rem / 4);
537− margin-bottom: (4rem / 4);
538− }
539− h3 {
540− margin-top: (7rem / 4);
541− margin-bottom: (3rem / 4);
542− }
543− h4 {
544− margin-top: (6.5rem / 4);
545− margin-bottom: (2.5rem / 4);
546− }
547− h5 {
548− margin-top: (6rem / 4);
549− margin-bottom: (2rem / 4);
550− }
472+body.page-indiced {
473+ h2:not(:first-of-type) {
474+ margin: 2rem 0 1.5rem 0;
475+ }
476+ h3 {
477+ @extend .gray1;
478+ }
479+ h4 {
480+ @extend .gray0;
481+ }
482+ nav:not(.search-overlay) {
483+ max-height: 100%;
484+ overflow-y: scroll;
485+ }
486+ a.current {
487+ font-weight: 600;
488+ }
551489}
552490
553−li {
554− font-size: (4rem / 4);
555− line-height: (8rem / 4);
556− font-weight: 400;
557−}
491+// doc-specific navigation
558492
559−p, .p {
560− font-size: (4rem / 4);
561− font-weight: 400;
562− line-height: (8rem / 4);
563− margin: 0 0 (4rem / 4);
493+select {
494+ -webkit-appearance: none;
495+ border: 0;
496+ outline: 0;
497+ background: transparent;
498+ font-family: "Inter UI", sans-serif;
564499}
565−
566−pre, code {
567− font-family: "Source Code Pro", monospace;
568− background-color: #eee !important;
569− color: #000 !important;
570− overflow-y: scroll;
571− font-weight: 400;
572− span {
573− color: #000 !important;
574− }
575− padding: (1rem / 4);
576− font-size: (4rem / 4);
500+nav.docs:not(.mobile) {
501+ height: 100vh;
502+ position: fixed;
503+ overflow-y: scroll;
504+ width: 25vw;
505+ max-width: 300px;
506+}
507+nav.docs details {
508+ summary {
509+ @extend .fw4, .black, .mt2;
510+ }
511+ & > summary::before {
512+ content: "› ";
513+ display: inline-block;
514+ transform: rotate(90deg);
515+ vertical-align: baseline;
516+ @extend .gray1, .fw6;
517+ font-family: "Inter UI", sans-serif;
518+ }
519+ &[open] > summary {
520+ @extend .fw6;
521+ }
522+ &[open] > summary::before {
523+ content: "› ";
524+ display: inline-block;
525+ transform: rotate(-90deg);
526+ }
577527}
578528
579−textarea, input[type="text"], input[type="email"], input[type="number"], select {
580− border: 1px solid #B1B2B3;
581− font-family: "Source Code Pro", mono;
582− font-size: (4rem / 4);
583− line-height: (6rem / 4);
584− transition: all 0.1s linear;
585− padding-right: 40px;
586− position: relative;
587− &:active, &:focus {
588− border: 1px solid #000000;
589− }
590− &:required, &:invalid {
591− box-shadow: none !important;
592− border: 1px solid #EE892B;
593− color: #EE892B;
594− }
529+// youtube
530+
531+.video-container {
532+ position: relative;
533+ padding-bottom: 56.25%;
534+ padding-top: 30px; height: 0; overflow: hidden;
595535}
596536
597−.has-valid-input {
598− position: relative;
599− &:after {
600− content: '✓';
601− color: #2AA779;
537+.video-container iframe,
538+.video-container object,
539+.video-container embed {
540+ border-width: 0;
602541 position: absolute;
603− right: 10px;
604− top: 50%;
605− transform: translate(0,-50%);
606− width: 15px;
607− height: 24px;
608− margin-top: -4px;
609− }
610− input[type="text"], input[type="email"], input[type="number"] {
611− border: 1px solid #2AA779;
612− }
542+ top: 0;
543+ left: 0;
544+ width: 100%;
545+ height: 100%;
613546}
614547
615−#mc_embed_signup form {
616− padding: 0;
617− text-align: inherit;
548+ // horizontal rules
549+hr {
550+ border-top-width: 0;
551+ border-bottom-style: solid;
552+ margin: 2rem 0 2rem 0;
618553}
619554
620−.no-liga {
621− font-feature-settings: 'liga' 0;
555+
556+// smooth scrolling
557+
558+.scroll-smooth {
559+ scroll-behavior: smooth;
622560}
623561
624−// Markdown
625−summary {
626− font-size: (5rem / 4);
627− font-weight: 500;
628− padding-bottom: (2rem / 4);
629− padding-top: (2rem / 4);
630− cursor: pointer;
631− user-select: none;
632− -webkit-user-select: none;
562+.vid-insert-wrap {
563+ position: relative;
564+ width: 100vw;
565+ height: 100vh;
633566}
634567
635−summary:focus {
636− outline: none;
568+.vid-insert {
569+ position: absolute;
570+ right: 0;
571+ bottom: 0;
572+ // Use .vid-insert-wrap to control height + width
573+ width: 100%;
574+ height: 100%;
575+ object-fit: cover;
576+ overflow: hidden;
577+ z-index:-99;
637578}
638579
639−details {
640− padding-bottom: (1rem / 4);
641− padding-top: (1rem / 4);
642− ul, ol {
643− padding-left: 0;
644− list-style: none;
645− }
580+// Useful for hiding input inner shadows in Safari
581+.wk-appearance-none {
582+ -webkit-appearance: none;
646583}
sass/_responsive.scss+28−105
@@ -1,112 +1,35 @@
1−@media only screen and (max-width: 1080px) {
2− .header, .main-wrapper {
3− padding-left: 2%;
4− }
5−}
6−@media only screen and (max-width: 800px) {
7− .has-active-search-window .search-overlay, .search-bar {
8− display: none;
9− }
10− .container--fixed, .content-nav {
11− margin: 0;
12− }
13− .content-nav-spacer {
14− width: auto;
15− min-width: initial;
16− }
17− .content-nav {
18− display: none;
19− }
20− .content-nav-icon {
21− display: block;
22− &.none {
23− display: none;
24− }
25− }
26− .content, .content-spacer {
27− flex-basis: 90%;
28− max-width: 90%;
29− }
30− .posts__content {
31− margin-left: (8rem / 4);
32− }
33− .no-side-nav-column {
34− flex-basis: 66.66666667%;
35− max-width: 66.66666667%;
36− }
37− .form {
38− max-width: 270px;
39− }
40− p img {
41− width: 90%;
42− }
43− .header {
44− &__navigation {
45− display: none;
46− &.is-active {
47− display: block;
48− }
49− }
50− }
51− .has-active-main-nav {
52− overflow: hidden;
53− .header {
54− &__navigation {
55− overflow-y: scroll;
56− -webkit-overflow-scrolling: touch;
57− }
1+@media all and (min-width: 1260px) {
2+ nav.previous, nav.next {
3+ width: auto !important;
4+ max-width: auto;
585 }
59− }
60− .has-active-content-nav {
61− overflow: hidden;
62− .content-nav-container {
63− height: 100%;
64− z-index: 4;
65− top: 0;
66− width: 100%;
67− top: 0;
68− left: 0;
69− padding: 0 (4rem / 4);
70− background: white;
71− overflow-y: scroll;
72− -webkit-overflow-scrolling: touch;
6+ nav.previous {
7+ right: 16px !important;
738 }
74− .content-nav {
75− display: block;
76− margin: (7rem) / 4;
77− overflow: initial;
78− width: 100%;
79− margin: 0;
80− margin-top: (-7rem / 4);
81− &__index {
82− margin: (7rem /4) 0 0 (7rem / 4);
83− padding: (7rem /4) (7rem / 4) 0 0;
84− }
9+ nav.next {
10+ left: 16px !important;
8511 }
86− .content-nav-icon {
87− &:before {
88− border-top: 10px solid transparent;
89− border-bottom: 10px solid transparent;
90− border-left: 10px solid #000;
91− border-right: 10px solid transparent;
92− }
93− }
94− .content, .content-spacer {
95− flex-basis: auto;
96− max-width: none;
12+}
13+
14+// scaling below desktop
15+@media all and (max-width: 60em) {
16+ body.essay {
17+ article > *:not(figure):not(picture) {
18+ grid-area: auto / 1 / auto / 12;
19+ }
9720 }
98− }
9921}
10022
101−@media only screen and (max-width: 480px) {
102− .no-side-nav-column {
103− margin-left: 8.33333333%;
104− flex-basis: 83.33333333%;
105− max-width: 83.33333333%;
106− }
107− .nav-column {
108− flex-basis: 75%;
109− max-width: 75%;
110− margin-left: 24%;
111− }
23+// custom L breakpoint classes
24+@media screen and (min-width: 46.875em) and (max-width: 60em) {
25+ .white-l {
26+ color: #fff;
27+ }
11228}
29+
30+// custom XL breakpoint classes
31+@media screen and (min-width: 60em) {
32+ .white-xl {
33+ color: #fff;
34+ }
35+}
sass/grid.scssnew file+1542
@@ -0,0 +1,1542 @@
1+/*******************************************************************************
2+ Grid and Layout
3+*******************************************************************************/
4+.grid12 {
5+ display: grid;
6+ grid-template-columns: repeat(12, [col-start] 1fr);
7+ grid-auto-rows: auto;
8+ column-gap: 16px;
9+ @media screen and (min-width: 34.375em) {
10+ column-gap: 32px;
11+ }
12+ @media screen and (min-width: 60em) {
13+ column-gap: 64px;
14+ }
15+ }
16+
17+ .grid8 {
18+ display: grid;
19+ grid-template-columns: repeat(8, [col-start] 1fr);
20+ grid-auto-rows: auto;
21+ gap: 1px;
22+ width: 100%;
23+ }
24+
25+ .full {
26+ grid-area: auto / 1 / auto / 13;
27+ }
28+
29+ .half-1 {
30+ grid-area: auto / 1 / auto / 7;
31+ }
32+
33+ .half-2 {
34+ grid-area: auto / 7 / auto / 13;
35+ }
36+
37+ .fourth-1 {
38+ grid-area: auto / 1 / auto / 4;
39+ }
40+
41+ .fourth-2 {
42+ grid-area: auto / 4 / auto / 7;
43+ }
44+
45+ .fourth-3 {
46+ grid-area: auto / 7 / auto / 10;
47+ }
48+
49+ .fourth-4 {
50+ grid-area: auto / 10 / auto / 13;
51+ }
52+
53+ @media only screen and (min-width: 34.375em) {
54+ .full-ns {
55+ grid-area: auto / 1 / auto / 13;
56+ }
57+ .half-1-ns {
58+ grid-area: auto / 1 / auto / 7;
59+ }
60+ .half-2-ns {
61+ grid-area: auto / 7 / auto / 13;
62+ }
63+ .fourth-1-ns {
64+ grid-area: auto / 1 / auto / 4;
65+ }
66+ .fourth-2-ns {
67+ grid-area: auto / 4 / auto / 7;
68+ }
69+ .fourth-3-ns {
70+ grid-area: auto / 7 / auto / 10;
71+ }
72+ .fourth-4-ns {
73+ grid-area: auto / 10 / auto / 13;
74+ }
75+ }
76+
77+ @media only screen and (min-width: 46.875em) and (max-width: 60em) {
78+ .full-md {
79+ grid-area: auto / 1 / auto / 13;
80+ }
81+ .half-1-md {
82+ grid-area: auto / 1 / auto / 7;
83+ }
84+ .half-2-md {
85+ grid-area: auto / 7 / auto / 13;
86+ }
87+ .fourth-1-md {
88+ grid-area: auto / 1 / auto / 4;
89+ }
90+ .fourth-2-md {
91+ grid-area: auto / 4 / auto / 7;
92+ }
93+ .fourth-3-md {
94+ grid-area: auto / 7 / auto / 10;
95+ }
96+ .fourth-4-md {
97+ grid-area: auto / 10 / auto / 13;
98+ }
99+ }
100+
101+ @media only screen and (min-width: 60em) {
102+ .full-lg {
103+ grid-area: auto / 1 / auto / 13;
104+ }
105+ .half-1-lg {
106+ grid-area: auto / 1 / auto / 7;
107+ }
108+ .half-2-lg {
109+ grid-area: auto / 7 / auto / 13;
110+ }
111+ .fourth-1-lg {
112+ grid-area: auto / 1 / auto / 4;
113+ }
114+ .fourth-2-lg {
115+ grid-area: auto / 4 / auto / 7;
116+ }
117+ .fourth-3-lg {
118+ grid-area: auto / 7 / auto / 10;
119+ }
120+ .fourth-4-lg {
121+ grid-area: auto / 10 / auto / 13;
122+ }
123+ }
124+
125+ .gap1 {
126+ width: 1px;
127+ }
128+
129+ .gap2 {
130+ width: 2px;
131+ }
132+
133+ .gap4 {
134+ width: 4px;
135+ }
136+
137+ .gap8 {
138+ width: 8px;
139+ }
140+
141+ .gap12 {
142+ width: 12px;
143+ }
144+
145+ .gap16 {
146+ width: 16px;
147+ }
148+
149+ .gap24 {
150+ width: 24px;
151+ }
152+
153+ .gap32 {
154+ width: 32px;
155+ }
156+
157+ .fr1 {
158+ width: 1fr;
159+ }
160+
161+ .fr2 {
162+ width: 2fr;
163+ }
164+
165+ .fr3 {
166+ width: 3fr;
167+ }
168+
169+ .fr4 {
170+ width: 4fr;
171+ }
172+
173+ .fr5 {
174+ width: 5fr;
175+ }
176+
177+ .fr6 {
178+ width: 6fr;
179+ }
180+
181+ .fr7 {
182+ width: 7fr;
183+ }
184+
185+ .fr8 {
186+ width: 8fr;
187+ }
188+
189+ .fr9 {
190+ width: 9fr;
191+ }
192+
193+ .fr10 {
194+ width: 10fr;
195+ }
196+
197+ .fr11 {
198+ width: 11fr;
199+ }
200+
201+ .fr12 {
202+ width: 12fr;
203+ }
204+
205+ .c1-2 {
206+ grid-column-start: 1;
207+ grid-column-end: 2;
208+ }
209+
210+ .c1-3 {
211+ grid-column-start: 1;
212+ grid-column-end: 3;
213+ }
214+
215+ .c1-4 {
216+ grid-column-start: 1;
217+ grid-column-end: 4;
218+ }
219+
220+ .c1-5 {
221+ grid-column-start: 1;
222+ grid-column-end: 5;
223+ }
224+
225+ .c1-6 {
226+ grid-column-start: 1;
227+ grid-column-end: 6;
228+ }
229+
230+ .c1-7 {
231+ grid-column-start: 1;
232+ grid-column-end: 7;
233+ }
234+
235+ .c1-8 {
236+ grid-column-start: 1;
237+ grid-column-end: 8;
238+ }
239+
240+ .c1-9 {
241+ grid-column-start: 1;
242+ grid-column-end: 9;
243+ }
244+
245+ .c1-10 {
246+ grid-column-start: 1;
247+ grid-column-end: 10;
248+ }
249+
250+ .c1-11 {
251+ grid-column-start: 1;
252+ grid-column-end: 11;
253+ }
254+
255+ .c1-12 {
256+ grid-column-start: 1;
257+ grid-column-end: 12;
258+ }
259+
260+ .c1-13 {
261+ grid-column-start: 1;
262+ grid-column-end: 13;
263+ }
264+
265+ .c2-3 {
266+ grid-column-start: 2;
267+ grid-column-end: 3;
268+ }
269+
270+ .c2-4 {
271+ grid-column-start: 2;
272+ grid-column-end: 4;
273+ }
274+
275+ .c2-5 {
276+ grid-column-start: 2;
277+ grid-column-end: 5;
278+ }
279+
280+ .c2-6 {
281+ grid-column-start: 2;
282+ grid-column-end: 6;
283+ }
284+
285+ .c2-7 {
286+ grid-column-start: 2;
287+ grid-column-end: 7;
288+ }
289+
290+ .c2-8 {
291+ grid-column-start: 2;
292+ grid-column-end: 8;
293+ }
294+
295+ .c2-9 {
296+ grid-column-start: 2;
297+ grid-column-end: 9;
298+ }
299+
300+ .c2-10 {
301+ grid-column-start: 2;
302+ grid-column-end: 10;
303+ }
304+
305+ .c2-11 {
306+ grid-column-start: 2;
307+ grid-column-end: 11;
308+ }
309+
310+ .c2-12 {
311+ grid-column-start: 2;
312+ grid-column-end: 12;
313+ }
314+
315+ .c2-13 {
316+ grid-column-start: 2;
317+ grid-column-end: 13;
318+ }
319+
320+ .c3-4 {
321+ grid-column-start: 3;
322+ grid-column-end: 4;
323+ }
324+
325+ .c3-5 {
326+ grid-column-start: 3;
327+ grid-column-end: 5;
328+ }
329+
330+ .c3-6 {
331+ grid-column-start: 3;
332+ grid-column-end: 6;
333+ }
334+
335+ .c3-7 {
336+ grid-column-start: 3;
337+ grid-column-end: 7;
338+ }
339+
340+ .c3-8 {
341+ grid-column-start: 3;
342+ grid-column-end: 8;
343+ }
344+
345+ .c3-9 {
346+ grid-column-start: 3;
347+ grid-column-end: 9;
348+ }
349+
350+ .c3-10 {
351+ grid-column-start: 3;
352+ grid-column-end: 10;
353+ }
354+
355+ .c3-11 {
356+ grid-column-start: 3;
357+ grid-column-end: 11;
358+ }
359+
360+ .c3-12 {
361+ grid-column-start: 3;
362+ grid-column-end: 12;
363+ }
364+
365+ .c3-13 {
366+ grid-column-start: 3;
367+ grid-column-end: 13;
368+ }
369+
370+ .c4-5 {
371+ grid-column-start: 4;
372+ grid-column-end: 5;
373+ }
374+
375+ .c4-6 {
376+ grid-column-start: 4;
377+ grid-column-end: 6;
378+ }
379+
380+ .c4-7 {
381+ grid-column-start: 4;
382+ grid-column-end: 7;
383+ }
384+
385+ .c4-8 {
386+ grid-column-start: 4;
387+ grid-column-end: 8;
388+ }
389+
390+ .c4-9 {
391+ grid-column-start: 4;
392+ grid-column-end: 9;
393+ }
394+
395+ .c4-10 {
396+ grid-column-start: 4;
397+ grid-column-end: 10;
398+ }
399+
400+ .c4-11 {
401+ grid-column-start: 4;
402+ grid-column-end: 11;
403+ }
404+
405+ .c4-12 {
406+ grid-column-start: 4;
407+ grid-column-end: 12;
408+ }
409+
410+ .c4-13 {
411+ grid-column-start: 4;
412+ grid-column-end: 13;
413+ }
414+
415+ .c5-6 {
416+ grid-column-start: 5;
417+ grid-column-end: 6;
418+ }
419+
420+ .c5-7 {
421+ grid-column-start: 5;
422+ grid-column-end: 7;
423+ }
424+
425+ .c5-8 {
426+ grid-column-start: 5;
427+ grid-column-end: 8;
428+ }
429+
430+ .c5-9 {
431+ grid-column-start: 5;
432+ grid-column-end: 9;
433+ }
434+
435+ .c5-10 {
436+ grid-column-start: 5;
437+ grid-column-end: 10;
438+ }
439+
440+ .c5-11 {
441+ grid-column-start: 5;
442+ grid-column-end: 11;
443+ }
444+
445+ .c5-12 {
446+ grid-column-start: 5;
447+ grid-column-end: 12;
448+ }
449+
450+ .c5-13 {
451+ grid-column-start: 5;
452+ grid-column-end: 13;
453+ }
454+
455+ .c6-7 {
456+ grid-column-start: 6;
457+ grid-column-end: 7;
458+ }
459+
460+ .c6-8 {
461+ grid-column-start: 6;
462+ grid-column-end: 8;
463+ }
464+
465+ .c6-9 {
466+ grid-column-start: 6;
467+ grid-column-end: 9;
468+ }
469+
470+ .c6-10 {
471+ grid-column-start: 6;
472+ grid-column-end: 10;
473+ }
474+
475+ .c6-11 {
476+ grid-column-start: 6;
477+ grid-column-end: 11;
478+ }
479+
480+ .c6-12 {
481+ grid-column-start: 6;
482+ grid-column-end: 12;
483+ }
484+
485+ .c6-13 {
486+ grid-column-start: 6;
487+ grid-column-end: 13;
488+ }
489+
490+ .c7-8 {
491+ grid-column-start: 7;
492+ grid-column-end: 8;
493+ }
494+
495+ .c7-9 {
496+ grid-column-start: 7;
497+ grid-column-end: 9;
498+ }
499+
500+ .c7-10 {
501+ grid-column-start: 7;
502+ grid-column-end: 10;
503+ }
504+
505+ .c7-11 {
506+ grid-column-start: 7;
507+ grid-column-end: 11;
508+ }
509+
510+ .c7-12 {
511+ grid-column-start: 7;
512+ grid-column-end: 12;
513+ }
514+
515+ .c7-13 {
516+ grid-column-start: 7;
517+ grid-column-end: 13;
518+ }
519+
520+ .c8-9 {
521+ grid-column-start: 8;
522+ grid-column-end: 9;
523+ }
524+
525+ .c8-10 {
526+ grid-column-start: 8;
527+ grid-column-end: 10;
528+ }
529+
530+ .c8-11 {
531+ grid-column-start: 8;
532+ grid-column-end: 11;
533+ }
534+
535+ .c8-12 {
536+ grid-column-start: 8;
537+ grid-column-end: 12;
538+ }
539+
540+ .c8-13 {
541+ grid-column-start: 8;
542+ grid-column-end: 13;
543+ }
544+
545+ .c9-10 {
546+ grid-column-start: 9;
547+ grid-column-end: 10;
548+ }
549+
550+ .c9-11 {
551+ grid-column-start: 9;
552+ grid-column-end: 11;
553+ }
554+
555+ .c9-12 {
556+ grid-column-start: 9;
557+ grid-column-end: 12;
558+ }
559+
560+ .c9-13 {
561+ grid-column-start: 9;
562+ grid-column-end: 13;
563+ }
564+
565+ .c10-11 {
566+ grid-column-start: 10;
567+ grid-column-end: 11;
568+ }
569+
570+ .c10-12 {
571+ grid-column-start: 10;
572+ grid-column-end: 12;
573+ }
574+
575+ .c10-13 {
576+ grid-column-start: 10;
577+ grid-column-end: 13;
578+ }
579+
580+ .c11-12 {
581+ grid-column-start: 11;
582+ grid-column-end: 12;
583+ }
584+
585+ .c11-13 {
586+ grid-column-start: 11;
587+ grid-column-end: 13;
588+ }
589+
590+ .c12-13 {
591+ grid-column-start: 12;
592+ grid-column-end: 13;
593+ }
594+
595+ @media only screen and (min-width: 550px) {
596+ .c1-2-ns {
597+ grid-column-start: 1;
598+ grid-column-end: 2;
599+ }
600+ .c1-3-ns {
601+ grid-column-start: 1;
602+ grid-column-end: 3;
603+ }
604+ .c1-4-ns {
605+ grid-column-start: 1;
606+ grid-column-end: 4;
607+ }
608+ .c1-5-ns {
609+ grid-column-start: 1;
610+ grid-column-end: 5;
611+ }
612+ .c1-6-ns {
613+ grid-column-start: 1;
614+ grid-column-end: 6;
615+ }
616+ .c1-7-ns {
617+ grid-column-start: 1;
618+ grid-column-end: 7;
619+ }
620+ .c1-8-ns {
621+ grid-column-start: 1;
622+ grid-column-end: 8;
623+ }
624+ .c1-9-ns {
625+ grid-column-start: 1;
626+ grid-column-end: 9;
627+ }
628+ .c1-10-ns {
629+ grid-column-start: 1;
630+ grid-column-end: 10;
631+ }
632+ .c1-11-ns {
633+ grid-column-start: 1;
634+ grid-column-end: 11;
635+ }
636+ .c1-12-ns {
637+ grid-column-start: 1;
638+ grid-column-end: 12;
639+ }
640+ .c1-13-ns {
641+ grid-column-start: 1;
642+ grid-column-end: 13;
643+ }
644+ .c2-3-ns {
645+ grid-column-start: 2;
646+ grid-column-end: 3;
647+ }
648+ .c2-4-ns {
649+ grid-column-start: 2;
650+ grid-column-end: 4;
651+ }
652+ .c2-5-ns {
653+ grid-column-start: 2;
654+ grid-column-end: 5;
655+ }
656+ .c2-6-ns {
657+ grid-column-start: 2;
658+ grid-column-end: 6;
659+ }
660+ .c2-7-ns {
661+ grid-column-start: 2;
662+ grid-column-end: 7;
663+ }
664+ .c2-8-ns {
665+ grid-column-start: 2;
666+ grid-column-end: 8;
667+ }
668+ .c2-9-ns {
669+ grid-column-start: 2;
670+ grid-column-end: 9;
671+ }
672+ .c2-10-ns {
673+ grid-column-start: 2;
674+ grid-column-end: 10;
675+ }
676+ .c2-11-ns {
677+ grid-column-start: 2;
678+ grid-column-end: 11;
679+ }
680+ .c2-12-ns {
681+ grid-column-start: 2;
682+ grid-column-end: 12;
683+ }
684+ .c2-13-ns {
685+ grid-column-start: 2;
686+ grid-column-end: 13;
687+ }
688+ .c3-4-ns {
689+ grid-column-start: 3;
690+ grid-column-end: 4;
691+ }
692+ .c3-5-ns {
693+ grid-column-start: 3;
694+ grid-column-end: 5;
695+ }
696+ .c3-6-ns {
697+ grid-column-start: 3;
698+ grid-column-end: 6;
699+ }
700+ .c3-7-ns {
701+ grid-column-start: 3;
702+ grid-column-end: 7;
703+ }
704+ .c3-8-ns {
705+ grid-column-start: 3;
706+ grid-column-end: 8;
707+ }
708+ .c3-9-ns {
709+ grid-column-start: 3;
710+ grid-column-end: 9;
711+ }
712+ .c3-10-ns {
713+ grid-column-start: 3;
714+ grid-column-end: 10;
715+ }
716+ .c3-11-ns {
717+ grid-column-start: 3;
718+ grid-column-end: 11;
719+ }
720+ .c3-12-ns {
721+ grid-column-start: 3;
722+ grid-column-end: 12;
723+ }
724+ .c3-13-ns {
725+ grid-column-start: 3;
726+ grid-column-end: 13;
727+ }
728+ .c4-5-ns {
729+ grid-column-start: 4;
730+ grid-column-end: 5;
731+ }
732+ .c4-6-ns {
733+ grid-column-start: 4;
734+ grid-column-end: 6;
735+ }
736+ .c4-7-ns {
737+ grid-column-start: 4;
738+ grid-column-end: 7;
739+ }
740+ .c4-8-ns {
741+ grid-column-start: 4;
742+ grid-column-end: 8;
743+ }
744+ .c4-9-ns {
745+ grid-column-start: 4;
746+ grid-column-end: 9;
747+ }
748+ .c4-10-ns {
749+ grid-column-start: 4;
750+ grid-column-end: 10;
751+ }
752+ .c4-11-ns {
753+ grid-column-start: 4;
754+ grid-column-end: 11;
755+ }
756+ .c4-12-ns {
757+ grid-column-start: 4;
758+ grid-column-end: 12;
759+ }
760+ .c4-13-ns {
761+ grid-column-start: 4;
762+ grid-column-end: 13;
763+ }
764+ .c5-6-ns {
765+ grid-column-start: 5;
766+ grid-column-end: 6;
767+ }
768+ .c5-7-ns {
769+ grid-column-start: 5;
770+ grid-column-end: 7;
771+ }
772+ .c5-8-ns {
773+ grid-column-start: 5;
774+ grid-column-end: 8;
775+ }
776+ .c5-9-ns {
777+ grid-column-start: 5;
778+ grid-column-end: 9;
779+ }
780+ .c5-10-ns {
781+ grid-column-start: 5;
782+ grid-column-end: 10;
783+ }
784+ .c5-11-ns {
785+ grid-column-start: 5;
786+ grid-column-end: 11;
787+ }
788+ .c5-12-ns {
789+ grid-column-start: 5;
790+ grid-column-end: 12;
791+ }
792+ .c5-13-ns {
793+ grid-column-start: 5;
794+ grid-column-end: 13;
795+ }
796+ .c6-7-ns {
797+ grid-column-start: 6;
798+ grid-column-end: 7;
799+ }
800+ .c6-8-ns {
801+ grid-column-start: 6;
802+ grid-column-end: 8;
803+ }
804+ .c6-9-ns {
805+ grid-column-start: 6;
806+ grid-column-end: 9;
807+ }
808+ .c6-10-ns {
809+ grid-column-start: 6;
810+ grid-column-end: 10;
811+ }
812+ .c6-11-ns {
813+ grid-column-start: 6;
814+ grid-column-end: 11;
815+ }
816+ .c6-12-ns {
817+ grid-column-start: 6;
818+ grid-column-end: 12;
819+ }
820+ .c6-13-ns {
821+ grid-column-start: 6;
822+ grid-column-end: 13;
823+ }
824+ .c7-8-ns {
825+ grid-column-start: 7;
826+ grid-column-end: 8;
827+ }
828+ .c7-9-ns {
829+ grid-column-start: 7;
830+ grid-column-end: 9;
831+ }
832+ .c7-10-ns {
833+ grid-column-start: 7;
834+ grid-column-end: 10;
835+ }
836+ .c7-11-ns {
837+ grid-column-start: 7;
838+ grid-column-end: 11;
839+ }
840+ .c7-12-ns {
841+ grid-column-start: 7;
842+ grid-column-end: 12;
843+ }
844+ .c7-13-ns {
845+ grid-column-start: 7;
846+ grid-column-end: 13;
847+ }
848+ .c8-9-ns {
849+ grid-column-start: 8;
850+ grid-column-end: 9;
851+ }
852+ .c8-10-ns {
853+ grid-column-start: 8;
854+ grid-column-end: 10;
855+ }
856+ .c8-11-ns {
857+ grid-column-start: 8;
858+ grid-column-end: 11;
859+ }
860+ .c8-12-ns {
861+ grid-column-start: 8;
862+ grid-column-end: 12;
863+ }
864+ .c8-13-ns {
865+ grid-column-start: 8;
866+ grid-column-end: 13;
867+ }
868+ .c9-10-ns {
869+ grid-column-start: 9;
870+ grid-column-end: 10;
871+ }
872+ .c9-11-ns {
873+ grid-column-start: 9;
874+ grid-column-end: 11;
875+ }
876+ .c9-12-ns {
877+ grid-column-start: 9;
878+ grid-column-end: 12;
879+ }
880+ .c9-13-ns {
881+ grid-column-start: 9;
882+ grid-column-end: 13;
883+ }
884+ .c10-11-ns {
885+ grid-column-start: 10;
886+ grid-column-end: 11;
887+ }
888+ .c10-12-ns {
889+ grid-column-start: 10;
890+ grid-column-end: 12;
891+ }
892+ .c10-13-ns {
893+ grid-column-start: 10;
894+ grid-column-end: 13;
895+ }
896+ .c11-12-ns {
897+ grid-column-start: 11;
898+ grid-column-end: 12;
899+ }
900+ .c11-13-ns {
901+ grid-column-start: 11;
902+ grid-column-end: 13;
903+ }
904+ .c12-13-ns {
905+ grid-column-start: 12;
906+ grid-column-end: 13;
907+ }
908+ }
909+
910+ @media only screen and (min-width: 750px) and (max-width: 960px) {
911+ .c1-2-md {
912+ grid-column-start: 1;
913+ grid-column-end: 2;
914+ }
915+ .c1-3-md {
916+ grid-column-start: 1;
917+ grid-column-end: 3;
918+ }
919+ .c1-4-md {
920+ grid-column-start: 1;
921+ grid-column-end: 4;
922+ }
923+ .c1-5-md {
924+ grid-column-start: 1;
925+ grid-column-end: 5;
926+ }
927+ .c1-6-md {
928+ grid-column-start: 1;
929+ grid-column-end: 6;
930+ }
931+ .c1-7-md {
932+ grid-column-start: 1;
933+ grid-column-end: 7;
934+ }
935+ .c1-8-md {
936+ grid-column-start: 1;
937+ grid-column-end: 8;
938+ }
939+ .c1-9-md {
940+ grid-column-start: 1;
941+ grid-column-end: 9;
942+ }
943+ .c1-10-md {
944+ grid-column-start: 1;
945+ grid-column-end: 10;
946+ }
947+ .c1-11-md {
948+ grid-column-start: 1;
949+ grid-column-end: 11;
950+ }
951+ .c1-12-md {
952+ grid-column-start: 1;
953+ grid-column-end: 12;
954+ }
955+ .c1-13-md {
956+ grid-column-start: 1;
957+ grid-column-end: 13;
958+ }
959+ .c2-3-md {
960+ grid-column-start: 2;
961+ grid-column-end: 3;
962+ }
963+ .c2-4-md {
964+ grid-column-start: 2;
965+ grid-column-end: 4;
966+ }
967+ .c2-5-md {
968+ grid-column-start: 2;
969+ grid-column-end: 5;
970+ }
971+ .c2-6-md {
972+ grid-column-start: 2;
973+ grid-column-end: 6;
974+ }
975+ .c2-7-md {
976+ grid-column-start: 2;
977+ grid-column-end: 7;
978+ }
979+ .c2-8-md {
980+ grid-column-start: 2;
981+ grid-column-end: 8;
982+ }
983+ .c2-9-md {
984+ grid-column-start: 2;
985+ grid-column-end: 9;
986+ }
987+ .c2-10-md {
988+ grid-column-start: 2;
989+ grid-column-end: 10;
990+ }
991+ .c2-11-md {
992+ grid-column-start: 2;
993+ grid-column-end: 11;
994+ }
995+ .c2-12-md {
996+ grid-column-start: 2;
997+ grid-column-end: 12;
998+ }
999+ .c2-13-md {
1000+ grid-column-start: 2;
1001+ grid-column-end: 13;
1002+ }
1003+ .c3-4-md {
1004+ grid-column-start: 3;
1005+ grid-column-end: 4;
1006+ }
1007+ .c3-5-md {
1008+ grid-column-start: 3;
1009+ grid-column-end: 5;
1010+ }
1011+ .c3-6-md {
1012+ grid-column-start: 3;
1013+ grid-column-end: 6;
1014+ }
1015+ .c3-7-md {
1016+ grid-column-start: 3;
1017+ grid-column-end: 7;
1018+ }
1019+ .c3-8-md {
1020+ grid-column-start: 3;
1021+ grid-column-end: 8;
1022+ }
1023+ .c3-9-md {
1024+ grid-column-start: 3;
1025+ grid-column-end: 9;
1026+ }
1027+ .c3-10-md {
1028+ grid-column-start: 3;
1029+ grid-column-end: 10;
1030+ }
1031+ .c3-11-md {
1032+ grid-column-start: 3;
1033+ grid-column-end: 11;
1034+ }
1035+ .c3-12-md {
1036+ grid-column-start: 3;
1037+ grid-column-end: 12;
1038+ }
1039+ .c3-13-md {
1040+ grid-column-start: 3;
1041+ grid-column-end: 13;
1042+ }
1043+ .c4-5-md {
1044+ grid-column-start: 4;
1045+ grid-column-end: 5;
1046+ }
1047+ .c4-6-md {
1048+ grid-column-start: 4;
1049+ grid-column-end: 6;
1050+ }
1051+ .c4-7-md {
1052+ grid-column-start: 4;
1053+ grid-column-end: 7;
1054+ }
1055+ .c4-8-md {
1056+ grid-column-start: 4;
1057+ grid-column-end: 8;
1058+ }
1059+ .c4-9-md {
1060+ grid-column-start: 4;
1061+ grid-column-end: 9;
1062+ }
1063+ .c4-10-md {
1064+ grid-column-start: 4;
1065+ grid-column-end: 10;
1066+ }
1067+ .c4-11-md {
1068+ grid-column-start: 4;
1069+ grid-column-end: 11;
1070+ }
1071+ .c4-12-md {
1072+ grid-column-start: 4;
1073+ grid-column-end: 12;
1074+ }
1075+ .c4-13-md {
1076+ grid-column-start: 4;
1077+ grid-column-end: 13;
1078+ }
1079+ .c5-6-md {
1080+ grid-column-start: 5;
1081+ grid-column-end: 6;
1082+ }
1083+ .c5-7-md {
1084+ grid-column-start: 5;
1085+ grid-column-end: 7;
1086+ }
1087+ .c5-8-md {
1088+ grid-column-start: 5;
1089+ grid-column-end: 8;
1090+ }
1091+ .c5-9-md {
1092+ grid-column-start: 5;
1093+ grid-column-end: 9;
1094+ }
1095+ .c5-10-md {
1096+ grid-column-start: 5;
1097+ grid-column-end: 10;
1098+ }
1099+ .c5-11-md {
1100+ grid-column-start: 5;
1101+ grid-column-end: 11;
1102+ }
1103+ .c5-12-md {
1104+ grid-column-start: 5;
1105+ grid-column-end: 12;
1106+ }
1107+ .c5-13-md {
1108+ grid-column-start: 5;
1109+ grid-column-end: 13;
1110+ }
1111+ .c6-7-md {
1112+ grid-column-start: 6;
1113+ grid-column-end: 7;
1114+ }
1115+ .c6-8-md {
1116+ grid-column-start: 6;
1117+ grid-column-end: 8;
1118+ }
1119+ .c6-9-md {
1120+ grid-column-start: 6;
1121+ grid-column-end: 9;
1122+ }
1123+ .c6-10-md {
1124+ grid-column-start: 6;
1125+ grid-column-end: 10;
1126+ }
1127+ .c6-11-md {
1128+ grid-column-start: 6;
1129+ grid-column-end: 11;
1130+ }
1131+ .c6-12-md {
1132+ grid-column-start: 6;
1133+ grid-column-end: 12;
1134+ }
1135+ .c6-13-md {
1136+ grid-column-start: 6;
1137+ grid-column-end: 13;
1138+ }
1139+ .c7-8-md {
1140+ grid-column-start: 7;
1141+ grid-column-end: 8;
1142+ }
1143+ .c7-9-md {
1144+ grid-column-start: 7;
1145+ grid-column-end: 9;
1146+ }
1147+ .c7-10-md {
1148+ grid-column-start: 7;
1149+ grid-column-end: 10;
1150+ }
1151+ .c7-11-md {
1152+ grid-column-start: 7;
1153+ grid-column-end: 11;
1154+ }
1155+ .c7-12-md {
1156+ grid-column-start: 7;
1157+ grid-column-end: 12;
1158+ }
1159+ .c7-13-md {
1160+ grid-column-start: 7;
1161+ grid-column-end: 13;
1162+ }
1163+ .c8-9-md {
1164+ grid-column-start: 8;
1165+ grid-column-end: 9;
1166+ }
1167+ .c8-10-md {
1168+ grid-column-start: 8;
1169+ grid-column-end: 10;
1170+ }
1171+ .c8-11-md {
1172+ grid-column-start: 8;
1173+ grid-column-end: 11;
1174+ }
1175+ .c8-12-md {
1176+ grid-column-start: 8;
1177+ grid-column-end: 12;
1178+ }
1179+ .c8-13-md {
1180+ grid-column-start: 8;
1181+ grid-column-end: 13;
1182+ }
1183+ .c9-10-md {
1184+ grid-column-start: 9;
1185+ grid-column-end: 10;
1186+ }
1187+ .c9-11-md {
1188+ grid-column-start: 9;
1189+ grid-column-end: 11;
1190+ }
1191+ .c9-12-md {
1192+ grid-column-start: 9;
1193+ grid-column-end: 12;
1194+ }
1195+ .c9-13-md {
1196+ grid-column-start: 9;
1197+ grid-column-end: 13;
1198+ }
1199+ .c10-11-md {
1200+ grid-column-start: 10;
1201+ grid-column-end: 11;
1202+ }
1203+ .c10-12-md {
1204+ grid-column-start: 10;
1205+ grid-column-end: 12;
1206+ }
1207+ .c10-13-md {
1208+ grid-column-start: 10;
1209+ grid-column-end: 13;
1210+ }
1211+ .c11-12-md {
1212+ grid-column-start: 11;
1213+ grid-column-end: 12;
1214+ }
1215+ .c11-13-md {
1216+ grid-column-start: 11;
1217+ grid-column-end: 13;
1218+ }
1219+ .c12-13-md {
1220+ grid-column-start: 12;
1221+ grid-column-end: 13;
1222+ }
1223+ }
1224+
1225+ @media only screen and (min-width: 960px) {
1226+ .c1-2-lg {
1227+ grid-column-start: 1;
1228+ grid-column-end: 2;
1229+ }
1230+ .c1-3-lg {
1231+ grid-column-start: 1;
1232+ grid-column-end: 3;
1233+ }
1234+ .c1-4-lg {
1235+ grid-column-start: 1;
1236+ grid-column-end: 4;
1237+ }
1238+ .c1-5-lg {
1239+ grid-column-start: 1;
1240+ grid-column-end: 5;
1241+ }
1242+ .c1-6-lg {
1243+ grid-column-start: 1;
1244+ grid-column-end: 6;
1245+ }
1246+ .c1-7-lg {
1247+ grid-column-start: 1;
1248+ grid-column-end: 7;
1249+ }
1250+ .c1-8-lg {
1251+ grid-column-start: 1;
1252+ grid-column-end: 8;
1253+ }
1254+ .c1-9-lg {
1255+ grid-column-start: 1;
1256+ grid-column-end: 9;
1257+ }
1258+ .c1-10-lg {
1259+ grid-column-start: 1;
1260+ grid-column-end: 10;
1261+ }
1262+ .c1-11-lg {
1263+ grid-column-start: 1;
1264+ grid-column-end: 11;
1265+ }
1266+ .c1-12-lg {
1267+ grid-column-start: 1;
1268+ grid-column-end: 12;
1269+ }
1270+ .c1-13-lg {
1271+ grid-column-start: 1;
1272+ grid-column-end: 13;
1273+ }
1274+ .c2-3-lg {
1275+ grid-column-start: 2;
1276+ grid-column-end: 3;
1277+ }
1278+ .c2-4-lg {
1279+ grid-column-start: 2;
1280+ grid-column-end: 4;
1281+ }
1282+ .c2-5-lg {
1283+ grid-column-start: 2;
1284+ grid-column-end: 5;
1285+ }
1286+ .c2-6-lg {
1287+ grid-column-start: 2;
1288+ grid-column-end: 6;
1289+ }
1290+ .c2-7-lg {
1291+ grid-column-start: 2;
1292+ grid-column-end: 7;
1293+ }
1294+ .c2-8-lg {
1295+ grid-column-start: 2;
1296+ grid-column-end: 8;
1297+ }
1298+ .c2-9-lg {
1299+ grid-column-start: 2;
1300+ grid-column-end: 9;
1301+ }
1302+ .c2-10-lg {
1303+ grid-column-start: 2;
1304+ grid-column-end: 10;
1305+ }
1306+ .c2-11-lg {
1307+ grid-column-start: 2;
1308+ grid-column-end: 11;
1309+ }
1310+ .c2-12-lg {
1311+ grid-column-start: 2;
1312+ grid-column-end: 12;
1313+ }
1314+ .c2-13-lg {
1315+ grid-column-start: 2;
1316+ grid-column-end: 13;
1317+ }
1318+ .c3-4-lg {
1319+ grid-column-start: 3;
1320+ grid-column-end: 4;
1321+ }
1322+ .c3-5-lg {
1323+ grid-column-start: 3;
1324+ grid-column-end: 5;
1325+ }
1326+ .c3-6-lg {
1327+ grid-column-start: 3;
1328+ grid-column-end: 6;
1329+ }
1330+ .c3-7-lg {
1331+ grid-column-start: 3;
1332+ grid-column-end: 7;
1333+ }
1334+ .c3-8-lg {
1335+ grid-column-start: 3;
1336+ grid-column-end: 8;
1337+ }
1338+ .c3-9-lg {
1339+ grid-column-start: 3;
1340+ grid-column-end: 9;
1341+ }
1342+ .c3-10-lg {
1343+ grid-column-start: 3;
1344+ grid-column-end: 10;
1345+ }
1346+ .c3-11-lg {
1347+ grid-column-start: 3;
1348+ grid-column-end: 11;
1349+ }
1350+ .c3-12-lg {
1351+ grid-column-start: 3;
1352+ grid-column-end: 12;
1353+ }
1354+ .c3-13-lg {
1355+ grid-column-start: 3;
1356+ grid-column-end: 13;
1357+ }
1358+ .c4-5-lg {
1359+ grid-column-start: 4;
1360+ grid-column-end: 5;
1361+ }
1362+ .c4-6-lg {
1363+ grid-column-start: 4;
1364+ grid-column-end: 6;
1365+ }
1366+ .c4-7-lg {
1367+ grid-column-start: 4;
1368+ grid-column-end: 7;
1369+ }
1370+ .c4-8-lg {
1371+ grid-column-start: 4;
1372+ grid-column-end: 8;
1373+ }
1374+ .c4-9-lg {
1375+ grid-column-start: 4;
1376+ grid-column-end: 9;
1377+ }
1378+ .c4-10-lg {
1379+ grid-column-start: 4;
1380+ grid-column-end: 10;
1381+ }
1382+ .c4-11-lg {
1383+ grid-column-start: 4;
1384+ grid-column-end: 11;
1385+ }
1386+ .c4-12-lg {
1387+ grid-column-start: 4;
1388+ grid-column-end: 12;
1389+ }
1390+ .c4-13-lg {
1391+ grid-column-start: 4;
1392+ grid-column-end: 13;
1393+ }
1394+ .c5-6-lg {
1395+ grid-column-start: 5;
1396+ grid-column-end: 6;
1397+ }
1398+ .c5-7-lg {
1399+ grid-column-start: 5;
1400+ grid-column-end: 7;
1401+ }
1402+ .c5-8-lg {
1403+ grid-column-start: 5;
1404+ grid-column-end: 8;
1405+ }
1406+ .c5-9-lg {
1407+ grid-column-start: 5;
1408+ grid-column-end: 9;
1409+ }
1410+ .c5-10-lg {
1411+ grid-column-start: 5;
1412+ grid-column-end: 10;
1413+ }
1414+ .c5-11-lg {
1415+ grid-column-start: 5;
1416+ grid-column-end: 11;
1417+ }
1418+ .c5-12-lg {
1419+ grid-column-start: 5;
1420+ grid-column-end: 12;
1421+ }
1422+ .c5-13-lg {
1423+ grid-column-start: 5;
1424+ grid-column-end: 13;
1425+ }
1426+ .c6-7-lg {
1427+ grid-column-start: 6;
1428+ grid-column-end: 7;
1429+ }
1430+ .c6-8-lg {
1431+ grid-column-start: 6;
1432+ grid-column-end: 8;
1433+ }
1434+ .c6-9-lg {
1435+ grid-column-start: 6;
1436+ grid-column-end: 9;
1437+ }
1438+ .c6-10-lg {
1439+ grid-column-start: 6;
1440+ grid-column-end: 10;
1441+ }
1442+ .c6-11-lg {
1443+ grid-column-start: 6;
1444+ grid-column-end: 11;
1445+ }
1446+ .c6-12-lg {
1447+ grid-column-start: 6;
1448+ grid-column-end: 12;
1449+ }
1450+ .c6-13-lg {
1451+ grid-column-start: 6;
1452+ grid-column-end: 13;
1453+ }
1454+ .c7-8-lg {
1455+ grid-column-start: 7;
1456+ grid-column-end: 8;
1457+ }
1458+ .c7-9-lg {
1459+ grid-column-start: 7;
1460+ grid-column-end: 9;
1461+ }
1462+ .c7-10-lg {
1463+ grid-column-start: 7;
1464+ grid-column-end: 10;
1465+ }
1466+ .c7-11-lg {
1467+ grid-column-start: 7;
1468+ grid-column-end: 11;
1469+ }
1470+ .c7-12-lg {
1471+ grid-column-start: 7;
1472+ grid-column-end: 12;
1473+ }
1474+ .c7-13-lg {
1475+ grid-column-start: 7;
1476+ grid-column-end: 13;
1477+ }
1478+ .c8-9-lg {
1479+ grid-column-start: 8;
1480+ grid-column-end: 9;
1481+ }
1482+ .c8-10-lg {
1483+ grid-column-start: 8;
1484+ grid-column-end: 10;
1485+ }
1486+ .c8-11-lg {
1487+ grid-column-start: 8;
1488+ grid-column-end: 11;
1489+ }
1490+ .c8-12-lg {
1491+ grid-column-start: 8;
1492+ grid-column-end: 12;
1493+ }
1494+ .c8-13-lg {
1495+ grid-column-start: 8;
1496+ grid-column-end: 13;
1497+ }
1498+ .c9-10-lg {
1499+ grid-column-start: 9;
1500+ grid-column-end: 10;
1501+ }
1502+ .c9-11-lg {
1503+ grid-column-start: 9;
1504+ grid-column-end: 11;
1505+ }
1506+ .c9-12-lg {
1507+ grid-column-start: 9;
1508+ grid-column-end: 12;
1509+ }
1510+ .c9-13-lg {
1511+ grid-column-start: 9;
1512+ grid-column-end: 13;
1513+ }
1514+ .c10-11-lg {
1515+ grid-column-start: 10;
1516+ grid-column-end: 11;
1517+ }
1518+ .c10-12-lg {
1519+ grid-column-start: 10;
1520+ grid-column-end: 12;
1521+ }
1522+ .c10-13-lg {
1523+ grid-column-start: 10;
1524+ grid-column-end: 13;
1525+ }
1526+ .c11-12-lg {
1527+ grid-column-start: 11;
1528+ grid-column-end: 12;
1529+ }
1530+ .c11-13-lg {
1531+ grid-column-start: 11;
1532+ grid-column-end: 13;
1533+ }
1534+ .c12-13-lg {
1535+ grid-column-start: 12;
1536+ grid-column-end: 13;
1537+ }
1538+ }
1539+
1540+ .row-1 {
1541+ grid-row: 1;
1542+ }
sass/indigo.scss+2407−20515

This diff is too big to show here.

sass/primer.scssdeleted−16889

This diff is too big to show here.

sass/styles.scss+1−2

This diff is too big to show here.

static/_redirects+9−8

This diff is too big to show here.

static/assets/back-arrow.svgdeleted−3

This diff is too big to show here.

static/assets/dropdown.svgdeleted−1

This diff is too big to show here.

static/assets/menu-close.svgdeleted−7

This diff is too big to show here.

static/assets/menu-open.svgdeleted−3

This diff is too big to show here.

static/images/aegean-1.pngdeleted

Binary file not shown.

static/images/aegean-2.pngdeleted

Binary file not shown.

static/images/aegean-3.pngdeleted

Binary file not shown.

static/images/aegean.svgdeleted−1

This diff is too big to show here.

static/images/arvo-complete.svgdeleted−1

This diff is too big to show here.

static/images/arvo-large.svgdeleted−84

This diff is too big to show here.

static/images/azimuth.svgdeleted−1

This diff is too big to show here.

static/images/blockchain-fade.svgdeleted−1

This diff is too big to show here.

static/images/business.svgdeleted−1

This diff is too big to show here.

static/images/face.svgdeleted−23

This diff is too big to show here.

static/images/faces.svgdeleted−88

This diff is too big to show here.

static/images/file.svgdeleted−1

This diff is too big to show here.

static/images/galaxies-old.svgdeleted−19

This diff is too big to show here.

static/images/galaxies.svgdeleted−1

This diff is too big to show here.

static/images/iot.svgdeleted−62

This diff is too big to show here.

static/images/megacorp.svgdeleted−1

This diff is too big to show here.

static/images/moons.svgdeleted−73

This diff is too big to show here.

static/images/network-diagram.gifdeleted

Binary file not shown.

static/images/network-diagram.svgdeleted−1240

This diff is too big to show here.

static/images/new-blockchain.svgdeleted−1

This diff is too big to show here.

static/images/new-independence.svgdeleted−1

This diff is too big to show here.

static/images/offchain.svgdeleted−1

This diff is too big to show here.

static/images/passcode.svgdeleted−1

This diff is too big to show here.

static/images/personal-blockchain 2.svgdeleted−129

This diff is too big to show here.

static/images/personal-blockchain.svgdeleted−1

This diff is too big to show here.

static/images/planets-old.svgdeleted−43

This diff is too big to show here.

static/images/planets.svgdeleted−1

This diff is too big to show here.

static/images/program.svgdeleted−1

This diff is too big to show here.

static/images/server.svgdeleted−1

This diff is too big to show here.

static/images/single-interface-green.svgdeleted−109

This diff is too big to show here.

static/images/single-interface.svgdeleted−111

This diff is too big to show here.

static/images/standard-code.svgdeleted−1

This diff is too big to show here.

static/images/stars-old.svgdeleted−8

This diff is too big to show here.

static/images/stars.svgdeleted−1

This diff is too big to show here.

static/images/sticker-1.svgdeleted−6

This diff is too big to show here.

static/images/sticker-2.svgdeleted−11

This diff is too big to show here.

static/images/technical-problem.svgdeleted−1

This diff is too big to show here.

static/images/their-code.svgdeleted−1

This diff is too big to show here.

static/images/urbit-complete.svgdeleted−1

This diff is too big to show here.

static/images/what-urbit-is.svgdeleted−1

This diff is too big to show here.

static/php/airtable/hoonschool.phpdeleted−3

This diff is too big to show here.

static/php/airtable/src/Airtable.phpdeleted−118

This diff is too big to show here.

static/php/airtable/src/Request.phpdeleted−155

This diff is too big to show here.

static/php/airtable/src/Response.phpdeleted−246

This diff is too big to show here.

static/primer.jsdeleted−61

This diff is too big to show here.

static/runes.jsnew file+856

This diff is too big to show here.

static/scripts.js+82−46

This diff is too big to show here.

static/viewport-units-buggyfill.jsnew file+472

This diff is too big to show here.

syntaxes/hoon.sublime-syntaxnew file+66

This diff is too big to show here.

templates/404.html+19−22

This diff is too big to show here.

templates/base.html+35−17

This diff is too big to show here.

templates/doc.html+8−22

This diff is too big to show here.

templates/essays/list.htmlnew file+30

This diff is too big to show here.

templates/essays/post.htmlnew file+48

This diff is too big to show here.

templates/index.html+152−41

This diff is too big to show here.

templates/list.htmlnew file+36

This diff is too big to show here.

templates/media/list.htmlnew file+51

This diff is too big to show here.

templates/page.html+52−21

This diff is too big to show here.

templates/page_indiced.htmlnew file+68

This diff is too big to show here.

templates/partials/footer.html+49−54

This diff is too big to show here.

templates/partials/navigation-docs.html+118−72

This diff is too big to show here.

templates/partials/navigation-search.htmlnew file+4

This diff is too big to show here.

templates/partials/navigation-special.htmldeleted−60

This diff is too big to show here.

templates/partials/navigation.htmldeleted−60

This diff is too big to show here.

templates/partials/pagination.htmlnew file+77

This diff is too big to show here.

templates/partials/search-overlay.html+14−8

This diff is too big to show here.

templates/partials/top-alert.htmldeleted−9

This diff is too big to show here.

templates/posts/list.htmldeleted−55

This diff is too big to show here.

templates/posts/single.htmldeleted−63

This diff is too big to show here.

templates/primer.htmldeleted−1056

This diff is too big to show here.

templates/rss.xml+19−19

This diff is too big to show here.

templates/sections/docs.html+8−22

This diff is too big to show here.

templates/sections/docs/chapters.html+7−22

This diff is too big to show here.

templates/sections/index.html−46

This diff is too big to show here.

templates/shortcodes/full.htmlnew file+3

This diff is too big to show here.

templates/shortcodes/oversize.htmlnew file+3

This diff is too big to show here.

templates/shortcodes/soundcloud.html+8−9

This diff is too big to show here.

templates/shortcodes/youtube.html+2−2

This diff is too big to show here.

templates/understanding-urbit/list.htmlnew file+65

This diff is too big to show here.

templates/understanding-urbit/post.htmlnew file+57

This diff is too big to show here.

templates/updates/list.htmlnew file+58

This diff is too big to show here.