What Does It Mean To Be Universal

So what does it mean to be universal when it comes to Windows 10?  A new way of building applications is coming in Windows 10. The past few years Microsoft has been on this path of converging all of their operating systems to run on a common core.  Windows 10 is the culmination of this journey. One of the benefits of having a common core is the ability to create an API that will allow apps to run across all the devices that use this core.  So Microsoft introduced the Universal Application Platform (UAP).  Gallo blog 1 v2


The UAP will allow developers to build applications that will run across the One Windows Platform. There are many challenges to achieve this goal of write once and run on all these devices. There are all kinds of devices that these apps can run on from phones with 4” screens, to running on Xbox with 52” screens, to devices with no screens at all. These different device have different capabilities. So how do you address these needs.

How Did We Get Here

Back in the day Microsoft’s “cross” platform solution was to create a portable class library. These libraries were restricted to the least common denominator of frameworks you want to address. This created a dll that could be referenced by the reference frameworks. This was great except that you were restricted on which API’s you had access to plus you ended up with multiple applications.

With Windows 8.1, Microsoft introduced a universal application template that helped developers build phone and modern Windows 8.1 apps. A “minor” convergence of the API happened, bringing the phone and the tablet closer together. The converged API allow for more code reuse and minimal device specific code. It did this by creating a shared project that injected the common files into each project (Windows and Phone). So you could share a lot of code but in the end you still have two applications. And the code you write for these universal apps was specific for the phone and modern applications (formally known as Metro).

Moving Forward

In Windows 10, Microsoft is taking the concept of universal apps from Windows 8.1 and expanding on it to cover a wider array of devices. The common core operating system was the first step. At the base of the Universal Application Platform is this thing call the Universal Device Family. This is the set of APIs that are guaranteed to be available to all applications written with UAP.  Once an UAP app is compiled there is one app package that can run on all these different device families.

Device families

From the diagram above you can see that there are many device families that your application can target (one, some, or all). Does that mean there will be Xboxs API installed on my desktop? There has to be if I expect my code to compile, right? Also how do I take advantage of device specific functionality, like the hardware back button on my phone? Hey some of those IoT devices are pretty small to be having all these APIs installed, remember we are creating one package to rule them all.

Microsoft handles this through Extensions. When you need to target specific functionality tied to one of these device families, you add a reference to the extension for that device family. Those extensions are just metadata files with the available API’s for that device family. When the application compiles it does so against these metadata files.  The actual API’s will be installed on those specific device families.


Now that I have those references I can start writing code for the phone back button and expect that code to run just fine on the Xbox right? Well not quite. You don’t want to try to call an API that is not implemented on you specific device family where your app is running.  You will get all kinds of run time errors. How do you handle these API calls?

In the past when we had shared code, we would isolate device specific code in #IF statements. But wait you said there would be one app package and #IF suggest multiple since it is a compiler directive. In Windows 10, you do not want to query for device types. Device types will be added all the time and your #IF statements could get out of control. Instead, Microsoft, has provided a means to query for capabilities/API.  They have introduced the ApiInformation class. 

The ApiInformation class allows you to test for the presence of the API you want to call. Here is an example checking to see if there are phone hardware buttons present.


On thing to notice is the use of Magic Strings.  Those are bad. I hope that Microsoft comes up with a better way to do that. Maybe have a constants file that contains the most common types users are going to query for and the leave it up to the user to handle the exotic cases. Either way there is a good chance that you will fat finger a fully qualified name. It is an early release of the SDK so things can and most likely will change.

By querying for specific capabilities, line 39 will only run if there are hardware buttons present.

The …

The beauty of the UAP approach is that it is extensible.  Did you notice “…” in the diagram above.  They are leaving it open for new platforms in the future, say for instance HoloLens. Or even devices that don’t exist today.  If you install the preview SDK you will see that there are only 2 extensions present, one for the desktop device family and one for the phone device family. Expect more to come in future releases.

Final Thoughts

The direction that Microsoft is going is exciting. It will be interesting to see how they follow through on this One Windows Platform vision. It will also be interesting to see if someone like Xamarin can take advantage of the UAP and extend it to iOS and Android.  Hopefully we will get more insight at Build this year.

Posted in IoT, Modern Application, Software Architecture, Windows 10, WinRT | 1 Comment

Layout Awareness in Windows 10 UAP

There have been lots of changes with Windows of the past few years. A while back, Microsoft radically changed the way Windows worked with Windows 8. The goal was to start to converge the different operating systems into a single core. Windows 10 is the culmination of that convergence which started out as “Three Screens and a Cloud” and now includes many more screens. 


The road to convergence is a difference story. Here I want to talk about the user experience. While all this was going on there was a revolution in the experiences that users expected. No longer are battleship gray user interfaces acceptable.  Neither are shrunk down versions of these interfaces acceptable on mobile devices.  As a developer you need to design and build you applications for the form factors that you are targeting. Here is where we pick up that journey on the Microsoft stack.

The Past

In Windows 8 there were two environments, a desktop environment, and a tablet environment and with the tablet environment they introduced a new programing language WinRT.  Those tablet apps, sometimes referred to as “Metro” apps, could be running in one of four states; Filled, Full, Snap and Portrait. There was a neat little enum that helped support these states.  One of the mantras was good design. Your app should look good and respond well/do the right thing in any of those states.  To assist developers, the Visual Studio template for those projects included a LayoutAwarePage that assisted in handling the transition between states.  I wrote a blog about it What is This ‘LayoutAwarePage’ You Speak Of.

Along comes Windows 8.1, that enum goes away and so does your LayoutAwarePage. In 8.1, apps could be resized horizontally independent of those defined states. There was another wrench thrown into the mix, the phone.  With this release WinRT apps can be developed for the phone. The templates changed to include a new Universal App template.  There was guidance from Microsoft that you should target both table and phone but no tool build in the framework to help. At Build 2014 there was a pretty good session on how to target screens of any size: From 4 to 40 inches: Developing Windows Applications across Multiple Form Factors.  During this session Peter Torr, showed the science of view items on different size screens, he also showed a potential solution to the lack of built in tooling. Since I wrote about the LayoutAwarePage in 8 I figured I better write a post about where in went in 8.1: What Happened to My LayoutAwarePage?.

The Now

In Windows 10, Microsoft wants to target a larger array of device, including some that don’t even have screens. From the image bellow there are a plethora of platforms that your apps can run on.  The convergence allows you to write code that runs on all these devices but does that mean I have to write a separate UI for all these devices?

The answer is no. Taking a page from web design, the new guidance is to build adaptive interfaces.  Keeping in mind that the experience should be tailored for each specific form factor.  Recently a preview of the SDK for Windows 1o was released along with a Microsoft Virtual Academy training course. Module 9 caught my attention because it talks about building adaptive UI and it looks very similar to the solution that Peter Torr came up with for 8.1. In Windows 10 you can truly build one app (one app package) that will run on any Windows 10 device. There is some neat magic behind the sense that allows this to happen and if you are interested in that you should watch the other modules in the course. To support writing a single Xaml file that runs across devices, Microsoft has revamped Visual State Manager to assist with building adaptive UI.  I highly recommend that you take a look at that module if you are interested in the story.

I am sure that more details will come during Build 2015 (April 28-May 1) so keep an eye out for what coming down the pike. Keep in mind that everything is in preview right now so things may change between now and release but this looks promising. 

Posted in Mobile, Modern Application, Universal App Platform, Windows 10 | Leave a comment

Virtual Reality vs. Augmented Reality vs. Holograms

hololensOn January 21, 2015 Microsoft Announce that the science fiction of holograms has become science fact.  They announced a new product, based on Windows 10, called HoloLens.  The first self contained, wearable computer that can create holograms.  This announcement has generated a buzz. If you haven’t seen the video Microsoft put out, take a minute, follow the link above and watch it, I’ll wait….. You’re back.  Were you blown away? I was. My mind was immediately racing to what problems I could solve if this truly pans out. More on that in a bit.

Virtual Reality

“Virtual Reality (VR), sometimes referred to as immersive multimedia, is a computer-simulated environment that can simulate physical presence in places in the real world or imagined worlds. Virtual reality can recreate sensory experiences, which include virtual taste, sight, smell, sound, touch, etc.” Wikipedia

When Microsoft announced HoloLens some people mistakenly called it virtual reality. Although Microsoft showed immersive experiences, the fact that you can still see the world around you makes precludes it from being virtual reality.  A prime example of virtual reality is the Oculus Rift

Augmented Reality

“Augmented reality (AR) is a live direct or indirect view of a physical, real-world environment whose elements are augmented (or supplemented) by computer-generated sensory input such as sound, video, graphics or GPS data.” Wikipedia

HaloLense is really just augmented reality plus much more. I will go into what I mean in a bit. Augmented reality is not really new.  There are phone app, Yelp for instance, uses the phone’s camera to display the world around it while superimposing restaurant information based on the direction the phone is pointed.  Or how about the translator app for Windows phone that superimposes translated text over written text. You can go from one language to another.

Another recent example is Google Glass (though they have suspended the program).  Google Glass is a pair of glasses that puts a heads up display on the lens, providing information to the wearer. That information is in a static location, no matter which direction the users is facing.


“Holography is a technique which enables three-dimensional images (holograms) to be made. It involves the use of a laser, interference, diffraction, light intensity recording and suitable illumination of the recording. The image changes as the position and orientation of the viewing system changes in exactly the same way as if the object were still present, thus making the image appear three-dimensional.” Wikipedia

The HoloLens can created realistic three-dimensional images and place those images in the world around you.  So I would say that HoloLens is a combination of all three. It may not be truly creating holograms they seem to be real enough to the wearer.


To be clear, I have not had an opportunity to try HoloLense.  I was not one of the chosen few who got to attend the event.  The reaction from those who did get to try the canned demo’s is overwhelmingly positive.  Until I get to try it I can only rely on what they have said. I am excited at the possibilities that this opens up.  I do have some questions as well. 

First is Microsoft targeting consumer or enterprise or both.  The thing that will really determine that is price. When the Xbox one first came out it was $499 and adoption was slow. When they dropped the price $350 this past holiday season, they sold like hotcakes. Granted there is no direct competitor to HoloLens (as of yet), if they price it too high it may be just out of reach for the average consumer.

The next question I have is with the form factor itself.  If this is intended to be worn for long periods of time it needs to be comfortable.  Google Glass was a pair of glass so they were easy to wear for long periods of time.  HoloLens will have way more functionality than Google Glass.  All that functionality requires some pretty heavy computing power. Microsoft packed all that computing power into a self-contained device, or donut as my coworker likes to call it. Is v1 going to be too big or too bulky?  With all that computing power what is the battery life going to be?

Finally can Microsoft truly deliver on the experience they showed in the videos?  That will be the true test to the success of the device. Judging from the reaction of the reporters at the event, they are pretty close. Microsoft has gotten a lot of people excited with this announcement, a lot of people that have all but written them off. If they mess this up they may drive those people away for good.

The Possibilities

A couple of years ago Microsoft released a vision video that captured my imagination.  They showed off a lot of “imagined” technologies. They showed how technology will blend into the environment around you and become ingrained in everyday life.  Most of the stuff they showed was not real but with HoloLens and Surface Hub, some of those use cases are now possible.

I am excited at the possibilities this opens up. Microsoft has said that HoloLens apps are just Universal Apps with some added APIs. Hopefully they will release an SDK during their Build conference.  If you weren’t able to get in or can’t attend they usually make the sessions available online soon after. 

The video that Microsoft released shows all kinds of use cases for HoloLens. I have a few of my own and I am excited to see what others come up with.


In recent years these press events had very few surprises. Look for instance at the last Apple launch there were nothing announced that had not previously leaked. Microsoft did a great job keeping this secret.  There were rumors of an Xbox gaming helmet but this is so much more.  You can see pieces of this technologies in various Microsoft research projects. It is great to see them finally capitalizing on some of that research.  Only time will tell if HoloLens will be a success but you have to admit living in a time where holograms can be real is pretty cool.

Posted in Computer Science, Contextual Computing, UX, Windows 10 | Tagged , , | Leave a comment

Do What You Love!

I love what I do.  Technology makes me happy. Solving problems, making lives better are all worthy goals. Recently in the news there have been talk about diversity in technology.  I am against diversity for diversity sake. People should want to do technology because they love it not to meet a quota. On the flip side I hate seeing barriers to diversity.  When developers attack other developers because they are new, female, some ethnicity other than yours or some other reason, they stifle innovation. They create an environment that makes the atypical developer not want to participate, stifling diversity.

A while back I started following Iris Classon on twitter.  She was new to development and was pretty much self taught. She devoted time to really learn her craft. She sought out mentors and worked hard to mentor new developers. She is a good role model for anyone who wants to get into technology.  I had the chance to meet her a Microsoft Build Conference a while.  You could feel the enthusiasm she had and she wasn’t afraid to share it.  She had (I say had, more on that in a minute) a blog that asked the “stupid” questions that new developers have and she sought to answer those questions.  She was an active member of the community.

Because she is different, when I met her she had bright pink hair (how many developers have pink hair), she drew attention to herself. A lot good but some bad.  The twitter trolls out there started harassing her.  “Experienced” developers, who forgot that they had to start somewhere, gave her a hard for the work that she did.  Remember I said that she wasn’t afraid to share and ask for help.  The community is great place to learn, to innovate and when it turns on one of its own it is sad. Because of these public stress and the stresses of everyday life (I am guessing), she has decided to withdraw from the community. Deleting her Facebook page, removing her blog and pretty soon her twitter feed will be silenced.  Very sad. I enjoy her contributions and now……

I am not really close to her, I only met her once and did not interact with that much (although her arm wrestling match at Build was enjoyable). I do feel that I should say something. So Iris, here is my advice to you (or anyone for that matter). First do what you love. Don’t let anyone discourage you from doing that. Next ignore the negative but not the constructive criticism (that is how you grow).  Take a step back from the community for a while. Rejuvenate yourself. If you feel you need to contribute in the future do (I would look forward to it). Remember Twitter Troll don’t define you and what you do, that is up to you to do. But above all else do give up!!!!!

The sad truth is that there will always be people, in the world, who discriminate. If you let them rule who you are then they win. If you can overcome, you win! Ignore the negative and strive for the positive. You will be missed!

Posted in Computer Science, Leadership, Rants | Leave a comment

The Internet of Thing (IoT)

shutterstock_216137437Recently a new technology buzz word has come to light, the Internet of Thing or IoT.  It is all the rage. Everyone is getting on the bandwagon Microsoft, Google, Apple, you name it they are probably trying to figure out how to take get a piece of the $300 billion in 2020 by Gartner estimates. At the beginning of the year I wrote a series of posts on ubiquitous computing.  IoT definitely falls into ubiquitous computing.  Here are those earlier post:

I am going to continue on with my exploration of the Internet of Things.  I want to explore all facets from the over all architecture to individual “things” and everything in between.

Is it Really the Internet

When most people hear IoT they think of all the home automation products that they can talk to through their phones. Enterprises think of all the sensors they have distributed throughout their network that are providing them data. Potentially there will be billion upon billions of “Things”, most of which will never directly access the internet. Home owners don’t want random strangers control the temperature of their house and enterprises don’t want their sensor data exposed to the public.  Maybe it should be called the Intranet of Things instead!

This is where you will hear people say “Well I can set my thermostat while I am not on my home network.” True, you can, but you usually do that through an application. You don’t directly talk to the “Things” in your ecosystem. I will show you this in the future when I do a post dedicated to architecture.

Let’s get back to talking about the internet. First off have billions of “Things” on the internet would be impossible.  IPv4 couldn’t handle that.  Obviously IPv6 could but that poses different challenges that I will address in a minute. Could you imagine all that traffic floating around on the wire?  If you thought Netflix took up bandwidth what would happen if these billions of devices, some of which transmit data every millisecond, were flooding the wire with their data?

One of the principals of IoT is having actionable data. For years we have had “Things” that have provided data, so why all of a sudden is IoT hot? We now have the computing power to aggregate, analyze and visualize all the data that is produced making it actionable. So having devices flooding the network with data that is not actionable. IoT is about making “neighborhoods” of “Things” that talk to each other but are actionable in that neighborhood. I put neighborhoods in quotes because enterprise “neighborhoods” can span globally.

Security is another concern with billions of “Things” on the public internet. Like I said before you don’t want to have just anyone controlling the temperature of your house. Keep the devices in your “neighborhood” will help prevent unauthorized access. I will address security again when in my architecture discussion.  Security has another challenge, the “Things” themselves.

Think about the “Things” themselves. Most of these devices have minimal memory, processing power, and battery life.  They don’t have a security stack as well as an IP stack. Most sensors transmit bits of data.  It doesn’t make sense to surround a few bits of data from a sensors with the bytes of  overhead for an IPv6 packet and do that a couple a times a second.  That is why other protocols, that are not normally associate with the internet, are involved.  I will cover those in a future post.

Much More to Come

There is a lot of confusion around what IoT is.  Hopefully you can see from this brief discussion around the I in IoT, that there is much more to cover. 

Posted in Computer Science, Contextual Computing, IoT, Modern Application, Ubiquitous Computing | Leave a comment

“Your Fans are Waiting” Microsoft’s Build Conference–Day 1

build2014_devconferenceI am recently attended Microsoft’s Developer’s Conference, Build 2014.  When I have attended conferences, in the past, I have blogged about all the great announcements usually throughout the conference.  As I sit here, at the beginning of Day 3, I have not written about a single announcement.  I have decided to change up how I report on the conference. This time around I am going to give my two cents on different announcements made.  There are plenty of articles that list the many announcements made. In future posts, I will dig deeper into different topics.

Windows Phone 8.1 – Long Live Silverlight

So one of the biggest announcements was the next version of their phone operating system, Windows Phone 8.1.  This release caps the “Blue” series of products that started with Windows 8.1.  For the last couple of years, Microsoft has talked about operating system convergence. Their goal is to have one operating system core run across all devices and to have a common API to code across them.  With Windows Phone 8.1, they are one step closer to reaching that goal.

Windows Phone 8.1 is basically WindowsRT with a phone app and a Silverlight emulator or at least that is how I think about it.  And with this leap Microsoft has reached 90% convergence with Windows 8.1 and Phone 8.1.  You can now write phone app using the same WinRT API and Xaml as modern apps (more on that later). You can also continue to write phone apps using Silverlight so your past investments on the phone are not lost. In fact Microsoft has advanced the phone Silverlight to 8.1 and allows developers writing apps in Silverlight to access the same functionality as a Windows Xaml (that is what they call the new app paradigm) phone app.

A lot of great new features are coming in the next release and you can read about them on the Windows Phone site. Overall I am impressed with what Microsoft. has done with the phone.  Some of these features should have been there from the beginning and are catch up and some are innovative and can’t be found on other platforms. This new version will be available to all devices running Windows Phone 8 later this summer.  A developer preview will be available the beginning of April.


Cortana is a fictional artificially intelligent (AI) character in the Halo video game series. ~Wikipedia

With Window Phone 8.1, Microsoft has introduced the world to Cortana. If you play Halo this is a reintroduction. Cortana is Master Chief’s AI assistant. As with Master Chief, Cortana is a personal assistant for the masses. Cortana is part Apple Siri and part Google Now

Microsoft went and interviewed real personal assistant to learn what is needed to provide a real personal assistant experiences. The key point they heard over and over again is the Notebook.  This book contains all the personal information that allows the assistant to be productive. Cortana has a notebook where your personal information is stored for analysis. The key thing to remember is that the user is in control of what information to provide.  The more they provide the better Cortana can help. Remember it is all about context.

One of the difference between Siri and Now and with Cortana is that Microsoft has allow developers to integrate their applications with Cortana. For instance a user can say “Facebook Find Jane Doe”. Cortana will pass that “Find Jane Doe” to the Facebook application.  Then Facebook can handle what to do with what is passed. 

There were a few devices available at Build to play with. Microsoft is releasing Cortana as beta.  They are saying that her voice algorithms are still being trained.  The more they are used the better they will become.  I had fairly good success with the recognition and the functionality that I tried worked pretty well. If Cortana is half as good as they advertise she will surpass the capability of Siri and be on par with Google Now.  Only time will tell how Cortana will do.  Currently Cortana is only available on the Phone but it is not hard to guess that she will be coming to Windows devices and Xbox’s in the future.

Windows 8 Update 1


Microsoft is also updating Windows 8.1 with Update 1. This update brings some more enhancements for mouse and keyboard users.  The three main updates include, right click context menus on the start screen, title bars in modern application, and pinning modern applications to the task bar.  These small steps should help make the experience better for non-touch devices. 

The update will be available for free for all Windows 8.1 users and will be required for user to continue getting Windows update. The Update will be generally available with the April Patch Tuesday (April 8).  Microsoft provided the update to attendees. I have been using since day 1 of the conference.  It is okay, I don’t have an opinion one way or another.  I have been using Windows 8 since the first developer preview and have adapted to it nicely.  Some people seem to like this update. If it makes you more productive then great.

Microsoft did not call this Update 1 they just called it Update.  There was a rumor that they were going to talk about the next version of Windows. They did not explicitly say “Windows 9 will be…” but they did hint at a few pieces that are coming, potentially in an Update later this year or vNext.  The Start Menu is coming back…with tiles and modern apps will be windowed. More to come so stay tuned.

Universal Apps

imageOne of the key points of Day 1 is “convergence’’.  Carrying that theme forward, Microsoft announced Universal Apps.  As of Visual Studio Update 2, developer will be able to create Universal Apps.  What does that mean?  Since Windows Phone 8.1 and Windows 8.1 have 90% convergence of APIs, including Xaml, it makes sense that you will want to create applications that reuse as much code as possible. 

You can currently do that with Portable class libraries (PCL) or shared files. Each of these are still possible. Universal apps have behaviors of PCL but are implemented like shared files.  Think shared files with better tooling. Universal apps have a shared project that contains no reference, only files. The shared files live here.  Since there may be times when you will need to access an API that isn’t part of that convergence you can use conditional compilation.  That tells me that the shared files care complied for each project and not as a PCL dll.

So now you can maximize code reuse.  There is so much more you can do with Universal Apps.  I hope to write about these in the future. Currently Universal Apps support is available for Windows and Windows Phone, using C#/VB/C++ and HTML/JavaScript. They did demo a Xbox Universal App that isn’t currently available but it makes sense since Xbox runs on Windows 8.  There were sessions that covered developing Universal Apps for Xbox so it is coming. We will soon be able to realize the “Three Screens and a Cloud” theme from many years ago!

Touch Office

The week before build Microsoft announced Office for iPad. These are touch first variation of the worlds most popular productivity suite. Windows Tablet users have has office on their devices since the beginning but not the touch enabled ones.  These were the full blown versions.  At Build Microsoft showed off the Touch Enabled Office (to be released later this year).  We have known that they have been working on these apps for a while.  They did show off PowerPoint last year at Build 2013. What they did announce was that the Windows versions are being built as Universal Apps, so the functionality you get on Windows will also be available on the Phone.

Free Windows

So there is no surprise that Windows 8 has not taken off.  They were late to the game.  Apple and Google have the market share when it comes to mobile. By bringing Office to the iPad first shows that Microsoft has shifted for a Windows first company to a mobile first company.  That is yet another theme that continued throughout the conference. There were more demos using iPads and Android devices than in any other Microsoft conference combined.

iOS devices tend to be geared toward the high end users as such Android has been able to chip away at Apples market share with low end devices.  In order to be more competitive, Microsoft is making Windows 8.1 free for 9” devices and small to include phones. The seem to be geared towards make more money off of services than off of operating systems. This makes sense since people don’t upgrade OS’s often but they do renew useful services. In fact, in order to use all the features of Office for the iPad, the user has to have an Office 365 account. Services are the future.

Day 1 Keynote

The Day 1 Keynote ended with Stephen Elop marking three new Windows Phones that won’t be available until later this year and not in the US. And with Satya Nadella delivering pre-canned answers to pre-canned questions, delivering the same talking points that he has been handing out since he took over. If I sound sarcastic it is because I am.  The keynote was 3 hours long with Elop and Nadella taking about an hour.  Three hours in an uncomfortable chair in a crowed room will make people a little antsy.  Next time keep it around 2 hours and have the CEO play more of an active roll.

That aside I think that Day 1 delivered a lot of good stuff.  It shows that Microsoft is moving in the right direction, even to the point of being innovative. It seems the days of complete secrecy are coming to an end. They not only showed off what is here but what is coming in the near future.   I still have a lot of sessions that I want to take a look at to really understand what was announced but overall I am happier with this years Build than I was with the last one.

In the next post I will cover Day 2 keynote and give you My Two Cents.

Posted in Build 2014, Windows 8.1, WindowsRT, WP8 | Leave a comment

Can Technology Go Too Far?

Over the past two posts I started to explore the concept of ubiquitous computing. I started out by defining ubiquitous computing, and then followed that up with a post that talks about how developers can contribute to the ubiquitous utopia. No conversation about ubiquitous computing would be complete without talking about privacy.  Privacy is a major concern these days, especially with all the controversy surrounding NSA data collection programs.

Recently, at work, we discussed the article AI is so over: This is artificial empathy.  This article talks about a system that can determined a person’s personality based upon a few seconds of speech.  This system is used by call centers to determine the mood of the caller and then to direct the caller to a representative that can best handle you.  Let’s think about that for a minute.  From a few seconds of voice analysis, this system has searched it’s vast amount of data, analyzed the speech, and has accurately determined your personality. In order to continually learn the system has to collect and analyze a large amount of voice samples. 

Who owns this data? It is your voice they are collecting. Can you get the data back? “This call may be monitored for quality assurance” Currently this system is used for customer services.  It may even provide the benefit of a smooth customer service experience.  What happens when they start using this system in other areas? Can an organization refuse a job because you come off as being mean?  Can/should and adoption deny someone because they don’t the right personality as determined by a few seconds of speech?

Let’s say that you agree there is some benefit of relinquishing some of your privacy for the betterment of the system.  How much privacy are you willing to part with?  In order for ubiquitous computing to work, we must be willing to sacrifice some privacy.  These computing systems rely on context to perform their task while remaining in the background.   The more information you provide, the better the chance the system get the right context, the richer the experience can be.

Ubiquitous in the Home

Nest_RedThe previous example may be a little too far fetch for people to grasp. Who actually calls customer support, these days, anyway?  A lot of ubiquitous computing examples can be found in home automation.  One of the latest fades in home automation is the Nest Thermostat.  This thermostat learns.  It gathers usage data to determine patterns of how you heat or cool your home. If you set the thermostat to a specific temperature every morning when you wake up it learns that time. It also knows how long it will take to heat/cool your house to that temperature.  After a while (a week according to the web site) it will start to turn itself on so that your house will be at the desired temperature around the time you wake up. 

The Nest has sensors that can determine when you are home or not and then set the temperature of your house appropriately.  If you have multiple zones in your house and you use multiple Nest devices, they can communicate with each other.  They connect through your Wi-Fi network.  There are even mobile applications that allow you to control your thermostats remotely. If you are coming home early you can kick the heat on to warm up the place.  So what is the benefit to fully embracing the Nest system, reduced energy bills. You no longer have to remember to turn down the heat.  The Nest does that by learning your habits and automatically adjusting to an appropriate temperature. Over time you should see a reduction in your bill as the system is only on when needed. So is the slight invasion of privacy worth saving some money in your bill?

Should I Care

On the surface it seems harmless that Nest is collecting all this data but let’s take a little deeper look.  The system know when you are home or away and keeps a record of that.  Do you think that burglars would like that information?  Oh did I forget to mention that Google just purchased Nest for $3.2 billion dollars.  That sales price is 10x the sales figures for Nest.  Why would Google pay that much for Nest?  Could it be because it wants the data that is collected.  This is just another touch point that Google has on your life.  Add this data with other data they collect and you have a pretty good picture into your life.  A picture that advertisers would kill for.

So What Can I Do

As a developer, you should be aware of what personal information your system requires in order to gain a usable context. Understand that some users will be very apprehensive to give up their privacy to your system.  Provide the user with some assurance on how you plan to use their data. If you plan on changing your data collection policies, provide enough notice so that the user can make an informed decision.  Finally provide a mechanism for the user to take back their data should they decide to stop using your service/system/device.

As a consumer be conscious of the information you provide.  Keep in mind that the information you provide one company may be aggregated with information you provide to a different company. Weigh the consequences of relinquishing your privacy vs. the benefit provided by the system.   Remember these interconnected systems require your personal information, in order to provide and accurate context, so that they can deliver an optimal experience.

This post covered two example of where your privacy is affected by ubiquitous computing. There are many more examples, just look around. In a future post I will look into what it means for a system to have context and how context drives the notion of ubiquitous computing.

Posted in Computer Science, Contextual Computing, IoT, Software Architecture, Ubiquitous Computing, User Experience, UX | 1 Comment