November 2012 Entries
I was reading an article on Mashable recently by a long time iPhone user who is living solely on a Lumia 920 at the moment and giving her assessment. One thing that struck a nerve with me was her describing the Windows Phone ecosystem as immature. She wasn’t saying this because of the number of apps or the big names like most people do. She means the quality of the apps in the store.
This hit a nerve with me. I find it hard to believe that the majority of app on iOS are of any higher quality than any other platform. I believe in any ecosystem you are going to find some high end, high quality apps, but the majority by default will be from people who are trying to solve a problem but do not have the resources to have top graphics and full blown testing. There will also be a large number that are just there trying to trick you into giving up some cash.
Does any of the mean that we shouldn’t take notice of this complaint? Of course not! We should always strive to publish the best quality apps possible. Don’t do things like leaving default app icons and backgrounds. Put a little effort into your design. You should also spend as much time as possible ensuring against crashes and giving the user the best experience possible. Think through your apps organization and navigation. Go the extra step of putting it into beta and letting select people use it and give you feedback before going to full release.
Remember, if we want people to appreciate the Windows Phone platform we have to make sure we give them apps that they are going to enjoy using.
Just out of curiosity I decided to find out what the most frequently post were on my blog. I knew what number one would be just from checking daily stats from time to time. The main theme that I found in the data is that either pain or humor can really bring people to find your posts. My most viewed post is on turning off Toshiba Flashcards at over 54K views (I think Toshiba should take notice of this massive fail). The second highest is on Interesting Blog titles. This was nothing more than a post that I had put up on a whim of humorous blog titles I had run across. This post earned over 26K views. Going down from there the theme stays the same either people looking for something humorous or people with a problem that you have an answer for are the posts that are most likely to get attention. Remember that blogging can be a great service to your readers. Keep it interesting and they will come.
So the year is coming to an end. A hearty few came out two days before Thanksgiving to discuss adopting agile in the enterprise. While Norm Murrin claimed to be nervous about talking in front of a group your wouldn’t have known by his presentation. He really made a topic that has always been hard to relate very personal. This lead to some great discussion. I came out of looking for ways to investigate agile further. His presentation can be found here.
This was our last meeting for the year. We are looking forward to next year and are starting to line up some speakers and topics. At this point we have an Azure presentation coming in February and are ironing out talks for January and March. If your would like to join us and have topics you would like to see presented contact me through this blog. Either leave a comment here or use the contact page. I would love to hear from you.
Have a great holiday season and we will see you next year.
As I am doing more development in and out of the enterprise arena for Windows Phone I decide I would study for the 70-599 test. I generally take certification tests as a way to force me to dig deeper into a technology. Between the development and studying I decided it would be good to put a post together of key development features in Windows Phone 7 environment. Contrary to popular belief the launch of Windows Phone 8 will not obsolete Windows Phone 7 development. With the launch of 7.8 coming shortly and people who will remain on 7.X for the foreseeable future there are still consumers needing these apps so don’t throw out the baby with the bath water.
This is a class that every Windows Phone developer needs to become familiar with. When it comes to application state this is your go to repository. It also contains events that help with management of your application’s lifecycle. You can access it like the following code sample.
1: PhoneApplicationService.Current.State["ValidUser"] = userResult;
This class allows you to determine the connectivity of the device and be notified when something changes with that connectivity. If you are making web service calls you will want to check here before firing off.
I have found that this class doesn’t actually work very well for determining if you have internet access. You are better of using the following code where IsConnectedToInternet is an App level property.
private void Application_Launching(object sender, LaunchingEventArgs e)
// Validate user access
if (Microsoft.Phone.Net.NetworkInformation.NetworkInterface.NetworkInterfaceType != Microsoft.Phone.Net.NetworkInformation.NetworkInterfaceType.None)
IsConnectedToInternet = true;
IsConnectedToInternet = false;
NetworkChange.NetworkAddressChanged += new NetworkAddressChangedEventHandler(NetworkChange_NetworkAddressChanged);
void NetworkChange_NetworkAddressChanged(object sender, EventArgs e)
IsConnectedToInternet = (Microsoft.Phone.Net.NetworkInformation.NetworkInterface.NetworkInterfaceType != Microsoft.Phone.Net.NetworkInformation.NetworkInterfaceType.None);
Push notification allows your application to receive notifications in a way that reduces the application’s power needs. This MSDN article is a good place to get the basics of push notification, but you can see the essential concept in the diagram below. There are three types of push notification: toast, Tile and raw. The first two work regardless of the state of the application where as raw messages are discarded if your application is not running.
Live tiles are one of the main differentiators of the Windows Phone platform. They allow users to find information at a glance from their start screen without navigating into individual apps. Knowing how to implement them can be a great boost to the attractiveness of your application. The simplest step-by-step explanation for creating live tiles is here.
While your application really only has Isolated Storage as a data store there are some ways of giving you database functionality to develop against. There are a number of open source ORM style solutions. Probably the best and most native way I have found is to use LINQ to SQL. It does take a significant amount of setup, but the ease of use once it is configured is worth the cost. Rather than repeat the full concepts here I will point you to a post that I wrote previously.
Tasks (Bing, Email)
Leveraging built in features of the Windows Phone platform is an easy way to add functionality that would be expensive to develop on your own. The classes that you need to make yourself familiar with are BingMapsDirectionsTask and EmailComposeTask. This will allow your application to supply directions and give the user an email path to relay information to friends and associates.
Because of the ability for users to switch quickly to switch to other apps or the home screen is just one reason why knowing the Windows Phone event model is important. You need to be able to save data so that if a user gets a phone call they can come back to exactly where they were in your application. This means that you will need to handle such events as Launching, Activated, Deactivated and Closing at an application level. You will probably also want to get familiar with the OnNavigatedTo and OnNavigatedFrom events at the page level. These will give you an opportunity to save data as a user navigates through your app.
This is just a small portion of the concepts that you will use while building Windows Phone apps, but these are some of the most critical. With the launch of Windows Phone 8 this list will probably expand. Take the time to investigate these topics further and try them out in your apps.
This is the final part in a series of posts based on a talk I gave recently at the Chicago Information Technology Architects Group. Feel free to leave feedback.
Application Development Considerations
Now we get to the actual building of your solutions. What are the skills and resources that will be needed in order to develop a smartphone application in the enterprise?
One of the first things you need to consider when you are deciding which platform language do you either have the most in house skill base or can you easily acquire. If you already have developers who know Java or C# you may want to use either Android or Windows Phone. You should also take into consideration the market availability of developers. If your key developer leaves how easy is it to find a knowledgeable replacement?
A second consideration when it comes to programming languages is the qualities exposed by the languages of a particular platform. How well does that development language and its associated frameworks support things like security and access to the features of the smartphone hardware? This will play into your overall cost of ownership if you have to create this infrastructure on your own.
Manage Limited Resources
Everything is limited on a smartphone: battery, memory, processing power, network bandwidth. When developing your applications you will have to keep your footprint as small as possible in every way. This means not running unnecessary processes in the background that will drain the battery or pulling more data over the airwaves than you have to. You also want to keep your on device in as compact a format as possible.
Mobile Design Patterns
There are a number of design patterns that have either come to life because of smartphone development or have been adapted for this use. The main pattern in the Windows Phone environment is the MVVM (Model-View-View-Model). This is great for overall application structure and separation of concerns. The fun part is trying to keep that separation as pure as possible. Many of the other patterns may or may not have strict definitions, but some that you need to be concerned with are push notification, asynchronous communication and offline data storage.
Real estate is limited on smartphones and even tablets. You are also limited in the type of controls that can be represented in the UI. This means rethinking how you modularize your application. Typing is also much harder to do so you want to reduce this as much as possible. This leads to UI patterns. While not what we would traditionally think of as design patterns the guidance each platform has for UI design is critical to the success of your application. If user find the application difficult navigate they will not use it.
Because of the differences in development tools required, test devices and certification and deployment processes your teams will need to learn new way of working together. This will include the need to integrate service contracts of back-end systems with mobile applications. You will also want to make sure that you present consistency across different access points to corporate data. Your web site may have more functionality than your smartphone application, but it should have a consistent core set of functionality. This all requires greater communication between sub-teams of your developers.
Testing of smartphone apps has a lot more to do with what happens when you lose connectivity or if the user navigates away from your application. There are a lot more opportunities for the user or the device to perform disruptive acts. This should be your main testing concentration aside from the main business requirements. You will need to do things like setting the phone to airplane mode and seeing what the application does in order to weed out any gaps in your handling communication interruptions.
Need For Outside Experts
Since this is a development area that is new to most companies the need for experts is a lot greater. Whether these are consultants, vendor representatives or just development community forums you will need to establish expert contacts. Nothing is more dangerous for your project timelines than a lack of knowledge. Make sure you know who to call to avoid lengthy delays in your project because of knowledge gaps.
Security has to be a major concern for enterprise applications. You aren't dealing with just someone's game standings. You are dealing with a companies intellectual property and competitive advantage. As such you need to start by limiting access to the application itself. Once the user is in the app you need to ensure that the data is secure at all times. This includes both local storage and across the wire. This means if a platform doesn’t natively support encryption for these functions you will need to find alternatives to secure your data. You also need to keep secret (encryption) keys obfuscated or locked away outside of the application. People can disassemble the code otherwise and break your encryption.
As we discussed earlier one your biggest concerns is not having connectivity. Because of this a good portion of your code may be dedicated to handling loss of connection and reconnection situations. What do you do if you lose the network? Back up all your transactions and store of any supporting data so that operations can continue off line. In order to support this you will need to determine the available flat file or local data base capabilities of the platform. Any failed transactions will need to support a retry mechanism whether it is automatic or user initiated. This also includes your services since they will need to be able to roll back partially completed transactions. What ever you do, don’t ignore this area when you are designing your system.
Each platform has different deployment capabilities. Some are more suited to enterprise situations than others. Apple's approach is probably the most mature at the moment. Prior to the current generation of smartphone platforms it would have been Windows CE. Windows Phone 7 has the limitation that the app has to be distributed through the same network as public facing applications. You mark them as private which means that they are only accessible by a direct URL. Unfortunately this does not make them undiscoverable (although it is very difficult). This will change with Windows Phone 8 where companies will be able to certify their own applications and distribute them. Given this Windows Phone applications need to be more diligent with application access in order to keep them restricted to the company's employees.
My understanding of the Android deployment schemes is that it is much less standardized then either iOS or Windows Phone. Someone would have to confirm or deny that for me though since I have not yet put the time into researching this platform further.
Given my limited exposure to the iOS and Android platforms I have not been able to confirm this, but there are varying degrees of user involvement to install and keep applications updated. At one extreme the user just goes to a website to do the install and in other case they may need to download files and perform steps to install them.
Today we use Bluetooth for keyboards, mice and headsets. In the future it could be used to interrogate car computers or manufacturing systems or possibly retail machines by service techs. This would open smartphones to greater use as a almost a Star Trek Tricorder. You would get you all your data as well as being able to use it as a universal remote for just about any device or machine.
Better corporation controlled deployment
At least in the Windows Phone world the upcoming release of Windows Phone 8 will include a private certification and deployment option that is currently not available with Windows Phone 7 (Mango). We currently have to run the apps through the Marketplace certification process and use a targeted distribution method.
Platform independent approaches
From my perspective enterprise smartphone applications can offer a great competitive advantage to many companies. They are not cheap to build and should be approached cautiously. Understand the factors I have outlined in this series, do you due diligence and see if there is a portion of your business that can benefit from the mobile experience.
This is part 3 in a series of posts based on a talk I gave recently at the Chicago Information Technology Architects Group. Feel free to leave feedback.
Keys Concerns Of Smartphones In The Enterprise
These are the factors that you need to be aware of and address in order to build successful enterprise smartphone applications. Most of them have nothing to do with the application itself as you will see here.
Managing devices is a factor that is going to effect how much your company will have to spend outside of developing the applications. How will you track the devices within the corporation? How often will you have to replace phones and as a consequence have to upgrade your applications to support new phones? The devices can represent a significant investment of capital. If these questions are not addressed you will find a number of hidden costs throughout the life of your solution.
Purchase or BYOD
We have seen the trend of Bring Your Own Device (BYOD) lately within the enterprise. How many meetings have you been in where someone is on their personal iPad, iPhone, Android phone or Windows Phone? The issue is if you can afford to support everyone's choice in device? That is a lot to take on even if you only support the current release of each platform. Do you go with the most popular device or do you pick a platform that best matches your current ecosystem and distribute company owned devices? There is no easy answer here, but you should be able give some dollar value to both hardware and development costs related to platform coverage.
Smartphones are devices that are easier to lose or have stolen than laptops and desktops. Not only do you have your normal asset management concerns but also assignment of financial responsibility. You also will need to insure them against damage and theft and add legal documents that spell out the responsibilities of the employees that use these devices.
Personal vs. Corporate Data
What happens when you terminate an employee? How do you recover the device? What happens when they have put personal data on the device? These are all situation that can cause possible loss of corporate intellectual property or legal repercussions of reclaiming a device with personal data on it. Policies need to be put in place that protect the company from being exposed to type of loss. This can mean significant legal and procedural cost that you need to consider.
In the last installment of this series I will cover application development considerations.
This is part 2 in a series of posts based on a talk I gave recently at the Chicago Information Technology Architects Group. Feel free to leave feedback.
In the previous post I discussed what reasons a company might have for creating a smartphone application. In this installment I will cover some of history and state of the different platforms as well as features that can be leveraged for building enterprise smartphone applications.
Before you start choosing a platform to develop your solutions on it is good to understand how we got here and what features you can leverage.
To my memory we owe all of this to a product called the Apple Newton that came out in 1987. It was the first PDA and back then I was much more of an Apple fan. I was very impressed with this device even though it never really went anywhere. The Palm Pilot by US Robotics was the next major advancement in PDA. It had a simple short hand window that allowed for quick stylus entry..
Later, Windows CE came out and started the broadening of the PDA market. After that it was the Palm and CE operating systems that started showing up on cell phones and for some time these were the two dominant operating systems that were distributed with devices from multiple hardware vendors.
The iPhone was the first smartphone to take away the stylus and give us a multi-touch interface. It was a revolution in usability and really changed the attractiveness of smartphones for the general public. This brought us to the beginning of the current state of the market with the concept of an online store that makes it easy for customers to get new features and functionality on demand.
With Android, Google made this more than a one horse race. Not only did they come to compete, their low cost actually made them the leading OS. Of course what made Android so attractive also is its major fault. It is so open that it has been a target for malware which leaves consumers exposed. Fortunately for Google though, most consumers aren’t aware of the threat that they are under.
Although Microsoft had put out one of the first smart phone operating systems with CE it had to play catch up and finally came out with the Windows Phone. They have gone for a market approach between those of iOS and Android. They support multiple hardware vendors like Google, but they kept a certification process for applications that is similar to Apple. They also created a user interface that was different enough to give it a clear separation from the other two platforms.
The result of all this is hundreds of millions of smartphones being sold monthly across all three platforms giving us a wide range of choices and challenges when it comes to developing solutions.
So what are the features that make these devices flexible enough be considered for use in the enterprise?
The biggest advantage of today's devices is network connectivity. The ability to access information from multiple sources at a moment’s notice is critical for businesses. Add to that the ability to communicate over a variety of text, voice and video modes and we have a powerful starting point.
Every smartphone has a cameras and they are not just useful for posting to Instagram. We are seeing more applications such as Bing vision that allow us to scan just about any printed code or text to find information. These capabilities have been made available to developers in the form of standard libraries for reading barcodes of just about an flavor and optical character recognition (OCR) interpretation.
Bluetooth give us the ability to communicate with multiple devices. Whether these are headsets, keyboard or printers the wireless communication capabilities are just starting to evolve. The more these wireless communication protocols grow, the more opportunities we will see to transfer data between users and a variety of devices.
Local storage of information that can be called up even when the device cannot reach the network is the other big capability. This give users the ability to work offline as well and transmit information when connections are restored.
These are the tools that we have to work with to build applications that can be leveraged to gain a competitive advantage for companies that implement them.
In the third installment I will cover key concerns that you face when building enterprise smartphone apps.
This is part 1 in a series of post based on a talk I gave recently at the Chicago Information Technology Architects Group. Feel free to leave feedback.
Most of us already carry smartphones. We play games on them. We keep up with what is going on with our friends and our favorite teams. We take pictures of our kids at their events. But the question is if that is all they are good for.
Many companies have aspects of their business that lend themselves to being performed by mobile devices. Some of them lean toward larger device such as tablets, but many can be executed on smartphones.
This and the following articles will discuss some of the possible applications of smartphone technology for businesses, the platforms that are available and the considerations you need to make when building them. I'll take a look at some specific scenarios and wrap up with a couple of capabilities that are just emerging that can be used in the future.
Why Build Enterprise Smartphone Applications
So what are some of the ways that you can leverage smartphone technology to gain efficiency in your business or a clients business. There are a few major areas that I have seen mobile platforms being an advantage to.
Your mobile sales force is a key candidate for leveraging smartphone apps. They can visit clients in their retail location and place orders on site. It is a more personal approach which can gain you customer loyalty. A sales person may also gather information about the way a client does business or who their target market is. This allows them you to focus marketing information or build customized support for your customer.
You may also have need to track physical inventory in a store. This is something that has historically been done with laser scanners, but with the camera capabilities in today's phones and tablets it is possible to use more general multi-purpose devices. This can save costs on both hardware and telecommunication contracts.
Delivery verification is another area that historically has been the domain of specialized devices but can now be accomplished with smartphones. This also reduces costs because it is also used for communicating with the driver and other operations. Add to that the navigation capability of smartphones and you can see how the return on investment increases.
Executives are always on the go. They spend most of their time in meetings and yet they need access to decision making information at their finger tips. With a smartphone app they can get alerts when major sales are closed or critical accounting process are completed that may need their attention. They can also answer questions by instantly pulling up BI reports.
I have often heard operations support people say that they need things like VPN and RDP from their phones. If they can also have notifications of outages or critical support requests they can be react to situations without needing to be tied to their desks.
These are all valid reasons to need smartphone applications. In the next installment I will discuss platforms and features.