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

Top all-time · #1360

E

Evan Jones

Personal blog · evanjones.caprogrammingsystems

Evan Jones's personal blog at evanjones.ca covers programming and systems. Since 2009, 54 different Hacker News readers have linked it 97 times, most often “How both TCP and Ethernet checksums fail (2015)”. The last post was in 2023, but the archive is still widely read.

Visit the blog
97mentions?
54HN people?
2009–2025first – last linked?
Links on Hacker News per year · peak 16 in 2022

Most-linked posts?

  1. How both TCP and Ethernet checksums fail (2015)
    5 people · 6 mentions · first linked 2015-10-09
  2. Setenv Is Not Thread Safe and C Doesn't Want to Fix It
    5 people · 5 mentions · first linked 2023-11-20
  3. Huge Pages Are a Good Idea
    4 people · 4 mentions · first linked 2023-01-19
  4. Advice on looking for a new software engineering job
    3 people · 5 mentions · first linked 2021-03-01
  5. Why databases use ordered indexes but programming uses hash tables
    3 people · 3 mentions · first linked 2019-12-08
  6. Network Latencies in the Data Center
    2 people · 5 mentions · first linked 2021-10-12
  7. JVM statistics cause garbage collection pauses (2015)
    2 people · 4 mentions · first linked 2023-03-21
  8. Durability: Linux File APIs
    2 people · 3 mentions · first linked 2020-10-12
  9. Random Load Balancing Is Unevenly Distributed
    2 people · 2 mentions · first linked 2023-08-29
  10. Finding the Four Month Bug: A Debugging Story (2015)
    2 people · 2 mentions · first linked 2019-07-02

What Hacker News says?

  1. A few links gathered from a quick google search as a primer: http://stevehanov.ca/blog/?id=97 https://www.evanjones.ca/portable-linux-binaries.html https://insanecoding.blogspot.com/2012/07/creating-portable-... https://rpg.hamsterrepublic.com/ohrrpgce/Portable_GNU-Linux_... https://github.com/wheybags/glibc_version_header In other words: there are a lot of steps and a lot of gotchyas to doing this that you're gloss…

    Comment linking /portable-linux-binaries.html

    on “Thank You, Valve”
  2. Submitted Why databases use ordered indexes but programming uses hash tables as a story · 429 points

    HN discussion
  3. TCP checksums are notoriously weak: https://www.evanjones.ca/tcp-checksums.html With enough packets passing the dodgy RAM a noticeable number will manage to get mangled in such a way that the checksum is still correct.

    Comment linking /tcp-checksums.html

    on “AT&T Fiber in the SF Bay Area is flipping bits”
  4. Submitted Durability: NVMe Disks as a story · 159 points

    HN discussion
  5. I'm glad you've at least looked into this, but you have a number of things wrong: First of all, it is not a single algorithm, it is a family of algorithms This argument holds for SHA1, but all modern cryptographic hash functions are also families. The SHA3 family has SHA3-224, SHA3-256, SHA3-384, SHA3-512, SHAKE128, and SHAKE256 For a CRC of size N, you have to also choose a N-bit polynomial, N-bit starting value, a…

    Comment linking /crc32c.html

    on “Linus on Git and SHA-1”
  6. Submitted Preventing server overload: limit requests being processed as a story · 151 points

    HN discussion
  7. obligatory link: https://www.evanjones.ca/linear-search.html

    Comment linking /linear-search.html

    on “Go is not an easy language”
  8. Submitted gRPC Is Easy to Misconfigure as a story · 140 points

    HN discussion
  9. Perhaps related: "Setenv Is Not Thread Safe and C Doesn't Want to Fix It" (2023) -- https://www.evanjones.ca/setenv-is-not-thread-safe.html and HN comments regarding how rust was affected: https://news.ycombinator.com/item?id=38342642 Decades old footguns - aaargh!

    Comment linking /setenv-is-not-thread-safe.html

    on “Improving Steam Client Stability on Linux”
  10. Submitted Farewell to MIT as a story · 132 points

    HN discussion
  11. It's a long standing bug, setenv and unsetenv are not thread-safe https://www.evanjones.ca/setenv-is-not-thread-safe.html

    Comment linking /setenv-is-not-thread-safe.html

    on “Rust’s dependencies are starting to worry me”
  12. Submitted The Four Month Bug: JVM statistics cause garbage collection pauses as a story · 131 points

    HN discussion
  13. Galactica is useless. It can only generate answers. (Pablo Picasso, see https://www.evanjones.ca/picasso.html )

    Comment linking /picasso.html

    on “Galactica: an AI trained on humanity's scientific knowledge (by Meta)”
  14. Submitted Fork() without exec() is dangerous in large programs (2016) as a story · 128 points

    HN discussion
  15. Anyone with enough hardware can observe this sort of problem: http://www.evanjones.ca/tcp-and-ethernet-checksums-fail.html When The CRC and TCP Checksum Disagree: http://conferences.sigcomm.org/sigcomm/2000/conf/paper/sigco... Alternately, just look at "netstat -s" for any machine on the Internet talking to a bunch of others. Here's the score for the main web host of the Internet Archive Wayback Machine: 3088864840…

    Comment linking /tcp-and-ethernet-checksums-fail.html

    on “A ZFS developer’s analysis of Apple’s new APFS file system”
  16. Submitted How both TCP and Ethernet checksums fail (2015) as a story · 107 points

    HN discussion
  17. I plan to cover CPython's memory management in the future posts. In a nutshell, an object gets destroyed when its reference count hits 0. In this case, CPython calls `tp_dealloc` [1] of the object's type. The `tp_dealloc` slot releases all the resources the object owns and frees the memory. The implementation of `tp_dealloc` differs for different types. Eventually, the `free` function of the memory allocator is call…

    Comment linking /memoryallocator/

    on “How the Python object system works”
  18. Submitted Durability: Linux File APIs as a story · 97 points

    HN discussion
  19. Previously on setenv being a terrible thing: https://www.evanjones.ca/setenv-is-not-thread-safe.html (discussion: https://news.ycombinator.com/item?id=38342642 first comment is even about it causing issues in Rust)

    Comment linking /setenv-is-not-thread-safe.html

    on “C stdlib isn't threadsafe and even safe Rust didn't save us”
  20. Submitted Fork() without exec() is dangerous in large programs as a story · 84 points

    HN discussion
  21. It's time to move beyond this attitude and make things safe by default. For example, Solaris has a safer version of setenv(). "It is ridiculous that this has been a known problem for so long. It has wasted thousands of hours of people's time, either debugging the problems, or debating what to do about it. We know how to fix the problem." https://www.evanjones.ca/setenv-is-not-thread-safe.html

    Comment linking /setenv-is-not-thread-safe.html

    on “C stdlib isn't threadsafe and even safe Rust didn't save us”
  22. Submitted Go: Functional Options Are Slow as a story · 80 points

    HN discussion
  23. You need ECC /and/ pervasive checksumming. There are too many stages of processing where errors can occur. For example, disk controllers or networks. The TCP checksum is a bit of a joke at 16 bits (it will fail to detect 1 in 65000 errors), and even the Ethernet CRC can fail - you need end to end checksums. http://www.evanjones.ca/tcp-and-ethernet-checksums-fail.html

    Comment linking /tcp-and-ethernet-checksums-fail.html

    on “Should I buy ECC memory? (2015)”
  24. Submitted JVM statistics cause garbage collection pauses (2015) as a story · 79 points

    HN discussion
  25. I can see where my statement was ambiguous, I'd intended to say that the GC developers spend tons of time tuning their implementations to fit their users' workloads. I will say that "government project which serves the whole country now" doesn't really specify how many requests you're doing or what kind of pauses are acceptable. If it's a traditional website, a 300ms GC pause might be invisible. A 2s pause might eve…

    Comment linking /jvm-mmap-pause.html

    on “Rust is more than safety”
  26. Submitted Using floating-point numbers for money as a story · 77 points

    HN discussion
  27. > I really don't get what people mean when they say they're against frameworks. Your app that you're making with no framework...how are things structured? Do you just repeat yourself everywhere? So, there are frameworks and there are libraries. With a framework, you use the structure provided by the framework, and hook pieces of your code into it; with a library, you structure your code to your problem, and use libr…

    Comment linking /frameworks-necessary-for-large-scale-software.html

    on “I won't be using Angular for my next project”
  28. Submitted Networked games: Playing in the past or future as a story · 62 points

    HN discussion
  29. Its actually very useful, although very weak. The link layer check, at least in the case of Ethernet, really only protects your data "on the wire". It doesn't protect it inside the switches. It turns out there are failure modes, such as the one that caused this issue, where the packets get corrupted inside the switch (probably due to bad RAM). Details about how this can happen: http://www.evanjones.ca/tcp-and-ethern…

    Comment linking /tcp-and-ethernet-checksums-fail.html

    on “Linux kernel bug delivers corrupt TCP/IP data”
  30. Submitted How to Use UTF-8 with Python as a story · 57 points

    HN discussion

Search all of HN for evanjones.ca

Linked by the same people?