Wednesday, March 3, 2010

Freedom of expression

Recently (~ 2 years) I have been considering small, usability-related changes to the UI of modern systems. In particular, I have thought along the following lines:
  • Not mouse dependant: I don't like to switch from keyboard to mouse and back often. I would like to see better use of the keyboard in graphical interfaces.
  • Minimalistic, yet eye-candy design: Some strides have recently been made in this direction.
  • "Advanced" window management: And I don't mean live previews or transparency - details below.
  • Filesystem changes: Isn't it about time we used some of the knowledge painstakingly gained in the last few decades?
I shall now describe some of the "features" I would enjoy seeing.

1. Getting rid of icons and shortcuts
Desktop icons and shortcuts are old-fashioned. They provide (at the same time) both too little information and too much information. Too much information because of various "document preview" features around, which attempt to render a representation of the contents into a small image. Try to distill a movie (or better yet, a song) into a 64x64 icon and see how well you do. Similar for text documents.
And even as we get richer, bigger and nicer-looking icons, all we learn from them is that it's a video/music/picture/document/text file and its name.

"But how will I launch my programs then?"
Simple: Take a look at the dock in Apple operating systems or the new Start Menu in Windows. Type in a few letters of the program name and get a (short) list of matching items.

"But what if I can't remember the program name?"
Either: a) include description in search database, or: b) fall back on some form of menu structure.
Frequently used list also helps.

"How about my documents?"
Similar principles as above.

2. "Advanced" Window manager
A lot can be said in this topic, but I will limit myself to a few examples of usability features that I, personally, would like to see.

Window positioning: When I start a new application, I would like it's window to open a little more intelligently than "where it was the last time". If the desktop is empty (ie: starting the first application of the day, or having minimized everything else), the new window should open maximized on the primary monitor. If there are other things happening, the window should open somewhere "out of the way" - below everything else, on a secondary monitor, in a large free area on the desktop, etc. The rules for determining whether I want the window to pop up in the center or not are relatively simple:
- Did I wait for the application to open or did I immediately click somewhere else?
- Am I continuing my work in another window while the new application is loading?
- Did I minimize a lot of stuff before starting the new app?
- How did I use the app previously? Did I switch to it immediately as it loaded, or did I leave it in the background for a while?
One of the key problems right now is "focus stealing" - Windows that open while I am doing something else tend to take keyboard and mouse focus and thus disrupt my work.

Message queue: I don't like flashing (or shaking, or blinking, or noisy) windows and buttons. If a background program needs my attention, I don't want it to flash in an annoying color until I click it - because it distracts me and I end up switching to it _immediately_, disrupting my work. Flashing and similar should be used only for ground-breaking-world-shattering-computer-on-fire emergencies. Nothing else. Windows which have important information for me should put themselves into a line - queue - which I can check periodically to see if there is anything new. The order could be based on time of the message with possible added priority. The queue would look like small live-previews (or program icons) in a nice bar, which could be configured to be always visible or hidden under a small icon, which would change unobtrusively when it had something to say.
In short, I would like to think along this pattern:
"Hmm, I wonder if anything new has happened to my programs, lemme look in this corner.."
rather than:
"I just finish typing this-... *ding* WTF?! Why did [insert app name] jump at me just now?!?"

Window work stacks: I often have to open a bunch of windows related to a task, perform a series of steps in each of them and then close them. A nice example is setting up a classroom of computers - installing new software.
So I am able to start all the computers via script and copy the files to them over the network with another script, but as the installation is only a few steps I am too lazy to script that too and decide to "click it through". So I open a bunch of VNC connections and start clicking through the installation on each machine. I go a few steps at a time, because sometimes software takes a while to install and I don't like to wait on it while I could be setting up another installation somewhere else.
At the moment what happens is: I start a lot of VNC windows and begin the installation process in the first one. While waiting for something to finish, I switch to the second window and start the installation there as well. So on till about the fourth of fifth computer, which has a "Pendind restart because of updates". It needs to be restarted before I can install anything on it, so I initiate the shutdown and move on. This usually happens on a few more computers.
While they restart, I finish the first install steps on most computers and start the finalization steps on the first few. Meanwhile, the restarts are done and I start the first installation steps on the newly restarted computers. But whoops, one of them needs a component that somehow wasn't installed over the domain group policy, so I need to do that before installing the program. Meanwhile, the rest of the computers have finished installation and need finalization steps, while the first few computers need testing to check if the new application is adequately installed.

Let me see you try and keep in mind the states and progress of ~20 machines while performing approximately the same tasks on them.

Solution? Window stacks. Create a "dock", "area", "margin", "however-you-wanna-callit" on a part of the screen and designate a few "piles" (Init, Prereq, Progress, Final, Test). The names would be chosen by the user when he creates the stacks. Use all the VNC windows in maximized mode and simply when a part of the steps are done "throw" the window into one of the piles appropriately. When you're out of windows, click on one of the piles to get a small preview of everything that's in it, pull out one of the windows and continue - from the pile name you know exactly where in the process that particular window is and where it should end up after you are done.
I am sure you can come up with many examples of where such dynamic distinctions would come in handy.

Meta (database) filesystem: DBFS is nothing new, the idea has been around since 1998 (as far as I am able to determine from various published papers). A short description:
Use a flat file space (all files in one directory - the root of the filesystem) and use descriptive metadata tags to enable fast and easy searching among the files. Some of the tags would be appended by the operating system automatically, such as:
- Date created, modified, used
- File type (image, sound, etc)
- If image, sound or movie, tags for specific codecs used
- Author/user
- Source (from URL address, USB key, CD,...)
- Operation flags (Executable, library, cache, index, readonly...)
- Associated program name (so it's easy to find all files related to a program)
- Opens with "program"

Additionally, the user could enter pre-defined tags, such as:
- If image: where was it taken, who is on it, name of the event
- Documents: Title, summary..
- (more depending on file type)

On top of all that, the user could create own meta tags to mark the files in any way imaginable.

Locating files would be done through search - all-in-one search bar that searches for all tags (see above commend on locating programs), or an "Advanced search" that allows the user to select only desired tags to search by.

Let's take it a step further: Replace the word "file" with the word "object". If searching is usable enough, we do not need a "flat file namespace", but rather an "object store". We can use advanced database techniques that are being employed (successfully) all around the world to create and index the contents of a disk.

"But how can I copy all the files related to my project to another machine?"
Either you search broadly and click through the list selecting only what you need, or you were smart and used a tag with the project's name on all the objects belonging to it. The IDE could help us here by appending the tag automatically. Then simply exclude the objects with tags "temporary" and "generated" and you're set.

"How to delete all the files with user settings?"
Search for tag with program name, then exclude all objects tagged "settings".

"Won't there be entirely too many tags on any given file after a while?"
Perhaps, but if the OS sets nice, usable policies and programs stick to them it should be fine. Plus, with advances in hardware and databases this will not take a lot of space or slow things down significantly. I for one am willing to risk it.


More on this in the future (perhaps).

Tuesday, December 29, 2009

FREE Windows 7 upgrade

So, here I am picking up some new gear for my company. The bigwigs decided to go all-out with IBM (currently Lenovo), because it 'is a big company', it is 'more stable, reliable and secure' and the 'black boxes look kinda neat'. [List more stupid reasons here].
So the overpriced computers we get come with Windows Vista licenses (business or ultimate), which we never use. I wonder how those negotiations went:
Bigwig: "Um, we'd like to buy 250 PCs please."
Lenovo: "You must take *these*. Windows Licenses included."
Bigwig: "But we don't really need Windows, you see... We have this Volume Licensing-"
Lenovo: "Silence! I have SPOKEN!"
Bigwig: "Okay" :O

And there you have it. After a few years there are about a thousand license for Vista just lying around (you're not allowed to use them on anything but the original hardware they came with).
So, today I figure I might try and get a Windows 7 upgrade for a few of them, so that I can start testing some of our applications. There might be some legal/licensing issues here, but I figured that I may be able to get a CD-KEY that would work for a bit until we have to go out and buy more volume licensing to include Wind0ws 7.

Luckily Lenovo is offering *!_FREE_!* Windows 7 upgrade for certain customers.
If only it were so easy.

It seems they are handling their upgrades through another company - Mentor Media Corporation, who take your information, serial numbers, proof of purchase, etc, and then send you a DVD over snail mail. Guess what? Costs 18€ apiece for my country. I hear that it's even worse for some (up to 35$). Each has to be ordered separately, and each needs its information filled out.

Last time I checked 17.47€ != 0€. In fact, 17.47€ > 0€.
So, the !!#*_OMIGOSH FREE_*#!! upgrade of a crappier OS to a merely crappy OS is not really free. Sure, you don't pay Microsoft, but you pay someone else. That's not my definition of free.

*GASP* so Mentor Media has some postage expenses. SO?! Give me my ISO over HTTP (use bittorrent if you're poor on servers) and then send me the CD-KEY in my email, sheesh. What is this, the middle ages?

As it happens, I have recently tried upgrading a friend's laptop (no legal issues here, since it is personally bought from a store). Acer also uses Mentor Media. So does HP and most others I could find.
Did the guys at Mentor Media land a sweet deal with these upgrades or what? Quite likely the PC distributors pay them some "fee" for their "service", then the users pay them some "postage and expenses". Maybe even Microsoft pays them something as well. Quite lucrative.

So, in conclusion... Your *!FREE!* Windows 7 Upgrade is not really free. (It is however, somewhat cheaper than a store bought version. Remains to be seen if there are any "special cases" in those EULAs, though.)

Remember - the software companies and their "subsidiaries" are not really there to help you use your computer more productively. There are there to take as much of your money as they can. And some hard data about you as well, cause that sells nicely too.

Wednesday, June 24, 2009

Some things I don't like about Windows 7, Part 1

Hey all, I'm back after a prolonged absence. I have acquired some fresh material for my rants and I will start with the hot topic: Windows 7.

If you haven't heard of it yet, you must be living under a rock, because Microsoft is desperate to sell sell sell. The sales pitch certainly paints a rosy picture, but what is it like live?

Well, I have been using it seriously on my home (gaming) computer and at work. In fact, I have completely replaced Windows XP. Below are listed some of the nice improvements, which should have been made years ago:

  • Driver installation - Aside from the network card, Windows Update now provides most drivers you are likely to need. There are still some strange pieces of technology around, so don't throw all your driver discs away yet. But the most common configurations are supported.
  • Networking stack - Windows has finally become less open on the network side. No longer will you be exposed to all dangers of the internet world when you  connect to that free, open wireless at the airport.
  • User interface - Although still plagued by stupid decisions, the GUI is at least a bit more usable, especially if you use the hardware accelerated features - previews and smooth animations. Let's face it, now Windows at least looks modern.
  • Installation - The installation wizard doesn't require constant supervision anymore. Now you can set the settings and leave it to work. It is much faster as well.

But, unfortunately, the Windows version number isn't 7.0 (at least at the time of this writing), but rather 6.1. This means that the actual programming code you receive is slightly improved Vista (which is in itself heavily modified XP). Some oddities have persisted and there is a number of new problems. Let me try and capture some of them.


Slow, large and unstable

For the past couple of years I have felt as if speed and efficiency don't matter anymore. Windows 7 continues this trend of "If it isn't massive, it isn't complete" mentality. The installation is supposed to take 16 GB for 32 bit and 20GB for 64 bit version. That is huge. The amount of information in 20 gigabytes is phenomenal. You can save 5 full DVD quality movies in that without compression. In estimation, that is 20.000 thick books, without compression again. So, what is in Windows that takes up so much space?

Here are the biggest folders in Windows directory:

  • Assembly - approx 1 GB. These are the libraries of objects and functions for the .NET platform. Amazingly, if you install .NET 3.5 on Windows XP, the download takes about 120 Mb.
  • System32 - approx 1.7 GB. These are supposed to be core operating system files. At 1.7 GB that is some fancy operating system indeed.
  • SysWOW64 - 1 GB. The name is completely misleading, as there are no 64bit DLLs and executables in here. All code, 32 and 64 bit is in the System32 folder. WoW64 stands for "Windows on Windows 64", meaning that this folder holds the necessary files to run 32 bit applications.
  • WinSXS - 5.8 GB. This is a copy of the entire installation DVD. The idea behind this is to make it easier to install additional windows features and components without needing the original media.

So, if we exclude the installation files and hope for the best case scenario, Windows 7 installation boils down to about 9 GB. That is larger than many triple-A games on the market. I have for you one simple acronym to describe this state of affairs: WTF?!

Lots and lots of shiny graphics plus bad programming equals lots and lots of stuff in your computer's memory. That is why Windows 7 likes to have about 1 GB or RAM for itself.

I've seen it go as low as 700Mb (at startup), but that was on a laptop with only 1.5 GB of RAM in total. On an average computer with 4 GB of memory, Windows 7 will never start with less than 1.4 GB. I have tried disabling everything I dared, completely crippling networking and GUI, but the memory usage at startup never went below 1.2 GB. How is it that the same 64 bit version of Windows 7 takes up almost twice the space on different computers? Do I need 700Mb worth of drivers? Someone seriously failed here.

Interesting fact: Ubuntu linux on default installation with desktop effects enabled takes up 200Mb of RAM when it is done loading - and the number doesn't vary by machine. It clearly is possible to look shiny and be memory efficient.

As for speed, Windows does look acceptable at first, but with a few months of installing tools and programs and with some disk fragmentation it takes forever to do simple tasks. During a certain period of my experimentation with Windows 7, the laptop took noticeably longer to start up every day. But I will not go into detailed performance benchmarks - for me what matters is that I get stuff done. So the speed I am measuring is not related to hardware, but rather the speed with which I can work. This kind of speed has everything to do with GUI design. Let me give you an example:

Upon connecting the Windows 7 laptop to my home network, it asked me what sort of firewall profile should apply. Not paying it much attention, I pressed enter to accept the default. This is the most restrictive setting and as a result, no way of sharing worked. This is good - it saves the inexperienced or stupid users from themselves. But then I wanted to change this setting, upon which Windows refused to "recognize" my network and insisted it should be public, since it is clearly unknown. No GUI option that I have become used to seemed to work. The problem was apparently caused by my router, which isn't IPv6 compatible, so after disabling IPv6 for that network connection, it suddenly was recognized. I ended up spending 30 minutes searching for a problem and then correcting it, because Windows 7 is so safe that it protects me from myself, even if I know what I am doing and how to do it.

Going on with another example: Living in a country with a non-standard character set you can expect that all the keyboards I am able to buy are modified. They use the SI layout, which I don't like very much. But occasionally I need those special characters for typing formal letters in my language. In Windows XP, we could press Left Alt + Left Shift to change the layout. In 7, I somehow ended up with 2 "locales" - EN and SI, which both have the US keyboard layout. The only way to change the layout now is to click the keyboard icon in the tray and select the layout I want. I have been unable to correct those settings, so changing the layout takes me a bit longer. 

You'll say: "A few clicks? That's nothing." But as my other computers work properly, those few clicks turn out to be a few minutes as I forget this anomaly and try to use the old shortcut method, only to be baffled by it not working. A few minutes spent in such a ridiculous fashion every day doesn't improve my mood.

Stack together just 10 or 15 of such time-wasters and you end up doing nothing except battling with your operating system so you can do your job.

I am running out of time here, so the next part with contain a short paragraph on the amazing stability of Windows 7 and the continuation of this rant.


Oh yea, by the way, this is a rant, or didn't you notice? :)


Tuesday, September 16, 2008

SharePoint Server 2007

You may have caught my "scepticism" about Microsoft technology. To say the least, I am not "wildly enthusiastic" about anything that comes from the big M.
So, a couple of weeks ago I was asked by my company to try and make a specific web application in MOSS 2007. (Microsoft Office Sharepoint Server 2007). It was a fairly simple matter, so I agreed. It being the latest and greatest version of the particular software, I went into the project with an open mind and high expectations.
To my surprise, the install went pretty smoothly:
Windows Server 2003, Adding it to domain, MOSS 2007.
So I made a first draft of the application using nothing more than web-based editing tools of the MOSS. Great job. 
The first request by the users was to "translate" the pages into the local language, since people aren't exactly fluent in english.
A long and exhausting search over the microsoft website led me to believe that I needed to buy the language pack, but a short and painless google search led me directly to the file on the microsoft website.
Install it, then look for the option to change interface language.
Another long search later I find out that a Web Application language cannot be changed after it has been set up.
Luckily, there wasn't very much work put into it by that point, so I erased the whole thing and started again, this time selecting the correct language option when creating the site.

It was running in 3 days (total), but there was something odd going on with the server:
Every morning when I came in, the thing was freshly rebooted. Event logs showed me mysterious BSOD crashes. It took me over a week to determine the fault: CPU.
Yes, a bad CPU which worked fine under moderate loads but caved in under stress. So, my first question was: "How to move the entire MOSS + application to antoher PC?"
I quickly made backups (new ones) and uploaded them to a safe spot. Then I figured I would use the corporate Symantec Ghost, my company had purchased.
WRONG!
After booting into the new PC with old system, I discovered that the Domain was unaccessible, since the PC name didn't match the machine account in the ctive Directory. Well, remove PC from domain, change name, add PC to domain.
Sharepoint dies. The web application names are wrong, database server is wrong.
A few days of trying to find the settings and all, reinstalling MOSS, trying to restore from backups - to no avail.
Lacking other options, I wiped the machine clean and went about reinstalling the whole thing.
Windows 2003 Server, Domain, MOSS 2007.
Gues what? It doesn't work from a clean install!! (not even the basic pre-loaded sites)
A few reinstalls of MOSS 2007 somehow hacked it together (dunno why it started working all of a sudden).
So, restore the web application from backup? Nope.
The restore process fails at random points due to:
  • Cannot connect to DB server
  • Wrong permissions on Filesystem/DB server
  • Random .NET exceptions, which I didn't note
Plus the very annoying thing about backups and restores:
When you choose the settings for backup/restore, it inserts a "Timer job" into the scheduled tasks and tries to exec it about 30 seconds later. If it fails, you need to find the log of the timer job somewhere in the guts. So you correct the error and try to re-do the backup. The Job cannot be restarted, so you go into "Operations" and try to create a new backup/restore job.
WHOOPS... AFTER entering all the data, it tells you that _A_ backup/restore job already exists, and you need to delete the old one before creating a new one.
It is amazing how counter-intuitive that is. (I had to enter the restore details about 17 times with only about 12 restore attempts)

Finally, by a miracle it works.

Do you think that was the end of my problems?
Read on...

A couple of weeks into operation, I decide to upgrade the RAM on the machine, since it is working dreadfully slow.
I add 1Gb, unaware that one of the modules is bad (it was fine a week ago in another PC, tested with memtest86).
I get a BSOD while loading windows, I quickly shut it and remove the RAM for testing. Finally, having no more supply I decide to stick with 1Gb from before + 512 module that works.. better than just 1Gb.
After booting the machine up - MOSS site almost works. By almost I mean that some elements display OK, others show "" (in my local language - which is a great help in searching for the error). Some people had similar issues, but they were either a) not similar enough to apply to me, or b) Had no answer as to the solution.

A full day of hacking later, trying to make it work, I find the problem:
Sharepoint Server can't log on to SQL server, but ONLY for the Configuration Database, the rest seem to work ok. The user in question is NT AUTHORITY\NETWORK SERVICE, and after checking all the permissions and mapping and server roles, I am unable to make it work.
So here I am, reinstalling MOSS and hoping it will work, but I'm 90% sure that I will need to reinstall the entire thing from scratch again. In both cases I will need to do the backup restore hassle again, I think.

In my own words: Installing Windows 2003 Server & Sharepoint 2007 is like pushing a ball up the pyramit to the very tip.
Maintaining such a configuration is basically trying to keep the ball on the pyramid tip.
With the latest correction: It's not a pyramid, it's a freaking cone!

Give me Apache any day of the week.

Saturday, July 12, 2008

Support pages in need of support

As a hardware and software user I enjoy being up-to-date on all things. Staying updated in the hardware department is just a matter of money, so I will not write extensively about that. The primary concern right now is the software.

The source of new (and, in some cases, improved) software is usually the vendor's website. As a rule, I never install the drivers from the CD or DVD that arrived with my hardware. I also never keep "archives" of drivers which I can re-use when re-installing the OS. What is the point of keeping a CD around for two (or more) years just to install the outdated software on it, which usually causes problems with newer versions of OS, when there are perfectly good 100M and faster internet connections available to me?

And here come the problems.
To make sure you understand: I don't mind the pages changing, I don't care that the company was purchased by another company and I can also live with radical changes in the software itself.
The things that do annoy me are these:
  • Definately top: pages not working, files missing, wrong links, etc.
  • Companies forcing you to download a huge amount of irrelevant stuff, which you then have the option of not installing.
  • Drivers not being "signed" by Microsoft Certification after 6 years that the OS has been around.
Let me explain these in more detail.
A certain database vendor (a large name in the database business) offers a free version of their product with some limitations. Being a conscientious student, I wish to install this so I can study (yes, my college requires me to learn how to use commercial software instead of open alternatives - it stinks). Comes the first "catch": I need to be "registered" user, before I can even get a glimpse of their free product, which usually means giving them all sorts of information and then opting out of the many announcements, product updates, news and similar that would otherwise drown my mailbox.
Comes the next problem: Wanting to follow the link to register, I am asked for the username and password to access the site (which I do not, as of yet, have), after which I am told that "I am not authorized to view that page". Great fun.
Well, they did say that the pages are being re-constructed, so I might as well try at a later date.

The homework is due, so I really need that product by now. Figuring that the pages are now completed (and working), I try to do the same again - with similar results.

After some searching on forums (not the company's, since I cannot access them without registering), I learn that it is my browser that is the problem. Switching to IE makes the pages work flawlessly.

So, is it so much to ask of a multi-billion dollar company to try their pages on more than two browsers? (Firefox and IE are the ones that are usually tested) I am a fan of Opera (leightweight and blindingly fast) and I often have problems with websites not working on it. But I'd expect more from the "leading developers of DB and web applications for the past 200 years".

Moving on.
I have been complaining about this one for years, and the problem is only getting worse, it seems.
Wanting a driver for my new hardware (or old hardware, new OS), I go to the vendor's website and try to download it.
Whereupon I get a 150Mb+ exe file. This is not a nice thing.
Yes, I do have access to 100Mbit internet lines, but I rather use that capacity for stuff that I may actually need. Aside from the driver only being about 3-5 Mb in size, the installer package offers to install for me: Adobe Reader (newest), Firefox with the special company toolbar, TV application, Demos, Screen savers (shareware version), Antivirus (shareware version), etc...
Not only do I have to download all this, but I also have to watch the installation wizard quite closely so I dont accidentally install it. (See my post on Installing).

- Just a note: I'd like to express my joy at seing a large hardware vendor who offers me the choice of downloading the "bare minimum driver only" (16.7 Mb) or the entire package (43 Mb).
Thanks http://ati.amd.com!

Imagine here the "hypothetical" scenario:
Pop the OS install cd into a PC which you need to re-install (not your own).
While the thing does it's work (and it requires frequent user interaction, which I shall mention again in a later post), you have some free time in which to retrieve the drivers and software which is to be installed on the PC. Having a few tricks up my sleeve, I simply share the folder over my network, so that I can avoid USB drives or CD burning.
Once the base system is installed, I enable Remote Desktop on it (since my own workstation has two monitors), and I can continue working while the drivers and software are being installed. (This saves a lot of time, believe me).
So, what happens if you forget to copy the driver install files over the network and just run them from the share?
OUCH
Here is a reconstruction of what I believe happens:
The OS wishes to open the file \\workstation\shared\drivers\Driver.exe (200 Mb).
The antivirus needs to check the file for viruses, so the OS must fetch the file through the network, while the antivirus checks it and you are waiting with a blocked Explorer.
Rather than keeping the file in memory (or temporary space), it is entirely discarded.
In order to execute the file, it has to be read into the memory (or at least scanned to the end), which means that it is fetched again, while you are waiting with a blocked Explorer.
Finally, some action! The setup dialog opens, and begins to "check the file contents" (another fetch over the network), then "extract it" (yes, another fetch), whereupon it starts the "real" setup.exe from the extracted folder.
The AV needs to check that file as well, but fortunately it is usually small - the rest from here on goes smoothly.

If you have been counting, that is 4 downloads of the file over the network. Imagine having only a 10Mb non-switched network with an average transfer speed of 400Kb/s (due to activity).
Yes, it is faster to download the file from the internet again.

I leave it as an excercise for the reader to find out what is wrong with all that.

As for the third point...
I shall not elaborate on it, the point being (hopefully) self-apparent.

Tuesday, June 24, 2008

Whiners and flamers

It happens to all of us, even the greatest. There comes a thing we must do, and we do not yet know how to do it. (In actuality, it happens a lot more often than gurus admit, the thing is to hide your ignorance until you have replaced it with knowledge.)

A lot of the problems are in the form: "How do I make this bloody X work with/in/on/along that stupid Y?" or "Why doesn't Z work?"
In such cases, I use my favourite knowledgebase - Google!
And I come accross non-gurus, with similar problems, but who cannot find a solution to them, it seems. The first 20 odd pages of google results are forum posts about my topic, and with luck one of them has an answer as well - it just takes a bit of reading.
Here is where the "whiners" come in. They usually start with something like:
"Uh, hi, I have XYZ like so and so, and I tried to do W with it, but it doesn't work? Why, WTFOMFGLOL? I really think those hardware/software/misc companies {insert name here} should work harder for me, their consumer. They should already go and fix that problem I am having.
Incidentally, has anyone found a solution?"

To be admitted, there has to be at least _one_ such post, or the people with solutions won't be able to reply to it.

The next problem encountered is the "flamer response". It goes something like this:
"LOL ur such a noob, u don't know shitt, the companies wont do that and that just for u and some other jerks who dont wanna spend sum money 4 upgradez - get a job/life/girlfriend and stop wasting every1s time already sheesh u so stoopid"

The debate is joined by a few more people, some defending person #1 from the flame, others supporting the arguments made by person #2 in his/her flame.
And the debate very quickly sidetracks to something completely irrelevant, like politics.

Here are a few thoughts I had on this matter:
First. whiners:
- List your spects AS DETAILED AS YOU CAN, down to P/N, if you can find it.
- Append the lists at the END OF YOUR POST
- Write a summarized description of your problem.
This is wrong: "I have a problem," this is also wrong: "I went in to a store about a year ago and bought my first home PC... ... (...)"
This is right: "I have X and Y and they dont do Z."
- Don't complain about "someone up in the sky who should have seen this and fixed it so that it worked perfectly by the time I got to the same problem." The companies try (granted, not too hard sometimes), things get missed or unsupported or whatever, YOU ARE ALREADY LOOKING FOR A SOLUTION, SO STOP DEMANDING THAT IT SHOULD HAVE BEEN DELIVERED TO YOU ON A SILVER PLATE BEFORE YOU EVEN HAD THE PROBLEM.

And flamers:
- People dont want to throw nearly new stuff away just because it is "nearly" new, and spend a lot of money for "new" new stuff, like you do. Not everyone has rich parents.
- If you cannot help with the solution, DO NOT REPLY. All you are contributing to is PAGES UPON PAGES of useless spam for future readers with a similar problem, who will have to read through your spam and the replies to it and your counter-arguments, etc etc... - before they get to the end of posting and find no solution for the problem.
- If the problem has already been solved, do not spend more than _1_ page saying so and commenting on the mental state of the person asking. Include a link or copy the solution - that'd be infinitely more useful.
- Just because 2 out of 3 friends haven't encountered the problem, that doesn't mean it isn't widespread.


So, a bit more politeness and we may shorten the search for solutions down to 18, maybe even 16 pages of "real" spam.

Thank you already.

Saturday, May 24, 2008

Shutting down

What do people expect from their computers when they've clicked the "Shut down" button?
I have asked around, wanting to get a more complete idea than my own, rather limited thinking.
The answers were, amazingly, more or less unanimous, along the lines of:
"I want my computer to power off."
The more technical savy friends of mine explained to me that the "powered off" state means that, _allthough_ the computer still uses some electrical energy, it is not 'active'. The CPU and memory are using no power at all, the disks are silent and no fans should be turning. The bit of electrical juice is taken by the motherboard in order to be able to 'detect' when you wish to power it on.

I apologize for that rather detailed description, but it is necessary to provide contrast to some of the experiences mentioned below.
So, what do the operating systems (or maybe their designers) think of the phrase "to power down"?
In most of unix and BSD clones, as well as the venerable z/OS from IBM, the idea behind the button (or command, as the case may be), is to _safely_ discontinue everything that the computer is doing and then with the aid of hardware to achieve the above mentioned "off state". The reason for 'safely' is that, presumably, you would like the computer to work at those tasks again in the future and do not fancy an idea of re-installing everything or correcting mistakes in data that come from sudden power loses. The IT industry invests massive amounts of money into insuring that power is not suddenly lost to big important computers.

But here comes a 'different' system. Windows (specifically the XP version).
I admit that it has occasionally happened to me that after commanding my Linux computer to shut down, it has failed to do so and stopped in the middle of that process. That usually signifies a large problem in the inner workings of the system, which bears investigation, or a large problem in the computer hardware, which is also a serious matter.
On the other hand, if everything worked perfectly and no hardware failures occured, the PC successfully shut down _EVERY SINGLE TIME I WANTED IT TO_. (Note the emphasis.)

Whereas, it is, I understand, a quite common occurence in Windows XP computers to simply.. stop in the middle of shutting down. Most of us have seen those nice "End Task" dialoges, which pop up when a stubborn program refuses to die quietly when ordered to.
The idea behind theese is that the OS is kind enough to wait for the task for a bit, and if it still refuses to cooperate, it will end the task 'forcibly'.
Naturally, that is not to be desired, as such scenarios lead to the afore-mentioned 'corrupted data'.
What confuses me, though, is that after the time limit is up (as indicated by the nice progress bar), the Windows OS asks you to kill the task, or abort shutting down. And it waits there, quite patiently.

Imagine a scenario: You are downloading images from the digital camera just before rushing off to your vacation. You click the shut down button and run off, confident in the knowledge that Windows will do the rest. Two months later you return home and find that: a) the computer has been on all this time and used up a not-inconsiderate amount of electricity, b) The image of that friendly little dialog is burned into your monitor, which you now have to replace and c) when you click any of the buttns in the dialog (after replacing the monitor), Windows continues shutting down, after which you need to turn your computer back on before you can start using it again.

Also, there is another thing:
If you have ever used a Windows computer in a networked environment with a file server, you will know about the so-called "offline files". It can be turned off, I understand, but in my experience, it never _stayed_ turned off for long.
The idea is that some files that you use often are copied to your computer and used from there, in order to decrease the load on your network.
The problem with this arrangement is (aside from conflicts and such that can appear when more people are changing the same files at the same time, the details of which I shall not mention here), that the files have to be uploaded back onto the server at some point. In Windows XP that happens when you turn your computer off.
If, for some reason, the connection is no longer available, the "synchronization dialog" will stop in confusion and tell you that it can't be done, waiting patiently for your click.

And, here is the third problem:
If the Windows XP in question has downloaded automatic updates and hasn't had time to bother you about installing them, it will do so before it shuts down. The idea seems fine on paper, but all too often it has happened that the updates failed and the computer got 'stuck' on the "installing updates - do not turn off your computer" screen.

Here are just three eventualities that result in your Windows XP not shutting down on their own, _AFTER_ you clicked the 'shut down' button. I imagine there are more out there which I haven't (luckily) come accross yet.

So, remember: Before going away from the computer, _WAIT_ for it to shut down completely, because you apparently _CAN'T_ trust Windows XP to do so on it's own every time.