Friday, January 18, 2019

Windows 10 - ready to F#$% you if you step out of line.

So I was wondering why my system was taking so long to boot.  Brand new PC with my first time using Windows 10 for only a month or so.  Now you gotta know I was leery of the next version, as it was now 2019 and I had never yet run windows 10.  Why?  Well because of surprises like this.

I decided to go into msconfig.exe and look at my services at startup.  My GOD!  It looked like there were about 160 services!

I noticed a note (can't recall how I saw it) that said that some services could not be disabled.

Aha!

That told me that someone was wise enough to not allow a naive user to disable critical services needed for the system!

Ok.  It should be safe to try this.

DISABLE ALL SERVICES AT BOOT

Ok lets see how this does with boot time.

....

"Your password is incorrect.  Due to security changes Windows is no longer able to access your PIN"

...

Uh ohhh.......

Tried everything I could think of.  Couldn't seem to get into the BIOS with DEL or ESC.

hmmm.

I looked up some forums and some people had managed to hit CTRL when logging in or waiting long enough (several hours) and eventually logging in - but others had to do a complete reinstall!

I tried their hacks...  no luck.

Better take it in to the Computer Guy in Orofino for an expert opinion.

They had several USB and DVD boot images to try to "crack" the password.  No luck.  The new BIOS is VERY SECURE.  Lots of interlocking settings that all have to be just right to be able to boot into a USB stick or the DVD.  This guy managed to get one image to boot but not the cracker one.
I did manage to learn that getting into the BIOS now required either F12 at startup or to hold the SHIFT key down when pressing the restart button on the desktop (no it doesn't work with any of the other 100s of "restart" buttons placed throughout the settings UI) which will get you into DELL's troubleshooting boot system which is separate from the BIOS.
I left him with it for the day and did some errands.

When I returned, he had no luck in getting in and charged me $27.50 for his time, which I perfectly understood.  As I left I said

"In software, sometimes you can work all day and accomplish nothing" 

- which is very true.

So my box has been reinstalled to factory settings (that took me several hours to feel confident there was no other way to go that would work and to feel comfortable with all the settings of the BIOS, the DELL troubleshooting shell and the special OS fix and reinstall support shell from DELL).

Why does crap like this happen?

Security and Laziness and Greed

Sometime in the mid 90s a bunch of very good tester's at Microsoft were let go.  These guys were our team of monkey testers.  They didn't write a lot of code but instead simply pounded on the UI of whatever project they worked on to just find usability bugs.  This is called "usability testing" and is actually where some of the best oversights of PM specs and Dev designs are found.

There is simply no way for these kinds of bugs to be found any other way.  AI is way too weak to try to find usability bugs.  They require creative thinking and sound judgment to find and a it takes lot of time.  To properly fix these bugs can sometimes require a complete redesign of the UI.

Without this kind of testing, and I am sure Microsoft still does some of this, it is impossible to catch traps like what I fell into.  msconfig did exactly what I had told it but likely some "Update" had changed the service dependencies and left at least one critical service unprotected from "disablement" and there I am F$%$^ed royally.

One thing in Microsoft's favor, there are now convenient ways in Windows 10 to provide feedback to Microsoft on this stuff.  Do they read it?  I'll never know.  They've gotten a lot of feedback from me - I'll say that for sure.

Luckily, I have had to reinstall windows (all versions) over the years so many times that I have a pretty sound way of saving my important data and being able to relatively recover from this crap - but it still usually takes about 3 days before my system is back to a state where I can stop installing stuff  and tweaking settings I need and just use it.

___

Last year I went to a Windows NT reunion and got to meet a bunch of my old work-mates.  Fellow Devs that all contributed to a product that has made Microsoft over a Trillion Dollars since we finished it.
Very few testers were there.  Only leads and managers with long time commitment to the company were invited.  The usability testers simply were no longer with us to enjoy the celebration.  I am sad for them.  I valued there input much more than most I think.  This is because it takes a human mind to make a software product truly usable by a human.

There are tools we could make and give customers to help them understand how to know which services are safe to pull out but there are too many forces that simply don't want to bother or share this kind of information.  Its just more code to break and test and more documentation to write and maintain and makes more customers fell confident enough to mess up their systems.

However I would love to see a tool that can show a map of all service dependencies and another one that shows all setting dependencies (that one may be impossible to make automatically) and a website that documents the registry (which I proposed to the microsoft.com team many years ago), the services and the settings - ALL of them for ALL versions and ALL updates of Windows - so users can make a better educated guess as to how to adjust things to their needs.
To maintain this stuff you almost have to put links or references into the code itself to help keep changes in the code propagated to the documentation and settings UI.  This is a lot more work for the dev but I think is the only way to keep the whole product from going insane and eventually having pitfalls like the one I fell into.

Unfortunately, just like the history of the automobile, eventually there just are no more ways to let the customer fix or change his own product.  Eventually only the corporate devs will have the tools and knowledge needed to tweak the configuration of an OS to their needs and for the sake of money and time, the producer of the software will be forced to lock the user out of most of the guts of the product and deliver a less flexible, less usable product to the user.  

It's just too complicated not to.

:(