MS Open Tech Fri, 19 Dec 2014 21:06:59 +0000 en-US hourly 1 New Open XML PowerTool Cmdlet simplifies retrieval of document metrics Fri, 19 Dec 2014 21:06:59 +0000 Read More]]> It’s been a good year for Open XML developers. The release of the Open XML SDK as an open source project back in June was well-received by the community, and enabled contributions such as the makefile to automate use of the SDK on Mono and a Visual Studio project for the SDK. Project leader Eric White has worked to refine and improve the testing process, and here at MS Open Tech we’ve been working with our China team to get the word out, starting with mirroring the repo to GitCafe for ease of access in China.

Today there’s another piece of good news for Open XML developers: Eric White has added a new Get-DocxMetrics Cmdlet to the Open XML PowerTools, the latest step in a developer-focused reengineering of the PowerTools to make them even more flexible and useful to Open XML developers. As Eric explains in his blog post on the Open XML Developer site:

My latest foray is a new Cmdlet, Get-DocxMetrics, which returns a lot of useful information about a WordprocessingML document.  A summary of the information it returns for a document:

  • The style hierarchy – styles can inherit from other styles, and it is helpful to know what styles are defined in a document.
  • The content control hierarchy.  We can examine the hierarchy, and design an XSD schema to validate them.
  • The list of languages used in a document, such as en-US, fr-FR, and so on.
  • Whether a document contains tracked revisions, text boxes, complex fields, simple fields, altChunk content, tables, hyperlinks, legacy frames, ActiveX controls, sub documents, references to null images, embedded spreadsheets, document protection, multi-font runs, the list of numbering formats used, and more.
  • Metrics on how large the document is, including element counts, average paragraph lengths, run count, zero length text elements, ASCII character counts, complex script character counts, East Asia character counts, and the count of runs of each of the variety of characters.

Check out the screencast for a quick 6-minute overview of how you can use Get-DocxMetrics for a variety of tasks. This Cmdlet can be used to help automate test processes, identify documents that have metadata to be reviewed or removed, do statistical analyses of large corpuses of documents, and many other scenarios. And as you can see in the screencast, it’s super easy to use.

We’ll keep you posted as the Open XML developer story continues to improve going into 2015. I’m looking forward to another year of great news for Open XML developers!

Doug Mahugh
Senior Technical Evangelist
Microsoft Open Technologies, Inc.


]]> 0
jQuery Adopts Pointer Events Wed, 17 Dec 2014 18:15:43 +0000 Read More]]> Today, the jQuery Foundation announced that it will take over the development and maintenance of a polyfill for Pointer Events initially created by Google as part of the Polymer project. This is great news for web developers who seek a simple unified model to manage multiple input types (mouse, touch and pen) in their web pages and web apps. They will now be able to rely on an up-to-date and maintained Pointer Events polyfill that supports this technology that is close to standardization within the World Wide Web Consortium (W3C), while they wait for all browsers to implement it. It was only yesterday we reported about the strong progress of the standardization process for Pointer Events as the W3C promoted the specification to Proposed Recommendation.

"The jQuery Foundation sees Pointer Events as the best path forward for the web when it comes to managing multiple input types. Based on feedback from the developer community and library maintainers, we believe Pointer Events are the future and by maintaining a full featured polyfill, we hope to give developers what they are asking for while we wait for browser makers to implement those APIs.” - Kris Borchers - Executive Director - jQuery Foundation

The jQuery UI team also recently declared its intention to adopt Pointer Events, and the jQuery UI roadmap indicates that it will share its implementation with jQuery Mobile.

Along with the work Mozilla is doing to bring Pointer Events to all its Gecko-based platforms, the fact that jQuery has elected to adopt the Pointer Events model supports pleas from the community for a unified model.

Point. Click. Touch. And weigh in on the adoption of Pointer Events!

]]> 0
W3C promotes Pointer Events to Proposed Recommendation Tue, 16 Dec 2014 18:42:28 +0000 Read More]]> Today the W3C promoted the Pointer Events specification to Proposed Recommendation status coming just before a technology becomes a recommended standard.

Pointer Events is a technology originally implemented in Internet Explorer to simplify the way developers deal with input events in a web application or site, abstracting the type of input (mouse, touch, pen, Kinect, etc) and providing a unified model. The technology has been proposed by Microsoft to the W3C for standardization and MS Open Tech has since been working with the community to demonstrate interoperability in other browsers based on WebKit, Blink and Gecko. Both Internet Explorer and a build of Firefox that Mozilla is working on in a branch of their code base now report 100% test pass on all Pointer Events tests. Mozilla intends to port their implementation from this branch to all other flavors of Firefox.

Pointer Events makes developers life easier

Pointer Events solves a fundamental issue web developers are facing: think about the code you have to write today to make sure your Web site (or web app) behaves when browsed on using a mouse, touch and a pen! With no unified model, you have to hook up to as many events as there are input types, you have to figure out which one is which, considering some browsers compensate the fact they don’t support all input types by “simulating” mouse or touch events. Pointer Events addresses exactly this problem by exposing a universal pointer model, triggering a single event whether the user interacts with the bowser using a mouse, touch or a pen. Developers can share code across input types when it’s convenient, but can still differentiate/augment for a specific input type when desired. You can find a lot of details on Web Platforms Docs.

Pointer Events can be used today.

As often in the early days of new web technologies, early adopter developers pave the way for others creating polyfills for technologies that are not yet supported across all browsers natively. Pointer Events polyfills such as the Polymer Pointer Events polyfill or Hand.js have been created as soon as Internet Explorer introduced the new technology. And since Chrome added support for the touch-action CSS attribute (allowing developers to take control over elements’ default behavior in response to touch events), it is even simpler to base your code on Pointer Events to unify and simplify multiple input types support in your web app across platforms.

Be a Pointer Events advocate
If like us you think Pointer Events is a great model, no need to wait to use it. Use polyfills where Pointer Events are not natively supported and advocate for a great way of dealing with multiple input points.

]]> 2
VM Depot Gets a New Look Tue, 16 Dec 2014 17:43:34 +0000 Read More]]> VM Depot has become the go-to location for community maintained open source virtual machine images for Microsoft Azure. Since the site launched nearly two years ago, VM Depot has helped people to discover, deploy, test and use open source software in the cloud. In recent months, we realized that the site had quite simply grown too big for its britches. We therefore decided to act on user feedback and update the catalogue in a number of useful ways.

There are several improvements to the site; I will mention the most significant updates here, including:

  • New documentation
  • Enhanced discovery through improved categorization and filtering of images
  • A streamlined look and feel

A description of each of these improvements follows. Should you simply want to take a look for yourself, then visit

New Documentation

image of the help indes with each of the six main sections as described in the body of the article.We have added a large number of tutorials for specific images; in fact all images now have (at least) a deployment tutorial attached to them. Simply follow the link from any image description. Furthermore, to improve navigation and readability, we split the massive single document that spans all aspects of VM Depot into six distinct sections:

As always, documentation is never complete, especially when it comes to tutorials. We welcome contributions from both image publishers and community members feel free to contact us.

Enhanced Discovery through Improved Categorization and Filtering of Images

Selection boxes to apply filters such as "Application stack", "language Stack", "Databases and NoSQL" amd "Developer Tools" As the number of images in the repository have grown, so has the sprawl in the free-form meta-data fields, of which there were two (packages and tags). To make it easier to find images of interest, we have reused the packages field and renamed it categories. This is no longer a few-from field, publishers can choose up to three of the most relevant categories. This will help users filter search results while still giving publishers flexibility in the free-form tags field.

Users can now select one or more categories of interest within the web site and the list of images displayed will change accordingly.

New look and feel

Like many web services, features have been added to VM Depot in an organic fashion, based on input from users. Consequently, some features were feeling a little “bolted on” in the web interface. We have implemented a new look and feel for the site, which more cleanly integrates these features into the portal. Those who are familiar with the previous site will continue to feel right at home with this new one, but we hope you will be more productive.

Our goal has been to ensure you have easy access to everything you need to work efficiently with VM Depot. We believe we have achieved this, but as always we welcome your feedback as we continue to make improvements to the site – both in terms of user experience and provided features.VM Depot home page sporting its new look. Showing navigtion, search bar, introductory text, Vm Image list and filter options.

]]> 0
Windows App Certification Kit fails with Cocos2d-x 3 windows 8 universal project Tue, 16 Dec 2014 17:16:22 +0000 Read More]]> cocos logoDecember 16th 2014, it appears that a recent Windows Update (KB2976978) breaks the Windows App Certification (WACK) Test for the Windows Store App in the Cocos2d-x v3.3 Universal App.

The update causes the Supported API test to fail with a lot of errors.


Work Around:

Go to Control Panel – Program and Features

Click on View Installed Updates

Uninstall update KB2976978

The Windows Store app now passes the Supported API test

We’ll keep you posted when the Windows Update will be corrected.


Eric & Dale

]]> 0
Modern Windows support available with new Cocos2d-x 3.3 release Mon, 15 Dec 2014 21:51:32 +0000 Read More]]> clip_image002

Today Chukong inc announced the availability of the version 3.3 of Cocos2d-x.  It is an important step in the Cocos2d-x engine history, as this version introduce new key features:

- New release system, and new versioning strategy

- New cocos.exe on command line

- New game architecture

- Smaller Size

- More 3D features

-  …

MS Open Tech has invested heavily in the Cocos2d-x engine for this past year to ensure that the bits for Windows could also be ready in concert with this Cocos2d-x 3.3 release. This means that developers can build Universal Apps for Windows Phone and Windows 8.1 devices based on version 3.3. Taking this modern approach to app development will speed time to market for those targeting Windows devices.

Look out for more great things in this area over the coming months!

To setup Cocos2d-x on Windows smoothly, have a look to our GitHub pages.

As always, your feedback is important to us. Please comment and flag issues in our Cocos2d-x GitHub repo.

We hope you enjoy game coding with Cocos2d-x on Modern Windows!




]]> 3
An update to the Jenkins Slave Plugin for Azure Mon, 15 Dec 2014 20:14:38 +0000 Read More]]> The Java Dev team at MS Open Tech has added a new feature to the Jenkins Slave Plugin for Azure.  Developers now have the option of shutting down (not deleting) a Jenkins Slave after use, so it can be ready to spin up quickly the next time that it is needed.  This new option is enabled via a new setting in the Azure profile configuration, shown here:

Jenkins Azure Profile COnfiguration

The Jenkins Slave Plugin for Azure, released in September, enables developers and IT Pros to automatically provision and de-provision Azure virtual machines as slaves to a Jenkins master. The plugin is available from Jenkins, and has also been open sourced on GitHub.

Getting started

This GitHub documentation will help to get you started with the plugin. Please see this documentation on the Jenkins site for additional information on how Jenkins Masters and Slaves work.

Add the Azure Storage Plugin to optimize Jenkins builds

You can also use the Windows Azure Storage plugin for Jenkins to deploy build artifacts to cloud storage and/or include build artifacts from cloud storage within your deployments. The plugin is also open source, and published to the GitHub project site.

Share your experience with Jenkins on Azure!

This update was made based on feedback form the community, which we value greatly. Please share any suggestions for further improving interoperability between Jenkins and Azure in the comments below or via GitHub.

]]> 1
POCO now supported in openFrameworks for Modern Windows Apps Thu, 11 Dec 2014 15:00:00 +0000 Read More]]> Building on the work our engineering team at MS Open Tech has done to ported openFrameworks on Modern Windows apps, and Universal apps , we’ve taken it a step further to make network libraries accessible to creative developers. These openFrameworks contributions include POCO libraries  that effectively wrap the three main network protocols: OSC, UDP and TCP. Using this API set, which is available for download via GitHub on the Universal branch, now makes it is possible for developers to build applications using these network protocols on Windows 8.1 or Windows Phone 8.1.



Getting Started

You will find sample on your openFrameworks repository (clone it from GitHub) here:


You need to #include "ofxNetwork.h"

For UDP:

Declare 2 variables in your class (ofApp.h)

ofxUDPManager udpSender;

ofxUDPManager udpReceiver;

In the implementation source file (ofApp.cpp) in the setup() method, initialize your UDP sender and receiver and bind it to a port number:

//create the socket and bind to port 9000




//create the socket and set to send to


udpSender.Connect("", 9000);


In the update method, receive the data:

char udpMessage[10240];

udpReceiver.Receive(udpMessage, 10240);

if udpMessage is not empty, you’re done, receiving the data J

Let see how to send it: Pretty simple, just use the Send method:

udpSender.Send(message.c_str(), message.length());

What we just show with UDP is almost the same with TCP or OSC, just adapt with the right methods:

For TCP:

Uses ofxTCPServer receiver; and ofxTCPClient sender;

Initialize with:

receiverPort = 11999;



senderPort = 11999;

isConnected = sender.setup("", senderPort);


To receive and send:

string message = receiver.receive(msg);


For OSC:

Uses ofxOscSender sender; and ofxOscReceiver receiver;

Initialize with:

senderPort = 9000;

sender.setup("", senderPort);

receiverPort = 9000;


To receive and send:

ofxOscMessage m;


ofxOscMessage m;




Tips: Don’t forget to add Internet (Client and Server) Capabilities in your Package.appmanifest to allow networking capabilities to your app.



As expected, the three code alternatives are pretty similar, yet they each differ in which connected protocol and type of message is used.

With this new update to openFrameworks, we open the door to openFrameworks developers to the use these useful network features.

We look forward to you surprising us with what you can do with it!


]]> 2
New ANGLE boosts openFrameworks Modern Application on Windows Wed, 10 Dec 2014 22:50:39 +0000 Read More]]> clip_image001Our engineering team has contributed some useful updates to ANGLE  to increase the performance of applications that we think you should know about.

We recently made great gains on Cocos2d-x , and have put a bit of work into achieving similar performance boosts for openFrameworks running on Modern App.

To benefit from this improvement, just pull the last bit of openFrameworks for Modern App  branch Universal. With this branch, as we announced this past summer, you can create Universal Apps for Windows RT. This means, write once, and build for both Windows 8.1 and Windows Phone 8.1.

With this new performance enhancement, your creative code on openFramework will gain a performance boost on Modern Windows.

Enjoy your ‘ANGLE boosted’ creative coding Sourire


]]> 2
Connecting the IoT dots with a simple open source project: Wed, 10 Dec 2014 15:05:00 +0000 Read More]]> imageHere comes, a new open source project by MS Open Tech that will help you get started connecting tiny devices to the cloud and implementing data analytics easily with Microsoft Azure services such as Event Hubs, Stream Analytics and Machine Learning.

The project is so simple that everyone at MS Open Tech is now ordering their own Raspberry Pi and Arduino boards with sensors to start monitoring the temperature in their offices from a website.


The Internet of Things is as much about the “things” as it is about the “Internet.” Services running in the cloud that allow to make something out of the huge amount of data produced by connected devices are key to implementing an end-to-end IoT solution. Very often the storage and computing power that are closest to the “things” are limited.

With the cloud, these limits are gone, and new scenarios are possible. You can count on hyper-scale data ingestion, storage and analytics. You can deliver an instant, detailed, customized and event-driven insight into the data. You can do preventive maintenance by analyzing terra bytes of data, leverage hyper-scale computing power to run complex Machine Learning algorithms, do near real time analytics on streams of data coming from a variety of places/devices/services.

These are just few examples of scenarios you can implement taking advantage of cloud services, and it is certain that you will think of plenty other ones when reading more about the Microsoft Azure services described below.

The one thing you might wonder though is how you can connect the dots? How you will connect your existing or future smart device to Microsoft Azure services in a secured way? How you can configure the services to complement each other? How you can make the info available through dashboards, websites and mobile apps?

To help you get started and implement your first IoT solution with Microsoft Azure straight away, there is a lot of detailed documentation on the Microsoft Azure dev center for each of the services you would consider using. To complement this, we created as a starting point to easily implement your first end-to-end IoT using Microsoft Azure services. Going through the step-by-step guide, you will learn about how to configure easily available devices to send data to the cloud, easily setup near real time analytics, create Machine Learning Rules, and render the information for everyone to see in an easily consumable format.

New Microsoft Azure services designed with IoT in mind

In a blog published recently, Joseph Sirosh, Corporate Vice President of Machine Learning at Microsoft announced new Microsoft Azure services, coming to reinforce Azure’s offer for customers building data-centered solutions. Many Microsoft Azure services are designed with Internet of Things in mind, such as Event Hubs, Stream Analytics, HDInsight and Machine Learning.

Microsoft Azure Event Hubs is designed for secure and reliable ingestion of very large amounts of telemetry data from multiple distinct sources. The service is generally available since a couple weeks and can help realizing telemetry ingestion scenarios with over 1 GByte/sec cumulative throughput from hundreds of thousands of concurrently connected clients with all the hard scale-out and reliability problems being handled by the service.

The Azure Stream Analytics service that has been released as a preview a few weeks ago is a real-time event processing engine that helps uncover insights from devices, sensors, infrastructure, applications, and data to better understand patterns, power a dashboard, detect anomalies, and kick off an action while data is being streamed in real-time.

The Azure HDInsight service is based on Apache Hadoop. It can scale to petabytes on demand, and integrates seamlessly with the other Azure services including the ones mentioned above. HDInsight is a key part in IoT scenarios, allowing to analyze huge amount of data generated by devices.

Since last summer, Azure has offered a preview of its Machine Learning service. Machine Learning enables advanced analytic web services to be built in minutes and hours, eliminating much of the heavy lifting associated with deploying machine learning in modern data-driven applications. If you are a seasoned data scientist, you’ll be happy to know that Machine Learning supports R, the popular open-source programming environment for statistics and data mining. is an open source project initiated by MS Open Tech as a playground to get started with Microsoft Azure services for IoT projects, whether you are a Maker, an IoT enthusiast, enterprise developer or systems engineer, or in the embedded industry. In this project, you will find some boilerplate code to connect devices to Azure Event Hubs, instructions on how to configure some of the Azure services mentioned above to analyze data sent by the devices and a prototype Website to render the information to a final user.

The project is meant to grow with additional devices/sensors boilerplate code, more services use cases examples, and more clients for rendering the data, visualizing events and so on.


In the initial release of, we implemented a generic end to end scenario using Arduino boards with a Weather Shield acting as sensor endpoints and a Raspberry Pi acting as a Gateway. The sensors send temperature, humidity and other information to the Gateway that relays it to Azure services through Azure Event Hubs. In the project, we show how to configure Stream Analytics to do real time analytics on the data ingested and trigger alerts. Last but not least, we provide a sample Website to show both the real time data coming from the devices and the alerts triggered by Stream Analytics.

Shortly we will add Machine Learning examples as well as additional devices boilerplate code.

The project is open for contributions, and you are more than welcome to join the discussion on GitHub, submit issues if you find bugs or think of new features to add, contribute a new device support, or a new scenario you think can help others getting started with Azure for their IoT project. To get started, read the step-by-step guide in the Wiki.

]]> 3