Enabling Customer Success with Visual Studio 2012

​One of the enjoyable things about being a consultant with Skyline is partnering with our clients, especially those whom we have had long partnerships with, and helping them be successful with their customers over a time. It is both fascinating and rewarding to watch as they become both more successful, and see how they respond to the challenges of a changing application landscape for their customers.

Skyline has partnered with SoftwareONE, one of the largest software license resellers in the world, for many years now. SoftwareONE is headquartered in Stans, Switzerland and has operations in nearly 60 countries around the world. Our partnership initially focused on enabling their customers to access their licensing information from their backend ERP system. A secondary goal was to facilitate collaboration between SoftwareONE, its global customer base, its software resellers and the software publishers whose products they sell.

To enable this collaboration, the original portal was hosted on SharePoint 2007, with custom pages developed to access the back end ERP systems. The way the ERP system is designed, each individual country SoftwareONE does business in has a separate database. The implementation within SharePoint had each country create a separate web application, in order to identify the country, security constraints and other reasons. After several months of development and testing we had a solution that enabled access to customer licensing information as well as a collaboration platform. The solution was globally available across the six countries SoftwareONE was doing business in.

However, in the five years since the Lifecycle Portal went live, the SoftwareONE business has dramatically grown. During that time those 6 countries grew to almost 60 different countries. With this increase in global scale, the complexity of managing separate web applications for each of these countries became increasingly difficult. Also, during that same time, there was a dramatic shift in the marketplace, as mobile websites and mobile applications became the new normal for many organizations, including SoftwareONE and its customers.

It became apparent to SoftwareONE that it was time to upgrade their Lifecycle Portal. Looking at the options available, it was quickly decided that Microsoft Visual Studio 2012 and .NET Framework 4.0 were the answer to many problems the current system was encountering. The decision was made to rewrite the portal using Microsoft's MVC platform, with the new portal referred to as vNext. Here are some of the benefits our combined team realized from choosing Visual Studio 2012:

Fully Mobile The current version of the Lifecycle Portal was designed to be fully mobile. From the beginning, the goal of the application was to future proof the development by ensuring it could meet a variety of mobile endpoints. The mobile views introduced in MVC 4 enabled custom web pages that are viewable on the variety of mobile enabled browsers that SoftwareONE customers are using.

Web Services To meet the requirements of a dynamic, interactive web app, as well as enable native mobile applications such as iOS or Android, it was important for the application to provide data via web services. The controller based implementation within MVC made the ability to have consolidated logic that is used by the razor view engine to create HTML or JSON data used with mobile clients trivial.

Consolidating logic for presentation within a single controller makes long term maintenance simpler. The controller model also enables us to use anonymous classes to "shape" (or limit) the data we are using for various mobile platforms. The ability to easily emit JSON results with the JSON keyword in the controller ensure that both Javascript-based web implementation as well as native mobile applications are all accessing data via the same application path. Contrast this with our previous web forms implementation where we needed to have a separate service implementation and the benefits of choosing MVC for a service based application is readily apparent.

Entity Framework Code First The previous version of the Lifecycle Application Portal relied on Linq To SQL. Due to several factors, including small differences between tables based on business rules in different countries, the Linq To SQL implementation relied on SQL views. This enabled us to abstract away differences in the table structures. However, as time went on, this approach became a hindrance to deploying new version of the portal. Upgrades would require SQL scripts to be deployed to each country. As the country count went from 6 to over 30, this became quite a time commitment during the deploy process. Second, because of changes to the underlying data structure, changes would have to happen off hours, but with the application running for customers across the globe, there were no off hours!

Entity Framework Code First became a great solution to remedy the problem. With Code First, all of the differences between the databases could easily be handled by not including extra fields within our data model. The flexibility that the fluent API provides also enabled us to add a specific column to our model. Further, by adding a new field to two places within our application tiers, it was immediately available for our Razor views. These Code First features made the cumbersome process of running 30 SQL scripts a much welcomed thing of the past. We love the flexibility that Code First allows!

Claims Authentication Due to the growth of SoftwareONE's customer base as well as the need to be fully mobile, SharePoint 2010 was not the optimal solution for the vNext portal. However, SharePoint is still the premier collaboration platform for SoftwareONE and its customers. SoftwareONE is consistently focused on their customers and providing a top notch user experience. With Windows Identity Foundation (WIF) and the claims aware application stack in both MVC and SharePoint, users could log into one of the applications and have access to both of them with minimal friction. As SoftwareONE makes more tools and websites available to help their customers, the claims based authentication provided by WIF will enable a seamless logon experience.

Multi Threading Like SoftwareONE, its customers are doing operations in multiple countries around the globe. These customers have licensing needs that cross the globe too. In the previous version of the portal, accessing this information meant logging onto each country separately. With the introduction of new threading capabilities in the .NET framework, we were able to bring this data together. Within our application's service layer, each service call that retrieves data is using the new Task library to spin off a database request to each of the SoftwareONE country databases a user has access to. We are then able to combine these disparate data sources into a single result for display within the user interface. This provides SoftwareONE customers a holistic view to their data, no matter how many countries they have licensing concerns in or which database was the source for the data.

JavaScript Like most modern applications, the use of JavaScript and jQuery was used in vNext to create a responsive application. Once the page was loaded, asynchronous calls were made to web services to retrieve data and bind it to the page. With so much reliance on JavaScript and CSS, the new tooling support within Visual Studio 2012 for JavaScript as well as the page inspector tool, helped the developers realize a much more efficient development experience. Many hours were saved in the development phase by having access to these productivity tools.

Team Foundation Server With a development team featuring members in both Switzerland and the United States, code collaboration tools were imperative. Team Foundation Server (TFS) 2010 enabled developers to work on code as well as ensure that each developer's code compiled upon check in. With a large team and many check-ins, knowing as soon as possible that the code was not compiling was very valuable and saved time. Also, the enhanced merge capabilities in TFS allowed people who were working on disparate parts to each have the code checked out, and then merge back in the code of multiple developers without issue.

TFS and visual studio have great testing tools. The development team used Unit Tests to ensure there were no unexpected logic issues introduced with code check-ins. Integrations tests were also run against the database each evening, to ensure code quality and expected results. This was an immense time saver in identifying issues early.

With development teams in different parts of the globe as well as separated by 7 hours, tools provided by TFS ensured quality as well as enabled everyone to focus on doing their work.

SoftwareONE's Lifecycle portal has been rewritten from a SharePoint 2007 application to the MVC based vNext portal and separate SharePoint 2010 collaboration platform. This rewrite takes advantage of many of the tools available in Visual Studio 2012 and the .NET Framework 4. Whereas the previous platform would have required spinning up a new web application, configuring it and running a 40,000 line SQL script to create specific views, we are now in a position to add a few lines to a config file and some SQL permissions and we are deployed to a new country instantly. Even more important, SoftwareONE is positioned for the next five years of growth in our rapidly changing industry, as they now have a dynamic platform that will enable their users across the globe to access their licensing information, whether it is at their desktop, on their mobile phone or using Windows 8.

To see the SoftwareONE Lifecycle Portal in action, check out this video on You Tube.

It has been a great experience being a small part of SoftwareONE as they have become globally positioned as one of the top license resellers over the last five years. We are looking forward to another rewarding five years!


A Modest Proposal – Apple Should Buy the US Post Office

The recent iMaps fiasco has taught the world that Apple has some serious catch up to do in the world of maps. There is a bit of a chicken and the egg issue, the more people using the iMaps app, the more data Apple can collect and make iMaps a better app. Instead of waiting for this to happen, Apple should speed up the process and buy the US Post office.

The USPS operates over 210,000 vehicles and is the largest vehicle fleet in the world. The vast majority of these vehicles are out driving the world every day. If Apple buys the US post office, they could transform these vehicles into data gathering machines. Throw in a GPS and bring the data to Apple and their mapping team to quickly scale and improve iMaps. Next step, throw a camera in the car, ala the Google Car, and get a constantly refreshing street view mode. Google's Street View cars have driven 5 million miles since hitting the road. The US Post office drives 1.25 BILLION miles a year. Apple for the win! Next up, throw some more sensors onto the cars. For example, weather sensors could capture very local and real time weather data and create the next great Apple app, iWeather.

Putting sensors onto the USPS fleet is not a new idea, the USPS has even proposed doing this. However, it is a slow moving process, with privacy concerns often being cited. Apple buying the USPS and transforming it to the iPost Office helps alleviate these concerns. By moving the USPS from an old stodgy business to a tech company, privacy concerns quickly disappear. As consumers, we are used to letting the Goggles, Facebooks and Apples of the world collect information about us to make their services more awesome for us.

Next up, it becomes an advertising niche for Apple. The USPS handled over 170 billion items in 2010. Each one of these becomes an advertising opportunity! Just like Google can put a little advertising onto most of the web pages we visit, iPost Office can put a little ad onto each of the 170 billion mail deliveries they do a year and have a brand new revenue stream.

Next along the road, Apple can start competing with Amazon. It quickly acquires 30,000 retail locations that it can use to distribute physical goods. Instead of consumers having to wait a few days for the delivery of something from Amazon, or even two days for those customers paying for an Amazon Prime Membership, the iPost Office could deliver things purchased that day! The iPost Office even delivers on Saturdays, putting Amazon at a competitive disadvantage for those customers whom always battle cheap price vs. instant gratification.

The best part about iPost Office is that everything Apple does is cool. Hipsters would start flocking back to their mailboxes. Apple could create stamps of Apple luminaries like Steve Jobs, Steve Wozniak and Jonathan Ive (post redesign of course!). You can quickly imagine people buying these stamps and sending physical letters in the mail again. This could lead to a renaissance of letter writing! Imagine a world where instead of The Letters of John Cheever we could have the Collected Letters of John Grueber.

Okay, so the above is all a little bit Jonathan Swiftian, but a partnership between the US Post Office and Apple could go a long way to solving the financial issues at the US Post Offices and Apple's iMaps issue. Of course, in the US iMaps tends to be in much better shape, so throw in a similar partnership with DHL for good measure. Apple could quickly gather data and help resolve their mapping issues. Win-win.


Xbox Phone

Last week saw a lot of rumors running around that Microsoft would be releasing their own Windows Phone next year. WPCentral, BGR and The Verge had "trusted" sources confirm the release of a Windows Phone next year (2013). Even Forbes got into the mix saying it would be a good idea.

There are a lot of ways this would be difficult for Microsoft. They do not have distribution with the carriers, and that takes work. They have also burnt some bridges along the way ("Remember the Kin" I think is a Verizon rallying cry). They have also invested a lot in their relationship with Nokia.

If they are REALLY looking to get into the mobile phone business, they would just buy Nokia. Microsoft makes money from nearly every Android device sold and Nokia makes money on every iPhone sold. Having your competitors help pay for your developers as you try to take market share is fun. There is also a ton of Intellectual Property that Nokia brings to the mobile space that Microsoft can realize benefit from. Their mapping technology is one of the top two (if not top) in the industry. They also have excellent native apps that Microsoft could leverage natively for all of their phones. Moving away from a Nokia partnership could set Microsoft back, especially if the relationship changes in a way that they lose their mapping technology.

Lots of the speculation is that Microsoft would be making an unlocked device that they could sell directly to consumers, ala the Google approach with Nexus. I don't think that is going to happen. What I think is going to happen is that Microsoft is going to make a portable Xbox based on Windows Phone. Let's call it the XBox Surface.

What do we know.

New Xbox Next year - Microsoft is rumored to be releasing a new version of the XBox next year. There is also rumors/confirmation that the new Xbox will be based on the same core as Windows 8. You can be pretty sure that the new Xbox will be launching later next year, in time for the Holiday season. Both of the previous version of the XBoxes launched in November.

Windows Phone - The upcoming release of Windows Phone 8 is also reworked to be based on the Windows 8 OS. With all of the secrecy it is hard to say, but it SEEMS that Microsoft has not totally baked this through. Next year, you can expect it to be more fully integrated. Also, Microsoft traditionally updates their OS in October/November time frame.

Windows 8.Next - Microsoft has stated they would like to get into quicker rev cycles for both Office and Windows. The Windows RT side of the OS seems like this would be readily doable. We can assume that this would happen about a year after the release, which gets us into September/October

One OS To Rule Them All - A good deal of Microsoft's success comes from the ability to make developers productive and create apps. Recently, Microsoft has been promoting a "Shared Windows Core". This makes it easier for developers to create applications once and deploy to Windows 8 or Windows Phone, and one assumes Xbox.Next. While this is coming along, it doesn't feel like it is totally completed. I think it will be MUCH closer to fully baked next year.

So what do we have... Rumors that Microsoft is building a Windows Phone Surface type device, a new version of the XBox and the assumption of new Windows Phone and Windows releases next fall. I think you throw this all into a blender, and Microsoft will not be releasing a Surface Phone, but a handheld Xbox based phone.

The Xbox Surface would be based on the next version of Windows Phone 8, which I believe will be tightly integrated with the next Xbox. It will allow developers to much more easily create applications for both the next Xbox as well as the phone. Obviously you will not play Halo 5 on the phone, but you could maybe have a lighter graphic version of the FPS as well as augmented second screen for play if you wanted. Think the next version of Microsoft's SmartGlass on steroids, which will be more close to what Nintendo is doing with the WII U.

Microsoft has had tremendous success with the Xbox in the consumer space. It is a brand consumers trust. They do not have a competitor to Sony's PSP line. It is well past time they create one. With the upcoming release of the new Xbox it is my guess you will see one and it will be based on Windows Phone. And hey, if your new Xbox portable gaming device makes phone calls, well that is just a bonus.

And just like that, Microsoft has a path to gain traction in the phone space.


John Ptacek I'm John Ptacek, a software developer for Skyline Technologies. This blog is my contains my content and opinionss, which are not those of my employer.

Currently, I am reading Norse Mythology by Neil Gaiman

@jptacekGitHubLinkedInStack OverflowGoogle+