Skip to content
HomeVideosBooksBlogs
AllTop postsTopics
Podcasts
HistoryListsWatch laterLiked videosFollowing

The videos, books, blogs and podcasts Hacker News keeps recommending, all in one place.

VideosBooksBlogsPodcastsAboutPrivacySettings

Data from Hacker News, HackerTube, HackerBooks, HackerBlogs and Open Library. Credits · Not affiliated with Y Combinator.

HomeVideosBooksBlogsPodcasts
Ctrl K
    J

    John Millikin

    john-millikin.com · Personal blog · on HN since 2013

    John Millikin is a software engineer who writes technical notes on JSON and YAML, Rust, Kubernetes networking, WebAssembly, and variable-length integer encodings.

    Visit blogHN submissions
    ProgrammingSystems & Performance
    What HN says

    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.

    Stats for nerds
    26HN people shared it
    35linked in comments
    2.1Kstory points
    May 2026last shared
    2019people per year2026

    Top posts on HN

    1. 1
      Why I Ripped the Same CD 300 Times
      4 people · 761 points · first shared 2018 · 246 comments on HN
    2. 2
      Gmail accepts forged YouTube emails
      1 person · 296 points · first shared 2022 · 95 comments on HN
    3. 3
      Unix Syscalls
      2 people · 287 points · first shared 2018 · 13 comments on HN
    4. 4
      First Impressions of Rust
      1 person · 274 points · first shared 2020 · 188 comments on HN
    5. 5
      Debugging Win32 Binaries in Ghidra via Wine
      1 person · 94 points · first shared 2022 · 8 comments on HN
    6. 6
      vu128: Efficient variable-length integers
      2 people · 93 points · first shared 2024 · 33 comments on HN
    7. 7
      Show HN: Anansi – a NoWeb-inspired literate programming preprocessor
      1 person · 57 points · first shared 2018 · 23 comments on HN
    8. 8
      JSON is not a YAML subset (2022)
      6 people · 53 points · first shared 2022 · 30 comments on HN
    9. 9
      Stateless Kubernetes overlay networks with IPv6
      3 people · 47 points · first shared 2021 · 11 comments on HN
    10. 10
      Error Beneath the WAVs (follow-up to “Why I Ripped the Same CD 300 Times”)
      3 people · 46 points · first shared 2018 · 3 comments on HN

    What HN people wrote when they linked it

    • userbinatorOct 2019

      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

    • garaetjjteJan 2021

      >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

    • jmillikinMay 2024

      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).

    • arkenflameMay 2026

      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

    • byuuOct 2019

      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

    • krappOct 2022

      >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

    Related

    xn--gckvb8fzbxn--gckvb8fzb.com61 people

    Thoughts on Cloudflare

    xn--gckvb8fzb
    Personal · last shared 2026
    Thomas Habetsblog.habets.se31 people

    Go is still not good

    Thomas Habets
    Personal · last shared 2026
    netblue30l3net.wordpress.com22 people

    A Memory Comparison of Light Linux Desktops

    netblue30
    Personal · last shared 2016
    jwzjwz.org880 people

    Watch a VC use my name to sell a con

    jwz
    Personal · last shared 2026
    Steve Klabnikwords.steveklabnik.com284 people

    A Sad Day for Rust

    Steve Klabnik
    Personal · last shared 2026
    matkladmatklad.github.io237 people

    Architecture.md

    matklad
    Personal · last shared 2026
    Wingologwingolog.org237 people

    FFS SSL

    Wingolog
    Personal · last shared 2026
    Chris Siebenmannutcc.utoronto.ca/~cks388 people

    Go is Google's language, not ours

    Chris Siebenmann
    Personal · last shared 2026