As I already mentioned, I delivered keynote at ESRI Developers Meet-up in Atlanta last week. I wanted to post my short speech, as it expresses some very important points. I talked about Microsoft developer landscape and importance of learning. Here is the speech. Please let me know what you think.
ESRI Key note
My name is Sergey Barskiy. I live here in Atlanta, and I work for Magenic Technologies, a Microsoft technology focused consulting company. I appreciate the opportunity to express my opinion on Microsoft technology landscape as it currently stands, with focus on Windows Phone 7, Silverlight and cloud technology stack.
Let me start with a quote attributed to Buddha. “Everything changes, nothing remains without change.”
Let’s start with the Windows Phone 7. The first phones were sold last November time frame. So far more than a million phones have been sold, which some think is a success and some a failure. Instead of talking about subjective opinions on the WP 7, let’s discuss what this release did for Microsoft. This release is arguably the first consumer oriented phone device that Microsoft put out. It is in direct completion with iPhone and Android phones. Marketplace has become very important on that market, and Microsoft put very heavy focus on that aspect of the phone. Microsoft tools have always been very good, but tools for phone were extremely well done, considering that was the first release of the tool set. So far there are over 12,000 applications in marketplace, and much more by some estimates, maybe as many as 20,000. There are tens of thousands of developers registered with the marketplace. It is hard not to say that this is not a success for Microsoft. New beta release of tools for the next revision of the phone, dubbed Mango, shipped a few weeks ago. It contains many consumer oriented as well as developer oriented features. Consumer features ultimately matter more, because phone needs to make users happy before making developers happy. Out of those features IE9 and HTML 5 support is probably the most important. Along with it users will enjoy fast application switching, better office integration and improved multi tasking. These feature set demonstrate ongoing commitment and maturation of the platform. Developers’ features include background tasks, SQL CE with ORM, better camera integration, compass access and better tooling, specifically emulator features such as GPS and accelerometer support. There will also be better integration between two developer platform on phone, XNA and Silverlight. Of course, ESRI has its own powerful API for the phone.
Let’s now move on to Silverlight. There has been some controversy about future of Silverlight, especially after comments by Bob Muglia last fall. In response to this negativity, Microsoft announced Silverlight 5 features a while ago, reaffirming its commitment to Silverlight platform in general. The beta shipped a a few weeks ago. Having said that, Microsoft’s message around Silverlight has changed since Silverlight 2 was released. It changed from cross platform cross browser application development platform to just developer platform for media applications and business applications. Since there is no mentioning of cross platform any longer, one could deduce that the focus is now on Windows development. Let’s take a look at the Silverlight 5 features and see how the next version of the platform and see how they fit into that message.
First of all, media related features. There is a lot of improvement in how media, such as videos are handled. There are performance improvements for hardware decoding and h.264 playback, including low power devices. Trick play was added, allowing the user to play videos at high speed, while correcting sounds for pitch changes. Improved power awareness keeps screen saver from coming up while media is playing. Remote control capabilities were added as well as some DRM enhancements. Enhancements to text presentation were added, allowing for text flow around images; text layout speed was increased. Performance across the board was also a focus. Graphics engine also improved, providing for more GPU acceleration as well as 3D support.
On the other hand, developer experience was taken into account. Default templates for types are now supported, allowing UI to automatically pick a template when a view model is injected into the visual tree. Additional binding options are appearing in this release, namely DataContextChanged event, XAML binding debugging, relative source binding to ancestor, proving more power for creating custom controls and custom templates. Profiling features allow for better troubleshooting of slow parts of a complex system.
There are some Windows related features as well, such as 64 bit plug-in availability. There are enhancements to out-of-browser functionality, such as multiple windows in out-of-browser mode. There is more support for process launching and PInvoke, enabling developers to write applications that integrate better with Windows desktop.
Of course, we cannot talk about Silverlight without mentioning HTML, the 10,000 pounds gorilla in the room. Based on announcement and comments from various Microsoft folks and public blogs, HTML 5 is now the official Microsoft answer for cross platform development. As to what tools can be used, those would include ASP.NET and ASP.NET MVC from Microsoft perspective. Does this mean Silverlight is dead? By no means, it just has different goals from the ones 3 years ago. It is still very much a viable platform for business applications, as long as requirements support the usage of the platform. Let’s chat about MVC 3.0, since it was also released this year.
Now let’s chat about cloud. In general terms cloud refers to delegating maintenance of some parts of your application, sometimes hardware, sometimes also run time to a third party provider. There are a few types of cloud platforms. IAAS – infrastructure as a service means that hardware is provided by cloud provider, and the consumer is responsible for setting up their applications and maintaining them. In typical sense this means running virtual machines in the cloud, otherwise known as some data center full of computers maintained by a cloud company. Another type is SAAS or software as a service. This means you rent the software from a company, and they are responsible for everything. An example would be SalesForce. Third and arguably most interesting aspect is PAAS or platform as a service. In this approach cloud provider supplies virtual machines preloaded with software and supplies tools for the developer to deploy and monitor software that utilizes all aspects of the platform, such as operating system, additional software and resources.
Why use the cloud? There are a number of reasons that vary from product to product. Typically reasons would include cost of entry, scalability, availability and geo-proximity. Say you wrote a brand new exciting web product, but you are not sure how many customers you will have. Could be one, could be 1 million. So you struggle with the question how much hardware and software to provision. Both under and over-provisioning are problems. If you under provision and your software’s performance is bad, the customer will run away from you. If you over provision you may spend millions for no reason. Cloud aims to solve this problem by providing on demand growth opportunity, otherwise known as pay-as-you-go model. Hand in hand with this goes scalability. Properly written software is easily scalable, usually with a couple of button clicks. Cloud vendor usually guarantees uptime of your system, thus insuring your software is available to be used. Geo-proximity allows you to position servers closer to customer, including abroad.
Let’s take a look at Microsoft presence in this space. Microsoft has offering in both SAAS and PAAS sectors of the market. SSAS includes a number of products. The most prominent one is Office 365, which include Office Professional, Outlook on line, Link which is the successor to Communicator and Live Meeting and SharePoint online. This offering allows you for just a few bucks per person per month remove a lot of pains from organizational activities that do not directly contribute to overall value of the company. This is really simple offering, and not very interesting if you are a developer.
Much more interesting is PAAS or Windows Azure. Let’s take a closer look at what Azure offers to developers, and as a result to your customers.
At a high level Windows Azure comes with a number of options to develop applications with. First and foremost, it is Windows itself and .NET framework. You further utilize the following roles available in Azure: Web role and Worker role. Web role is designed to host web applications, such as ASP application. Worker role is akin to Windows services. Its purpose is to provide sheer computing power and processing power. You have a number of storage options on Azure. You can utilize SQL Azure which is relational database in the cloud, build on SQL Server 2008. It has all the familiar features to all the developers. Furthermore you can use blob storage, suitable for storing large files, such as videos or documents. This storage is http addressable via a URL, and can be used as a result in all web applications. Developers also have table storage available. It can be used to store structure, but non-relational data. It is much cheaper than SQL Azure and much more scalable, but it is up to you to maintain transactional integrity. And finally you can also use message queues, which are durable messages that can be used to communication information between parts of one application or multiple applications. SSRS is already in beta as well, providing a complete solution for business applications.
Another very important part of Azure offering is AppFabric. AppFabric is an umbrella term used to describe a number of helpful technologies. They include Service Bus, Access Control, Caching, Integration, and Composite App (WCF/WF Hosting). Let’s break them up and take a closer look at each one.
The Service Bus provides secure messaging and connectivity capabilities that enable building distributed and disconnected applications in the cloud, as well hybrid application across both on-premise and the cloud. It enables using various communication and messaging protocols and patterns, and saves the need for the developer to worry about delivery assurance, reliable messaging and scale.
Access Control provides an easy way to provide identity and access control to web applications and services, while integrating with standards-based identity providers, including enterprise directories such as Active Directory® (ADFS 2.0), and web identities such as Windows Live ID, Google, Yahoo! and Facebook. The service enables authorization decisions to be pulled out of the application and into a set of declarative rules that can transform incoming security claims into claims that applications understand. These rules are defined using a simple and familiar programming model, resulting in cleaner code. It can also be used to manage users’ permissions, saving the effort and complexity of developing these capabilities.
Caching provides a distributed, in-memory, application cache service for Windows Azure and SQL Azure applications. It provides applications with high-speed access, scale, and high availability, to application data. These capabilities are provided entirely as a service (no installation or management of instances, dynamically increase/decrease cache size as needed).
Integration provides common BizTalk Server integration capabilities (e.g. pipeline, transforms, adapters) on Windows Azure, using out-of-box integration patterns to accelerate and simplify development. It also delivers higher level business user enablement capabilities such as Business Activity Monitoring and Rules, as well as self-service trading partner community portal and provisioning of business-to-business pipelines.
Composite App provides a multi-tenant, managed service which consumes the .NET based AppFabric Composition Model definition and automates the deployment and management of the end to end application, eliminating manual steps needed by both developers and IT Pros today. It directly executes application components to provide a high-performance runtime optimized for cloud-scale services and mid-tier components. It also delivers a complete hosting environment for web services built using Windows Communication Foundation (either natively developed or using WCF Data Services and WCF RIA Services) and workflows built using Windows Workflow Foundation.
Finally, we cannot really end without mentioning Windows 8. I am not sure how many of you follow current rumors and have seen a video put out by Microsoft that shows a glimpse of Windows 8. They showed Metro or Windows Phone 7 interface with live tiles, full gesture support and touch friendly user interface. Moreover, there are various hints as to new programming model for Windows. Does it mean none of the existing applications will run on Windows 8? Of course not. This new functionality has to be additive. Having said that, there are rumors on Mary-Jo Foley blog and WinRumors.com that mention Jupiter as the new API (the best one could decipher) that will be available in Windows 8. There is uproar already in Silverlight community, stating that Microsoft again is abandoning Silverlight. If you could look at Jupiter as new and better API and user experience, then the question is why fight it?
Let me end with another quote by Eric Hoffer, American philosopher.
“In times of profound change, the learners inherit the earth, while learned find themselves beautifully equipped to deal with a world that no longer exists.”
The moral of the story is that Microsoft will never stop inventing new technologies, as this would spell the end to them as a company. So that a developer to do? The answer is never stop learning.