John Millikin is a software engineer who writes technical notes on JSON and YAML, Rust, Kubernetes networking, WebAssembly, and variable-length integer encodings.
HN cites it to show JSON is not a YAML subset, and for his vu128 integer encoding, WASM in VS Code, and Kubernetes IPv6 posts.
For those really curious, the standard explaining the detailed structure of data CDs is free:
https://www.ecma-international.org/publications/standards/Ecma-130.htm
DVD-ROM is here too, for comparison:
https://www.ecma-international.org/publications/standards/Ecma-267.htm
And indeed there's really not much point in doing so. Any disc copy protection scheme trying to mess with CIRC codes, or worse, EFM codes, would have a really hard time having any drives read the resulting discs.
Some copy protections did play around with EFM, leading to "weak sectors". Amusingly enough, when I tried to search for info on it for this post, I found an article previously linked from HN, and which quoted me...
https://john-millikin.com/%F0%9F%A4%94/error-beneath-the-wavs
>audio CDs which I've found don't use checksums or other mechanisms to prevent small defects from mangling the bitstream
Redbook audio CDs does use CIRC error correction, by storing 8 bytes of parity data inside each 33 byte F3 frame. It is not enough to correct all errors though, and Yellowbook data CDs stores extra correction codes on top of it. (276 bytes for each 2352 byte sector).
(and there's also issue below F3 frame level about EFM modulation, whether merging codes are generated properly to keep DSV low enough)
See: https://byuu.net/compact-discs/structure/ https://john-millikin.com/%F0%9F%A4%94/why-i-ripped-the-same-cd-300-times https://john-millikin.com/%F0%9F%A4%94/error-beneath-the-wavs
Calling WASM from VS Code has been possible for a few years: https://john-millikin.com/extending-vscode-with-webassembly
The news-worthy part of the link seems to be WASI support -- instead of coding against a C-style API with low-level primitives (shared memory), WASI enables higher-level bindings to be synthesized at runtime from WIT IDL.
Not sure I'd want to be building extensions against a v0.2 of a web specification, though. That's a pretty fast-moving target. It would be more reasonable once WASI has stabilized the FFI layer (maybe by reducing time spent on the pseudo-posix stuff).
I researched many different varint encodings for a GraphQL-specific binary format (resulting in Argo: https://github.com/msolomon/argo ). I ended up choosing protobuf-style zig-zag varints, but I also found these interesting:
vu128: https://john-millikin.com/vu128-efficient-variable-length-integers
metric/imperial varint: https://dcreager.net/2021/03/a-better-varint/
vectorizing VByte: https://arxiv.org/abs/1503.07387
I feel we're already reaching a point where game preservation for older systems like Mega CD and PC Engine CD really need to have multiple rips that then weigh all the rips to try and correct for individual errors in each rip.
In fact I'm pretty sure groups like Redump are probably doing just that. Fun related article: https://john-millikin.com/%F0%9F%A4%94/why-i-ripped-the-same-cd-300-times
>JSON is a subset of YAML anyway.
It isn't, really. A conforming YAML parser will not treat JSON data the same way that a JSON parser will in all cases. [0,1] The only correct way to deal with JSON is using a JSON parser.
[0]https://john-millikin.com/json-is-not-a-yaml-subset
[1]https://news.ycombinator.com/item?id=31406473