First day at my new job today, it was a fairly undemanding day, and I think the rest of the week will be too, as development on the contracts I'll be first involved with hasn't really started yet. So I can't say that much about the work, or really about the people, as I've only met a few (and this blog is not nearly anonymous enough for that anyway!)
The biggest change that I'm going to have to get used to (from being self-employed) is using Windows again. The work I did with my self-employment was all Windows based, but I used Win4Lin so that I could run it all under Linux. This meant I could use the absolute minimum of actual Windows applications - I would normally only ever be using two apps at once - a file manager and either Excel, Inno Setup (for creating installers) or Microsoft HTML Help workshop (for creating help files). Using Win4Lin, all the Windows files are just normal files in your Linux home directory, so everything else could be done using Linux tools - I used Subversion for revision control for example.
So I'm really a stranger to using Windows, especially Windows XP. Here are a few usability comments on Windows from the perspective of a Linux/KDE user (makes a refreshing change!):
- Internet Explorer:
IE kept on plaguing me to install Flash. It doesn't remember the fact you've said no, so on a site that uses Flash for ads, you get prompted just about on every page. I kept saying 'no' mainly to see what it would do and also because the company policy is to get permission before installing things (though I don't know if it really extends to browser plugins). But IE made this policy very difficult to enforce. The approach IE takes to this is totally, totally wrong: <rant>software should not be easy to install!</rant>. The easier software is to install, the easier viruses are to install. At least these two things should be required:
- All system installations of software (i.e. installs that affect more than just a user area) should require the root password
- You should never be prompted while in the middle of trying to do something. Especially bad are prompts that effectively say "you need to install x to do what you want to do. Do you want to install x?". That is the worst possible time to make a decision that affects system security. If you want a system that is stable, then making changes to the system should be seen as a big deal.
Preferably, you should also have this:
- All installation of software goes through a single, central tool for installing. This way, the user learns how to add and remove software in a single manner, all software comes through trusted channels, and everything else is suspect.
I don't actually know of any system that achieves this last one, as it's quite difficult to do in practice. Debian gets close -- I very rarely have to get software from outside Debian's repositories, and usually it's because I'm doing advanced things anyway (e.g. running and developing the CVS version of an app). Windows is pretty awful on all these. In today's experience, not installing software was quite difficult, as my patience was worn out pretty quickly saying 'No' to all those pop-ups.
- Scrollbars and scroll-wheels
Qt (the toolkit that KDE uses), and GTK2 and even GTK1 (I think) have got this all sorted, but Windows hasn't yet. I've had the following problems, which are just nits but after a long time with KDE/Linux they get to you:
- You have to click inside the relevant frame for the scroll wheel to affect the right scrollbar -- in Qt, you just hover your mouse inside the relevant area, and that area is scrolled. This is annoying whenever there is more than one region on an app with a scrollbar, which happens very often.
- Horizontal scrollbars are never scrolled -- in Qt, usually the vertical scrollbar is default, but you can scroll the horizontal one by hovering the mouse of the scrollbar itself, or by pressing the 'Alt' key -- you can't do anything similar in Windows as far as I've discovered.
Linux apps also tend to make other nice usages of the scroll wheel, like Ctrl+scrolling for zooming, also missed in Windows.
Thing's I'm missing:
- Tabbed browsing:
This has been part of my computer experience for so long I find it very difficult to live without. Most GNU/Linux browsers have had this for quite a number of years, I think Konqueror (which I now use) was one of the last.
I'm hoping I'll be able to install Firefox, and can almost certainly do so on the grounds of needing it for testing my work (which will be web development at least initially). I may have to wait for the final release, but that's only next Monday.
- Virtual Desktops:
Almost all Linux window managers, and all popular ones, allow you to arrange windows on virtual desktops, and this has been a feature for at least as long as I've used Linux, about 6 years now In a corner of the screen, you have a pager showing all the desktops you have (usually arranged in a grid), and you can easily define shortcuts to move between them, either by number, or by position e.g. "move to the desktop to the right". Why is this a great idea? Well, screens are 2D devices, but the metaphor of windows is semi-3D - you can have layers, and windows overlapping each other. Imagine now if your real physical desk was like this - say it was the size of an A4 sheet of paper (letter sized, for Americans). You could in theory do all your work, by shuffling pages, but it would be a pain, and this is what it's like if you're organising windows on a single desktop area. With virtual desktops, it's like you have a huge desk. As with a normal desk, you can only work at one bit at once, but you can move to any area of your huge desk instantly, and certain types of document always appear in the same corner of your desk, so you can feel where there are, and find them very quickly. Virtual desktops give you a huge feeling of liberation and space that I am sorely missing, especially when the task-bar is full of loads of apps (the current lack of tabbed browsing makes this even worse).
- Mouse gestures
KDE has a background process called KHotKeys which can be used for global and context specific keyboard shortcuts and mouse gestures (Firefox and other browsers have mouse gestures too, but with KDE it can be used for any application). Mouse gestures are particularly good for tasks where you don't need the keyboard much e.g. web browsing. They mean you don't have to move your mouse to find a button -- you just hold down a mouse button (in my case the right mouse button) and do a movement wherever the mouse happens to be, and the program responds appropriately according to what you've programmed it to do. As well as browsing, I also find them great for controlling my music player -- it means the music app takes up absolutely minimal screen space, as you never need to click on its buttons.
The main thing I lament though, is just the fact that windows is GUI only. The shell and shell scripting are incredibly useful and powerful tools, and even integrates brilliantly into a number of GUI tools and methodologies. Some examples:
The text editor I am writing this is has a great feature to integrate shell commands: A very simple perl script I wrote can be fed a bible reference and will return an HTML link to a gospel-com page for that verse. I can use this from my editor, so a single keyboard shortcut will now turn John 3:16 into John 3:16
File management from the shell is so fast in lots of situations, and what's more it's very repeatable -- just put it in a script and run it again whenever you need to. While I do use graphical file managers in Linux (actually, I love Konqueror, but hate all the rest), I keep coming back to the shell 'cause it's so fast.
Retrieving the contents of text files from shells - for example, finding the link for Win4Lin above took about 4 seconds from start to finish -- with GUI methods it probably would have taken a minute at best, as I would have had to browse to a folder, open a file, then look through the file and finally copy and paste. The link to Subversion took me about 10 seconds, but that was without knowing what file it was in!
KDE's dcop -- I've got a number of examples of cool (and useful!) things you can do with dcop and scripting in my KDE articles.
On the other hand, I have some nice things to say about Windows and Microsoft apps:
The Microsoft development tools are great. Things like auto-completion that just works, even in mixed language environments (like ASP which contains VB script and HTML), and instant context-sensitive help are just great, and the lack of these features in many Linux IDE's is a great shame. On the other hand, I think some proprietary Linux IDE's like KDE Studio have these things, and are probably a lot cheaper than the Microsoft tools I was using today without any thought to the huge license fees behind them. Also, I think some of the free Linux IDE's have some of these features too, but can take a bit of setting up.
With some registry hacks, IE can be made a bit more friendly. You can change the default search engine (used when typing in the address bar) to Google, which was the first thing I did. You can even do some registry editing to reproduce behaviour like Konqueror's 'Web Shortcuts', allowing searches on different search engines by typing some keyword before the search string.
No crashes yet! :-)