My mother got a digital picture frame for Christmas. It's rather nice. I'm a little bit jealous. But I had to bite my tongue when I noticed one feature it shouldn't have. Occasionally, before displaying the next photo, it would overlay a large hourglass cursor - showing it was busy.

What on earth for?

If it takes longer than expected to display the next photo, it's not holding anything up; it just means the next photo will get displayed a little late. And the designers, in their wisdom, decided that the best thing to do would be to draw attention to this by sticking an ugly great big hourglass over your pictures.

They're actually telling you that while you're watching a slideshow, the device is working on a slideshow.

It's like driving your car with a little voice telling you that the engine is running every now and then.

If you want to win the little toy in a Christmas cracker, simply hold the cracker a little further into the body (but not so much that it's obvious) - this makes it less likely to tear at the perforations on your side. Use this knowledge wisely.

Today we released updated Add-ins for Windows Desktop Search. Most notable among the changes is that they now support Windows Vista. This includes the UNC Protocol Handler which allows you to index remote network shares (without using Offline Files).

I'm not going to use the .msg or Lotus Notes versions, but the network share one looks interesting, and I'll definitely give the IE history one a go. I'll let you know if it turns out useful (I'll have to update my list of programs what I run).

And it appears that Adobe Reader 8 includes a PDF filter that works on Vista (or WDS 3 on XP). Unfortunately, it looks like you can only get it bundled with the reader software, and I'm not sure I'm ready to trust Adobe to have built something that isn't bloated and overweight, especially when you see how lightweight FoxIt Reader is. And I'm not a big PDF user. Maybe I'll give it a go. Install it. Take one for the team.

I've recently installed Vista, and as such have had to reinstall all the apps and tweaks that I'm used to having. In the spirit of Scott Hanselman's Ultimate List of Every Program Ever Released, here's a slightly more manageable (shorter) list of tools that I actually find useful. This is as much for my benefit as anyone else's. I always forget what I've got installed.

IEHttpHeaders toolbar. Brilliant - see http headers that are sent and received through IE. Has a bit of a problem installing on Vista. Once you've installed, you need to delete HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Discardable\PostSetup

IEDocMon. Another useful IE toolbar. Combined with the two above gives quite a lot of power

Fiddler. Traps http headers for programs other than IE. The alpha of version 2 supports https.

SharpReader. Not the best feed reader, but one I've been using for years. I want to use a different feed reader, but can't quite move off this one. RssBandit has the same performance issues (and the code is surprisingly scary, considering the great stuff Dare comes out with on his blog). I actually want a reader that has gold integration with IE7's feed platform. Currently, the only client offering that is RikReader, which doesn't feel useable enough yet. Still, Vista handles SharpReader's ridiculous memory usage a lot better than XP.

Windows SDK. If you want to develop for Vista, you'll need this (and it's RTM now)

Platform SDK for Windows Server 2003 R2. The SDK previous to the Windows SDK. I think you can build for downlevel OS versions with the Vista Windows SDK - get this for paranoia's sake (but I think you can only install one...)

TestDriven.net. A program with the same name as it's website. Good marketing. Running tests from within Visual Studio is the future.

Resharper. I'm still undecided on this one. It eats resources, slows down VS and remaps all of the keystrokes I've got trained into me from years of use. Seems incredibly powerful, but I only ever seem to scratch the surface with it. The latest 2.5 release supposedly gives performance increases.

Virtual CloneDrive. I'm disappointed that Microsoft's super-simple virtual CD control panel app no longer works on Vista. The best alternative I could find is this. It only maps a single drive and runs all the time, but it does the job.

Shell Extensions

I'm a massive shell extension fan (shell extensions extend Windows Explorer) so it's kind of surprising that I don't have many installed.

.net assembly shell extensions. Adds a nice little ".net" overlay to any .dll files that just happen to be .net assemblies. It also adds custom columns that appear in Explorer, but this bit doesn't work in Vista. It's worth it for the overlays.

IsoRecorder. Once you've got an ISO image, this makes it dead easy to burn straight to CD. Not sure if it supports Vista RTM at the moment (RTM ATM?)

CopyUrl. I really like this one, but haven't yet got it working in Vista. Adds a couple of new items to Internet Shortcut's context menu - copy URL, copy name (of item) and copy link (html formatted link of url and name). Dead useful, but not working for me right now.

iTunes. Purely for my iPod. All my music is ripped into Windows Meida Player 11 as part of my Media Centre PC Plan. Bit of a pain, though.

FoxIt Reader. A better alternative to Adobe Acrobat Reader, although I haven't tried the new version 8. It's fast and small, but it apes Adobes interface just a little too much for my liking. I'd like to see a PDF viewer that's just like Microsoft's XPS viewer - a simple, unobtrusive IE plugin.

Office 2007. And disappointingly, haven't had to do anything with it yet, so don't know if this ribbon thing is any good or not.

Stuff Still To Sort Out

This is stuff I need to install or configure, but haven't got round to it yet.

IIS7. Not your father's IIS. Need to spend some time on this one, I think.

Subsystem for Unix based applications. This is several blog posts in itself. This is Unix running on Windows, with all the tools you know and love (including the absurdly user-friendly awk). And the best thing? It's not Cygwin. (Ask me about Cygwin's thread local storage sometime, won't you?)

Xming. If you need to run X Windows System programs (such as SUA programs above), Xming is a great way of displaying them.

PowerShell. Just as soon as there's a Vista installer...

SDP. When you want to save a media stream, this free program seems to do the trick. Not sure if it only supports the mms: protocol (Microsoft), or whether it can handle Real and others too.

Init is surprisingly complex. The flags value can modify some of the behaviour of the filter. If cAttributes is non-zero, the aAttributes array contains the list of properties to retrieve - the caller isn't interested in any others. If neither flags nor attributes are specified, the default PSGUID_STORAGE set of property attributes should be returned. These are a default set that include things such as modified time, size and contents. They're defined in stgprop.h in the Platform SDK (it looks like it's missing from the lately released Windows SDK, which replaces the Platform SDK - we might need this later). It returns a flag to say whether or not the file has OLE properties attached to it. This is only really relevant for structured storage files (like Word documents), so we will probably always return 0 here.

The remaining methods are called in a loop. GetChunk is called to continue parsing the file until it finds the next interesting "chunk", and it returns what it's found in the STAT_CHUNK parameter. This structure is rather busy, so we'll just look at the edited highlights; there's a chunk type - text or value. A text chunk is the main content, the body of the document. If it's one of those, GetText is called, and the text is returned back in a Unicode buffer. If it's a value chunk, the STAT_CHUNK will have a FULLPROPSPEC member which will contain a property set id and a property index. The property set id is a GUID which describes a set of properties, like a category. The index is just an integer value that represents a property within the property set. An example of a FULLPROPSPEC is the PSGUID_STORAGE property set and the PID_STG_SIZE index. No prizes for guessing what this represents. The value of the property is returned as a PROPVARIANT in the call to GetValue - this allows data types other than strings to be returned, such as dates and numbers. Both GetText and GetValue always work on the current chunk, which means the object has state, which means it's apartment threaded. (I have a feeling we're going to have to take a look at threading soon enough). Once the whole file is parsed, GetChunk returns FILTER_E_END_OF_CHUNKS.

There's actually quite a bit more to this interface than I've just described. Each method has a couple of different return codes, and GetText and GetValue can be called multiple times, depending on the size of the content or the number of properties (e.g. keywords). I don't intend this to be an exhaustive guide to writing an IFilter, just an overview. Pay MSDN a visit and Google is always your friend. And then you need to know what the standard property sets are. You can find these in the Windows SDK (WDS v3) and the Platform SDK (WDS v2) as defines beginning with PSGUID or FMTID - shlguid.h has loads.

And then there's a great big question that especially relates to protocol handlers - what if the item you're trying to parse isn't a document? What if it's a directory?

I like it, and I agree with Long - it's not really a feature, but it does have a good, positive image on the end user's experience with Windows. I'd like to add another: the ubiquitous use of the "sorting/filtering/grouping/stacking drop down task pane from a header in Explorer's list view". (Might not be as fancy, but it's definitely a longer name than Long's.)

XP allowed you to sort items, by date, file type, whatever. You could even group on these attributes. But it was really awkward to set; a menu option buried in a sub menu on the right click. Vista's brought it front and centre, and it's a great way to slice and dice your file views.

One of the simplest yet most effective changes is to make this functionality far more discoverable by keeping the header bar visible at all times - in XP, it was only visible in details mode (which made sorting all the harder).

The feature set it exposes is terrific. It really augments the search functionality with filtering, sorting, grouping and stacking, but that's not my favourite bit. That would be finding it in places I wasn't expecting, the most surprising of which was the add/remove programs dialog. Once you've got more than a few applications installed, that list isn't the most friendly to work with. Being able to sort, group and filter (no stacking, but it's no big loss) all of my applications is brilliant. Looking for that application you just installed that's a pile of rubbish? Just filter the "installed on" date as today.

Now this is just lovely. A prototype for a (physical) desktop clock that wirelessly syncs with Google Calendar to show you your upcoming appointments.

Big deal, huh?

The difference, as ever, is in the details. It's (going to be) made by the people behind the Ambient Orb (you know, the one that's been hacked to show continuous integration build status. There, see. Now you remember). The background colour of the device changes to show that you're free, you've got 10 minutes before an event or you're in the middle of one. Nice.

But the really nice thing is the amount of information it displays on the screen without words. Two icons around the outside of the clock face show you when your work day starts and ends (e.g. 8am - 8pm). A black segment of the clock dial represents an event. And if you enter the location of the event in Google Calendar, the device will use Google Maps to work out how long it will take you to get there and display dots around the dial before the event to show when you should leave.

It's just lovely.

There's an online version, too, not that I've tried it. And there's a gallery of alternative designs to vote on, but none of them have the simplicity of the design on the homepage.