💾 Archived View for jsreed5.org › log › 2024 › 202410 › 20241031-non-electrical-storage.gmi captured on 2024-12-17 at 10:34:18. Gemini links have been rewritten to link to archived content
-=-=-=-=-=-=-
---
One of NNCP's core strengths is its ability to transfer packets by several means. NNCP itself has three methods to send data: synchronously over a network using `nncp-call`, asynchronously over a file system using `nncp-xfer`, and asynchronously in a byte stream using `nncp-bundle`. These can be combined with other tools to send data via everything from the Internet to radio uplinks, USB drives, optical disks, tape storage, as payloads for other applications, and so on.
There's one paradigm of data transmission missing from the above list: non-electrical communication. I don't want to use the term "analog" here, because many non-electrical forms of communication are digital in their function, such as punch cards or QR codes. But very few tools currently exist that will convert arbitrary binary data into a non-electrical form.
It's easy to see why this is the case. The fundamental strength that computers have over other forms of data storage is that they can hold huge amounts of information easily. Today it's common to see microSD cards that can hold 512 GB of data--equivalent to approximately three hundred thousand 500-page books. This is possible because computers don't have to store the entire contents of their storage in human-readable form at all times, so physical space savings can be significant.
Arbitrary data can become unwieldy very fast. An NNCP packet containing an empty file is about 500 bytes large in the spool, and the byte stream created from it using `nncp-bundle` totals around 1.5 KB. That stream can be converted into a QR code using base64 encoding, but the resulting text is over 2000 characters long, about half the maximum size a QR code allows. And that's for a single empty file! Once a file reaches more than about 500 bytes, a base64-encoded NNCP packet becomes too large to be shared as a QR code.
However, there is another problem at play with the above procedure. QR codes may be simple to create and share, but they require a camera and processing software to read and transform into electronic data. That usually means the scanning tool is a smartphone, and a smartphone is often quite expensive and certainly not a platform for open development. This belies a larger trend: computers can convert data to non-electrical storage means using rather simple tools, but tools to convert non-electrical storage into computer data are generally much more complicated.
I believe this issue deserves more attention than it currently gets. NNCP and other privacy-oriented tools could benefit greatly from easier methods of communication that don't have to reply on electronics. If it was possible to store large amounts of data (dozens to hundreds of kilobytes) in non-electrical media and easily ingest that data into computers, it would be much easier to assert our privacy rights by sending data through truly offline means.
Having said that, it's hard to imagine what such a medium would look like. Physical objects are prone to abuse: punch cards, for example, were susceptible to damage or being read out of order. QR codes have error-correcting mechanisms at the expense of holding less data. Any optical storage medium is only as useful as the lowest-resolution sensor that can process it. And any format that is human-readable will always have a scaling problem, like the aforementioned example of three hundred thousand books.
What's the answer? I don't know. If there are any current examples of non-electrical data storage that can scale up to the size of a megabyte, I'm not aware of them. If anyone knows of any, I'd love to hear about them.
---
[Last updated: 2024-10-31]