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.

:(

Sunday, August 5, 2018

On Scientific Research

This is a response to a post from a friend of mine no facebook reproduced here:
Everyday, I drive by the waterfront so I'm interested in the ships I see there. Probably the coolest are the Polar Sun and the Polar Star. They are the two largest ice breakers in the US. The Polar Sun is deactivated and it's parts are being used to keep the Polar Star running.
The Polar Star has one mission... to open the channel every year to McMurdo Station. Without it, our science stations in Antarctica are at risk, since McMurdo is the largest base and supports most of the others.
There's been a push to get a new icebreaker to replace her... since if she breaks and we can't repair her with parts from the Polar Sun... we're kinda screwed.
The Senate allocated $750 million in Feb to build a replacement... and it still needs to be passed. But the Donald "littlefinger" Trump moved all the funding from the icebreaker to the border wall. So much more Making American Science Great Again.

About this article
PHYS.ORG
The rapid pace of global warming and ice melting at the poles have underscored the "critical" need for the United States to build four new polar icebreaker ships, US officials said Tuesday.

It would be very sad to see our Antarctica Scientific investment be lost due to the loss of this ice breaker.  However I think there are other things to think about before we bash Trump for this problem.
First of all, providing for the common defense, as is stated in the preamble of our constitution is one of the primary reasons to have government.  A border wall is a project well within this goal and is thus an appropriate project for federal funding.  Providing for scientific advancement could also be deemed as furthering the common defense but it is unlikely that Antarctica research will contribute much to defense technology.
Something that many Americans seem to be oblivious to is the fact that every dime extracted by taxes to pay for projects funded by the federal government are taken at gun-point.  Any funding of projects that are not authorized by the constitution is an outright theft.  This is so common now-a-days that people see it as some kind of right that the government and voters have.  They forget that all power the government has was granted to it by The People, which our unique constitution recognizes as the only lawful source of authority in a non-theocratic government.
At the end of the life of a democracy, it's collapse always happens when the majority realizes they can vote for anything and steal it from the collective whole without any seeming consequences.  Eventually there are simply not enough producers to feed the greedy majority and the system collapses economically and usually with much violence in the streets.
Our economy is failing for several reasons.  A fiat money system owned by a private corporation, a great burden of arbitrary regulation well outside of the legal limits allowed by our constitution, and a very poor educational system that has produced a generation of feel-good know-nothings that lack the common sense necessary to sustain this economy.
The average American has never read or understood the concepts behind our constitutional republic, nor have they probably ever read the Federalist or Anti-Federalist papers which explains why we have what we have.
Without this basis of understanding we find many many people simply parroting the latest memes touted by the Mainstream Media as fact and true without question.
Another point on the ice-breaker issue is that government funding of research tends to skew it in the direction of whatever beliefs or policies are in place.  Scientists are not free to explore what seems most promising but rather what is most fund-able.  Grant writing is probably the most important skill for a scientist these days that wishes to pursue her chosen area of research.  Picking a research project that bucks the idea of global warming, for example, will have a very hard time getting funding.  This is a disservice to those paying the research bills - the US Taxpayer.
Another point is that the media is commonly used when funding is needed for a particular endeavor.  Ever notice how NASA seems to have a breakthrough in finding life on other planets just at the time congress is voting on its budget?  Ever notice how these great breakthroughs turn out to be nothing after the funding is obtained?
How critical really is this ice-breaker?  It would be real nice to have $750M given to get a new one.  Seems the rich can't get together and make it happen, no lets steal from the poor instead... ever think about that angle?  It isn't just "evil corporations" that steal from people. (and they don't steal it.  They provide a product or service people are willing to pay for.)  We throw a fit when corporations get a tax break but don't realize that every dime that they are taxed simply is passed on to the customer.  The price of a service or commodity is set by the market and the entire marked is adversely affected by both taxes and regulations.
Now I am not arguing that the wall Trump is building is necessarily the right thing to do, but it certainly falls within his job description and it is a project he promised to do on the campaign trail.  He was duly and lawfully elected to do what he promised and amazingly enough, he seems to be keeping his promises.
How does the executive branch "move" funding from one project to another when congress has full control of the purse strings?  Clearly, if the executive branch can do such things, congress is not doing its job to stop this.  Let's at least point the "little finger" in the right direction.

Tuesday, July 10, 2018

Why AirBnB SUCKS

This is unbelievable.  Airbnb has a terrible website when used by someone in my niche situation.  My big handicap is that I do not want to have or use a smartphone, yet it is IMPOSSIBLE as a host to use them without one.
When I got my first customer after several months of having been signed up as a host on this site, I received a rather cryptic text message that said someone wanted to stay at my place for two whole months (a $12,000 value).  Yet when I tried to log in I found my account had been hacked by someone and my name and profile photo was someone from India.  I can't imagine why anyone would hack an AirBnB host account but they did.
I spent hours trying to contact a person at AirBnB and could not do so.  After hours of searching I finally found a phone number burred DEEP within their help system. (BTW its 844-424-7262)
I needed to talk to a person because once I reset my password and tried to regain access to my account, I found that they had added a required photo method to verify my identity.  Unfortunately, they would only allow me to upload the photo via a smartphone.  Never mind the fact that I could take a reasonable picture of someone, hold it in front of the phone and take a picture.  The fact that I could not upload an image from my computer made it impossible for me to get back into my account.  I finally had to borrow someone elses phone to accomplish this step.  LAME-O-Tech
By the time this was done, my customer had been lost.

The cryptic url you get from AirBnB in your phone text message includes 0s and Os which can be very confusing.  I had to try 4 variations to get the right URL and the one that appeared right said "You are not authorized to view this message".  Well that helps a lot.
What was also weird was that when I went to my account online there was absolutely no evidence that I had any customers interested in my place.  The support person could not explain or correct this either.
The call center guy also had to admit, I cannot use their system without a smartphone.
I will send them a link to this article as feedback to their system and hope maybe somebody there will be able to make changes so I and others like me can use their services.

AirBnB seems to run their company like US Worst/Verizon does.  An impossible maze of attempts to thwart people from asking intelligent questions and getting real help.

As a test, on their help page I tried searching for "How do I ask a question" - no relevant answers were found.

Specific fixes they could do:
1) Forget photo verification via cell phone.  It doesn't prove anything, and it can easily be thwarted.  Either let people upload an image or get rid of this ridiculous method of user verification.  Better to get them to sign in with facebook - at least then you have a face recognition algorithm working for you.

2) for shortcut URLs don't use 0s or Os - just use lowercase letters - its not a password so keep it simple for users to type in if necessary.  In fact, I would implement it so that words from a simple dictionary are used.  Imagine how simple it would be to type in https://www.airbnb.me/lovelyflowerstogether.

3) Put your support number on the root help page.  Don't pretend to be happy to help me if you hide your number.  Better, add chat support or true email support or some kind of ticket system.  It works and things don't get lost.  Maybe your customer is like me and lives way out where there is little or no cell coverage - ever think of that?  Let people really talk to you using an efficient system via multiple channels.  I can understand the cost of personal support but with a good chat-bot you may be able to still answer most questions in an automated fashion.  Hiding your support or making it hard for people to talk to you just cuts you off from you customers and pisses them off.

If I see no progress in fixing this so I can use it, I will simply have to shut down my account and go elsewhere.  Don't do this guys!  I want to use you if I can!

Note that I have a general problem with all these "middle man" rental listing websites.  A host can only manage so many middle-men and besides loosing profit on their rentals, every site is different and there is simply no way to support all the possible ways a person might offer or manage his rental.  A small fee to allow the listing to simply contain a link to the renter's website would be wonderful and I would gladly pay a reasonable fee for the listing.
If this isn't done soon, I bet a craigs-list kind of rental website will become a defacto winner and eventually dethrone all of you "middle-men".


Wednesday, September 27, 2017

How Bitcoin Makes Wealth

I have recently been getting into bitcoin and all that entails.  The big thing about bitcoin is that it replaces or enforces trust.  Trust is key to all society and is the root force that creates an economy and wealth.  These days, trust is lacking everywhere - I should know - I have lost my fortune due to people I trusted letting me down.
Criminals use trust to gain access to wealth to steal it from others.  Unfortunately these days we also have rampant crimes in high places causing rip-offs on a unprecedented scale (bank bailouts come to mind). Our fiat money systems that run the world are all based on trust and the debt they create due to breach of that trust is causing a near collapse of the global economy.
Naturally people are running to crypto-currencies to protect themselves from the impending crash.

Why is trust so important?

Trust creates relationships and good relationships promote not only more trust but economic efficiency.  Few people realize that much of the worlds economy is held together by huge trust relationships.  We get our gas, our water, and many other services from large systems of trust that often span the globe.  If trust breaks down, relationships dissolve and economic efficiency falls.  Mankind can do nothing without trusting someone else - we simply can't survive as an isolated individual.

If you are seeing wealth disappear, odds are very good that trust is breaking down and relationships are suffering.

Here are some other related ideas I wanted to share with you:

  • Justice promotes integrity and trust.  Lack of justice creates lack of trust.
  • Integrity is a track record of unbroken trust and promotes more trust.
  • Wealth is created by people working together.
  • Better relationships and more trust promote economic efficiency and thus create more wealth.
  • Wealthy people have more to give and giving to the poor promotes equality.
  • Wealthy people have more they can afford to lose and thus they have less risk or can afford to take greater risks.
  • Less  risk also promotes integrity, trust and investment and thus promotes wealth.
This is why bitcoin cannot be stopped.  Our society desperately needs trust and blockchain systems provide the ability to contract with less trust.  We still have some very difficult security issues to deal with in crypto-currency but if we can solve those issues I see a massive increase in wealth coming despite all the criminals running around these days.  Governments (being a high class of criminal in nature) will oppose this but I don't think they can stop it.  
Blockchain systems may in fact be the impetus to drive us into the millennium - a time of great peace and prosperity and wealth.
Now if we just didn't have that problem with the mark of the beast...

Tuesday, January 24, 2017

Javascript Objects - The Truth


After building a project that attempted to use an object oriented way with Javascript I found that the rules of prototyping in Javascript were very confusing.  After reading several articles that weren't really helping I found one that mentioned all the "rubbish" in articles he had read.  That led me to an experiment to get to the truth of the matter - code!
So here is the code.  Run this, observe its assumptions, and I think you will soon be on your way to really understanding Javascript objects, inheritance and prototypes.
<!doctype html>
<html lang="en">
  <head>
    <meta charset="UTF-8">
    <title>Object Test for Browsers</title>
<style type="text/css">
  body {
        text-align:center;
    }
</style>
<script type="text/javascript">
/*
    objectTest.html
*/
Object.prototype.deepCopyValues = function() {
    // returns a deep copy of this without function memebers - quicker
    return JSON.parse(JSON.stringify(this));
}

Object.prototype.deepCopy = function() {
    // returns a deep copy of this
    function deepCopyFunctions(org, copy) {
        if (org == null) {
            return null;
        }
        var keys = Object.keys(org);
        for (var i = 0; i < keys.length; i++) {
            var key = keys[i];
            var o = org[key];
            if (typeof(o) == 'function') {
                copy[key] = o;
            } else if (typeof(o) == 'object') {
                copy[key] = deepCopyFunctions(o, copy[key]);
            }
        }
        return copy;
    }
    var copy = this.deepCopyValues();
    return deepCopyFunctions(this, copy);
}
function run() {
    var o = {
        a : 1,
        d : 'string'
    };
    var o2 = o.deepCopy();
    var o3 = o;
    if (o !== o3) {
        debugger;
        return 'An object is equal to (===) a reference of itself';
    }
    if (o === o2) {
        debugger;
        return 'An object is not equal to (!==) a deep copy of itself';
    }
    if (o == o2) {
        debugger;
        return 'An object is not equal to (!=) a deep copy of itself';
    }
    o.a = 2;
    if (o2.a == 2) {
        debugger;
        return 'Changing a member of an object does not affect a deep copy of itself';
    }
    o3 = { a:5 };
    if (o.a == 5) {
        debugger;
        return 'Changing an object reference to a different object does not change the original object.';
    }
    if (o.__proto__ != ({}).__proto__) {
        debugger;
        return 'An object that is not created with new has an empty prototype.';
    }
    if (o2.__proto__ != ({}).__proto__) {
        debugger;
        return 'A deep copy of an object not created with new has a null prototype.';
    }
    function fnConstructorA(){
        this.a = 1;
        this.d = 'string';
    };
    try {
        fnConstructorA();
    } catch (e) {
        if (e.message != 'Cannot set property \'a\' of undefined' && // Chrome
            e.message != 'this is undefined') { // Firefox
            //debugger;
            return 'Calling a proper constructor without new makes the \'this\' variable in the constructor undefined. message=' + e.message;
        }
    }
    var A = new fnConstructorA();
    var A2 = A.deepCopy();
    var A3 = A;
    if ((A.__proto__).__proto__ !== ({}).__proto__) {
        debugger;
        return 'A new created object who\'s constructor has no prototype has the default Object prototype.';
    }
    if (A.constructor !== fnConstructorA) {
        debugger;
        return 'a new created object\'s constructor is the function that created the object.';
    }
    if (A !== A3) {
        debugger;
        return 'An new created object is equal (===) to a reference of itself';
    }
    if (A === A2) {
        debugger;
        return 'A new created object is not equal (===) to a copy of itself';
    }
    if (A != A3) {
        debugger;
        return 'An new created object is equal (==) to a reference of itself';
    }
    if (A == A2) {
        debugger;
        return 'A new created object is not equal (!=) to a copy of itself';
    }
    function fConstructorB(o) {    // like Object.create()
        this.__proto__ = o;
        this.a = 5;
        this.data = 'that string';
    }
    var B = new fConstructorB(A);
    if (B.__proto__ !== A) {
        debugger;
        return 'A proper Object.create() call yields an object with a prototype that equals the object given to the function.';
    }
    if (B.a == A.a) {
        debugger;
        return 'Values in a child object overshadow the same value in its prototype.';
    }
    if (B.d != 'string') {
        debugger;
        return 'Values in a prototype are visible from a child object if that value is not defined in the parent object.';
    }
    B.a = 14;
    if (B.a != 14) {
        debugger;
        return 'A value in a child object can be changed.';
    }
    if (A.a != 1) {
        debugger;
        return 'A value in a prototype of an object is not affected if a vaule in a child object is changed.';
    }
    B.__proto__.e = 'new string';
    if (B.e != 'new string') {
        debugger;
        return 'Changing a prototype\'s value within a child object affects the child objects same value if not defined in the child object.';
    }
    A.f = 'proto changed';
    var C = new fConstructorB(A);
    if (B.f != 'proto changed') {
        debugger;
        return 'Changing a prototype object value affects any child objects of it that don\'t have that value defined.';
    }
    if (C.f != 'proto changed') {
        debugger;
        return 'Changing a prototype object value affects any child objects of it that don\'t have that value defined.';
    }
    return 'SUCCESS!!!!';
}
function runTests() {
    var str = run();
    document.body.innerHTML = str;
}
</script>
    </head>
    <body onload="runTests();">
      Testing...
    </body>
  </html>

Wednesday, July 6, 2016

2016 Lameotech Award


2016 Techno Dweeb Lameotech Award goes to...
The Nikon D5200

The first camera I have ever owned that does NOT charge the battery when attached via USB to your PC.  Leave it on, and your battery will go completely dead.  Forget your charger when you travel - You're out of luck dude!

Monday, May 16, 2016

I've just about had it with Windows

I live far out of town in rural Idaho so I get pretty lame satellite internet service.  I am used to things working slow but lately, ever since the Windows 10 drive, my browsing experience has gotten so bad as to begin to be unusable.  Checking email on Chrome via live.com is so bad that sometimes when I am responding to or composing an email, I have to wait for individual keystrokes to complete in the composition window.  I know windows uses .ASP technology for its live.com site but does it actually have to go clear to the server for each keystroke?
To determine the problem I decided to switch browsers to Firefox and Explorer both were moderately better but still very slow.  So my next step was to boot up on a Linux Mint CD and see how my browsing on live.com worked from that OS - massive difference!  Probably 5-10x faster on Linux with Firefox.
While trying to figure out what was wrong with my system I did a deep scan using Windows Defender which took well over 24 hours to accomplish and found no problems.  My system has a nice SSD drive with defragging software in place and plenty of RAM and disk space.
I suspect a chrome virus using script injection on my youtube.com pages which frequently freezes up and is nearly unusable but have not found anything that finds a problem.  Looking on the Chrome debugger I see tons of scripts from all over the map but it too will lock up and prevent me from further investigation.
I used to work with an old 8080 2MHZ single processor 64k 87-bit RAM system I built back in the 70s and it was much faster than my Dual Proc Intel 2.13GHZ processor with 2GB of RAM, 64 bit OS and windows - even when simply using a text editor to code on Windows with no internet useage!
Looking at Task Manager revealed at times Windows Update pegging the hard drive with IO doing some kind of background install that just slowed my system to an unusable crawl.  I wondered if it wasn't pre-installing Windows 10 for me in the background.
So basically, my very powerful PC is more controlled by advertisers and viruses and Microsoft than it is by me.  It is clearly using a minuscule percentage of CPU power to do what I want it to do with the lion's share devoted to under-the-cover ops I have no clue about and no control over (without writing a post-graduate CS dissertation in the process).  Is it spying on me?  It is reporting my every keystroke to someone?  Is there a root kit in there doing tons of stuff I can't even see?  Why should the keyboard respond so slowly yet Task Manager say the CPU is idle 98% of the time?
Linux boots incredibly fast, and runs much faster, even when loading form a single CD.  It clearly shows me how much I am being robbed by corporate America.
So as a last effort to give Windows one more chance I decided to start downloading Windows 10 - I've been supposedly doing that for the last 4 hours but the resource monitor shows absolutely no internet activity as the windows spinning wheel goes round and round telling me it is downloading windows.  As I write this I am accessing the internet at the same time no problem.
Must be a bug.
I am very close to making the painful transition to Linux and chucking the OS I helped write into the waste basket - forcing me to abandon programs I have used for years like MSN Money and Free Cell and start completely over learning a new system.  Maybe Wine is good enough on Linux now to make the transition easier.
I hate to waste the time but Windows has become so bad I can hardly read email or watch youtube or enjoy facebook.  Personal computing should not be this way and this isn't the vision I worked so hard on at Microsoft for 20 years.