
Why is the function SHStripMneumonic misspelled? - uyoakaoma
https://blogs.msdn.microsoft.com/oldnewthing/20080519-00/?p=22273
======
hota_mazi
> so there would have to be some coordination among the teams so everybody
> fixed their spelling at the same time.

What a strange approach. Why not create a function with the correct name, put
the code in it and redirect the misspelled function to it?

Mark the bad function deprecated, warn the teams and after a few release
cycles, remove it.

~~~
marcoperaza
One of the central reasons for Windows's success is backwards compatibility.
16-bit Windows 3.1 applications still work in Windows 10. There are countless
teams at Microsoft whose sole purpose is to verify backwards compatibility
with almost every piece of software that more than a handful of people are
running.

Public API contracts are NEVER intentionally broken.

~~~
TylerE
> 16-bit Windows 3.1 applications still work in Windows 10

No they don't, unless you're somehow running Windows 10 on a 32 bit machine.

Been bitten a few times by programs bundled using ancient 16-bit
InstallShield. It _does not_ work on Windows 10.

~~~
TazeTSchnitzel
“Somehow”?

32-bit Windows still exists.

~~~
TylerE
Intel hasn't sold a 32bit chip in over 10 years.

~~~
userbinator
These are still in production:
[https://en.wikipedia.org/wiki/Intel_Quark](https://en.wikipedia.org/wiki/Intel_Quark)

They're essentially a 486 core with some Pentium instructions added.

~~~
catdog
While technically correct sth. like the Quark is probably not what he meant
but some earlier models of the Atom lineup (<= 10y, 2008 onwards) are 32bit
chips. There are chips released as late as 2011 [1] which lack 64 bit support.

[1] [http://ark.intel.com/products/55663/Intel-Atom-
Processor-Z67...](http://ark.intel.com/products/55663/Intel-Atom-
Processor-Z670-512K-Cache-1_50-GHz)

------
dTal
Okay so the ultimate cause is apparently "because Microsoft was _legally_
compelled to publicly document poorly-designed internal functions as part of
the DOJ anti-trust suit".

Go figure why Raymond Chen decided to do a blog post on this though, since
apparently that is a verboten topic which leads to a weirdly sparse article
that doesn't answer its title question, and a censored comment thread.

It's annoying, but given that it's nearly a decade old it's probably not worth
getting upset over it.

~~~
dmurray
Thanks, this is the only thing that makes sense as the real answer.

------
xg15
Raymond Chen's blog post are always interesting and enlightening to read and
we should be grateful that he takes the time and effort to write them - but
his people skills appatently could use a good bit of improvement.

So he teases a significant detail of the answer, then notes that not only
won't he explain but he will not allow anyone else to explain either - no
reason given. Then, when people unsurprisingly do discuss it, he gets mad and
deletes the comments.

That's in addition to a lot of aggressive or condescending answers I've read
to what seem quite reasonable questions.

If commenters are such a problem, wouldn't it by now be better to simply close
comments completely?

~~~
userbinator
I don't follow his blog but it does turn up in searches, which is how I
usually read his posts, and that was enough to see the same sort of attitude
you allude to. He seems to really enjoy gloating over the fact that he knows
some things about Windows but others don't.

It's a different type of aggression than e.g. Linus or Theo, whom one can
often find themselves agreeing with.

------
johan_larson
See also: creat()

[https://linux.die.net/man/3/creat](https://linux.die.net/man/3/creat)

It goes way back to the murky beginnings of Unix.

Ken Thompson was once asked what he would do differently if he were
redesigning the UNIX system. His reply: "I'd spell creat with an e."

~~~
emmelaich
That's not quite the same thing as it's not so much a misspelling as a result
of being restricted to five chars. (on some certain system the details of
which doesn't interest me)

But I do wish they had used one abbreviation for control rather than two -
_fcntl_ vs _ioctl_.

~~~
B1FF_PSUVM
Probably _fuctl_ was deemed undignified, and _icntl_ unhelpful.

~~~
Waterluvian
fnctl

Naming is hard.

------
cytzol
For anyone wanting to see the linked IOCCC program (now-broken link in the
third paragraph), here it is:
[http://ioccc.org/1987/hines/hines.c](http://ioccc.org/1987/hines/hines.c)

"This program was designed to maximize the bother function for structured
programmers. This program takes goto statements to their logical conclusion.
The layout and choice of names are classic."

------
yuhong
The order they are referring to is probably the DOJ settlement in 2002. There
used to be a page called "Settlement Program Interfaces" in MSDN. This was
also when winternl.h was invented.

~~~
throw_away
Is this what you mentioned in the comment that Raymond deleted?

~~~
yuhong
I should also mention these two posts:

[https://blogs.msdn.microsoft.com/oldnewthing/20100804-00/?p=...](https://blogs.msdn.microsoft.com/oldnewthing/20100804-00/?p=13233)

[https://blogs.msdn.microsoft.com/oldnewthing/20161104-00/?p=...](https://blogs.msdn.microsoft.com/oldnewthing/20161104-00/?p=94645)

It now says that "First-time commenters will be moderated." BTW. The feature
the 2016 blog post talked about was invented in 2011 or so as part of Win8
BTW.

------
Vanit
Not sure why they couldn't rename it, make the previous function an alias of
the new one, and deprecate it.

~~~
toast0
If it made it into a public Windows release, and is useful (well clearly it's
useful, since multiple internal teams called it), the deprecation cycle is
measured in decades. It's not worth deprecating something because it was
poorly spelled, when there are lots of other things to deprecate for good
reasons.

------
userbinator
I pronounce "mnemonic" without any "u" sound, and I've almost never heard
otherwise, so this particular misspelling is a little puzzling --- unless the
original author was thinking of "pneumonic". I wonder if it is a UK vs. US
difference.

~~~
captainmuon
I also pronounce it without an "u" sound. I'm never sure what to do with the
"mn", though. For all I know, it is impossible to pronounce two consonants in
that way, you'll have to add a (implicit) vowel.

Do people say "nemonic", or "me-nemonic" or "em-nemonic"? If I really try to
avoid an implicit vowel, I could say "hmmm-nemonic", but that sounds weird,
and there is still a vowel in there.

I once heard the suggestion to join the "impossible" consonant to the previous
word, so "the mnemonic" would be "them nemonic". It came up with "chtonic" and
"chtulu" (the chtonic gods = "theχ tonic gods" / "thek tonic gods"). I like
that idea, although it seems highly nonstandard.

~~~
yorwba
Where is the vowel between m and n in "hmmm-nemonic"? If you put your tongue
tip up before you open your mouth (or even while you do it), the airflow is
restricted throughout the whole transition.

If the consonants in the cluster are unvoiced, it is even easier to avoid an
implicit vowel by simply not voicing anything and pronouncing the individual
consonants in fast succession, just like "ch" is formed from "t" and "sh".

~~~
captainmuon
What I wrote as `h` functions as a vowel here. Is is by definition impossible
to have a consonant without a vowel. When you say "mmm", it is really "ummm"
or "emmm". Even if you just humm to make the m, you'll have an initial sound
at the beginning.

I think of it a bit like fourier analysis. Like you automatically have higher
frequency components when you have a rectangular wave form. Turning on the "m"
out of nothing looks or sounds like an "e". I think you could make a recording
of "mmmm", cut of the beginning or the end, and the transition from/to silence
would still constitute a vowel.

You can choose to have the vowel before, or after the m. Most often I've heard
"m(e)nemonic".

~~~
yorwba
> Is is by definition impossible to have a consonant without a vowel.

I'm not sure what definition of vowel you subscribe to, but I tend to mean "a
sound pronounced with an open vocal tract" [1], in which case you can have
consonants without vowels. In particular, a simple transition from silence to
voice does not constitute a vowel (nor does it sound very much like one, in my
opinion).

I also don't understand how you could choose to have the vowel before or after
the m; under your definition of vowel, it would seem like every "mmm" would
have to be "(e)mmm(e)" instead.

[1] [https://en.wikipedia.org/wiki/Vowel](https://en.wikipedia.org/wiki/Vowel)

~~~
captainmuon
Just what I learned in elementary school (1st grade in the US). Vowels are the
five letters of the english alphabet that are special, because the
pronunciations of all other letters contain a vowel. That's why the others are
called consonants (with-sounders).

I know that is highly unscientific, and probably doesn't reflect current
linguistics, but it still makes sense to me :-)

~~~
yorwba
What you learned is not completely wrong, but

1\. it only applies to English,

2\. aeiou are the five classical vowels of the Latin alphabet, but English has
more than five vowels (see the table here:
[https://en.wikipedia.org/wiki/Help:IPA_for_English](https://en.wikipedia.org/wiki/Help:IPA_for_English))

3\. although in English every consonant occurs in a syllable together with a
vowel (as a with-sounder, if you will), there can be multiple consonants in
one syllable. E.g. "claps" is a single syllable with one vowel "a" and four
consonants. There is no vowel directly adjacent to "c" or "s". This is also
the case for "mnemonic": the syllable "mne" has one vowel and two consonants.
(Except in the English pronunciation, where the "m" is dropped.)

------
raldi
This story just teases that there will be an answer and then doesn't really
give one. To paraphrase the ending: "We had to. To those writing in to explain
that we didn't have to, trust me, we had to."

------
makecheck
Deprecation is a really good solution for fixing things "eventually" but
_only_ if you pair it with a plan for making the old one go away forever (a
plan _that you stick to_!).

If you aren't serious about _actually_ removing a bad API at some point, don't
change anything. Otherwise, you create _two_ things that need to be
tested/supported/kept binary-compatible/etc. instead of one, raising technical
debt when you were supposed to lower it.

------
desdiv
TIL that "referer" is a misspelling of "referrer" (from the top comment).

------
paulsutter
For the same reason the Referer header is misspelled in HTTP - because life
can sometimes be that way.

[https://en.m.wikipedia.org/wiki/HTTP_referer](https://en.m.wikipedia.org/wiki/HTTP_referer)

~~~
dmurray
Interesting, "referer" always looked believable to me as an alternative
spelling from American English, by analogy with the likes of "traveler". But
apparently not, because the accent is on the syllable that would be changed.

I found some answers about exactly when US and UK English differ on this
point, though none of them is comprehensive:
[https://english.stackexchange.com/questions/9192/cancelled-o...](https://english.stackexchange.com/questions/9192/cancelled-
or-canceled)

------
mrkgnao
The correct link to the IOCCC entry is:

[http://www0.us.ioccc.org/1987/hines/hines.c](http://www0.us.ioccc.org/1987/hines/hines.c)

------
mchahn
I hate it when people misspell functions and commands to save one letter.
umount comes to mind.

~~~
libeclipse
While true, I don't think that's related to the OP.

------
jjgreen
See also Adobe's amusing apology in the PostScript Red book for "guillemot".

------
jstanley
> The effort required to fix the spelling was a bit more than usual, since the
> function was used by multiple teams, so there would have to be some
> coordination among the teams so everybody fixed their spelling at the same
> time.

I thought all of Microsoft's code was in one giant repo anyway, so it would
literally just be 1 commit to update this.

