Tim Anderson’s ITWriting

Tech writing blog

June 25th, 2009

Silverlight 3 coming to Xbox 360

This announcement concerning advertising on Xbox Live together with these tweets from Microsoft VP Scott Guthrie add up to one thing: Silverlight 3 will run on Xbox 360.

Another platform (along with Apple’s iPhone) where Adobe Flash will struggle to find a place, I’d guess.

June 19th, 2009

Does Visual Basic have a future?

I was interested in this podcast with a member of the Visual Basic team at Microsoft, Lisa Feigenbaum, as I ask myself the same question.

Unfortunately the questioning from Joe Stagner (who also works for Microsoft) is tame. Nevertheless, there are a few points of interest.

“The things that come out of Microsoft, it is C# biased” admits Feigenbaum, which she says is because so many at Microsoft have a C or Java background.

That is part of the reason (though more C than Java) but I doubt it is that simple. If you go back to the beginnings of .NET, Microsoft designed C# and what was then the new framework and runtime together. VB on the other hand was hauled into the new world and still bears the scars.

Let’s answer the question first. Microsoft cannot afford to abandon VB, which remains popular, especially (though certainly not exclusively) at the less professional end of the market. VB isn’t going away.

Further, there’s really very little difference in the capabilities of the two languages, so there is little incentive for anyone to switch. Microsoft has attempted to differentiate them, but these attempts generally fail. “Any time we do something cool in one language, the other folks want it” says Stagner in the podcast.

As I see it, that’s part of the problem. It begs the question: what is the point of VB, other than to keep existing VB developers happy? In what circumstances would you advise a new programmer to learn VB rather than C#?

I dip in and out of both VB and C#, and of the two I prefer C#. I find VB’s slightly increased verbosity annoying, and I dislike the statement continuation character which is unnecessary in C#, because statements end with semicolons. I prefer case-sensitive languages, which give more flexibility when naming variables. If you want to do XNA games programming, currently only C# is supported. 

VB’s dynamic features are useful in some scenarios, particularly Office automation, though this advantage is removed in C# 4.0 which has dynamic variables.

The original attraction of BASIC, its English-like syntax, is nearly lost in today’s VB.

Well, choice is good; and the existence of VB alongside C# proved the cross-language credentials of the “common language” runtime from the get-go.

Nevertheless, I’m expecting VB usage to decline gradually. An external factor is the rise of the JavaScript family, which is more like C# than VB.

Incidentally, Feigenbaum threw in a comment about Visual Studio that I found interesting. After talking about the managed code editor in Visual Studio 2010, she remarks “In the release after 1010 we’re rewriting the compilers in managed code.”

Technorati Tags: ,,,,
May 25th, 2009

Book Review: IronPython in Action

I guess that to many people IronPython, an implementation of the Python programming language that runs on Microsoft’s .NET platform, is little more than a curiosity. For them, a glance at the preface and foreword to this new Manning title may be enough to convince them that it is at least interesting. In the foreword, IronPython creator Jim Hugunin describes how he first worked on Python for .NET as an exercise to prove “why the CLR is a terrible platform for dynamic languages”:

The plan was turned upside down when the prototypes turned out to run very well – generally quite a bit faster than the standard C-based Python implementations.

Next is a preface from the authors, Michael Foord and Christian Muirhead, about how IronPython came to be used in an innovative programmable, testable spreadsheet called Resolver One:

Resolver One is in use in financial institutions in London, New York and Paris, and consists of 40,000 lines of IronPython code with a further 150,000 in the test framework. Resolver One has been tuned for performance several times, and this has always meant fine tuning our algorithms in Python. It hasn’t (yet) required even parts of Resolver One to be rewritten in C#.

Why is Python used in Resolver One?

As a dynamic language, Python was orders of magnitude easier to test then the languages they had used previously.

If that piques your interest, you may find the book itself worth reading. It is aimed at Python programmers who do not know .NET, and .NET programmers who do not know Python, rather than at existing IronPython developers. The authors run through the basics of Python and its .NET integration, so that by the end of Part 1 you could write a simple Windows Forms application. Part 2 is on core development techniques and covers duck typing, model-view-controller basics, handling XML, unit and functional testing, and metaprogramming – this is where you generate and execute code at runtime.

The third part of the book covers .NET integration, and how to use IronPython with WPF (Windows Presentation Foundation), PowerShell, ASP.NET, ADO.NET (database access) , web services, and in Silverlight. Finally, Part 4 shows how to extend IronPython with libraries written in C# or VB.NET, how to use Python objects in C# or VB, and how to embed the IronPython engine into your own application.

It’s a well-written book and fulfils its purpose nicely. I like the way the book is honest about areas where IronPython is more verbose or awkward than C# or VB.NETAs someone who knows .NET well, but Python little, I could have done without all the introductory .NET explanations, but I understand why they are there. I particularly liked part two, on core programming techniques, which is a thought-provoking read for any developer with an interest in dynamic languages.

According to the IronPython site, you can get 35% off by ordering from the Manning site with the code codeplex35.

It is also available on Amazon.com:

and Amazon.co.uk:

 

May 19th, 2009

New Visual Studio 2010 beta has WPF editor, Silverlight designer

I’ve just downloaded and installed the Visual Studio 2010 beta 1 release. I’ve not explored much yet – and it is rather slow in a virtual machine – but it does now seem to have the new editor and other pieces built with Windows Presentation Foundation.

A landmark for both WPF and Visual Studio.

I also noticed that the Silverlight visual designer now works as you would expect, though I had to download the developer runtime and SDK separately:

I’d welcome comments from anyone using the beta.

May 12th, 2009

New York Times switches from WPF/Silverlight to Flash and AIR for Reader 2

The New York Times has released Version 2 of its Times Reader, for seamless online/offline viewing of its content. It’s interesting from a media perspective, but hardly a breakthrough, since it is not new. What’s more interesting to me is that the Times switched from a hybrid approach using WPF (Windows Presentation Framework) on Windows and Silverlight on the Mac, to Adobe AIR. Switches like this are bad PR for Microsoft, since it gives the impression that the developers were sufficiently unhappy with WPF/Silverlight, or so strongly attracted to AIR, that they were willing to throw away much of their previous development effort.

I’ve been tracking Times Reader for some years. It was presented at Microsoft Mix07 and I wrote up a panel discussion on the subject:

I asked about the cross-platform issue. According to Bodkin a Silverlight implementation is on the way, which includes most of the features in the full version, in “a matter of months.”

That was optimistic; but a Silverlight version was delivered and I used it successfully on the Mac; though it lacked some features of the WPF edition. It also attracted hostility from Mac users who are Microsoft-averse, as I reported here, and apparently ran into further problems because of incompatibility with Safari 4.

I tried the new AIR edition and it seems pretty good, though my impression is that it is not quite as smooth as the old WPF version. I might be wrong, since I could not install both on the same machine. The new version does add video support. Here’s the old one:

and this is the new effort:

I think this is a fascinating case study which demonstrates a number of things.

First, that cross-platform support is not an optional feature any more (if it ever was) for this kind of public application. Let’s assume here that the WPF version was just fine for Windows users, but was not viable long-term for lack of cross-platform support. It was inevitable that the Times would eventually either use Silverlight on both Windows and Mac, or abandon both WPF and Silverlight for a cross-platform alternative.

Second, that Silverlight is not yet mature enough for this kind of application. Although the Times developers were able to deliver a Silverlight version, it required a bit of hackery for offline support (embedded Safari on the Mac) and apparently ran into version problems when Apple upgraded Safari. Silverlight is also known to be poor for text rendering – a Google search for “blurry text Silverlight” brings back plenty of hits. Adobe also made a big improvement to text handling in Flash player 10, with the new flash.text.engine.

Third, that offline support really is a big deal. Would Silverlight 3.0 have been good enough? Possibly, though I haven’t seen any suggestion that Silverlight 3.0 offline apps will be able to run in the background while showing just an icon in the notification area, to support continuous synchronization.

It is possibel that these problems may be fixed in Silverlight 4.0. That’s a long time to wait though, when you need your application out now (and your industry is in crisis).

It would be silly to extrapolate this case study into a broader statement about the superiority of Flash over Silverlight. For the specific needs of the New York Times though, it is easy to see why Adobe AIR appeals.

May 7th, 2009

Silverlight: developer win, designer fail?

I posed this question in a post over on itjoblog. There are several reasons why Silverlight struggles to get designer attention, including:

1. Designers are pragmatic and target the runtime that is already deployed most broadly, ie. Flash.

2. Flash is already good enough so why bother?

3. The tools: Adobe’s designer tools are a de facto standard, target Flash, and run on the Mac.

Developer is another matter. The cross-platform .NET runtime is Silverlight’s big advantage; and this time the tools tip the balance towards Microsoft (Visual Studio) – not for everyone, but for the substantial Microsoft platform community. That’s going to be further reinforced by Visual Studio 2010 which gets full visual designer support, plus of course Silverlight 3.0.

Microsoft does have a problem with Silverlight out of the browser. Developers need a way to have these run with more local permissions, subject to user consent, otherwise they will turn to Adobe AIR. Actually the whole Silverlight on the desktop story is confused, since you can also do Silverlight Mesh-Enabled Web Applications, or stick Silverlight content in a desktop gadget or other embedded browser. No, not the one in AIR (nice idea though): Adobe only includes Flash support and the PDF plug-in.

The tension behind this is that ultimately developers and designers need to work on the same applications, so this remains a fascinating contest.

May 5th, 2009

First baby steps for Moonlight 2.0: Silverlight for Linux

Miguel de Icaza has announced the first preview release of Moonlight 2.0. This is the one that counts, in that it brings the .NET runtime to Silverlight applets running on Linux:

This is the ECMA VM running inside the browser and powering C# and any other CIL-compatible languages like Ruby, Python, Boo and others. You can use Moonlight/Silverlight as a GUI (this is what most folks do) or you can use it as the engine to power your Python/Ruby scripting in the browser.

The download page has plenty of health warnings:

Keep in mind this preview release is not feature complete. Most importantly not all security features are present or fully enabled in this release. Even existing security features have, at this stage, received only minimal testing and no security audit of the source code (mono or moonlight) has yet been done.

Undeterred, I installed it into FireFox 3.0, running on Ubuntu Linux. The download is under 9 MB. My first effort was unsuccessful; the plug-in appeared to load OK, but no Silverlight apps displayed. My second attempt in a VM worked. Naturally I went along to my Silverlight database example which as it happens runs on Mono. Here it is:

This is what it should look like (Silverlight on Windows):

Well, it is only an alpha preview, and it shows. On the plus side, the data is displayed, the search works, and the buttons operate. It is a considerable achievement. But don’t plan to move your users onto Moonlight applications just yet.

April 24th, 2009

Microsoft’s quarterly results: will it ever make sense of the cloud?

Most comments on Microsoft’s quarterly results are understandably focused on the overall picture: a quarterly revenue decline for the first time ever.

Revenue decline can be forgiven during a recession, but it’s more interesting to look at the breakdown. I made a simple quarter-on-quarter table to look at the pattern:

Quarter ending Mar 31st 2009 vs quarter ending March 31st 2008, $millions

Client Revenue % change Profit % change
Client (Windows) 3404 -15.6 2514 -19.29
Server and Tools 3467 7.07 1344 24.44
Online 721 -14.47 -575 -154.42
Business (Office) 4505 -4.78 2877 -7.99
Entertainment and devices 1567 -1.57 -31 -129.25%

The weak Windows client figures are unsurprising. The poorly-received Windows Vista is out in the market, and the highly-praised Windows 7 is being prepared for release. When anyone asks me, I suggest that they should wait for Windows 7 before buying a new PC or laptop, if they are in a position to delay.

The Business division (Office) remains massively profitable, even though it too has declined a little. Office may be ludicrously expensive, but there’s little evidence of a significant shift to cheaper or free alternatives.

It’s also notable that the server and tools business continues to perform well. Again, I’m not surprised: Server 2008 strikes me as a solid product, and there’s not much wrong with products like SQL Server 2008 and Visual Studio.

Not much to say about entertainment and devices. Xbox is doing so-so; Windows Mobile is rather a mess.

The real shocker here is the online business. Revenue is down and losses have grown. It is no use just blaming the recession: this is a sector that is growing in importance. Should Microsoft back out and leave it to Google? That would be as if Kodak had refused to invest in digital photography. But something is badly wrong here.

That said, I’m guessing that the figures mostly represent the failure of the various Windows Live properties to attract advertising income; the small market share of Live Search must be an important factor. The newer cloud computing business model, where Microsoft sells subscriptions to its online platform and services, is largely still in beta – I’m thinking of things like Windows Azure and Live Mesh. Further, I’m not sure where Microsoft puts revenue from things like hosted Exchange or hosted Dynamics CRM, which straddle server and online. There is still time for the company to get this right.

I’m not convinced though that Microsoft yet has the will or the direction to make sense of its online business. Evidence: the way the company blows hot and cold about Live Mesh; the way SQL Server Data Services was scrapped and replaced by full online SQL Server at short notice; and the ugly and confusing web site devoted to Windows Azure.

When I looked at Virtual Earth recently I was impressed by its high quality and ease of development. It illustrates the point that within Microsoft there are teams which are creating excellent online services. Others are less strong; but what is really lacking is the ability to meld everything together into a compelling online platform.

That could change at any time; but we’ve been waiting a long while already.

April 16th, 2009

RIA (Rich Internet Applications): one day, all applications will be like this

I loved this piece by Robin Bloor on The PC, The Cloud, RIA and the future. My favourite line:

Nowadays very few Mac/PC users have any idea where any program is executing.

And why should they? Users want stuff to just work, after all. Bloor says more clearly than I have managed why RIA is the future of client computing. He emphasises the cost savings of multi-tenancy, and the importance of offline capability; he says the PC will become a caching device. He thinks Google Chrome is significant. So do I. He makes an interesting point about piracy:

All apps will gradually move to RIA as a matter of vendor self interest. (They’d be mad not to, it prevents theft entirely.)

Bloor has said some of this before, of course, and been only half-right. In 1997 he made his remark that

Java is the epicenter of a software earthquake, and the shockwaves are already shaking the foundations of the software industry.

predicting that Java browser-hosted or thin clients would dominate computing; he was wrong about Java’s impact, though perhaps he could have been right if Sun had evolved the Java client runtime to be more like Adobe Flash or Microsoft Silverlight, prior to its recent hurried efforts with JavaFX. I also suspect that Microsoft and Windows have prospered more than Bloor expected in the intervening 12 years. These two things may be connected.

I think Bloor is more than half-right this time round, and that the RIA model with offline capability will grow in importance, making Flash vs Silverlight vs AJAX a key battleground.

March 31st, 2009

Flash library for Facebook, Silverlight library for MySpace

Adobe and Facebook have announced that ActionScript 3, the language of Flash 9 and higher, is now officially supported by FaceBook along with JavaScript and PHP. Information about coding for Facebook with Flash is here, and the library itself is on Google Code.

MySpace has announced the MySpace Silverlight SDK which will be hosted on Microsoft’s CodePlex open source site. The focus of the Microsoft Silverlight work seems to be on wrapping the Open Social API used by MySpace in a C# library.

Note that there is already documentation on creating Flash applications for MySpace. On the Facebook side, here’s an intriguing fact: there’s also an Fb:silverlight tag, though the documentation remarks: “For now this feature has no functionality.” Fb:swf is better supported. David Justice has been working on a Facebook library for Silverlight. It’s clear though that Flash is more widely accepted and supported on both platforms, reflecting its maturity and broader acceptance.

Smart developers can already devise code to access the public APIs of platforms like Facebook and MySpace from a variety of clients; this is about making that easier. It benefits the social networking sites if a wider group of developers has access to its platform, and with the advantages of multimedia features; equally it benefits the plug-in vendors if their runtime works smoothly with the broadest possible range of services. Therefore we should expect more of this type of announcement.

It is interesting to see technology partnerships bridging political divides. Microsoft has a stake in Facebook, for example, while Google has a partnership with MySpace.

Perhaps the most interesting outcome may be more Facebook applications based on AIR, Adobe’s Flash platform for the desktop. The existence of AIR applications like Twhirl and Tweetdeck has significantly boosted Twitter; maybe it is now Facebook’s turn.