Making Windows Suck Less

You can guess from the title that I’m not a big fan of Windows.  I could be.  but Microsoft seems to be more focused on developing tech to lock out other companies that to just make the damn thing work.

When I got Windows 10, I found a number of issues that would bring my system to its knees.  Turned the features off and, voila, everything works much better.

Superfetch

Suppose to optimize the disk to make everything load faster. My disk seems to be plenty fast if I don’t waste time optimizing it.  For whatever reason, when I turn this on, everything slows down.

Windows Search

This feature is suppose to create some kind of an index that speeds up searching.  In reality, it keeps your system busy building an index you will almost never use.

Background Intelligent Transfer Service

Background Intelligent Transfer Service “facilitates asynchronous, prioritized, and throttled transfer of files between machines using idle network bandwidth” according to Wikipedia. Seems like a good idea. It also seems like the computer works much better with it turned off.

 

Windows Update

For some reason, seems to occasionally lock up and use a tremendous amount of resources while not accomplishing anything.  Also causes your system to randomly reboot.  I understand the advantage of keeping everything up to date to protect from viruses and such.   Needs to be done in a way that does cause the system to suck however.

Summary

If you’re having speed issues with your Windows machine, try disabling these features and see if it improves your performance.   If you’re feeling really energetic, try them individually to see which makes the greatest difference, or re-enabling one-by-one make sure that each does really hurt your systems performance. I certainly appreciate any feedback you give me.    For me, I just like my system to work and turning these off got it there.  Don’t want to waste more time on it.  That’s (should be) Microsoft’s job.

Simple HTML DOM Treewalk in Javascript

/*
// non-query dom functions used
//   .nextElementSibling - property has the next sibling
//   .children - property has all children
//   .parentNode - property contains parent element
//
// Algorithm:
//   to move to the next element in the tree
//     if there are children: move down to the first child
//     if there are siblings: move to the next one
//     if there are no siblings: move up until on a level with siblings, them move to the next sibling
//   Called repeateedly with the current node, this performs a pre-order traversal.
*/
function moveNext(elem) {
    // if there is a child, move down
    // children returns child elements, but not text nodes
    if (elem.children.length) return elem.children[0];

    // if there is a sibling, move across
    if (elem.nextElementSibling) return elem.nextElementSibling;

    // move up to the first sibling of the next parent with a sibling
    next = elem.parentNode;
    while (next && !(next.nextElementSibling)) next = next.parentNode;

    // if we found a parent with a sibling, return the sibling
    if (next) return next.nextElementSibling;

    // else we have walked the whole tree, return null to indicate completion
    return null;    // which is also what next is
}