Project Looking Glass *sigh*

February 12, 2005

Hrm, looks like I am making a few Java-related posts today. Project Looking Glass is an effort by Sun Microsystems to add a new dimension (literally) to the end-user environment, you can see some screenshots of what they are thinking here (via Channel 9, interestingly enough).

So both Microsoft and Sun are gunning to improve the end-user experience. Whilst Avalon has impressive 3D capabilities the way that a developer can decorate 2D controls is nothing short of amazing – I’d characterise this as a revolution happening inside the application.

Looking Glass seems to be trying to revolutionize the shell by mapping 2D textures (application screens) to a 3D environment. Two different approaches – which is best?

Well to be honest, its apples and oranges, having said that – I think that end-users will actually benefit from Avalon’s rich in-application experience (TV generation users), but I think that Project Looking Glass will frustrate end-users who already struggle with 2D window management.

I’d love to see how much money each company is investing in usability studies.

BetaNews | Microsoft to Provide Glimpse of ‘Indigo’

Woohoo! Microsoft is going to ship an Indigo CTP at the end of March. Question – would anyone like to see some Indigo content at Code Camp Oz? We could do an impromptu session I am sure.

I just had to respond to this post linked to from the ClientJava blog. As Cedric pointed out in the comments, its very common to have to deal with marshaling updates onto another thread when performing operations in the background.

In .NET 1.0/1.1 the controls in Windows Forms are a little more forgiving but updating the UI from any thread other than the message pump is a recipe for disaster (especially for the DataGrid control). In .NET 2.0 the code has been tightened to throw an exception as soon as someone tries to update the UI from the wrong thread – this is a defensive technique to ensure that bugs don’t leak out into production code.

As Cedric pointed out – even AWT and Swing have an invokeLater() method (in .NET, its Invoke()).

The Gosling Thread

February 12, 2005

Nick points to a thread going on in the blogosphere at the moment about some recent comments that James Gosling made about Microsofts support for the C++ language inside the managed runtime and its ability to execute unverifiable code.

I know that I am no saint when it comes to making cheap shots at technologies, but I tend to distribute criticism fairly evenly and having worked in the trenches with both .NET and Java I think I am entitled.

In this case I think that Gosling probably needs to pull his head in a bit, and its not just a discussion about the trade offs of security when going after screaming speed, its actually a discussion about existing code investments.

There is a lot of C/C++ code out there that companies want to take with them. An implementation of C++ which bridges managed and unmanaged code is not just a good idea, its essential, especially in instances where there is a need to limit the number of managed/unmanaged transitions.

One performance note: I firmly believe that in the long run performance between a natively compiled C/C++ program and a program running on the CLR will be nill – in fact, the likely hood of writing a well performing managed app vs. unmanaged app is already pretty good.