Category Archives: microsoft

Microsoft Silverlight vs Adobe Flex

I am at Mix07 in London. Having looked in some detail as Adobe Flex and AIR in recent weeks, it is interesting to compare and contrast. I am looking primarily at the developer aspect, rather than video or multimedia.

Silverlight is not a direct competitor to Adobe AIR, in that it does not run outside the browser (though I guess you could do something funky with an embedded browser control). It is a closer competitor to Flex, though there is no exact equivalent to Adobe LiveCycle, which is not needed for Silverlight. However, the two technologies do have a number of parallel features, including the following:

  • Cross-platform runtime – Windows, Mac and Linux (the last a recent Microsoft announcement)
  • XML language to define the GUI
  • Embedded video capability
  • Timeline for animations etc.
  • Strongly-typed, object-oriented language with just-in-time compilation
  • Easy access to XML web services
  • Dedicated design tools (Expression Blend for Silverlight, Flash IDE for Flex and AIR)
  • Dedicated developer tools (Visual Studio for Silverlight, FlexBuilder for Flex and AIR

So what are the differentiating factors? There are some obvious differences. For example, Flash 9.0, and therefore Flex, runs on Windows 98; Silverlight 1.1 will not. On the Silverlight side, there is the advantage of language choices: Silverlight allows Visual Basic, C#, Python or Ruby. Flex has only Actionscript 3.0.

The real difference

These technical differences are dwarfed by cultural factors. Microsoft’s advantage is the comfort factor of Silverlight for developers already familiar with Visual Studio and C#, and perhaps beginning to look at WPF. Microsoft does strong tools, and FlexBuilder does not currently come close. This will help establish Silverlight for enterprise development. With increasing numbers of Macs popping up incoveniently in Windows networks, Silverlight could soon find a role. Similarly, for ASP.NET developers who want to give users a richer client, Silverlight is a compelling option.

Adobe’s strength is that it already has a strong hold on the designer community. While the Expression products are being well received, they would have to be extraordinary to win substantial numbers of switchers from Flash, Dreamweaver, Photoshop and so on. Adobe also wins on deployment. Flash is well established, whereas Silverlight is new; it will be especially hard for Microsoft to place it on non-Windows mobile devices.

I don’t see either of these technologies failing. I suspect Microsoft is introducing Silverlight in time to stem a bleed of .NET developers to cross-platform development with Flex and perhaps AIR, but I would be surprised to see large numbers of defections from Adobe’s camp.

Interesting questions

A few questions to which I do not yet know the answer:

  • How does the performance of Microsoft’s IL + JIT compiler compare with Adobe’s Actionscript 3.0 + JIT compiler? On Windows and on other platforms?
  • Adobe’s AMF protocol is more efficient than XML for data delivered via web services. Is this a significant performance benefit?
  • MXML vs XAML. My impression is that WPF is more expressive, but I have not researched it sufficiently to back this up. I would be interested in comments.

As ever, your thoughts are welcome.

Silverlight at Mix07 UK

I’m at Mix07 in London and Developer Division General Manager Scott Guthrie is talking about how to code a Silverlight 1.1 application. For me, it follows detailed briefings from Adobe on Flex and AIR, so I’m interested in comparing and contrasting the two technologies – look out for a post on this soon. I’m not going to go over every detail of Silverlight here – there are other places where you can do that – but will pick out some details that struck me as interesting, from Guthrie’s two sessions today.

Guthrie’s approach was to run through Silverlight 1.1 features using sample code, live demos and the occasional foray into Expression Blend. He focused on the developer perspective and showed lots of C# code, so the session was of little help if you want to work with the current 1.0 release, which lacks .NET support. If you want to try Silverlight 1.1 today, you can download an alpha release, along with Visual Studio 2008 Beta 2 and Expression Blend 2 Preview. There is a fair amount missing in the current Silverlight 1.1 alpha, as we discovered.

Silverlight 1.1 will run on Mac, Windows and Linux, the last of these via a new partnership with Novell and Mono. On Linux, target browsers will include Konqueror, Firefox and Opera.

Guthrie showed how to put together a simple Silverlight app – pretty easy, if you have any web design experience. In essence, you define a GUI in XAML, and then write code in C#, VB, Python or Ruby. Code is compiled to .NET IL (Intermediate Language); XAML is parsed at runtime but can be embedded as a resource. Apparently Silverlight apps will be compressed into Zip files by default in the final release, which will improve download time and may help with firewall issues – some firewalls block DLL files.

Silverlight 1.1 controls and layout

The current Alpha has few controls, but this will change in the final release. Available controls will include:

  • TextBox
  • CheckBox, ComboBox, Radio Button
  • ListBox, GridView
  • Slider, ScrollBox

Some controls will be data-aware, and it will apparently be easy to bind something like a GridView to data on a remove server, with data delivered via web services.

I asked about rendering HTML in Silverlight. There is no HTML control, but you can overlay HTML rendered by the browser, and in addition some folk have been working on a custom XHTML control.

The current alpha does scaleable x y layout (a slightly confusing idea); but there will be layout managers in the final release, including a StackPanel and a Grid.

I asked about a licensing model for commercial controls. Guthrie says there will not be one initially, but Microsoft will explain how to roll your own – I got the impression this might use Silverlight’s DRM features.


Another important forthcoming feature is skinning. Guthrie explained this as being like using an external CSS stylesheet (though it is not CSS). This is a designer-friendly approach and helps to reduce download size.

HTML interaction

Silverlight gives access to the browser DOM from managed code. In addition, a [Scriptable] attribute lets you access managed code from Javascript in the browser. Guthrie showed how this enables an interesting scenario: doing UI entirely in the browser, and using Silverlight as a non-visual control/library. The win here is that you can code in C# rather than Javascript, and get the benefit of just-in-time compilation as well as the Silverlight library functions.

Caching and cross-domain access

Silverlight relies on the browser to cache previously downloaded code and assets. Currently it can only access files from the application’s source domain, but there will be a way to do cross-domain access for controls and for web service calls – I believe this will use the concept of trusted domains, rather than being unrestricted. There will be limited local storage using the .NET isolated storage model, but this will be restricted to 1MB per store, and will reside in the browser cache, so it is not very dependable*.

Web service support and LINQ

Silverlight will support JSON, WCF and SOAP. It will also include LINQ, with the possibility of creating custom LINQ data providers – Guthrie mentioned possibilities like a LINQ provider for Amazon’s S3 service.

Async support and threading

Silverlight supports asynchronous calls to web services. It will also include a BackgroundWorker class for long running tasks.

Windows Mobile

A delegate asked when we will see Silverlight for Windows Mobile. Guthrie says this is planned, but said deployment was a greater challenge than technical implementation. The problem is dealing with several parties: device manufacturers, mobile operators, etc. It is hard to imagine Steve Jobs allowing Silverlight onto the iPhone; but I would have thought a Silverlight implementation for Enterprise deployment onto Windows Mobile devices would be feasible and useful. No timescale was given for a Windows Mobile implementation.

Quick reflection

This is a Microsoft-platform crowd and generally seem impressed with Silverlight, which gives them an easy route to browser-hosted, cross-platform .NET applications. If Microsoft hoped that an event like this would attract existing Flash developers interested in alternative platforms, let me just say that I do not see any evidence of this, even in the design-focused tracks. It will be a long haul.

As for Silverlight vs Adobe Flex and AIR (FLAIR?) – that is a subject for a separate post, which I hope to do shortly.

*Update: I’m not yet clear how isostorage works, despite talking to Scott Guthrie about it. Does it live in the browser cache or outside it? If it lives outside the cache, how is it that clearing the cache clears the store (Guthrie seems definite about this)? If you have two browsers, does a domain get two separate isostores, or one shared store? I’m trying to get more information about this.

Windows Live: why doesn’t SkyDrive integrate with Office?

Dare Obasanjo blogs about Windows Live, and refers us to where you can sign up for a number of free services.

I think Spaces is great, except that performance seems sluggish (though it’s getting better), and Live Writer is my blogging tool of choice. So there’s stuff here I like, but what is of most interest to me is Sky Drive. I’m a big fan of web storage, because it means you can work from several machines and everything stays up-to-date. It is also an effective off-site backup. Currently I use a subversion repository on my own site for this. I also use Amazon S3. Both are excellent, but saving and loading documents is not quite a seamless process. To see what I mean, consider the steps you would have to explain to a non-expert user. Then compare this to what most of us do every day: open a document, work on it, then hit save.

The puzzle is why Microsoft has not built this feature into Office. This is meant to be an advantage of the Microsoft platform: a single vendor stack in which everything plays nicely together (Apple does this better, of course).

One of the first things I did with SkyDrive was to copy an Excel file into it. That works fine, either through browser upload, or by drag-and-drop if you install the upload ActiveX control. Just for fun, I then went back to SkyDrive and “opened” the Excel document from it. What this really does is to download the file to a temporary location, and opens it from there. Everything seems fine until you hit save. Then you get:

Your changes could not be saved to ‘somesheet[1].xls’ because of a sharing violation. Try saving to a different file.

Click OK, and then I get a weird message about a file with a meaningless name having the wrong extension – because apparently Excel automatically saved to another temporary file without an extension. Bizarre behaviour.

Ok, I admit, I knew this would not work. But isn’t this how it ought to work? I think this would be a killer feature for Office and Windows Live: foolproof open and save from/to web storage.

I also think Office should cope better with what is, from the user’s perspective, a rather obvious sequence of steps.

Zoho has a plug-in that nearly works right, though it has two major flaws. One, it did not work properly for me at all, but just threw errors on saving. Two, it converts Office into Zoho’s online format. I understand why this is the correct thing for a Zoho plug-in to do, but I’d rather keep documents in their native format and forego true online editing.

ODF vs OOXML: A plague on both your houses

I’ve been writing a piece on Linux/Windows interoperability, and broached the tricky matter of file formats.

It struck me forcibly how much the situation has changed for the worse, for the average user who could not care one jot about XML or ISO for that matter.

Prior to Office 2007, at least a Microsoft Office user could email documents to a Linux Open Office user and they would most likely open OK. Now that’s no longer the case.

I guess Open Office users have always had to make allowance for Microsoft users by doing Save As or setting their defaults to compatible formats, when emailing documents the other way or sharing them on a network. That’s no better today. Open Office defaults to ODF which a default install of Microsoft Office will not open.

Both sides would probably say that this is the problem they are trying to solve. Nevertheless, from the user’s perspective we have gone backwards.

What a shame that Microsoft, IBM, Sun and so on were not willing to engage with each other to adopt a common standard acceptable to all parties, instead of treating document formats as a competitive weapon, never mind how much users suffer.

Silverlight is released for Windows, promised for Linux

Microsoft’s Silverlight is now fully released. Scott Guthrie’s blog has all the details, including what to me is the biggest news: an official partnership with Novell and Mono to support Moonlight, an implementation of Silverlight for Linux. Microsoft will supply the media codecs, while Novell/Mono will do the rest.

This is a major step forward for Microsoft. I have been blogging for years about how Microsoft would benefit by giving official support to Mono, and therefore promoting the .NET platform. Of course it is a two-edged sword. Mono is a competitor, and helps companies switch from Windows to Linux. On the other hand, Silverlight has no chance of broad adoption unless it is taken seriously as a cross-platform runtime, and supporting Linux will help a great deal with that.

Silverlight 1.0 does video, multimedia and vector graphics, but does not include the .NET runtime. This is to follow in Silverlight 1.1, which will therefore be of more interest to developers.

I see quite a bit of misunderstanding of how Silverlight relates to the full version of .NET. As I understand it, even Silverlight 1.1 makes no use whatsoever of the full .NET runtime or WPF (Windows Presentation Foundation). It is entirely self-sufficient, so you can run Silverlight 1.0  or 1.1 on a Windows box which does not have .NET installed.

Technorati tags: , , ,

MFC not dead – “massive update” planned

Herb Sutter refers to a comment by Bill Dunlap, a product manager for Visual C++, on the future of MFC:

MFC – we are working on a huge update to MFC that should knock your socks off.  I can’t tell you too much right now, but this is closer than you might thing <g>.

Intriguing, since with ATL and then the whole .NET thing, including managed C++ and C++/CLI, I’d assumed that MFC was all-but deprecated.

I can see the value of this for maintaining existing projects, but for new ones? I like this comment by Dan Shappir:

The only reason I can see for doing significant UI development in C++ is for cross-platform support, and in that case I would probably choose Qt.

Actually I can think of a few other reasons, such as performance and compatibility with older versions of Windows, but then again why not use Delphi?

Talking of Delphi, it’s interesting that according to Shappir’s post referenced above, Microsoft’s Visual C++ team had similar feedback to Borland/Codegear:

Damien Watkins, a Program Manager on the Visual C++ team, stated quite frankly that the feedback they have received from C++ developers is that they prefer to use C# for developing managed code for .NET. So what is the new positioning for C++? Apparently it’s:

  • A strong emphasis on developing unmanaged, native applications
  • Tool for achieving interop between existing native code and new managed code

I guess this ties in with renewed investment in MFC.

Technorati tags: , , , , ,

27 steps to download 2 documents – what happened to usability?

Robert Flaming has posted details of the 27 steps it took him to sign up for the Windows Installer 4.5 beta, though in the end he was only able to download two Word documents.

Perhaps it is not quite as bad as it sounds – several steps to get past IE’s download warning, for example – but even so, it is a neat illustration of the torture sometimes inflicted on users who want to accomplish a rather simple task.

How many potential applicants will give up part way through? Quite a lot, I’d have thought. Then again, perhaps this is a test of suitability for the intricate and confusing world of the Windows Installer.

Recreating iTunes in Silverlight

Browsing through Codeplex I came across this project to recreate iTunes as a Silverlight application. What’s remarkable is that author Jose Fajardo has kept a kind of developer’s diary on his blog, complete with YouTube videos here, here and here showing how he is recreating Apple’s music app as a Silverlight/Ajax web application.

The videos are not exactly gripping unless you are interested in the nitty-gritty of how to create a control in Microsoft’s Expression Blend and integrate it into a Silverlight application. If you are, then this sort of hands-on demo gives a great picture of real-world use. It’s a also an intriguing example of how to replicate another company’s expensive design efforts with just a few minutes in a suitable tool.

It looks like Fajardo is having a lot of fun with Silverlight, though if he completes the project I’m not sure what Apple will make of it. How’s the DRM piece coming along?

The Samsung i600 and Windows Mobile

I’ve been looking for a new Smartphone for a while, and decided to try the Samsung i600, a Windows Mobile device with strong connectivity (GPRS,Bluetooth,UMTS,HSDPA,wi-fi) and a tiny QWERTY keyboard. It is not a touch screen, which to me is a good thing in a mobile phone. I’ve not tried the finger-driven iPhone yet, but I did use a Palm¬†Treo for a while and found the stylus a nuisance. For me, email and web access are just as important as voice, and I’ve already found the keyboard useful. You can find the specs of the i600 elsewhere; but here are my observations so far.


I like the feel of the device. The central button and joystick is a pleasure to use, and the backlit keyboard is pretty good considering its size. The 320 x 240 screen is excellent (dust aside, see below), and browsing the web is a realistic proposition provided that you are not paying something ludicrous like £4.00 per MB (yes, that’s what some operators charge in the UK). I’ve not tried all the features yet, but I’ve had success with IMAP email, wi-fi, Bluetooth, and playing MP3 music.

The i600 has a neat “card wheel” UI on its home screen, which provides quick access to most of the features. Using the joystick or scroll wheel, you first find the card you want, and then scroll within the card to find what you want. For example, the Profile card lets you select a profile such as Normal, Silent, or Vibrate. The Now Playing card is particularly good, letting you pause, play and skip songs without leaving the home screen.

The camera is decent for a mobile, but still nowhere near good enough to replace a separate camera even for my limited use. You can also capture a jerky little video. There are actually two cameras, one on the back for taking pictures, and one on the front for video calls.

Others have found battery life a problem, but Samsung has solved it by bundling an extended battery and external charger in the box. Fitting the extended battery makes the phone a little thicker, but not excessively so. You also get a standard battery, which you can use as an emergency backup. I’ve found this more than sufficient. Apparently not all bundles include the extra battery, so it’s worth checking this point if you are considering the phone.

This is also a good device for developers, provided you are happy with Visual Studio. I was up and running quickly once I’d worked out the security issue (separate post coming soon). I did purchase an unlocked device, as I hate the whole contract circus. A Micro SD storage card is also essential.


Windows Mobile is still not as easy as it should be. I really think Microsoft should have ActiveSync sorted by now, but apparently not. When I first connected to my Vista desktop PC, Windows Installer started up, thrashed around for a bit, then declared it was quitting because a newer version was installed.¬†After that, nothing. I connected the device with USB, there was no error, but the Mobile Device Center could not see the phone. I fixed this by downloading Mobile Device Center 6.1. That mostly works, but I still have strange problems syncing with Exchange. This¬†works¬†through wi-fi provided I set the connection to “work” rather than “internet”, but not through USB. Perhaps I’ll work out why, but this sort of thing is frustrating and difficult, and online help is a masterpiece of polite unhelpfulness. Try a search for “cannot connect with current connection” (with the quotes) if you really want to know more.

More generally, I find navigation with Windows Mobile unpredictable at times. Example: I click Start, then Organizer, then Calendar. This fires¬†up the Calendar, which defaults to the monthly view. I select a day, and click OK to view an appointment. Then I click the Back button. I should be back at the monthly view, but I’m not: I’ve exited Calendar and I’m back on the Organizer group in the Start menu.

I find the email client similarly confusing. No matter how hard I try, I seem to end up switching out of the app completely when I don’t mean to.

A crazy omission in Windows Mobile for Smartphone is cut, copy¬†and paste. I couldn’t believe this at first, on a device with a keyboard, but it is true. I believe there are third-party solutions. I’ve also installed the trial of Documents To Go, which does support the clipboard, though this won’t fix Mobile Outlook.

No Flash support in Pocket IE.

I have a few complaints about the i600 itself. No socket for a standard headphone jack, so you have to use the supplied ear buds. Dangly plastic covers for the¬†data cable and Micro SD ports, which are bound to break off in time. No support for Micro SDHC, which means a 2GB limit on the storage card. I’ve also applied the official¬†Windows Mobile 6.0 upgrade¬†(pretending to be from the Netherlands)¬†and was disappointed to find no Mobile Office – having said which, Documents To Go is probably better in any case.

Most seriously, I¬†can already see dust behind the screen.¬†It’s not yet a big problem, but how much worse will it get in prolonged use? There appears to be no fix other than returning the unit for service or¬†replacement.¬†


Despite the cons, this is easily the best mobile I’ve used.

Technorati tags: , , , ,