Upgrade to Pro — share decks privately, control downloads, hide ads and more …

#radBIOS: Shouting a database across the room

#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

More Decks by Richo Healey

Other Decks in Programming


  1. #radBIOS Yelling a database across the room

  2. Richo Healey

  3. Richo Healey •Rich - OH!

  4. Richo Healey •Computer security guy •Into distributed systems •Pretty keen

    on ducks •Rich - OH!
  5. Flat ducks are best ducks Find me at LobbyCon and

    ask me more ;)
  6. #radBIOS

  7. #radBIOS

  8. None
  9. None
  10. Groundstation •Distributed Graph Database •Content Addressable •Eagerly distributed

  11. Groundstation •Originally just scratching an itch •Project Byzantium uses it

    as a distributed bulletin board
  12. Demo Time!

  13. Demo Time! (This is very probably going to fail)

  14. Let’s talk about DAGs

  15. Let’s talk about DAGs

  16. Traditional DAG Source of truth is here Root of the

    graph is here
  17. Source of truth is the set of these points

  18. 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.
  19. (I am very bad at design)

  20. None
  21. None
  22. None
  23. None
  24. Architecture •protocol driver •object graph •transport driver

  25. Protocol Driver •Presentation layer •Examples: •Git •Markdown threads •Marketplace

  26. Object Graph RootObject(s) UpdateObject(s) Gref Tips

  27. Transport Driver •TCP/UDP Hybrid Homogenousish link layer network

  28. Transport Driver •Shriek UDP Broadcast to find new friends Homogenousish

    link layer network
  29. Transport Driver •Then communicate with them Homogenousish link layer network

  30. 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.
  31. Demo Time!

  32. Practical Applications •Disaster affected regions •Never underestimate the bandwidth of

    a station wagon full of tapes •Office comms (“It’s all git”)
  33. Other applications •Message boards •Locality driven marketplaces •Painless sneakernets

  34. 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…
  35. So let’s talk about airgaps

  36. None
  37. Quietnet •Amazing project from Katee •Easy enough for a non

    radio person to understand •Not hugely fault tolerant •Easy to hack on and embed!
  38. Let's talk about encoding •need to turn some information into

    a bitstream •existing schemes like PSK31
  39. psk 31

  40. Error Correcting Codes 000000 101001 110110 011111

  41. 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
  42. Unambiguous ECC 000000 101001 110110 011111

  43. Here begins the fail talk.... •Groundstation's TCP driver is full

    duplex •"I'll just redo it with audio" •Turns out audio is hard
  44. Echo - Response •Repeat a tone until your peer repeats

    •Alternate codes to allow for repeated characters •Better schemes exist •This is easy to debug
  45. 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
  46. alltheFSKs •Quietnet has serious limitations •Some guy published a library!

  47. Still no dice! •Audio is *still* hard

  48. Demo Time!

  49. Womp Womp

  50. None
  51. Should I use this? •Groundstation? Yeah maybe •#radBIOS? Probably not

    •"fuck you I'll do it anyway"? AWESOME
  52. Instead: •github.com:kamalmostafa/ minimodem •linux has an ax25 driver in the

    tree •soundmodem module for linux
  53. Thanks! •Dominic Spill + Michael Ossmann •Katee •Mark Jessop

  54. More info: •twitter: @rich0H •groundstation: github.com/richo/groundstation •quietnet: github.com/katee/quietnet •alltheFSKs: github.com/darksidelemm/alltheFSKs

    •byzantium: project-byzantium.org
  55. •Questions? •Comments? •Duck Jokes?