Top all-time · #1617
Graham King
Personal blog · darkcoding.net · on HN as graham_king_3programmingsystems
Graham King's personal blog at darkcoding.net covers programming and systems. Since 2010, 44 different Hacker News readers have linked it 49 times, most often “Facebook’s code quality problem (2015)”. It is still writing: the last post was on 2025-08-23, and you can follow it by feed.
Too few sampled comments (20) to say how often HN recommends it.?
Why HN links it
HN readers link Graham King's posts on Facebook's code quality problems and on shrinking Rust binaries to a few hundred bytes, plus notes on Go, Python memory debugging and card-number checks.
- Recommended for · 3 comments
- One commenter called the Facebook code quality post a good blog post; another said readers might enjoy the post on shrinking a Rust binary to 400 bytes.
Summarised by Claude from a sample of 20 HN comments that link here. Each comment is marked recommending, critical or neutral (citing without judging); how this works.
Solvitas perambulum
Most-linked posts?
- Facebook’s code quality problem (2015)6 people · 6 mentions · first linked 2017-02-22
- A small Rust binary indeed (2022)5 people · 6 mentions · first linked 2023-10-25
- Facebook’s code quality problem3 people · 3 mentions · first linked 2015-11-02
- epoll: The API that powers the modern internet (2022)2 people · 2 mentions · first linked 2022-10-23
- Go after four months2 people · 2 mentions · first linked 2012-03-06
- A developer goes to a DevOps conference2 people · 2 mentions · first linked 2019-09-13
What Hacker News says?
Yes, I think the promises of the "we can JIT all the overhead away"-camp were always overblown, and never materialized in practice. This is another very strong datapoint for that hypothesis[1]. However, it is important not to conflate "scripting language" and "dynamic language" and "interpreted". While there is some correlation there, it is not a necessary one. Objective-C is an example of a fast AOT-compiled pretty…
Comment linking /research/IEEE-Convenience_Over_Correctness.pdf
on “A 10x Faster TypeScript”Submitted Facebook’s code quality problem (2015) as a story · 502 points
HN discussionThis isn't exactly the first time Facebook has been called out for poor engineering practices: https://www.darkcoding.net/software/facebooks-code-quality-p... https://blog.timac.org/2017/0410-analysis-of-the-facebook-ap...
Comment linking /software/facebooks-code-quality-problem/
on “Facebook iOS SDK Remotely Crashing Spotify, TikTok, Pinterest, Winno and More”Submitted A developer goes to a DevOps conference as a story · 405 points
HN discussionTo achieve the smallest size, you have to ditch main entirely and use _start, along with passing certain linker flags not to align sections. See https://darkcoding.net/software/a-very-small-rust-binary-ind... You can easily get around 500 bytes this way
Comment linking /software/a-very-small-rust-binary-indeed/
on “Hello World”Submitted Linux: What Can You Epoll? as a story · 264 points
HN discussionFacebook noticed the same thing. http://www.darkcoding.net/software/facebooks-code-quality-pr... - "Exhibit C: Our site works when the engineers go on holiday"
Comment linking /software/facebooks-code-quality-problem
on “What I Wish I Had Known Before Scaling Uber [video]”Submitted epoll: The API that powers the modern internet (2022) as a story · 243 points
HN discussion> At these companies, algorithms and the basics are fundamentally important. Because you tend to work on tiny parts of a massive whole, there is no tolerance for cowboy-coding and not following best-practices. IMO the interviews test that you can fall in line and follow the patterns that have been in place for decades. ... have they gotten a lot better since 2015? https://www.darkcoding.net/software/facebooks-code-q…
Comment linking /software/facebooks-code-quality-problem/
on “Facebook senior software engineer interview”Submitted In-memory key-value store in C, Go and Python as a story · 186 points
HN discussion> If your slice has a million entries, it's definitely a different story. Searching through a map is much faster than you think. At 20 entries searching through a slice of strings is already slower than searching in a map. For ints this threshold is 100 entries. Feel free to test on your own machine, my benchmark code is here: https://gist.github.com/JelteF/1251f180966eb974d7732ea6c3d3b... You can run it with: go te…
Comment linking /software/go-slice-search-vs-map-lookup/
on “Half a million lines of Go”Submitted The memory remains: Permanent memory with systemd and a Rust allocator as a story · 132 points
HN discussionFacebook is the world's largest PHP shop. Does that mean that everyone should use PHP? As it turns out, moving fast and breaking things isn't all that conducive to quality engineering[1][2]. Facebook has a massive legacy code base maintained by an enormous team that is under pressure to iterate quickly while supporting what is arguably the world's largest user base. They are dealing with extremely specialized constr…
Comment linking /software/facebooks-code-quality-problem/
on “Hype Driven Development”Submitted A day in the life of a professional software engineer as a story · 122 points
HN discussionYou got muppy for that: https://pythonhosted.org/Pympler/muppy.html Also objgraph: https://www.darkcoding.net/software/finding-memory-leaks-in-... If you are lucky to use Python 3.6+, you got tracemalloc: https://docs.python.org/3/library/tracemalloc.html
Comment linking /software/finding-memory-leaks-in-python-with-objgraph/
on “Copy-on-write friendly Python garbage collection”Submitted Evaluating LLMs for my personal use case as a story · 120 points
HN discussionYou can do this with Go as well, and have been able to for a while now. http://www.darkcoding.net/software/building-shared-libraries... http://blog.ralch.com/tutorial/golang-sharing-libraries/
Comment linking /software/building-shared-libraries-in-go-part-1/
on “Rust vs C Pitfalls”Submitted A small Rust binary indeed (2022) as a story · 102 points
HN discussionGo is sort of the opposite of this. If you do something like: func sum(a, b float64) interface{} { return a+b } It will allocate memory for the float, because an interface type always contains two pointers. [1] It's pretty crazy that the second word in a Go interface has to be a pointer. But I suppose if dynamic types were used more, they would be optimized more. [1] https://www.darkcoding.net/software/go-the-price-…
Comment linking /software/go-the-price-of-interface/
on “The secret life of NaN”Submitted Facebook’s code quality problem as a story · 80 points
HN discussionYea, essentially this, they have bigger problems: http://www.darkcoding.net/software/facebooks-code-quality-pr...
Comment linking /software/facebooks-code-quality-problem/
on “Scaling Mercurial at Facebook”Submitted Facebook’s Code Quality Problem as a story · 17 points
HN discussionYou might be interested in reading https://darkcoding.net/software/a-very-small-rust-binary-ind...
Comment linking /software/a-very-small-rust-binary-indeed/
on “The Linux Kernel Prepares for Rust 1.77 Upgrade”Submitted Go after four months as a story · 7 points
HN discussionThis is a good guide on building small Rust binaries: https://github.com/johnthagen/min-sized-rust This talks about going to extreme lengths on making the smallest Rust binary possible, 400 bytes when it was written, https://darkcoding.net/software/a-very-small-rust-binary-ind... The thing is, you lose a lot of nice features when you do this, like panic unwinding, debug symbols, stdlib… for kernel and some embedded…
Comment linking /software/a-very-small-rust-binary-indeed/
on “The Linux Kernel Prepares for Rust 1.77 Upgrade”Submitted Rust: What I learnt so far as a story · 6 points
HN discussionI got a Rachel from Cardholder Services call once during an in-office meeting so I put the call on speaker for everyone to enjoy, then immediately went to Graham King: https://www.darkcoding.net/credit-card-numbers/ to get some credit-card numbers that would pass their basic Mod 10 check and go to their CC merchant service, thus costing them money. By the sixth failed card and 20 minutes later the 'agent' figured ou…
Comment linking /credit-card-numbers/
on “'Scam baiters' get a kick out of conning the con artists”Submitted Go after four months as a story · 5 points
HN discussionI've seen medical stuff and there's a good reason I won't work in that industry... What REALLY bothers me is things like credit cards. http://www.merriampark.com/anatomycc.htm There's encoded data on something that's supposed to be a UUID thing: Industry, Issuer (card company), Lender (banking institution), Account number, and Checksum This is a good way to prevent fraud? Or have they just given me the keys to gener…
Comment linking /credit-card-numbers/
on “Ask HN: What annoys you?”Submitted A Developer Goes to a DevOps Conference as a story · 4 points
HN discussion