Skip to content
Sep 26 14

IoT with Azure Service Bus, Netduino and Gimbal

by Amol Ajgaonkar

Netduino is an open source electronics platform using the .NET Micro framework. I was using Netduino to create an IoT application which allows me to turn on the lights in the garage as I come closer to the garage.


  1. Gimbal (Proximity Sensor)
  2. Netduino Plus 2
  3. VeraLite (Z-wave controller)
  4. Z-wave enabled outlet.


  1. Azure Service Bus Queue – Setup to hold the commands/messages sent from the mobile App, consumed by Netduino/WCF service.
  2. Xamarin – To build the mobile app to detect the proximity sensor and send commands to the Netduino using the Azure Service Bus Queue.

This is the way I envisioned it to work:


  1. The proximity sensor will be in the garage.
  2. The mobile app will get the proximity information from the sensor as the phone approaches the garage.
  3. If the user is close, the App will send a message to the Azure Service Bus queue.
  4. Netduino will poll to the queue for new messages.
  5. If Netduino finds a message, the command passed in the message is checked.
  6. The Netduino then connects to Veralite (Z-wave controller) and sends a command to turn the light on/off based on the command in the message queue.

In theory this all should work and it does in most part. I ran into a couple of issues here which I thought might be useful to anyone working on such projects.

  1. Proximity values from any sensor are always fluctuating. They are never precise. It only provides information that sensor is nearby. Don’t rely on the distance value. It is based on the strength of the signal and not reliable.
  2. Netduino runs on .Net micro framework. Currently, it does not support SSL. All the blogs I read said that SSL implementation takes up too much memory and Netduino does not have enough to support it. So, you cannot directly connect to the Azure Service Bus queue. Hopefully, someone will implement the SSL stack soon.

But if we modify the architecture a bit, we can overcome the SSL support issue. Here is the modified architecture that worked.


I added an additional layer which acted as proxy between the Netduino and the Service Bus. Instead of Netduino connecting to the Azure Service Bus Queue endpoint, Netduino connects to the WCF service implemented behind the firewall. The WCF service checks for messages in the Azure Queue and returns the messages to the Netduino.

By using the Azure Service Bus Queues, we don’t have to open up ports on our router or setup port forwarding. Doing so, opens our network for all kinds of attacks. Not being a security expert, I would rather have all incoming ports shut tight than try and implement an authentication mechanism.

Sep 15 14

ListViewWebPart – Set custom SPView (SharePoint 2013/2010)

by Amol Ajgaonkar

I was working on a feature stapler to add a list view on the landing page. I simply created an instance of the ListViewWebPart class, set the ListID, ViewGuid and the WebID and added the web part to the page. Great, I saw the web part on the page. But then, I realized that the web part was not rendering the view I had set.


Searching online, I found numerous articles describing how a ListViewWebPart works. To summarize, ListViewWebPart creates a hidden view and uses that view to render. So, even if you set the view while instantiating the web part, it does not use that view.

The solution for this was pretty simple, all I did was use the XSLTListViewWebPart instead of the ListViewWebPart and it used the view that I set. Here is a snippet of code that returns a XSLTListViewWebPart.

public static XsltListViewWebPart GetListWebPartWithViewFor(SPList list, string webPartTitle,string viewName)
XsltListViewWebPart lstWp = new XsltListViewWebPart();
SPView view = list.Views[viewName];
if (view != null)
lstWp.ViewGuid = view.ID.ToString();
lstWp.ViewGuid = list.DefaultView.ID.ToString();
lstWp.ListId = list.ID;
lstWp.WebId = list.ParentWeb.ID;
lstWp.Title = webPartTitle;
lstWp.ChromeType = System.Web.UI.WebControls.WebParts.PartChromeType.TitleOnly;

return lstWp;

Aug 29 14

Fifteen Mobility Improvements To Bring Your Field Staff Into The Now

by Sadie Van Buren

20140514_Field_Enablement_At_Meat_Spot_crop_sq_200   If your field workforce is up and running on a mobile device platform to do their work, congratulations! You’re already realizing the benefits of stepping away from a paper-based process. But is their mobile experience taking advantage of the latest and greatest functionality? Advancements in just the past two years have been so rapid that many of the functions that seemed revolutionary just a short time ago have been eclipsed. The field service experience no longer needs to be a disembodied app on a device – now the device can act as a Swiss Army knife of tools, as well as an extension of the desktop and your corporate systems.

I interviewed the experts on our Devices and Mobility team, and they shared with me fifteen mobility improvements you can take advantage of today, that will empower your field staff and make their work lives easier:

Functionality Then Now
1. E-signature capture Needing to sign on paper, or to use a dedicated device or stylus, which is challenging if it is lost, stolen, broken, or used in a slippery / greasy environment Sign with your finger.
2. GPS location detection Continual connection to wifi drains the battery.
Example: Needing to track vehicles during their delivery routes, or find equipment or inventory at a facility.
Get regular location updates without being continually connected.
3. Offline / disconnected data access Long, tedious waiting for app sync; inability to multitask. Sync in the background while you continue to work.
4. Cross-platform availability Locked into a single platform, heavy reliance on native code. Provide cross-platform availability with minimal native code.
5. Multiple functions in a single device Dedicated, proprietary devices that provide a single function.
Example: a retail organization having a separate device for everything the customer can do in their stores – price scanning, gift registry, etc.)
A single device that can support multiple use cases and functions.
6. Image capture Needing to carry a separate camera or switch to separate function.
Example: taking photos during a site inspection.
Hands-free data capture.
7. Audio capture Ambient environmental noise means poor recording quality.
Example: Elevator shaft inspection – making voice annotations while there is a loud hum in background.
Custom filters can provide background noise reduction as needed.
8. Data capture Manual data entry.
Example: Capturing environmental temperature at different times of day.
Sensors can report back to your app, eliminating manual data entry.
9. Scanning / barcode Scan individual items with a dedicated scanner. Walk into a room and anything with a Bluetooth low-energy signal can be captured.
10. Real-time streaming Streaming kills your cellular plan & battery life. Design apps to only stream on-demand; implement push notifications for background updates.
11. Screen Brightness Battery drain.
Example: Dim environmental lighting, for example at an inspection site, requires higher screen brightness.
Profile your app’s power consumption using tools; theme the UI to work well across ambient lighting conditions.
12. Dashboards Lacking the ability to receive alerts and act upon the information displayed. Sites are responsively designed and the computing power of the device is greater. Receive information, act upon information. See your dashboard on your phone.
13. Native applications Applications such as those in the MS Office suite opened in web browser version with varying results. The software becomes part of the tool. Applications such as PowerPoint can be opened and projected from the phone.
14. Personal assistant The automated PAs of two years ago produced varying results with limited functionality. Today’s functionality is much improved. Assistants like Siri, GoogleNow, and Cortana can analyze your calendar and help with reminders.
15. Segregation of enterprise / personal Needing to carry two devices Today’s mobile operating systems handle this nicely.


For more information, read our Field Enablement case studies for the Insurance and Medical Devices industries, and join our Field Enablement Roadshow in New York, Chicago, and Boston!   We look forward to your feedback!

Aug 26 14

The Business Drivers of the Modern Application – Part 11: Conclusion

by Mikhail Shir

Consumer expectations are changing the way that corporations design, build and run applications.  Employees are increasingly asking their internal IT organizations to provide experiences that are similar to their consumer experiences with websites, devices and applications.

Successful IT organizations are addressing the need to support these increasing business demands by focusing on these pillars and dimensions:



They focus on experience, architecture and process to create successful modern applications.

Experience enables IT organization to deliver applications that operate the way that the user prefers to work instead of requiring the user to change to accommodate the applications.  This demonstrates to internal users that the technology team understands their needs and is responding by making their day-to-day activities simpler, more intuitive and more efficient.

Architecture enables IT organizations to deliver applications that can scale to meet the needs of the organization and eventually to external partners.  They also ensure that the user’s availability and security needs are met.

Process allows IT organizations to more effectively partner with their business counterparts to build applications.  Agile methodologies allow business partners to set priorities every few weeks instead of trying to create rigid yearly plans.  They also allow IT organizations to get direct feedback from the end users on what is working and what is not.  Breaking down those barriers helps to deliver better software faster to end users.

Thank you for taking the time to read the business drivers of modern applications.  We hope that this spurs discussion into how dramatically consumer demands have changed how we should be thinking about building and delivering applications.

Aug 20 14

The Business Drivers of the Modern Application – Part 10: Process Pillar: Engagement Aspect

by Mikhail Shir

In the final series post, we are going to discuss the Process pillar.

The Modern Application Process Pillar focuses on how software development teams are engaging with their business partners and customers to build applications.

Engagement Aspect

Traditional applications are built by disparate product, application development and testing teams.  Interaction between the teams is done through liaisons and lengthy requirements documents.

Modern applications are built by teams that contain a cross-section of skills and responsibilities.  Team members will include product owners, user experience, development, testing and release (configuration) management.  Ideally, the team will share the same space in an office, but often that is not possible. If it is not possible to share the same physical space then the modern application team must use tools to collaborate and coordinate their work throughout the software development lifecycle.

Participation in social networks has grown rapidly over the past decade.  Consumers regularly interact with friends and colleagues on these networks.  They follow people and are followed by others.  They tweet, retweet, share, link, like and comment on content that gets shared with people of all walks of life.

Consumers crave social interaction and want to provide feedback into how their applications are built to better support their needs.  All technical teams (development, testing and operations) want to be involved early in the development cycle to ensure that applications are built well.  Providing feedback throughout the build process provides a sense of ownership among end-users and improves later adoption.

There is growing evidence that informed groups are better decision makers than a few individuals.  In “The Wisdom of Crowds,” James Surowiecki argues that large groups of people are smarter than an elite few, no matter how brilliant those few are.  This approach leverages the collective intelligence and experiences of many employees to build better applications.

Successful IT Organizations create cross-functional teams that allow team members to express their opinion and allow the team to set the right application development priorities to support the organizational goals.

Join us next week for the conclusion to this series.

Aug 6 14

The Business Drivers of the Modern Application – Part 9: Architecture Pillar: Availability Aspect

by Mikhail Shir

In Part 9 of this series, we are going to discuss on the Availability Aspect of the Architecture Pillar.

As a reminder, the Architecture Pillar focuses on ensuring that the application is built using modern development techniques to create maintainable, scalable and resilient applications.

Availability Aspect

Traditional applications have extended system downtime to run maintenance and perform batch processing.

Modern applications have limited to no system downtime.  They are engineered to allow portions of the application to be taken offline without impacting the availability of the whole application.  They are engineered to support multiple versions of the application running concurrently. They avoid batch cycles and instead incrementally update the application data throughout the day.

Consumers expect applications to be available at all times.  Prior to the web, there were two categories of consumer systems that had high levels of availability: telephony (dial-tone) and credit card payment (card swipe) systems.  Consumer-driven websites embraced the need to be always-on because every second of downtime equated to lost revenue and diminished customer satisfaction.

It has been difficult for IT departments to offer high availability.  Many internal IT applications are saddled with long downtimes due to extended system maintenance windows and batch cycle times.  They are remnants of the time when employees only worked during business hours within company buildings.  IT departments could carve out large maintenance windows for their internal application maintenance.

Modern applications recognize that the need for accessibility of information on an almost 24×7 basis is driving the need for significantly greater application availability.  Modern applications are shortening if not eliminating maintenance windows to meet this need.  They are transforming daily batch programs into updates that can be run throughout the day and re-engineering their applications so that they can be deployed incrementally.  They are increasing availability of their application in a cost-effective manner by focusing on resiliency of many, low-cost components instead of investing in the reliability of a single, expensive component.

Successful IT Organizations focus on application availability instead of uptime through a combination of application development, infrastructure and release management disciplines.  They are upgrading or replacing systems that cannot support minimal system downtime.  They practice automatically deploying the application to multiple environments prior to going live. To meet this need economically, modern applications must be designed to be resilient.

Join us next week as we wrap up the series when we discuss Engagement.

Aug 5 14

Join us for a Field Enablement Roadshow – 9/3 – 9/30

by Sadie Van Buren

Join Microsoft, BlueMetal, Apprenda and Xamarin for a half-day in-person event to see how you can enable your field agents with a native mobile application optimized for their mobile devices, with content and data storage in the Cloud.  Learn how you can radically improve your field staff’s processes and response time while efficiently managing your infrastructure and sharing your application code across platforms.

You will learn about:

  • new opportunities in mobility and the cloud
  • latest capabilities you could tap into
  • pitfalls to avoid
  • how to expand your reach across devices and platforms
  • real-life case studies

Our partnership brings you the best of BlueMetal’s design, architecture, and engineering expertise; Apprenda’s solutions for the private cloud; and Xamarin’s solutions for native mobile applications; all on the Microsoft stack you know and trust.

Wednesday 9/3/14 – NYC – NYC MTC, 11 Times Square, New York, NY 10036 - Register for New York

Wednesday 9/17/14 – Chicago – Chicago MTC, 200 E. Randolph St., Suite 200, Chicago , IL 60601 - Register for Chicago

Tuesday 9/30/14 – Boston /Cambridge – Cambridge MTC, One Cambridge Center, Cambridge, MA 02142 – Register for Cambridge



Jul 23 14

Oren Novotny named Microsoft MVP for Windows Platform Development

by Sadie Van Buren

Oren Novotny has received the Microsoft Most Valuable Professional (MVP) designation in Windows Platform Development. The Microsoft MVP award is given to exceptional technical community leaders who actively engage and share their high-quality, real-world expertise with others in their local online and offline communities.

In addition to receiving MVP designation, Oren is a Microsoft Certified Solution Developer (MCSD) for Windows Store Apps, and a Xamarin Insider. He is actively involved in the developer community.  He created a version of MVVM Light, a framework for WPF, to make it cross-platform with a portable class library, and maintained that version in sync with the original author’s changes.  He is the owner-maintainer of the Ninject PCL Fork, which provides better dependency architecture for applications.  He extended Fluent Assertions to the Xamarin platform.  Most recently, he extended the support for running xUnit tests on Xamarin, iOS, and Android as well as Windows Store applications and Windows Phone 8.1.

Read the full press release here.

Jul 23 14

The Business Drivers of the Modern Application – Part 8: Architecture Pillar: Scalability Aspect

by Mikhail Shir

In Part 8 of this series, we are going to discuss on the Scalability Aspect of the Architecture Pillar.

As a reminder, the Architecture Pillar focuses on ensuring that the application is built using modern development techniques to create maintainable, scalable and resilient applications.

Scalability Aspect

Traditional applications can scale, but usually require long lead times and high cost to provision additional capacity to support an enterprise-scale user base.

Modern applications can scale elastically, quickly and cost-effectively to support an internal-scale user base.

Consumers expect that their applications will be able to scale elastically to support a very large user base.  Consumers have seen startups like Instagram with significantly fewer resources than their enterprise be able to grow to support millions of users.  Their expectation is that enterprise applications will have the same ability to scale to meet an enterprise user base.

Modern applications are built with elasticity in mind to ensure that they can be rolled out to a large enterprise user base and maintain performance.  They are built to be elastic.  That is, they are built to be scaled up and down quickly to meet user demands at appropriate costs.

Successful IT Organizations think about scale early on in the development cycle.  Modern applications are designed to be elastic and thus favor a virtualized, scale-out model where more servers are added instead of a scale-up model where larger hardware is required.  Development teams collaborate with operations teams to ensure that additional capacity can be added quickly through the use of pre-configured virtual servers.  Development teams work with data teams to ensure that the data tier can scale effectively and efficiently to meet user base demands.

Join us next week for the next of the business drivers – Availability.

Jul 16 14

The Business Drivers of the Modern Application – Part 7: Architecture Pillar: Responsiveness Aspect

by Mikhail Shir

In Part 7 of this series, we are going to discuss on the Responsiveness Aspect of the Architecture Pillar.

As a reminder, the Architecture Pillar focuses on ensuring that the application is built using modern development techniques to create maintainable, scalable and resilient applications.

Responsiveness Aspect

Traditional applications strive for good enough performance.

Modern applications require great performance and are built with scalability and speed in mind.  They are performance and load-tested throughout the development cycle to validate the application’s responsiveness.

Every millisecond counts for consumer applications.  A 2009 Akamai Study found that 49% of people expect web pages to load in 2 seconds. A New York Times article in 2012 found that impatient web users were fleeing slow loading websites.

Consumers’ application performance expectations are based on consumer-driven websites like Google, Bing and Amazon.  Consumers are putting pressure on their IT department to continually improve the performance of their internal applications to meet their expectation which are based on consumer web sites that they use daily.

Modern applications are built with responsiveness in mind to ensure the highest quality user experience.  They have adopted many of the consumer website techniques and tools like content caching, progressive rendering and Content Delivery Networks to meet those heightened expectations.

Successful IT Organizations plan for responsiveness early on in the development cycle.  They design applications to be responsive for their expected concurrent user base.  They test application performance continuously throughout the development cycle.  They establish preproduction environments that closely mirror production environments and take steps to ensure that acceptable performance can be maintained at expected levels of scale in production.

Join us next week for the next of the business drivers – Scalability.