Architecture + Strategy

Musings from David Chou - Architect, Microsoft

July, 2008

  • Architecture + Strategy

    Cloud Computing and Microsoft


    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.

    Single-Era Conjecture

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

    • Consumerization of the Web, and use of browsers
    • Application development efforts shifting towards thin clients and server-side programming
    • Improvements in network bandwidth, anywhere wireless access, etc.
    • Increased maturity in open source software
    • Proliferation and advancement of mobile devices
    • Service Oriented Architecture
    • Software-as-a-Service
    • Utility/Grid Computing

    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:

    • Microsoft still has a $60B/year and consistently growing business in software
    • As a publicly traded company, Microsoft cannot simply abandon the current software customer base to fully pursue the new services model
    • Microsoft's own culture has to shift as well, but that won't happen overnight given the size and complex environment
    • As a software platform company, Microsoft's focus has been delivering innovation-enabling capabilities to IT customers, not massive scale and speed and multi-tenancy in Microsoft's own technical infrastructures
    • Software is a complex business, and Microsoft has built extensive processes and organizations to deliver secure and robust software, compared to Google's rapid release and perpetual beta model. It will require significant changes in Microsoft to compete on the same grounds as Google, or achieve a similar level of agility
    • If the bottle is half-full, Microsoft actually has made very significant progress; but Google has set the bar very high for anyone to be compared against
    • General mindshare shift towards open source software

    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?

    Microsoft's Perspective

    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:

    • User experience - browsers tend to constrict differentiation; client software is still best at delivering high-fidelity and robust user experiences
    • Not one-size-fits-all - not all things are suitable for the cloud; many capabilities are still best delivered on the client or on-premise
    • Organizations' need to innovate and differentiate from competitors using the same or similar commoditized services in the cloud
    • Advancements in human-device interface will drive a new class of clients (i.e., Surface, Sphere, 3-D displays, multi-touch, etc.) which may drive entirely new ways to interact with information (and browsers become the legacy mode)
    • Merits of distributed computing may shift attention back towards the edge again, as certain tasks are more suitable for smaller and more distributed units than a few massive centralized clouds (such as disaster recovery, defense-in-depth, data privacy, etc.)

    So what is Microsoft doing to shift towards cloud computing? To list some interesting points:

    • Microsoft's recent surge in investments on building massive data centers around the world (for example, Quincy, WA; Chicago, IL; San Antonio, TX; Des Moines, IA; Dublin, Ireland; Siberia, Russia, etc.). Some of these data centers cost more than $500M each
    • Every one of Microsoft's server products will eventually be offered as subscription-based services in the cloud; though licensing-based on-premise versions will also continue to be offered to provide the full range of choices for customers (reinforcing "Software + Services")
    • For example, Exchange, SharePoint, and Office Communication Servers are already part of the Microsoft Online services offerings; Biztalk and SQL Servers are also being delivered as Biztalk Services and SQL Server Data Services; and Dynamics CRM Online
    • One publicized case is Coca-Cola Enterprises moving 30,000+ knowledge workers to Exchange Online (from on-premise Lotus Notes)
    • Significant investments in advertising solutions; both on-line and off-line
    • Significant investments in leveraging open source software
    • Research efforts in multi-core and massively distributed parallel processing capabilities
    • Closing the gap in online search is just one component of the overall services strategy which includes a full spectrum of target audiences, and different types of services (i.e., infrastructure/building blocks, complementary/attached, consumer/finished services, etc.)

    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.


  • Architecture + Strategy

    Cloud Computing and Software Clients


    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:

    • The document-based HTML user interface model is reaching limits in terms of integrated user experiences
    • JavaScript and AJAX-rich implementations needing more sophistication are reaching complexity levels of desktop software
    • Downloaded on-demand and zero-footprint deployment/installation - Web applications still make use of client-side code and are increasingly balancing trade-offs between richness and performance (client-side, download size, network bandwidth, etc.)
    • Online applications requiring users to be on-line - bringing Web applications off-line still has its challenges; that is, Web applications don't automatically convert to good desktop applications
    • Creating capabilities beyond what the browser platforms provide means writing desktop software components that add complexity in integrating with Web applications
    • RIA technologies extend the HTML model, but still restricted by the browser sandbox model

    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.

    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:

    • Higher fidelity data visualization and interaction models, than the HTML-based minimalist models allowed in browsers
    • More robust client-side state management
    • More smoothly bridge on-line and off-line modes
    • Take advantage of the device's hardware resources and deliver targeted experiences in different form factors
    • Not restricted by the browser's sandbox security model
    • One-time installation cost for all implemented features
    • User experience as a focus; more than accessibility

    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:

    • Apple iTunes, iPhone SDK
    • Adobe AIR
    • Google Gears, Android, Desktop, Toolbar, Pack, Earth
    • Yahoo Konfabulator
    • eBay Turbo Lister, Outlook AddIn
    • Salesforce Offline and Mobile Editions, Outlook integration

    Development Concerns

    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.

    This post is part of a series of articles on cloud computing and related concepts.


  • Architecture + Strategy

    Describing Cloud Computing


    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:

    • Service Delivery
    • Service Composition
    • Service Consumption
    • Economies of Scale
    • Network Effect
    • Ubiquity / Pervasiveness

    Service Delivery

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

    Service Composition

    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.

    Service Consumption

    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,'s scale in terms of managing its userbase, is significantly different from the type of scale that Google or Amazon has to deal with.

    Network Effect

    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,

    • Who owns sensitive and confidential data?
    • How is SLA managed and enforced/guaranteed?
    • Regulatory compliance?
    • More potential points of failure?
    • Typical operational concerns, such as fine-grained control over security/privacy, governance, support for troubleshooting, overall performance, disaster recovery, planned downtimes, change management, etc.
    • Does it really cost less to users?
    • How will I differentiate?

    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.

    This post is part of a series of articles on cloud computing and related concepts.


  • Architecture + Strategy

    Event - Agile and SCRUM Essentials


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

    • Set up a winning project "constraint profile"
    • Manage customer / user scope expectations
    • Create a release plan
    • Create and prioritize a product backlog
    • Use relative estimating
    • Measure team velocity

    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

    Microsoft Corporation

    3 Park Plaza, Suite 1600

    Irvine, CA 92416

    Phone: 949.263.3000

    Registration Link:

    Event ID:1032382830

    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:

    Event ID: 1032382829

  • Architecture + Strategy

    LineRider with Silverlight 2 and Windows Live Services


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

    • Saving tracks in XML format instead of the Flash-based binary SOL format. This allows for simpler cloud-based storage and sharing, plus eventual cross-platform porting of tracks (with the upcoming console-based versions)
    • Integrating Live Messenger and Live ID as part of the authoring and playback environment, which is intended to add a level of social interaction between users
    • Associating tracks with music playback to provide an experience similar to video capture/playback when shared

    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.

    What's Next?

    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.

Page 1 of 2 (7 items) 12