Might not be as dumb as it sounds. It doesn't sound like it's their current product, and it's not unreasonable for a customer to want a guarantee that a train is going to keep working the same way for 30 years, and not need completely retesting from scratch just because Microsoft made a new release. If it's not networked, there's no security issue.
It's a bit sad that our initial expectation, that software would be like mathematics, where you can keep building on previous results no matter if they were from last year or last millennia, didn't work out.
Better yet, why do we need operating systems with the bloat that they got today? Win3.11 was a decent system at the time and if all they need is included in it and there is no security repercussions than I guess it is ok.
The orginal Win311 ran fine for 30 years probably until the HDD failed and they need someone to do a reinstall. Why would they change the operating system?
My comment was replying to someone claiming that you can’t get a no-bloat operating system like 3.11 anymore. I was just pointing out that it has been possible the entire time.
It would certainly be silly to change OS just for the sake of it on a 30 year old project.
Very well, and striped down kernels run on hardware with even less resources today (embedded systems) than 3.1 minimum requirements. If a platform has lost support, and there's sufficient money in it to justify it, you can always go back in time to an older kernel. What really sucks is when a platform vendor maintains their own tree and it gets lost to time.
The real pain is populating the userspace if you need more than just busybox.
Never used it; don't know how well it works in practice. But it's the type of thing that can be made to work. Looks like some minimum requirements are a tad higher than the minimum of Windows 3.1 though, so it depends a bit on what you mean exactly with "Windows 3.1 era hardware".
> It's a bit sad that our initial expectation, that software would be like mathematics, where you can keep building on previous results no matter if they were from last year or last millennia, didn't work out.
If you think that, you haven't seen some of my dependencies.
Depraved degenerated decadent debouched and dangling dependencies. Cthullus madness has nothing on this. It may be co-dependent on its future self. Barock pipes, going allthrough the project, knowing no boundaries when it comes to language, platform and versioning. Laakon in cables, these spaghettis of missery, create work from 5 minutes safed work, to build the best problem-accelerator there ever was, flooding it all with exotic particles on collission.
Dependencies you can depend on, like a druggy on his dealer. A spider, excreeting web, made from nutrients, it extracted from itself - which it caught in the web. To be aware of them, is to become aware of mortality, as time decays everything away, even this gordian knot, whos fraying leather belts, whip those who untangle it. God may be all powerfull, but his ability to strike us down, for that unholy abomination of a universal dependcy, implies the universal simulator not having found all modules. It still runs, but once stop it shall never rebuild. Scratch your chin and mumble: "It depends.." cause in the deep ends - it always does.
PS: I got carried away, thinking about my own, sorry.
>It’s a remote job offering so it must be networked somehow.
Why do you assume that? The Siemens SIBAS 32 system can be used at home, and an old PC system with Windows 3.11 should be the smallest problem to use at home. The question is, if that's enough to simulate an environment similar to the train.
It's very strange to me that they do this for job postings in English, but it's probably a consequence of how the equivalent Germam postings are impossible to avoid gendering: Ingenieur is “male engineer”, Ingenieurin is “female engineer”, etc. There's workarounds like Ingenieur*innen but that's an unpronounceable neologism. And I guess there might be an ambiguity there about whether the divers is covered.
Why do you have to specify a gender? In the US I would assume anyone could apply and capable candidates would be considered. Doesn’t mean you would get a job if they were really seeking a female or male. Not trying to go into a gender or political questions, only curious how another country works.
Exactly. Language like Italian, French, German (and more) assign a "gender" to any word. "Chair" is female in Italian, male in Germsn (iirc).
And articles like a, the, this, that have slightly different forms for male and female (German also has "neuter").
Articles also have to match the gender of the word: "la sedia rossa" (the red chair in Italian) vs "il divano rosso" (the red couch).
English has "gendered" words in rare, exceptional cases (master/mistress?) but for Latin-based languages it is the opposite.
English has several of them for professions, e.g. waiter/waitress, aviator/aviatrix, actor/actress, but in modern English the masculine is always treated as neuter/generic. If I post an ad hiring an aviator, nobody would think that means means only men can apply either grammatically or factually, nor is anyone likely to correct me if I describe Natalie Portman as an actor instead of actress.
German can be weird in that the grammatical gender of a word doesn't always match the sex or gender of the person it describes. The most famous example is probably that das Mädchen (the girl) is grammatically neuter but unambiguously describes a female person. Nouns describing professions, however usually (always?) have a masculine and a feminine form and do describe the sex or gender of the person. An ad hiring a Fahrer would have the same meaning as "male driver" in English. That would be illegal sex discrimination in the USA or Germany.
The linked ad also included the following text, which has no connection to reality for the English translation:
> Note: In order to improve the readability of the text, the masculine form is used to refer to persons, functions, etc. However, it stands for all genders without exception.
> When a BART car runs into trouble, Shawn Stange steps back in time. He pops open a circa-2000 IBM Thinkpad running Windows 98 and opens a portal into the train’s brain — the Automated Train Control system — through the DOS computer language.
> Stacks of vintage laptop carcasses are common at BART warehouses. The train software is so old it won’t work on modern computers.
Reminds me of the software archeology in Vernor Vinge's A Deepness in the Sky.
I wonder if the software would run on WINE. When they say “it won’t run on modern computers” I feel like what they mean is that you can’t buy a Windows 11 laptop from Best Buy and then run Windows 98 software as if it was a modern windows binary. But any modern computer can emulate a computer from the 1990’s one way or another. (Yes I know WINE is not an emulator but you get my meaning)
Sometimes you really need the old hardware. A few years ago I was called in to help out a company that couldn't get 30 year old embedded code for an industrial PC platform running on modern replacement hardware. With my trusty old MS-DOS V2.11 version of DEBUG.COM I eventually managed to break into the hard loop I suspected the code was stuck in, to trace and disassemble it. It was communications code to talk to OG PC Uart hardware. For reasons best known to God or at least someone who probably retired 20 years ago they were using a scratchpad register in one of the chips instead of a byte of RAM to hold a timing variable to implement a delay/timeout. The modern [ASIC/FPGA/System on a chip/I don't know what] that was emulating the collection of OG PC hardware chips didn't bother providing that scratchpad register. A little big of creative assembly language rework and voila, the system worked like a charm. I really felt like invoicing for $10,000 or something ridiculous instead of 4 hours at my usual very reasonable hourly rate :-)
Ha ha, I don't think there's much of a career to be had in being able to keep 16 bit MS-DOS software binaries with no source code running unfortunately:-)
There are some things Wine doesn't do. Last time I checked, it didn't fully implement DCOM, so it couldn't be used for OPC (OLE for Process Control) and similar. And the use case in the parent comment might need Windows 98 because (other than Windows ME which everyone pretends didn't exist) it was the last DOS-based version of Windows; AFAIK, Wine does have some MS-DOS emulation, but it's limited to what some Windows 3.x software might need.
The computer that connects to the train system needs certification for its OS? I can understand the onboard controller needing certification, but a remote machine just connecting to it for configuration?
We know WINE is janky enough to be unlikely, "certification" is hand-waving in the general direction of "thankfully, there's opportunities for people outside an impulsive individual contributor to step in front of that"
These kinds of computers usually have customized ISA boards that aren't even PnP compatible. Software for that kind of hardware doesn't use drivers. Hardware is directly accessed from software, like you would do on a bare-metal microcontroller. Modern OSs like Linux and anything WinNT/2000/+ won't allow this, but Win311 in real mode does.
First, WINE = Wine Is Not an Emulator. And it's not an emulator, the PE code runs directly on the host CPU. All you really need to implement is the OS API (on Windows the official API is with DLLs, such as KERNEL32.DLL, which in turn issue syscalls, and you're not generally supposed to do syscalls yourself).
KERNEL32 is mainly implemented through calls to NTDLL. NTDLL is the one that triggers the actual system calls or thunks, the actual implementation is in NTOSKRNL.exe
Meanwhile USER32 used to do system calls to Win32k, but then they changed it to call Win32U, and have Win32U be all system calls to Win32k.
No it doesn't. 16-bit protected mode code will run natively even on 64-bit kernels - and there is a system call that can create the segment descriptors needed for that: https://man7.org/linux/man-pages/man2/modify_ldt.2.html
Missed the point. Wine runs Win16 binaries on 32- and 64-bit hosts, effectively by rethunking them to run in 32-bit mode. This can be viewed as a form of emulation.
Wine 9.0 can likewise rethunk 32-bit applications to run in 64-bit mode, but this is only the default on Mac OS X (where Apple removed 32-bit support), because it still introduces more compatibility problems on Linux than just running 32-bit code natively. (And thunking Win16 to 64-bit mode is not yet done.)
I'm not familiar with what exactly Wine does to run 32-bit code under OS X, but it would already have to do emulation / binary translation. Because some opcodes have been repurposed for the REX prefix in 64-bit mode, and any absolute 32-bit address would be interpreted as relative to RIP instead.
And 16-bit would be completely impossible, first there's the default operand size and then the completely different encoding for memory addressing.
I don’t know about the German windows 3.11 thing, but Bart uses ancient Siemens PLCs if I remember correctly.
I doubt there is any logic running in windows 98, but there will be PLCs that interface to old laptops for updating the logic of control systems, probably with proprietary dongles and licenses tied to specific laptops. Can you technically get that stuff working in wine? Probably. Can you do it legally, responsibly and without assuming a lot of liability? Probably not.
Even if the trains have been upgraded, there will be a ton of tendrils reaching into old PLCs from other equipment like train washes, maintenance equipment, etc that interface to the overall system somehow and it would be forbidden and unwise for any individual to start inventing new ways to update the software without an actual project in place to replace the PLC of whatever you’re working on.
At this point I believe all the original 50-yr old rolling stock has been retired and only the new cars are operating. It would surprise me if the news ones have the win98 dependency.
Back in the day (late 90s), the entire business of Bankers Trust (bought by Deutsche Bank) was on a ginormous spreadsheet macro written for the 16 bit Lotus 1-2-3 under Windows 3.11.
The thing was around 20,000 lines of code (Lotus-script if memory serves). Written by a business analyst. No indentations, no following good coding practices, no comments, tons of variables called a, b, aa, bb, etc...
All attempts to make it run on Windows 95 and later on Windows NT/2000 failed. It was unclear why. Something would always be wrong. At some point, IT managed to make it run in a VM on an early VMWare version under Windows 2000.
> Comprehend your own business processes and rewrite legacy code?
I think the parent’s point is that sometimes this is prohobitively expensive or there is simply noone knowlegeable enough to do it. In those cases, rewriting is NOT what you gotta do.
Nah, that's poor decisionmaking. That macro probably has a bunch of bugs in it and has been giving wrong results for years, but they'd rather cargo-cult something where they don't understand the bugs than risk having bugs that they do understand. Watch for them to be the next Post Office/Fujitsu in 10 or 20 years' time when someone finally pulls on the thread of some issues they're seeing.
Believe me, it was tried multiple times to understand it -> rewrite it. The code was incomprehensible, the new business analysts didn't seem to know exactly what it was doing.
By the time I left, the spreadsheet was still relied on heavily.
Ok, that actually sounds like it could be fun provided your hair is gray and/or missing.
There is something to be said about archaic versions of Windows and comparing/contrasting with Windows 11/Server 2022. Significant limitations especially with automation, but all of the work is hands-on, no major abstractions between you and the OS or software.
For a train and/or rail fan, the only way it could be better would be if it was administering Windows boxes across the system and they got to ride the train out to work sites. Still, train display panels for control systems could be fun too, especially for those who get into the minutia of the differences in train cabs.
I worked for a company 4/5 years ago that had a Windows 2000 machine connected to a dial-up modem which sent all of the company's payroll data to ADP four times a month. It sat on top of a filing cabinet in the HR office.
One time I got a phone call when I worked in the NOC at about 11pm from the director of HR in a panic because the machine wasn't working and payroll was going to be sent out in 55 minutes. Luckily he just forgot his password and had gotten locked out.
I worked for a company doing this stuff, and I was always asking why didn’t they do the jump to Linux. The answer was that they already have something that they could adapt from previous versions which was already certified. So a sunken-cost phallacy.
Two years ago, the same developer was working on an even older system with BASIC… Which I guess they already retired.
The Sunk-cost fallacy is when you weight the value of something disproportionately because of effort or expense you've put into it.
But if you've got an OS that's certified for the work you're doing, and it's not costing you extra to work on that OS, then there's no fallacy - you're getting more value out of the cost of certification you've incurred, and shifting to some other OS would presumably require you to incur the expense of certification again.
That said, the skills needed to work with a legacy OS will tend to become rarer, so you ought to factor that into your calculations.
I'm guessing that in this example, it was more expensive to switch to Linux and recertify. I doubt anyone in management was really arguing against a cheaper option because of money spent 10 years ago.
And than you bet on the wrong ditro. I do support work for a commercial Linux Desktop program. We went from SuSE, to CentOS, to Scientific Linux, to Ubuntu. Lets hop Ubuntu stays. :-) Our "luck" is every five years or so we exchange the machines.
Getting it over is not the difficult part. Discovering and managing all the bugs, quirks and features of a distro, desktop environment and access software (NX, X2Go, RDP, VcXsrv) is what robs one will to live.
They used 30 years the same Windows version. So maybe they can use 30 years the same Linux version. I don't know. All I know is, choosing Linux is the opposite of choosing stability.
> Choosing Linux is the opposite of choosing stability.
I would argue that a close-source (at least before the leak), non-supported kernel is way more unstable and risky than an open-source, still maintained one (some kernels are actively maintained through 2033).
Bear in mind that the position was not about developing/maintaining the OS, but the applications that run on it.
How do you measure the lack of support/resources for an operating system that is EOL? I don’t think there are that many Windows 3.1 developers out there… Linux in exchange is a bit broader.
You compare it to the cost of developing and certifying a new safety critical system. I recommend the recent talk from the team that investigated the Polish train corruption scandal. It goes into the hardware and software on these older train systems. They're essentially using them as PLC controllers, not as networked general purpose machines.
Hold on, the criticality of the system they were developing was not that high, in the end they could use Linux, which to my understanding is not certified for any ASIL D application.
That with the scandal sounds interesting, so you have any pointers where I can get a good sum-up? :)
Am I crazy to think any sort of talented Eng could re-engineer whatever tf this piece of software is in a few weeks or months? Identify the black box. Figure out the inputs and outputs. Reverse engineer where possible. Recreate the black box in a modern tool that’s easier to maintain. No reason to be stuck on this ancient version of windows at this time. I haven’t touched 3.11 in like 25+ years.
> Am I crazy to think any sort of talented Eng could re-engineer whatever tf this piece of software is in a few weeks or months? Identify
Reminds me of people who know little of the field of computing and the efforts involved and think that solutions spring out of just saying "it's easy, why don't you do it?!".
Everything is always easy as a purely mathematical/technical problem. Add in dealing with the real world - fellow workers, customers, regulators (especially in the case we're talking about), etc., and it gets complicated in a hurry.
I don’t know about trains but in medical a switch to a newer system causes enormous effort to revalidate so it’s often easier to keep the old OS and software.
Rewriting the software is probably not much of a problem but the paperwork around it is.
So you put out a req for a new hire and keep it going forever? Nah. Bite the bullet, eat the cost and get it done. But I guess this is the difference between startup world and European bureaucrat land.
If you were doing a hobbyist project, sure. With something like this which has safety implications, there would be a lot of recertification required, not only of your software but also of the new hardware that it will require. This is not trivial, and would be very resource intensive. And don't forget that you have to roll out the new hardware to the trains.
Or - you can use the existing Win3.11 systems, which are apparently still working just fine, and just update and test a single application.
A system that old that has been working for as long will surely have so many quirks, exceptions, bugs and workarounds deeply engrained in its users' processes. A naive port and rewrite will probably need many man-months of lost productivity spent recreating all the quirks of the original piece of software, resulting in an even less maintainable second iteration.
Again, what insanely sophisticated system could possibly be running on 3.11? Identify the inputs and outputs and go from there. It’s probably a driver. Or something that operates an antique piece of hardware. Dig into the binary protocol. Pen test the heck out of it. Reverse engineering is not hard.
I’ve done some wild shit in my day. Gotta think outside the box and go to first principles. If it looks like a duck, quacks like a duck and walks like a duck it’s a duck. You can replace things pretty easily when you identify the perimeter of a piece of software.
These days we have pretty powerful decompilers too. I’d posit I could replace this tech for the same cost of one year of whoever they are hiring for this to perpetuate the antiquated crap.
In general there is no real reason why a software running on Windows 3.11 could not contain 100 years of development time. What seems less likely is that the majority of that code would be highly hardware or system specific and would require porting to a modern platform. But as we do not really have any idea what kind of system we are talking about, it is hard to speculate.
If you think that "Identify the inputs and outputs and reverse engineer it which isn't hard" is all that's needed to re-create some bespoke piece of software then I hope you will never-ever have the chance to put this in to practice for this sort of safety-critical stuff.
"Oh yes, we missed that one output that only happens under these specific conditions and now the train crashed – oops!"
“Hey, our software works and is certified but it’s ancient and no one knows how to maintain it. If was written 30 years ago on a version of windows that doesn’t even support the internet. We need to upgrade and recertify”. This is an easy argument.
"These trains have been working fine for 32 years, after we ironed out some bugs with the software in the first six months of use. We absolutely don't want to have trains failing, as it's very disruptive for passengers, so let's keep the existing software working for a few more years. The trains will be scrapped in 2030 anyway."
>Recreate the black box in a modern tool that’s easier to maintain.
I assume in the newer trains they already recreated new systems. For the old trains it's just not worth it to modernize, as it's incompatible with the newer trains and thrown away eventually.
And who knows, maybe they gave it a try in the past, and it did not work out.
What you wrote reminds me a bit of a friend who asked me 15 years ago when he installed Java: "Who uses Java anyway?". You just have to change your perspective from an end-user. Same for Windows 3.11.
I have a customer, a company, they specialized on porting my Sciter on old and exotic platforms to create new modern looking software for them. Win95, old Unixes still getting new soft developed for them.
Another company, behemoth, I would say, with 30000 stuff, using Sciter to make frontend for their old mainframe based system (COBOL I think). Mainframe sends 80x24 terminal screens where the frontend gets fields by x/y coordinates to show it in modern HTML/CSS UI.
You may notice a lot of crazy things in dusty corners of IT.
Good for them, it works fine, why meddle with it? Old hardware can be super accurately emulated on old hardware these days. The only issue is that Windows is not open source, so there are hassles with licensing and they can't ask for official minor fixes. But open source didn't not really take off back in the day, so an understandable hurdle.
I'm always amazed how much some of that Siemens stuff still goes for. My employer had a handful of Siemens PCs ranging from 486 Beetles to Pentium III Scenics in daily use until just a few years ago. They really were built to last.
You wouldn't be directly connecting the PC to the Internet. You'd connect the PC to the KVM switch's PS/2 and VGA connectors. The KVM switch present the corresponding virtual desktop to an appropriate user over the Internet using RDP or similar.
Again, I'm not sure such a product currently exists, but I assume it is, given the needs of data-center admins.
It had a variant "Windows 3.11 for Workgroups" (1993-11), which was the second Microsoft OS with built-in networking, after "Windows 3.1 for Workgroups" (1992-10).
I have actually used "Windows 3.11 for Workgroups" with some coaxial-cable Ethernet NE2000 cards, but I do not remember what network protocols were used.
With all earlier MS-DOS or Windows versions third party networking solutions had to be used.
My first job was at a bank that used Windows 3.11 on all the corporate desktops (late 90s). We had 10mbit ethernet IIRC.
Periodically someone somewhere would plug both ends of an ethernet cable into the wall sockets, causing a broadcast storm and every PC in the building would freeze - Not even the mouse pointer would move.
Oddly enough my MS-DOS machine while in grad school was networked via a product made by Apple that allowed it to connect to a Mac network. My only use was accessing the department laser printer, but that was huge.
That rings true with my memory, I left the Windows world shortly after 3.11 for Workgroups came out, and there was a lot of Novell around. My job was writing a healthcare information system that used a ISAM database hosted on a Novell server, just starting to investigate SQL.
*Update:* Yes, looks like it uses the networking stuff provides by MS-DOS.
MS-DOS has NETSTART.BAT and PROTOCOL.INI that initializes TCP/IP with IP address and subnet mask.
When you look how a passenger information system in the trains boots up you can see how it shows BIOS information (floppy drive connected, serial and parallel port available, no harddisks) then it boots MS-DOS, initializes a XMS RAM disk, initializes parallel port, loads Crystal ENDS2ISA ethernet drivers, microsoft DOS TCP/IP protocol driver, and TCP/P MEMM driver, and calls NETBIND.COM.
As someone else noted, I doubt there's a lot of exploits lurking in hopes that they'll be able to own a Windows 3.11/MS-DOS 6.22 system. I'd be much more concerned about hooking up, say, Windows 7 than Windows 3.11.
>Perhaps this is one job that shouldn't be remote..
I guess with some luck you can work on these hardware drivers for Windows 3.11 at home without any access to the network or train. What you need are specifications and maybe some part of the system, maybe there is some simulation software for the internal system of the trains.
I mean the alternative is that you have to work in the train.
*Update:* Since the SIBAS 32 system is just a box someone can sent home to you, you can probably connect a computer with Windows 3.11 to it, and run some simulations on the SIBAS system.
Not really. Once you get it running your exploit payload you can put the required yields in there no problem (or just let it crash after it's finished running your payload). Worst case you might have to be a bit more careful with how you get there (sprinkle some yields in your NOP sled or something), but it's at most a speed bump, not a real countermeasure.
Efficient Windows 3.1 programs are like a giant FSM clockwork where each event loop task is broken into small enough chunks to yield back the processor in a reasonable amount of time. Crafting an exploit that does anything beyond crashing the program or the computer would require knowing how this was done for a particular program.
> Crafting an exploit that does anything beyond crashing the program or the computer would require knowing how this was done for a particular program.
No it doesn't. You can run your exploit code and then crash the program, same as exploiting any other program. Or you can add some minimal code on the end of your exploit payload to exit cleanly. If you really wanted to gold-plate it by having it resume the program where it had been then yes, you'd need to figure out some details, but that's not normal or necessary - classical "smash the stack" style exploiters rarely tried to unsmash the stack afterwards, they'd execute their payload and then exit or crash.
Wrong context. There's nothing sad or "technologically behind" in supporting industrial tech that has lifetimes of several decades. Why would you want to discard a perfectly working highspeed train? Because that's what this is about - support for a 30 year old highspeed train.
Do you really think that this is different in other countries?
As if they were changing their operating system of their trains every 5 years XD That's just stupid.
As a rule of thumb, it'll pay about 30% more than the same position employed directly by the company. And I, uhm, have worked in the same physical office as someone who had that kind of job at that precise company. When we met, he had taken home those +30% for a little over a decade.
It's weird sometimes how you can get a risk premium for being easy to fire, but actually be very difficult to fire due to unique knowledge of some platform. Like being the only guy who can answer questions from the train repair technicians.
Not going to name names, but a person like that was discovered when his employer looked for the oldest serving employee and found out that it was a contractor whose contract featured an hourly rate one usually gets for short-term contracts, like +100%. His stay had been, shall we say, extended a bit.
To be fair in Germany the major part of the risk is hiring a wrong person from the start and no way to fire them, so companies are often happy enough to have medium-term contractors.
Where does it say what the rate is? There are articles published with some frequency, making claims like "ancient programming language $LANG is used in $SOMETHING_CRITICAL; coders paid megabucks to decipher it". Yet, this is the first time I have actually seen such an job advertisement, so I'm very curious.
So maybe not a developer job at all, updating means installing not coding? And the Windows 3.11 on the train has not decent networking or remote maintenance system it needs to be done manually somehow?
But then it's a remote position.
Doesn't seem to make sense to me. But running something as unreliable as Windows 3.11 in a production environment does not seem to make sense anyway.
Some say recertification of a new system would be too expensive. But if this system is certified, I'd say it's a certification theater not worth the paper it is printed on.
>But running something as unreliable as Windows 3.11 in a production environment does not seem to make sense anyway.
They used and still use MS-DOS, Windows 3.11, Windows 95, and Windows NT for different systems over the years in the older trains starting from 1989 to estimated 2030.
I can't remember Windows 3.11 crashing so much, dos 6.22 neither. Windows 9x and ME did crash more.
Anyone know what happened to the Win98 presentation guy and where he works now?
https://www.youtube.com/watch?v=yeUyxjLhAxU
Maybe you had bad hardware, or bad drivers. Windows driver certification didn't even exist in those days. But 3.11 by itself was rock solid, I don't remember ever crashing it from windows proper.
IIRC 3.11 had no process isolation and the IP stack was an afterthought. So every application bug could crash or hang the whole system. And networking problems could freeze everything.
It's rather unlikely that something complicated like an X-server was bug free.
So the system you describe as rock solid, can only be rock solid as long as no real world application is running on it.
IIRC NT 3.51 was the real first kernel where a buggy application could not affect the whole machine. But at least in early days BSOD was pretty common, maybe depending a bit on drivers you needed.
(Did not do any archeology now, just from increasingly vague memories.)
suppose the hardest part for the contractor is doing this gig remotely:
*"It will connect to a remote computer running Windows NT RAS Server, or Windows 95/98 with the Dial-up server. Because it only supports the NetBeui protocol, it will not connect you to the Internet. Windows For Workgroups also included several application to take advantage of the built-in networking system." -- http://toastytech.com/guis/win311.html
>we have the comfort of knowing the designer used the correct pronouns
The text is probably translated from German. In this case they did not mean correct pronouns, but they meant they did not use inclusive nouns for simplicity reasons.
But even "masculine form" makes no sense. "vehicle control system" is neutrum in German and "high-quality display software" is female. Makes not sense to use masculine form here.