Live data from Hacker News

Show HN: ShadowCat – file transfer through QR Codes in a Browser

github.com

61–70 of 74 posts

Re: Show HN: ShadowCat – file transfer through QR Codes in a Browser

#62
post #45

This is cool and minimalistic! I've been noodling on https://qr-send.com which is a slightly more polished version of the "erasure fountain codes + stream of QRs"-idea, inspired by divan's Txqr posts but using Wirehair FEC for the fountain code (basically: you receive ~file size bytes via QR codes and it magically assembles them into the source file regardless of missed codes). It's an offline-first progressive web a…

That sounds amazing! The WebRTC "fallback" basically means the QR code is just a handshake when both devices are on the same network?

The handshake details are passed alongside the data so that if a direct connection is successful, the network races the optical transfer.

Re: Show HN: ShadowCat – file transfer through QR Codes in a Browser

#63

animated qr + erasure coding is a neat fit here. the interesting ux question is how clearly the receiver shows progress and recovery

There is a toggle where you can show what chunks have been received. This is also where the 'show specific chunk' function comes in... the receiver can see "oh, I'm only missing chunk 125, so just show me that" etc. etc.

Re: Show HN: ShadowCat – file transfer through QR Codes in a Browser

#64

I've wanted to use this for an air-gapped communication device. I have a device with a camera and a touch-screen that only uses capacitive charging. I type a message. Bytes are encrypted. I hit send. QR codes flash on my screen. I use my PC or my normal phone to receive the encrypted bytes, and transmit them to you. You have the same device. You have your PC or phone flash encrypted QR codes. You use your device to r…

So two parts to a reply - first is, you don't need the encryption per se, but you can add that in the case that you give it some key and then it's encrypted. I don't see the value unless you're using this to generate frames for a video, which isn't current functionality but totally doable.

Second part, Charlie Bennet said "the only entropy source is one you can trust" and the best entropy source is quantum fluctuations, so we built a fully open source phase diffusion QRNG at Quantum Village and released it. Link: https://github.com/QuantumVillage/EntropyLoop

Re: Show HN: ShadowCat – file transfer through QR Codes in a Browser

#65
post #59
post #45

This is cool and minimalistic! I've been noodling on https://qr-send.com which is a slightly more polished version of the "erasure fountain codes + stream of QRs"-idea, inspired by divan's Txqr posts but using Wirehair FEC for the fountain code (basically: you receive ~file size bytes via QR codes and it magically assembles them into the source file regardless of missed codes). It's an offline-first progressive web a…

What is the fastest you can transfer data from ~10 meters away using a modern phone front camera and screen? Surely 100 kB/s is slow?

Depends on the zoom. With this setup you can transfer about 0.1 B/s per pixel of 60 FPS video. So a 65" screen and 1080p camera at 10 meters away would max out at 2 kB/s with the normal lens (26mm equiv) or 45 kB/s with the tele lens (120mm equiv.)

I'm cooking something faster but depends on the job situation and funding whether I have time to spend on it.

Napkin math: QR codes encode 0.75 bits per module, each module needs about 3 pixels of camera resolution, and the temporal resolution is quite dodgy as well, maybe 0.25 * min(cameraHz, screenHz). So if everything is perfect, 44 kB/s at 60Hz per a 500x500 pixel patch. I've seen ~250 kB/s when a 1920x1080@60 transfer is working well. At 4k@30, you might reach 0.5 MB/s. If you throw in the 2x subsampled UV channels to transfer data as well, you might get an extra 50%.

Re: Show HN: ShadowCat – file transfer through QR Codes in a Browser

#66
post #47
post #45

This is cool and minimalistic! I've been noodling on https://qr-send.com which is a slightly more polished version of the "erasure fountain codes + stream of QRs"-idea, inspired by divan's Txqr posts but using Wirehair FEC for the fountain code (basically: you receive ~file size bytes via QR codes and it magically assembles them into the source file regardless of missed codes). It's an offline-first progressive web a…

This looks like a nice polished implementation of the idea, but when I try and use it, I get to "file complete" but then.. nothing? And I see no way to report a problem or bug.

Thanks for trying it, sounds like a bug I've been running into for a couple days where the wasm stream decoder does a bad memory access. I made some buffer lifetime fixes, next up a more complete stress test and fuzzing to see if I can pinpoint it.

Re: Show HN: ShadowCat – file transfer through QR Codes in a Browser

#67
Is there a client that needs to be used to be able to receive files this way? I tried the dedicated QR reader on my iPhone, and the Camera app, and couldn’t get it to assemble the chunks. It will show the encodings one after the other, but nothing else.

Re: Show HN: ShadowCat – file transfer through QR Codes in a Browser

#69
I love the focus on giving a second life to old hardware. We often talk about 'local-first' for privacy, but this shows how local-first is also great for hardware longevity. It’s refreshing to see a tool that doesn't require a cloud connection or a functional Bluetooth stack to be useful.

Re: Show HN: ShadowCat – file transfer through QR Codes in a Browser

#70

Single page file transfer using QR Codes and a browser. Sending device loads a file into the page, gets chunked. Receiver gets all the chunks through a camera, tosses lightly and reassembles, CRC to garnish. Designed to push data from an old phone that had broken comms after it took a swimming lesson in a coffee mug, it's been quite handy.

This is wild. I made an identical program 24 hours ago. Mine just transfers text files

Okei, I tested yours and it works. I would change one thing: You could start receiving chunks at any point. I had total chunk amount and chunk order in every chunk, so you can start receiving at any point.
Post reply on HN