Skip to content
HN On Hacker News ↗

GitHub - bashalarmistalt/decimen-optical-transfer

▲ 49 points 45 comments by ksec 3w ago HN discussion ↗

Pangram verdict · v3.3

We believe that this text is a mix of AI and human-written content.

40 %

AI likelihood · overall

Mixed
55% human-written 45% AI-generated
SEGMENTS · HUMAN 2 of 3
SEGMENTS · AI 0 of 3
WORD COUNT 452
PEAK AI % 59% · §2
Analyzed
Aug 6
backend: pangram/v3.3
Segments scanned
3 windows
avg 151 words each
Distribution
55 / 45%
human / AI fraction
Verdict
Mixed
Pangram v3.3

Article text · 452 words · 3 segments analyzed

Human AI-generated
§1 Human · 29%

Decimen Optical Transfer: fountain-coded QR file transfer Send a file between two devices using nothing but a screen and a camera. One page displays the file as an endless stream of animated QR codes; another device points its camera at it and reconstructs the file.

§2 Mixed · 59%

No network path between the devices, no app, no pairing, no permissions beyond the camera. The payload travels as light. Try it → decimen.app Open it on both devices and go — nothing to install. Works offline after the first visit, and installs as an app on both iOS and Android if you want it on a home screen. Files up to 64 MB (or a pasted text snippet), filename and media type preserved, gzip only when it helps, SHA-256 verified before anything is offered — and received video plays right in the page. Extracted from a larger experiment that reached 128 KB/s phone-to-phone. Mid-transfer: a phone pulling a file out of the air at 130 KB/s. Neither mode is encrypted: whatever is on the sending screen is readable by any camera pointed at it. The property this gives you is no network, not confidentiality — see privacy. Documentation Using it — quick start · sending · receiving · troubleshooting · install & offline · privacy How it's built — architecture · protocol · platform quirks · build & release The short version of the protocol: a screen-to-camera link has no back-channel, so the sender streams fountain-coded frames (Luby transform) — the receiver collects any ~K·1.15 distinct frames in any order and peels the file out. Dropped frames cost time, never correctness.

§3 Human · 24%

Run it yourself npm install npm run dev # https dev server with HMR npm run serve # build, then serve the production bundle npm run demo # demo mode: only the bundled payloads can be sent npm test # golden wire-format vectors and unit tests npm run build # the hosted site → dist/ npm run build:standalone # both self-contained pages → dist-standalone/ npm run build:all # everything Open https://localhost:5173/send/ on the sending device and the printed Network URL on the receiving phone (accept the self-signed certificate once). Walkthrough: quick start. Similar projects The concept here was arrived at independently. It turns out several people have had similar ideas, and their takes are all worth a look: mohankumarelec/airgapped-qr-code-transfer: browser-based QR file transfer with compression and sequential chunking. Discovered after publicly demoing this project; convergent evolution in action. divan/txqr (2018): animated QR plus fountain codes in Go, with two excellent write-ups on why fountain coding beats sequential looping. sz3/libcimbar: goes past QR entirely with a custom high-density color code purpose-built for this channel. Built by Evan Crawley (Bash Alarmist), with node-qrcode and zxing-wasm. License MIT