SharpDevelop 3.0: everything .NET from Boo to F#

I’ve been researching open source .NET and noticed that SharpDevelop, the free IDE for .NET on Windows, completed version 3.0 earlier this month. Congratulations to the team. Along with Windows Forms and ASP.NET applications in C# or Visual Basic, you get extras like support for F#, Boo and Python. Another welcome feature is built-in support for Subversion version control. There’s even an ASCII table in the IDE, which brings back memories: 15 years ago every programming manual had one at the back.

SharpDevelop has two major challenges. One is keeping up with Microsoft; right now there are discussions about improving WPF support, for example. The other is that Microsoft offers free Express versions of Visual Studio, which leaves SharpDevelop with those niche users for whom the Express products are unsuitable, but who do not want to pay for a full version, or who are wedded to some exclusive SharpDevelop feature.

In favour of SharpDevelop, it installs more easily and loads more quickly than Microsoft’s effort, and certainly proves the point that native C# applications do not have to be slow.

A more interesting though less complete product is the forked MonoDevelop, which is cross platform and targets Mono, the open source implementation of .NET. Mono now looks good on Linux; but the idea of WORA (Write Once Run Anywhere) has never really caught on in the .NET world. How many significant Mono applications for Windows have you seen? My guess is that if it happens at all, it will be in the form of Silverlight/Moonlight running in the browser.

Technorati tags: , , , ,

First screenshots of Visual Studio 2010 UI

Jason Zander has posted some screenshots and info about the new WPF-based UI for Visual Studio 2010.

An early build of VS 2010 was handed out at PDC last year, but lacked the new UI.

Floating document windows is a great new feature. That said, Visual Studio 2008 works rather well; I hope the new version is equally fast and stable.

Technorati tags: , ,

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: , , ,

Squeezebox and Napster – the perfect combination?

I’ve just posted a review of the Squeezebox Boom, a lovely device that once set up is perfect for hiding all the computer gunk and letting you enjoy the music wherever you are in the house. During the review I noticed that Logitech’s Squeezenetwork, which aggregates a number of Internet radio stations and music services for use with Squeezebox, announced Napster support last week.

I tried this, and it is amazing, though you do need to subscribe to Napster; trial accounts are available. If I want to play any song or album in Napster’s vast library, I select Squeezenetwork as the music source on the Boom, select the Napster music service, search the Napster library, and play the music. No computer has to be running for this to work. Sound quality is good though noticeably worse than locally-streamed lossless FLAC; more radio than hi-fi.

I’ve also been spending time with Spotify. Like Napster, this makes a huge library available, plus it has a couple of advantages. Performance is better, with near-instant search results and playback; and best of all it is free, if you can tolerate occasional advertisements. Unfortunately Spotify does not integrate with Squeezebox yet, though users are clamouring for it.

The Squeezebox is a schizophrenic product with one foot in the old world of local media storage, and one foot in the new world of Internet streaming via Squeezenetwork. Squeezebox plus Napster is great; Squeezebox plus Spotify would be even better. Either one makes Apple’s iTunes purchase-and-download model look dated.

Technorati tags: , , ,

Spotify is the new Napster

I signed up today for Spotify. This is a music service that like all the best innovations can be explained in a few words. You download the client (Mac or Windows), which has a Mac-like user interface for searching and playing songs. You type in a search, double-click a song in the result list, and it plays. When it finishes, it plays the next one in the list.

So far it has worked flawlessly. Performance is the key. Searches are fast, and songs seem to start playing instantly – impressive. Now and again an advertisement plays in between songs – it’s not too intrusive, but for a ad-free experience you can sign up to a premium subscription, currently £9.99 per month or £99.00 per year.

A few technical details: according to the FAQ, Spotify uses both streaming servers and peer-to-peer connections. It also grabs up to 10% of your hard drive (user configurable) for local storage. The codec is “Ogg Vorbis q5 which streams at approximately 160kb/s.”

The selection of music is not comprehensive; last month a number of songs were withdrawn “…so that we implement all the proper restrictions that are required by our label deals.” Nevertheless, the selection is wide and includes many mainstream artists. The latest Lily Allen is there; so is the latest Morissey as illustrated above. A search for Beethoven revealed 9,302 tracks; Mozart 14,148. Most people will find plenty of music they like.

In 1999, Shawn Fanning created Napster, a peer-to-peer music sharing service that allowed users to share MP3 files. It was wildly popular and illegal, and introduced the download era to a mass market. Download is about amassing a collection of music files on local storage and playing them through a computer or over a network. Ripping a CD is really just another way of downloading it.

The company that has profited most from the download era is Apple, with its market-dominating iPod/iTunes combination.

But what is the point of downloading a song, if you can play it just as easily without downloading it? What is the point of “buying” a song, if you can already play it whenever you want? What is the point of ripping a CD in order to make a copy that is identical to copies made thousands of times already, when you can easily access a shared copy over the Internet?

There is none; and all-you-can-eat streaming is the natural successor to the download era.

That does not mean we are there yet. Format changes in recorded music are not instant; there is a long transitional period. You can still buy LPs today; CDs remain a major source of revenue for the music industry; Spotify will not kill iTunes overnight. Audiophiles will not be satisfied with Spotify’s lossy-compressed music format for serious listening.

Further, Spotify has some limitations. Playing on mobile devices is one problem that will not easily be solved, bearing in mind that while broadband internet at home is now widely available, fast mobile connections remain expensive and unreliable.

History also suggests that Spotify will not necessarily be the company that makes this a business success. The music companies might panic and remove their works from Spotify. Apple might buy the company, and/or transition iTunes to a similar subscription-based streaming service. You can be sure it will not stand by and watch as its music business become irrelevant.

Nevertheless, even a day with Spotify is enough to make the idea of only being able to play what you have already downloaded seem quaint and unnecessary.

Technorati tags: , , ,

Hyper-V disk I/O: performance of dynamic vs fixed virtual hard disks

The dynamic virtual hard drive is one of the best things about virtualization. It is like Dr Who’s Tardis. The virtualized OS thinks it has plenty of space, while on the host machine your 128GB virtual drive might occupy just 4 or 5GB – this is typical of the test VMs I set up, running say Server 2008 and a server application or two.

Trouble is, there’s a performance penalty. I first came across this with a hilariously slow Ubuntu install, where the problem is made worse by the lack of integration services, the utilities and drivers that install into the guest to enable smooth interaction with the host.

As an experiment, I created a second Ubuntu VM using a 30GB fixed-size drive. Better? Yes, much better. Here are the figures on my admittedly slow low-end HP Xeon server:

Copy an 891MB file:

  • Ubuntu 8.10 on 127GB dynamic drive with 1GB RAM: 6 min 45 secs
  • Ubuntu 8.10 on 30GB fixed drive with 1GB RAM: 3 min 15 secs

As a further test, I copied the same file in Server 2008:

  • Server 2008 on 127GB dynamic drive with 2GB RAM: 5 min 55 secs

My immediate thoughts: you would be crazy to use VMs in production with dynamic drives. Always use fixed drives. You can still expand them manually if necessary. Note that Hyper-V defaults to dynamic drives.

Still, these tests are not extensive or rigorous; I’d be interested in other results. I’ll also be creating my next Server 2008 VM on a fixed drive and will repeat the test there.

I’ve posted some further hyper-v tips and gotchas here.

Technorati tags: , ,

How Hyper-V can seem to lose your data

I’m sure it can really lose your data as well, but in this case “seem” is the appropriate word. I’ve been messing around with Hyper-V and one of my test machines is a SharePoint server. I started this up and found I could not access it over the network. On further investigation, it turned out to be a broken trust relationship with the Domain Controller. In other words, on attempting to log on with domain credentials I got the message:

The trust relationship between this workstation and the primary domain failed

The official advice when confronted with this problem is to remove and re-join it to the domain, creating a new computer account. I did so. Logged on, and was disappointed to discover that SharePoint was now empty. Worse still, even checking out the SQL Server databases did not uncover them. All my documents had vanished.

It turned out that I had done the wrong thing. What had really happened is that Hyper-V had been saving my changes on that virtual hard drive to a “differencing disk”, a file with an .avhd extension. This is part of the Hyper-V snapshot system. Somehow, Hyper-V had forgotten the differencing disk, and started up my SharePoint VM using the last fully merged copy of the drive, which was over a month old. My drive had gone back in time, so the data had gone.

The solution was to restore the old parent .vhd from backup, and then manually merge it with the differencing file. Step by step instructions are here. Since I had deleted the original computer account, I then had to remove and rejoin the machine to the domain a second time. All was well and my data reappeared.

The bug here is how Hyper-V managed to start with an old version of the virtual hard drive in the first place. I can imagine this causing panic if it occurs in production – and once you start writing new, important data to the old version you are really in trouble. I was lucky that the discrepancy was severe enough that Active Directory complained.

Virtualization may be wonderful; but it also introduces new problems of its own.

The other lesson is that those .vhd files in C:\Users\Public\Public Documents\Hyper-V\Virtual Hard Disks do not necessarily contain your latest data. You also need to consider the .avhd files stored handily at C:\Program Data\Microsoft\Windows\Hyper-V\Snapshots.

Technorati tags: , , ,

Have you seen a real JavaFX app yet? Sun’s misleading 100 million claim

I haven’t – only samples and demos. Which makes Jonathan Schwartz’s claim of 100,000,000 downloads, presented as “JavaFX Hits 100,000,000 Milestone!”, suspect. Still, I reckon there is an easy explanation. JavaFX is now included with the JRE, the standard Java runtime download. So what Schwartz means – please correct me if I am wrong – is that there have been 100,000,000 downloaded updates to the JRE (no doubt partly thanks to Sun’s auto updater on Windows), since JavaFX became part of it.

In order to test this theory, I fired up a virtual machine (using Sun’s excellent Virtual Box) which runs Vista but does not have Java installed. Then I went to and went for the free Java download. At the end of the install, I saw this dialog:

Note: it says “The JavaFX runtime will be downloaded when you click Finish”. There are no buttons aside from Finish, unless you count the close gadget. Therefore, I got JavaFX by default with the JRE.

I have nothing against JavaFX, but meaningless PR spin will do nothing to help the technology.

Technorati tags: ,

QCon next month reports strong registrations

An email this morning reminds me that QCon takes place in London next month – this is one of my favourite developer-focused conferences, with excellent speakers covering a breadth of technology, though if you hate all things Agile it is probably not the place for you.

The organizers say that:

attendance for this year’s QCon London is actually ahead of last year’s, despite the problems in the economy

Given that it’s now common for conferences to be shrunk or cancelled, that’s impressive.

Technorati tags: ,

Fixing the Exchange 2007 quarantine – most obscure Outlook operation ever

I’ve been testing Exchange 2007 recently and overall I’m impressed. Smooth and powerful; and the built-in anti-spam is a great improvement on what is in Exchange 2003. One of the features lets you redirect spam to a quarantine mailbox. You know the kind of thing: it’s a junk bucket, and someone gets the job of sifting through it looking for false positives, like lotteries you really have won (still looking).

Sounds a nice feature, but apparently Microsoft did not quite finish it. The quarantine is a standard Exchange mailbox, which means you have to add a quarantine user. To view the quarantine, you log onto that mailbox. A bit of a nuisance, but not too bad once you have figured out the somewhat obscure means of opening another user’s mailbox within your own Outlook. You’ll notice a little usability issue. All the entries are non-delivery reports from the administrator. You cannot see who they are from without reading the report, making it harder to scan them for genuine messages.

Another issue is when you find an email you want to pluck out of the bucket. My guess is that you will need to Google this one, or call support. The trick is to open the message, and click Send Again. It is counter-intuitive, because the message you are sending again is not the one you can see – that’s the Administrator’s report – but the original message which is otherwise hidden.

So you hit Send Again. As if by magic, the lost message appears. Great; but there’s another little issue. If you hit Send, the message will be sent from you, not from the original sender.

Both issues can be fixed. The fix for Send Again is to log on as the quarantine user – opening the mailbox is not enough. Since it is not particularly easy to switch user in Outlook, the obvious solution is Outlook Web Access; or you could use Switch User in Vista to log on with Outlook as the quarantine user. Send Again will then use the original sender by default.

How about being able to see the original sender in Outlook? No problem – just follow the instructions here. I won’t bore you by repeating them; but they form, I believe, a new winner in the Outlook obscurity hall of shame. After using Notepad to create and save a form config file, you use the UI to install it, and here’s a screenshot showing how deeply the required dialog is buried:

A few more steps involving a field picker dialog reminiscent of Windows 95, and now you can see all those faked sender email addresses:

The mitigating factor is that the anti-spam rules themselves are pretty good, and I’ve not found many false positives.