diff options
| author | Yuval Adam <_@yuv.al> | 2018-09-01 19:44:23 +0300 |
|---|---|---|
| committer | Yuval Adam <_@yuv.al> | 2018-09-01 19:44:23 +0300 |
| commit | ae7f6a1f262b871edd9534e3f0fa56584eb231fe (patch) | |
| tree | dfc14dffd780fce959663424d986f3573bcda01b /index.html | |
| parent | ace0da81b12d640affa95c68b94a86233b6662a0 (diff) | |
Rename index.html
Diffstat (limited to 'index.html')
| -rw-r--r-- | index.html | 142 |
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 + + + +--- +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> + |
