Category Archives: Uncategorized

Bob Dylan in Birmingham, April 2009

I made my pilgrimage to see Dylan last night, at the National Indoor Arena in Birmingham.

I call it a pilgrimage because first, I am in awe of the man, and second, my expectations in terms of entertainment are modest. He does gruff these days – very gruff. That’s how it is, and you have to get over it or not go.

I started my evening with a drink at the Prince of Wales, a traditional pub in the middle of Birmingham’s urban desert. It felt very much as it did a couple of years ago when I last saw Dylan. Mostly older fans, and many of the ones I spoke to had not seen Dylan for years; 1978 in one case. I did meet a hard core fan though, who had already seen Dylan at Sheffield and at the Roundhouse in London. Sheffield was better, he said.

Dylan’s new CD is just out. I asked the tour veteran if he would play anything from it. “No chance.” Why not? “Because he’s crackers. He really is”.

I turn down a programme at £12 and a poster at £7. I still want a souvenir, so I pick up a free flyer instead. My ticket is an eticket, which lacks soul; I found myself picking up someone else’s discarded ticket at the end as a memento (I still have my Earls Court ticket from 27th June 1981; great memories).

I am seated in the middle of the stalls, just in front of the soundboard. It is a good spot for sound, but my advice if you go to see Dylan is to get as close to the front as possible. Otherwise, you will be surrounded by chatterers, as I was. Pleasant people I am sure; but I did not spend my money to hear them. One woman tried to engage me in conversation during Stuck inside of Mobile. She saw me taking notes and said, “Are you putting all this on Facebook?”

All this highlights the problem with this kind of concert: Dylan is out of sorts with his audience. He plays keyboard most of the night and faces sideways across the stage, maybe signifying lack of engagement. I enjoyed the concert, mostly, and at times it was outstanding. Gruff Bob works best on songs like Workingman’s Blues and Ain’t Talkin’. Mystical and powerful. But many of those present do not know these songs and do not respond. Unfortunately, the songs they do respond to, like Mobile, or Highway 61 are all too often performed as throwaways; enjoyable, but much less than Dylan is capable of.

Dylan’s fairground keyboard conveys a cheery mood – almost too cheery for my taste. I prefer my It’ Ain’t Me Babe or Man in the Long Black Coat dark and intense. His voice is still powerful though. I am convinced that at the right moment Dylan can be as utterly transcendent in 2009 as ever in his career.

Desolation Row – not a great performance, but I love to hear this song. The lyrics are endlessly fascinating. The big acoustic bass works well.

Towards the end we get Watchtower, a favourite of mine. “Nobody knows what any of it is worth”, sings Dylan. The point is reinforced when I pass a couple of fans on my way back to the station. “I’m sorry it wasn’t very good”, one says to his friend. I say nothing of course, but I am surprised by my internal reaction. What do you mean? YOU JUST SAW BOB DYLAN.

The set list:

The Wicked Messenger
It Ain’t Me, Babe
High Water
Stuck Inside Of Mobile With The Memphis Blues Again
Man In The Long Black Coat
Desolation Row
Honest With Me
Workingman’s Blues
Highway 61 Revisited
Ballad Of A Thin Man
Most Likely You Go Your Way (And I’ll Go Mine)
Ain’t Talkin’
Thunder On The Mountain
Like A Rolling Stone

All Along The Watchtower
Spirit On The Water  
Blowin’ In The Wind

Signing into Windows Live with CardSpace

Roger Jennings shares his frustration that after nearly two years in beta, Information Card management for Windows Live still does not work reliably.

I’ve tried this before, but since switching to 64-bit Vista I’ve not used CardSpace. I had another look.

My first experience was poor. I headed to the card management page, entered the details of a Live ID, and clicked Change. Internet Explorer appeared to hang. I then tried to open CardSpace in Control Panel, but it gave me an error message. I looked in the event log and found a series of event 269 errors, with the message:

The Windows CardSpace service is too busy to process this request.  User has too many outstanding requests.

along with a .NET stack trace.

Undeterred, I rebooted and tried again. I took the precaution of adding a card to CardSpace before visting the sign-up page. Everything worked, and I associated a new card with my Live ID.

Here’s how it works now. Let’s say I’m not logged in and I try to visit a Live property such as SkyDrive, my favourite:

I get redirected to the Live sign-in page, where I can choose between password and information card in a drop-down menu:

I still have to type my email address. I’m not sure why that’s necessary, since the email address is also on the card. Still, I go ahead and then get to select a card. The dialog appears on the secure desktop, always a slightly jarring experience. I choose the one associated with Windows Live, which happens to be the only card I have:

Shortly after, I’m in:

Did I gain anything over typing the password? In terms of user experience, not really. Still, I never typed my password, which means it could not be phished. Even if I attempted to send my self-issued card to a fake site, it still would not be any use to the phishing site. If I could use the same card for multiple sites, and had cards from trusted third-party identity providers, then I would begin to benefit further. This paper from 2006 – three years ago – has more information.

Whenever I’ve researched CardSpace or talked to its champion Kim Cameron I’ve been impressed. It’s tough for journalists though, since the system is hard to explain in a few words, and few people understand it. It is even harder because Microsoft has done so little to promote it. Further, if both Jennings and myself had problems using it, that does not say much for the reliability of the client. Since rebooting my PC fixed it, it suggests the problems may not be at the Live.com end, but it is hard to tell. Overall, an opportunity squandered.

A Silverlight database application with image upload

I’ve been amusing myself creating a simple online database application using Silverlight. I had this mostly working a while back, but needed to finish off some pieces in order to get it fully functional.

This is created using Silverlight 2.0 and demonstrates the following:

  • A bound DataGrid (as you can see, work is still needed to get the dates formatted sensibly).
  • Integration with ASP.NET authentication. You have to log in to see the data, and you have to log in with admin rights to be able to update it.
  • Create,Retrieve,Update,Delete using ASP.NET web services.
  • Image upload using Silverlight and an ASP.NET handler.
  • Filter a DataGrid (idea taken from here).
  • Written in Visual Studio 2008, and hosted on this site, which runs Debian Linux, hence Mono and MySQL. Would you have known if I had not told you?

You can try it here. I’ll post the code eventually, but it will be a couple of months as it links in with another article.

MVP Ken Cox notes in a comment to Jesse Liberty’s blog:

Hundreds of us are scouring the Internet for a realistic (but manageable and not over-engineered) sample of manipulating data (CRUD operations) in a Silverlight 2 application. There are promising pieces of the puzzle scattered all over the place. Unfortunately, after investing time in a sample, we discover it lacks a key element – like actually saving changed data back to the database.

I can safely say that mine is not over-engineered, and that yes, it does write data.

Google App Engine is easier than Windows Azure for getting started

Hello App Engine

Yesterday morning I saw the news that Google App Engine was now open for Java as well as Python applications – in beta, that is. I signed up and received notification of access almost immediately. I read the notes on getting started with Eclipse. Fortunately I already have Eclipse installed. I just needed to run Eclipse, and enter the URL of the Google plug-in into the software update configuration dialog. The plug-in downloaded and installed in a few moments. Then it is a matter of File – New – Other and select Google Web Application Project. Enter a project and package name, click Finish.

The wizard creates a skeleton Java Servlet application. I made a few trivial modifications to both the servlet code and the home page. Clicked Run, and the app runs on a local server. It worked. Next, I needed to deploy it. I signed into my App Engine console, and created a new application. I had to find a name that was not yet taken, and selected javaisgo. This generates an application ID. I copied this into the appengine-web.xml file which the Eclipse wizard had generated. Then I hit Deploy App Engine Project in the toolbar. I was prompted for my Google account name and password, the application uploaded, and it was done; you can see the results at http://javaisgo.appspot.com/.

Although Python is dynamic and fashionable, Java is probably the world’s most popular language for business development. I expect the ability to create and deploy applications so easily and for free will be attractive to many, leaving aside anxiety about Google’s plans to take over the Internet.

Hello Windows Azure

All this reminded me that although I had signed up for the Windows Azure CTP (Community Tech Preview) a while back, I had not got round to deploying a web application. I did deploy a Mesh-Enabled Web Application, part of the Live Framework, a process which I found frustrating and ultimately disappointing. That is a different kind of thing though; whereas an Azure ASP.NET application takes a similar approach to that of Google App Engine – write your web application, deploy to the cloud provider’s servers.

I already had an Azure account and developer token; how long would it take to deploy a Hello World project to Azure? Well, first you have to install the Windows Azure Tools for Visual Studio. I tried running this, but the dependencies were not in place. Although I already had Visual Studio 2008 SP1, SQL Server, and .NET Framework 3.5, I needed to add IIS 7.0 with ASP.NET to my development machine, and to configure the .NET Framework to support WCF HTTP Activation, which is off by default. See here for details. I did all this and the tools installed. The SDK also gets installed. When you build and run the samples, it starts up two new services on your machine, Development Fabric and Development Storage.

Next, I started Visual Studio, which apparently has to be run with full local admin rights for Azure to work. New project, Visual C#, Cloud services, Web Cloud Service (essentially an ASP.NET application). This looked familiar, and I quickly added a button and an event handler to make sure it worked. When you debug, it runs on the local development fabric.

Time to deploy. This is where I ran into some difficulties. I logged into the development portal and created a new Hosted Services project, called Azure is go. Next, I went back to Visual Studio and used the Publish wizard. Note: you must not use Publish from the Build menu, as this does not work. You need to right-click the solution in the Solution Explorer and choose Publish from there. This compiles two files, a .cspkg which contains your application, and ServiceConfiguration.cscfg which is configures it.

The wizard is disappointing: it merely opens an Explorer window showing your deployment files, and opens the Developer Portal in a web browser. You deploy your project to a Staging area; then when you are happy with it, hit Promote to copy it to the production URL. In order to deploy, you have to select the two deployment files manually in a web upload dialog. The reason the Wizard opens the Explorer window is to show you where they are so you can copy the path. All rather clunky, though not difficult.

After I did this, the Developer Portal displayed a spinning bagel and the words Package is deploying; then eventually it said Allocated. I hit Run, and it said Initializing. Nothing seems to happen quickly with Azure. It said Initializing for a long time; I got bored and hit Refresh. This may have been a mistake. My Staging icon went red and I got a message: InternalServerError – Information is not available.

I decided to delete the deployment and retry. I clicked Delete, whereupon Azure told me it couldn’t delete the deployment because “tenant status is currently Running”. That almost seemed hopeful; yet the test URL still did not work. I clicked Stop – pause while it stops – then Delete – pause while it deletes – then re-compiled and re-deployed.

My second effort worked, after the usual pauses. I then selected Promote and the application arrived at its final URL: http://azureisgo.cloudapp.net. As with App Engine, it is good to know that your web site is running on a scalable data center rather than on a single machine or virtual machine, and currently without any cost.

These hello world experiences may not seem important later, when you are buried in the intricacies of a real application, but they do have an impact on your desire to explore and experiment with a new platform. Judging from my own experience, getting started with Google App Engine is easier than it is with Azure, even for a Windows developer already set up with Visual Studio. The long pauses as Azure thinks about deploying your project also make a bad impression, in contrast to App Engine’s near-instant response. Maybe it will all come right with Visual Studio 2010 and the final release of Azure. In the meantime, this does nothing to shake my feeling that Microsoft’s Azure launch needs attention if it is to win developer mindshare.

Intel network driver 64-bit annoyance: won’t install, won’t uninstall

I’m mostly using Vista 64-bit these days and enjoying it. The system is stable, fast and responsive. At least, it was until I started using a dual display; this morning I got a blue-screen, which Windows assured was because of the display driver. I also noticed that the Windows Problem Reports and Solutions applet said that my Intel network driver was causing problems and should be updated, so after updating the NVidia graphics driver, I also downloaded the latest from Intel and tried to run it.

It wouldn’t install. It got almost to the end, then declared:

Error 1713. Intel Network Connections cannot install one of its required products. Contact your technical support group.

The event log also refers to System Error: 1605. This means: This action is only valid for products that are currently installed.

The solution is to uninstall the existing Intel networking utility. Not easy, since bizarrely the uninstall fails with a report that the software is not designed for this version of Windows. So why did you let me install it then? And why not let me remove it?

The next step is to use msizap, also known as the Windows Installer Cleanup Utility, to delete the installation from the Installer database. Note that it doesn’t install any actual files. I downloaded the cleanup utility here, but it did not work; when I tried to run it, the GUI did not appear. That download seemed quite old, so I installed the more recent Windows Installer 4.5 SDK which includes an updated msizap. That version is command-line only, but I copied the new msizap to the Windows Installer Clean Up folder in Program Files (x86); then the GUI worked too. Removed the Intel networking utility, re-installed the updated driver, and all is well.

Thank also to this thread for some useful pointers.

Technorati Tags: ,,,

CSS: a long wait for the aha moment

I’ve been messing around with web form design recently; started with a table layout, decided it was horrible and unmanageable so redid it with CSS. I came across this example which had more or less the layout I wanted – it’s the form about half way down that looks like this:

Looks simple enough; and is based on an idea by CSS guru Eric Meyer; so I copied the code and tried it. Unfortunately my version looked like this:

I squinted at the code again and noticed that a style defining a little hack called div.spacer was missing from the sample code though it is mentioned earlier in the article. Added it, and now my form looked like this:

Better, but frankly not that close to what I wanted. What was wrong? Should the fields float:left instead of float:right? It made little difference. Then I noticed that the example on the page was real code, not just an image. I downloaded the actual CSS it was using. Of course it was an obvious error. The sum of the widths assigned to the label style and the field style was greater than the width of the containing div. Increase that, and all is well:

Great stuff; but it reminded me how tricksy CSS is. With both cascades and inheritance, and exceptions such as the fact that some properties do not inherit, figuring out exactly what style attributes apply to an individual element is a challenge. The positioning rules are complex and often do not work as I first expect. Styles can be defined in numerous places; and while external CSS files are easier to manage than those defined within HTML, they soon get long and hard to navigate.

By way of mitigation, CSS is powerful; yet as the above example shows, it can still need workarounds (div.spacer in this case) to achieve the result you want.

I suppose I’m waiting for that aha moment when it all makes perfect sense; but it seems a long time coming. Worried that it was just me, I found this reassuring post from Sho Kuwamoto:

I used to think of myself as knowing a lot about CSS. For starters, I’d been responsible for the CSS implementation in Dreamweaver. I was also a member of the W3C CSS working group. I wasn’t a major contributor (I didn’t author any of the chapters of the spec, for example), but I thought I knew the spec pretty well.

It’s been a while since I’ve touched CSS, and in coming up with the design for this blog, I was reminded again how difficult it is to use CSS to get the layout you want. It was incredibly difficult. I couldn’t get it to work and I ended up having to google around to figure out how other people had done their page layouts.

I’ve also noticed that the aforementioned Eric Meyer is increasingly critical of the language. In his post Wanted: Layout System he writes:

Maybe CSS isn’t the place for this. Maybe there needs to be a new layout language that can be defined and implemented without regard to the constraints of the existing CSS syntax rules, without worrying about backwards compatibility. Maybe that way we can not only get strong layout but also arbitrary shapes, thus leaving behind the rectangular prison that’s defined the web for almost two decades.

It’s too late of course. Now that Microsoft’s Internet Explorer 8 is out there is decent support for CSS across all the major browsers. What’s the chance of getting agreement on a new layout system now? The only realistic alternative is to work increasingly in Adobe Flash or Microsoft Silverlight, which is proprietary badness but can be attractive.

Mix09 Day One: Silverlight 3.0 is launched

I’m at Microsoft’s Mix 09 conference in Las Vegas, where VP Scott Guthrie has unveiled Silverlight 3.0, the next iteration of the cross-platform browser plugin that renders multimedia and executes .NET code.

There’s plenty of good stuff in Silverlight 3.0 and it’s been well received. Highlights are pixel-level graphics API (which lifts any restrictions over what kind of user interface you can do in Silverlight), offline/desktop app support, deep linking which means you can have urls that point to dynamic pages within your applet, binary XML for fast access to remote data, ClearType fonts, import from Adobe PhotoShop and Illustrator, lots of cool features in Expression Blend 3.0 (which now looks like a tool that designers might actually want to use), and support for more media codecs including H.264 and AAC.

Can Microsoft beat or match Adobe? One notable aspect of Mix is that the people here seem to be largely Microsoft platform developers (not designers), interested in rich internet applications and going cross-platform. The sessions here on developing business database applications have been packed.

It is a contrast to the attendance I saw at Adobe’s Max Europe, which was designer-focused with Macs everywhere. There’s little evidence so far of Silverlight breaking out of the Microsoft niche (large though that is) and becoming something that the wider web development community takes seriously.

That could change if Silverlight achieves greater visibility and installed base (latest figures from riastats show only around 20% of browsers have the plug-in installed). The Soyatec Eclipse-based development environment, which apparently Microsoft funded, could also be important, since many web developers and designers do not run Windows.

Still, I don’t want to underplay the significance of Silverlight within the Microsoft community. The guy from Netflix made a big point of the value of zero install for Silverlight applications (once the runtime is installed). Many users are wary of anything that has to be installed, whether through fear of malware or simply experience of bad installs. Add cross-platform to that, now with desktop support, and Silverlight looks attractive for .NET developers.

Mono leader Miguel de Icaza made an interesting comment on Twitter today:

Wpf will be irrelevant because sl3 is xplat and the subset that matters. Full machine access is irrelevant or trivial to do

I also spoke to Microsoft Rich Client product manager Brad Becker today, who told me that one day WPF and Silverlight might merge, or become different profiles of the same thing.

Silverlight is becoming capable enough that it could be used for an increasing proportion of business applications. It fits the cloud computing model, and if this grows as expected then being sandboxed from local resources becomes less important, and of course has security advantages.

Latest steps in the Google dance: brands, or not?

There’s a buzz in the SEO community about an update which the search company has made to its algorithms – though Google’s Matt Cutts calls it a change, if you can figure out the difference, albeit one important enough to have a name within the company – it’s “Vince’s change”, after the employee who contributed it.

According to SEO guru Aaron Wall  it is related to CEO Eric Schmidt’s comments last year that the Internet is a “cesspool” of false information. Big idea: promote trusted brands in the search results to ensure quality in the top hits.

As usual with Google, it’s hard to discern whether this is a big deal as Wall claims, or a minor evolution as Cutts presents it. Still, it is worth a few observations.

First, it seems obvious that Google’s original big idea, pagerank based on incoming links, is becoming less and less useful. It has been killed first by the SEO industry itself and its unceasing link farms and exchanges, and second by Google’s promotion of the “nofollow” attribute, which ironically means that many of the best incoming links are now supposedly ignored, while the SEO folk ensure that low-quality links which are not tagged nofollow abound.

That being the case, Google has to look for other ways to rank sites. According to Cutts, there are three things (in addition to pagerank) that it tries to identify: trust, authority, and reputation.

The brands idea is an easy solution. Prefer the well-known names; that way you may not get the best content or the best price; but at least users generally won’t be scammed.

The potential consequences of this kind of thinking are far-reaching. It is undermining one of the Web’s key attractions, which is low barriers to entry. If SEO becomes a matter of building a big brand, it is no different than the old world of big-budget marketing campaigns (and perhaps that should not come as a surprise).

The other twist on this is that users searching don’t necessarily want the big brands. Rather, they want the best information. Further, if a user wants to find a big brand on the Web, it does not need Google to do so. If Google goes too far in promoting familiar names above the best content, it leaves an opportunity for other search engines.

I think Google is smarter than that. Nevertheless, the problem which Schmidt refers to is real, and I reckon that barriers to entry on the Internet are rising and will continue to do so.

The power Google exerts to make or break Internet enterprises and to influence the flow of information is downright spooky, mitigated by the fact that it does an excellent job as far as I can tell (and there lies the rub).

Finally, one tip for Google. Scrap nofollow. It was a bad idea, for reasons which only now are becoming obvious. If I were building a search engine today, I would take little or no account of it.

PS great comment from @monkchips on Twitter just as I posted this entry:

for my purposes google search has actually become less useful over time. Now its kind of like a mall of corporations

How will Microsoft make money from Silverlight?

Indeed, will it do so? I like Silverlight a lot; though I appreciate that to a Flash developer it may seem pointless. It does a lot of stuff right: small download, powerful layout language, cross-platform (with caveats), rich media, fast just-in-time compiled code.

Still, what intrigues me is how Silverlight has come from nowhere to what seems to be a central position in Microsoft’s product strategy in just a few years. What’s the business case? Or is it just that someone high up experienced a moment of horror – “Flash is taking over in web media and browser-hosted applications, we gotta do something”?

Let’s eliminate a few things. It’s not the design and developer tools. Making a profit from tools is hard, with tough competition both from open source, and from commercial companies giving away tools to promote other products. I don’t know how Microsoft’s figures look for the Expression range, but I’m guessing they bleed red, irrespective of their quality. Visual Studio may just about be a profit centre (though the Express series is free); but Silverlight is only a small corner of what it does.

Nor is it the runtime. Adobe can’t charge for Flash; Microsoft can’t charge for Silverlight.

I asked Twitter for some ideas. Here are some of the responses:

migueldeicaza @timanderson, my guesses:WinServer built-in-steaming;Strengthening .NET ecosystem, and client-server interactions;Keep share in RIA space

IanBlackburn @timanderson Isn’t Silverlight going to become the "Microsoft Client" and central to s+s?  Apps built with it can be charged in many way

harbars @timanderson no doubt with annoying adverts

mickael @timanderson isn’t silverlight a defensive move against other RIA platforms (like Adobe’s one)? They might only plan selling developmt tools

jonhoneyball @timanderson In the long term by hosting tv stations’ internet traffic and providing the charging/hosting/download/player model.

jonhoneyball @timanderson ie azure cloud + silverlight + someone elses content = ms revenue. no, it wont work, but its not unexpected ms-think.

jonhoneyball @timanderson why no work? price war to come on cloud host/delivery etc Someone will host BBC for free. Game over

There are two main themes here. One is media streaming; as the Internet takes over an increasing proportion of broadcasting and media delivery (note recent comments on Spotify) Microsoft plans to profit from server-side services. The challenges here are that there may be little money to be made; Adobe has a firm grip on this already; and Apple will do its own thing.

The other is about applications. This is the bit that makes sense to me. Microsoft knows that the era of Windows desktop clients, while not over, is in long-term decline; and that applies to applications like Office as well as custom business applications. Silverlight is a strong client platform for web-based alternatives. So I’m voting for Ian Blackburn’s comment above: it’s the Microsoft Client.

If that’s right, we’ll see Silverlight embed itself into more and more of Microsoft’s products, from desktop to server, just as Adobe is gradually remaking everything it does around Flash.

The difference is that Microsoft has far more invested in the status quo: selling Windows and Office. I’m guessing that there are heated internal battles around things like Web Office. The briefing I attended at the 2008 PDC on Office Web Applications was fascinating in respect of its ambivalence; for every web feature shown, the presenters wanted to emphasise that desktop Office was still the thing you should have.

Technorati tags: , , ,

What happens when you click a Windows 7 taskbar icon?

While working on a Windows 7 piece recently, I tried to write a description of what happens when you click on an icon in the Windows 7 taskbar. Trouble is, there are so many contextual variations that it is hard to describe concisely. Here’s what I’ve got so far; I may have missed a few things.

Left click or primary mouse button:

If the app to which the icon points is not running, it runs and comes to the front.

If the app is running and there is only one instance, it comes to the front.

If the app is running and there are two or more instances (might not be real instances; could be several Word documents or tabs in IE), then preview windows appear  – provided that Aero is enabled. Neither comes to the front until you take further action. If you move the mouse over a preview window, the associated app window comes to the front temporarily and other windows go transparent; if you move the mouse away from the preview without clicking it reverts to the background.

This can be counter-intuitive – if you move your mouse over the seemingly activated window without clicking the preview first, it disappears because it does not really have the focus.

Previews can contain their own controls such as buttons – so strictly, clicking a preview will only bring its main app window to the front if the click is not overridden by a button or other control on the preview.

Hovering the mouse

Hovering the mouse over an icon is almost the same as clicking: it raises the previews, though it will do so even if there is only one instance. The exception is when previews are already locked to another icon. Clicking an icon locks its previews into view, and they remain until you click somewhere else.

Other variations:

A right-click (or secondary mouse button) raises the jump list – a contextual menu that app developers can customize.

Click, hold and drag up also raises the jump list. This is really aimed at touch users.

A middle-click (or mouse wheel click) or SHIFT+click, starts a new instance of the application. Users may have trouble with this. It is not obvious how to start a new instance. There is also a link on the jump list, but again it is not really intuitive.

SHIFT+CTRL+Click starts a new instance with elevated permissons, subject to an elevation prompt if UAC is enabled.

The Show Desktop icon is special. If you hover the mouse there, app windows go transparent so you can see the desktop. If you click there, all apps minimize. If you click again without activating any app, all the apps which minimized are restored; however if you restore an individual app first, the Show Desktop icon loses its memory and reverts to minimizing all apps.

Confusing or intuitive?

Describing all the variations makes it sound confusing, but in practice you soon learn what to do. I can see the reasoning behind the behaviour. I do find it odd that left-clicking an icon doesn’t necessarily bring the application to the front – but Windows doesn’t know which instance you want. The full-window preview could do with a special outline or a degree of opacity to show that it is not fully activated. You can turn both features off from taskbar properties if you prefer. Overall the behaviour is OK and a step up from Vista.