diff --git a/css/theme/fossasia2020.css b/css/theme/fossasia2020.css
new file mode 100644
index 0000000..d66c873
--- /dev/null
+++ b/css/theme/fossasia2020.css
@@ -0,0 +1,514 @@
+/**
+ * Black theme for reveal.js. This is the opposite of the 'white' theme.
+ *
+ * By Hakim El Hattab, http://hakim.se
+ */
+
+@import url(../../lib/font/space-mono/space-mono.css);
+
+section.has-light-background,
+section.has-light-background h1,
+section.has-light-background h2,
+section.has-light-background h3,
+section.has-light-background h4,
+section.has-light-background h5,
+section.has-light-background h6 {
+ color: #222;
+}
+
+/*********************************************
+ * GLOBAL STYLES
+ *********************************************/
+/* rgb(250, 166, 26); */
+body {
+ background: #fff;
+ background-color: #fff;
+}
+
+.reveal .commentary {
+ bottom: 100px;
+ right: 0em;
+ padding-bottom: 1em;
+ padding-right: 1em;
+ position: absolute;
+ background-color: rgba(0, 0, 0, 0.50);
+ font-size: 12pt;
+ font-family: serif;
+ z-index: 10;
+ color: white;
+ display: none;
+}
+
+.reveal .footer {
+ position: absolute;
+ bottom: 0em;
+ right: 0em;
+ padding-bottom: 1em;
+ padding-right: 1em;
+ text-align: right;
+ font-size: 0.5em;
+ width: 100%;
+ height: 68px;
+ background-image: url("lca2020-logo-cropped.svg");
+ background-repeat: no-repeat;
+ background-color: rgb(0, 177, 197);
+ display: flex;
+ justify-content: flex-end;
+ align-items: flex-end;
+ z-index: 1;
+}
+
+.reveal .footer .url {
+ position: absolute;
+ padding-bottom: 30px;
+}
+
+.reveal .footer .theme {
+ padding-right: 80px;
+}
+
+.reveal .footer .hashtag {
+ padding-right: 80px;
+}
+
+@media only screen and (max-width:800px) {
+ .reveal .footer .url {
+ display: none;
+ }
+}
+
+@media only screen and (max-width:550px) {
+ .reveal .footer {
+ background-image: none;
+ }
+}
+
+@media only screen and (max-width:750px) {
+ .reveal .footer .twitter {
+ display: none;
+ }
+}
+
+@media only screen and (max-width:1050px) {
+ .reveal .footer .theme {
+ display: none;
+ }
+}
+
+@media only screen and (max-width:1300px) {
+ .reveal .footer .hashtag {
+ display: none;
+ }
+}
+
+.reveal {
+ font-family: "IBM Plex Mono", "Space Mono", Helvetica, sans-serif;
+ font-size: 42pt;
+ font-weight: normal;
+ color: #212529;
+}
+
+::selection {
+ color: #212529;
+ background: #bee4fd;
+ text-shadow: none;
+}
+
+::-moz-selection {
+ color: #212529;
+ background: #bee4fd;
+ text-shadow: none;
+}
+
+.reveal .slides section,
+.reveal .slides section>section {
+ line-height: 1.3;
+ font-weight: inherit;
+}
+
+/*********************************************
+ * HEADERS
+ *********************************************/
+@font-face {
+ font-family: "Brix Sans Medium Firefox";
+ src: url("HVD_Fonts_-_BrixSlab-Medium.otf") format("opentype");
+}
+
+.reveal h1,
+.reveal h2,
+.reveal h3,
+.reveal h4,
+.reveal h5,
+.reveal h6 {
+ margin: 0 0 20px 0;
+ color: #212529;
+ font-family: "Brix Sans Medium Firefox", "Brix Sans Medium", "Montserrat", Helvetica, sans-serif;
+ font-weight: 300;
+ line-height: 1.2;
+ letter-spacing: normal;
+ /* text-transform: uppercase; */
+ /* text-shadow: 1px 1px 2px black; */
+ text-shadow: none;
+ word-wrap: break-word;
+ background-color: rgb(250, 166, 26);
+ width: 100%;
+}
+
+.reveal h1 {
+ font-size: 2.5em;
+}
+
+.reveal h2 {
+ font-size: 1.6em;
+}
+
+.reveal h3 {
+ font-size: 1.3em;
+}
+
+.reveal h4 {
+ font-size: 1em;
+}
+
+.reveal h1 {
+ text-shadow: none;
+}
+
+/*********************************************
+ * OTHER
+ *********************************************/
+
+.reveal p {
+ margin: 20px 0;
+ line-height: 1.3;
+}
+
+/* Ensure certain elements are never larger than the slide itself */
+
+.reveal img,
+.reveal video,
+.reveal iframe {
+ max-width: 95%;
+ max-height: 95%;
+}
+
+.reveal strong,
+.reveal b {
+ font-weight: bold;
+}
+
+.reveal em {
+ font-style: italic;
+}
+
+.reveal ol,
+.reveal dl,
+.reveal ul {
+ display: inline-block;
+ text-align: left;
+ margin: 0 0 0 1em;
+}
+
+.reveal ol {
+ list-style-type: decimal;
+}
+
+.reveal ul {
+ list-style-type: disc;
+}
+
+.reveal ul ul {
+ list-style-type: square;
+}
+
+.reveal ul ul ul {
+ list-style-type: circle;
+}
+
+.reveal ul ul,
+.reveal ul ol,
+.reveal ol ol,
+.reveal ol ul {
+ display: block;
+ margin-left: 40px;
+}
+
+.reveal dt {
+ font-weight: bold;
+}
+
+.reveal dd {
+ margin-left: 40px;
+}
+
+.reveal blockquote {
+ display: block;
+ position: relative;
+ width: 70%;
+ margin: 20px auto;
+ padding: 5px;
+ font-style: italic;
+ background: rgba(255, 255, 255, 0.05);
+ box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2);
+}
+
+.reveal blockquote p:first-child,
+.reveal blockquote p:last-child {
+ display: inline-block;
+}
+
+.reveal q {
+ font-style: italic;
+}
+
+.reveal pre {
+ display: block;
+ position: relative;
+ width: 90%;
+ margin: 20px auto;
+ text-align: left;
+ font-size: 0.55em;
+ font-family: monospace;
+ line-height: 1.2em;
+ word-wrap: break-word;
+ box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.3);
+}
+
+.reveal code {
+ font-family: monospace;
+ text-transform: none;
+}
+
+.reveal pre code {
+ display: block;
+ padding: 5px;
+ overflow: auto;
+ max-height: 400px;
+ word-wrap: normal;
+}
+
+.reveal table {
+ margin: auto;
+ border-collapse: collapse;
+ border-spacing: 0;
+}
+
+.reveal table th {
+ font-weight: bold;
+}
+
+.reveal table th,
+.reveal table td {
+ text-align: left;
+ padding: 0.2em 0.5em 0.2em 0.5em;
+ border-bottom: 1px solid;
+}
+
+.reveal table th[align="center"],
+.reveal table td[align="center"] {
+ text-align: center;
+}
+
+.reveal table th[align="right"],
+.reveal table td[align="right"] {
+ text-align: right;
+}
+
+.reveal table tbody tr:last-child th,
+.reveal table tbody tr:last-child td {
+ border-bottom: none;
+}
+
+.reveal sup {
+ vertical-align: super;
+ font-size: smaller;
+}
+
+.reveal sub {
+ vertical-align: sub;
+ font-size: smaller;
+}
+
+.reveal small {
+ display: inline-block;
+ font-size: 0.6em;
+ line-height: 1.2em;
+ vertical-align: top;
+}
+
+.reveal small * {
+ vertical-align: top;
+}
+
+/*********************************************
+ * LINKS
+ *********************************************/
+
+.reveal a {
+ color: #190047;
+ text-decoration: none;
+ -webkit-transition: color .15s ease;
+ -moz-transition: color .15s ease;
+ transition: color .15s ease;
+}
+
+.reveal a:hover {
+ color: #4205b4;
+ text-shadow: none;
+ border: none;
+}
+
+.reveal .roll span:after {
+ color: #fff;
+ background: #068de9;
+}
+
+/*********************************************
+ * IMAGES
+ *********************************************/
+
+.reveal section img {
+ margin: 15px 0px;
+ background: rgba(255, 255, 255, 0.12);
+ border: 4px solid #fff;
+ box-shadow: 0 0 10px rgba(0, 0, 0, 0.15);
+}
+
+.reveal section img.plain {
+ border: 0;
+ box-shadow: none;
+}
+
+.reveal a img {
+ -webkit-transition: all .15s linear;
+ -moz-transition: all .15s linear;
+ transition: all .15s linear;
+}
+
+.reveal a:hover img {
+ background: rgba(255, 255, 255, 0.2);
+ border-color: #42affa;
+ box-shadow: 0 0 20px rgba(0, 0, 0, 0.55);
+}
+
+/*********************************************
+ * VIDEOS
+ *********************************************/
+
+.reveal section video {
+ margin: 15px 0px;
+ background: rgba(255, 255, 255, 0.12);
+ border: 4px solid #fff;
+ box-shadow: 0 0 10px rgba(0, 0, 0, 0.15);
+}
+
+.reveal section video.plain {
+ border: 0;
+ box-shadow: none;
+}
+
+.reveal a video {
+ -webkit-transition: all .15s linear;
+ -moz-transition: all .15s linear;
+ transition: all .15s linear;
+}
+
+/* Fragment additions */
+.reveal .slides section .fragment.fade-semi-out {
+ opacity: 1;
+ visibility: inherit;
+}
+
+.reveal .slides section .fragment.fade-semi-out.visible {
+ opacity: 0.5;
+ visibility: inherit;
+}
+
+.reveal ul.os {
+ margin-left: 0;
+ padding-left: 0;
+}
+
+.reveal ul.os-good {
+ list-style: none;
+ margin-left: 0;
+ padding-left: 0;
+}
+
+.reveal ul.os-good li::before {
+ content: "✔️ ";
+ font-family: "sans-serif";
+}
+
+.reveal ul.os-bad {
+ list-style: none;
+ margin-left: 0;
+ padding-left: 0;
+}
+
+.reveal ul.os-bad li::before {
+ content: "❌ ";
+ font-family: "sans-serif";
+}
+
+.reveal blockquote.os-quote::before {
+ content: "“";
+ left: 20%;
+ position: absolute;
+ top: -30px;
+ font-size: 50pt;
+}
+
+.reveal blockquote.os-quote::after {
+ content: "”";
+ left: 70%;
+ position: absolute;
+ bottom: -60px;
+ font-size: 50pt;
+}
+
+/*********************************************
+ * NAVIGATION CONTROLS
+ *********************************************/
+
+.reveal .controls {
+ color: #42affa;
+}
+
+/*********************************************
+ * PROGRESS BAR
+ *********************************************/
+
+.reveal .progress {
+ background: rgba(0, 0, 0, 0.2);
+ color: #42affa;
+}
+
+.reveal .progress span {
+ -webkit-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
+ -moz-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
+ transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
+}
+
+/*********************************************
+ * PRINT BACKGROUND
+ *********************************************/
+
+@media print {
+ .backgrounds {
+ background-color: #222;
+ }
+}
+
+.boldblue {
+ font-weight: bold;
+ color: blue;
+}
+
+.white50bg {
+ background: rgba(255, 255, 255, 0.5);
+}
+
+.bg50 {
+ background: rgba(0, 177, 197, 0.3);
+}
diff --git a/img/Annotation 2020-01-16 111040.png b/img/Annotation 2020-01-16 111040.png
new file mode 100644
index 0000000..f249848
Binary files /dev/null and b/img/Annotation 2020-01-16 111040.png differ
diff --git a/img/Cthulhu_sketch_by_Lovecraft.jpg b/img/Cthulhu_sketch_by_Lovecraft.jpg
new file mode 100644
index 0000000..154c2a3
Binary files /dev/null and b/img/Cthulhu_sketch_by_Lovecraft.jpg differ
diff --git a/img/Library_card.jpg b/img/Library_card.jpg
new file mode 100644
index 0000000..c6c3e4b
Binary files /dev/null and b/img/Library_card.jpg differ
diff --git a/img/Rust_programming_language_black_logo.svg b/img/Rust_programming_language_black_logo.svg
new file mode 100644
index 0000000..fd5c02e
--- /dev/null
+++ b/img/Rust_programming_language_black_logo.svg
@@ -0,0 +1,18 @@
+
+
\ No newline at end of file
diff --git a/img/Untitled.svg b/img/Untitled.svg
new file mode 100644
index 0000000..2cb18be
--- /dev/null
+++ b/img/Untitled.svg
@@ -0,0 +1,21 @@
+
+
+
diff --git a/img/broken image.afdesign b/img/broken image.afdesign
new file mode 100644
index 0000000..40db0b0
Binary files /dev/null and b/img/broken image.afdesign differ
diff --git a/img/bt-quarter2-shrunk.jpg b/img/bt-quarter2-shrunk.jpg
new file mode 100644
index 0000000..1e07de9
Binary files /dev/null and b/img/bt-quarter2-shrunk.jpg differ
diff --git a/img/bt-quarter2.jpg b/img/bt-quarter2.jpg
new file mode 100644
index 0000000..e1bd1a6
Binary files /dev/null and b/img/bt-quarter2.jpg differ
diff --git a/img/code_ownership_effects_bugs.afdesign b/img/code_ownership_effects_bugs.afdesign
new file mode 100644
index 0000000..2fa24db
Binary files /dev/null and b/img/code_ownership_effects_bugs.afdesign differ
diff --git a/img/code_ownership_effects_bugs.png b/img/code_ownership_effects_bugs.png
new file mode 100644
index 0000000..c39fedc
Binary files /dev/null and b/img/code_ownership_effects_bugs.png differ
diff --git a/img/code_ownership_effects_bugs.svg b/img/code_ownership_effects_bugs.svg
new file mode 100644
index 0000000..4ad7343
--- /dev/null
+++ b/img/code_ownership_effects_bugs.svg
@@ -0,0 +1,8 @@
+
+
+
diff --git a/img/missing-image.png b/img/missing-image.png
new file mode 100644
index 0000000..7a101dc
Binary files /dev/null and b/img/missing-image.png differ
diff --git a/img/missing-image.svg b/img/missing-image.svg
new file mode 100644
index 0000000..6876556
--- /dev/null
+++ b/img/missing-image.svg
@@ -0,0 +1,81 @@
+
+
+
diff --git a/img/os-survey-stale.png b/img/os-survey-stale.png
new file mode 100644
index 0000000..b12a293
Binary files /dev/null and b/img/os-survey-stale.png differ
diff --git a/index.html b/index.html
new file mode 100644
index 0000000..6acfb85
--- /dev/null
+++ b/index.html
@@ -0,0 +1,666 @@
+
+
+
+
+
+
+ Xous: Rust Semantics in your OS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Betrusted: Being Secure
+ That's no Blackberry, it's a chat client!
+
+ Sean Cross - https://xobs.io/ - @xobs
+
+
+
+
+ Betrusted: A Security Chip with I/O
+
+
+
+
+
+
+
+ Xous: Why another kernel?
+
+
+
+
+
+ Betrusted Goals
+
+ - <=4 MiB RAM
+ - Safe language
+ - Process Isolation
+
+
+ - Microkernel
+ - Auditable by one person
+
+
+
+
+
+ Microkernels
+
+ FlexSC: Flexible System Call Scheduling with Exception-Less System
+ Calls
+
+
+
+
+ Too Many Cooks
+
+
+
+
+ |
+
+ if there is one primary
+ contributor, the chances for a file to be buggy decreases
+ significantly
+ |
+
+
+ Source: Microsoft
+ Research |
+
+
+
+
+
+ Felix' Rule of Thumb
+
+
+
+
+ |
+
+
+ The largest amount of security-related code that one person can reasonably audit is
+ about 64 KiB of binary data
+
+ |
+
+
+
+
+
+
+ Principles of Software
+
+
+
+
+ |
+
+
+ - Safety
+ - Concurrency
+ - Speed
+ - Size
+
+ |
+
+
+
+
+
+
+ Rust OS Landscape
+
+
+
+
+
+ Rust-based OS: Tock
+
+
+
+
+ |
+
+
+
+
+ - Active Project
+ - RISC-V Port
+ - C and Rust Libs
+
+ |
+
+
+ - No MMU Support
+ - No runtime spawn()
+ - Limited messaging
+
+ |
+
+
+
+
+
+
+ Rust-based OS: Redox
+
+
+
+
+ |
+
+
+
+
+ - Active Project
+ - Full Rust stdlib
+ - Full Userspace
+
+ |
+
+
+ - x86_64 only
+ - Unix-like
+ - Desktop-focused
+
+ |
+
+
+
+
+
+
+ Rust-based OS: Tifflin
+
+
+ ? |
+
+
+
+
+ - Active Project
+ - Rust stdlib
+ - Full Userspace
+
+ |
+
+
+ - nightly only
+ - Mainly x86_64
+ - ???
+
+ |
+
+
+
+
+
+
+ Other Alternatives and Inspirations
+
+ - ChibiOS - Embedded RTOS
+ - HelenOS - Everything is a message
+ - Solaris - Doors
+ - QNX - Traditional Microkernel
+
+ Microkernels isolate and make IPC cheap
+
+
+
+
+
+ Betrusted Goals
+
+ - <=4 MB RAM
+ - Process Isolation
+ - Safe language
+ - Microkernel
+
+
+
+
+
+
+
+ Xous: System Design
+
+
+
+
+ Xous: Memory Model
+
+
+
+
+ |
+
+
+ - Rust Borrow Checker
+ - Message passing
+ - Inter-process borrowing
+ - Borrow types:
+
+ - Mutable ^ Immutable
+ - No Access | Read Only
+
+
+
+ Image CC-BY Tammy
+ |
+
+
+
+
+
+
+ Xous: Memory Model
+
+ - Mutable Borrow
+
+
+ - Immutable Borrow
+
+ - Mapping font database
+
+
+ - Move
+
+
+
+
+
+
+ Xous: Interrupts
+ fn setup_int2() -> xous::Result {
+ let gpio = xous::syscall::map_physical(
+ Some(0xe0000000), None, 4096)?;
+
+ xous::syscall::claim_interrupt(2, |_int_num, gpio| {
+ unsafe {
+ let val = gpio.read_volatile();
+ gpio.write_volatile(val + 1);
+ };
+ }, gpio)
+}
+ All in userspace
+
+
+
+
+ Xous: Missing Features
+
+
+
+
+ |
+
+
+ - fork()
+ - Filesystem
+ - Scheduler
+ - Threads
+ - Locking primitives
+ - Shared libraries
+
+ |
+
+
+
+
+
+
+ Xous: Everything in Userspace
+
+ - Small Kernel
+ - Message Passing
+ - Protected Memory
+
+
+
+ Understandable by one human
+ Made by many
+
+
+
+
+
+
+
+
+ |
+
+
+ |
+
+
+
+
+
+
+ - CI
+ - Simulation
+ - On Target
+ - UI Robot
+
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+