HN Hall of Fame Weekly email

Making Wrong Code Look Wrong (2005)

www.joelonsoftware.com Essays & writing Essays & articles Software engineering Candidate
Screenshot of www.joelonsoftware.com captured 2026-07-20
Page preview · captured 2026-07-20

Resurfaced independently across 6 calendar years, with breakout response in 2 of them.

submissions
7
submitters
7
observed span
2016–2024
peak thread · 99 comments
112 pts
latest 20+ return · 2022-08-31
87 pts

Submission timeline

2007–2026

One slot for every year since HN launched. Height is that year's peak points; orange marks a 100+ point or 50+ comment breakout. Select a bar to open its strongest thread.

First comments on top threads

HN comment order

Most modern typed languages support encoding this information in the type of the variable, so that the compiler catches it, instead of in the variable name. Alexis King wrote a blog post about it that reached the front page a few days ago. https://lexi-lambda.github.io/blog/2019/11/05/parse-don-t-va...

If you want even better escaping safety: use different types for safe vs unsafe strings. You should not ever be crossing the streams. So make it a compile-time failure. And anywhere you truly do know better, you can just use a transformation func like `safe = iKnowWhatImDoingCompilerSTFU(unsafe)` And keep in mind that "escaping" is not a binary. Something that works in an HTML node's body may not work in an attribute or a request header or a URL. This is…

Groxx·87-point thread·

The modern solution to this problem is to use different types for semantically distinct categories, even if the in-memory representation is effectively identical. Noticing that you’re mixing HTML-safe and HTML-unsafe strings is exactly the sort of thing the compiler should be able to help you with.

kd5bjo·2-point thread·

The first top-level comment from each of the four biggest threads, in HN’s own order. Excerpts are shortened; open a comment for full context.

Breakout years
2

100+ points or 50+ comments

Total points
210

reference only — not used in Hall rules or ranking

Total comments
147

reference only — not used in Hall rules or ranking

Every submission

DateTitle as submittedByPointsComments
2016-12-31Making Wrong Code Look Wrong (2005)frostmatthew20
2017-04-20Making Wrong Code Look Wrong (2005)oskarth40
2019-08-01Making Wrong Code Look Wrong (2005)NieDzejkob22
2019-11-08Making Wrong Code Look Wrong (2005)First breakout · Best threadaleyan11246
2021-06-28Making Wrong Code Look Wrong (2005)davikrr20
2022-08-31Making Wrong Code Look Wrong (2005)Latest 20+ point returningve8799
2024-03-06Making Wrong Code Look Wrong (2005)Tomte10