Another year, another 72-hour conversation. MIX is taking place in Las Vegas April 12-15. If you are not familiar with MIX, it is “…a gathering of developers, designers, UX experts and business professionals creating the most innovative and profitable consumer sites on the web. Sessions range from technical, code-based topics to expert advice on content strategy, usability and design. Explore the future of the standards-based web “. Check out all the details at http://live.visitmix.com.

Yesterday Microsoft announced a new set of MIX sessions including my session titled “Hot from the Labs: HTML5 WebSockets”. WebSockets is an emerging specification being standardized by W3C and IETF that will enable web browsers as well as client applications to open a bi-directional, full-duplex communication channel with a remote host. The application of this technology is endless as there are many benefits over traditional methods including the “long polling” approach that many applications and services use today.

This session will take place on Tuesday April 12 at 11:30am. My colleague Paul Batum and I will walk you through the implementation details and source code needed to play with the HTML5 Labs Web Sockets prototype and will share our firsthand experience in working with the new standard.

I spent the entire week last week enjoying some good weather and southern hospitality in the Carolinas. On Tuesday Mar 15 I had the pleasure of being invited to present at the Charlotte Enterprise Developers Guild organized by Bill Jones (special thanks to SystemTec for sponsoring the evening). On arrival I found the best dressed group of developers I have seen in a long time and felt compelled to apologize for my jeans and Converse. They sure keep it classy down South – something us Northwesterners could probably stand to learn from.

The focus of the talk (and subsequent discussion) was Java and PHP on Windows Azure. I was pleased to learn that the group consisted of a healthy mix of developers writing Java code, PHP code, and .NET code. In fact, close to 50% of the folks in the room indicated that they use multiple runtimes in their local data centers and are used to interacting with multiple codebases consisting of different languages. We had a great conversation about what it means to move to the Cloud and the approach Microsoft is taking to building an open an interoperable platform that will provide a robust general purpose platform for languages and runtimes far beyond .NET. I got a lot of great feedback on the Eclipse and ANT tooling that was recently announced and have opened some new discussions on additional work we are exploring enable additional Java developer workflows / build systems including Apache Maven. Stay tuned on this!

I also had the pleasure of attending the 4th Annual POSSCON (Palmetto Open Source Conference) in Columbia, South Carolina where Microsoft was a sponsor. The speaker lineup was great and there were a number of interesting sessions on the agenda particularly related to open source in mobile applications which seemed to be the hot topic of the event. I was pleased to finally meet such OSS icons as Jim Jagielski of the Apache Software Foundation, and attend a number of great sessions by other well known OSS advocates including William “whurley” Hurley, Bob Sutor of IBM and Jon “maddog” Hall.

My colleague Gianugo Rabellino had the opportunity to present a keynote at the event and took the opportunity to showcase a lot of open source work that is underway both in Microsoft and the Windows ecosystem. He described the change underway in Microsoft toward greater openness and discussed the future of collaboration between Microsoft and the the many Open Source communities on objectives we all share as technologists.

My best booth award (from a coolness factor point of view) goes to my new friends at RepRap.org who are working on building self replicating open source 3D printers. This is a sweet mashup of open source software, open hardware design, commodity component architecture and pure geekitude. We had a great debate about the future of self replication and when we were done my head hurt but it was a blast.

The conference had around 500 attendees and I even somehow became the mayor on Foursquare despite only checking in twice. It was a great time and I look forward to seeing what is in store next year at POSSCON 2012.

I've just returned from EclipseCon 2011, in wet and less than usually sunny Santa Clara California, and it's been definitely a jam packed and busy event with a lot of things going on. Interoperability @ Microsoft was a Bronze Sponsor for the event and we also had a session, "Open in the Cloud:- Building, Deploying and Managing Java Applications on Windows Azure Platform using Eclipse” by Vijay Rajagopalan, previously architect on our team, Interoperability Strategy, and now leading the Developer Experience work for the Windows Azure product team.

The session primarily covers the work we have done on Windows Azure to make it an open and interoperable platform which supports development using many programming languages and tools. In the session, you can learn the primers on building large-scale applications in the cloud using Java, taking advantage of new Windows Azure Platform as a Service features, Windows Azure applications using Java with Eclipse Tools, Eclipse Jetty, Apache Tomcat, and the Windows Azure SDK for Java.

We have been working on improving the experience for Java developers who use Eclipse to work with Windows Azure. At this session we announced the availability of a new Community Technology Preview (CTP) of a new plugin for Eclipse which provides Java developers with a simple way to build and deploy web applications for Windows Azure. The Windows Azure Plugin for Eclipse with Java, March 2011 CTP, is an open source project released under the Apache 2.0 license, and it is available for download here. This project has been developed by Persistent Systems and Microsoft is providing funding and technical assistance. For more info in this regard please check out the post, “New plugin for Eclipse to get Java developers off the ground with Windows Azure” by Craig Kitterman and the video interview and demo with Martin Sawicki, Senior Program Manager in the Interoperability team. Please send us feedback on what you like, or don’t like, and how we can improve these tools for you.

I would like to thank the folks at the Eclipse foundation and the community for welcoming us and I look forward to working with you all in the future and hope to see you at EclipseCon next year!

For those of you who love .Net and have an interest in Web standards and Interoperability at Microsoft, then listening to the interview with Jean Paoli, the General Manager of Interoperability Strategy at Microsoft, with .NET Rocks!, is a must.

.NET Rocks! is an internet audio talk show for those interested in developing on the .Net platform, and the interview with Paoli is part of a six-part series titled, "Ignite Your Coding: Web Development Series."

In the interview, Paoli draws upon his experience as a co-creator of the XML 1.0 standard to discuss XML, web standards, and the role of interoperability within Microsoft.

The Windows Azure Plugin for Eclipse with Java, March 2011 CTP, is an open source project released under the Apache 2.0 license, and it is available for download here. This project has been developed by Persistent Systems and Microsoft is providing funding and technical assistance. This CTP is not feature complete, and we’re now collecting feedback to ensure that configuring, packaging and deploying to Windows Azure integrates well with common Java developer scenarios. Give it a try by taking advantage of the Windows Azure free trial (Introductory Special offer ) which includes 750 hours per month (which is one server 24x7) of the Windows Azure extra-small instance, plus one small SQL Azure database.

What’s in the Windows Azure Plugin for Eclipse with for Java, March 2011 CTP

The plugin adds to Eclipse a set of wizards and dialogs which guide the Java developer through the configuration of all relevant projects settings. The plugin builds on top of the Windows Azure Starter Kit for Java (released last month), which is a simple template project including the typical files that constitute a Java project, as well as the required elements to package and deploy your application for Windows Azure.

In the available software list check Windows AzurePlugin for Eclipse with Java and click Next -Tip: If your install process is slow uncheck "Contact allupdate sites during install to find required software"

During the install you may be prompted by a security warningabout unsigned binaries. Accept the warning to continue

Restart Eclipse

Once installed, the plugin adds a “Windows Azure Project” perspective to Eclipse, and lets you create a Windows Azure project from scratch:

Once you’ve created your project structure, you’re just a few steps away from deploying your applications in the cloud. Here’s what’s next:

Pick the Java server (Apache Tomcat, Jetty, etc.) and the Java runtime you want to use

Create or import your Java application

Test your application against the Windows Azure Compute Emulator (a “local” version of Windows Azure environment running on your machine for development and test purposes - see Getting the Windows Azure Pre-Requisites for more details)

To get more details check out my video interview and demo with Martin Sawicki, Senior Program Manager in the Interoperability team:

Stay tuned

From the early days, Microsoft has been committed to making Windows Azure open and interoperable, offering choice to developers, including Java users. Delivering on this commitment, Microsoft is building and funding tools & SDKs to enable Java developers to easily take advantage of the Windows Azure cloud platform. So, now is the perfect time to jump in and try these tools out. We will continue to make available regular updates and of course we do appreciate your feedback – without it we can’t make them better! Please visit: http://java.interoperabilitybridges.com/cloud.

Last week I attended DrupalCon Chicago – my first DrupalCon since I started working on Drupal related projects in the Interoperability team. Overall, my impression of the event was “wow”. It has been a while since I have seen such a large group (3,000+) of people this passionate about a single piece of software. It didn’t take long for me to realize why: these weren’t just users of the software – they were part of the software. Everyone is bought in, everyone has a stake and a say. This is what Open Source is all about and I must say I dig it.

I spent several hours working the Microsoft booth which was an excellent way to get the vibe of the community – particularly around where Microsoft can and should play a part. Most common question? “What exactly does Microsoft have to do with Drupal?”. The answer is simple: we are working hard along with many partners in the community to make Drupal shine on Windows / Windows Azure and SQL Server for those who would be interested taking advantage of that capability. We did not come to sell Windows or SQLServer but rather to explain what is possible, provide choice and last but not least listen to what people actually want Microsoft to do! I learned a lot about interesting integration scenarios with other Microsoft products and services that I had not even thought about that are of interest to the community. And the semi-surprising bit: not a single whiff of hostility from a single person through the entire event. A number folks had no qualms about telling me that they were a LAMP shop and told me why, but more often than not it was followed by “…but I understand why you guys are here and I appreciate your participation in the community.” This is a classy bunch, and I appreciate the opportunity to have been there.

I look forward to continuing to engage more with the Drupal community at large alongside my colleagues Grace, Mark, Alessandro and many others who are committed to a long term partnership. I look forward to your feedback as well on the Drupal projects that we are working on and what we should be working on!

We have extended our interoperability testing so that now, along with LibWebSockets, we tested interoperability with Jetty, an open-source project providing an HTTP server, HTTP client, and javax.servlet container, developed by the Eclipse community, and we accepted the invitation of Patrick @Docksong.com to test our code with a Firefox Mindfield version he built with an implementation of the 06 Protocol Specification.

We tested the WebSockets interoperability between our HTML5 Labs prototype client and Jetty server, which recently added support for the 06 version of the spec (you can find the Jetty code here.)

We also tested the WebSockets interoperability with a test Firefox build that supports the 06 protocol specification. We are hosting a chat demo page on Azure, which can be opened in Firefox and will use native browser WebSocket instead of the Silverlight-based one.

WebSockets is a technology designed to simplify much of the complexity around bi-directional, full-duplex communications channels, over a single Transmission Control Protocol (TCP) socket. It can be implemented in web browsers, web servers as well as used by any client or server application.

This fourth update of our WebSocket prototype brings ping-pong support: automatic client to server ping every 50 seconds. It also now supports the binary and fragment frames feature defined in the WebSocket protocol specification, but they are not yet exposed to javascript because the W3C API working group is still working on defining a set of APIs that can work with binary data.

Jetty Testing

Our testing involved setting up Jetty server on Win2K8 server machine, and hosting a chat WebSocket endpoint, which has the same functionality as this chat sample.

We then directed our existing chat client web page to use the Jetty-hosted endpoint (instead of WCF-hosted endpoint), and we confirmed that the chat app was fully functional.

This screenshot shows the chat page opening a WebSocket connection to ws://localhost:4502/chat

This screenshot shows Jetty server accepting the WebSocket connection from the browser

We modified our existing chat page to use native browser WebSocket API (instead of the HTML5 Labs WebSocketDraft API), and we confirmed that the chat app was fully functional.

This screenshot shows the chat page works in Firefox using native browser WebSocket API

This prototype forms part of our HTML5 Labs Web site, a place where we prototype early and not yet fully stable drafts of specifications developed by the W3C and other standard organizations. The WebSocket API is currently being standardized by the W3C and the WebSocket protocol is being standardized by the IETF.

Building these prototypes in a timely manner will also help us have informed discussions with developer communities, and give implementation experience with the draft specifications that will generate feedback to improve the eventual standards.