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 ...
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
GoDays
January 30, 2019
Technology
1
76
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
130
How to instrument Go code in 2020 - Björn Rabenstein - Grafana Labs
godays
1
260
12 Factor CLI Apps with Cobra - Markus Zimmermann - cosee
godays
0
420
Integration and end-to-end testing with TestContainers-Go - Nikolay Kuznetsov & Erdem Toraman - Zalando
godays
1
1.1k
Fun with Functions - Frank Müller - Loodse
godays
0
120
Amazon SNS/SQS with Go - Paul Borlin - Compassion International
godays
1
320
Writing a language parser in 15min (or less) - Xavier Coulon - Red Hat
godays
0
120
A story about distributed computing before the cloud arrived - Rogier Lommers - bol.com
godays
0
120
Serverless Ops – Bye-bye Bash, Hello Go! - Rob Sutter - Amazon
godays
0
97
Other Decks in Technology
See All in Technology
What happened to RubyGems and what can we learn?
mikemcquaid
0
220
2人で作ったAIダッシュボードが、開発組織の次の一手を照らした話― Cursor × SpecKit × 可視化の実践 ― Qiita AI Summit
noalisaai
1
370
Amazon S3 Vectorsを使って資格勉強用AIエージェントを構築してみた
usanchuu
3
420
AIと新時代を切り拓く。これからのSREとメルカリIBISの挑戦
0gm
0
660
【5分でわかる】セーフィー エンジニア向け会社紹介
safie_recruit
0
41k
ClickHouseはどのように大規模データを活用したAIエージェントを全社展開しているのか
mikimatsumoto
0
170
GSIが複数キー対応したことで、俺達はいったい何が嬉しいのか?
smt7174
3
130
Embedded SREの終わりを設計する 「なんとなく」から計画的な自立支援へ
sansantech
PRO
2
1.9k
M&A 後の統合をどう進めるか ─ ナレッジワーク × Poetics が実践した組織とシステムの融合
kworkdev
PRO
1
360
仕様書駆動AI開発の実践: Issue→Skill→PRテンプレで 再現性を作る
knishioka
2
540
All About Sansan – for New Global Engineers
sansan33
PRO
1
1.3k
IaaS/SaaS管理における SREの実践 - SRE Kaigi 2026
bbqallstars
4
1.6k
Featured
See All Featured
Evolving SEO for Evolving Search Engines
ryanjones
0
120
Bash Introduction
62gerente
615
210k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
100
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
110
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
150
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
1
430
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
59
42k
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
110
Code Review Best Practice
trishagee
74
20k
WENDY [Excerpt]
tessaabrams
9
36k
A Soul's Torment
seathinner
5
2.2k
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