Windows 95 went the extra mile to ensure compatibility of SimCity, other games
arstechnica.com
arstechnica.com
Both impress me but the former is deeply fascinating to me. Though I think graphics drivers do this all the time?
The PC they had to test everything that they knew about.
This would be pretty hacky by todays standards but looking at it now it just seems like an engineer was doing what was easiest to get the job done. Not condoning it of course but it’s fascinating nonetheless.
It was about doing the only thing possible - software developers were often out of business, never interested in fixing the bugs themselves, and never capable of distributing the fixed versions to customers before the days where you could assume constant internet access (and still not entirely then)
I don't see how they did anything wrong or why it wouldn't still be one of the best solutions today. And honestly, it often still is the best or even the only solution today. There's only so much we have control over, no matter who we are.
The largest shim, of course, is an entire virtual machine.
https://gamedev.stackexchange.com/questions/44947/why-do-gpu...
I was 14 years old and knew very little about PCs at the time; though, I was learning. What I definitely didn't know at the time was that the HDD in the machine that I was told was nearly 500MB was actually a 200mb drive that had been compressed with an older version of DriveSpace. The addition of Plus! upgraded the compression to DriveSpace 3 which corrupted something on the drive that caused the system to hardlock as soon as the Windows 95 UI appeared no matter what I did.
After spending 4-5 hours on the phone with a very patient tech support specialist at MS, he eventually concluded that I would need to format the drive as nothing we did in those hours worked at all. Definitely a major learning experience for me doing my first full system format and OS reinstall.
By the end of 1996, I'd be doing my first Linux installation on a slightly newer PC that I saved money from a summer job to buy. If it hadn't been for DriveSpace 3 and an MS tech support specialist who educated the hell out of me for a few hours, who knows when (or even if) I would have gone down the rabbit hole that led to my career.
A major change is on the horizon though. We are close to where a large language model could play the role of the support side of that call. But if it an AI on the support side, would anyone bother to learn on the customer side?
I recently bought a Windows 11 machine that came with Windows 11 Home, I felt the need for some Pro features and went to check the price for an upgrade and my jaw dropped. Years of "free upgrade to Windows 10/11" lead me believe those licences were less pricey nowadays.
Of course soon is was bundled with any prebuilt but back at release those were relatively rare and expensive.
If you do the inflation adjustment from Win 95, you'd see that a modern Windows license is far cheaper today than it was back then.
[1] “Old New Thing” (the print one), https://books.google.com/books?id=wYrCitbs5PQC&lpg=PA1&pg=PT...
A legacy proper, functioning support org's job is to sift through user-is-the-problem bugs to identify the smaller list of actual bugs... which engineering then fixes. Because they're actual bugs!
Nowadays, folks look at Support and QA as cost centers, to be funded and staffed at minimum levels.
Small wonder SRE have become the new rock stars -- companies disempowered anyone else able to call a bug a bug.
That is just so utterly inconceivable today that I didn't believe it at first. Not just being physical media, but receiving that level of attention and care.
The best you can hope for these days is a vague forum reply with some shockingly bad information from an "official Microsoft rep" who is at least 5 degrees of separation from anyone who has seen code before. Disgraceful.
It's a great strategy all around if you take an hour to care about another person.
And for apps where the out-of-the-box mitigations don't work, the inscrutably-named Assessment and Deployment Kit (https://learn.microsoft.com/en-us/windows-hardware/get-start...) will most likely help you out. Sure, some truly ancient apps (mostly DOS and OG-WinAPI) really won't work anymore, but those are better relegated to a VM anyway, if only for security reasons.
If you want to understand why Windows still occupies a lot of IT mindset even in Y2K22, understanding the traditional Microsoft approach to backwards compatibility (as much demonstrated deficiencies as it has...) is a necessary first step.
The real question, though, is: after a successful OS upgrade, how many of your installed apps still work without issues?
On Linux, this varies: popular source-available apps tend to do fine, whereas less-common and proprietary (not to mention expensive!) apps fail after even minor updates, with no other resolution than 'ask your app supplier to do better', which is not always an option due to said supplier being too burned-out, bankrupt, or both.
On MacOS, apps generally seem to have a 2-5 year lifetime, after which they break for various (often minor) reasons. Resolution is as per above, and often unavailable due to suppliers disappearing or giving up because of to the relatively small size of the MacOS market. iOS has similar issues.
On Windows, you can generally continue to use even the most obsolete apps for 10-20 years, and often even longer. Of course, traumatic generational changes (obsoleting DOS or 16-bit WinAPI apps) still take their toll, but compared to other operating systems, this happens a lot less often, and migration tooling is often available.
WoW64 makes 32-bit programs work under 64-bit Windows by providing an entire 32-bit copy of the 64-bit operating system, and then transparently redirecting reference calls made by 32-bit programs to them instead.
It's simple in design, brute force in execution, and practical in results. I hope Microsoft never changes their backwards compatibility philosophy; other operating system vendors should strive to be like them.
It's just crazy compared to how much software just completely breaks between different macOS releases with no recourse, or have to be recompiled and reinstalled from scratch on Linuxes. Microsoft's bad at a lot of things, but they deserve a huge amount of credit for their backward compatibility on Windows...
https://learn.microsoft.com/en-us/windows/arm/overview
Edit: Seems that emulation system also uses WOW64! https://learn.microsoft.com/en-us/windows/arm/apps-on-arm-x8...
That'd be impressive, since Ubuntu 1.0 doesn't exist (first version was 4.10).
It’s also worth noting certain Linux releases have extended support so you continue to get security updates without upgrading (a strategy Microsoft also uses).
Still, it is a downside of Linux and macOS compared to Windows.
Surely you lie.
Per https://www.google.com/search?q=decade+in+years, a decade is 10 years, making the above date since December 26, 2022, over a decade ago?
But possibly, per Bill Clinton, that all depends on "what the meaning of the word 'is' is"? Or I'm missing some implied sarcasm? Usually Occam's Razor would help out, but I just got downvoted twice for enumerating some historical facts on a separate thread, so who knows...
My mental model of Windows 8 is "that toc (terrible half of the cycle) windows release to 7's tic, that I had to remove from my Aunt's new laptop and found that UEFI made downgrading to Win7 a right ballache and I swear I did this 3 years ago not 10" How time flies.
Which then expectedly exploded whenever MS shipped a new Windows version.
Obviously the correct solution was to rewrite SimCity for Windows 3.x in Rust, thus avoiding this very common bug. /s
Do you hang out in the Mud Coder's Guild Slack at all? You might find it interesting: https://mudcoders.com/join-the-mud-coders-guild-6770301ddcbd...
I don't, but I was named by name in "Playing MUDs on the Internet" :)
I have copies of Epic, SillyMUD, Phoenix, and now Kaos.
At Microsoft this eventually became a feature: Application Compatibility Database
https://learn.microsoft.com/en-us/windows/win32/devnotes/app...
Having MS design Win95 with specific hacks for SimCity means that MS thought that SimCity was special and important, which reminds people in that era that they also thought SimCity was special and important -- and it's mildly or moderately interesting enough for these people to find "behind the scenes" work which validates their nostalgic memories.
https://devblogs.microsoft.com/oldnewthing/author/oldnewthin...
Microsoft had a program internally within it's development teams for Windows 95 that you could get any software for free. You just had to agree that you'd ensure it was compatible with Windows 95 and take ownership of its quirks to get it to run on Windows 95.
Per wiki, they released "SimCity Deluxe CD-ROM" for Windows 95, so the game was obviously still selling well even then.
On the other hand, both the website and browser are mostly provided for free. Paid websites often do put the extra effort in to make it work everywhere, eg IE/Safari compat.
Also when you shutdown windows 95 it would leave you at a DOS prompt. So no restart was actually needed.
IIRC “MS DOS mode” could either just exit Windows, or reboot the entire system depending on config (presumably if you wanted custom config.sys / autoexec.bat)? But I might be wrong, it’s been years since I used 9x.
Those two cases got conflated by the ability to start Windows from within autoexec.bat, which wasn't the Microsoft default but was a fairly common setup from some OEMs. To the OS, that's the case of starting Windows separately, but to the user, it looks like the auto-starting case.
Good times.
Never underestimate the bandwidth of a FedEx truck full of floppies barreling down the interstate.
Even then, things that stuck to DOS syscalls (INT 21h etc) would generally work.
It's a shame but older Windows software runs better under wine then old Linux software does under Linux. Maybe we need a line?!
(I mean, unless you prize productivity.... goddamn did SimCity eat whole DAYS for me back then.)
^ For those unfamiliar with what this poster is talking about.
tl;dr:
In a _beta_ release of windows 3.1 Microsoft included code to detect if the user was running authenticate DOS or a third-party clone and errored out if it wasn't the real thing. The code was disabled on for the actual release of 3.1 that went out to customers.
Internal memos about the code came to light during the government's antitrust prosecution of Microsoft. When this happened the new owner of the clone DOS system sued Microsoft and they settled to make the case go away and get the anti-trust headlines out of the news.
I just noticed Joel Spolsky's surname means "from Poland" ("z Polski")
Add to that the various spellings "Vander X, Van Der X, VanderX". I'm sure the conversation went
"Surname?"
"Vas?"
"Where you from?"
"Von Der Hook"
scribbles something on intake card. "Next!"
Don't have a lot of details on this history (which i heard orally) but a Google search for "Jewish surnames geography" seems to back me up.
France at one time went to the other extreme - names had to be approved by a central registry at birth. Until 1993, there was an official list of allowed first names. Today, there are still some prohibited names. "Nutella" just made the list.
My wife is French. We’re expecting our third child and the other two, Banana and Oatmeal, were devastated.
> On the way home I'd pick up Pizza and Coke. She wasn't happy with me.
> Fur fgvyy unfa'g sbetvira zr sbe anzvat gur xvqf.
Examples (from the process above: keep in mind people actually tried)
Titeuf: https://en.wikipedia.org/wiki/Titeuf
Fraise: (strawberry) because of the expression "ramène ta faise" ("bring you ass over here")
Jihad: for obvious reasons
Joyeux: (happy) from the dwarf name
Patriste: (notsad) an attempt to circumvent the above
Babord / Tribord: (port / starboard) someone tried that for twins
MJ: trying to honour of Mickael Jackson's death
Griezmann Mbappé: you can guess
Mégane: because the family name was Renaud (close to Renault, which has a car named Mégane)
Mohamed: because the family name was Merah (Mohamed Merah being a well-known serial murderer)
Fañch: a traditional Brittany name, initially rejected because the ~ diacritic, which does not exist in the French alphabet. Was later overruled and allowed.
The horrible part, though, is about all those terrible names that are not rejected as the ones above were but are obviously a sort of sad, tasteless joke and very very bad for the child.
Many people had to pick surnames when the French occupied the Netherlands, often leading to geographical names, references to occupations, or sometimes even jokes ("Naaktgeboren" being relatively common, meaning "born naked"). The forefathers of someone named "van der Sluis" could have lived near a sluice/lock, lived near a place called Sluis, or perhaps operated sluices/locks as part of their job in the barging industry.
English speaking countries where last names consisting of multiple words were incredibly rare often concatenate(d) such names into one or fewer words. To many English speakers the only name with multiple words would imply nobility (if they even considered the concept at all) and I wouldn't expect nobility to arrive amidst refugees either. To this day some American websites refuse to take the space in my last name.
As an added bonus, Dutch names specifically can have "tussenvoegsels" that are part of the name but need to be treated specially to be used correctly (i.e. when sorting a list of names). Depending on if the name belongs to a Belgian or a Dutchman the capitalisation rules also differ (the Flemish capitalising the "Van", the Dutch using lowercase letters). Of course other languages and cultures also have their own naming schemes with grammar rules (take German/Austrian "von" or Danish "af/de/von" for example); it's hardly a unique concept, but the details differ between countries.
It's no wonder those poor American immigration workers couldn't make heads or tails out of the names these people brought into their country. As a Dutchman, the end result is often quite interesting to witness when Americans or Canadians with Dutch names appear on TV, most names containing their own special deviation from "normal" Dutch names.
Actually, a little-known grammar rule (in the Netherlands) is that lowercase is only used for a tussenvoegsel following a first name. In other cases, the first tussenvoegsel is capitalized.
Example: Piet van der Sluis -> meneer Van der Sluis
https://onzetaal.nl/taalloket/hoofdletters-in-aanhef-brief-o...
This is a myth.
I could, with similar authority, state that it being a myth is a myth.
https://journals.ala.org/index.php/dttp/article/view/6655/89...
Even wikipedia has it under the “Name-change myth” section: https://en.m.wikipedia.org/wiki/Ellis_Island
> Records show that immigration officials often actually corrected mistakes in immigrants' names, since inspectors knew three languages on average and each worker was usually assigned to process immigrants who spoke the same languages.
> Many immigrant families Americanized their surnames afterward, either immediately following the immigration process or gradually after assimilating into American culture. Because the average family changed their surname five years after immigration, the Naturalization Act of 1906 required documentation of name changes.
There is just no evidence that Ellis Island officials made up names, and this is a very througly studied area of US history.
It would not surprise me at all if some overworked government employee doesn't really care what noises the foreigner is trying to make. This was in a time when lots of people couldn't read or write.
The grandparent anecdote is very clearly a work of imagination, while historical sources show that new names were not assigned at Ellis Island, and that Ellis Island officials were multilingual and assigned to immigrant cases based on language.
Same people Dutch people named Martijn or Maarten, who will often use Martin abroad. Johan Cruijff is typically known as Cruyff abroad, etc.
no, ship's manifests (prepared at the point of departure) have been a standard in the ocean-voyage game for a long long time, and those were the lists used by immigration, not handwritten lists based on what they heard.
see here https://www.nypl.org/blog/2013/07/02/name-changes-ellis-isla...
This is not true. The Ellis Island workers recieved the names in written form from the ships passenger lists. But many immigrants changed their names after arriving in the US for convenience or to better integrate in society.
But he cited something with the letter ш, indicating the sh sound. So I think I was onto something.
Now I kinda hope for further details. Is the surname from adjective "Шполянський"?
I just figured out the best way to get an answer on the web is to post a wrong one first, so I went 5 minutes into the subject on Wikipedia and what I've concluded is that maybe it's actually the other way around.
Poland is like "Land of Polans" which were the original tribe of the region.
The Ш letter seems it is a prefix that comes from Hebrew, so maybe, Шпола also refers to Polans in some way.
I must emphasize again that this can be completely wrong.
In any case, "pol" in the placename can simply refer to a field directly. Or even to something else; in case of Shpola, the local legend is that it was named after the guy who first settled there.
Just to be clear. I wrote this on my linux mint laptop. I'm thankful for all the hard work people put into Debian, Ubuntu and Free Software in general. This is just an generalization.
I've had more luck with old Linux binaries running, myself.
All the 25 years of code is still in Windows 11 they just hide it with a lick of paint. If you want to play old games Microsoft is still your best bet.
This just tells me Windows is on a level with Linux + Wine, with the compatibility mode.
> All the 25 years of code is still in Windows 11 they just hide it with a lick of paint.
That's not true. Windows had a big, discontinuous shift when they abandoned the DOS-centric Windows codebase in the move to XP.
Initially happy as the install and intro ran fine, but pressing enter to skip the video exits the game immediately.
Maybe that's further than you would expect, wine / proton is incredibly good nowadays, but still your point stands.
You mean the move to the NT platform, which made the consumer windows desktop OS finally stable.
Compatibility features, while not perfect, were implemented to help try and get Win9x and DOS workloads to function normally. Some DOS apps ran fine on XP in compatibility mode, although I couldn't say what %.
Windows 11 is the latest member of the Windows NT family, which originates from Windows NT 3.1 which coincides with Windows 3.1.
Windows NT 4.0, which coincides with Windows 95, is where things start to look more familiar to us today.
Windows 2000 followed to coincide with Windows 98 and ME and is where the NT family really got consumer-aimed software working right with the integration of DirectX all the way up to DirectX 9.
Windows XP which followed 2000 is really just 2000 with some more cleanup and QoL improvements. All the foundations were laid by the time of Windows 2000.
So yes, "all the 25 years of code" are definitely still in Windows 11 under a lick of paint.
There are a lot of baffling decisions by Microsoft’s Windows division, but their extreme dedication towards backward compatibility is nothing short of Herculean.
Sometimes I wish they’d split up Windows in an ultra-slow ‘Enterprise’ ring and a move-fast (think about the speed of macOS changes) ‘consumer’ ring, where they could drop much of the legacy cruft in trade for speedy/forced improvements. Think macOS going fully 64 bit, making the system image immutable, etc.
Hell, imagine if they’d allowed the Xbox One, X and S to run Windows 11 in S mode. Instant cheap performant computer for the layperson! And with it running S mode, they’d make their money through the Microsoft Store.
They do: Long-term Servicing Channel releases: https://techcommunity.microsoft.com/t5/windows-it-pro-blog/l...
Like sure I understand that having specific packages for each version should make it reliably work, but the trade off and demand for devs to keep up is pretty huge.
I compiled xv from 1994 the other day on my Linux box; just has to make a tiny patch to fix an include (lots of warning, but it compiles and runs).
That said, there's some room for improvement. For example pkg-config/pkgconf could automatically suggest which packages to install if "pkg-config --libs x11" fails, or some other distro-agnostic way for people to track down dependencies.
If you're shipping a binary program without source (i.e. a game, for example, which tend to be closed source) you should ship the libraries or compile things statically. Some of the older Linux games on gog.com can be a bit tricky to run on modern systems due to this.
See that's the thing, everything on linux is designed to work by sideloading as much as possible, depending on thirty thousand packages that must be all installed to the perfect version by apt or else nothing works. A good system if you need to get a fully featured OS running on 100 MB of disk space, which tbf is linux's niche, but it's absolute horseshit to maintain.
Windows on the other hand tends to have flatpak-style monolithic executables, with the odd .NET framework or cpp resdistrubutable here and there, but it's the rare exception. Things tend to actually work when they bundle their dependencies. Hell, the average Java app ships the JRE along with it because nothing works if the wrong version is installed globally. Linux just takes that problem as a fact of life and tells you to fuck off.
In practice however, I rarely encounter issues, except for closed-source programs that don't ship their libraries. That, I think, is mostly the fault of the vendor and not the Linux system. Of course, as a user it doesn't really matter whose fault it is if your application doesn't work because you just want the damn thing to work. It does mean the problem (and solution) is mostly an educational one, rather than a technical one. You certainly can ship binary programs that should work for decades to come: the two core components (Linux kernel and GNU libc) take backwards compatibility pretty serious, more or less on equal level with Windows.
You don't even need flatpack. A wrapper script with "LD_LIBRARY_PATH=. ./binary" gets you a long way (and still provides people the ability to use a system library if they want, so sort-of the best of both worlds).
The key difference is that each app bundles its DLLs for its own private use. From the user's perspective, it's essentially the same as static linking, if you treat the entire folder as "the app".
In MS speak, it is xcopy install, based on how MS-DOS applicatons used to be distributed, even when static linking was the only option (with overlays).
I've tried similar on debian, ubuntu, and centos but fighting with apt or yum and their (seemingly) comparatively brittle packaging systems got very old very quickly. Not that it can't be done easily on those systems but so far I haven't managed it yet.
Nix I find can also be really nice for this, especially since flake based packages are pretty much self contained. Still a lot less pleasant compared to the portage/ebuild route though.
The result isn't even "fuck you, recompile." The result is, "fuck you, you better be constantly fixing the shit that we broke with our breaking changes."
This is part of the value that distros bring to the table. Providing a snapshot of versions that actually interoperate well.
> The result isn't even "fuck you, recompile." The result is, "fuck you, you better be constantly fixing the shit that we broke with our breaking changes."
Linux's approach to drivers is the most "fuck you, you better be constantly fixing the shit that we broke with our breaking changes" of any OS. It does take userland compatibility seriously though.
It's true, and I have 3 devices that stopped working under Linux to prove it.
> Once a driver is in the kernel, there's usually nothing a user must do to get the device working.
If the driver is accepted into the kernel tree in the first place, and until it gets removed, yes. The fact remains that that's a much narrower window than for most OSes.
These days you just need a container. Or use Nix/Guix, which makes it easy to preserve required dependencies for an older app even when upgrading other parts of the system.
I'd be lying if I said I'd never done something similar when trying to switch from the open-source Nvidia drivers (glitchy at 4k60, at the time) to the officially provided ones.