blots icon indicating copy to clipboard operation
blots copied to clipboard

Comparison with other formats

Open DonaldTsang opened this issue 7 years ago • 12 comments

Could you make a comparison between QR/Datamatrix, Paperback, Optar and this?

DonaldTsang avatar Nov 23 '18 09:11 DonaldTsang

https://github.com/cyphar/paperback and https://github.com/matheusd/pypaperbak

https://github.com/colorsafe/colorsafe

DonaldTsang avatar Nov 23 '18 09:11 DonaldTsang

Once I redesign for black and white, absolutely!

lf94 avatar Nov 23 '18 17:11 lf94

@lf94 not just black and white, but use standards like JABCode and HiQ Color QR code (Google it)

DonaldTsang avatar Nov 23 '18 17:11 DonaldTsang

@DonaldTsang yeah I saw JABCode the other day. If you scroll to the bottom of my README you'll see though that color is actually a really bad idea right now. Maybe in the future when consumer printers are better, it will be more feasible.

Essentially all these formats are based around a few things:

  • Alignment
  • Data layout
  • Error correction

My format aims to be the simplest and most dense. So it includes no error correction. Essentially you want your files you store on the paper to be "raw", as in, having a bad 0 or 1 will not break your format. This means the paper can fade and the data still retrievable.

In fact the format should be so simple you can print the decoder or pseudo-decoder on the other side so in 50 years time you can recreate it and read your data.

lf94 avatar Nov 23 '18 17:11 lf94

Well we do need to go by Voyager standards, but it is always better to do error checking. My advice

  1. Pick only one error checking level (30~50% or the highest settings in QR or iQR code)
  2. Make sure the color channels are done in a way that multiple types of data loss won't happen
  3. Don't just have linear encodings, make sure that if the paper gets smudged that you can still restore it
  4. Simplify QR code and Paperback/Optar to a point it is basically ELI5

DonaldTsang avatar Nov 23 '18 17:11 DonaldTsang

Voyager standards

Ok, nice way to put it :slightly_smiling_face:

  1. I should probably just make this toggleable/adjustable
  2. Please see my README. The before printed and the after printed are actually hilarious. Color is not good right now - I'm not just saying this for no reason.
  3. My README shows the encoding is not linear, but in "blocks". Actually I think it's pretty clever!
  4. Yes we could do this. But they are still complex to implement. Could be interesting to pursue regardless to see the real outcome.

lf94 avatar Nov 23 '18 17:11 lf94

For 2. I saw it and I understand, but that is another thing to improve, 3bits vs 2 bit For 3. The chunks are not large enough for parity, 6 pixels does not make one barcode

DonaldTsang avatar Nov 23 '18 17:11 DonaldTsang

The chunks are not large enough for parity, 6 pixels does not make one barcode

Could you give me more details on this? I'm looking to pick this up again and make the color variant work. Your suggestions are very great.

lf94 avatar Dec 09 '18 20:12 lf94

@lf94 the more pixels and the more bits you are allowed to bundle together, the easier it is for you to have flexibility in parity bit percentage.

DonaldTsang avatar Dec 10 '18 11:12 DonaldTsang

Annual postmortem: what made it such that the implementation to be harder to do than Paperback or colorsafe? I might attribute it to the fact that this repo is prototyping in Rust rather than something like Go or Python

DonaldTsang avatar Aug 27 '19 13:08 DonaldTsang

Hey once again @DonaldTsang !

I wouldn't say it is harder, it's just they seem complicated. Rust has nothing to do with it.

You are 100% right that it would be more beneficial to create a document that can teach someone concisely how to implement a decoder.

By the way, love your "favs" list. :slightly_smiling_face:

Maybe after I've tried implementing a few of the others, I can come back to mine. But for now, there is no time.

lf94 avatar Aug 27 '19 20:08 lf94

@DonaldTsang I've looked at the others you've listed, and they all are missing documentation, or are incomplete (colorsafe, paperbak, etc).

I have to say I really like where colorsafe is going, and feel like it is aiming for simplicity also. Unfortunately its documentation is terrible right now and since it's incomplete I feel the author's intentions are not complete either.

My main issue with creating my own format is learning how to properly print graphics onto paper. Just generating a bitmap is not enough...

lf94 avatar Aug 27 '19 23:08 lf94