on master help sign in
Adding events to website (#589)

* Adding events to website * Changed event formatting, added sidebar to events page * update docs * post-zola updates * removed docs from commit * Revert "update docs" This reverts commit d7eb1a9d6631a830988707c883d237cd704b4a97.

commit4050ec39101068dc922fe7682166b9792d0c1fdb authorTyler Shuster <tyler@fivepaths.com> dateTue 13 Apr 2021, 08:26 (6 years ago) parentc57133c
52 files changed+1224−129
content/events/2017-08-11-after-hours-bootstrapping-urbit-from-the-ethereum-blockchain.md+20 content/events/2017-09-22-after-hours-fun-with-arvo-the-urbit-os.md+20 content/events/2017-10-26-after-hours-designing-robust-human-systems.md+20 content/events/2017-11-16-after-hours-visiting-contributors.md+18 content/events/2018-01-26-urbit-irl-20181.md+18 content/events/2018-02-23-urbit-irl-20182.md+18 content/events/2018-03-11-20183-hoon-school.md+16 content/events/2018-03-23-urbit-irl-20183.md+18 content/events/2018-04-08-20184-hoon-school.md+16 content/events/2018-05-25-urbit-irl-20185.md+18 content/events/2018-08-03-after-hours-decentralized-web-summit.md+14 content/events/2018-08-17-urbit-irl-20188.md+20 content/events/2018-09-21-urbit-irl-20189.md+18 content/events/2018-10-10-urbit-zcash-blockchain-week.md+24 content/events/2018-12-20-after-hours-its-just-a-party-man.md+18 content/events/2019-03-01-after-hours-ask-galen-anything.md+20 content/events/2019-03-08-urbit-irl-austin-tx.md+16 content/events/2019-04-19-urbit-irl-20194.md+20 content/events/2019-05-17-urbit-irl-20195.md+18 content/events/2019-06-21-urbit-irl-20196.md+18 content/events/2019-07-19-urbit-irl-20197.md+18 content/events/2019-08-29-urbit-austin-20198.md+16 content/events/2019-10-04-urbit-irl-201910.md+18 content/events/2019-11-15-urbit-irl-201911.md+18 content/events/2019-12-13-urbit-irl-201912.md+26 content/events/2020-01-24-urbit-irl-20201.md+20 content/events/2020-02-28-urbit-irl-20202.md+20 content/events/2020-04-03-urbit-os1-launch-party.md+51 content/events/2020-10-09-urbit-hosting-launch-event.md+34 content/events/2020-11-05-developer-call-graph-store.md+18 content/events/2020-11-19-developer-call-bittorrent-tracking-on-urbit.md+18 content/events/2020-12-10-developer-call-injecting-external-services-into-urbit.md+18 content/events/2021-02-04-developer-call-architectural-idea-maze.md+18 content/events/2021-03-04-developer-call-scaling-azimuth.md+22 content/events/2021-03-18-developer-call-pressure-and-protolith.md+19 content/events/2021-04-01-developer-call-javascript-apps-on-urbit.md+19 content/events/2021-04-27-bitcoin-launch.md+29 content/events/_index.md+6 sass/_events.scss+27 sass/styles.scss+1 static/scripts.js+53−12 templates/essays/post.html+2−1 templates/events/event.html+82 templates/events/list.html+157 templates/index.html+62−50 templates/macros/macros.html+11 templates/media/post.html+2−1 templates/page.html+2−1 templates/page_indiced.html+2−1 templates/partials/footer.html+1 templates/partials/pagination.html+64−62 templates/understanding-urbit/post.html+2−1
content/events/2017-08-11-after-hours-bootstrapping-urbit-from-the-ethereum-blockchain.mdnew file+20
@@ -0,0 +1,20 @@
1+
2++++
3+title = "After hours: Bootstrapping Urbit from the Ethereum blockchain"
4+date = 2017-08-11
5+[extra]
6+pinned = false
7+host = "Urbit"
8+time = "20:00 PST"
9+location = "Urbit Office"
10+image = ""
11+registration_url = "https://www.meetup.com/urbit-sf/events/242295411/"
12++++
13+
14+This time we'll be opening up the office, opening up a few cold ones, and talking about Urbit + Ethereum.
15+
16+One thing that's been keeping us busy over the past month is designing the relationship between Urbit and the Ethereum blockchain.  We'll present our current design for this (from ~8:30 - 9) for people to comment on and ask questions about.
17+
18+Otherwise, as usual, there will be plenty of time to hang out and chat with other Urbit people.  
19+
20+The backyard is really nice in the evening!  Feel free to bring friends
content/events/2017-09-22-after-hours-fun-with-arvo-the-urbit-os.mdnew file+20
@@ -0,0 +1,20 @@
1+
2++++
3+title = "After hours: Fun with %arvo (the Urbit OS)"
4+date = 2017-09-22
5+[extra]
6+pinned = false
7+host = "Urbit"
8+time = "20:00 PST"
9+location = "Urbit Office"
10+image = ""
11+registration_url = "https://www.meetup.com/urbit-sf/events/243213975/"
12++++
13+
14+Same as usual: cold drinks in the backyard with the hoons.  Come meet other people crazy enough to want to replace the internet.  
15+
16+Ted, the newest addition to our team, has been working on making changes to %arvo all over the place.  He'll give a short talk about some of his adventures in the Urbit OS and how they're going to make Urbit faster and easier to use.
17+
18+That, and discussing why Equifax should have never been holding all that customer data in the first place.
19+
20+Oh yeah, and we just got a fresh batch of Nock shirts!
content/events/2017-10-26-after-hours-designing-robust-human-systems.mdnew file+20
@@ -0,0 +1,20 @@
1+
2++++
3+title = "After hours: Designing robust human systems"
4+date = 2017-10-26
5+[extra]
6+pinned = false
7+host = "Urbit"
8+time = "20:00 PST"
9+location = "Urbit Office"
10+image = ""
11+registration_url = "https://www.meetup.com/urbit-sf/events/244316080/"
12++++
13+
14+The office will be open and the beer will be cold.  Come hang out and talk about all things Urbit and Urbit related.  Cryptoeconomics, protocols, architecture, Japanese poetry, ancient aqueducts.  You get the idea.
15+
16+Galen is going to give a short (~20m) talk on designing robust human systems.  No code, no math, no time in the terminal.  This is a completely non-technical talk about design principles.  It was originally given at the IDEO Blueprint event a few weeks ago.  
17+
18+Above all, these meetups are for meeting other people crazy enough to think the internet can be replaced.  
19+
20+Feel free to bring friends!  
content/events/2017-11-16-after-hours-visiting-contributors.mdnew file+18
@@ -0,0 +1,18 @@
1+
2++++
3+title = "After hours: Visiting contributors"
4+date = 2017-11-16
5+[extra]
6+pinned = false
7+host = "Urbit"
8+time = "20:00 PST"
9+location = "Urbit Office"
10+image = ""
11+registration_url = "https://www.meetup.com/urbit-sf/events/245090392/"
12++++
13+
14+We've moved! Come check out our new digs, have a beer and hear about what people have been working on. 
15+
16+This week we have ~mastyr-morzod, ~littel-ponnys and ~mastyr-harlud visiting the office. They've all been contributing great stuff from afar, so we figured out how to get them all in the same room to hack on Urbit for the week. On Thursday evening they'll talk about what they've been coming up with.
17+
18+We'll also spend plenty of time just hanging around and talking about Parity, BCH, and everything else crypto-related. Feel free to bring friends!
content/events/2018-01-26-urbit-irl-20181.mdnew file+18
@@ -0,0 +1,18 @@
1+
2++++
3+title = "Urbit IRL ~2018.1"
4+date = 2018-01-26
5+[extra]
6+pinned = false
7+host = "Urbit"
8+time = "20:00 PST"
9+location = "Urbit office"
10+image = ""
11+registration_url = "https://www.meetup.com/urbit-sf/events/246972285/"
12++++
13+
14+Happy New Year!
15+
16+Turns out that just getting Urbit fans in one room is pretty fun — so come join. No demos or talks this time. Just some time to hang, listen to music and meet up IRL. The room is full of desks and the internet is pretty fast. So impromptu demos and tutorials are the norm. Bring your laptop and we'll install Urbit for you.
17+
18+Feel free to bring friends!
content/events/2018-02-23-urbit-irl-20182.mdnew file+18
@@ -0,0 +1,18 @@
1+
2++++
3+title = "Urbit IRL ~2018.2"
4+date = 2018-02-23
5+[extra]
6+pinned = false
7+host = "Urbit"
8+time = "20:00 PST"
9+location = "Urbit office"
10+image = ""
11+registration_url = "https://www.meetup.com/urbit-sf/events/247797527/"
12++++
13+
14+Turns out that just getting Urbit fans in one room is pretty fun — so come hang out and have something to drink.
15+
16+No demos or talks. Just some time to hang, listen to music and meet up IRL. The room is full of desks and the internet is pretty fast. So impromptu demos and tutorials are the norm. Bring your laptop and we'll install Urbit for you. Or just relax and talk to people.
17+
18+Feel free to bring friends!
content/events/2018-03-11-20183-hoon-school.mdnew file+16
@@ -0,0 +1,16 @@
1+
2++++
3+title = "~2018.3 Hoon School"
4+date = 2018-03-11
5+[extra]
6+pinned = false
7+host = "Urbit"
8+time = "14:00 PST"
9+location = "Urbit office"
10+image = ""
11+registration_url = "https://www.meetup.com/urbit-sf/events/248416276/"
12++++
13+
14+Come, bring your laptop, and we'll get you started building things in Urbit's language — Hoon.
15+
16+There's no lesson per-se, think of it more like an 'independent projects' class. A few of us will be around to help you get started working on whatever you're interested in. It's completely fine if you're new to the language. We're going to start with only 10 spots so we can help everyone individually.
content/events/2018-03-23-urbit-irl-20183.mdnew file+18
@@ -0,0 +1,18 @@
1+
2++++
3+title = "Urbit IRL ~2018.3"
4+date = 2018-03-23
5+[extra]
6+pinned = false
7+host = "Urbit"
8+time = "20:00 PST"
9+location = "Urbit office"
10+image = ""
11+registration_url = "https://www.meetup.com/urbit-sf/events/248852261/"
12++++
13+
14+Turns out that just getting Urbit fans in one room is pretty fun — so come hang out and have a beer.
15+
16+No demos or talks. Just some time to hang, listen to music and meet up IRL. The room is full of desks and the internet is pretty fast. So impromptu demos and tutorials are the norm. Bring your laptop and we'll install Urbit for you. Or just relax and talk to the weird array of people who also want to replace the internet.
17+
18+Feel free to bring friends!
content/events/2018-04-08-20184-hoon-school.mdnew file+16
@@ -0,0 +1,16 @@
1+
2++++
3+title = "~2018.4 Hoon School"
4+date = 2018-04-08
5+[extra]
6+pinned = false
7+host = "Urbit"
8+time = "13:00 PST"
9+location = "Urbit office"
10+image = ""
11+registration_url = "https://www.meetup.com/urbit-sf/events/249019207/"
12++++
13+
14+Come, bring your laptop, and we'll get you started building things in Urbit's language — Hoon.
15+
16+There's no lesson per-se, think of it more like an 'independent projects' class. A few of us will be around to help you get started working on whatever you're interested in. It's completely fine if you're new to the language. We're going to start with 20 spots so we can help everyone individually.
content/events/2018-05-25-urbit-irl-20185.mdnew file+18
@@ -0,0 +1,18 @@
1+
2++++
3+title = "Urbit IRL ~2018.5"
4+date = 2018-05-25
5+[extra]
6+pinned = false
7+host = "Urbit"
8+time = "20:00 PST"
9+location = "Urbit office"
10+image = ""
11+registration_url = "https://www.meetup.com/urbit-sf/events/250889557/"
12++++
13+
14+Turns out that just getting Urbit fans in one room is pretty fun — so come hang out and have a beer (or wine).
15+
16+Ted will give a quick update on Urbit's new build system, ford. Then it's time to hang, listen to music (our friend Grayson will be playing records) and meet up IRL. The room is full of desks and the internet is pretty fast. Impromptu demos and tutorials are the norm. Bring your laptop and we'll install Urbit for you. Or just relax and talk to the weird array of people who also want to replace the internet.
17+
18+Feel free to bring friends!
content/events/2018-08-03-after-hours-decentralized-web-summit.mdnew file+14
@@ -0,0 +1,14 @@
1+
2++++
3+title = "After hours 'decentralized web summit'"
4+date = 2018-08-03
5+[extra]
6+pinned = false
7+host = "Urbit"
8+time = "17:00 PST"
9+location = "Orbit Room"
10+image = ""
11+registration_url = "https://www.meetup.com/urbit-sf/events/253423219/"
12++++
13+
14+We’re hosting a last minute happy hour for our friends in town for the Decentralized Web Summit. All are welcome to join us tomorrow, Friday, August 3 at the Orbit Room from 5-7PM.
content/events/2018-08-17-urbit-irl-20188.mdnew file+20
@@ -0,0 +1,20 @@
1+
2++++
3+title = "Urbit IRL ~2018.8"
4+date = 2018-08-17
5+[extra]
6+pinned = false
7+host = "Urbit"
8+time = "20:00 PST"
9+location = "Urbit Office"
10+image = ""
11+registration_url = "https://www.meetup.com/urbit-sf/events/253292678/"
12++++
13+
14+UPDATE: Hey Everyone! Due to a conflict, we are rescheduling our gathering to the following Friday, August 17.
15+
16+Turns out that just getting Urbit fans in one room is pretty fun — so come hang out and have a beer.
17+
18+No demos or talks this time, but we will be hosting Hoon School again soon. Just some time to hang, listen to music and meet up IRL. The room is full of desks and the internet is pretty fast. So impromptu demos and tutorials are the norm. Bring your laptop and we'll install Urbit for you. Or just relax and talk to the weird array of people who also want to replace the internet.
19+
20+Feel free to bring friends!
content/events/2018-09-21-urbit-irl-20189.mdnew file+18
@@ -0,0 +1,18 @@
1+
2++++
3+title = "Urbit IRL ~2018.9"
4+date = 2018-09-21
5+[extra]
6+pinned = false
7+host = "Urbit"
8+time = "20:00 PST"
9+location = "Urbit Office"
10+image = ""
11+registration_url = "https://www.meetup.com/urbit-sf/events/254602025/"
12++++
13+
14+Turns out that just getting Urbit fans in one room is pretty fun — so come hang out and have a beer (or wine).
15+
16+Gavin will give an update on Urbit design at 8:30. Then it's time to hang, listen to music and meet up IRL. The room has tables and the internet is pretty fast. Impromptu demos and tutorials are the norm. Bring your laptop and we'll install Urbit for you. Or just relax and talk to the weird array of people who also want to replace the internet.
17+
18+Feel free to bring friends!
content/events/2018-10-10-urbit-zcash-blockchain-week.mdnew file+24
@@ -0,0 +1,24 @@
1+
2++++
3+title = "Urbit + Zcash: 'Blockchain Week'"
4+date = 2018-10-10
5+[extra]
6+pinned = false
7+host = "Urbit"
8+time = "19:00 PST"
9+location = "Urbit Office"
10+image = ""
11+registration_url = "https://www.meetup.com/urbit-sf/events/255001807/"
12++++
13+
14+We're all full and looking forward to seeing you tonight. After you check-in at the front door please come up to floor 2, room 222.
15+
16+~Schedule
17+
18+7 - 8: Come on time for hot pizza!
19+
20+8 - 8:30: Alejandro Machado, researcher, advocate, and member of the Zcash community will speak
21+
22+8:30 - 9: Galen Wolfe-Pauly will tell you things about Urbit and our wallet
23+
24+9 - 10: Hangout
content/events/2018-12-20-after-hours-its-just-a-party-man.mdnew file+18
@@ -0,0 +1,18 @@
1+
2++++
3+title = "After hours: It's just a party, man"
4+date = 2018-12-20
5+[extra]
6+pinned = false
7+host = "Urbit"
8+time = "19:00 PST"
9+location = "Urbit Office"
10+image = ""
11+registration_url = "https://www.meetup.com/urbit-sf/events/256732938/"
12++++
13+
14+We had a busy and productive 2018. This time around, we're just going to play music and relax.
15+
16+Come have a beer, connect with Urbit developers, fans and friends IRL, and ask questions about the address space going on-chain (if you have them).
17+
18+Feel free to bring friends!
content/events/2019-03-01-after-hours-ask-galen-anything.mdnew file+20
@@ -0,0 +1,20 @@
1+
2++++
3+title = "After hours: Ask Galen Anything"
4+date = 2019-03-01
5+[extra]
6+pinned = false
7+host = "Urbit"
8+time = "19:30 PST"
9+location = "Urbit Office"
10+image = ""
11+registration_url = "https://www.meetup.com/urbit-sf/events/259144802/"
12++++
13+
14+We thought we'd try something new this month. Come hang out and ask Galen questions about Azimuth, Arvo, or any part of Urbit.
15+
16+8:00-9:00pm: AMA
17+
18+Afterwards, have a beer, connect with Urbit developers, fans, and friends IRL.
19+
20+Feel free to bring friends and share the primer. <a href="https://urbit.org/primer" class="linkified">https://urbit.org/primer</a>
content/events/2019-03-08-urbit-irl-austin-tx.mdnew file+16
@@ -0,0 +1,16 @@
1+
2++++
3+title = "Urbit IRL: Austin, TX"
4+date = 2019-03-08
5+[extra]
6+pinned = false
7+host = "Urbit"
8+time = "17:00 PST"
9+location = "Garage"
10+image = ""
11+registration_url = "https://www.meetup.com/urbit-sf/events/259307805/"
12++++
13+
14+We're coming to Austin, TX! It turns out that just getting Urbit fans in one room is pretty fun — so come hang out and have a drink on us. Feel free to bring friends and come early for Urbit shirts.
15+
16+Thank you to our friends over at Garage for hosting us. We'll be there from 5-7 PM.
content/events/2019-04-19-urbit-irl-20194.mdnew file+20
@@ -0,0 +1,20 @@
1+
2++++
3+title = "Urbit IRL ~2019.4"
4+date = 2019-04-19
5+[extra]
6+pinned = false
7+host = "Urbit"
8+time = "19:00 PST"
9+location = "Urbit Office"
10+image = ""
11+registration_url = "https://www.meetup.com/urbit-sf/events/260326318/"
12++++
13+
14+Turns out that just getting Urbit fans in one room is pretty fun — so come hang out and have a beer (or wine).
15+
16+By popular demand: we'll try to keep this one QUIET so everybody can talk.
17+
18+Come for a quick update on what we're working on. Stay to relax and talk to a weird array of people who also want to replace the internet.
19+
20+Feel free to bring friends!
content/events/2019-05-17-urbit-irl-20195.mdnew file+18
@@ -0,0 +1,18 @@
1+
2++++
3+title = "Urbit IRL ~2019.5"
4+date = 2019-05-17
5+[extra]
6+pinned = false
7+host = "Urbit"
8+time = "19:00 PST"
9+location = "Urbit Office"
10+image = ""
11+registration_url = "https://www.meetup.com/urbit-sf/events/261110620/"
12++++
13+
14+Turns out that just getting Urbit fans in one room is pretty fun — so come hang out and have a beer, or wine.
15+
16+This time we'll give a brief update on what we've been up to around 8pm. Turning the music down worked well, so we'll do that again. And if you want help installing Urbit, bring a laptop.
17+
18+Feel free to bring friends!
content/events/2019-06-21-urbit-irl-20196.mdnew file+18
@@ -0,0 +1,18 @@
1+
2++++
3+title = "Urbit IRL ~2019.6"
4+date = 2019-06-21
5+[extra]
6+pinned = false
7+host = "Urbit"
8+time = "19:00 PST"
9+location = "Urbit Office"
10+image = ""
11+registration_url = "https://www.meetup.com/urbit-sf/events/262079477/"
12++++
13+
14+Turns out that just getting Urbit fans in one room is pretty fun — so come hang out and have some beer and pizza.
15+
16+This time we'll give a brief update on what we've been up to around 8pm. Turning the music down worked well, so we'll do that again. And if you want help installing Urbit, bring a laptop.
17+
18+Feel free to bring friends!
content/events/2019-07-19-urbit-irl-20197.mdnew file+18
@@ -0,0 +1,18 @@
1+
2++++
3+title = "Urbit IRL ~2019.7"
4+date = 2019-07-19
5+[extra]
6+pinned = false
7+host = "Urbit"
8+time = "19:00 PST"
9+location = "Urbit Office"
10+image = "https://secure.meetupstatic.com/photos/event/e/0/5/b/600_482817435.jpeg"
11+registration_url = "https://www.meetup.com/urbit-sf/events/262858100/"
12++++
13+
14+Turns out that just getting Urbit fans in one room is pretty fun — so come hang out and chat with old and new friends over a beer.
15+
16+Turning the music down has worked well, so we'll continue doing that. And if you want help installing Urbit, bring a laptop.
17+
18+Feel free to bring friends!
content/events/2019-08-29-urbit-austin-20198.mdnew file+16
@@ -0,0 +1,16 @@
1+
2++++
3+title = "Urbit Austin ~2019.8"
4+date = 2019-08-29
5+[extra]
6+pinned = false
7+host = "Urbit"
8+time = "18:00 PST"
9+location = "Garage"
10+image = "https://secure.meetupstatic.com/photos/event/a/8/d/4/600_483643220.jpeg"
11+registration_url = "https://www.meetup.com/urbit-sf/events/263655974/"
12++++
13+
14+Thanks to our friends over at Garage for offering to host another meetup in Austin, Texas.
15+
16+Come have a drink on us, and bring friends! We'll be there 6–8pm.
content/events/2019-10-04-urbit-irl-201910.mdnew file+18
@@ -0,0 +1,18 @@
1+
2++++
3+title = "Urbit IRL ~2019.10"
4+date = 2019-10-04
5+[extra]
6+pinned = false
7+host = "Urbit"
8+time = "19:00 PST"
9+location = "Urbit Office"
10+image = "https://secure.meetupstatic.com/photos/event/e/1/c/5/600_485217797.jpeg"
11+registration_url = "https://www.meetup.com/urbit-sf/events/265165676/"
12++++
13+
14+Lately, Urbit has been having dangerous amounts of fun online. So we got thinking, "Wouldn't it be smart to try having fun offline as well?" Thus, we invented something totally new: an offline chatroom.
15+
16+We're calling it Urbit IRL. You can use it to see your friends face-to-face, converse about Urbit, even to share a beer. And we're trying it out Friday, October 4.
17+
18+We hope to see you there! If you want help installing Urbit, bring a laptop. And bring a friend, especially if they are interested in replacing the internet.
content/events/2019-11-15-urbit-irl-201911.mdnew file+18
@@ -0,0 +1,18 @@
1+
2++++
3+title = "Urbit IRL ~2019.11"
4+date = 2019-11-15
5+[extra]
6+pinned = false
7+host = "Urbit"
8+time = "19:00 PST"
9+location = "Urbit Office"
10+image = "https://secure.meetupstatic.com/photos/event/4/c/e/6/600_486379686.jpeg"
11+registration_url = "https://www.meetup.com/urbit-sf/events/266146513/"
12++++
13+
14+Lately, Urbit has been having dangerous amounts of fun online. So we got thinking, "Wouldn't it be smart to try having fun offline as well?" Thus, we invented something totally new: an offline chatroom.
15+
16+We're calling it Urbit IRL. You can use it to see your friends face-to-face, converse about Urbit, even to share a beer. And we're trying it out Friday, November 15.
17+
18+We hope to see you there! If you want help installing Urbit, bring a laptop. And bring a friend, especially if they are interested in replacing the internet.
content/events/2019-12-13-urbit-irl-201912.mdnew file+26
@@ -0,0 +1,26 @@
1+
2++++
3+title = "Urbit IRL ~2019.12"
4+date = 2019-12-13
5+[extra]
6+pinned = false
7+host = "Urbit"
8+time = "19:00 PST"
9+location = "Urbit Office"
10+image = "https://secure.meetupstatic.com/photos/event/6/a/8/8/600_487107272.jpeg"
11+registration_url = "https://www.meetup.com/urbit-sf/events/266904108/"
12++++
13+
14+Come celebrate, friends! Urbit has had quite the decade, transforming from an intercepted interstellar transmission to a functional operating system, which also functions.
15+
16+We're getting together to savor the moment and get hype about what the next decade holds (the whole replacing the internet thing).
17+
18+We hope to see you there!
19+
20+Things to bring:
21+
22+-A friend
23+
24+-A laptop, if you want help installing Urbit
25+
26+-Good cheer
content/events/2020-01-24-urbit-irl-20201.mdnew file+20
@@ -0,0 +1,20 @@
1+
2++++
3+title = "Urbit IRL ~2020.1"
4+date = 2020-01-24
5+[extra]
6+pinned = false
7+host = "Urbit"
8+time = "19:00 PST"
9+location = "Urbit Office"
10+image = "https://secure.meetupstatic.com/photos/event/2/1/7/6/600_487988566.jpeg"
11+registration_url = "https://www.meetup.com/urbit-sf/events/267753862/"
12++++
13+
14+"Neo-Urbit arrives from the future." It's 2020 and Urbit is accelerating. We've got a lot going live this year.
15+
16+Replacing the internet is a thing to behold. Come by the offices to hang out, have a drink, and hear the latest.
17+
18+Bring a laptop if you want help installing Urbit.
19+
20+And as always, bring a friend!
content/events/2020-02-28-urbit-irl-20202.mdnew file+20
@@ -0,0 +1,20 @@
1+
2++++
3+title = "Urbit IRL ~2020.2"
4+date = 2020-02-28
5+[extra]
6+pinned = false
7+host = "Urbit"
8+time = "19:00 PST"
9+location = "Urbit Office"
10+image = "https://secure.meetupstatic.com/photos/event/8/5/e/b/600_488794283.jpeg"
11+registration_url = "https://www.meetup.com/urbit-sf/events/268519069/"
12++++
13+
14+Urbit is a wilderness right now. A vast continent of possibility. We're gonna head out there and hack around. Join us.
15+
16+Before we go headlong into that unknown region, we're gonna have a party at basecamp (aka the office). Come hang out and have a drink with your fellow Urbit explorers.
17+
18+Bring your laptop if you want to install Urbit.
19+
20+And as always, drag a friend!
content/events/2020-04-03-urbit-os1-launch-party.mdnew file+51
@@ -0,0 +1,51 @@
1+
2++++
3+title = "Urbit OS1 Launch Party"
4+date = 2020-04-03
5+[extra]
6+pinned = false
7+host = "Urbit"
8+time = "19:00 PST"
9+location = "Online event"
10+image = "https://secure.meetupstatic.com/photos/event/1/f/8/b/600_489548075.jpeg"
11+registration_url = "https://www.meetup.com/urbit-sf/events/268519156/"
12++++
13+
14+Join us as we launch Urbit OS1!
15+
16+The presentation will begin at 7pm Pacific.
17+
18+Youtube Live Stream:
19+
20+{{ youtube(id="71ViyftPkGk") }}
21+
22+
23+Join the live conversation on Urbit itself: `~/~dopzod/os1-premiere`
24+
25+[There is also a VR viewing party for this event, hosted by `~naltyc-wornes`](https://account.altvr.com/events/1435581121923383472).
26+
27+To receive the event merch, RSVP on this event page by midnight!
28+
29+Ready to launch OS1? Check out our install guide:
30+
31+[https://urbit.org/using/install/](https://urbit.org/using/install/)
32+
33+Want address space for your friends? Apply for an Urbit Community Grant:
34+
35+[https://urbit.org/community/community-grants/](https://urbit.org/community/community-grants/)
36+
37+Interested in contributing to Urbit? Sign up for Hoon School:
38+
39+[https://urbit.org/community/hoonschool/](https://urbit.org/community/hoonschool/)
40+
41+Get the latest on Urbit:
42+
43+Blog: <a href="https://urbit.org/blog/" class="linkified">https://urbit.org/blog/</a>
44+
45+Urbit Twitter: <a href="https://twitter.com/urbit" class="linkified">https://twitter.com/urbit</a>
46+
47+Urbit Github: <a href="https://github.com/urbit" class="linkified">https://github.com/urbit</a>
48+
49+Still confused about what Urbit is?
50+
51+<a href="https://urbit.org/understanding-urbit/" class="linkified">https://urbit.org/understanding-urbit/</a>
content/events/2020-10-09-urbit-hosting-launch-event.mdnew file+34
@@ -0,0 +1,34 @@
1+
2++++
3+title = "Urbit Hosting Launch Event"
4+date = 2020-10-09
5+[extra]
6+pinned = false
7+host = "Urbit"
8+time = "17:00 PST"
9+location = "Online event"
10+image = "https://secure.meetupstatic.com/photos/event/8/600_492480008.jpeg"
11+registration_url = "https://www.meetup.com/urbit-sf/events/273439025/"
12++++
13+
14+Stream is now live: <a href="https://www.youtube.com/watch?v=w3qKe_WZr50" class="embedded">https://www.youtube.com/watch?v=w3qKe_WZr50</a>
15+
16+-------
17+
18+We've been busy building, testing and refining — and now it's time to show off what we've been up to.
19+
20+We're going to do a live demo of Tlon's Urbit hosting solution, check out some of the new features of Landscape and generally catch up on what both we (at Tlon) and the community have been up to.
21+
22+Since the OS 1 launch, back in April, we've been living on Urbit day to day. Urbit has gotten gotten a lot faster, more reliable and nicer to use. Most importantly, we've got an easy way for friends to come join us without running their own node. We're really excited to let people explore what's possible with Urbit and build communities without ever touching the command-line.
23+
24+Join the waitlist for hosting here: <a href="https://tlon.io/" class="linkified">https://tlon.io/</a>
25+
26+------
27+
28+Got a group of friends who want to use Urbit together? We periodically give away blocks of planets and help people get set up. Apply for a community grant:<br/><a href="https://urbit.org/community/community-grants/" class="linkified">https://urbit.org/community/community-grants/</a>
29+
30+Interested developing on Urbit? Hoon School is a community-run program to teach you the basics of the language and system. Sign up here:<br/><a href="https://hooniversity.org" class="linkified">https://hooniversity.org</a>
31+
32+Mostly, you can find us on Urbit in the Urbit Community group. But you can also follow along here:<br/><a href="https://urbit.org/blog/" class="linkified">https://urbit.org/blog/</a><br/><a href="https://twitter.com/urbit" class="linkified">https://twitter.com/urbit</a><br/><a href="https://github.com/urbit" class="linkified">https://github.com/urbit</a>
33+
34+And if you're still confused about what Urbit is, try these:<br/><a href="https://urbit.org/understanding-urbit/" class="linkified">https://urbit.org/understanding-urbit/</a>
content/events/2020-11-05-developer-call-graph-store.mdnew file+18
@@ -0,0 +1,18 @@
1+
2++++
3+title = "Developer Call: Graph Store"
4+date = 2020-11-05
5+[extra]
6+pinned = false
7+host = "Lane R., Urbit"
8+time = "09:00 PST"
9+location = "Online event"
10+image = ""
11+registration_url = "https://www.meetup.com/urbit-sf/events/274279522/"
12++++
13+
14+Developer calls are focused on the technologies that underpin Urbit, from the top of the stack to the very bottom. They’re an opportunity for the people developing and contributing to Urbit to share their knowledge and expertise, including things that typically don’t make it into the docs, such as how and why Urbit works the way it does.
15+
16+This call will feature a discussion by Tlon engineer Logan Allen about graph-store, the general-purpose store that is gradually replacing the bespoke stores behind Chat, Publish and Links.
17+
18+You can join the event by clicking the gotowebinar.com link posted here. Details for joining the conversation were also emailed to all registered attendees, and will be sent again shortly before the event starts. Please check your email inbox for a message from Meetup.com.
content/events/2020-11-19-developer-call-bittorrent-tracking-on-urbit.mdnew file+18
@@ -0,0 +1,18 @@
1+
2++++
3+title = "Developer Call: BitTorrent tracking on Urbit"
4+date = 2020-11-19
5+[extra]
6+pinned = false
7+host = "Lane R., Urbit"
8+time = "09:00 PST"
9+location = "Online event"
10+image = ""
11+registration_url = "https://www.meetup.com/urbit-sf/events/274650693/"
12++++
13+
14+Developer calls are focused on the technologies that underpin Urbit, from the top of the stack to the very bottom. They’re an opportunity for the people developing and contributing to Urbit to share their knowledge and expertise, including things that typically don’t make it into the docs, such as how and why Urbit works the way it does.
15+
16+This call will feature a discussion by Tlon engineer Mark Staarink, also known as ~palfun-foslup, about writing an HTTP BitTorrent tracker and command line app in 1500 lines of code.
17+
18+The livestream will be held on YouTube, and a group video call will be made available via Google Meet after the talk for casual discussion and in-person conversation.
content/events/2020-12-10-developer-call-injecting-external-services-into-urbit.mdnew file+18
@@ -0,0 +1,18 @@
1+
2++++
3+title = "Developer Call: Injecting External Services into Urbit"
4+date = 2020-12-10
5+[extra]
6+pinned = false
7+host = "Lane R., Urbit"
8+time = "09:00 PST"
9+location = "Online event"
10+image = ""
11+registration_url = "https://www.meetup.com/urbit-sf/events/275051926/"
12++++
13+
14+This call will feature a discussion by well-known developer in the Urbit community, ~timluc-miptev. ~timluc will be discussing the work he's been doing to provide access to a Bitcoin full node, which will enable Urbit ships to make Bitcoin payments to other ships. More generally, he'll be discussing the patterns that he's using to manage an Urbit ship's connection to externally-running infrastructure, and how access to that infrastructure can be provided to other Urbit nodes.
15+
16+Developer calls are focused on the technologies that underpin Urbit, from the top of the stack to the very bottom. They’re an opportunity for the people developing and contributing to Urbit to share their knowledge and expertise, including things that typically don’t make it into the docs, such as how and why Urbit works the way it does.
17+
18+The livestream will be held on YouTube, and a group video call will be made available via Google Meet after the talk for casual discussion and in-person conversation.
content/events/2021-02-04-developer-call-architectural-idea-maze.mdnew file+18
@@ -0,0 +1,18 @@
1+
2++++
3+title = "Developer Call: Architectural Idea Maze"
4+date = 2021-02-04
5+[extra]
6+pinned = false
7+host = "Lane R., Urbit"
8+time = "09:00 PST"
9+location = "Online event"
10+image = ""
11+registration_url = "https://www.meetup.com/urbit-sf/events/275992798/"
12++++
13+
14+Tlon Engineer Philip Monk is interviewed by Poprox in an "Architectural Idea Maze" discussion, where Phil will discuss the choices made, and possibly more importantly, the choices *not* made in the design of a component of Urbit. In this discussion, Phil will be focusing on subscriptions in all their forms throughout Urbit.
15+
16+Developer calls are focused on the technologies that underpin Urbit, from the top of the stack to the very bottom. They’re an opportunity for the people developing and contributing to Urbit to share their knowledge and expertise, including things that typically don’t make it into the docs, such as how and why Urbit works the way it does.
17+
18+The livestream will be held on YouTube, and a group video call will be made available via Google Meet after the talk for casual discussion and in-person conversation.
content/events/2021-03-04-developer-call-scaling-azimuth.mdnew file+22
@@ -0,0 +1,22 @@
1+
2++++
3+title = "Developer Call: Scaling Azimuth"
4+date = 2021-03-04
5+[extra]
6+pinned = false
7+host = "Urbit"
8+time = "09:00 PST"
9+location = "Online event"
10+image = ""
11+registration_url = "https://www.meetup.com/urbit-sf/events/276692816/"
12++++
13+
14+Urbit engineer Philip Monk will be discussing the solution space to scaling Azimuth, the infrastructure for Urbit ID that's built on Ethereum.
15+
16+Unless you're living under a rock, you know that Ethereum is thoroughly congested and, as a result the cost of working with it is quite high. Most pertinently for Urbit, this means that the cost of bringing new planets onto the network is unacceptably high.
17+
18+Phil has been doing a ton of research for the past few months on different approaches to scaling Azimuth. In this talk, he'll lay out the what's been explored so far, the relevant considerations for Urbit, and the emerging solutions that are being pursued.
19+
20+As usual, this talk will feature a presentation, a Q&amp;A period and a follow-up video call that anyone from the audience can join.
21+
22+See you there!
content/events/2021-03-18-developer-call-pressure-and-protolith.mdnew file+19
@@ -0,0 +1,19 @@
1+
2++++
3+title = "Developer Call: Pressure and Protolith"
4+date = 2021-03-18
5+[extra]
6+pinned = false
7+host = "Urbit"
8+time = "09:00 PST"
9+location = "Online event"
10+image = "https://secure.meetupstatic.com/photos/event/6/8/2/a/600_495146666.jpeg"
11+registration_url = "https://www.meetup.com/urbit-sf/events/276898246/"
12+description = "Matilde Park, Landscape team lead, talks about the distinctions between the Landscape product and basic Urbit development, and the significance of building Landscape for Tlon."
13++++
14+
15+Landscape was an experiment. Now it’s Tlon's flagship client for the Urbit project: a product, a full-stack application, spread across a variety of Gall agents and libraries, lighting the way forward against the dwindling unknowns in the reality of Urbit userspace development and distribution.
16+
17+Matilde Park, Landscape team lead, talks about the distinctions between the Landscape product and basic Urbit development, and the significance of building Landscape for Tlon — the role of “high-pressure experiments” in forcing our computer toward something rock-hard, diamond-perfect. With a few examples of ongoing deployments, she also outlines the problems being solved right now and the ones still a touch further out.
18+
19+As usual, join us after the talk on the call to ask questions and hang out.
content/events/2021-04-01-developer-call-javascript-apps-on-urbit.mdnew file+19
@@ -0,0 +1,19 @@
1++++
2+title = "JavaScript Apps on Urbit"
3+date = 2021-04-01
4+[extra]
5+pinned = false
6+host = "Mike Osborne (~taller-ravnut)"
7+time = "09:00 PST"
8+location = "Online Event"
9+image = "https://marpem-files.sfo2.digitaloceanspaces.com/radbur-sivmus/2021.4.05..15.41.17-urbit-javascript-diagram.png"
10+registration_url = "https://www.meetup.com/urbit-sf/events/277261928/"
11+guests = "Tyler Brown Cifu Shuster (~radbur-sivmus)"
12+description = "In this talk, Tyler Brown Cifu Shuster (~radbur-sivmus) explains how to use Javascript tools to develop a client for Urbit."
13++++
14+
15+Urbit provides a powerful and extensible platform for all kinds of app development. It can serve as a general-purpose datastore, decentralized network, and identity solution for a variety of front-end applications. The client that ships with Urbit, Landscape, provides one example of the kind of applications that can be built on the platform. However, other developers can use the same tools used to create Landscape to power their own interfaces and clients for Urbit.
16+
17+Tyler Brown Cifu Shuster (~radbur-sivmus) has worked with the Landscape team over the past few months to extract these tools into reusable Javascript packages. In this talk, he will explain how to use them to develop a client for Urbit independent of Landscape. He will cover the basic lifecycle of a client and explain how Javascript interface and state frameworks pair with Urbit's data model.
18+
19+This talk should enable anyone familiar with modern Javascript development and HTTP grammar to build an application on top of Urbit without writing any back-end code.
content/events/2021-04-27-bitcoin-launch.mdnew file+29
@@ -0,0 +1,29 @@
1++++
2+title = "Bitcoin Launch"
3+date = 2021-04-27
4+[extra]
5+pinned = false
6+pinned = true
7+host = "Urbit Foundation"
8+time = "09:00 PST"
9+location = "Online Event"
10+image = "https://secure.meetupstatic.com/photos/event/4/d/c/9/highres_495019913.jpeg"
11+registration_url = "https://www.meetup.com/urbit-sf/events/276741426/"
12+guests = "~timluc-miptev"
13+description = "Bitcoin is coming to Urbit! With the upcoming release of the Bitcoin Wallet, you will be able to pay Urbit ships directly with BTC."
14++++
15+
16+Bitcoin is coming to Urbit! With the upcoming release of the Bitcoin Wallet, you will be able to pay Urbit ships directly with BTC.
17+
18+We’d like to take a moment to show it off, and discuss the future of commerce on Urbit. First, Christian and Josh will demo the wallet, then, our good friend Marty Bent will moderate a panel with Christian, Tim, and Ed. We will have time at the end for questions.
19+
20+The event will have a live stream on Youtube, and a live-chat on Urbit, links to come.
21+
22+In the meantime, join the Bitcoin dev conversation in the Urbitcoiners group: ~pindet-timmut/urbitcoin-cash
23+
24+------
25+[Read our thoughts about Bitcoin on Urbit](/blog/urbit-and-bitcoin)
26+
27+Interested developing on Urbit? Our grants program actively rewards address space to developers. [Learn more here](/docs/development/grants/).
28+
29+And if you're still confused about what Urbit is, [try this](/understanding-urbit/).
content/events/_index.mdnew file+6
@@ -0,0 +1,6 @@
1++++
2+title = "Events"
3+sort_by = "date"
4+template = "events/list.html"
5+page_template = "events/event.html"
6++++
sass/_events.scssnew file+27
@@ -0,0 +1,27 @@
1+.event .metadata > * {
2+
3+ &::after {
4+ content: ' / ';
5+ }
6+ &:nth-last-child(2)::after,
7+ &:nth-last-child(1)::after {
8+ content: '';
9+ }
10+}
11+
12+#event_months {
13+ ol {
14+ height: 0;
15+ overflow: hidden;
16+ &.current,
17+ &:hover {
18+ height: auto;
19+ }
20+ }
21+ li:hover ol {
22+ height: auto;
23+ }
24+ a.current {
25+ font-weight: bold;
26+ }
27+}
sass/styles.scss+1
@@ -1,2 +1,3 @@
11@import "main";
2+@import "events";
23@import "responsive";
static/scripts.js+53−12
@@ -371,13 +371,50 @@ if (window.location.href.includes("docs")) {
371371 docsNavScroll();
372372}
373373
374+var getParents = function (elem, selector) {
375+
376+ // Element.matches() polyfill
377+ if (!Element.prototype.matches) {
378+ Element.prototype.matches =
379+ Element.prototype.matchesSelector ||
380+ Element.prototype.mozMatchesSelector ||
381+ Element.prototype.msMatchesSelector ||
382+ Element.prototype.oMatchesSelector ||
383+ Element.prototype.webkitMatchesSelector ||
384+ function(s) {
385+ var matches = (this.document || this.ownerDocument).querySelectorAll(s),
386+ i = matches.length;
387+ while (--i >= 0 && matches.item(i) !== this) {}
388+ return i > -1;
389+ };
390+ }
391+
392+ // Set up a parent array
393+ var parents = [];
394+
395+ // Push each parent element to the array
396+ for ( ; elem && elem !== document; elem = elem.parentNode ) {
397+ if (selector) {
398+ if (elem.matches(selector)) {
399+ parents.push(elem);
400+ }
401+ continue;
402+ }
403+ parents.push(elem);
404+ }
405+
406+ // Return our parent array
407+ return parents;
408+
409+};
410+
411+
412+
413+
374414// same-page navigation on-scroll behaviour
375415
376−if (document.body.classList.contains("page-indiced")) {
377− let h2 = document.getElementsByTagName("h2");
378− let h3 = document.getElementsByTagName("h3");
379− let all = document.querySelectorAll("nav li a");
380− let headers = document.querySelectorAll("details summary");
416+if (document.body.classList.contains("page-indiced") || document.getElementById("event_months")) {
417+ let all = document.querySelectorAll("nav.fixed-xl li a");
381418
382419 // smooth scrolling on click
383420 all.forEach(link => {
@@ -391,26 +428,30 @@ if (document.body.classList.contains("page-indiced")) {
391428 });
392429 });
393430
394− let lastId;
395− let cur = [];
396−
397431 window.addEventListener("scroll", event => {
398432 let fromTop = window.scrollY;
399−
433+ let current;
400434 all.forEach(link => {
435+ if (!link.hash) return;
401436 let section = document.querySelector(link.hash);
402437 let sectionChildren = document.querySelector(link.hash).nextElementSibling;
438+ if (!sectionChildren) sectionChildren = section;
403439
404440 if (
405441 ((section.offsetTop <= fromTop) ||
406442 (sectionChildren.offsetTop <= fromTop)) &&
407443 (section.offsetTop + section.offsetHeight + sectionChildren.offsetHeight > fromTop)
444+ && !current
408445 ) {
409− link.classList.add("current");
410− } else {
411− link.classList.remove("current");
446+ current = link;
412447 }
413448 });
449+ if (current) {
450+ Array.from(document.querySelectorAll('.current')).forEach(current => current.classList.remove('current'));
451+ const parents = getParents(current, 'ol');
452+ current.classList.add('current');
453+ parents.forEach(current => current.classList.add('current'));
454+ }
414455 })
415456};
416457
templates/essays/post.html+2−1
@@ -1,4 +1,5 @@
11{% extends "base.html" %}
2+{% import "partials/pagination.html" as pagination %}
23{% block title %}
34 <meta name="og:title" content="{{ page.title }} - {{ config.title }}">
45 <title>{{ page.title }} - {{ config.title }}</title>
@@ -62,7 +63,7 @@
6263
6364 {{ page.content | safe }}
6465
65− {% include "partials/pagination.html" %}
66+ {{ pagination::pagination(page=page) }}
6667</article>
6768<section class="full c4-12-lg lh-copy mt6 mb4 measure-wide">
6869 <iframe name="nothing" style="display:none;"></iframe>
templates/events/event.htmlnew file+82
@@ -0,0 +1,82 @@
1+{% extends "page.html" %}
2+{% import "partials/pagination.html" as pagination %}
3+
4+{% block content %}
5+
6+<!-- header -->
7+<!-- content -->
8+{%- set lowercasetitle = page.title | lower | split(pat=" ") | join(sep="") -%}
9+{% if section or lowercasetitle == page.components[0] %}
10+<nav class="mt4 pb4 fixed-xl full fourth-1-md fourth-1-lg page-indiced mb3 mb0-m mb0-l mb0-xl">
11+ <a class="gray3" href="/">Urbit</a>
12+ <span class="gray3"> / </span>
13+ <a href="/{{ page.components[0] }}">
14+ {{ page.title }}
15+ </a>
16+
17+ {% include "partials/navigation-search.html" %}
18+</nav>
19+{% else %}
20+<nav class="mt4 fixed-xl full fourth-1-md fourth-1-lg page-indiced mb3 mb0-m mb0-l mb0-xl">
21+ <a class="gray3" href="/">Urbit</a>
22+ <span class="gray3"> / </span>
23+ <a href="/{{ page.components[0] }}{% if page.components[2] %}/{{ page.components[1] }}{% endif %}">
24+ {% if page.components[2] %}{{ page.components[1] | capitalize }}
25+ {% else %}
26+ {{ page.components[0] | capitalize }}
27+ {% endif %}
28+ </a>
29+
30+ {% include "partials/navigation-search.html" %}
31+
32+</nav>
33+
34+{% endif %}
35+
36+<article class="mt4 mb4 c1-13 c4-12-lg measure-wide">
37+ {% if page.extra.hidetitle %} {% else %}<h1>{{ page.title }}</h1>{% endif %}
38+
39+ {% if page.extra.image %}
40+ <img class="db mv2 obj-cover w-100 ba" src="{{ page.extra.image }}" />
41+ {% endif %}
42+
43+ {% if page.extra.author %}
44+ <span class="mt2 dib" rel="author"> {{ page.extra.author }} </span>
45+ {% if page.extra.ship %}
46+ <address class="mono">{{ page.extra.ship }}</address>
47+ {% endif %}
48+ {% endif %}
49+
50+ {% if page.date %}
51+ <time class="mono db mv1 gray2 f5">{{ page.date | date(format="~%Y.%-m.%-d") }} {{ page.extra.time }}</time>
52+ {% endif %}
53+
54+ {% if page.extra.registration_url %}
55+ <!-- TODO only show this if it's in the future. This build of tera doesn't support casting to int, so we have to use JS -->
56+ <a class="f6" target="_blank" href="{{ page.extra.registration_url }}" id="rsvp" data-date="{{ page.date }}">RSVP Here</a>
57+ <script>
58+ const rsvp = document.getElementById('rsvp');
59+ if (Date.now() > Date.parse(rsvp.dataset.date)) {
60+ rsvp.style.display = 'none';
61+ }
62+ </script>
63+ {% endif %}
64+
65+ <!-- body -->
66+ <span id="rsvp_count"></span>
67+ {{ page.content | safe }}
68+ {{ pagination::pagination(page=page, type="Event") }}
69+
70+ {% if page.extra.registration_url %}
71+ <script>
72+ //fetch(`{{ page.extra.registration_url | replace(from="www", to="api") | safe}}`)
73+ // .then(response => response.json())
74+ // .then(response => {
75+ // console.log('response', response);
76+ // document.getElementById('rsvp_count').innerText = response.yes_rsvp_count;
77+ // });
78+ </script>
79+ {% endif %}
80+</article>
81+
82+{% endblock content %}
templates/events/list.htmlnew file+157
@@ -0,0 +1,157 @@
1+{% extends "base.html" %}
2+{% import "macros/macros.html" as macros %}
3+
4+{% block title %}
5+ <meta name="og:title" content="Events - {{ config.title }}">
6+ <title>Events - {{ config.title }}</title>
7+{% endblock title %}
8+
9+{% block description %}
10+ <meta name="og:description" content="Events facilitated by the Urbit Foundation.">
11+ <meta name="description" content="Events facilitated by the Urbit Foundation.">
12+{% endblock description %}
13+
14+{% block content %}
15+{% set posts = get_section(path="events/_index.md") %}
16+<!-- header -->
17+<nav class="mt4 full fourth-1-lg mb3 mb0-m mb0-l mb0-xl fixed-xl">
18+ <a class="gray3" href="/">Urbit</a>
19+ <span class="gray3"> / </span>
20+ <a href="/events/">Events</a>
21+
22+ {% include "partials/navigation-search.html" %}
23+
24+ <ol id="event_months" class="pa0" style="position: sticky; top: 0;"></ol>
25+
26+</nav>
27+<section class="full c4-12-lg pt4">
28+
29+ <section id="upcoming" class="grid12"></section>
30+
31+ <section id="past" class="grid12"></section>
32+
33+ {% for page in posts.pages %}
34+ <article data-date="{{ page.date }}" id="event-{{ page.slug }}" class="event mb4 c1-10-lg full {% if page.extra.pinned %}bg-gray4 na3 pa3{% endif %}">
35+ <a href="{{ page.permalink }}" class="no-underline bb-0 grid12">
36+ <h1 class="full">{{ page.title }}</h1>
37+ <div class="measure-wide full c1-8-lg">
38+ {% if page.extra.description %}
39+ <p class="lh-copy">{{ page.extra.description }}</p>
40+ {% endif %}
41+ {{ macros::event_metadata(page=page, classes="mt2")}}
42+ </div>
43+ {% if page.extra.image %}
44+ <img class="db mv2 h4 ba obj-cover full c8-13-lg" src="{{ page.extra.image }}" />
45+ {% endif %}
46+ </a>
47+ </article>
48+ {% endfor %}
49+
50+ <script>
51+ const upcoming = document.getElementById('upcoming');
52+ const past = document.getElementById('past');
53+ const upcomingEvents = [];
54+ const pastEvents = [];
55+ Array.from(document.querySelectorAll('article[data-date')).forEach(function (article) {
56+ article.parentElement.removeChild(article);
57+ const articleDate = Date.parse(article.dataset.date);
58+ if(articleDate - Date.now() > 0) {
59+ upcomingEvents.push([articleDate, article]);
60+ } else {
61+ pastEvents.push([articleDate, article]);
62+ }
63+ });
64+
65+ upcomingEvents.sort(function (articleA, articleB) {
66+ return articleA[0] - articleB[0];
67+ });
68+
69+ pastEvents.sort(function (articleA, articleB) {
70+ return articleB[0] - articleA[0];
71+ });
72+
73+ const upcomingHeader = document.createElement('h2');
74+ upcomingHeader.className = 'mb4 full';
75+ upcomingHeader.innerText = 'Upcoming Events';
76+ upcoming.appendChild(upcomingHeader);
77+
78+ upcomingEvents.forEach(function (event) {
79+ upcoming.appendChild(event[1]);
80+ });
81+
82+ const pastHeader = document.createElement('h2');
83+ pastHeader.className = 'mb4 full';
84+ pastHeader.innerText = 'Past Events';
85+ past.appendChild(pastHeader);
86+
87+ pastEvents.forEach(function (event) {
88+ past.appendChild(event[1]);
89+ });
90+ </script>
91+
92+ <script>
93+ const monthMap = [
94+ 'January',
95+ 'February',
96+ 'March',
97+ 'April',
98+ 'May',
99+ 'June',
100+ 'July',
101+ 'August',
102+ 'September',
103+ 'October',
104+ 'November',
105+ 'December',
106+ ];
107+ const wrapper = document.getElementById('event_months');
108+ const years = {};
109+ Array.from(document.querySelectorAll('article[data-date]')).forEach(function (event) {
110+ const date = new Date(Date.parse(event.dataset.date));
111+ const year = date.getFullYear();
112+ if (!years.hasOwnProperty(year)) {
113+ years[year] = {};
114+ }
115+ const month = date.getMonth();
116+ if (!years[year].hasOwnProperty(month)) {
117+ years[year][month] = [];
118+ }
119+ years[year][month].push(event.id);
120+ });
121+ Object.keys(years).reverse().forEach(function (year) {
122+ const yearItem = document.createElement('li');
123+ yearItem.className = 'pt2';
124+ const header = document.createElement('span');
125+ header.className = 'f5';
126+ header.innerText = year;
127+ yearItem.appendChild(header);
128+ const monthList = document.createElement('ol');
129+ monthList.className = 'pa0 months';
130+ yearItem.appendChild(monthList);
131+ Object.keys(years[year]).reverse().forEach(function (month) {
132+ const monthItem = document.createElement('li');
133+ monthItem.className = 'pt1';
134+ const header = document.createElement('span');
135+ header.className = 'f6';
136+ header.innerText = monthMap[month];
137+ monthItem.appendChild(header);
138+ const articleList = document.createElement('ol');
139+ articleList.className = 'pa0 articles';
140+ monthItem.appendChild(articleList);
141+ monthList.appendChild(monthItem);
142+ years[year][month].forEach(function (id) {
143+ const articleItem = document.createElement('li');
144+ const link = document.createElement('a');
145+ link.className = 'bb f6 gray1';
146+ link.href = `#${id}`;
147+ link.innerText = document.getElementById(id).querySelector('h1').innerText;
148+ articleItem.appendChild(link);
149+ articleList.appendChild(articleItem);
150+ });
151+ });
152+ wrapper.appendChild(yearItem);
153+ });
154+ </script>
155+</section>
156+{% include "partials/footer.html" %}
157+{% endblock content %}
templates/index.html+62−50
@@ -1,4 +1,6 @@
11{% extends "base.html" %}
2+{% import "macros/macros.html" as macros %}
3+
24<!--External links are differentiated on home page.-->
35{% block templatestyles %}
46
@@ -56,8 +58,67 @@
5658 </ul>
5759</section>
5860
61+<section class="full c7-12-md c7-11-lg mb5">
62+ {% set s = get_section(path="events/_index.md") %}
63+ {% set pins = s.pages
64+ | filter(attribute="extra.pinned", value=true)
65+ | sort(attribute="date")
66+ | reverse
67+ %}
68+ {% set allposts = s.pages
69+ | sort(attribute="date")
70+ | filter(attribute="extra.pinned", value=false)
71+ | concat(with=pins)
72+ | reverse
73+ %}
74+ {% for page in allposts | slice (end=2) %}
75+ <li class="mb4 list event">
76+ <a class="bb-0" href="{{ page.permalink }}">
77+ <h2 class="f5 fw6 mt0 mb1">{{ page.title }}</h2>
78+ {% if page.extra.description %}
79+ <p class="lh-copy mt1">{{ page.extra.description }}</p>
80+ {% endif %}
81+ </a>
82+ {{ macros::event_metadata(page=page)}}
83+ </li>
84+ {% endfor %}
85+ <a href="/events" class="bb">View more events</a>
86+</section>
87+
5988
60−<section class="full lh-copy c7-12-md c7-11-lg" id="follow">
89+
90+<section class="full c2-7-md c3-7-lg mt5">
91+ <h1 class="mb3">Latest Posts</h1>
92+ <p class="lh-copy mt1">We regularly write posts on our <a class="bb" href="/blog">blog</a> about what we're working on.</p>
93+ {% set s = get_section(path="updates/_index.md") %}
94+ {% set e = get_section(path="blog/_index.md") %}
95+ {% set allposts = s.pages
96+ | concat (with=e.pages)
97+ | sort(attribute="date")
98+ | reverse
99+ %}
100+ {% for page in allposts | slice (end=2) %}
101+ <li class="mb4 list">
102+ <a class="bb-0" href="{{ page.permalink }}">
103+ <h2 class="f5 fw6 mt0 mb1">{{ page.title }}</h2>
104+ {% if page.extra.image %}
105+ <img class="db mv2 obj-cover h4 w-50 ba" src="{{ page.extra.image }}" />
106+ {% elif page.extra.description %}
107+ <p class="lh-copy mt1">{{ page.extra.description }}</p>
108+ {% endif %}
109+ <time class="mono f6">{{ page.date | date(format="~%Y.%-m.%-d") }}</time>
110+ <span class="mono f6">
111+ {% if page.extra.ship %}
112+ <address class="mono f6 mh2">{{ page.extra.ship }}</address>
113+ {% endif %}
114+ </span>
115+ </a>
116+ </li>
117+ {% endfor %}
118+</section>
119+
120+
121+<section class="full lh-copy c7-12-md c7-11-lg mt5" id="follow">
61122 <p class="lh-copy mt1 mb3">
62123 We send regular updates about our project. Enter your email to get them.
63124 </p>
@@ -104,55 +165,6 @@
104165 </p>
105166</section>
106167
107−<section class="full c2-7-md c3-7-lg mt5">
108− <h1 class="mb3">Understanding Urbit</h1>
109− <p class="lh-copy mt1">This sequence of posts will give you a high-level overview of Urbit. They take about 20 minutes to read.</p>
110− <ul class="list">
111− <li class="mt3">
112− <a class="b--black bb" href="/understanding-urbit/">Introduction</a>
113− </li>
114− {% set posts = get_section(path="understanding-urbit/_index.md") %} {%
115− for page in posts.pages %}
116− <li class="mt3">
117− <a
118− class="b--black bb"
119− href="{{ page.permalink }}">
120− {{ page.title }}
121− </a>
122− </li>
123− {% endfor %}
124− </ul>
125−</section>
126−
127−<section class="full c7-12-md c7-11-lg mv5">
128− <h1 class="mb3">Latest Posts</h1>
129− <p class="lh-copy mt1">We regularly write posts on our <a class="bb" href="/blog">blog</a> about what we're working on.</p>
130− {% set s = get_section(path="updates/_index.md") %}
131− {% set e = get_section(path="blog/_index.md") %}
132− {% set allposts = s.pages
133− | concat (with=e.pages)
134− | sort(attribute="date")
135− | reverse
136− %}
137− {% for page in allposts | slice (end=2) %}
138− <a class="bb-0" href="{{ page.permalink }}">
139− <li class="mb4 list">
140− <h2 class="f5 fw6 mt0 mb1">{{ page.title }}</h2>
141− {% if page.extra.image %}
142− <img class="db mv2 obj-cover h4 w-50 ba" src="{{ page.extra.image }}" />
143− {% elif page.extra.description %}
144− <p class="lh-copy mt1">{{ page.extra.description }}</p>
145− {% endif %}
146− <time class="mono f6">{{ page.date | date(format="~%Y.%-m.%-d") }}</time>
147− <span class="mono f6">
148− {% if page.extra.ship %}
149− <address class="mono f6 mh2">{{ page.extra.ship }}</address>
150− {% endif %}
151− </span>
152− </li>
153− </a>
154− {% endfor %}
155−</section>
156168
157169{% include "partials/footer.html" %}
158170{% endblock content %}
templates/macros/macros.htmlnew file+11
@@ -0,0 +1,11 @@
1+{% macro event_metadata(page, classes="") %}
2+ <span class="metadata measure-wide db relative {{ classes }}">
3+ {% if page.extra.location %}
4+ <span class="f6 gray1">{{ page.extra.location }}</span>
5+ {% endif %}
6+ {% if page.extra.registration_url and false %}
7+ <a href="{{ page.extra.registration_url | safe}}" target="_blank" class="f6 gray2">34 attending</a>
8+ {% endif %}
9+ <time class="mono f6 gray2 fr">{{ page.date | date(format="~%Y.%-m.%-d") }} {{ page.extra.time }} </time>
10+ </span>
11+{% endmacro event_metadata %}
templates/media/post.html+2−1
@@ -1,4 +1,5 @@
11{% extends "base.html" %}
2+{% import "partials/pagination.html" as pagination %}
23{% block title %}
34 <meta name="og:title" content="{{ page.title }} - {{ config.title }}">
45 <title>{{ page.title }} - {{ config.title }}</title>
@@ -62,6 +63,6 @@
6263
6364 {{ page.content | safe }}
6465
65− {% include "partials/pagination.html" %}
66+ {{ pagination::pagination(page=page) }}
6667</article>
6768{% endblock content %}
templates/page.html+2−1
@@ -1,4 +1,5 @@
11{% extends "base.html" %}
2+{% import "partials/pagination.html" as pagination %}
23
34{% block title %}
45 <meta name="og:title" content="{{ page.title }} - {{ config.title }}">
@@ -71,7 +72,7 @@ class="essay bg-white"
7172 {% endif %}
7273 <!-- body -->
7374 {{ page.content | safe }}
74− {% include "partials/pagination.html" %}
75+ {{ pagination::pagination(page=page) }}
7576</article>
7677
7778{% endblock content %}
templates/page_indiced.html+2−1
@@ -1,4 +1,5 @@
11{% extends "base.html" %}
2+{% import "partials/pagination.html" as pagination %}
23{% block bodyclasses %}class="page-indiced"{% endblock bodyclasses %}
34
45{% block title %}
@@ -80,6 +81,6 @@
8081 {% endif %}
8182 <!-- body -->
8283 {{ page.content | safe }}
83− {% include "partials/pagination.html" %}
84+ {{ pagination::pagination(page=page) }}
8485 </article>
8586{% endblock content %}
templates/partials/footer.html+1
@@ -24,6 +24,7 @@
2424 </nav>
2525 <nav class="c10-13-md c9-11-lg half-2 mt5">
2626 <h3 class="mt0 mb3 pt0 pb0">Community</h3>
27+ <li class="mt2 f6"><a href="/events">Events</a></li>
2728 <li class="mt2 f6"><a href="https://groups.google.com/a/urbit.org/forum/#!forum/dev">urbit-dev</a></li>
2829 <li class="mt2 f6"><a href="/community/hoonschool">Hoon School</a></li>
2930 <li class="mt2 f6"><a href="/community/meetups">Meetups</a></li>
templates/partials/pagination.html+64−62
@@ -1,77 +1,79 @@
1−<footer class="relative measure-wide">{% if page.earlier %}
2− <a class="bb-0" href="{{page.earlier.permalink}}">
3− <nav class="previous absolute right-1 t-right">
4− {% if page.extra.hide_previous_title %} {% else %}<p class="mb0 f5">Previous Post:</p>{% endif %}
5− <p {% if page.extra.flatten_pagination %}
6− data-flat="true"
7− class="mt5 relative mb5
8− {% else %}
9− class="mt0 mb0 fw6 f5
10− {% endif %}
11− ">{{page.earlier.title}}</p>
12− <time class="gray2 mono db f5 mb4">{{page.earlier.date | date(format="~%Y.%-m.%-d") }}</time>
13− </nav>
14− </a>
1+{% macro pagination(page, type="Post") %}
2+ <footer class="relative measure-wide">{% if page.earlier %}
3+ <a class="bb-0" href="{{page.earlier.permalink}}">
4+ <nav class="previous absolute right-1 t-right">
5+ {% if page.extra.hide_previous_title %} {% else %}<p class="mb0 f5">Previous {{ type }}:</p>{% endif %}
6+ <p {% if page.extra.flatten_pagination %}
7+ data-flat="true"
8+ class="mt5 relative mb5
9+ {% else %}
10+ class="mt0 mb0 fw6 f5
11+ {% endif %}
12+ ">{{page.earlier.title}}</p>
13+ <time class="gray2 mono db f5 mb4">{{page.earlier.date | date(format="~%Y.%-m.%-d") }}</time>
14+ </nav>
15+ </a>
1516
16− {% elif page.heavier and not page.extra.hidenext %}
17+ {% elif page.heavier and not page.extra.hidenext %}
1718
18− <a class="bb-0" href="{{page.heavier.permalink}}">
19− <nav class="previous absolute right-1 t-right">
20− {% if page.extra.hide_next_title %} {% else %}<p class="mb0 f5">Next Post:</p>{% endif %}
21− <p {% if page.extra.flatten_pagination %}
22− data-flat="true"
23− class="mt5 relative mb5
24− {% else %}
25− class="mt0 mb0 fw6 f5
26− {% endif %}
27− ">{{page.heavier.title}}</p>
28− </nav>
29− </a>
30− {% endif %}
19+ <a class="bb-0" href="{{page.heavier.permalink}}">
20+ <nav class="previous absolute right-1 t-right">
21+ {% if page.extra.hide_next_title %} {% else %}<p class="mb0 f5">Next {{ type }}:</p>{% endif %}
22+ <p {% if page.extra.flatten_pagination %}
23+ data-flat="true"
24+ class="mt5 relative mb5
25+ {% else %}
26+ class="mt0 mb0 fw6 f5
27+ {% endif %}
28+ ">{{page.heavier.title}}</p>
29+ </nav>
30+ </a>
31+ {% endif %}
3132
32− {% if page.relative_path == "understanding-urbit/urbit-os.md" %}
33− <a class="bb-0" href="/understanding-urbit/">
34− <nav class="next absolute left-1 t-left">
33+ {% if page.relative_path == "understanding-urbit/urbit-os.md" %}
34+ <a class="bb-0" href="/understanding-urbit/">
35+ <nav class="next absolute left-1 t-left">
36+ <p {% if page.extra.flatten_pagination %}
37+ data-flat="true"
38+ class="mt5 relative mb5
39+ {% else %}
40+ class="mt0 mb0 fw6 f5
41+ {% endif %}
42+ ">Introduction</p>
43+ </nav>
44+ </a>
45+ {% elif page.later %}
46+
47+ <a class="bb-0" href="{{page.later.permalink}}">
48+ <nav class="next absolute left-1">
49+ {% if page.extra.hide_next_title %} {% else %}<p class="mb0 f5">Next {{ type }}:</p>{% endif %}
3550 <p {% if page.extra.flatten_pagination %}
3651 data-flat="true"
3752 class="mt5 relative mb5
3853 {% else %}
3954 class="mt0 mb0 fw6 f5
4055 {% endif %}
41− ">Introduction</p>
56+ ">{{page.later.title}}</p>
57+ <time class="gray2 mono db f5 mb4">{{page.later.date | date(format="~%Y.%-m.%-d") }}</time>
4258 </nav>
4359 </a>
44− {% elif page.later %}
45−
46− <a class="bb-0" href="{{page.later.permalink}}">
47− <nav class="next absolute left-1">
48− {% if page.extra.hide_next_title %} {% else %}<p class="mb0 f5">Next Post:</p>{% endif %}
49− <p {% if page.extra.flatten_pagination %}
50− data-flat="true"
51− class="mt5 relative mb5
52− {% else %}
53− class="mt0 mb0 fw6 f5
54− {% endif %}
55− ">{{page.later.title}}</p>
56− <time class="gray2 mono db f5 mb4">{{page.later.date | date(format="~%Y.%-m.%-d") }}</time>
57− </nav>
58− </a>
5960
6061
61− {% elif page.lighter and not page.extra.hideprevious %}
62+ {% elif page.lighter and not page.extra.hideprevious %}
6263
63− <a class="bb-0" href="{{page.lighter.permalink}}">
64− <nav class="next absolute left-1">
65− {% if page.extra.hide_previous_title %} {% else %}<p class="mb0 f5">Previous Post:</p>{% endif %}
66− <p {% if page.extra.flatten_pagination %}
67− data-flat="true"
68− class="mt5 relative mb5
69− {% else %}
70− class="mt0 mb0 fw6 f5
71− {% endif %}
72− ">{{page.lighter.title}}</p>
73− </nav>
74− </a>
75− {% endif %}
64+ <a class="bb-0" href="{{page.lighter.permalink}}">
65+ <nav class="next absolute left-1">
66+ {% if page.extra.hide_previous_title %} {% else %}<p class="mb0 f5">Previous {{ type }}:</p>{% endif %}
67+ <p {% if page.extra.flatten_pagination %}
68+ data-flat="true"
69+ class="mt5 relative mb5
70+ {% else %}
71+ class="mt0 mb0 fw6 f5
72+ {% endif %}
73+ ">{{page.lighter.title}}</p>
74+ </nav>
75+ </a>
76+ {% endif %}
7677
77−</footer>
78+ </footer>
79+{% endmacro pagination %}
templates/understanding-urbit/post.html+2−1
@@ -1,4 +1,5 @@
11{% extends "base.html" %}
2+{% import "partials/pagination.html" as pagination %}
23
34{% block title %}
45 <meta name="og:title" content="{{ page.title }} - {{ config.title }}">
@@ -71,7 +72,7 @@
7172
7273 {{ page.content | safe }}
7374
74− {% include "partials/pagination.html" %}
75+ {{ pagination::pagination(page=page) }}
7576 </article>
7677 <section class="full c4-12-lg lh-copy mt6 mb4 measure-wide">
7778 <iframe name="nothing" style="display:none;"></iframe>