Why Windows is not ready for the desktop!

OK – yes I know this is a provocative title. But it is often claimed that Linux is not ready for the desktop. I have been using Linux as my primary desktop environment since 1996, so the statement always surprises me when applied to Linux. Prior to that, Solaris 1 was my desktop from 1990, and before that it was Mac. Each step was an improvement on what came before. Compared with the Windows of the day (Windows 95), the Linux desktop was so many light years ahead that it was a butt of jokes (eg “PC-contemptibles”).

However, inevitably, the Windows juggernaut caught up with me. For a variety of reasons, my paid work now involves working with Windows machines a substantial fraction of the time. In 2006, I started to use Windows for the first for anything more significant than driving a scanner, or running a web browser. This was Windows XP, which I would consider to be the first release of Windows that might be ready for the desktop. It has proper multitasking, remote administration (though not in the “Home” version), schedulable tasks, and services. It lacks, though, in the multiuser department, although for my day to day work, that is not too important.

However, as I began to use Windows more, the more its deficiencies became apparent. Bearing in mind the long history of posix systems for my desktop, it is crucial that my desktop support posix functionality so that I don’t take an immediate productivity hit from trying figure out an alien way of doing this. Bear in mind, that all modern desktop operating systems (eg Linux, MacOS, Solaris, etc), with the single exception of Windows, supports posix natively out of the box. I have invested heavily in the platform, and have a raft of open source tools that I can use on a posix platform, at the cost of a bit of compilation if the application is not available out of the box.

Fortunately, however, through the efforts of RedHat and other volunteers, an almost complete posix environment called Cygwin is available as a free download. Most of the applications I have grown to love and use are simply available via a simple point and click installer. Full kudos to the Cygwin team for taming Windows and making it a usable and productive platform.  Nevertheless, even with Cygwin, there are very many nasty sharp corners with Windows, and I want to document these peeves: Why Windows is not ready for the desktop.

  1. Cygwin is a second class citizen. By this, I mean a couple of things. The filesystem as seen by Cygwin is rooted somewhere like c:/cygwin. The actual drive letters are mounted in the form of /cygdrive/c, etc. Regular Windows software doesn’t understand cygwin paths, and cygwin programs often have trouble with regular windows paths. Trying to interface the output of, say, Microsoft’s Visual C compiler with something that the compilation buffer of emacs understands, is fraught. Similarly, to generate paths that Visual C understands from within Cygwin’s make utility is convoluted and messy. Another aspect of this problem is that you can’t expect bash to be available on all systems, meaning you have to descend into the pit of hell that is cmd.exe programming. More on this later.
  2. Opening a file locks it for deletion. This “feature” of Windows has caused uncountable aggrevation for users (not just developers). Ever wondered why you had to reboot your computer after installing software? Its because the install has replaced some dynamic libraries (aka dlls), but existing running software is in memory using the old version of the dll. Similarly as a developer, creating programs, you find your builds fail because either there is a spurious compilation running in the backgounrd (see Peeve No. 3), or because the program your building is still running (eg within a debugger). It doesn’t actually need to be that way. On Posix systems, deleting a file (or overwriting it) simply removes it from the directory. If there are no other references to that file (eg links), the file still exists, but is effectively unnamed until all processes using that file close their file handles. Works a treat. Pity Microsoft chose the less useful semantics when they implemented NTFS.
  3. Signals not propagated. This means that ^C and ^S do not work with native Windows programs, only Cygwin programs, because Cygwin has made an effort to support signals. It also means, for example, that when emacs kills a subordinate compilation process, only the toplevel cmdproxy process. This usually means a hunt and kill on the now orphaned compilation processes. A useful tool is Process Explorer, which has sufficient smarts in to allow you to kill a whole tree of processes. However, it is manual – it would be so nice if the operating system supported this out of the box.
  4. X-windows copy/cut/paste. If you have ever used the 3 mouse buttons to select, copy, cut and paste in X-windows, you will realise just what a timesave it is, let alone saving on RSI from not having to repeatedly type ^C,^X,^V in intensive edit session. The problem is that Windows does not understand the middle mouse button at all, and the right mouse button is reserved for context menus. X-windows programs running under Cygwin do understand these, as does emacs, but that’s about it. To alleviate this lack of functionality, TXMouse works passably well. The right mouse functionality is not supported, byt you do get swipe to copy, and paste on the middle button. Well mostly – some Windows programs refuse to cooperate (here’s looking at you, Visual Studio). It also does a quite passable job of fixing Peeve No. 6.
  5. No virtual desktop. One of the things I love about my Linux netbook is its light weight. The downside of such a small machine is its small screen – 1024×600. Does that mean I’m limited in what I can do? No. I run a virtual desktop,  which is 4000×3000 pixels. The window manager allows me to drag the physical screen around the virtual one – navigation is quite easy, and allows me to have literally hundreds of windows open, spread over multiple projects I might be working on. Even applications requiring larger window sizes (Visual Studio, for instance is unusable on screens less than 800 pixels high), are not difficult to use. I have for instance, requested 1200×1000 remote desktops to manage visual studio development from my netbook. It actually works a treat. Its a toss up as to whether it is better working environment than a dual monitor setup, but it is a hell of lot more portable. The bog standard window managers for Linux (KDE and Gnome) sport workspaces, which gives something like the virtual desktop (not as good IMHO, though), as does MacOSX, but Windows 7 lacks this functionality, out of the box. I tried a workspaces like solution from sysinternals called Desktops, but sadly it didn’t play well with the Cygwin programs I need to use.
  6. Click to focus. Click to focus has been the mode of operation since the first Macintosh, and was probably inherited from the original Xerox Parc GUI research. X-windows introduced an alternative mode called “focus follows mouse”. Here, the window under the mouse point has focus. Its a bit confusing going from one system to the other – and I frequently finding myself typing text into the wrong window, since my eye (and mouse) are focussed on one window, but the operating system is focussed on another. So why would I argue that focus follows mouse is superior to click to focus? A very common operation I find myself doing is copying and pasting selected text from one window into another (possibly completely different application). With focus follows mouse, and X-style copy paste this is extremely simple. Just have the source window on top, with a small  part of the destination window showing at one edged. The select text using swipe (or left button-right button when large), then move the mouse to the small part of the destination window, and press middle-mouse. Click to focus destroys this fundamental mode of working, as you need a separate click to bring the destination window to the front, (which may take some time to redraw), followed by the paste followed by another click to bring the original source window to the front. Focus follows mouse is not to everybody’s taste, but it is painful when the computer cannot be configured to use it. Note that TXMouse partially support focus follows mouse, although windows are auto-raised in this case, which defeats the purpose somewhat. Also Visual Studio really behaves badly when TXMouse is running.
  7. Modal dialogs prevent windows from being moved. This is a doozy! If an application pops up a modal dialog box, the app’s window remains fixed in place until the modal dialog is dismissed. Even worse is if the application becomes busy, not responding to its event loop. The problem is that in Windows, applications are responsible for moving, raising, lowering and iconising windows – events which are the responsbility of the window manager!
  8. No symbolic links. This is an extremely useful feature for organising the file system, and has been added to Windows 7 (yay!). Cygwin will fake symlinks in its own way, because many posix programs will assume the ability to create them. The problem comes from Windows software that knows nothing about symbolic links, making navigation around the filesystem traumatic.
  9. Not all programs use ‘/’ consistently. Back in the bad old days of MSDOS, ‘\’ (slosh) was used as the directory separator, even though ‘/’ (slash) had been in use for some years in the unix world. When Windows grew up (gained the NT kernel), the directory separator became the slash, with slosh being recognised as a synonym by most windows software for backwards compatibility. But not all – some software insists on slosh being used (which is hard to input at the bash console), and occasionally software will fail because a path has been entered with a mix of slashes and sloshes.
  10. General slowness of NTFS. This is a bit hard to quantify, but on similarly speced hardware, running Windows XP and OpenSUSE Linux, I have noticed a factor of 10 performance difference in writing files. Some of this might be due to Cygwin’s posix emulation layer, and supposedly Windows 7 has a more lively I/O subsystem, but one thing that is painfully obvious is that when the system is performing I/O, such as compiling C++ code, the user interface becomes extremely sluggish (taking 10s of seconds to respond to mouse clicks). This behaviour is not evident on my OpenSUSE Linux system, unless it is actually swapping.

Windows 7

While Windows 7 has improved some things, such as remote desktops for all versions, and symbolic links (see point 8 above), unfortunately its better security model is not well delivered. On Linux, there is a very simple security model – normal users have priveleges to access only their own areas, and a single priveleged user can do anythign on the system. To escalate priveleges, there are the su and sudo commands, which so easily allow one to execute commands with the correct privelege level.

Here are the new peeves with Windows 7.

  1. Unfortunately, in Windows 7, there is no equivalent to the sudo command. This means that all shells need to be run as administrator, otherwise you will quickly find that you cannot do something. As a consequence, many other programs will then also need to be run as administrator, as they need to access file that have been created or copied by the shell.
  2. “Resource temporarily unavailable”, which afflicts Cygwin processes being forked. The Cygwin team claim this is a problem with the way Microsoft has implemented it process control – I don’t really want to get into the details, but the effect is to degrade the user experience, as often it takes 2-3 goes to get software to start.
Posted in Uncategorized | 2 Comments

Microsoft Word Rage

Way back in the dim distant past (well, the 1980s, for those who remember), whilst a PhD student of theoretical physics, I noticed a distemper amongst my colleagues attempting to write their theses using a word processor. It involved much swearing and cursing at the computer, slamming of doors, and running full tilt down the corridor screaming at the top of one’s lungs.

To be fair, it was not just Microsoft. Microsoft Word did exist at the time, but this was well before its market dominance. Other word processors existed, and were used, but all seemed to suffer the same flaw.

What was the cause of this most antisocial behaviour? After having added more than a handful of equations, or graphical images, the program developed its own personality, remeniscient of Beezlebub. Equations and figures would be randomly selected for deletion and sometimes (if you’re lucky) insertion at some random point elsewhere in the document.

I took heed, and joined the document processing revolution. In particular, I started using LaTeX, and never looked back. I have written 4 books (including my thesis) using hardware that is considered laughable today, and it was a joy to use.

However, this is not a post for exhorting the virtues of LaTeX.

What prompted me into writing this is that one would have expected that with two decades of computer development in both software and hardware (with the hardware being 10,000 more powerful now than when I wrote my thesis), this condition of “Word rage” would be a thing of the past. Not so. My son recently was writing up a report on his school science assignment. This was no book! It was around 30 pages, and yes, had quite a few figures and tables, but I found him swearing at the computer, complaining of Word “crashing and running slowly” in an eerily similar way I noticed my PhD colleagues do all those years ago.

Unfortunately, I don’t think Libre Office is much better than Microsoft Word.

We need a word for this phenomenon. The obvious Greek neologisms “lexicomania”, or “leximania”, having already been taken for an excessive obsession with words, and as a synomym for logorrhea (ie verbal diarrhea) respectively, are no longer available. Hopefully with more visibility of this problem, the frustrations of scientists and technical writers might finally be addressed by the writers of our word processing software.

Posted in Uncategorized | Leave a comment

How I got bitten by the Tiger.

I have had a mediocre experience with Tiger – the first couple of
flights were delayed significantly – taking 5 hours to travel between
Melbourne to Sydney each way, and more recently being caught up with
recent CAA grounding of the airline in July of this year, and having
to make alternate travel arrangements.

But to be fair, there were times when the Tiger experience went well,
and was about what you’d expect from a budget airline. I thought I’d
give Tiger the benefit of doubt.

However, I just recently tried to book tickets for a return trip
Sydney to Melbourne, and discovered after I received my booking
confirmation that my forward leg was booked for a different time to
what I had selected. Since I am meeting someone flying in on a different
flight, this was unacceptable.

I cannot explain what happened. I do know that I missed the flight
details in the small box at the bottom left corner of the web page
(where it is typically not visible on a netbook’s screen). I was
expecting a more prominent “review order details” page before
committing to the flight. I also did not expect that my flight
selection should have changed, either.

Just like other people have found, it is very difficult to contact
customer support to rectify the issue. Given that the problem was
detected only minutes after the order went in, it would be no skin of
Tiger’s nose to correct the order to what I originally requested then
and there. However, it took some hours before I was able to get
through to customer support on the phone. In the meantime, I filed a
website problem report about the issue, to which I have yet to receive
a response.

Customer support, instead of being helpful, decided it was more worth
their while spending more than half an hour arguing with me than to
fix the problem.

I then attempted to change the flight details of the forward leg,
thinking that even if I end up not getting the $50 change charge
refunded, I might still be better off than if I flew with an
alternative airline. Two problems occurred – my debit card maxed out,
so the transaction was declined, but more importantly, even though I
selected two flights earlier than the current flight, the system
booked me on the previous day! Now customer support refused to reverse
this entry as well, and the upshot is that the return leg (which was
booked correctly) is now unusable. It is actually cheaper to start the
booking all over again, than to pay an additional change fee.

This is just not worth it. Tiger’s booking system is a roulette, with
no customer service to fix up problems when they occur. I have no
faith that spending another $120 will get me the flights I need.

Posted in Uncategorized | Leave a comment

Banned from Fabric of Reality list

On Thursday 25th of August, I was banned from posting to the FoR discussion list by the moderator Alan Forrester, on the basis of flouting a newly made up posting rule, without warning, or it appears, even reply.

Many people have written to me privately in support, or posted public expressions of support the the FoR list. Thank you for your kind words.

At the request of a number of people, I have now established an alternative discussion list free from the tyranny of arbitrary censorship.

Alan Forrester’s Notice
My response to Alan Forrester
The posting that caused the ban

Posted in Uncategorized | 4 Comments