Top all-time · #144
null program
Personal blog · nullprogram.comprogrammingsystems
null program is a personal blog at nullprogram.com about programming and systems. Since 2007, 297 different Hacker News readers have linked it 654 times, most often “Prospecting for Hash Functions”. It is still writing: the last post was on 2026-10-31, and you can follow it by feed.
Sometimes recommended · 14 of 40 sampled comments recommend it?
Why HN links it
HN readers link Chris Wellons's programming blog for C, Unix and low-level topics such as ELF files, SSH tarpits, Makefiles and hash tables. Commenters value it as fascinating and often challenging.
- Recommended for · 14 comments
- Called fascinating, "interesting explorations in code", "very good" tutorials, and "makes C look fun".
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.
Most-linked posts?
- Prospecting for Hash Functions14 people · 18 mentions · first linked 2018-08-01
- Endlessh: An SSH Tarpit11 people · 12 mentions · first linked 2019-03-22
- /9 people · 9 mentions · first linked 2019-08-27
- Render Multimedia in Pure C7 people · 8 mentions · first linked 2020-07-01
- A Tutorial on Portable Makefiles (2017)7 people · 7 mentions · first linked 2019-02-01
- My personal C coding style as of late 20236 people · 7 mentions · first linked 2023-10-09
- My review of the C standard library in practice6 people · 6 mentions · first linked 2023-02-11
- Atom vs. RSS5 people · 6 mentions · first linked 2019-04-13
- Freestyle Linked Lists Tricks5 people · 6 mentions · first linked 2026-01-01
- Emacs: Gap Buffers Are Not Optimized for Multiple Cursors (2017)5 people · 6 mentions · first linked 2021-12-15
What Hacker News says?
Very much agreed. Chris Wellons has a good description of why Atom supersedes RSS: http://nullprogram.com/blog/2013/09/23/ Adding Atom support to anything is trivial even without using a library, and there is a good schema for validating feeds: http://cweiske.de/tagebuch/atom-validation.htm
Comment linking /blog/2013/09/23/
on “It's time to head back to RSS?”Submitted Endlessh: An SSH Tarpit as a story · 579 points
HN discussionThis article on Endlessh also shows how to implement a resource-light http tarpit: https://nullprogram.com/blog/2019/03/22/
Comment linking /blog/2019/03/22/
on “I use zip bombs to protect my server”Submitted Why Aren't There C Conferences? as a story · 466 points
HN discussionActually, it happened _long_ before that - 2018 was when I became aware of this technique, but I'm sure there's previous art: https://nullprogram.com/blog/2018/07/31/ (Prospecting for Hash Functions for those who already know). That said, this is really brute forcing, not what the OP is asking for, which is providing a novel proof as the response to a prompt (this is instead providing the novel proof as one of thous…
Comment linking /blog/2018/07/31/
on “Promising results from DeepSeek R1 for code”Submitted Go's Tooling Is an Undervalued Technology as a story · 459 points
HN discussionMy favorite one relevant to HN is probably http://www.nullprogram.com A programming blog for the most part, but I always find whatever they're writing about to be fascinating
Comment linking /
on “Ask HN: Favorite Blogs by Individuals?”Submitted You might not need machine learning as a story · 437 points
HN discussion- Mark Brooker :: https://brooker.co.za/blog long time lead engineer @ AWS blogging technical info on distributed systems - Chris Wellons :: https://nullprogram.com/ lots of interesting explorations in code
Comment linking /
on “Ask HN: Favorite Blogs by Individuals?”Submitted Minimalist C Libraries as a story · 364 points
HN discussionhttps://nullprogram.com/
Comment linking /
on “If I could bring one thing back to the internet it would be blogs (2020)”Submitted Go Slices Are Fat Pointers as a story · 352 points
HN discussionOn a different note, I love this other tool he wrote: Enchive https://nullprogram.com/blog/2017/03/12/
Comment linking /blog/2017/03/12/
on “Endlessh: An SSH Tarpit”Submitted The Day I Fell in Love with Fuzzing as a story · 350 points
HN discussionThe APIs are broadly equivalent, see https://nullprogram.com/blog/2016/09/03/ What unfork does is more complicated than a mere read, though. I'm still not entirely clear on its use case, but it does all sorts of tampering that the code comments describe as "cursed." It also seems to be specifically targeting applications which have anti-debug measures.
Comment linking /blog/2016/09/03/
on “Unfork()”Submitted State machines are wonderful tools as a story · 338 points
HN discussionChris Wellons' "A Magnetized Needle and a Steady Hand," a piece on building an ELF executable from scratch: https://nullprogram.com/blog/2016/11/17/
Comment linking /blog/2016/11/17/
on “How is a binary executable organized? Let's explore it (2014)”Submitted Infectious Executable Stacks as a story · 328 points
HN discussionNot from this release, but this is the most recent thing I've been able to find about concurrency: > This is also only the first step in bringing threading to Emacs Lisp. Right now there’s effectively a global interpreter lock (GIL), and threads only run one at a time cooperatively. Like with generators, the Python influence is obvious. In theory, sometime in the future this interpreter lock will be removed, making…
Comment linking /blog/2018/05/31/
on “Emacs 26.2 Released”Submitted A Tutorial on Portable Makefiles as a story · 324 points
HN discussionThanks! I'll look into this in combination with https://nullprogram.com/blog/2013/02/06 the next time I try out Emacs.
Comment linking /blog/2013/02/06
on “Emfy: Emacs for You – Quickly set up vanilla Emacs for editing”Submitted A Branchless UTF-8 Decoder as a story · 303 points
HN discussionI am in the same boat as you are...bare with me by no means I am an expert. In fact, I read couple of chapters in Modern C yesterday :). Here are some of the things I am doing to improve my C skills to match with some of the admired/professional developers. Decide which platform to use ~~~~~~~~~~~~~~~~~~ Unfortunately, to become proficient in it we need to write code and focus on a platform. I have been fighting bet…
Comment linking /tags/c/
on “Ask HN: How do I learn C properly?”Submitted Switching to the Mutt Email Client as a story · 263 points
HN discussionI've seen endlessh[0] referenced in the past. Here's an article that talks about this and other SSH tarpits[1]. [0]: https://github.com/skeeto/endlessh [1]: https://nullprogram.com/blog/2019/03/22/
Comment linking /blog/2019/03/22/
on “Moving your SSH port isn’t security by obscurity”Submitted Debugging Emacs, or How I Learned to Stop Worrying and Love DTrace (2018) as a story · 258 points
HN discussionI imagine if you set up a host with hundreds of ssh tarpits and just one slow SSH port, bots trying to crawl your site to figure out the SSH port would be minimal. https://nullprogram.com/blog/2019/03/22/
Comment linking /blog/2019/03/22/
on “Moving your SSH port isn’t security by obscurity”Submitted When Parallel: Pull, Don't Push as a story · 245 points
HN discussionAn SSH Tarpit is a good way: https://nullprogram.com/blog/2019/03/22/
Comment linking /blog/2019/03/22/
on “Moving your SSH port isn’t security by obscurity”Submitted When FFI Function Calls Beat Native C as a story · 242 points
HN discussion