R
Roedy Green
mindprod.com · Personal blog · on HN since 2008
Roedy Green's Canadian Mind Products site is a large Java and programming glossary that also hosts his satirical essay on unmaintainable code.
What HN saysHN commenters link it for the unmaintainable code essay and its naming section, which they quote with approval, and for Java glossary entries.
31HN people shared it
24linked it in comments
9stories submitted
97story points
7 months agolast shared
2008people per year2026
Most-shared posts
- 1Unmaintainable code : Java Glossary13 people · 7 points · first shared 2008 · 1 comments on HN
- 2How to Write Unmaintainable Code – Naming4 people · 85 points · first shared 2011 · 42 comments on HN
- 3Nonmil2 people · first shared 2017
- 4Scid2 people · first shared 2018
- 5Advantages of using Java final1 people · 2 points · first shared 2016 · discussion on HN
- 6Canadian Mind Products Java & Internet Glossary1 people · 2 points · first shared 2011 · discussion on HN
- 7Windows 10 Simple Tips and Glossary (2014)1 people · 1 points · first shared 2019 · discussion on HN
- 8Hashcode1 people · first shared 2016
- 9Castanet1 people · first shared 2019
- 10Packratting1 people · first shared 2022
- 11Unmaincamouflage1 people · first shared 2014
- 12Iraqwarpix1 people · first shared 2011
- 13Projects1 people · first shared 2012
- 14Livinghistogram.jpg1 people · first shared 2021
- 15Closure1 people · first shared 2008
What HN people wrote when they linked it
plushpuffin · 2019-01-03
This is the 90s all over again! Something very like this once existed for Java games. It was called Castanet. IIRC, the website ClassicGames.com (later acquired by Yahoo) used this before broadband really took off.
http://mindprod.com/jgloss/castanet.html
DAllison · 2016-10-21
> Exact lookup in the trie is O(string_length), like a hash table
It's worth noting that some standard libraries (Java's JDK for one [1]) will cache the value of String.GetHashCode(), meaning string lookup in a HashTable is constant time average (but O(n) worst-case due to collisions).
[1]: http://mindprod.com/jgloss/hashcode.html
slig · 2015-05-25
> I once worked for a game programming company. One of the programmers there would name all his functions and variables for fruit and vegetables. It was his way of ensuring job security. Guess who got saddled with untangling the salad when he left the company.
Looks like that guy followed this guide http://mindprod.com/jgloss/unmainnaming.html
silentbicycle · 2011-06-02
That's even better than my previous favorite, from
"Unmaintainable Code: Naming" (http://mindprod.com/jgloss/unmainnaming.html):
marypoppins = ( superman + starship ) / god;
econ · 2025-12-07
Wouldn't it be easier to feed the famous essay into the LLM?
https://www.mindprod.com/jgloss/unmain.html
mckn1ght · 2024-07-11
This one and https://www.mindprod.com/jgloss/unmain.html should be required reading for all new programmers. Although sadly they can’t really appreciate them until actually subjected to them.
twic · 2022-11-08
Those pretty much can't happen in garbage collected languages, so the usage of the term has been widened to include things like this. I agree it's a shame.
Roedy Green coined the name "packratting" for this modern kind of memory leak: https://www.mindprod.com/jgloss/packratting.html
orangepurple · 2022-04-19
If builders built buildings the way programmers write programs, then the first woodpecker that came along would destroy civilization.
~ Gerald Weinberg (1933-10-27 age:84) Weinberg’s Second Law
https://www.mindprod.com/jgloss/unmain.html
Arnt · 2021-06-25
This isn't a criminal trial, with failsafe rules about doubt.
There are very few generic outliers. They do exist, but at the same time, the chance that the next person you meet will be <1.20m or >2.40m tall is insignificant.
The argument is stronger for the past, because generic outliers tend to have worse health than the average and have worse chances of reaching adulthood, so if you find a part of the skeleton of a single adult, the chance that it's someone who's half/twice as tall as the rest of the population is even smaller than for today.
https://www.mindprod.com/image/math/livinghistogram.jpg shows an entire class. They could have had a generic outlier among the pupils, but most people are near the average, see?
heavyset_go · 2020-10-10
There are software licenses like the Hippocratic License[1], Mind Products' license[2] or the Harm-Less Permissive License[3].
[1] https://firstdonoharm.dev/
[2] https://www.mindprod.com/contact/nonmil.html
[3] https://4zm.org/files/2010/HPL/index.html
nathell · 2018-08-17
This is much older than 2017; the version at
http://mindprod.com/jgloss/unmain.html dates back to 2000.
detaro · 2018-04-15
Seems to be an incomplete copy of the original at http://mindprod.com/jgloss/unmain.html ?
LeonB · 2018-01-29
I remember reading someone’s proposal for 2D decision tables in code quite a while ago maybe 15 years.
I’ve just tracked it down. Here’s something about it by the same author Roedy Green (author of How to Write Unmaintainable Code)
http://mindprod.com/project/scid.html (look for the words ‘decision table’)
grncdr · 2016-07-26
From http://mindprod.com/jgloss/unmain.html:
> I would like to remind you this essay is copyrighted material. It is illegal to repost it without permission. I will usually give you that permission if you translate the essay into another language and if you provide a link back to the English-language original. I do this for three reasons.
1. That way any change I make to the essay is instantly reflected in any English-language copy anyone reads.
2. That way the formatting and images are preserved. Pirated copies usually screw up the formatting.
3. Google ad revenue from this essay is the main source of income from the website. It pays to keep me on the air.
I don't understand how the creator of this GitHub repo could miss this, it's the first thing in the original article...
blueskin_ · 2014-02-25
Reminds me of 'how to write unmaintainable code':
http://mindprod.com/jgloss/unmaincamouflage.html
ashmud · 2013-08-09
I grew up with white on blue. The non-bright intensities, that is. Very good during daytime light levels on a CRT. http://mindprod.com/utility/sa!.txt
el_presidente · 2012-02-25
From http://mindprod.com/jgloss/unmainnaming.html
a naming convention from the world of C++ is the use of "m_" in front of members. This is supposed to help you tell them apart from methods, so long as you forget that "method" also starts with the letter "m".
jellicle · 2011-02-25
Pretty doubtful. We've seen lots of photos of blown-up people from various war zones, and they do very little to spur intervention. You've seen these:
http://mindprod.com/politics/iraqwarpix.html
but no one stepped in to stop the U.S. from killing well upwards of a million Iraqis. Don't dream that future massacres will be stopped. I would tend to argue the other side: due to individuals being numbed to the grotesque, they are less likely to be shocked by images and videos coming out of future conflict zones and thus less likely to want to "do something".
slioslat · 2010-02-09
seems like a cheap rip-off of this: http://mindprod.com/jgloss/unmain.html
mojuba · 2008-06-23
This article explains why:
http://mindprod.com/jgloss/closure.html
Upd: just found an interesting discussion on the topic:
http://www.artima.com/forums/flat.jsp?forum=106&thread=173181
oniony · 2026-04-04
ralferoo · 2024-06-26
> > Source Code In Database > ?
Rather than think about specific closed environments (which may be an unavoidable consequence of SCID), I was thinking more generically about the issues. At the time, I was firmly in the Java large webapp space, so I was mostly thinking about how you could target a JVM.
In terms of the actual article, there's a bunch of links on Wikipedia [1] but I specifically was referring to an older version of this [2] article (I think, I don't remember it being as garish colours) and I think I found it via c2 [3].
None of these quite match up with what I thought I remembered which informed a lot of my thoughts back then, but I was mostly thinking about what the UI for such a system might look like because a nice friendly GUI isn't necessarily optimal for an experienced programmer who's probably happiest writing and seeing their code as a big chunks of text, and also how sometimes you want code that the linter would hate because you've deliberately formatted something to make it easier for humans to understand.
I was then thinking about how you could abstract and generalise statements and sub-expressions into small mini-functions that weren't complete functions per se, but more like templates. I spent a long time thinking how one might do code de-duplication by copying a graph of code, and then changing some of the nodes in a copy-on-write style thing, but decided there was no easy way of programatically deciding which part of the tree were being fixed…
cmcginty · 2017-07-27
You mean like this http://mindprod.com/contact/nonmil.html
manaskarekar · 2012-09-07