All postings/content on this blog are provided "AS IS" with no warranties, and confer no rights. All entries in this blog are my opinion and don't necessarily reflect the opinion of my employer.
Here's a popular topic. ;) A quick search in the blogsphere finds countless number of posts and comments proclaiming the inevitable (or already happening) decline of Microsoft as we near the age of cloud computing.
A small sampling of some well-known publications finds comparatively less dramatic views, but the theme is quite consistent - cloud computing is heralded as the future, and Google is best positioned to dominate this new era.
While things look quite certain on Google's side in terms of succeeding on the Internet and leading/riding the cloud computing tidal wave, at this point it doesn't seem to be the case for Microsoft.
"The invisible law that makes it impossible for a company in the computer business to enjoy pre-eminence that spans two technological eras"; as described in the NYTimes article, "The Computer Industry Comes With Built-In Term Limits". While I think the article did not articulate the precise reasons why Microsoft won't stay on top through a major paradigm shift (other than focusing on where Google is succeeding and where Microsoft isn't), the question is still valid.
Reason being, cloud computing itself represents a migration from distributed client-server and on-premise software models, to a more centralized model (though logically centralized and physically distributed). Eric Schmidt said, "What [cloud computing] has come to mean now is a synonym for the return of the mainframe... and the mainframe is a set of computers... They're in a cloud somewhere." And this everything-as-a-service (in the cloud) model directly conflicts with what people most commonly identify Microsoft with - software for people to use (and most visibly Windows and Office - client O/S and desktop software).
More specifically, various trends in the past 10+ years have also influenced this paradigm shift. Just to list the obvious ones:
Effectively, the shift towards browsers as the primary channel of access for consumers and deployment target for organizations, has reduced the need to use locally installed software. And this directly impacts Windows and Office, plus server software traditionally acquired and installed on-premise; perceivably the entire Microsoft product portfolio.
Plus arguably, Microsoft's investments in online services so far have not won leadership positions and profitability. Recent deliverables such as Windows Live have made significant progress, especially Live Search where the technology has closed some gaps with Google, but still trails behind in terms of adoption. And the gap seems to be widening still.
So it seems the "Single-Era Conjecture" must be true, and that Microsoft is walking towards its impending downfall? That would certainly be the case if Microsoft completely ignores the market and not see the need to change, or is incapable of change.
However, Microsoft does see the need, and has been working on many significant changes to shift towards the cloud.
But, then, why does it seem so difficult for Microsoft to make any significant progress in this area? A couple of thoughts:
What About the Other Guys?
So much attention has been focused on the perceived "war" between Microsoft and Google. But what about the rest of the IT industry? This shift towards cloud computing also in many ways presents challenges to their existing businesses. I'll bet many organizations are also thinking that they missed the opportunity to land grab some market share in online search.
But from a corporate strategy perspective, the seemingly different approaches are very remarkable. Microsoft is pursuing the path of organically build towards the cloud. Oracle is starting to build data centers, but seems to in general prefer acquiring its way into the cloud once the market begins to mature; as they have done with the major acquisitions in the past decade. IBM is also building data centers, but seems to leverage and build upon pure cloud players such as their partnership with Google; as they have done with open source software. Similarly, Intel, HP, and Yahoo have teamed up to build towards the cloud as well. Very distinct strategies, but do seem to be the sensible approaches for each organization.
However, not everyone will be able to afford building massive data centers and establishing clouds. Yahoo Research Chief Prabhakar Raghavan said, "In a sense, there are only five computers (clouds) on earth." He listed Google, Yahoo, Microsoft, IBM, and Amazon. Well, may be not exactly, but that view of the world is also not entirely implausible, and imagine the kinds of changes everyone will undergo in order to achieve that state.
That view also underscores a complete commoditization of the entire IT industry. While unfathomable by today's standards, it is conceivable that a paradigm shift such as cloud computing could exact such sweeping changes from us. Reason being, cloud-based services have the benefit of the economies of scale, which allows the services to be provisioned at a lower cost. Existing IT shops, which increasingly face the need to reduce maintenance costs and deliver innovation, may very well favor switching over to cloud-based utility-like services; often compromising quality for lower cost.
Nicholas Carr said in his book, The Big Switch - "In the long run, the IT department is unlikely to survive, at least in its familiar form. It will have little left to do once the bulk of business computing shifts out of private data centers and into the cloud." Plus a very contrarian and sensational blog post "Your new IT budget: $10".
Which means, IT shops will increasingly need fewer investments on in-house technology and resources to support operations. And that also translates to needing fewer in-house technical specialists. As demand for technology and technical skills decreases, so does their value, which marks the trend of complete commoditization. Scary thought no?
Of course Nick Carr's view has generated a lot of controversy, as well as an ample amount of vehement disagreement. But in that light, doesn't Microsoft's scramble towards the cloud seem reasonable, and whoever is not doing so may need to be a bit concerned?
In a nutshell, Microsoft does see the importance of cloud computing, and is actively building towards the cloud. But Microsoft's approach to shift towards the cloud, is based on a considerably pragmatic perspective that the world will not completely move into the cloud. We think that on-premise and local/client software still has value in the future, but the cloud will undoubtedly be a major component as well.
The moniker that best describes Microsoft's approach is "Software Plus Services".
Basically, we expect that the world will remain in a hybrid state, where commonly used services (like today's outsourcing of payroll services to ADP) may move into the cloud, but many differentiating capabilities will continue to be implemented and delivered towards the edge. Some potential factors:
So what is Microsoft doing to shift towards cloud computing? To list some interesting points:
Thus Microsoft definitely aspires to become a major player in the cloud. What remains to be seen is just how well Microsoft executes towards the cloud.
Interesting times ahead. One thing is certain - more changes to come, and we can expect Microsoft to ramp up activities in this area very aggressively the next few years. Don't count Microsoft out, just yet. :)
This post is part of a series of articles on cloud computing and related concepts.
As the Web evolved, there has been countless proclamations that client-side software is dead or on its way out. Certainly, the staggering pace of innovation in Web application platforms and Web-oriented architectures, and associated mindshare shift towards Web development models, do show that client-side software is becoming less relevant than the heydays of client-server computing, at the very least.
And many people think that the move towards cloud computing also marks the inflection point where the desktop is becoming irrelevant, such that not just data, but everyday software applications and utilities are moving into the cloud too. And the Web browser becomes the new desktop that is ubiquitous and comes with the benefits of zero-footprint applications that can follow you wherever you go.
As the Pendulum Swings
At the same time, it seems we've reached a plateau where the focus has shifted from ensuring the availability (or accessibility) of capabilities in the cloud, to improving usability of cloud-based services.
In other words, as an industry, we have gotten sufficiently productive at developing high-quality Web applications delivered via browsers, and are starting to seek the traditional benefits of client-side software especially from a user experience perspective. Partly due to:
And a few signs in the blogsphere (i.e., "Web App + Offline = Crappy Client App", "Maybe Microsoft is Right...") of this turn-around:
Q: What do you get when you cross a browser application with the ability to go offline?
A: A client application without any the goodness that the platform (be it Windows or OS X) has to offer.
A: A client application without any the goodness that the platform (be it Windows or OS X) has to offer.
SaaS and Software Clients
SaaS CRM vendor Entellium recently released a smart client and said it will phase out its existing browser-based product over the next 12 months. It was reported that the move helped boost sales, and cut customer acquisition costs by as much as 80 percent.
The smart client application looks very slick, and is built using Microsoft's Windows Presentation Foundation (WPF) technology:
My colleague John Stame has also just worked with Sciformatix to implement a SaaS solution built on .NET, but also delivered multiple access points including a browser interface, a mobile device interface, and a .NET-based rich client:
And the well-known WPF-based New York Times Reader which was mentioned by PC World as one of 2007's 100 best products.
These services are still delivered SaaS-style, with data and processes that are hosted in the cloud. But smart clients provide a more intuitive interface for users, while at the same time adding the much needed off-line capabilities. Plus, the decision doesn't have to be either/or or mutually exclusive; browser-based and client-based software can be implemented and deployed at the same time to provide a higher level of service to users, taking advantage of best of both worlds.
Of course, these cases still represent a rather small sample size of the general SaaS community, but they are good examples of leveraging the appropriate technology to differentiate and add value to customers.
Software Clients Making a Comeback?
Well, perhaps not completely; but it would be prudent to not ignore their value propositions. Basically, it is about improving usability and enhancing user experiences when interacting with cloud-based services. From that perspective, client-side software tend to have these benefits:
Of course, Microsoft has a vested interest in keeping the desktop and client software relevant. But the industry is not oblivious to them too, as many well-known examples exist today:
There are many well-documented issues regarding client software development, that have turned many developers away in the past. However, just as Web application platforms are starting to integrate more with the desktop and client-side deployment models, software client platforms have also integrated many benefits from Web application platforms. For example,
Moving programming models to a higher level than the operating system. The declarative development model for browser-based applications allows developers to work at a much higher abstraction level and not have to worry about infrastructure-level issues. Similarly, client-side platforms like Java SE, .NET, Adobe AIR, Google Gears, etc. also provide sandbox models where developers don't have to be concerned with things such as memory management and garbage collection, system-level security, etc.
Web-based software deployment and distribution. Just like FireFox and Opera, which are client-side software too, client-side platforms today allow distribution via the Web with simple download & install processes, and self-updating capabilities (in terms of versions, patches, updates, etc.).
Cross-platform and cross-device application portability. There is no consistent story from this perspective, but some progress has been made. Off-line RIA platforms such as Google Gears, Adobe AIR, Microsoft Live Mesh, etc. all support Web-based development models and technologies. However, fundamentally, they are still very technically different platforms and require unique developer skillsets and knowledge.
Overall complexity. Similarly, levels of complexity vary greatly between different platforms. However, in general we do see that client-side platforms are also adopting more declarative programming models, like the use of XAML in WPF applications instead of using proprietary/binary controls and manually bind to them. In fact if the level of richness required in an application goes above a certain threshold, adopting client-side platforms may be a simpler approach than trying to do so in Web applications.
All About User Experience
Ultimately, browser platforms will continue to serve as the easiest way to enable broad reach and ubiquitous accessibility to a large customer base. But at some point, one of the best ways to differentiate and add value is to improve on user experience.
And it's not limited to desktop client software. Increasingly, and sometimes more appropriately, locally-installed software are being used on mobile devices to deliver more intuitive user experiences. For example, applications on iPhone can be developed using common Web technologies, but they do need to be built on the iPhone SDK in order to integrate seamlessly into the iPhone experience. On the other hand, WAP-based or browser-based mobile applications tend to be ultra-minimalistic and comparatively less intuitive to use.
One of the ways to look at this is to determine whether a particular application adds more value to the user by being client-centric, which cloud-based services become complementing factors; or by being cloud-centric which means client software is best suited for specialized purposes.
Anyway, software clients may not be the default choice in providing cloud-based services to users, but they can be a useful option on any architect's tool belt. They're not always worthwhile, but just as no one technology is one-size-fits-all or all-supplanting, software clients can add significant value under the appropriate circumstances.
Cloud computing, the buzzword du jour and hottest cliche in IT at the moment, is a source for extensive debates as well as general confusion. Just like the other buzzwords, SOA, Web 2.0, Software-as-a-Service (SaaS), "cloud computing" is a very general term, and there are many interpretations of what it means.
And just like those buzzwords, cloud computing represents the convergence of many other megatrends and evolutionary developments leading up to this point. For example, SOA, Web as a platform, SaaS, utility computing, grid architectures, on-demand computing, outsourced hosting, managed/application service providers, etc., can all be considered contributing components to cloud computing.
This slide from Gartner has a nice list of some common misunderstandings of cloud computing.
So what is cloud computing then? Taking a similar approach to my last year's post on Web as a platform, a formal definition of cloud computing won't be attempted here. Instead, we will try to describe the emerging phenomenon by looking at the components and contributing aspects and patterns, as well as some of the current issues and challenges.
Fundamental Aspects of Cloud Computing
Again, this is just one way of looking at cloud computing, among many others. Basically, a couple of fundamental aspects I think are relevant:
The cloud has become an alternative means of delivering various types of capabilities as services. Software-as-a-service (SaaS) is one that receives a lot of attention, but from a cloud computing perspective, it can be any type of technology-enabled capabilities, delivered as-a-service. For example, virtualized storage, communication, compute capacity (utility computing), are all existing forms of capabilities delivered as services, but are not categorically defined as software capabilities.
In the SaaS space, Salesforce.com has been cited as one of the prime examples, as a complete end-to-end solution delivered as a service. Earlier examples include outsourced hosting providers, managed service providers, etc. Today the cloud-based delivery model is being applied across all types of scenarios, including delivering traditional desktop applications as cloud-based services, such as Google Apps and Zoho Office. Microsoft of course has its own set of cloud-based services as well.
Not all services are of the same type. In fact many types exist as well as many ways to categorize/describe them. They include infrastructure, platforms, building blocks, etc., that operate on a technical level, to finished services that users can interact with directly.
The fundamental aspect is that individual services can sometimes be integrated or composed or aggregated into higher-level services that perform a specific function available in the cloud. This is essentially the extension of SOA principles into the cloud, and enabling the Web as a platform.
Web browsers will continue to serve as the primary means of accessing cloud-based services. But the cloud does not dictate the use of browsers as the only means to do so. In fact, cloud-based services provide the ideal environment to enable users consume services from all kinds of interfaces and devices.
We are already seeing many vendors pushing the envelope beyond HTML-based browser interfaces. For example, on-line in-browser RIA platforms such as Adobe Flash, Curl, JavaFX, and Microsoft Silverlight, etc.; off-line desktop RIA platforms such as Adobe AIR, Google Gears, Yahoo Konfabulator, and Microsoft Live Mesh; and increasingly, mobile device platforms such as Apple iPhone, Google Android, Java ME, Adobe Flash Lite, Yahoo GO!, Microsoft Silverlight, etc.
The fundamental aspect is that, cloud computing enables a seamless and consistent service consumption experience regardless of the type of device or interface used at the edge. In addition, differentiated and specialized user experiences can be delivered to different types of devices and form factors.
Economies of Scale
The most effective design for cloud-based services use multi-tenancy architectures, and standardize on operational and management processes. This allows service providers to share costs between multiple users, which results in lowered overall cost of service. And as the scale of usage/adoption increases, so do the economies of scale. This is not limited to managing costs; monetization models behave similarly such as in the case of Google's search advertising business.
The cloud provides the ideal environment for service providers to leverage massively-scaled capabilities to achieve intended economies. But this does not mean all services providers have to plan for similar scales. For example, Salesforce.com's scale in terms of managing its userbase, is significantly different from the type of scale that Google or Amazon has to deal with.
The cloud is more than a huge collection of isolated services and islands of services. Its true power is unlocked when individual services become more inter-connected and inter-dependent. With increasing levels of interoperability, composability, data portability, semantic consistency, etc., the cloud moves away from disconnected services that require specialized integration efforts, to a dynamic system that is much more interactive and intelligent.
Ubiquity / Pervasiveness
The word cloud implies a level of ethereal ubiquity and pervasiveness. And cloud-based services should be provisioned such that users should not have to be concerned with how to access these services, or differences between platforms. In addition, details of the technical implementations, scaling options, etc. should be completely transparent to the users as well.
Users should be able to interact with cloud-based services in a consistent context, even when navigating between the public cloud and private clouds.
Challenges and Issues
Undoubtedly, cloud computing presents many disruptive forces to existing models of using on-premise and locally installed software and applications. But some questions are still relevant. For example,
Another Gartner slide has a good list of common concerns.
For example, some of the recent reported issues underscore the difficulty in maintaining massively-scaled cloud services (of course Microsoft had its share of outages too):
And a recent BusinessWeek article "On-Demand Computing: A Brutal Slog" pointed out:
"Funny thing about the Web, though. It's just as good at displacing revenue as it is in generating sources of it. Just ask the music industry or, ahem, print media. Think Robin Hood, taking riches from the elite and distributing them to everyone else, including the customers who get to keep more of their money and the upstarts that can more easily build competing alternatives."
And Nicholas Carr's post back in 2005 on "The amorality of Web 2.0" succinctly points out the changes in monetization models in the shift towards the Web.
While we can expect that the industry as a whole will continue to move into the cloud, and gain more maturity in deploying cloud-based services, these fundamental questions and challenges will have to be addressed as well. Although, some issues inherent in highly distributed architectures will persist and need to be evaluated as trade-offs.
Forward Looking Perspective
It seems we are in a land-grab mode today, with organizations rushing towards the cloud, including Microsoft. Next we should expect to see the similar hype-boom-bust cycle play out, where many attempts will fade into non-existence, major consolidations occur in the market, and finally a handful of strong players remain standing and owning a major portion of the collective cloud.
However, when the dust (or the pendulum) finally settles, will we see cloud computing supplanting the "legacy" models? Most likely not, though cloud computing will become one of the viable options for organizations to choose from. And we can expect that there will not be a one-size-fits-all approach on a "right" way to decide between on-premise and cloud-based services. Just like all previous megatrends such as SOA and Web 2.0, each organization may have a different mix of options and the degree to which they are adopted.
Technically, we can anticipate advances towards context-aware computing as a convergence of semantic Web, data portability, derived collective intelligence, intent-driven systems, etc.; which should result in a much more intelligent and interactive cloud.
Agile methods are a set of development processes intended to create software in a lighter, faster, more people-centric way. Many development teams have adopted "agile" methodologies to manage change and to improve software quality. These methodologies promote continuous integration as a practice to build and test software products incrementally as new features are included, bugs are fixed, and code is refactored.
This one-day seminar will provide an overview of Agile Software Development, its principles, methods and values; highlighting of the most widely used, and simplest to apply Agile method known as "Scrum".
Please join Microsoft and Neudesic, a Microsoft Gold Certified Partner for this one-day seminar. Thank you, we look forward to seeing you there!
Introduction to Agile (What, Why) | Agile methods are fast becoming commonplace in software development practices for many organizations. However, they represent a significant paradigm shift in the way in which stakeholders and team members are engaged, projects are planned, manner in which the team reacts to change, and which teams work together. The session will provide an overview of Agile Software Development, its principles, methods and values. Participants will learn the reason why Agile Methods are gaining share in software projects and driving up ROI.
Scrum Essentials | Several methodologies live within the space known as "Agile Software Development". One of the most widely used, and simplest to apply Agile methods is known as "Scrum". This session teaches the essentials of how to use "Scrum" on projects, focusing on the techniques and practices that development teams require while working on an Agile / Scrum project. The session will provide the required practices, roles and rules of Scrum, and answer specific questions about how to apply Agile Methods (via Scrum) to projects. Participants will review how a product backlog is used to plan a sprint, and learn how to read project status through a sprint backlog and burn down chart.
Agile Planning and Estimation | Session teaches how to plan the scope and schedule of a Scrum project, focusing on hands-on project planning techniques for Agile teams. Requires familiarity with Agile software development (or prior attendance to the above sessions).
The following areas are discussed -- how to:
Team Foundation Server | See how Microsoft’s Team Foundation Server can support your team’s Scrum process to fully benefit from Scrum’s practices and rules. In this session we’ll discuss how you can use TFS to leverage the Scrum essentials learned in the earlier session.
C-Level Speaker | In this final session, we will hear a “real-world” example of how Scrum is successfully being used today in a development organization.
Registration, Welcome & Breakfast
Introduction to Agile
SCRUM Essentials, Part 1
SCRUM Essentials, Part 2
Agile Planning & Estimation
Team Foundation Server
C Level Speaker
To register, please click on the link below or call 1.877.MSEVENT (1.877.673.8366). If the links below do not work; please copy/paste the URL below in your address bar.
Irvine, CA - September 9, 2008 | 9:00 AM-5:00 PM
3 Park Plaza, Suite 1600
Irvine, CA 92416
Los Angeles - September 10, 2008 | 9:00 AM-5:00 PM
Microsoft Corporation 333 S. Grand Ave., Suite 3300
Los Angeles, CA 90071
Phone: 213.806.7300 Registration Link: http://msevents.microsoft.com/CUI/InviteOnly.aspx?EventID=B8-06-74-1A-B3-D1-76-F9-A5-18-C0-0B-D7-E7-37-95&Culture=en-US
Event ID: 1032382829
Last week InXile Entertainment launched a new version of the Line Rider game, built using Silverlight 2, and integrated Windows Live services (ID and Messenger). This is one of the projects me and my Microsoft team were directly involved with, by partnering with InXile Entertainment and Cynergy Systems. And we are quite excited with the results.
The original version of Line Rider, launched September 2006, is a Flash-based game that has been cited by a number of publications (i.e., New York Times, Wall Street Journal, Time, CNET, GameZone, etc.), and was one of Yahoo’s top 10 search words in late 2006. Existing momentum includes over 36,000 videos posted on Youtube (with more than 5 million views), ~10 million page views per month with ~1.7 million unique visitors.
With this release, we ported the Flash-based version to Silverlight.
We used Expression Blend to create the game layout and controls, used Visual Studio 2008 and C# for the game logic and physics engine implementation, and built on top of the Silverlight 2 beta 2 SDK.
So what's the big deal? Take a look at this video of one of the sample games.
Video: Jagged Peak Adventure by Unconed
Loved the snappy Cowboy Bebop music theme they used in this video. More amazing video clips available at http://linerider.com/en/movies and on Youtube.
Basically, users draw lines that make up the tracks, and little Line Rider bobsleds through the tracks as driven by gravity (while holding on for dear life). Very simple game mechanics, but quite an addictive cycle drainer if you get into it. :) There is already a large volume of video content showing all kinds of complex and intricate designs created by the existing community.
Flash to Silverlight
So why did we convert from Flash to Silverlight? Undoubtedly the change introduced inconveniences for existing users, plus the perceptions brought along by Microsoft's reputation (good and bad).
Now I have a tremendous amount of respect for Flash and the community it has generated. There are some pretty impressive applications built on Flash today, and the rich ecosystem consisting both proprietary and open-source tools and solutions. And based on my understanding, most things done on either Silverlight or Flash, can also be accomplished on the other platform today.
Of course, we tend to think that leveraging the .NET development platform provides a level of productivity improvement and sophistication, but it really wasn't about the technical merits of either Silverlight or Flash platforms. We were just there at the right place and the right time, and provided an effective partnership to help ensure project success.
At the time, InXile Entertainment was looking for ways to enhance the existing experience and bring it up a level. Specifically, to be able to share more effectively, integrate social aspects, and to be able to create a community around Line Rider. The previous Flash-based version provided excellent single-player experiences. But to share the tracks (i.e., to show others the masterpieces one has created), users resorted to their own means such as using their own video-capture software, media editing software, video hosting service, and had to find online storage or email Flash-based SOL binary files directly to each other, etc.
Thus we worked to tackle these needs for the Silverlight-based version. A couple of major things we did that added value to the project:
Basically, the intention is to make it easier for users to share and build a more integrated community.
Again, these can be done on Flash too, but we added the partnership to make sure that the resulting product met InXile's expectations. Plus from a long-term planning perspective, we felt that investing on the Microsoft platform has value beyond just the Web-based RIA platform aspect. The .NET skillsets can be reused to build and integrate cloud-based services, expand the community and social aspects, as well as reaching connected device platforms, for next-generation experiences.
InXile is working on console-based versions of the game (Xbox 360, Wii, PS3, Nintendo DS, Windows Mobile), called "Line Rider 2 Unbound", which at the moment looks just amazing. Take a look at these videos (part 1, part 2, part 3) for a quick preview of the enhancements they're making to the game.
Looking forward to, at some point, work with these guys again to port the Web-based Silverlight version to include the new Line Rider 2 features.
About InXile Entertainment
Located in Newport Beach, California, inXile entertainment is a game development company that focuses on both licensed and original intellectual properties. Formed in late 2002, inXile entertainment develops for personal computers and the major console platforms including the Nintendo Wii, Nintendo DS, Playstation 3, and Xbox 360. Their products include The Bard's Tale and Line Rider.
Read InXile Entertainment's press release regarding this project.
About Cynergy Systems
Cynergy is a leader in the design and development of Rich Internet Applications (RIA) specializing in Microsoft Silverlight and WPF as well as Adobe Flex and AIR. Cynergy is privately held and headquartered in Washington, D.C.; the Company's U.S. field operations include Rochester, N.Y., Grand Rapids, Mich., and San Diego, Calif. Cynergy's European operation is based in London, United Kingdom and Copenhagen, Denmark and its Asia Pacific operations are located in Taipei, Taiwan and Sydney, Australia.
Read Cynergy's press release regarding this project.