Monday, June 30, 2014

Windows Annoyances


Windows Annoyances

Over the years, I have been keeping a list of features of Windows that I find annoying. Some are just the brokenness of Windows while others are deliberate choices. Yet, most of these annoyances can be fixed. It just takes someone determined to fix them to do so.
Sadly, I don't think most of these annoyances will ever be fixed if for no other reason than "it's how it's always worked before". There is a real concern of breaking the way things have worked. Hence the lethargy demonstrated in the glacial adoption rate of Windows 8. Furthermore, most Windows users will not realize these features are problems because they know no better.
Here is my current list of Windows annoyances in no particular order other than it is the order in which they came to mind.

1. Dialogs Are Not Resizable

This is my number 1 pet peeve with Windows. So many times I have been presented with some dialog box, usually with information I really need, but cannot see all of it because the dialog is not resizable. This is so stupid it is inexcusable. It is the result of laziness and a don't-care attitude by Microsoft engineers.
This could easily be fixed by modifying the implementation of the dialog boxes themselves within Windows and application writers using those dialogs whenever possible.

2. Poor Mouse Wheel Integration

More often than I like, I try to use the mouse wheel to scroll a window I am in and it simply doesn't work. There is no integration with the mouse wheel. This doesn't make sense to me. I thought this would be something inherited by the window on creation and scroll events would be delivered like paging or something else. It makes no sense that it is not an easy integration with all apps.
This could easily be fixed by integrating the mouse wheel into the underlying GUI components so that all windows inherit the feature automagically.

3. Window Scroll Requires Focus

This is in my top 5 annoyances. I am used to just pointing to a window, but not clicking it, and scrolling with the mouse wheel to view the contents underneath the upper window. This is how the major Linux UI systems work. But not Windows. You have to grab focus on a window to scroll it with the mouse wheel -- assuming it has mouse wheel integration which is NOT the default for Windows.
This could be easily fixed by modifying the underlying GUI components to accept the appropriate events and default to sending and handling mouse wheel events in the window being pointed at.

4. Window Title Bar Grab Is Slow

Often I grab a window by the title bar and try to move it only to find out I haven't really grabbed it yet. There is often a noticeable lag when you try to grab a window on Windows like this. It lags and therefore doesn't move with your pointer. Instead, it either just sits there, or some weirdness ensues from your action depending on the application.
I'm not sure how to fix this. Part of it is just based on Windows being sluggish. However, if the GUI events were buffered, perhaps they could be handled anyway.

5. Indexing Seems To Always Run

It seems like no matter how many times I turn this off, the indexer still starts and runs for a while. I don't know if it being reset by some Windows update, started by some service, or its just the NSA spying on me. At any rate, it sucks down CPU and slows the system down. Is it really the indexer? Is it something else sifting through all the files?
This could be fixed by adding one simple user config item in the control panel to globally disable/enable indexing -- or whatever it is running -- once and for all.

6. No Middle Mouse Button Copy/Paste

This may not seem like a big deal to you Windows guys, but it is a big deal to us Linux guys. Imagine if you will -- and you have to imagine because you can't do this on Windows -- that you can simply select text you want to copy in one window, then point to another window -- it doesn't even have to be in focus -- and simply middle click to paste the selected text into the target window. No separate copy. No separate paste. Just select and click and done. I really miss that.
This could easily be fixed by adding in the middle mouse button copy/paste event in the underlying GUI implementation and all windows inheriting it.

7. All File Copies Use Buffered I/O

This is the reason why large file copies on Windows drop to a crawl. To the techie, the reason is the default I/O type for copy operations on Windows is buffered I/O. As a result, large file transfers eat up all the cache, increasing overhead and slowing things down. They don't even benefit from caching because they are huge files. There are utilities and Microsoft finally added an option to XCOPY in Windows 7 (the /j parameter) to skip buffering, but the default is to buffer. Therefore the default is to crawl. Or possibly even just fail randomly on network file transfers.
This could easily be fixed where the size of the file to be copied can be determined. Simply have the copy tool check the file size. If the file is greater than some number, like 100 MB, then always default to unbuffered I/O.

8. Unique Flash Drive Driver Installs

Probably in my top 5 annoyances as well. It's just annoying and really isn't a problem. Well actually, it is a problem. Here's the situation. You plug in a Centon flash drive for the first time. Windows says "hold up pardner, gotta load me some drivers" which takes time. It loads said drivers from *somewhere* and your device is presumably ready. Now you plug in a Patriot flash drive for the first time. Again with the delays and driver loading. But why? It's just a flash drive. They all work the same. On Linux, there is one driver that handles nearly every flash drive on the planet. Are Microsoft engineers incapable of doing that? Or is there something else going on?
This can easily be fixed by just not doing it. Obviously Windows can figure out its a flash drive once it's plugged in. If it's just a regular flash drive, just use the default base driver and treat it as a flash drive and don't tell me you need to load something specific.

9. Mysterious Processes Holding File Resources

How many times have you tried to eject a flash drive from Windows only to be told "Not so fast, chum. Somebody's holding an open file there!" Or whatever the error message says. The point is, too often mysterious processes that really should have nothing to do with your flash drive seem to hold an open file on it so you can't remove it without risking corruption. Just lovely, isn't it?
This could be fixed in two ways. First, if there's not current I/O on the path to the flash drive, then it's probably just being held open but not being used. So just close the file and let the app deal with the error with a closed file. Second, fix the underlying problem of Windows not being able to manage its file descriptors well enough so that this kind of thing doesn't have to happen at all. It's OK to close a file that must be closed even if some service or application is still holding a reference to it.

10. Can't Shut Down Quickly

This is related to so many other problems with Windows. You're done for the day, you need to shut down your laptop and get out of the office quickly to do whatever, and when you click shut down… you go into a long wait. Sometimes this takes several minutes. And don't give me the same old lame excuse about "applications need to completely properly" and other excuses for bad programming. The simple fact is, Windows has to give apps and services longer to exit properly because Windows doesn't keep things tidy in its own house.
The interior of Windows is so complicated you can't keep things tidy. I suspect this is due to years of rushed and bad security patches. It is also because of the need for rushed and bad security patches to keep some appearance of trying to do something about its dismal security. All of that junk that is running in the background, monitoring, filtering, sifting, reporting, and who knows what else, takes time to be stopped properly. Stop it too abruptly, bad things happen.
There is a way to fix this and that is that when the user requests shutdown, and the system is waiting for all processes to exit, give the user a "nuke" option that when pressed, kills all the processes anyway, releases everything, and shuts down like the user intended.

11. Generally Sluggish UI Responses

It seems like every time I click on windows and dialog boxes -- or try to resize things -- Windows has a noticeable lag between when I start the action and when it performs the action. This could be for many reasons but my gut feeling is that this is primarily caused by software bloat. Windows is simply running too many lines of code too often.
Every action, every click, has to descend through a myriad of layers of software required because of Windows GUI components being mired in class upon class in hundreds of separate objects in the current trend of software design: object oriented to the max.
I don't know how to fix this without a rewrite of the GUI components and a restructuring that eliminates some of the intervening objects and layers. Surely something could be improved.

12. Every Flash Drive Searched For Playable Media

I simply don't believe that people only use flash drives to move music and videos around, but judging from the default behavior of Windows, that is what their designers think. For some reason, Windows just has to search that entire 64 GB flash drive of source code repository backups, relational databases, and thousands of zip files you are archiving because there just might be a song or a cat video somewhere on there. Seriously, just stop it. I don't want my media searched.
This can be easily fixed by providing a single control panel setting somewhere that disables/enables the feature.

13. Slow Boot Process

Windows has always had a notoriously slow boot. There are many reasons for this and without a fundamental rewrite of Windows, it won't get much better. You can throw bigger, faster hardware at it to compensate, but that is all it is, compensating. Put Linux on that same hardware, and its still booting faster than Windows.
So why is it so slow? Partly because Windows has an overly complex design and implementation. And partly because there have been so many rushed and bad patches applied to the code over the years. And also partly because Windows is so inherently insecure, we are all required to run some sort of anti-virus software that gets bigger and bigger and has to do more every year. It doesn't have to be this way.
This could be fixed, but not easily. It would require some rewrite of the fundamental parts of the core of the operating system, but it could be done. Another thing that could help is to stop running all the services it does by default. Enabling everything it does by default makes sense to some guy who is thinking about helping a remote user "some day, some where", but it does not make sense to the average user that will never have a Microsoft technician log into their machine remotely.

14. Booted Is Not Really Booted

In an attempt to solve the slow boot problem that has plagued Windows forever, the programmers have used a trick to make the users think they are booted when they are not. So basically, the do the minimal amount of work necessary to get the user to a login prompt. Once there, you can login, but the boot is still happening in the background. It takes more time, in some cases several minutes, to actually complete the boot process. Don't believe me? Boot up and immediately launch Firefox browser or something not part of Windows itself (like Internet Explorer) and see what happens. It will take a while.
This could be fixed, but I'm not sure it would make things better. Without fixing the underlying issue of a slow boot time, it would be pointless to fix this. If the underlying issues were fixed, this feature would no longer be required and thus is fixed.

15. Windows Media Player UI Is Horrible

The few times Windows Media Player accidentally gets started when I'm using Windows, and then I actually try to use it, I cannot stand the UI. It's like there's something messed up with the controls for the main display. Columns don't resize like you would expect. Also they put limits on the resizing of some elements. For example, if you want to resize the right side pane that displays a playlist, you are limited to how wide you can display it.
Furthermore, the UI is just fouled up with a lot of crud. In addition to the Windows title bar, there's a menu bar, some kind of location bar, and then the headers to the columns. It takes up a full 158 pixels on my display. That's ridiculous. Let's also not forget the codec nightmare of never seeming to have the correct codec to playback whatever it is you want to play. VLC it's not.
This can be fixed by redesigning the UI of Windows Media Player and incorporating more codecs by default into its installation.

16. Triple Click Doesn't Get Entire Line

Perhaps most Windows users won't think about this one because it's something I got used to in the Linux world. The triple click feature exists in some Windows apps, like Word, but it is not common. On the Linux desktop, this is just something that exists everywhere.
This can be fixed by adding the feature into the default mouse click handling components of the UI.

17. Reboot Required For Memory Release

Technically, it's not, but practically it is. No matter how many times you try to clean up a running system, you eventually run out of memory and have to reboot to get everything cleared up correctly. This tells me there are memory leaks in the system and the OS is not capable of managing resources well. And if the OS can't effectively manage its resources – like memory – then you have a broken OS.
This can be fixed by fixing the bugs in the Windows kernel and specifically the memory management routines.

18. Consumes A Lot Of Memory

For whatever reasons, Windows is just getting bigger and bigger on disk. A typical Windows 7 base installation ends up being anywhere from 20 to 25 GB on disk. Furthermore, a 64-bit installation requires a minimum of 2 GB, but don't expect that to perform very well. You need a minimum of 4 GB to make it useful. Better yet, get 8 GB so you can actually run multiple apps at once without the system coming to a crawl.
By comparison, a full Linux Ubuntu or Mint install takes up about 6 to 10 GB depending on the applications you have installed with the distro. Note, that is the size of the OS and applications. For Windows it takes those 20 GB or so just for the OS. Also in Ubuntu or Mint, you can easily run the 64-bit OS in 1 GB of RAM. Don't try that on Windows. It won't work.
I don't know how this can be fixed in Windows. Someone would have to completely redesign Windows and define what constitutes the base OS and leave a lot of the crap for addons which in my opinion would very seldom, if ever, get installed on a user's machine.

19. File Open Dialog Confusing

Let's say you go to open a file in some app on Windows and you know you put this app in a folder under your personal "home" folder, but when you see the file open dialog box, your home directory is not one of your choices by default. Wait a minute... what? Seriously? My own "home" folder is not one of the choices?
So here is the essence of the problem. The open file dialog shows you "Favorites", "Libraries", "Computer", and "Network" folders. But unless you make your folders favorites or libraries, you are forced to go all the way to the top of the file system on C or D drive – or wherever it is – and then navigate down to your own home folder and then find your file.
This can be easily fixed by simply making the user's "home" folder to be one of the default selectable locations.

20. SuperFetch Often Hijacks System

If you are unfamiliar with SuperFetch, allow me to summarize it. SuperFetch is a tool that allows Windows to cache files it thinks might be needed in RAM to speed up access to them. That's actually a good thing. I don't have a problem with the idea of SuperFetch. My problem is with its implementation.
The problem occurs when Superfetch goes off into the weeds, so to speak, and consumes nearly all of your CPU. That's when it becomes a problem.
This can be fixed by spending some quality time debugging the problem and fixing SuperFetch.

21. Anti-Virus Software Required

We all hate viruses. We all hate the bloat and impact to our systems that occurs because of viruses and their cure, the dreaded anti-virus software. The simple fact that really cannot be escaped or denied, is that Microsoft is inherently insecure. Because of that inherent insecurity, anti-virus software is required not for technical reasons, but rather it's required out of self-defense.
Microsoft has worked for years to solve this and have not solved it yet. They have applied numerous patches and bandages to improve the defenses of the OS and have plugged a lot of holes. There are still far too many.
This can be fixed by Microsoft continuing their improvements to the OS, but would be better solved by redesigning base parts of the OS that protect numerous other components.  

22. App Crash Leaves Sockets Open

When an application is launched that opens sockets for some network connection, and then that application crashes unexpectedly, the sockets are left bound and open. This can interfere with restarting services and other user application issues.
This can be fixed by modifying the network stack code to detect loss of socket owner and close the sockets.

23. Weird Limitations On Naming Files And Folders

There are a number of annoyances regarding file and folder name limitations. For example, you cannot create a file or folder named "con" or "prn" because Windows thinks you are trying to access the special device names. Another limitation is you cannot create a folder with a name that ends in a period like "apple." because Windows can't handle that pattern for folder names.
This can be fixed by updating the file system components to eliminate those limitations.

24. Uses Backslash ("\") As Path Separator

Windows is the only current operating system that uses the backslash ("\") character as a path separator when constructing folder paths. All of the Internet, all Macs, all Linux, and all Unix machines treat the backslash character as an escape character and use the forward slash ("/") character as the path separator. Microsoft opted to use backslash back in the 80's in MS-DOS 2.0 because the forward slash was being used already for command line options. This that was over 30 years ago. It is time for Windows to grow up.
This can be fixed by modifying the command processor and path handling components to switch the path separator to "/" and change input parameter switches to something else, preferably the hyphen ("-"). That would bring consistency with the larger Internet. It would be fairly trivial to support both schemes for a transition period of a couple of years before a complete switchover.