Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Teaching a Vaccum Robot to be a Webradio in Go - Tobias Kohlbau, myOpenFactory
Search
GoDays
January 30, 2019
Technology
1
62
Teaching a Vaccum Robot to be a Webradio in Go - Tobias Kohlbau, myOpenFactory
Teaching a Vaccum Robot to be a Webradio in Go - Tobias Kohlbau, myOpenFactory
GoDays
January 30, 2019
Tweet
Share
More Decks by GoDays
See All by GoDays
Standing on the shoulders of giants - Tomasz Janiszewski - D2IQ
godays
1
100
How to instrument Go code in 2020 - Björn Rabenstein - Grafana Labs
godays
1
210
12 Factor CLI Apps with Cobra - Markus Zimmermann - cosee
godays
0
300
Integration and end-to-end testing with TestContainers-Go - Nikolay Kuznetsov & Erdem Toraman - Zalando
godays
1
780
Fun with Functions - Frank Müller - Loodse
godays
0
87
Amazon SNS/SQS with Go - Paul Borlin - Compassion International
godays
1
190
Writing a language parser in 15min (or less) - Xavier Coulon - Red Hat
godays
0
82
A story about distributed computing before the cloud arrived - Rogier Lommers - bol.com
godays
0
67
Serverless Ops – Bye-bye Bash, Hello Go! - Rob Sutter - Amazon
godays
0
74
Other Decks in Technology
See All in Technology
Databricks における 『MLOps』
databricksjapan
2
170
Postman v10リリース後を振り返る / Looking back at Postman v10 after release
yokawasa
1
150
Delivering Millions of Messages within seconds @ Duolingo
pelelgrino
0
350
Hands-on Gemini, the Google DeepMind LLM
meteatamel
1
110
On Your Data を超えていく!
hirotomotaguchi
2
650
ゼロから始めるVue.jsコミュニティ貢献 / first-vuejs-community-contribution-link-and-motivation
lmi
1
110
プラットフォームってつくることより計測することが重要なんじゃないかという話 / Platform Engineering Meetup #8
taishin
1
340
4年前、あるじゃん老害エンジニアLT合戦に登壇、米国西海岸コンピュータ歴史博物館体験記の続編
toshi_atsumi
0
220
Compose Compiler Metricsを使った実践的なコードレビュー
tomorrowkey
1
220
20分で完全に理解するGrafanaダッシュボード
hamadakoji
1
210
継続的な改善 x ⾮連続的な進化
sansantech
PRO
3
140
ServiceNow Knowledge 24の歩き方 EYストラテジー・アンド・コンサルティング
manarobot
0
180
Featured
See All Featured
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
40
4.4k
Creatively Recalculating Your Daily Design Routine
revolveconf
210
11k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
322
20k
Fireside Chat
paigeccino
21
2.6k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
357
22k
The Straight Up "How To Draw Better" Workshop
denniskardys
227
130k
5 minutes of I Can Smell Your CMS
philhawksworth
199
19k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
2
3.4k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
14
1.5k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
155
14k
Web development in the modern age
philhawksworth
202
10k
Statistics for Hackers
jakevdp
789
220k
Transcript
TEACHING A VACCUM TEACHING A VACCUM ROBOT TO BE A
WEBRADIO ROBOT TO BE A WEBRADIO IN GO IN GO
ABOUT ME ABOUT ME Tobias Kohlbau So ware Developer @
Twitter: GitHub: myOpenFactory GmbH myOpenFactory GmbH @toktech @toktech tobiaskohlbau tobiaskohlbau
OBJECT OF INTEREST OBJECT OF INTEREST Xiaomi Mi Robot Vacuum
Cleaner
WHY XIAOMI VACUUM CLEANER? WHY XIAOMI VACUUM CLEANER? Cheap Works
like a charme Silent
None
HACKABLE HACKABLE Ubuntu OS powered by ARM v7 Processor Root
access without opening the device Cleaning Robot Hacking bit.ly/2VI5aTr bit.ly/2VI5aTr
MOTIVATION MOTIVATION 1. Seriously: Did my vacuum just talked to
me? 2. I want to hijack this
None
Cross compilation toolchain libasound for Vaccum Go based mp3 player
Running on my VACUUM
package main import ( "io" "log" "os" "github.com/hajimehoshi/go-mp3" "github.com/hajimehoshi/oto" )
func main() { res, err := http.Get("https://static.kohlbau.de/audio.mp3") if err != nil { log.Fatal(err) } decoder, err := mp3.NewDecoder(res.Body) if err != nil { log.Fatal(err) } defer decoder.Close() player, err := oto.NewPlayer(decoder.SampleRate(), 2, 2, 8192) if err != nil { log.Fatal(err) } defer player.Close() if _, err := io.Copy(player, decoder); err != nil { log.Fatal(err) } }
SECRET INGREDIENTS SECRET INGREDIENTS Webserver REST API Magic (some people
call it UI)
DEMO DEMO https://github.com/tobiaskohlbau/dustrobo https://github.com/tobiaskohlbau/dustrobo
QUESTIONS? QUESTIONS? @toktech @toktech