Developers: will you or have you signed for ribbon rights?

This is the dialog you see when installing Delphi 2009 or C++ Builder 2009:

There’s a similar restriction on use of the ribbon controls in the latest MFC.

The license information page is here. The license itself has two provisions that you might care about. First, you agree not to use the Ribbon, also known as the Fluent UI, in “Excluded products”:

“Excluded Products” are software products or components, or web-based or hosted services that perform primarily the same general functions as the Microsoft Office Word, Excel, PowerPoint, Outlook and Access software applications, and that are created or marketed as a replacement for any or all of those Microsoft applications. – that’s you.

The second provision is more troublesome (unless you are OpenOffice or Google Apps). You have to comply with the Design Guidelines:

Your Licensed UI must comply with the Design Guidelines. If Microsoft notifies you that the Design Guidelines have been updated or that you are not complying with the Design Guidelines, you will make the necessary changes to comply as soon as you reasonably can, but no later than your next product release that is 6 months or more from the date you receive notice.

So what are the Design Guidelines? Good question. This is where it gets silly. In order to see the Design Guidelines, you have to agree the “2007 Microsoft Office Fluent User Interface Design Guidelines Evaluation License Agreement”, which among other things is a non-disclosure agreement. Furthermore, you have to destroy them within 30 days:

3. RESTRICTIONS. The Design Guidelines are for reference only and may not be used in development. You agree that you will destroy the Design Guidelines within thirty (30) days after you first acquire them or upon termination, whichever is earlier.

I am guessing here, but I hope and suppose that if you agree the main license you no longer have to destroy the guidelines to which you are meant to be conforming. It’s not obvious that this is the case, since the main agreement refers back to the UI licensing page, and the only way I can see to get the design guidelines is by agreeing the evaluation license which requires you to destroy them.

I reckon Microsoft’s lawyers are getting carried away.

Lunacy aside, I’d presume that the guidelines are detailed and that conforming could involve considerable work. It is also unclear to me what would happen in the real world if Microsoft issued an edict requiring you to update your application to its latest version with 3D revolving icons, for example. If you are an external developer and your customer does not want to pay, what then? I suppose in theory you should insure against it, or sneak in a clause to your development contract that says the customer pays for extra work imposed by Microsoft in the event that it exercises its rights.

Pragmatically I guess it is unlikely to happen. Still, I don’t like unreasonable agreements. In any case, are we sure that if you did not agree the license, but still went ahead and used the Ribbon UI, that Microsoft could successfully pursue you? Call it a toolbar, and it’s been commonplace in software for years.

Microsoft makes up with the OMG

Microsoft has joined the Object Management Group:

Microsoft Corp. today outlined its approach for taking modeling into mainstream industry use and announced its membership in the standards body Object Management Group™ (OMG™).

I’m not clear exactly when Microsoft joined the OMG. It is already listed as a Contributing Member (the highest level) here. Still, the warm words are something new. In the past Microsoft’s modelling strategy has been presented as an alternative to the OMG. For example, here’s IBM’s Agile Development expert Scott Ambler in a 2005 article:

Luckily, the OMG isn’t the only modeling game in town. Microsoft has struck out on its own, a strategy that has clearly served it well in the past, and is suggesting a new approach to modeling: Domain Specific Languages (DSLs).

And here’s Grady Booch in 2004, on why UML is good and why he “disagrees with Microsoft’s rejection of the UML in favour of proprietary domain-specific languages.”

Before the UML vs DSL wars it was the CORBA vs COM wars, and in both cases it was OMG on one side and Microsoft on the other.

It’s different now, with warm words from OMG CEO Dr Richard Mark Soley:

Microsoft has always been one of the driving forces in the development industry, helping to make innovation possible but also simplifying many of the most challenging aspects of the application development process …[stuff about UML] … Microsoft’s broad expertise and impact will make its membership in OMG beneficial to everyone involved.

It is all part of Microsoft’s efforts to establish “Oslo”, its new modelling initiative which it hopes is the next big thing in development productivity, and will feature in the next Visual Studio.

I wonder what has happened to software factories, which was Microsoft’s modelling buzzword just a couple of years ago? Part of Oslo, or now abandoned?

Technorati tags: , , , , ,

Doubling performance with Silverlight multithreading

Bart Czernicki has a detailed post showing how Silverlight 2.0’s multithreading can improve performance. He took my counting primes code and  adapted it for parallel processing. On my quad core system the results are impressive:

As you can see by squinting at the screen grab, the processing time went from 0.43 to 0.20 seconds.

Multithreading is getting a bad rap in some quarters, because it greatly complicated debugging. On the other hand, if you have an app which does some heavy duty calculations then performance benefits like this are worth a little pain.

Technorati tags: , ,

H.264, AAC comes to Silverlight. Game over for VC-1?

Microsoft has announced that Silverlight will support the H.264 video standard “in a future version”, along with AAC for audio. H.264 is also used by Adobe Flash and has wide adoption across the industry; it’s likely that your HD video camera records to H.264, for example.

Good news for Silverlight, though it may be a while before we see this rolled out, but surely bad news for VC-1, Microsoft’s preferred video format and part of the Windows Media family. Why would anyone not standardize on H.264 now?

Defining cloud computing

I liked this post by Larry Dignan on the cloud computing buzzword and how meaningless it has become.

Writing on the subject recently, I was struck by the gulf between what some people mean – online apps like Google Apps and Gmail – and what others mean, on-demand utility computing such as that delivered by Amazon Elastic Compute Cloud or Flexiscale. These things have little in common.

Dignan has even more examples.

Should we abandon the term? Maybe, but I find it useful if only as shorthand for describing how the centre of gravity is shifting to the Internet.

Some services are more cloudy than others. Dignan refers to this Forrester report (though you’ll have to look at the blog post for the extracts, unless you want to buy it) which has a table of “six key characteristics.” I don’t agree with all of them; the business model, for example, is not an inherent part of cloud computing. I am interested in number two:

Accessible via Internet protocols from any computer

Any computer? OK, probably not the Atari ST which I have in the loft. Any computer with a web browser? What about requiring a “modern” web browser, is that OK? Java? Flash? Silverlight? A specific version of Java or Flash? What about when we need a runtime like Adobe AIR or Microsoft Live Mesh? What if it doesn’t run on Linux? Or on an Apple iPhone? What about when there is an offline component such as Google Gears? All these things narrow what is meant by “any computer”.

This is the old “rich versus reach” debate; it is still being played out. My point: cloud computing isn’t a boolean characteristic, but a continuum from very cloudy (NTP) to not cloudy at all (Microsoft Office).

Microsoft Oslo: a tool, a language, a repository

A couple of Microsofties are talking up the Oslo launch at the forthcoming PDC. “Oslo” is what Microsoft sees as the next generation of software development – I think.

Don Box and Douglas Purdy have just posted their own definitions. They should know, they’re working on it.

Box says:

With Oslo, we’re doing two things:

1. We’re making it easier for people to write things down in ways that make sense for the domain they are working in – the common term for this in the wild is modeling.

2. We’re making the things people wrote down accessible to platform components during program execution.


we have boiled down Oslo to three very simple things:

  • A tool that helps people define and interact with models in a rich and visual manner
  • A language that helps people create and use textual domain-specific languages and data models
  • A relational repository that makes models available to both tools and platform components

There will be a CTP for us all to try at PDC.

The last time the industry tried this I believe it was called UML 2.0; it excited a lot of theoreticians but made little impact on real-world application development. I’m sceptical about Oslo too; but let’s acknowledge at least that the goal is a worthy one.

Having said that, what do you think about this remark from Purdy:

For me personally, Oslo is the first step in my vision “to make everyone a programmer (even if they don’t know it)”.

I’m sorry, that “everyone a programmer” line brings to mind spaghetti-macros in Excel or some of those unmaintainable Access and Visual Basic applications which you still see sometimes if you hang around small businesses.

Still, there is a costly divide in development, which is to do with the fact that A is an expert is some particular field, B is a programmer; and somehow A’s expertise has to be expressed in B’s code. I think this is about bridging that gap.

Technorati tags: , , ,

Streaming FLAC from Linux to a PlayStation 3

The digital home is in an anarchic phase right now. The general public has woken up to the idea of a home music server, and I’m seeing this widely discussed in all sorts of forums, but there are several competing standards and plenty of things that don’t quite work. Getting a seamless and satisfactory experience everywhere including desktop computers, portable devices and in the living room can still be a challenge.

For myself I’ve experimented with a number of setups, including Apple iTunes, Microsoft Windows Media Center, and Logitech SqueezeCenter. My interest is mainly in music rather than video; and I’ve settled for the moment on a Linux server running Ubuntu and SqueezeCenter, with CDs ripped to FLAC. I like FLAC because it is open source and lossless, which I hope means I won’t ever have to rip the CDs again; unlike lossy formats FLAC can be converted to other file types if necessary without compromise.

SqueezeCenter works great with Logitech’s Squeezebox, as you’d expect. The Squeezebox goes anywhere in the house, plugs into a hi-fi, and lets you select music either with a remote, or using a web UI on any device with a web browser, or using Logitech’s Duet smart remote. But a Squeezebox is expensive: what if you want access to the music server in more than one room? Well, you can play music from SqueezeCenter on any PC that can play an MP3 stream, but it is a bit fiddly. What about using a games console like a PlayStation 3 or Xbox 360?

This has been a spare-time project for me for some time. There are actually a zillion ways to stream music to a PS3 or Xbox 360, and some of them actually work. SqueezeCenter isn’t one of them; but there is no problem using other servers which access the same files. My own choices are somewhat limited, as I want something that runs on Linux and works with FLAC. Neither PS3 or Xbox plays FLAC natively, so the server has to transcode on the fly to a format the console can play.

My first stop was Fuppes, a strong project that in theory does exactly what I need. Fuppes is a DLNA server, which is the nearest thing to an agreed standard in this area, though not supported by Apple (why not?). I believe Fuppes would be fine if I stored music as MP3, but the transcoding aspect seems problematic. It used to mostly work on the PS3, but after a Sony firmware update I got nothing but “unsupported data” messages, and I never got it working on the 360, despite playing with many different builds and configuration options.

This weekend I tried Mediatomb instead, another Linux DLNA server with transcoding support. It was the usual Linux circus. I prefer to use standard packages where possible, and I noticed that Mediatomb has an official package for Ubuntu 8.04 “Hardy Heron”. My server was on 7.10 “Gutsy Gibbon”, so this seemed a good reason to upgrade. Did the upgrade easily enough, then installed Mediatomb. It took an age to index my FLAC files, following which I went to the PS3 and tried it. No go; “Unsupported data”.

Then I looked at this thread.  This informed me that the PS3 needs a big endian PCM stream; and further, that the version in the Ubuntu repository does not work. So I removed it; downloaded the source with Subversion; compiled and installed; made the suggested configuration changes; and lo, it all works.

The good news is that performance is great, both in sound quality and in the speed of browsing the server. It is more responsive than a Windows Media Center from the PS3. The bad news is that the UI on the PS3 is basic. There is no search facility, you have to scroll to find what you want. Another annoyance is that you cannot search for one song while playing another; as soon as you go back to searching, the music stops. Third gripe (maybe the fault of Mediatomb): everything is case-sensitive, so unless your tagging is perfect you might have several entries for the same artist. Still, it’s a big advance on Fuppes and nothing working at all.

Adobe’s Genesis: enterprise mashups wrapped in AIR

I’m not at the Office 2.0 conference, sadly, but fortunately for non-attendees the organizers have done a great job of making the content available online in a timely manner. Aside: I love the way this site includes social networking features, like the ability for users to comment on sessions beforehand, so that they can influence the content; and the way videos have appeared on the same day as they were presented.

One of the first things that caught my eye was Adobe’s Genesis. I watched the presentation by Matthias Zeller. As I understand it, Genesis is an AIR application plus online services, that enables enterprise mashups, organized into workspaces. AIR (Adobe Integrated Runtime) is a way of using the Flash runtime on the desktop.

What’s in a Genesis Workspace? A collection of “tiles”, actually Flex applets, which can hook into other enterprise or web applications. It is a good fit with SAAS (software as a service) providers such as There is also a web browser tile (presumably based on WebKit), enabling the inclusion of any browser application; and a file repository tile that contains documents, using some of the functionality we have already seen in The idea is that these workspaces are easily created using drag-and-drop. The real value comes when they are shared online, through Adobe’s hosted services, enabling communication and collaboration.

Zeller says the Genesis client will be free, with monetization coming from subscriptions to hosted services and tiles; third-parties will also be able to market tiles for the system. There is an online slideshow here.

This is only my brief first impression; please follow the links for more detail. I found it interesting on several levels: a new approach to the cloud; a business use for AIR; and also this comment in the presentation, “Adobe-quality aesthetics for the enterprise”.

What does not a valid win32 application mean? Say, with Chrome setup?

Browsing through my logs I see a ton of searches like this:

chrome setup.exe not valid win32

I’m not sure which part of this site they are hitting. Anyway, this is for you.

In my experience “not a valid win32 application” invariably means a corrupt executable. I’d guess that what has happened here is that your web browser did not download the entire setup file, but stopped half way. Internet Explorer is particularly bad in this respect: it tells you that a download is complete, when you can see that it is not because the download size is not what it should be. It usually happens when the connection is poor, either at your end, or because of a busy server. It beats me why browsers don’t make a basic check on the file size after download.

It can also happen with a CD or DVD install, if the disk is corrupt or the drive is failing; or if your hard drive is failing.

The usual solution is to re-download the file.

Technorati tags: , , ,

What happens to the browser market when Google plays the OEM card?

Here’s a bit of speculation. My initial thinking about Google Chrome was that it would mainly take market share from Firefox; and that while IE’s share may continue to erode, Chrome is unlikely to accelerate that much.

I’m beginning to change my mind. One factor is OEM installs. We all know what a huge influence default installs have on users, which is why software vendors are happy to pay the likes of Dell and HP for space on the desktop, or to be the default anti-virus engine, for example. This has often been to the detriment of the user’s experience overall, to the extent that it helped to damage Vista’s reputation, but that is an aside.

Now, one thing I’ve noticed is that Google’s toolbar often turns up by default in OEM installs of Windows. When you start up for the first time (or the first time for real, after all those reboots), IE confronts you with Google’s terms of service. However, I have not yet seen Firefox installed as the default web browser. I’ve presumed that Mozilla doesn’t quite have the financial muscle to do it, or maybe there are other reasons.

Google is a more formidable presence than Mozilla. What if Google buys browser share by being the default browser on machines from the leading OEMs? I suspect that would soon impact IE’s share. Microsoft cannot prevent it because of anti-trust constraints.

Since Chrome is in effect the new Google toolbar, this move strikes me as inevitable.

This would mainly impact the consumer and small business space. IE has some special advantages for enterprises, since it hooks in tightly to Microsoft’s software management tools, and there are further improvements to this aspect in IE8. The consumer/business separation is a leaky one so it could still have a big impact.

Technorati tags: , ,