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 · #223

N

Ned Batchelder

Personal blog · nedbatchelder.com/blogprogrammingmath

Ned Batchelder's personal blog at nedbatchelder.com covers programming and math. Since 2007, 212 different Hacker News readers have linked it 375 times, most often “Pragmatic Unicode”. It is still writing: the last post was on 2026-10-28, and you can follow it by feed.

Visit the blog
375mentions?
12recommend?
212HN people?
2007–2026first – last linked?
Links on Hacker News per year · peak 35 in 2020

Sometimes recommended · 12 of 40 sampled comments recommend it?

Why HN links it

HN readers link Ned Batchelder's blog for explanations of Python and Unicode, such as the Unicode sandwich, names versus values, and exception layering, and for his talks.

Recommended for · 12 comments
Called good, awesome, compelling, interesting or enjoyable; the Unicode and exception-layering posts made things click.

Summarised by Claude from a sample of 40 HN comments that link here. Each comment is marked recommending, critical or neutral (citing without judging); how this works.

Ned Batchelder's personal web site, blog, writings, software, math, parenting, autism

Most-linked posts?

  1. Pragmatic Unicode
    10 people · 10 mentions · first linked 2012-03-16
  2. Stopping spambots with hashes and honeypots
    6 people · 7 mentions · first linked 2008-02-14
  3. Pragmatic Unicode (2012)
    6 people · 6 mentions · first linked 2018-11-04
  4. Python name and values (mental model)
    5 people · 8 mentions · first linked 2018-12-18
  5. Pickle’s Nine Flaws
    4 people · 5 mentions · first linked 2020-06-22
  6. Python's Eval Is Dangerous
    4 people · 5 mentions · first linked 2017-04-23
  7. Cog: Use pieces of Python code as generators in your source files
    4 people · 4 mentions · first linked 2019-04-03
  8. /text/hexwords.html
    4 people · 4 mentions · first linked 2018-06-24
  9. Print this file, your printer will jam (2008)
    4 people · 4 mentions · first linked 2008-11-25
  10. Two problems
    3 people · 3 mentions · first linked 2012-04-26

What Hacker News says?

  1. > Have you given any kind of training or lessons in programming (honest question)? Everything can break down! I have actually, so I understand what you mean, that all sorts of confusions are possible no matter what. I agree with you on that part; I just disagree that the “boxes” metaphor is something that is necessary or “needed later” (what I understood from the wording “This method spares the reader one step, but…

    Comment linking /text/names1.html

    on “Eloquent JavaScript 4th edition (2024)”
  2. Submitted Bug #915: Please help as a story · 591 points

    HN discussion
  3. In what way does it break down? Maybe if one is thinking of boxes, going by "a change to the value of a "? The book says: > When a binding points at a value, that does not mean it is tied to that value forever. The = operator can be used at any time on existing bindings to disconnect them from their current value and have them point to a new one In this case: let a = 22; The binding a points to the value 22. let b =…

    Comment linking /text/names1.html

    on “Eloquent JavaScript 4th edition (2024)”
  4. Submitted Print this file, your printer will jam (2008) as a story · 492 points

    HN discussion
  5. My point is that it's not a simplification, it's precisely how the language works: bindings between values and names (JavaScript has no separate notion of memory pointer; everything is a "pointer"). (Similarly for Python: https://nedbatchelder.com/text/names1.html ) Describing variables in this way gives readers the correct understanding, and the analogy of tentacles is no harder than that of boxes. Such things are…

    Comment linking /text/names1.html

    on “Eloquent JavaScript 4th edition (2024)”
  6. Submitted Bug #915: Solved as a story · 345 points

    HN discussion
  7. Because that's not how variables work in JavaScript/Python etc (though it may be fine for say C++ in the case of value types and copy constructors). For example: I'm typing on phone so for a quick example: let a = []; let b = a; a.push(1); and consider the value of b now (or the fact that we could write "const" above because the binding is constant, even though we mutate the value). Or see the equivalent for Python…

    Comment linking /text/names1.html

    on “Eloquent JavaScript 4th edition (2024)”
  8. Submitted Goodbye Freenode as a story · 279 points

    HN discussion
  9. > ... Batchelder's piece on the "Unicode Sandwich," ... Is this the piece you mean? https://nedbatchelder.com/text/unipain.html

    Comment linking /text/unipain.html

    on “UTF-8 is a brilliant design”
  10. Submitted Print this file, your printer will jam (2008) as a story · 248 points

    HN discussion
  11. mewmew07 · 2022-11-14Recommends
    https://nedbatchelder.com/text/unipain.html When this came out, it made all the difference in understanding things.

    Comment linking /text/unipain.html

    on “Ask HN: Do you recall any book or course that made a topic finally click?”
  12. Submitted What’s in Which Python as a story · 214 points

    HN discussion
  13. This article and its associated HN comment section continue in the long tradition of Big O Notation explainers [0] and getting into a comment kerfuffle over the finer, technical points of such notation versus its practical usage [1]. The wheel turns... [0] https://nedbatchelder.com/text/bigo.html [1] https://nedbatchelder.com/blog/201711/toxic_experts.html

    Comment linking /blog/201711/toxic_experts.html

    on “A visual introduction to big O notation”
  14. Submitted Testing is better than data structures and algorithms as a story · 188 points

    HN discussion
  15. > you dont get too far into python -- especially if you are reading (or copypastaing) other People's code -- before you see if __name__ == "__main__" First off, if you are teaching someone, you are showing that person the code, and not allowing copy-and-paste. Second, no, that comes up much less often than you'd expect. Third, it's the same as `if value == 'example':`. Underscores are not jargon. Fourth, it's trivia…

    Comment linking /text/names1.html

    on “Python’s new t-strings”
  16. Submitted Why a mock doesn’t work as a story · 173 points

    HN discussion
  17. Here's Ned's blog post describing the solution: https://nedbatchelder.com/blog/202001/bug_915_solved.html

    Comment linking /blog/202001/bug_915_solved.html

    on “Bug #915: Please help”
  18. Submitted On Python security amidst recent Rails/YAML vulnerabilities as a story · 161 points

    HN discussion
  19. OT: After the lamentation of the "Github Monoculture", why was development of coveragepy moved from bitbucket to github? https://bitbucket.org/ned/coveragepy/src/default/ original project https://nedbatchelder.com/blog/201405/github_monoculture.htm... original post https://news.ycombinator.com/item?id=7690897 HN comments

    Comment linking /blog/201405/github_monoculture.html

    on “Bug #915: Please help”
  20. Submitted GitHub monoculture as a story · 156 points

    HN discussion
  21. malhaar · 2017-01-30Recommends
    Ned Batchelder. Blog - http://nedbatchelder.com/ Stack Overflow answers - http://stackoverflow.com/users/14343/ned-batchelder Coverage.py - https://github.com/nedbat/coveragepy Twitter - https://twitter.com/nedbat Ned created coverage.py and is one of the most famous Python devs. He explains Python concepts in a very lucid, easy-to-understand way. Going through his stack overflow answers, his tallks in PyCon are wor…

    Comment linking /

    on “Ask HN: Which developers do you closely follow?”
  22. Submitted How to Be Helpful Online as a story · 154 points

    HN discussion
  23. https://nedbatchelder.com/text/bigo/bigo.html is also a good intro read.

    Comment linking /text/bigo/bigo.html

    on “Big O Notation – Explained as easily as possible”
  24. Submitted I fixed a bug in Python as a story · 131 points

    HN discussion
  25. https://twitpic.com/4a52sh A survey on this feature was done at Pycon 2011. Maybe things have changed since then, but at the time, most people didn't understand what for/else did. I think it's a bad construct because, as many have mentioned, a lot of people make the commonsense interpretation that the else block will only execute if the for block did not. Note, the link above come via Jeremy Avnet in the comments of…

    Comment linking /blog/201110/forelse.html

    on “Python’s For - Else”
  26. Submitted Cog: Use pieces of Python code as generators in your source files as a story · 121 points

    HN discussion
  27. henrik_w · 2015-12-17Recommends
    This is a pretty good explanation of unicode in Python: http://nedbatchelder.com/text/unipain.html

    Comment linking /text/unipain.html

    on “Why Python 3 Exists”
  28. Submitted Python iteration as a story · 113 points

    HN discussion
  29. I don't remember when in my Python career I learned about names vs. values, but it finally clicked for me that I'm predominately just binding a value to a name with the = assignment. Now everything I read has become very easy to reason about and understand. Ned Batchelder is a good resource for learning many things about python, and this talk he gave at Pycon some years ago is no exception: https://nedbatchelder.com…

    Comment linking /text/names1.html

    on “Reasons Python Sucks”
  30. Submitted Computing primes with CSS as a story · 111 points

    HN discussion

Search all of HN for nedbatchelder.com

Linked by the same people?