summaryrefslogtreecommitdiff
path: root/index.html
diff options
context:
space:
mode:
authorYuval Adam <_@yuv.al>2018-09-01 19:44:23 +0300
committerYuval Adam <_@yuv.al>2018-09-01 19:44:23 +0300
commitae7f6a1f262b871edd9534e3f0fa56584eb231fe (patch)
treedfc14dffd780fce959663424d986f3573bcda01b /index.html
parentace0da81b12d640affa95c68b94a86233b6662a0 (diff)
Rename index.html
Diffstat (limited to 'index.html')
-rw-r--r--index.html142
1 files changed, 142 insertions, 0 deletions
diff --git a/index.html b/index.html
new file mode 100644
index 0000000..8350712
--- /dev/null
+++ b/index.html
@@ -0,0 +1,142 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>n00bing through Rust</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <link rel="stylesheet" type="text/css" href="styles.css">
+ </head>
+ <body>
+ <textarea id="source">
+class: middle, center
+
+# n00bing through Rust
+
+## Yuval Adam
+
+---
+class: middle, left
+
+# Yuval Adam
+
+- Full stack developer
+- Freelance consultant
+- 10+ years Pythonista
+- [https://yuv.al](https://yuv.al)
+- [@yuvadm](https://twitter.com/yuvadm)
+
+---
+class: middle, left
+
+## Baby steps
+
+- [https://doc.rust-lang.org/book/second-edition/](https://doc.rust-lang.org/book/second-edition/)
+ - Book is a great reference for specific concepts
+ - That's it.
+- [https://exercism.io/tracks/rust](https://exercism.io/tracks/rust)
+ - Exercism is a good *exercise*
+- But I need a real-world project...
+
+---
+class: middle, left
+
+# Slinging media files over UPnP
+
+- Reverse engineering a cheap HDMI/UPnP dongle
+- [https://github.com/yuvadm/rockcast](https://github.com/yuvadm/rockcast)
+
+
+---
+class: middle, left
+
+# UPnP Casting
+
+- UPnP casting
+ - Send a UPnP discovery packet over **UDP** broadcast
+ - Dongle on LAN responds with some fugly **XML**
+ - Serve the media file over **HTTP**
+ - Send an XML request to the dongle pointing to the file
+ - Send play/pause actions as neccesary
+- You can implement this with several dozen lines of Python
+
+---
+class: middle, left
+
+# UPnP Casting
+
+## Dependencies
+
+- `clap` for CLI
+- `hyper` for HTTP calls
+- `tokio-fs` for serving the static file
+- `tokio-io` for handling UDP traffic
+- `tokio` for wrapping it all in one runtime
+- `futures` because... you need it
+
+It's on [https://github.com/yuvadm/slingr](https://github.com/yuvadm/slingr)
+
+---
+class: middle, left
+background-image: url(https://cdn-images-1.medium.com/max/2000/1*TLk1BwXIZA5kaMhEbTXY0g.jpeg)
+background-size: cover
+
+# .white[Rust is **not** a high-level language]
+
+---
+class: middle, center
+
+![](https://i.imgur.com/8acN5PG.png)
+
+---
+class: middle, center
+
+background-image: url(https://hackerwarehouse.com/wp-content/uploads/2013/03/rtlsdr-dvbt-820t2-454A9410a.jpg)
+background-size: cover
+
+---
+class: middle, left
+
+# RTL-SDR
+
+- A very cool piece of hardware used as *poor man's Software Defined Radio*
+ - [SDR Intro talk at PyCon 2018](https://www.youtube.com/watch?v=xJOFaOM2wUc) (not really a Python talk)
+- Reference library implemented in C + heavy usage of `libusb`
+- Let's do an exercise rewrite!
+
+---
+class: middle, left
+
+# `impl RtlSdr`
+
+- C **is** the original systems programming language
+- Writing low-level code gives you a much better grasp of the language vs. C
+
+Work in progress at [https://github.com/yuvadm/rustl-sdr/](https://github.com/yuvadm/rustl-sdr/)
+
+---
+class: top, center
+background-image: url(https://i2.wp.com/i40club.com/wp-content/uploads/2017/11/Enlightenment-5-Simple-Steps.jpg)
+background-size: cover
+
+# Learn **idiomatic** Rust as fast as possible
+
+---
+class: middle, left
+
+# Title 8
+
+---
+class: middle, left
+
+# Title 9
+
+
+
+ </textarea>
+ <script src="https://remarkjs.com/downloads/remark-latest.min.js" type="text/javascript">
+ </script>
+ <script type="text/javascript">
+ var slideshow = remark.create();
+ </script>
+ </body>
+</html>
+