If visual explanations help you then I can highly recommend Sebastian Lague's video series on chess engines where he iteratively builds one himself and finally ends up organizing a tournament.
Do I understand correctly that this has all the building blocks which make up various lossless compression schemes (dictionaries, run length encoding, delta encoding, etc) and kit bashes them together for your specific dataset?
I was under the impression that modern file formats and compression schemes already kind of do that as part of the normal compression process, so I was a little surprised by how much they beat some of the competition in their benchmarks.
Alternatively maybe something like the Roetz-End which can change colors without swapping filaments by rotating and/or stopping the flow of one of its inputs.
QR codes come with (differing levels of) error correction. You could decode it and take the amount of corrected errors as a score.
I don't know what unit/chunk of data the error correction works on but you could alternatively dive a bit into information theory and calculate how close any of the chunks are to an uncorrectable error and use that as a score.
Since the first uncorrectable error will cause the scan to fail this would match your problem definition fairly well.
One benefit of this approach would be that it's a single scan and done vs searching n permutations of the same code.Or maybe you'd want to scan it a couple of times to rule out any additional errors introduced by the camera or environment.
Got it working thanks to your troubleshooting tips now. Also found a very neat way to handle secrets from another comment.
I tend to run a DB instance per service as that makes backup restoration much easier for me. An idle postgres sits at around 50MB which is a cost I'm willing to pay.
Managed to get it working by passing in env vars from a secret now.
ArgoCD has a really handy web UI that allows you to quickly see what kind of resources get deployed.Especially for learning k8s I found that much easier to visualize than raw kubectl outputs.
Passing in the secrets once via the global: section is very neat. Got it working now with a few of the other tips and stole your trick for my secret handling. Thank you :)
I hope the author will roll this back or someone else makes a fork. I don't want to immediately switch technology to XMPP/Matrix/... and have to do it all over again.
I ran into the same issue not so long ago and at least for no_std I had to resort to using the async_trait crate. (The project is no_std but has alloc)
I can't recall the exact error so it might have been due to mixing async and non-async methods in the same trait. I would have to look at it again...
If visual explanations help you then I can highly recommend Sebastian Lague's video series on chess engines where he iteratively builds one himself and finally ends up organizing a tournament.
His other content is top notch as well.