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
#radBIOS: Shouting a database across the room
Search
Richo Healey
July 19, 2014
Programming
0
440
#radBIOS: Shouting a database across the room
My #hopex talk about moving databases about using audio.
Code is at github.com/richo/groundstation
Richo Healey
July 19, 2014
Tweet
Share
More Decks by Richo Healey
See All by Richo Healey
rust-greatfet
richo
1
760
unrubby
richo
0
400
reverse reverse engineering
richo
0
1k
Hacking Electric Skateboards: Vehicle Research for Mortals
richo
1
280
radBIOS: Bsides LV
richo
0
1.2k
How compilers got less terrible
richo
1
110
building a hipster catapult, or how2own your skateboard
richo
0
2k
Debugging with and haxing on Voltron
richo
0
270
Other Decks in Programming
See All in Programming
WindowInsetsだってテストしたい
ryunen344
1
180
AWS CDKの推しポイント 〜CloudFormationと比較してみた〜
akihisaikeda
3
280
XSLTで作るBrainfuck処理系
makki_d
0
210
アンドパッドの Go 勉強会「 gopher 会」とその内容の紹介
andpad
0
240
Team topologies and the microservice architecture: a synergistic relationship
cer
PRO
0
830
KotlinConf 2025 現地で感じたServer-Side Kotlin
n_takehata
1
220
統一感のある Go コードを生成 AI の力で手にいれる
otakakot
0
3k
エンジニア向け採用ピッチ資料
inusan
0
120
セキュリティマネジャー廃止とクラウドネイティブ型サンドボックス活用
kazumura
1
180
生成AIコーディングとの向き合い方、AIと共創するという考え方 / How to deal with generative AI coding and the concept of co-creating with AI
seike460
PRO
1
300
Webからモバイルへ Vue.js × Capacitor 活用事例
naokihaba
0
710
iOSアプリ開発で 関数型プログラミングを実現する The Composable Architectureの紹介
yimajo
2
210
Featured
See All Featured
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
233
17k
Adopting Sorbet at Scale
ufuk
77
9.4k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
790
Build your cross-platform service in a week with App Engine
jlugia
231
18k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Making the Leap to Tech Lead
cromwellryan
134
9.3k
Unsuck your backbone
ammeep
671
58k
The Language of Interfaces
destraynor
158
25k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.5k
Statistics for Hackers
jakevdp
799
220k
How STYLIGHT went responsive
nonsquared
100
5.6k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
Transcript
#radBIOS Yelling a database across the room
Richo Healey
Richo Healey •Rich - OH!
Richo Healey •Computer security guy •Into distributed systems •Pretty keen
on ducks •Rich - OH!
Flat ducks are best ducks Find me at LobbyCon and
ask me more ;)
#radBIOS
#radBIOS
None
None
Groundstation •Distributed Graph Database •Content Addressable •Eagerly distributed
Groundstation •Originally just scratching an itch •Project Byzantium uses it
as a distributed bulletin board
Demo Time!
Demo Time! (This is very probably going to fail)
Let’s talk about DAGs
Let’s talk about DAGs
Traditional DAG Source of truth is here Root of the
graph is here
Source of truth is the set of these points
Source of truth is the set of these points This
sucks for things like code. It’s pretty great when human beings will be processing it.
(I am very bad at design)
None
None
None
None
Architecture •protocol driver •object graph •transport driver
Protocol Driver •Presentation layer •Examples: •Git •Markdown threads •Marketplace
Object Graph RootObject(s) UpdateObject(s) Gref Tips
Transport Driver •TCP/UDP Hybrid Homogenousish link layer network
Transport Driver •Shriek UDP Broadcast to find new friends Homogenousish
link layer network
Transport Driver •Then communicate with them Homogenousish link layer network
Distributing data •“Give everyone everything” •Nodes aggressively hand over all
the data they know about. •The idea is to build up a coherent knowledge graph.
Demo Time!
Practical Applications •Disaster affected regions •Never underestimate the bandwidth of
a station wagon full of tapes •Office comms (“It’s all git”)
Other applications •Message boards •Locality driven marketplaces •Painless sneakernets
Transport Drivers •All assume physical proximity •Internet routing was actually
an afterthought •Wireless was easy and practical •Needing an 802.11 stack kinda sucks though…
So let’s talk about airgaps
None
Quietnet •Amazing project from Katee •Easy enough for a non
radio person to understand •Not hugely fault tolerant •Easy to hack on and embed!
Let's talk about encoding •need to turn some information into
a bitstream •existing schemes like PSK31
psk 31
Error Correcting Codes 000000 101001 110110 011111
Unambiguous Encapsulation •Ossmann and Spill’s work from Shmoocon this year
•Defends against packet in packet •Also makes this kind of absurd FSK madness approachable •Cheap way to add fault tolerance
Unambiguous ECC 000000 101001 110110 011111
Here begins the fail talk.... •Groundstation's TCP driver is full
duplex •"I'll just redo it with audio" •Turns out audio is hard
Echo - Response •Repeat a tone until your peer repeats
•Alternate codes to allow for repeated characters •Better schemes exist •This is easy to debug
Audio isn’t binary though! •Missed bits can still be reasoned
about •Ternary state for bits: 1, 0 _ •Let hamming soak up bits we miss
alltheFSKs •Quietnet has serious limitations •Some guy published a library!
Still no dice! •Audio is *still* hard
Demo Time!
Womp Womp
None
Should I use this? •Groundstation? Yeah maybe •#radBIOS? Probably not
•"fuck you I'll do it anyway"? AWESOME
Instead: •github.com:kamalmostafa/ minimodem •linux has an ax25 driver in the
tree •soundmodem module for linux
Thanks! •Dominic Spill + Michael Ossmann •Katee •Mark Jessop
More info: •twitter: @rich0H •groundstation: github.com/richo/groundstation •quietnet: github.com/katee/quietnet •alltheFSKs: github.com/darksidelemm/alltheFSKs
•byzantium: project-byzantium.org
•Questions? •Comments? •Duck Jokes?