cuttle/README.md

40 lines
2.4 KiB
Markdown

# Cuttle, a flasher with a message
Cuttle is a desktop application for transfering data from one computer to another by displaying a
[possibly endless] stream of [QR encoded](https://en.wikipedia.org/wiki/QR_code) [Raptor
codes](https://en.wikipedia.org/wiki/Raptor_code), so that a camera-equipped different computer can
read the QR codes and turn them back into the original content.
## Tell me more!
Raptor codes are a type of [fountain code](https://en.wikipedia.org/wiki/Fountain_code); fountain
codes are a way to encode data as a stream of error-correcting pieces of that data; as long as you
can read some number of pieces, you can reconstruct the original data. They're named like that
because you can think of them as like a fountain of water that is just pouring out. Anyone can come
drink from it, and then they'll have the water. So something can just be transmitting fountain codes
and not care if anyone is receiving, and receivers don't have to worry about missing something they
needed; they're guaranteed to get everything they need as long as they listen long enough. I think
that's pretty cool!
So the idea here is to give it a file (or short string of text) that you want transferred to a
different computer (like a mobile phone running a little companion app), and it will start producing
Raptor codes for that file. Each piece of Raptor code then gets encoded as a QR code, and then
displayed for a period of time on the screen. The user then holds up the receiving computer's camera
in order to receive the QR encoded raptor codes, and, *voila*, the file has been transferred!
# Current status
The desktop transmitting application is nearly done; already it can convert text input into QR codes
(either a single static one if the data is small enough, otherwise it will stream a never ending
loop of them), and the mobile app has been started. Even without the mobile app, it's still
already useful for transmitting short text strings to the phone, since the Android camera app will
decode any detected QR codes.
The mobile app has been started, and I hope to have it decoding QR streams soon!
# about the name
[Cuttlefish](https://en.wikipedia.org/wiki/Cuttlefish) are small but very intelligent cephalopods
whose bodies are covered in a 15hz multi-color, multi-polarity, pixel-mapped display that they use
to visually communicate with other cuttlefish, as well as to dazzle predators and prey.