Work in progress: 82,651 of 181,233 sites checked so far, more every week · updated 2 Nov 2026Missing a blog? Tell us

Top all-time · #2816

J

John Millikin

Personal blog · john-millikin.com · on HN as jmillikinprogrammingsystems

John Millikin's personal blog at john-millikin.com covers programming and systems. Since 2013, 26 different Hacker News readers have linked it 65 times, most often “JSON is not a YAML subset (2022)”. The last post was in 2024, but the archive is still widely read.

Visit the blog
65mentions?
26HN people?
2013–2026first – last linked?
Links on Hacker News per year · peak 15 in 2022

Software and articles by John Millikin.

The author on HN?

jmillikin · 11,783 karma · member since 2009

https://john-millikin.com/ john@john-millikin.com Currently semi-retired; formerly at Google (2011-2017) and Stripe (2017-2022)

From their public HN profile, which links to this site.

Most-linked posts?

  1. JSON is not a YAML subset (2022)
    6 people · 9 mentions · first linked 2022-05-17
  2. No Haunted Forests
    4 people · 4 mentions · first linked 2018-11-01
  3. Notes on Cross-Compiling Rust on a Mac for a Raspberry Pi
    4 people · 4 mentions · first linked 2020-12-12
  4. Stateless Kubernetes overlay networks with IPv6
    3 people · 6 mentions · first linked 2021-02-20
  5. Why I Ripped the Same CD 300 Times
    3 people · 3 mentions · first linked 2018-07-30
  6. Error Beneath the WAVs (follow-up to “Why I Ripped the Same CD 300 Times”)
    3 people · 3 mentions · first linked 2018-08-04
  7. Rust and dynamically-sized thin pointers
    2 people · 2 mentions · first linked 2024-06-02
  8. Improved Unix socket networking in QEMU 7.2
    2 people · 2 mentions · first linked 2023-04-11
  9. vu128: Efficient variable-length integers
    2 people · 2 mentions · first linked 2024-05-21

What Hacker News says?

  1. Another viewpoint: https://john-millikin.com/sre-school/no-haunted-forests

    Comment linking /sre-school/no-haunted-forests

    on “Dear Client, Here’s Why That Change Took So Long”
  2. Submitted Why I Ripped the Same CD 300 Times as a story · 761 points

    HN discussion
  3. > When they've gone on an unauthorised excursion through some code that has say, safety critical or legal, concerns > especially if said code was rattling in the building around somewhere it might get into the code base. Reading code should never require "authorization". There might be some edge cases related to logistical technicalities (e.g. there's a security clearance/IP/trade secret/plain-text password concern)…

    Comment linking /sre-school/no-haunted-forests

    on “The Best Programming Advice I Ever Got (2012)”
  4. Submitted Gmail accepts forged YouTube emails as a story · 296 points

    HN discussion
  5. This discussion from a couple of weeks ago suggests it isn't that simple: not all valid JSON is always valid YAML if your definition of superset requires that JSON would be parsed the same with a YAML parser as with a JSON parser. If you're going to use JSON for config, it's better to use an actual JSON parser. https://john-millikin.com/json-is-not-a-yaml-subset https://news.ycombinator.com/item?id=31406473

    Comment linking /json-is-not-a-yaml-subset

    on “Ask HN: If Kubernetes is the solution, why are there so many DevOps jobs?”
  6. Submitted Unix Syscalls as a story · 287 points

    HN discussion
  7. > the pod networking implementation (a whole virtual IP space!!) That part, at least, can be made simple: https://john-millikin.com/stateless-kubernetes-overlay-netwo... > DNS, loadbalancing, persistent volumes, monitoring, etc etc None of that is part of Kubernetes, and you'll need it (or not) regardless of how you choose to handle process scheduling. There's a sort of common idea that a "Kubernetes cluster" is an…

    Comment linking /stateless-kubernetes-overlay-networks-with-ipv6

    on “Ask HN: If Kubernetes is the solution, why are there so many DevOps jobs?”
  8. Submitted First Impressions of Rust as a story · 274 points

    HN discussion
  9. Kubernetes isn't IPv4-only. It makes very few assumptions about the network, and can easily be configured to use IPv6 (either directly or in an overlay). I wrote a small tutorial on exactly this: https://john-millikin.com/stateless-kubernetes-overlay-netwo...

    Comment linking /stateless-kubernetes-overlay-networks-with-ipv6

    on “Reasons Kubernetes is so complex”
  10. Submitted Debugging Win32 Binaries in Ghidra via Wine as a story · 94 points

    HN discussion
  11. Bazel can cross-compile Rust, but you need a linker that can produce target executables. Cargo has the same limitation. Apple ld doesn't support Linux as an output target, so you need to use GNU ld or LLVM lld instead. Code examples at https://john-millikin.com/notes-on-cross-compiling-rust#baze...

    Comment linking /notes-on-cross-compiling-rust

    on “Rust is actually portable”
  12. Submitted vu128: Efficient variable-length integers as a story · 93 points

    HN discussion
  13. Unicode encoding is a rich source of strange behavior. A couple that come to mind: Decoders that try to restart on unexpected byte sequences: https://john-millikin.com/%F0%9F%A4%94/case-report-surugaya-... GHC 7.2 using Unicode to represent file paths on Linux (where paths are arbitrary bytes), an approach which was further explored in GHC 7.4 by using reserved codepoints. \u vs \U escapes in languages that added Un…

    Comment linking /%F0%9F%A4%94/case-report-surugaya-mojibake

    on “The Cursed Computer Iceberg Meme”
  14. Submitted Show HN: Anansi – a NoWeb-inspired literate programming preprocessor as a story · 57 points

    HN discussion
  15. For those really curious, the standard explaining the detailed structure of data CDs is free: https://www.ecma-international.org/publications/standards/Ec... DVD-ROM is here too, for comparison: https://www.ecma-international.org/publications/standards/Ec... 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 h…

    Comment linking /%F0%9F%A4%94/error-beneath-the-wavs

    on “Compact Disc Structure”
  16. Submitted Error Beneath the WAVs (follow-up to “Why I Ripped the Same CD 300 Times”) as a story · 46 points

    HN discussion
  17. 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...

    Comment linking /%F0%9F%A4%94/why-i-ripped-the-same-cd-300-times

    on “Compact Disc Structure”
  18. Submitted JSON is not a YAML subset (2022) as a story · 39 points

    HN discussion
  19. GCP supports enough IPv6 that you can host sites on it with an external IPv6 address. The user's internal network addresses might be IPv4, but that's (hopefully?) a detail not exposed to the public internet. As evidence, my personal website https://john-millikin.com runs on a GCP e2-micro and is reachable from IPv6-only clients.

    Comment linking /

    on “Going IPv6 Only”
  20. Submitted No Haunted Forests as a story · 32 points

    HN discussion
  21. IMO it's worth distinguishing between what the OS allows and what the OS vendor supports. The macOS kernel still has a lot of FreeBSD heritage, including the ability to make direct syscalls, but Apple only guarantees compatibility for syscalls made via libSystem. This is a reflection of historical differences in opinion about whether the stable ABI for an OS kernel should be the kernel itself (ala Linux), libc (ala…

    Comment linking /unix-syscalls

    on “A general overview of what happens before main() (2019)”
  22. Submitted Stateless Kubernetes overlay networks with IPv6 as a story · 24 points

    HN discussion
  23. This reminds me of “Why I Ripped The Same CD 300 Times” – https://john-millikin.com/%F0%9F%A4%94/why-i-ripped-the-same... (HN discussion: https://news.ycombinator.com/item?id=17649374 )

    Comment linking /%F0%9F%A4%94/why-i-ripped-the-same-cd-300-times

    on “Audio CD ripping – optical drive accuracy listing”
  24. Submitted Stateless Kubernetes overlay networks with IPv6 as a story · 23 points

    HN discussion
  25. YAML is actually not a superset of JSON. https://john-millikin.com/json-is-not-a-yaml-subset https://news.ycombinator.com/item?id=30052633

    Comment linking /json-is-not-a-yaml-subset

    on “Helm local code execution via a malicious chart”
  26. Submitted Calling Python Libraries from Haskell (2010) as a story · 15 points

    HN discussion
  27. Nobody tell the JSON::XS CPAN maintainer you said that: https://metacpan.org/pod/JSON::XS#JSON-and-YAML Or John Millikin: https://john-millikin.com/json-is-not-a-yaml-subset

    Comment linking /json-is-not-a-yaml-subset

    on “A skeptic's first contact with Kubernetes”
  28. Submitted SRE School: No Haunted Forests as a story · 13 points

    HN discussion
  29. Something like? https://john-millikin.com/stateless-kubernetes-overlay-netwo...

    Comment linking /stateless-kubernetes-overlay-networks-with-ipv6

    on “A skeptic's first contact with Kubernetes”
  30. Submitted JSON is not a subset of YAML as a story · 9 points

    HN discussion

Search all of HN for john-millikin.com

Linked by the same people?