Session description: Are you a jack of all trades? Have you been writing application code AND designing databases? Are you a DBA who can’t get that expensive database design training approved? Are you spending lots of time altering your tables knowing there has just got to be a better way? This session will take a dive into common pitfalls in database designs, prove out consistency issues and help you keep your applications fast and flexible. A properly designed database should perform at the highest levels and not require a gargantuan effort to adapt to routine application growth.
Click here to register via email. You must respond by 4:00 PM, the Tuesday prior to the meeting in order to attend.
We’re excited to host the Boston Amazon Web Services Meetup on Monday, March 10, 2014 at our Watertown offices from 7-9 pm. BlueMetal is a proud AWS Consulting Partner. Parking is free and pizza and beverages will be provided.
Three presenters will be speaking including our very own Joe Grenier.
- Joe Grenier - “AWS IAM Web Federation for Android app”.
- Brian Tarbox - “Using Spot Instances in Use Cases One Might Not Have Thought About.“
- Patrick Eaton from Stackdriver – “Mitigating Faults in the Cloud” (based on this article: highscalability.com – blog – 2014-3-3 The Four Hamiltons Framework For Mitigating Faults in the Cloud)
Bob German will present two sessions at the Microsoft SharePoint Conference March 3-6 in Las Vegas: “Developing Future-Focused, on-premises solutions,” and “Developing Cloud-Hosted Apps with MVC5.” Both sessions present aspects of the Modern Application as it relates to SharePoint. Full session details follow:
Visual Studio 2013 introduces the Model-View Controller (MVC) pattern as an option for developing cloud-hosted apps. In this session, we’ll present the process for developing cloud-hosted apps using MVC5. The session will first present the MVC pattern and explain its benefits. Next, we’ll build a complete app using MVC5 and Entity Framework 6. Throughout the process, we’ll focus on security, app identity, and interacting SharePoint 2013 workloads. Attendees will exit the session ready to get started creating cloud-based apps with MVC5.
Date/Time: Wednesday, March 5, 2014, 9:00 AM-10:15 AM
Room: Palazzo Ballroom A-H
Level: 400; Audience: Developer; Track: SharePoint Development
This session will focus on how to develop on-premises solutions based on architecture patterns that will support migration to Office 365 in the future. These solutions are based on a shift to client-side development to allow repackaging rather than rewriting to enable the new App model. The result is code that is safer and easier to deploy, whether on-premises or in the cloud.
Date/Time: Tuesday, March 4, 2014, 3:15 PM-4:30 PM
Room: Palazzo Ballroom A-H
Level: 300 Audience: Developer; Track: SharePoint Development
[Cross-posted from blog.davemdavis.net]
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 determine 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 him or her. Let’s think about that for a minute. From a few seconds of voice analysis, this system has searched its vast amount of data, analyzed the speech, and accurately determined a caller’s 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 an adoption agency deny an applicant because they don’t have 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, and the richer the experience can be.
Ubiquitous in the Home
The previous example may be a little too far fetched 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 fads 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, connecting 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 deeper look. The system knows 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 an accurate context, so that they can deliver an optimal experience.
This post covered two examples 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.
Ted Krueger will present “Building a SQL Server Test Lab” at the Chicago SQL Server User Group on Thursday, February 13th, 2014 at 5:30 PM CT.
Abstract: Have you ever wondered how the community bloggers, authors and speakers set up, test, and beat up SQL Server so quickly, without trashing their laptops or needing servers? This session will show you just how easy it is to do just that – set up a virtual lab locally with the full feature-set of SQL Server and Windows. The session will use VMWare Workstation to show the steps in creating virtual machines running Windows Server 2012, Active Directory, Networking, DNS Services, File Services, Clustering and finally, pulling it all together with a full enriched Availability Group Setup. Through the session, specific areas will be pinpointed that are different in virtual lab configurations for Hyper-V and even Windows Azure Virtual Machines. When completed, the session will deliver the audience a knowledge base that will ensure a full testing area is easily obtained and adapted for building a higher education of SQL Server and Windows Server technologies.
Location: kCura, 231 S LaSalle St, Chicago, IL 60604, 7th Floor (LaSalle Street entrance)
To respond that you will attend, click here.
[Cross-posted from blog.davemdavis.net]
In my last post, Ubiquitous Computing–Breaking Down the Silos, I talk about how ubiquitous computing is starting to make its way into the world around us. You may know ubiquitous computing as pervasive computing, ambient intelligence, Internet of Things, haptic computing, or everyware. No matter what you call it, it is spreading like wildfire, and as developers we need to be aware of what that means for the code we write. This wave of computing not only concerns application developers, it concerns backend developers as well. In fact the backend developer has a bigger role than the front end folks. They provide the backend that supports the whole notion of ubiquitous computing.
Why is ubiquitous computing taking off? The technologies required to support it are developing rapidly. Think about, in the past few years, how rapidly the following technologies have evolved: the Internet, advanced middleware, operating system, mobile code, sensors, microprocessors, new I/O and user interfaces, networks, mobile protocols, location and positioning. Combining these technologies is what makes ubiquitous computing possible.
The Royal “My”
I ended the last post with some general advice on how you can get involved in ubiquitous computing. I titled this post “My Contribution;” in this case the “My” is the royal “My”. I will not highlight any specific contribution that I have made but will go into a little more detail on how we as developers can code with ubiquitous computing in mind. It did not make sense for me to title the article “We Contribution” so I went with “My”.
Where to begin? The first thing to consider is, should my application/device/widget contribute to the ubiquitous utopia. Not all application need to be anywhere and everywhere. On the flip side you should evaluate the ubiquitous potential of your projects. One of the guiding principles should be: will my creation enhance the greater utopia? Don’t force your applications to fit, just to check the box. The world does not need to be able to access your fart app anywhere and everywhere (though I may be wrong).
Next you need to determine the infrastructure that will support you. Most ubiquitous computing scenarios require a backend infrastructure to provide the appearance of the experience being everywhere and anywhere. This is where you have to be careful to ensure that you don’t silo your users into one platform or another. This is hard to accomplish because it is easy to adopt a platform and code to that platform. When choosing a backend infrastructure, ensure that it can be accessed by as many different device/OSs as possible. This will maximize the ecosystem you will be able to target.
Don’t just concentrate on cloud infrastructure. Look at other methods, perhaps a little closer to your devices, to provide your infrastructure. Local Wi-Fi networks or Bluetooth protocols may be all you need to satisfy your situation. For example, take a look at cameras that can transmit pictures to a local computer as they are being taken. The computer can then display them on a large screen, archive them to a cloud storage solution or send them to the local CVS for printing.
Embrace sensors. More and more devices are being built with embedded sensors that can provide data to your application that can enhance the user experience. There are gyroscopes, compasses and such. There are external sensors that can provide data to your device such as weather data or location data.
Here is an example from the home of the future. Say you have a device placed in your living room that reacts to a Bluetooth signal from your phone. You walk into the room and the device sends a signal to your Phillips Hue Lights to turn on because its ambient light sensor detected that it is dark out. The device kicks on your gas fireplace because it has determined the room’s temperature is not ideal by gathering data from your Nest Thermostat. Because it is a weekday morning it tunes your TV to the local news. Some may think that this too weird but it provides an example of how ubiquitous computing can work in the not so distant future.
Thinking Outside Your Application
One of the challenges you will face as you embark your journey to ubiquitous utopia is thinking outside your application. The examples I provide should show you that single applications may play a smaller role in the greater ubiquitous ecosystem. Don’t just focus on the application. On the flipside don’t focus on devices either. Each has to work in symbiosis for this to be successful. For some developers this may prove the hardest part.
You may not start out by building a huge computing experience. You may start by building single applications that persist in content and settings across devices. This is fine too but always keep the bigger picture in mind: “Can my application play a larger roll in the greater ecosystem?”
Take an application like PowerPoint. It is a pretty powerful application for presenting information. Microsoft started out by creating a standalone application; over time they have added support of auto saving to SkyDrive OneDrive, where the user can then access their presentations from other computers (without having to sneakernet it to the other device), from a web client, from their Windows Phone and soon from their iOS and Android devices. You can even control presentations from your phone through Office Remote.
This example shows how a “simple” standalone application that has evolved to a point where it can participate in the greater utopia. It also shows you don’t have to tackle the whole thing at once. The key take away is: don’t code yourself into a corner. Provide a means to evolve your application to adapt as the users’ needs and technologies advance. You should follow this even if you are not trying to jump into ubiquitous computing.
Moving Beyond Computing in Isolation
In this post I have given some general guidelines for building systems that can help advance the ubiquitous utopia we seem to be heading for. I have not addressed security, privacy and technical challenges that still stand in our way. I will hopefully address those in future posts. For now keep an eye out for situations that may be addressed by building a system that can adapt to the user’s needs while appearing to be everywhere and anywhere at the same time.
[Cross-posted from blog.davemdavis.net]
During Build 2013, I attended a session on Ubiquitous Computing given by Bill Buxton. This was one of the better sessions given at Build, which is saying something since there was not a single line of code shown. I have gone back and watched that session a few times. Recently I have been thinking about this session and how there are silos that are preventing a truly ubiquitous computing experience.
What is Ubiquitous Computing
Ubiquitous Computing is an advanced computing concept where computing is made to appear everywhere and anywhere. – Wikipedia
Mr. Buxton gives the example of the cell phone. When you are sitting a car, what is the phone? The car is (if you car is so equipped). If you are having a conversation while you are driving, the conversation can be heard through the car speakers and the voice is captured through a microphone in the car. The phone is still handling the call but the driver is not directly interacting with it. Then the driver turns off the car and can continue the conversation, without interruption, on the phone. Here the computing device adapts to the situation and is made to appear as if it is everywhere.
Mr. Buxton also points out that the computing device does not have to be invisible for it to be ubiquitous. I believe his point is that the device should adapt to the situation without causing major disruption. Does it really make sense to have a touch enabled interface in a car?
You see operating system vendors trying to do that today within their ecosystems. For example Microsoft is in the process of uniting all their operating systems into a single code base. This has development implications but let’s look at it from an users point of view. They are unifying the user experience across all devices from mobile, to desktops, even to their Xbox platform. They also provide an infrastructure to deliver the user’s content to any device. If you want to listen to you music on phone and then listen to the same song on their Xbox, they can. Pretty soon it won’t matter what Windows device a user logs into, they will have access to their content anywhere. Again the device hasn’t disappeared, it has adapted to the situation.
Apple has a similar ecosystem with their iCloud and Google with their Android platform. Here is where the silos get erected. Each vendor keeps their ecosystems locked and most third party vendors don’t help. For example if I have my music in iTunes it hard to get it out to another device. They want to lock you into their ecosystems.
Third party application developers don’t help either. They build their apps for each of the different platforms and deploy them to the various app stores. A user with an iPhone and a Nexus 7 would have to buy the same app twice. It also makes switching between phones a costly venture.
So users are married to their platforms until death do them part. How much innovation do you think there is going to be in the next version of the iPhone. Sure they will make lighter, faster, and prettier but are those truly innovations. I think that they are expectation, but is it enough to keep you locked in their ecosystem. Now compare that to the Android ecosystems, fragmented, yes but they are at least innovating. A variety of Android form factors are available to better adapt to a users needs.
The point is not to bash one ecosystem vs. another. It is to point out that these silos exist and that they may be stifling innovation. You can’t blame the different vendors. They are in it to make money and Apple doesn’t make money from a user on a Windows device. But Microsoft does make money off of Android users, that’s a different story.
Ubiquitous Computing Utopia
Is it possible for an ubiquitous computing utopia to exist? What does it mean to have a utopia? Do we have to put a computer in everything and then interconnect these devices? What are the security concerns? Privacy concerns? For the foreseeable future we may have to settle for pockets of utopia, especially while the silos exist. The silos need to be removed before we can truly see utopia.
There are vendors out there that are trying to do just that. Sonos is a good example of of one of these vendors. They have a line of wireless hifi speakers that connect to a used home network and can seamlessly stream music from various sources. To the users the computing device is “everywhere” in their homes. Other devices and applications are starting to appear in market, further moves us to a ubiquitous computing utopia.
The Nest Thermostat is another example where silos are minimized. These are programmable thermostats that learn a user’s preferences. There is some initial configuration required but once they are set up they blend into the environment. They have sensors to determine when you are home so that they can set the temperature to an appropriate level, saving the user money. These devices can talk to each other and can be controlled from the web, thus adapting to the user’s needs and giving the appearance of being “everywhere”.
Where Do We Go From Here
These examples are making just a small dent in the wider ecosystem. I don’t think that there will ever be a true ubiquitous computing utopia. Users can create one by picking a silo ecosystem and going from there. They can then choose devices and applications that further advance them to utopia.
Developers can help lead users farther down the path to utopia by ensuring that applications they make or devices they build don’t silo users. You can still monetize your application by monetizing the content these applications deliver and making that content available on any platform. Microsoft recently adopted this model for their Xbox Music platform. Originally Xbox Music content was only available on their devices. Now you can access this content on competing platforms.
In the end, integration and standardization, are needed to truly make computing appear everywhere and anywhere. Device makers need to provide the platform and Application Developers need to make the software that adapts to the device/situation. And all this needs to be seamless and require as little user intervention as possible.
Microsoft and the Modern Application
I just read the Microsoft whitepaper on modern apps (you can find the whitepaper here). I was particularly interested in doing so because BlueMetal has been investing a lot of time over the last several months more formally defining how we see the modern application. Since the company’s inception, we have called ourselves “the modern application company” and we have organized ourselves around this concept.
The authors of the Microsoft whitepaper identified 4 key drivers that are pushing the evolution of applications:
- People – there are an enormous number of people connected to the Internet at this point in history. The estimate is around 2.5 billion!
- Devices – Cisco estimates that there are 10 billion worldwide connected to the Internet. This will no doubt grow significantly over the next decade as more areas of the world catch up with the United States. For example, my family has least 30 devices that are connected to the Internet on any given day.
- Volume – this refers to the amount of data being generated today and the expected growth of that data over the next 10 years.
- Variety – not only is there more data, it is becoming less structured as new types are information are being tracked. A good example of this new type of data is location data that is being provided by the billions of GPS enabled phones in the World today.
For the most part, I agree with these drivers. My personal view is that the evolution of the modern app was greatly accelerated by the introduction of usable smartphones in the mid-2000’s. The Apple iPhone being the best example of this type of device. These devices allowed customers to do things that were previously only possible on their desktop or laptop computers such as browsing the World Wide Web from their phone. I still remember how amazed I was the first time a friend of mine showed me how easily he could browse the web using his iPhone.
The authors went on to identify six characteristics that they feel a modern app should have:
- Multiple device support such as laptop, tablet and phone.
- Support for natural user interactions like touch and voice.
- App interoperability so data can be exchanged easily between apps.
- Rapid evolution because releasing an update every 2 or 3 years just won’t cut it. Users expect their apps to evolve quite frequently.
- Access to large data sets for effective decision making.
- Cloud enabled for reliability and scale.
I think this is a good list but it does bring to mind a question that I have pondering since attending the Amazon re:Invent conference last November. Specifically, is the modern app really just a mobile app? If I look at the list above, it seems that most well designed mobile apps would meet most, if not all, of these criteria. I probably have at least a dozen installed on my phone right now. How do the more traditional enterprise apps fit into this picture? For example, is it possible for anything built on an on premises SharePoint farm to be considered a “modern app”? If the answer is yes, then how? What are the characteristics that connect these two very different types of applications?
Architects at BlueMetal are working right now on answering these questions. We feel very strongly that modern applications come in all shapes and sizes and there are certain characteristics that apply universally. Over the next several months, we will be writing and speaking extensively about our concept of the modern application and how it can help our customers be more successful. Stay tuned!
BlueMetal will join our partners RAMP and Microsoft in hosting a two-city roadshow to help enterprises get the most out of their video content. The roadshow will be held at the Microsoft Technology Center in each city. The agenda will feature speakers from BlueMetal, RAMP, and Microsoft. A Networking Cocktail Reception will follow the sessions, starting at 5 pm. We hope you can join us.
- Keynote: Why Video Matters
- Challenges in Your Enterprise
- Case Study
- Best Practices for Video in the Enterprise
Space is limited so register today to reserve your place!
Wednesday, 12/11/13 – Cambridge MA – Register Here
Tuesday, 1/28/13 – Chicago - Register Here
Join us Tuesday 5 November at 12 pm EST for a TechLunch webinar! Bob German will present “Relearning SharePoint Development – The New Way to Build Solutions and Apps”.
Bob will review the various approaches to SharePoint development, and introduce the App model. He will then focus on patterns that allow SharePoint customizations to be easily repackaged using the App model, even for clients who are on SharePoint 2010 or who haven’t yet adopted the App model in their organization.
Register here: https://www.eventbrite.com/event/9280449073