7. Method and system for identifying and obtaining computer software from a remote computer

8. System and method for controlling access to data entities in a computer network

I make no comment on the legal validity of these claims. On the broader issue though, Microsoft says this:

Microsoft has been a leader and innovator in the software industry for decades and continues to invest billions of dollars each year in bringing great software products and services to market. We have a responsibility to our customers, partners, and shareholders to safeguard that investment, and therefore cannot stand idly by when others infringe our IP rights

My observation is that I have seen Salesforce.com shake up the industry by making its multi-tenant online application and platform work for its customers. Although there are some parallels, the Salesforce.com platform is more radical than Microsoft Azure and has more potential to reduce costs, because it is based on a single shared application, rather than being a hosted platform for custom applications. The differences are not absolute, because the Force.com platform also supports custom applications, and Microsoft also offers multi-tenanted applications, but if you look at the core propositions the distinction is valid.

Again, I have no idea what the legal outcome will be, but from a public relations perspective this does not look good for Microsoft. It raises the question: is Microsoft litigating because it cannot succeed in the market?

Small companies and patent trolls sue large companies because they have little to lose, and potentially a lot to gain. Large companies show more restraint. I have always assumed that there are thousands of plausible patent infringements among the largest technology companies, and that the industry would descend into a kind of litigation meltdown if all of them were pursued, to nobody’s benefit other than lawyers.

Google Chrome OS, the operating system that is essentially a browser on a netbook, does not support printer drivers. Given the problems these things still cause, you might think that is a good thing. At least, until you want to print a Google map to give to a friend. Or an invoice to stick in the post. Or any of those other innumerable reasons for printing that we somehow find, even in the age of electronic documents.

The solution Google has come up with is called Cloud Print. You register your printer or printers with Google, then print over the internet. The printer might be a “cloud-aware printer”, none of which yet exist, which sits with its internet connection waiting for print jobs; or a “legacy printer” which works via a proxy running on a PC. Google will distribute this proxy with Google Chrome. The proxy gets the print job from Google, then prints using the local printer driver. Since Chrome OS does not have any printer drivers, the proxy cannot run on Chrome OS itself.

This is mad, of course, because it means that in order to print a document from Chrome OS to the printer sitting on the same local network, you have to send it to Google and back. If your internet connection goes down, you cannot print from Chrome OS at all.

Still, given that printers still have a habit of grinding and whirring a bit before actually printing, a little delay while a document travels to Google and back probably won’t upset you.

The brilliance of the idea is that cloud-aware printers will just work, and you can print to them from anywhere. If it’s your boarding pass, you are in New York and the printer is in London, that won’t help you much; but there are other scenarios where it might. Printing a receipt while away can be handy, for example; it won’t be needed until you do your accounts.

I like the way Google is thinking creatively about what it means to have a computer that is wholly cloud-centric. If it can make such a device usable, it will be revolutionary.

I don’t like the idea of having to sign into Google to print a document. Google says:

We expect other entities to provide their own cloud print services as well. Users associate printers with their Google Account via the service.

It’s another of these, “you are welcome to our standard” offers. In practice, signing permanently into Google will be the deal with Chrome OS, as it is to a large extent with Android. The whole thing revolves around your Google identity, which is why it pays Google to make the investment.

I’m just back from QCon London, a software development conference with an agile flavour that I enjoy because it is not vendor-specific. Conferences like this are energising; they make you re-examine what you are doing and may kick you into a better place. Here’s what I noticed this year.

Robert C Martin from Object Mentor gave the opening keynote, on software craftsmanship. His point is that code should not just work; it should be good. He is delightfully opinionated. Certification, he says, provides value only to certification bodies. If you want to know whether someone has the skills you want, talk to them.

Martin also came up with a bunch of tips for how to write good code, things like not having more than two arguments to a function and never a boolean. I’ve written these up elsewhere.

Next I looked into the non-relational database track and heard Geir Magnusson explain why he needed Project Voldemort, a distributed key-value storage system, to get his ecommerce site to scale. Non-relational or NOSQL is a big theme these days; database managers like CouchDB and MongoDB are getting a lot of attention. I would like to have spent more time on this track; but there was too much else on; a problem with QCon.

I therefore headed for the functional programming track, where Don Syme from Microsoft Research gave an inspiring talk on F#, Microsoft’s new functional language. He has a series of hilarious slides showing F# code alongside its equivalent in C#. Here is an example:

The white panel is the F# code; the rest of the slide is C#.

Seeing a slide that this makes you wonder why we use C# at all, though of course Syme has chosen tasks like asychronous IO and concurrent programming for which F# is well suited. Syme also observed that F# is ideal for working with immutable data, which is common in internet programming. I grabbed a copy of Programming F# for further reading.

Over on the Architecture track, Andres Kütt spoke on Five Years as a Skype Architect. His main theme: most of a software architect’s job is communication, not poring over diagrams and devising code structures. This is a consistent theme at QCon and in the Agile movement; get the communication right and all else follows. I was also interested in the technical side though. Skype started with SOAP but switched to a REST model for web services. Kütt also told us about the languages Skype uses: PHP for the web site, C or C++ for heavy lifting and peer-to-peer networking; Delphi for the Windows interface; PostgreSQL for the database.

Day two of QCon was even better. I’ve written up Martin Fowler’s talk on the ethics of software development in a separate post. Following that, I heard Canonical’s Simon Wardley speak about cloud computing. Canonical is making a big push for Ubuntu’s cloud package, available both for private use or hosted on Amazon’s servers; and attendees at the QCon CloudCamp later on were given a lavish, pointless cardboard box with promotional details. To be fair to Wardley though, he did not talk much about Ubuntu’s cloud solution, though he did make the point that open source makes transitions between providers much cheaper.

Wardley’s most striking point, repeated perhaps too many times, is that we have no choice about whether to adopt cloud computing, since we will be too much disadvantaged if we reject it. He says it is now more a management issue than a technical one.

Dan North from ThoughtWorks gave a funny and excellent session on simplicity in architecture. He used pseudo-biblical language to describe the progress of software architecture for distributed systems, finishing with

On the seventh day God created REST

Very good; but his serious point is that the shortest, simplest route to solving a problem is often the best one, and that we constantly make the mistake of using over-generalised solutions which add a counter-productive burden of complexity.

North talked about techniques for lateral thinking, finding solutions from which we are mentally blocked, by chunking up, which means merging details into bigger ideas, ending up with “what is this thing for anyway”; and chunking down, the reverse process, which breaks a problem down into blocks small enough to comprehend. Another idea is to articulate a problem to a colleague, which exercises different parts of the brain and often stimulates a solution – one of the reasons pair programming can be effective.

A common mistake, he said, is to keep using the same old products or systems or architectures because we always do, or because the organisation is already heavily invested in it, meaning that better alternatives do not get considered. He also talked about simple tools: a whiteboard rather than a CASE tool, for example.

Much of North’s talk was a variant of YAGNI – you ain’t gonna need it – an agile principle of not implementing something until/unless you actually need it.

I’d like to put this together with something from later in the day, a talk on cool things in the .NET platform. One of these was Guerrilla SOA, though it is not really specific to .NET. To get the idea, read this blog post by Jim Webber, another from the ThoughtWorks team (yes, there are a lot of them at QCon). Here’s a couple of quotes:

Prior to our first project starting, that client had already undertaken some analysis of their future architecture (which needs scalability of 1 billion transactions per month) using a blue-chip consultancy. The conclusion from that consultancy was to deploy a bus to patch together the existing systems, and everything else would then come together. The upfront cost of the middleware was around £10 million. Not big money in the grand scheme of things, but this £10 million didn’t provide a working solution, it was just the first step in the process that would some day, perhaps, deliver value back to the business, with little empirical data to back up that assertion.

My (small) team … took the time to understand how to incrementally alter the enterprise architecture to release value early, and we proposed doing this using commodity HTTP servers at £0 cost for middleware. Importantly we backed up our architectural approach with numbers: we measured the throughput and latency characteristics of a representative spike (a piece of code used to answer a question) through our high level design, and showed that both HTTP and our chosen Web server were suitable for the volumes of traffic that the system would have to support … We performance tested the solution every single day to ensure that we would always be able to meet the SLAs imposed on us by the business. We were able to do that because we were not tightly coupled to some overarching middleware, and as a consequence we delivered our first service quickly and had great confidence in its ability to handle large loads. With middleware in the mix, we wouldn’t have been so successful at rapidly validating our service’s performance. Our performance testing would have been hampered by intricate installations, licensing, ops and admin, difficulties in starting from a clean state, to name but a few issues … The last I heard a few weeks back, the system as a whole was dealing with several hundred percent more transactions per second than before we started. But what’s particularly interesting, coming back to the cost of people versus cost of middleware argument, is this: we spent nothing on middleware. Instead we spent around £1 million on people, which compares favourably to the £10 million up front gamble originally proposed.

This strikes me as an example of the kind of approach North advocates.

You may be wondering what other cool .NET things were presented. This session was called the State of the Art .NET, given by Amanda Laucher and Josh Graham. They offer a dozen items which they considered .NET folk should be using or learning about:

Azure – Microsoft’s cloud platform – surprisingly good thanks to David Cutler’s involvement, we were told

MEF – Managed Extensibility Framework as found in Visual Studio 2010, won high praise from those who have tried it

That was my last session (I missed Friday) though I did attend the first part of CloudCamp, an unconference for cloud early adopters. I am not sure there is much point in these now. The cloud is no longer subversive and the next new thing; all the big enterprise vendors are onto it. Look at the CloudCamp sponsor list if you doubt me. There are of course still plenty of issues to talk about, but maybe not like this; I stayed for the first hour but it was dull.

For more on QCon you might also want to read back through my Twitter feed or search the entire #qcon tag for what everyone else thought.

Microsoft CEO Steve Ballmer gave a talk on the company’s cloud strategy at the University of Washington yesterday. Although a small event, the webcast was widely publicised and coincides with a leaked internal memo on “how cloud computing will change the way people and businesses use technology”, a new Cloud website, and a Cloud Computing press portal, so it is fair to assume that this represents a significant strategy shift.

According to Ballmer:

about 70 percent of our folks are doing things that are entirely cloud-based, or cloud inspired. And by a year from now that will be 90 percent

I watched the webcast, and it struck me as significant that Ballmer kicked off with a vox pop video where various passers by were asked what they thought about cloud computing. Naturally they had no idea, the implication being, I suppose, that the cloud is some new thing that most people are not yet aware of. Ballmer did not spell out why Microsoft made the video, but I suspect he was trying to reassure himself and others that his company is not too late.

I thought the vox pop was mis-conceived. Cloud computing is a technical concept. What if you did a vox pop on the graphical user interface? or concurrency? or Unix? or SQL? You would get equally baffled responses.

It was an interesting contrast with Google’s Eric Schmidt who gave a talk at last month’s Mobile World Congress that was also a big strategy talk; I posted about it here. Schmidt takes the cloud for granted. He does not treat it as the next big thing, but as something that is already here. His talk was both inspiring and chilling. It was inspiring in the sense of what is now possible – for example, that you can go into a restaurant, point your mobile at a foreign-language menu, and get back an instant translation, thanks to Google’s ability to mine its database of human activity. It was chilling with its implications for privacy and Schmidt’s seeming disregard for them.

Ballmer on the other hand is focused on how to transition a company whose business is primarily desktop operating systems and software to one that can prosper in the cloud era:

If you think about where we grew up, other than Windows, we grew up with this product called Microsoft Office. And it’s all about expressing yourself. It’s e-mail, it’s Word, it’s PowerPoint. It’s expression, and interaction, and collaboration. And so really taking Microsoft Office to the cloud, letting it run in the cloud, letting it run from the cloud, helping it let people connect and communicate, and express themselves. That’s one of the core kind of technical ambitions behind the next release of our Office product, which you’ll see coming to market this June.

Really? That’s not my impression of Office 2010. It’s the same old desktop suite, with a dollop of new features and a heavily cut-down online version called Office Web Apps. The problem is not only that Office Web Apps is designed to keep you dependent on offline Office. The problem is that the whole model is wrong. The business model is still based on the three-year upgrade cycle. The real transition comes when the Web Apps are the main version, to which we subscribe, which get constant incremental updates and have an API that lets them participate in mash-ups across the internet.

That said, there are parallels between Ballmer’s talk and that of Schmidt. Ballmer spoke of 5 dimensions:

The cloud creates opportunities and responsibilities

The cloud learns and helps you learn, decide and take action

The cloud enhances your social and professional interactions

The cloud wants smarter devices

The cloud drives server advances

In the most general sense, those are similar themes. I can even believe that Ballmer, and by implication Microsoft, now realises the necessity of a deep transition, not just adding a few features to Office and Windows. I am not sure though that it is possible for Microsoft as we know it, which is based on Windows, Office and Partners.

Someone asks if Microsoft is just reacting to others. Ballmer says:

You know, if I take a look and say, hey, look, where am I proud of where we are relative to other guys, I’d point to Azure. I think Azure is very different than anything else on the market. I don’t think anybody else is trying to redefine the programming model. I think Amazon has done a nice job of helping you take the server-based programming model, the programming model of yesterday that is not scale agnostic, and then bringing it into the cloud. They’ve done a great job; I give them credit for that. On the other hand, what we’re trying to do with Azure is let you write a different kind of application, and I think we’re more forward-looking in our design point than on a lot of things that we’re doing, and at least right now I don’t see the other guy out there who’s doing the equivalent.

Sorry, I don’t buy this either. Azure does have distinct advantages, mainly to do with porting your existing ASP.NET application and integrating with existing Windows infrastructure. I don’t believe it is “scale agnostic”; something like Google App Engine is better in that respect. With Azure you have to think about how many virtual machines you want to purchase. Nor do I think Azure lets you write “a different kind of application.” There is too little multi-tenancy, too much of the old Windows server model remains in Azure.

I’m watching Microsoft’s Steve Ballmer present a session on cloud computing. It’s been underwhelming so far, but I was interested to see how Sky TV will look on Xbox 360 (though I’d readily swap it for BBC iPlayer, which Microsoft seems to be obstructing). The key point: you can watch with your Xbox Live friends and interact during the broadcast.

The broadcast was coming all the way from the UK to west coast USA, which was apparently why the avatars spent some time watching a buffering thermometer. Still, it worked eventually.

I attended this morning’s VMWare roundtable, debating the rather silly proposition that IT should be removed from the boardroom agenda. To be fair, even VMWare does not really believe this, but is arguing that its virtualisation technology makes IT service provision so trouble-free that the board can focus on IT as it advances their business, rather than just keeping the show on the road. I don’t believe that either, though no doubt it can help. It was nevertheless interesting to hear Jim Fennell, Information Systems Manager for the Lagan Group, explain how his virtual infrastructure allowed him to run up servers or applications such as SharePoint on demand, with internal charges based on usage.

The very definition of a private cloud, in fact; and this chimed nicely with some other research I’ve been doing on cloud security. Current cloud computing models are flawed, for the following reason among others.

So-called private clouds do not relieve organisations of the IT burden, though they may simplify it, and do not fully yield the benefits of multi-tenancy, elasticity and economies of scale except perhaps in the case of the largest enterprises, or governments.

On the other hand, public clouds are also flawed, because the customer retains legal responsibility for their data but loses operational responsibility. That split surfaces in debates about SLAs, legal liability and consequential loss, compliance with regulations concerning data location and segregation, and conflicts over whether customers should have the right to audit their cloud provider’s technology and security practices. The public cloud is not yet mature; it lacks the standards and regulatory frameworks that it needs, though work is being done.

VMWare may not mind about this, because it has positioned itself as the first choice for technology to drive private clouds. I talked to Chief Operating Office Tod Nielsen (formerly of Microsoft) after the event, and he told me that the majority of enquiries from potential customers relate to setting up private cloud infrastructures.

Another big growth area is desktop virtualisation, where customers with thousands of aging PCs running Windows XP want their next desktop upgrade to be their last, and see virtual desktops as a route to that goal.

I am intrigued by the desktop issue, since maintaining desktop PCs remains a significant maintenance challenge. The rise of non-PC devices is also relevant here. Isn’t the future more in pure web applications – perhaps enhanced with RIA technologies like Flash and Silverlight – rather than in virtual desktops? Nielsen said that the huge numbers of legacy applications out there made this impossible in the near future.

Nevertheless, you can see how VMWare is planning for more of a pure web play longer term, with acquisitions such as the Java application framework Springsource. One idea that was mentioned during the roundtable was a sort of server app market, where you can plug in pre-built applications into VMWare’s ESX platform.

Finally, one side-effect of increasing desktop virtualisation, in Nielsen’s view, is that more users will choose to run Apple Macs as the host. He also says that the number one customer request, in the weeks since Apple’s announcement, is for iPad support for their virtual clients. Make of that what you will.

Adobe has fully released LiveCycle Managed Services, offering a hosted platform for LiveCycle applications. The software is configured and managed by Adobe, but runs on Amazon’s EC2 (Elastic Compute Cloud) virtual servers.

LiveCycle is a suite of applications which I think of as two things combined. On the one hand, it forms a server platform for business process or workflow applications based on Adobe PDF forms and documents. On the other hand, it provides data services for Rich Internet Applications, usually but not necessarily to client applications on the Flash runtime, either in or out of the browser. It is a little confusing, but these two aspects are essentially the old Adobe Enterprise platform merged with Macromedia’s work in support of Flash, combined into one suite after Adobe’s takeover of Macromedia in 2005.

The usual arguments in favour of hosted services apply and this is a smart move from Adobe. Still, customers are currently forced to use Amazon for the actual virtual servers, even though others such as Rackspace Cloud Servers are substantiallycheaper than Amazon EC2. Is that a problem? According to Adobe’s John Carione, senior enterprise product marketing manager at Adobe, “when we were evaluating vendors, we think that one of the areas Amazon excels in is around security.” I noticed that the security topic also occupies around one-third of this introductory video, suggesting that this remains a significant barrier to adoption for many potential customers.

So how will managed LiveCycle work? “We’re providing a fully managed service, and part of that is going to be delivered with what we’re calling the Adobe Network Operations Center … which is going to provide 24×7 monitoring of the applications, backup and recovery, upgrades. They’ll be one contact at Adobe to talk to about everything,” says Carione. Apparently the Network Operations Center is based on a piece aquired with Omniture last year. Ominiture was a web analytics business which was based on hosted applications and services; maybe that was an important factor driving the acquisition.

When I asked Carione about ease of scaling, I got a slightly defensive answer. “This is a v1, we have the opportunity for customers to buy additional instances. In the future we’ll have more of that dynamic scaling.” Another issue is integrating with on-premise resources such as databases and directory services, which Carione says is a matter for business integrators; in other words, a significant challenge. And what if Amazon goes down? Carione did not answer directly, but said that 99.5% uptime is guaranteed.

According to Jerry Huang of Gladinet, whose Cloud Desktop exposes a variety of cloud storage services as mapped drives in Windows Explorer, Google storage is “about 10 times cheaper” than Windows Azure. Since Amazon S3 has similar prices to Azure, I imagine Google undercuts that by some margin as well.

Gladinet compares Google and Azure using some other criteria as well. On speed, it gave the edge to Azure but observed that it might just depend which data center was nearest. On SLA, the two seem similar. On API, it says Azure is easier if you use Visual Studio, but not if you work with “PHP, Ruby or anything other than .NET”.

In another post, Huang has a nice summary of accessing Azure storage from C#.

It’s worth noting that Microsoft Skydrive offers a relatively generous 25GB of storage for free, but there is no way to extend this limit. There is also no official Skydrive API, though one has been hacked unofficially. Gladinet supports Skydrive too, using either this or the unofficial WebDAV support.

I am a fan of Gladinet. There is a free starter edition, or paid-for with extra features.

Explorer integration is a big deal, since it means any application with a standard open or save dialog can access the files. Imagine for example that you need to upload a document from cloud storage to a web site. Without Explorer integration, you have to extract the file from cloud storage to your local drive, then upload it from there. The same is true of SharePoint, which is why it is unfortunate that Explorer integration is so difficult to get working.

The poor performance of Vista meant latent demand for Windows 7, as both individuals and organisations deferred upgrades, which was unleashed in this quarter. Microsoft said it was a “record quarter for Windows units” and “the fastest selling operating system in history”. Windows 7 is also a strong product in its own right.

There isn’t much else to cheer about, though given the general weakness of the server market the sliver of growth there is impressive. There is still no sign of a profitable online business, which is of major concern as interest in cloud computing accelerates.

Entertainment (Xbox) is now a steady business; I’m guessing that the huge growth in profits reflects lower investment and a reduction in cost of fixing endless red rings of death thanks to better quality hardware. Revenue on the other hand is somewhat down.

Windows 7 will continue to do well, though once the upgrade bump is passed the results will be less spectacular. Windows 8 will not get the same easy ride, unless Microsoft delivers something that surprises us all with its excellence.

The positive spin on these figures is that the company still has an opportunity to reinvent itself, financed by Windows profits. It needs its own iPod equivalent to show that it can escape its Windows and Office legacy. Windows Mobile 7? Laugh if you like; but the two things with obvious growth potential in the market generally are mobile devices, and cloud computing – the two go together, of course. That said, there is no evidence yet that Microsoft has the energy and agility to reverse its poor performance to date in both areas.

Who knows, perhaps after a couple of months of mobile focus, with details to be revealed shortly at Mobile World Congress and Mix10, the picture will look more promising?

Currently I’m hosting 3 relatively small ASP.net web applications on a VPS. This is costing about $100 per month. I’m considering transitioning to Azure. Q: Will I need to have 1 azure instance per each ASP.net application? So if I have 3 web apps, then I will need to run 3 instances which costs about $300 per month minimum, correct?

The user is correct. Each application consumes an “instance”, costing from $0.12 per hour, and this cost is incurred whenever the application is available.

Amazon also charges $0.12 per hour for a Windows instance; but the Amazon instance is a virtual machine. You can run as many applications on there as you like, until it chokes.

Google App Engine has a free quota for getting started, and then it is charged according to CPU time. If the app is idle, you don’t pay.

In addition, all these services charge extra for storage and data transfer; but in a low-usage application these are likely to be a small proportion of the total.

Summary: Azure’s problem is that it does not scale down in a way that makes business sense. There is no free quota, unless you count what is bundled with an MSDN subscription.

I realise that it is hard to compare like with like. A cheap Windows plan with a commodity ISP will cost less than either Amazon EC2 or Azure, but it is worth less, because you don’t get a complete VM as with Amazon, or a managed platform as with Azure, or the scalability of either platform. The point though is that by cutting out smaller businesses, and making small apps excessively expensive for customers of any size – even enterprises run small apps – Azure is creating a significant deterrent to adoption and will lose out to its rivals.