04 October 2006

Vista - How you can make Windows run even slower

So Vista is coming and the PC manufacturers are hoping to grow fat on your largess as you upgrade everything to stay fashionable. But you don't have to wait for Vista!

Maybe you laugh at my intolerance for Windows sloth. You've got an dual-processor or maybe an AMD64 and you've got cycles to burn baby! So how can you make it run slower (but possibly prettier) ?

Use more powerful themes: take a look at the Stardock site for info on WindowBlinds and other desktop themes or shells, some rather radical (and some just radically unstable).

Run lots of .NET and Java applications: I love Java but both .NET and Java are semi-interpreted languages. Pick one or two favourite applications, and try to stick to either Java or .NET because that way they will share more code in memory. There are lots of useful Java apps, the only .NET app I ever used was SharpReader and I've switch to Sage in Firefox for reading RSS feeds so it's goodbye to .NET from me (that's another reason why Firefox is cool; once you are running the Mozilla platform (Gecko, etc.), your extensions (which are really mini applications) share the code in common with Firefox itself. It's a pity there isn't a user-oriented Java application that achieves the same (though tools like Intellij IDEA, Eclipse and JEdit do pretty well at providing an application platform for software development extensions).

Use Windows Desktop Search and Google Desktop Search: I'd love to be able to search my desktop, but I don't want to run even one of these things because they are so slow (maybe if they would run overnight and then shutdown my desktop when they've satisifed themselves that they've probed every nook and cranny). But if you've got cycles to burn, use 'em both and compare the results. Meanwhile, I'll continue to use baroque folder structures (which I continually reorganise, increasingly using tag-style names rather than old-fashioned hierarchies) to hoard my precious bits and bytes.

Run lots of anti-malware programs: there are so many free anti-adware, anti-spyware and anti-virus programs out there, it's easy to give up whole chunks of your CPU to try to achieve safety and privacy. My recommendation: choose one or two quality apps and dump the rest. But if you like the warm fuzzy feeling of having an army of anti-malware tools attempting to control the horizontal and vertical on your desktop, go ahead.

Use a local mail client: Gmail convinced me that a web-based client could do what I needed, so Thunderbird now languishes unused (except for occasional "backups" of my web mail over POP3). Outlook Express - don't make me laugh. So now Google provides the hard drives and the cyles to store and search my mail. But by all means, run a local mail app (or two) - and of course you might have to anyway for very private or work-related mail.

Use Windows Media Player: Yes, WMP is a charming beast. You'd be better off saving memory and CPU by running Winamp. But dash it all and don't spare the horses - use the latest and greatest (well, largest) WMP and while you're at it, use GForce (actually though, GForce is so pretty that it doesn't matter that it likes your CPU; you won't be doing anything else but watching the darn thing go through it's fractal gymnastics).

So give that little lot a try and let me know how you get on. If you've still got any CPU to spare, drop a comment here and we'll see if we can find anything else to keep your desktop busy.

Reasons to stay with Windows XP despite Vista

Sticking with Windows XP: The Case Against Windows Vista is a nicely written article that shows how to achieve many of the features of Vista under XP.

Actually I'm having a Douglas Adams moment; not pondering if my ancestors should ever have come down from the trees (or out of the water) but wondering if I should ever have stopped using Windows 2000. Here's how you can get some speed back.

Microsoft continues to innovate with the desktop, but a lot of what they add is just pretty fluff, and it's not necessarily coded to be light and fast. If you can live without some of that fluff, you might be surprised by how Windows can move with a little more alacrity.

I had the suspicion that XP's native theme is a bit sluggish and I knew I hated the XP File Search wizard with it's ostensibly cute but actually acutely annoying analogue of the Office paper clip, the famous search puppy. Instead of wagging it's tail and running round in circles, it'll have you clicking again and again, and cycling back and forth with Back and Next until you eventually find what you're looking for or finally lose your reason. Please Microsoft, no more "agent" technology, it's even less illuminating than conversing with a chatbot or (I suspect) one of your support people.

So here's what I've done to speed things up on XP:

Lose the search puppy (send him to catch a long ball off a short pier); credits to the Elder Geek:
  1. Open regedit.exe using the Run (WinKey+R) dialog box.
  2. Navigate to HKEY_CURRENT_USER\Software
    \Microsoft\Windows\CurrentVersion\Explorer\CabinetState
  3. Right click in the right pane and select New > String Value
  4. Name the new string "Use Search Asst" and press enter
  5. Double click the string name and enter "no" (lower case) in the Value Data: line. Click OK
If you want to bring it back, just delete "Use Search Asst". But if you're just nostalgic for the little guy, the little picture should satisfy you (or remind you why you turned him off in the first place).

Don't use a desktop background: it still brings up Active Desktop if you do, so pick a nice colour and live with it (who looks at their desktop background anyway?). Oh wait, I do. Oh well, I don't when I turn it off, which definitely improves my performance.

Disable the Windows XP theming engine: hit the Logo key and press R, then run "services.msc", scroll down to Themes, right-click and select Properties, change "Startup type" to "Manual" and finally hit the Stop button. It'll look ugly for a while, and then you'll just notice that windows, menus and dialogs pop into place that little bit faster.

Tell Windows Messenger to take a message: you're just a few changes in the registry away from ending this little beast (if you're not a regular user of the registry, make a backup first).

Kill any autoruns you don't need: Sysinternals Autoruns will show you what Windows starts automatically when you login. It's probably safest to look at the Winlogon tab, a lot of other items are really essential. Before disabling anything, you might want to try using the Processes tab in Windows Task Manager (or just use Process Explorer) to kill the application first (that way, if you kill anything essential, you just need to restart your Windows session to get back to normal).

Use a fast tabbed browser: Since Firefox introduced tabs, I'm an full-on Fx fan (IE is just ridiculously outdated, and IE 7 RC 1 caused my desktop to hang after login). I had a brief look at Flock but it's features didn't strike me as compelling enough to step off the Mozilla mainstream and I even glanced at Opera (now free, no adware), which almost convinced me to switch because it was noticably nippier, but I would miss my extensions (especially Adblock, DownThemAll, and Del.icio.us tagger).

Tabs are much easier to manage than windows, I do all my browsing in just two windows now (and the other window is a separate Firefox process to allow me to use multiple identities with Google services; just set the MOZ_NO_REMOTE environment variable to 1 and run Firefox with the -P option so that you can create and use a separate profile for the second process).

Mmm, also get rid of any viruses that might be eating your CPU: if your anti-virus isn't helping, take a look at one of my earlier posts on how to murder a virus with your bare hands; a symptom of some kinds of malware is that Windows Explorer CPU will go up to 99% and stay around there.

28 September 2006

Enough with the Mork jokes already

I recently had occasion to want to parse Firefox's history file and uncovered a lot of history surrounding the file format, called Mork. While some of the design decisions leading to this format are questionable (to say the least), I have to say I'm appalled at the number of folks who have jumped on the band-wagon of slagging off the developer of Mork, David McCusker.

This started with folks like Jamie Zawinski who referred to the developer in a published work as a "complete barking lunatic". You probably don't know who Zawinski is but he was at one time a respected Netscape engineer.

Unfortunately, when Zawinski started this, it became open season on Mork and it's luckless developer. Everyone who wanted to do something with the format found Zawinski's article and chimed in with their own insults. What's worse is that Zawinski exposed a series of private e-mails with the developer of Mork, to what purpose I can't fathom as they offer no useful guidance that was concrete enough to influence the actual file format away from its flaws. All of Zawinski's relevant critiques (and maybe even libelous criticisms) were written after the format was implemented (in spite of his quote "The awful thing about getting it right the first time is that nobody realizes how hard it was').

Perhaps the worst part is the hypocrisy of it all: the Mork format has been in use since 1999 by the Mozilla/Firefox history and address book. If it was so bad, why hasn't it been re-written by now?

So what do I think of Mork? I agree with several of Zawinski's technical comments, but none of his personal ones. But having looked myself at the format in some detail, I wonder where the complexity is supposed to be? It is basically a serialized series of dictionaries (hash-maps) where a dictionary can represent either the meta-data (database columns), a data-table, or a transaction (an update to a data-table that is appended to the file, to allow for rapid writing). The only actually awful thing about it is the encoding of wide-chars.

But the worst part about Mork for me has little to do with the format:
  1. the only open-source Java code that effectively parses the format is derived from Python code that is in turn derived from Perl code that made heavy use of regular expressions.
  2. this algorithm takes 27 seconds to parse a 1.4Mb history file, something that the Mork implementation does in under a second.

Now the same file converted to CSV and preserving all attributes can also be parsed by Java in less than 1 second! But perhaps the most striking thing is that the original Perl code with the algorithm that runs so slowly was written by... Jamie Zawinski.

To David McCusker, I hope that you're laughing at all this debate about something you developed years ago. Maybe once in a while you scratch your head about a couple of aspects of the resulting format which may have been a result of too-rapid coding rather than exceptionally poor design as has been assumed by many.

And to the hordes of developers who have heaped insults on David - shame on you. I wonder how you would feel to have your worst code exposed in a widely used application, and then mocked by all and sundry? Open-source means that you have access to the developers, but that is a privilege, not an open opportunity to tear someone's reputation to pieces.

By all means have a go at Microsoft (for example) as a large corporate entity that has perpetrated some awful file formats (try parsing the .lnk file format or god forbid, a Word document, but in contrast see how easy it is to work with their .url file format) and some very poor performance-related decisions; but leave individuals alone, in part because the responsibility is rarely just on one person but also because a developer is a person. You know - with feelings and stuff. No, really.

23 September 2006

Kano Model and Product Innovation

I'm in a mind-mapping mood today - here's one about the Kano model and how it can guide the features of a product. Your product or service needs a unique recipe of all three types of features: basic (what I call duh or doh!), performance (good) or excitement (great, wow).

Gemba/customer visits (a contribution to Wikipedia)

I've decided that Wikipedia probably gets more readers than my blog (yes, really) so I should contribute there where possible. Here's my contribution to the article on Gemba visits. I learned this technique at Sun back in 1998; it was a real eye-opener to sit with open eyes and ears but closed mouth, watching end-users working with Sun products (on that occasion, it was Sun's deskop environment, CDE).

A Gemba visit is often simply called a customer visit. The hallmarks that make it uniquely useful are:

  • the purpose is firstly to observe, occasionally to question, rarely to guide or direct
  • the visit occurs in the context where the product or service is used, which allows direct observation of problems that arise, workarounds that are applied, and capabilities or services that are simply never used
  • sometimes the customer (or client or user) is asked to describe what they are doing while they are doing it; this provides insight into their thought processes as they work, which often reveals differences between their mental model and the model of the developers or providers of the product or service
  • the customer will often express wishes or needs while they are working in context that they would forget or suppress in a different context such as a structured interview or sales meeting
So what happens when you do a Gemba (customer) visit? My advice - prepare to be amazed. The people who develop products work in a closed environment; they share so much (maybe approximate age, education, interests, culture, not to mention information and work experiences) that their mental model of how a product is used is surprisingly out-of-whack with what a real live customer will do.

If for some reason you can't do Gemba visits (e.g. the product is used only in secure environments, or you simply don't know who your real customer is because your distribution channel obscures them), you can do something that may be more or less effective: a structured usability test. It is similar to a Gemba visit in that the customer is observed while using a product or service, but they are doing so in a slightly artificial environment:
  • they may be at your premises rather than their own
  • they are given specific tasks to complete rather than pursuing their own goals
  • there may be certain constraints, such as to try to complete a task in a given time or to do as many of a list of tasks as possible
  • they may be video-taped for later analysis by a wider group
So tell me - how do you go about researching how to improve your company's product or service?