Category Archives: web authoring

Want a job? Learn Silverlight, not WPF

I keep an occasional watch on technology trends in the UK by the haphazard technique of browsing to Jobserve.com, bashing in some developer platforms, and seeing how many vacancies come up. I last blogged about this in August 2006, and before that in January 2006, March 2005, and August 2004.

Real-world job vacancies trail the conversation we have about cutting-edge web platforms by some margin. To give you an idea, in March 2002, three months after the first official release of C#, Jobserve had just 153 vacancies for C# developers, compared to 1894 for VB and 2092 for Java. Today, C# has 2933, VB and VB.NET 1906, Java 3741.

But that’s not what caught my eye when I looked this morning. I searched first for WPF, and then for Silverlight. WPF went final in November 2006, at about the same time as Vista was released to manufacturing. That’s nine months ago, but Jobserve has only 28 jobs which specifically mention WPF.

Silverlight 1.0 was released earlier this month. It’s a great video player, but many developers are waiting for Silverlight 1.1, due sometime in 2008, which supports .NET programming as well as multimedia. Component vendor Infragistics told me at the UK Mix07 that it is not bothering to release components for Silverlight 1.0, but has lots in the pipeline for 1.1. Keen to work with Silverlight in the UK? Jobserve has just 30 jobs to choose from.

The numbers are tiny (thought let me note, even CodeGear’s long-established Delphi can only muster 93 jobs), but I’m intrigued that Silverlight is actually a hair ahead of WPF in this context. Tomorrow it may be different; but it accords with my own assessment. I like WPF; it’s a better API than Win32 for coding a GUI. But it is a hard sell to developers of those boring business apps that make up the bulk of software development today. Unless you are making big use of visualization, it’s likely you will be more productive with tried-and-tested Windows Forms, or native Win32 code.

Silverlight is different. It is an immediate win if you have desktop .NET apps which you would like to convert to web applications, or ASP.NET apps for which you would like a richer client. Why Silverlight and not WPF? For one thing, cross-platform, essential for public web applications and very useful internally as well, with all those Mac-using designers (and now the CEO wants a Mac too). For another thing, lightweight deployment. When you install or upgrade the .NET runtime on a Windows box, you hold your breath as it updates a gazillion system components and hope that no bizarre error code appears. When you install Silverlight, you just click OK to a browser dialog, and it works.

The contradiction in the title of this post is that both Silverlight and WPF use XAML, so in learning one you are to some extent learning the other. Nevertheless, I now believe that Silverlight will be a more significant platform than WPF, and I’ll be interested to see if future job vacancies back up that prediction.

Update: Ryan Stewart has some US figures which are more positive for WPF, though again the absolute numbers are small. Interesting to watch.

LiveStation uses peer-to-peer, Silverlight for live TV

My final report from the UK Mix07 “Sneak peeks.” We were shown LiveStation, a Silverlight application which uses peer-to-peer technology developed by Microsoft Research to show live TV in a desktop application. Desktop and Silverlight? Yes, the app we say uses browser hosting to transform Silverlight into a desktop runtime. This is not too good for the cross-platform aspect, though it would seem possible to do the same thing with say WebKit (Safari as a component) on the Mac.

The broadcast quality was adequate for casual viewing but not great. However the player does look hassle-free to operate. Unlike the BBC’s troublesome iPlayer, this is for live TV rather than playback of previous broadcasts. Still, with both Silverlight and Flash supporting high quality video codecs, running cross-platform, and offering smooth installation with plenty of scope for interactivity, it looks like the BBC has some good options if it decides to re-examine its iPlayer technology.

The company behind LiveStation is Skinkers, which acquired peer-to-peer technology from Microsoft in exchange for a minority equity stake.

Technorati tags: , , , , , ,

Microsoft to support PHP in Expression Web 2.0

The closing session of UK Mix07 was a “Sneak peeks” in which we were shown a variety of snippets of varying degrees of interest. One was a brief glimpse of Expression Web 2.0, Microsoft’s web design tool, showing “PHP script” on the File – New menu.

The extent of this support was not discussed. The minimum would be some level of syntax highlighting, which would be trivial to implement, so this may not amount to much. Still, it is interesting as a sign of the times. When I spoke to some folk from Zend a couple of months ago, they emphasised their IIS support and good relationship with Microsoft, so it looks as if both sides want to play nicely together.

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.

Will Adobe’s tools ever run on Linux?

At an Adobe briefing last week I mainly ran Ubuntu Linux on my laptop. It seemed a good opportunity to ask Software Architect Kevin Lynch whether Adobe’s tools like Dreamweaver or the Flash IDE will ever support Linux:

We’re constantly looking at Linux as a platform for our applications. Our runtimes work on Linux; Flash Player runs on Linux; AIR will run on Linux. It may make sense to bring our tools there. There’s a relatively inexpensive way to bring tools to Linux called Wine. It’s not the best way to do it, but it kinda works. We’ve done that a couple of times with tools to see what the response is. Will people adopt them, do they care? We haven’t yet seen that momentum happen. But we’ll keep trying things occasionally, and if we start to see momentum, we’ll start investing more. Until then, we’ll stay at the runtime level.

Kevin Lynch

Kevin Lynch, Adobe Senior Vice President, Platform Business Unit and Chief Software Architect

My comment: considering the limited adoption of desktop Linux, and the free software culture among many Linux users, I doubt Adobe is losing many sales because of its Mac/Windows tools policy. That could change, and the answer I got from Lynch was more positive than I had expected – though don’t expect a CS3 Linux release any time soon.

Technorati tags: , , ,

Adobe AIR: 10 reasons to love it, 10 reasons to hate it.

I attended two days of briefings on Adobe’s developer-focused products, especially the forthcoming AIR (Adobe Integrated Runtime).

In essence, AIR is the Flash player supplemented by additional features to enable applications that are not browser-hosted, but installed as desktop applications. AIR is great for some scenarios, weak for others. Here’s 10 reasons to love it:

1. Fast execution. ActionScript 3.0 has a JIT (just-in-time) compiler, putting it on a par with Java or .NET for raw performance.

2. Cross-platform. AIR apps will run on Windows XP and Vista, Mac OS X (PowerPC and Intel), Linux (though not in the beta).

3. Easy conversion of existing Flex or HTML applications. It’s the same basic runtime. In the case of HTML, AIR apps rely on WebKit, the core component in Apple’s Safari web browser.

4. Easy installation. Provided the runtime has installed successfully, installing AIR applications is likely to be be trouble-free, since all the files go into the application directory.

5. SQLite. AIR applications have use of a fast local database.

6. Synchronization services provided you use LiveCycle. Synchronization is the difficult part of enabling offline support in occasionally connected applications.

7. Rich design and multimedia. This is Flash, so ideal for highly customized UIs, animation, sound and video. Adobe is proving the point by creating a media player built with AIR. Existing Flash developers can easily use their skills to build AIR applications.

8. Great for web vendors who want a desktop presence. For example, one of the demo applications is for buying on eBay. If eBay persuades you to install it, then it is no longer dependent on you firing up a web browser and navigating to its site. It is also a good way to disintermediate Google.

9. Declarative programming via FLEX. Declarative programming is the best way to code a GUI and consume components.

10. ActionScript 3.0 combines the flexibility of JavaScript with grown-up object orientation. Option for dynamic or strict typing according to developer preference.

So is AIR your next development platform? Maybe, but there are some downsides:

1. Limited extensibility. AIR apps have file access, clipboard access, support multiple windows, support drag and drop, and can trigger notifications (“toast” in Windows). If you app needs to interact with the desktop in other ways, the chances are that AIR is not suitable. For example, there’s no access to COM automation, and no way to execute external applications. The reason is to maintain cross-platform compatibility. That’s a worthy goal, but it would be good to have a way out of the sandbox. Unlike Java or .NET, you cannot extend AIR with custom native code libraries. Nor can you call operating system APIs.

2. Database access limited to SQLite or web services.

3. Enterprises need to roll out applications over the network in a controlled manner. AIR has no specific support for enterprise deployment. On Windows, AIR does not use the Windows Installer service. Either Adobe or 3rd parties will need to create deployment wrappers to overcome this.

4. Proprietary technology. AIR applications depend on Adobe’s runtime.

5. No threading support. Architect Kevin Lynch says this is a strong candidate for a future release.

6. No model for commercial components. It is not clear to me how a component vendor could sell an AIR component while protecting it from unlicensed deployment. This may limit the availability of 3rd party components, with a corresponding impact on productivity.

7. Schizophrenic development model. AIR supports either Flex development, or HTML applications which run in WebKit. The ugly side of this flexibility is that there are two SDKs, even two JavaScript virtual machines with different capabilities and characteristics. While it is nice to have a way to render HTML, I am not convinced that the web application model is worth it, given the complications it causes. After all, web applications run perfectly well in the browser.

8. Security concerns. AIR is close to the worst of both worlds, being tightly sandboxed from a developer perspective, but not particularly safe from the user’s perspective. Adobe says it will allow unsigned applications, which I think is a mistake.* AIR has the same access to the file system as the user, which in the case of users running on Windows XP with full admin rights is very extensive. Example bad scenarios would include downloading malware and placing it your startup folder, or searching your file system for bank details and uploading them to some internet location. That said, Adobe says there will be more security features, so conclusions are premature.

9. Synchronization service depends on LiveCycle, the server-side piece which runs on J2E application servers. This is one of the ways Adobe makes money out of AIR, with the other obvious one being design and development tools. A consequence of point 4 above.

10. Lack of UI standards may lead to annoying inconsistencies between AIR applications. We are used to this on the Web; now it is coming to the desktop as well.

*I was told that application signing is not required, but Daniel Dura comments below that this is not the case; however he says self-signed applications will be allowed. Perhaps this is one of the things under discussion. Personally I think the default should be to require applications signed by a trusted certificate, but to provide a way for developers to switch this off.

Technorati tags: , ,

IBM Project Zero

Project Zero is an agile web development tool from IBM, using Eclipse, PHP and Groovhy.  Following my comments on its low visibility on IBM’s site, I received an email from Product Manager Joe Lea:

There are now two pieces on developerworks about IBM’s Project Zero. Much more coming shortly…

http://www.ibm.com/developerworks/podcast/dwi/cm-int071007.html

http://www.ibm.com/developerworks/edu/wa-dw-pzphp-i.html

Anyone tried this tool? If so, I’d be interested to know how you find it.

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?