
Humor: Interview with an Ex-Microsoftie Who Used to Name OS Folders - taude
http://secretgeek.net/ex_ms.asp
======
plorkyeran
All of the names it makes fun of have perfectly sensible explanations.

"Program Files" and "Documents and Settings" have spaces to force software to
support spaces in paths.

system32 for the Win32 version of system makes perfect sense. 64-bit Windows
continues to use the Win32 API, and renaming system32 would have broken
compatibility with dumb programs that hardcoded the name. SysWOW64 is the
system32 directory for Windows 32-bit on Windows 64-bit. WOW64 is perhaps an
overly cutesy name, but it's actually fairly descriptive.

~~~
gosub
They should have called it "Prögräm Files", to force developers to support
unicode.

~~~
Cthulhu_
pff, more like
"͉̮̽̌̾ͨ̅ͪ̔͟P̫̣̟̩͓ͬ̀̇ͦ̍̾r̢̟͚̭͍̰̈́͂̀͌͌ͅö̬̩̩̼͔͡g̻͈̜̘̥̣̯ͣ̆̊́͑̈̑r̜̅ͪ͂ͩ̈̽̆̕ä͙̯̹̼̭̽ͮ̄ͨ̋͞m̸̥̝͓̥͉̣̎̊ͬͩ̄̌ͨͅ
̷̣ͬ̎̔F̰͍̠̾̅i̪͖̞͓̝̬ͥͅle̞̘͇̲̳͍̐̎̾̾̉͑̚s̲͍̓̂͞.

HN should too, :p. Put it in [http://eeemo.net/](http://eeemo.net/) to see
what I mean.

------
aegiso
What you see here is the result of Microsoft's ridiculous infighting and
internal politics, constructed by the stack-ranking culture of doom.

You basically get ranked on how visible your stuff is to management, so you:

1) name your project as patriotically as possible. It's gotta include one of
"Windows", "Microsoft", "XML", "COM", ".NET", "Modern" \-- preferably all of
them multiple times, especially if it has nothing to do with any of them.

2) make sure to stick the name in as many places as possible. A great place is
the default filesystem structure, where everyone is bound to come across it.

3) earn bonus points if you can massage it into a de-facto standard (hello,
XHR)

With any luck, Microsoft Modern framework for Windows Azure .NET connectivity
with Windows Azure 8.1 will show up on your reviewer's radar and you can enjoy
your juicy bonus until the same time next year.

Source: used to work there

P.S. I'm not a Microsoft cynic -- just having a bit of fun :).

~~~
theg2
Stack ranking wasn't around when any of this was done. This is early 90's
stuff when stack ranking didn't even start until the late 90's.

~~~
icebraining
SysWOW64 is from the 90s?

~~~
plorkyeran
The Windows on Windows name was also used for the 16-bit compatibility layer,
so the WOW part is from the early 90s.

------
bhauer
Amusing, but the standard Unix file system is nothing to be too proud of. I'd
very much like to see a file system layout re-imagined for the 2010s.

~~~
mintplant
Binaries? Libraries? Let's stick 'em in `/usr`! Oh, but where do user files
go? I know, `/home`! What about all this other stuff? Eh, `/etc` will do.
Unless it won't, in which case `/var` is the obvious solution. Or maybe even
`/opt`, if we're feeling especially hip today.

~~~
antocv
usr doesnt mean user, it meant Unix System Resources, and a user of the system
usually puts his stuff at home, what would you like it to be otherwise /users
? That would be describing the users of the system and not where their stuff
is, and users are described in /etc/passwd together with their passwords, sort
of.

/etc isnt called /conf or configuration because it contains examples, scripts
and other small stuff as well, which is etcetera.

/var is for variable data like logs and pid files, not meant to be changed by
the user directly

/opt sucks and is for losers who dont know about /usr/local or how to install
stuff in ~

The Linux way makes much more sense than Windows or MacOSX way. binaries are
in bin libraries are in lib, whats not to like?

~~~
anonymouz
> /opt sucks and is for losers who dont know about /usr/local or how to
> install stuff in ~

I disagree. /opt is for systemwide installations of monolithic software by
dumb companies that can't fit their software into the standard layout. In the
Linux FHS /usr/local/ is supposed to be for non distribution installed
software that nonetheless uses the standard layout with
/usr/local/{lib,bin,doc} etc. In /opt you usually have something like
/opt/somesoftware/ and some non-standard hierarchy underneath.

~~~
liotier
> I disagree. /opt is for systemwide installations of monolithic software by
> dumb companies that can't fit their software into the standard layout.

You are actually fully agreeing with what was said !

------
jloughry
The way Microsoft Windows parses "Program Files" in the path seems incredible
at first:

[https://isc.sans.edu/diary/Help+eliminate+unquoted+path+vuln...](https://isc.sans.edu/diary/Help+eliminate+unquoted+path+vulnerabilities/14464)

[http://xato.net/hardening/the-programexe-
problem/](http://xato.net/hardening/the-programexe-problem/)

    
    
      "The problem is that it doesn't know. It just starts
      at the beginning and tries finding an executable until
      it finds a match. So in this case, it will try these
      files every time you run the command:
    
        C:\Program.exe
        C:\Program Files\Internet.exe
        C:\Program Files\Internet Explorer\iexplore.exe
    
      "You might see where I'm going with this: if you
      place an executable named program.exe in the root
      directory, it will probably end up running quite
      a bit. In fact, it will run anytime Windows
      launches a Program Files executable that does not
      have quotes around the path." [1]
    

[1]
[http://www.securityfocus.com/columnists/301](http://www.securityfocus.com/columnists/301)

------
magic_haze
Amusing, but after looking up on the actual reasons why they came up with this
scheme, I'm very impressed by the amount of work that goes into backwards
compatibility:

> Batch files ran programs from C:\Windows\System32 with the expectation that
> the resulting program would match the native OS. These expectations were not
> explicit, but they were implied by the nature of the activity. If the
> System32 directory were filled with 32-bit programs, then a batch file that
> ran the C:\Windows\System32\REG.EXE program to upset a system registry
> setting would be running the 32-bit version of REG.EXE, which means that it
> would be updating the 32-bit simulated version of the registry instead of
> the real 64-bit version. Other types of scripting files (such as REG files)
> have the same problem.

[http://technet.microsoft.com/en-
us/magazine/ff955767.aspx](http://technet.microsoft.com/en-
us/magazine/ff955767.aspx)

How did Linux handle this problem?

~~~
_ZeD_
the problem is _not_ in the 32/64 reg.exe executable. It's that "32-bit
simulated version of the registry".

Why do I need something like that? (I expect some binary compatibility, but
we're just opening a can of worms...)

By comparison, most of the configuration files / registry equivalent info in
linux are saved in plain text, and AFAIK all of them did _not_ care about the
32/64 bit version of the executables.

------
jvehent
\- Where do I put my binaries ?

in /usr/bin of course

\- But it's kinda personal stuff...

so put it in /usr/local/bin

\- Oh right, but now I have more stuff that's not really important but still
useful

that's what we have /opt for

\- but... what if it's optional and only on my machine

oh hell, just create /opt/local/bin and be done with it already!

~~~
pavanky
As opposed to windows where the user binaries are not located in a central
location, I'd take this any day of the week.

You can't blame *nix for having too much choice. Especially when it's
coherent.

~~~
TylerE
I actually find unix worse here, as I rarely care about where the binary is
(and `which` will happily tell me on the rare occasions that I do), but I
often need to find various supporting files. Are they in /usr/share?
/usr/local/share? /opt/fooprog? (in the olden days /usr/X11R6/share, or many
other variants).

~~~
codeflo
There are efforts to fix this. In Arch Linux, _all_ binaries are now in
/usr/bin, and /bin is just a symlink to /usr/bin.

~~~
TylerE
That's not my problem. My problem is: Where is the template file for xyz, or
the doc, or the example config, or ...

~~~
pavanky
What are the equivalent locations for windows ? Also almost all programs
installed via the package manager will use the same paths. If you are
installing a package manually, then things get more.. interesting.

~~~
TylerE
Practically universally: C:/Program Files/FooProg

~~~
qu4z-2
In fairness, program files, templates, docs, settings, and examples on Windows
are often in some mix of

    
    
      C:/Program Files (x86)/VendorName/FooProg
      C:/Users/Me/AppData/Local/FooProg
      C:/Users/Me/My Documents/FooProg/
      C:/VendorName/FooProg (I'm looking at you, AMD)
      The registry (which is sorta like /etc, and often abused to store stuff like recent searches, etc)
    

Linux is definitely worse on that front I agree, but let's not pretend Windows
is super-consistent about file locations. I only say this after much
frustration recently trying to find things.

------
talles
Haha, amazing. I literally laughed out loud at:

Why is there a 'WOW' in the middle of the name?

—I was typing System64 and half way through I just thought: "WOW, nature is
beautiful!"

------
revelation
That's not the best part yet. Remember _links_? Apparently they survived the
big Longhorn and made their way into _Vista_! They really only exist as the
"mklink" command line tool, support for creating them is nonexistent in
Explorer, and iirc they have some other underlying architectural failures that
makes them generally unpleasant to use on Windows.

But hey, they exist, so someone had the glorious idea to _translate_ these
already terrible names into whatever is appropiate for your localized Windows,
and create links for stuff like Documents and Settings. Confusion complete.

~~~
dchest
Of course we remember! Here's how it happened:

[https://gist.github.com/dchest/800407/raw/48fd662716b7d446e7...](https://gist.github.com/dchest/800407/raw/48fd662716b7d446e76418d8b0d7cf47d96f8efc/gistfile1.txt)

------
agumonkey
Note that it works hand in hand with `Excel can't save to paths over 218
characters (microsoft.com)`
([https://news.ycombinator.com/item?id=6281462](https://news.ycombinator.com/item?id=6281462))

bad name => earlier limit reach

</synergy>

------
terrymah
FWIW, "WOW" stands for "Windows on Windows"

~~~
_ZeD_
FWIW... it's "WOW64" (windows on windows 64)

------
malkia
My recent favorite is WinSxS - it's the folder that makes total sense on
WinRT/Pro devices... not!

Okay, it's sounds like a fine idea - having multiple DLL versions, allowing
applications to link to them. But look, the idea of DLL was to save memory,
where two or more applications accessing them would reuse the same hw memory
(if they are not relocated). Now maybe on modern PC's that doesn't matter much
(although it's still problematic if two MSVCRT libs are used from two
different DLLs).

Anyway, but on mobile devices - memory and storage space are important - so
make sure all your apps use the same DLL, so you don't lose to storage space,
and it's loaded only once (virtually for every process, but due to COW only
once in memory).

Have fun, go to Best Buy/Costco/anywhere where they sell the Windows RT/Pro
tablets. Go to the command prompt (cmd.exe), c:\windows\winsxs, and type "dir
/s" \- you can see how much space is wasted there. And this would get even
more and more with more updates coming.

~~~
disposablename
[http://blogs.technet.com/b/askcore/archive/2008/09/17/what-i...](http://blogs.technet.com/b/askcore/archive/2008/09/17/what-
is-the-winsxs-directory-in-windows-2008-and-windows-vista-and-why-is-it-so-
large.aspx)

------
maga
I was buying it up until "WOW, nature is beautiful".

------
felixr
I wonder why the interviewee is an _Ex-_ Microsoftie. Did Microsoft realize
that they had to replace him, or did he retire? Probably the latter...

------
th0ma5
I always thought it was funny that the hosts file is still in etc/ but under
the windows system folder!

------
niuzeta
Is this a joke, or a real deal? It _seems_ too true to not to be a genuine
joke.

