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
78
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
140
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
130
Amazon SNS/SQS with Go - Paul Borlin - Compassion International
godays
1
330
Writing a language parser in 15min (or less) - Xavier Coulon - Red Hat
godays
0
130
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
100
Other Decks in Technology
See All in Technology
Bill One 開発エンジニア 紹介資料
sansan33
PRO
5
18k
DDD×仕様駆動で回す高品質開発のプロセス設計
littlehands
6
2.6k
来期の評価で変えようと思っていること 〜AI時代に変わること・変わらないこと〜
estie
0
110
OpenClawでPM業務を自動化
knishioka
1
300
20260323_データ分析基盤でGeminiを使う話
1210yuichi0
0
190
Zephyr(RTOS)でOpenPLCを実装してみた
iotengineer22
0
140
「お金で解決」が全てではない!大規模WebアプリのCI高速化 #phperkaigi
stefafafan
5
2.4k
【Oracle Cloud ウェビナー】データ主権はクラウドで守れるのか?NTTデータ様のOracle Alloyで実現するソブリン対応クラウドの最適解
oracle4engineer
PRO
3
110
Sansanの認証基盤を支えるアーキテクチャとその振り返り
sansantech
PRO
1
110
ハーネスエンジニアリング×AI適応開発
aictokamiya
1
460
ブラックボックス化したMLシステムのVertex AI移行 / mlops_community_62
visional_engineering_and_design
1
210
GitHub Advanced Security × Defender for Cloudで開発とSecOpsのサイロを超える: コードとクラウドをつなぐ、開発プラットフォームのセキュリティ
yuriemori
1
110
Featured
See All Featured
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
120
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.1k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.4k
How Software Deployment tools have changed in the past 20 years
geshan
0
33k
Raft: Consensus for Rubyists
vanstee
141
7.4k
Optimizing for Happiness
mojombo
378
71k
Heart Work Chapter 1 - Part 1
lfama
PRO
5
35k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.2k
GitHub's CSS Performance
jonrohan
1032
470k
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
10k
Practical Orchestrator
shlominoach
191
11k
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