Game Review: EA Real Racing 2 for Windows Phone

It has been a very long time now that I did my last game review, but Real Racing 2 somehow made me changing this.

wp_ss_20130523_0012

 

Although the game is a Lumia Exclusive and has a relatively high price ($4.99/€4,99), I love racing games. After playing around with the trial version, it was clear that I’ll buy it. It needs 243 MB of your phone storage to work.

So let’s get into the game:

First, you need to choose a car to get into the racing cups and leagues. Therefore you get 25.000 bucks to buy a new car. I started with the Volkswagen Golf GTI, but you are also able to choose a 2010 Volvo C30.

wp_ss_20130523_0007

After buying your first car, you will have no money left for the moment, so you need to start your first race. There are 5 different ways to control the game, I prefer the “Auto acceleration-Tilt to steer”-touch to brake combo.

I switched off the steering and the brake assistant because I want to control the car by myself (or even not, you will see).

wp_ss_20130523_0004

In most races you’ll start from the very last position and need to drive through to position 1. This is a bit tricky for the first races, because the CPU drivers are closing gaps very hard partly, but you will find a way to pass them after you have made some experiences with it. Sometimes it also helps to be as rough as the CPU drivers.

You have 5 different camera angles which you can use during a race:

  • in car
  • behind the car – near
  • behind the car – far
  • front on top of the engine hood
  • front bumper

I often us the front bumper angle, but with Real Racing 2 it is a lot of more fun to use the in car angle. The movements of the driver are realistic, which makes the whole game play more realistic.

Of course, like every good racing game, Real Racing 2 let’s you pimp your car a little bit. There are upgrade packages which you can buy like Racing brake pads or a chip tuning for your engine.

wp_ss_20130523_0009

Besides the career mode, you can also play Quick Race, Time Trial or Multi Player. There is also a Leaderboard, where you can check how good you are compared to your friends.

Cars from the following  constructors are available:

  • BMW
  • Chevrolet
  • Ford
  • Jaguar
  • Lotus
  • McLaren
  • Nissan
  • Volkswagen
  • Volvo

Every constructor has street models as well as special racing models to choose from. Over all, I already love this game, and hardly can put it down.

Here is a short demonstration of the game in action. Thanks to my son Daniele, who was the “camera man” for this video:

If you use my blog reader app, click here to open the browser.

You can download the game here in the Windows Phone Store.

0  

How to format Date and Time on Windows Azure

time_Azure

Phew, my first post about my journey on starting development on Windows Azure. I started a few weeks ago using the Mobile Services from Windows Azure, and I did learn a lot about it.

This post is about formatting Date and Time strings, because Azure uses a different format than my Windows Phone app.

If we upload a DateTime String to Windows Azure from a Windows Phone app, it looks like this: 2013-05-04T06:45:12.042+00:00

If we translate this, you have “YYYY-MM-DD” for the date. The letter “T” declares that the time string  is starting now, formatted “HH:MM:ss.msmsms”. The part “+00:00″ is the timezone offset.

So far, probably nothing new for you.

Now let’s get to Azure. Azure by standard uses the GMT time for Date strings (DateTime() in JavaScript = Date()). I have written a scheduler which fetches data from another web service and puts it into my table. Naturally, I wanted to know when the data were last checked, so I added a column for it.

Then I did what everyone that is new to JavaScript has done and added a variable with a new Date(). And now the trouble begins. The output of new Date() is a totally different string: Sat, 04 May 2013 07:02:51 GMT.

Sure, we can parse and convert it within our app, but that would need (although not much) additional resources. So I decided to let to Azure the conversion to a Windows Phone readable string.

How do we  manipulate the Date()-string?

I binged a bit and finally found a very helpful page, that explains all about the JavaScript Date() object: http://www.elated.com/articles/working-with-dates/

I then started off with the following code:

var d = new Date();
var formattedDate = d.getFullYear() + "-" + d.getMonth() + "-" + d.getDate();
var formattedTime  = d.getHours() + ':' d.getMinutes() + ':' + d.getSeconds();
var checkedDateTime = formattedDate + "T" + t;

Those of you that are familiar with JavaScript will immediately see what I did wrong. Let me explain for the newbies:

First thing, date().getMonth is zerobased. So we will always get a result that is one month behind. We have to get it this way for the correct month:

d.getMonth()+1

But that is not all. If you will use the code above, your result will look like this: 2013-5-4T7:2:51

JavaScript does not use leading zeros. If you want to insert it into a date formatted column, you will get the following error from Azure:

Error occurred executing query: Error: [Microsoft][SQL Server Native Client 10.0][SQL Server]Conversion failed when converting date and/or time from character string.

So we need to add the leading zero before inserting it. Luckily we are able to that very easy. Here is my implementation:

var d = new Date();
var formattedDate = d.getFullYear() + "-" + ('0' + (d.getMonth()+1)).slice(-2) + "-" + ('0' + d.getDate()).slice(-2);
var formattedTime  = ('0' + d.getHours()).slice(-2) + ':' + ('0' + d.getMinutes()).slice(-2) + ':' + ('0' + d.getSeconds()).slice(-2);
var checkedDateTime = formattedDate + "T" + t;

What have we done here?

We are adding the leading 0 to each object string. The slice(-2) is for only picking the last two numbers. To make it more clear: if we have 9 as hour, adding the zero in front results in 09. Picking only the last two numbers by .slice(-2) results in still in 09. If we have 10 as hour, adding the leading zero results in 010. But the .slice(-2) operation will cut it back to 10. Easy enough, right?

If we run the code above to get the Date and Time, the result will look like this: 2013-05-04T7:02:51

The timezone offset is automatically added to the date when we update the table. If we now send the data to our Windows Phone or Windows 8 app, no conversion is needed as we already have a correctly formatted string.

I hope this is helpful for some of you and will save you some time.

Happy coding everyone!

0  

Are lockscreens outdated?

In one of their latest shows, Vernon and Andrew from the awesome Glance and Go Radio discussed whether or not having a lockscreen still makes sense.
Unlike many people may think, lockscreens were not really meant to protect a device from being accessed by other individuals, but derived from the keypad locks cell phones used to have to avoid accidentally performing a phone call while carrying the device in your pocket (butt dialing).

While you may argue about the actual use on touch devices, I find lockscreens a great way to further personalize my device. Especially with the new features Microsoft introduced with Windows Phone 8.
Meanwhile several dozens of all kinds of lockscreen apps can be found in the Windows Phone store. Some of them offering quite unique features. I’m currently going with Lock Buster, which you can find here.

And even though there are certainly more important parts of the OS which need optimization and improvements, I seriously hope Microsoft hasn’t reached their end of the line with the lockscreen options. I personally would like to be able to add more than just 5 apps to it. I don’t see a single reason why a second array of icons couldn’t be added.
And while these icons at least serve the purpose of letting users know about the amount of new items for the configured apps, I don’t see it necessarily stop there. I’d love to be able to tap the icons to have them reveal more detailed information about what’s awaiting me. These could simply be displayed above the clock. Perhaps with a net slide or fade in effect.
That’s just my personal opinion of course.

What do you think? Would you rather get rid of this ancient feature or keep it?  Share your thoughts in the comments below.

 

1  

Editorial: Samsung Ativ S – a Windows Phone that should not be

I managed to get my hands on a Samsung Ativ S recently and to play around with it a bit. This post is about my experience.

First, of course I am happy about every OEM that releases a Windows Phone Device. But Samsung achieved something I never thought it would happen to me: I wish they would have not released the Ativ S.

Ok, let’s check the device itself:

If you open the package and see the device, you will see immediately that the Ativ S is a revamped device. It looks identical to the Samsung Galaxy S3. Even the lock screen wallpaper is the same. First bad feeling on that device.

WP_20130326_002

First positive thing: the display. The Ativ S uses Samsung’s AMOLED technology, which is really a good piece of technology. Colors are strong, and the display illuminates very well in the dark as in the light.

As it is a Windows Phone, the social networks integration works as you’d expect. Apps are working like they should, no surprise here.

Let’s check the Samsung Zone in the Windows Phone Store. Samsung has only a few apps they provide. They have a diary app, some photo apps, a RSS reader, their on ChatON app and a Music Hub. The biggest part of the Samsung Zone are Dictionary apps.

wp_ss_20130330_0001

I did not test all of the apps, but the apps I tested did not feel spectacular or made me want to use them again.

Even HTC, who also produces also Android devices, has lead me to more enthusiasm for their apps than the Samsung Apps do.

Ok, now let’s take another look at the hardware. The device feels very light-weight in your hand. On the other side, it feels very cheap. They brushed the back cover to look like solid metal cover, but it feels just like plastic.

WP_20130330_009

I had multiple Smartphones in my hands already, even plastic could feel better.

The only advantage I can see is the extreme large battery, which has a very good life time.

Clearly Samsung needed to bring a Windows Phone 8 device to the market as a Microsoft Partner. But they did it in a wrong way.

Using the hardware of one of their Android devices makes sense from the economic view. But they could not expect to be successful with that.

My conclusion: This device will get some attention from Samsung fans, but I doubt it will be one of the top Windows Phones. The only recent news about the Ativ Series (both Windows and Windows Phone) were that Samsung discontinues distribution to certain markets, which is not surprising me after I had the chance to play around with the Ativ S.

8  

How to search the Windows Phone Store within your app

MPSearch

I am currently working on my NFC app, and I want to make it easier for the end user to search for the AppId which you need for the LaunchApp record. So I thought about a possible solution for this, and of course the easiest way is to search the app.

If you only want to search the Windows Phone Store and let show some search results, there is the MarketplaceSearchTask, which you can call as a launcher. The only problem is, you cannot get any values into your app this way. But I found a way to get the results into my app. This post is about how I did it.

The first thing you will need to add to your project is the HTMLAgilitypack. It helps you parsing links from an HTML-based document. Huge thanks to @AWSOMEDEVSIGNER (follow him!), who helped me to get started with it and understand XPath. Xpath is also important for the HAP to work with Windows Phone. You will need to reference to System.Xml.Xpath.dll, which you will find in

%ProgramFiles(x86)%\Microsoft SDKs\Microsoft SDKs\Silverlight\v4.0\Libraries\Client or
%ProgramFiles%\Microsoft SDKs\Microsoft SDKs\Silverlight\v4.0\Libraries\Client

Ok, if we have this, we can continue in creating the search. Add a TextBox, a Button and a ListBox to your XAML:

            <Grid.RowDefinitions>
                <RowDefinition Height="90"></RowDefinition>
                <RowDefinition Height="90"></RowDefinition>
                <RowDefinition Height="*"></RowDefinition>
            </Grid.RowDefinitions>
            <TextBox x:Name="MPsearchTerm" Height="80" Grid.Row="0"></TextBox>
            <Button x:Name="searchButton" Height="80" Grid.Row="1" Content="search" Click="searchButton_Click_1"></Button>
            <ListBox Grid.Row="2" x:Name="ResultListBox">
                <ListBox.ItemTemplate>
                    <DataTemplate>
                        <StackPanel Orientation="Horizontal">
                            <Image Source="{Binding AppLogo}" 
                                   Height="50" 
                                   Width="50" 
                                   Margin="10,0,0,0">
                            </Image>
                            <TextBlock Text="{Binding AppName}"
                                       FontSize="32"
                                       Margin="12,0,0,0" >
                            </TextBlock>

                        </StackPanel>

                    </DataTemplate>
                </ListBox.ItemTemplate>
            </ListBox>

After creating this, we will hook up the Click-Event of our Button to create our search. We are going to use the search of windowsphone.com to get all the information we want. You can parse any information that you need like ratings etc., but we focus on AppId, Name of the App and of course the store Logo of each app.

First, we need to create the search Uri. The Uri is country dependent like your phone. This is how we create the Uri:

string currentLanguage = CultureInfo.CurrentCulture.Name;
string searchUri = string.Format("http://www.windowsphone.com/{0}/store/search?q={1}", currentLanguage, MPsearchTerm.Text);

After that, we are using a WebClient to get the HTML-String of  the search. I used the WebClient as I want to make it usable on WP7.x and WP8.

//start WebClient (this way it will work on WP7 & WP8)
WebClient MyMPSearch = new WebClient();
 //Add this header to asure that new results will be downloaded, also if the search term has not changed
// otherwise it would not load again the result string (because of WP cashing)
MyMPSearch.Headers[HttpRequestHeader.IfModifiedSince] = DateTime.Now.ToString();
//Download the String and add new EventHandler once the Download has completed
 MyMPSearch.DownloadStringCompleted += new DownloadStringCompletedEventHandler(MyMPSearch_DownloadStringCompleted);
MyMPSearch.DownloadStringAsync(new Uri(searchUri));

In our DownloadStringCompletedEvent we now are parsing the HTML-String. First thing we need to do is to create a HTML-Document that loads our string:

//HAP needs a HTML-Document as it is based on Linq/Xpath
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(e.Result);

The next step is a bit tricky if you do not know Xpath. You need to got through all the HTML elements to find the one that holds the data you want to parse. In our case it is the class called “medium” within the result table “appList”.

var nodeList = doc.DocumentNode.SelectNodes("//table[@class='appList']/tbody/tr/td[@class='medium']/a");

Note that you have to use ‘ instead of ” for the class names in Xpath. I recommend to open a sample search page in an internet browser and look into the code view of the page to find the right path.

image

Now that we have a NodeList, we can parse the data we want:

foreach(var node in nodeList)
            {
                //get AppId from Attributes
                cutAppID = node.Attributes["data-ov"].Value.Substring(5, 36);

                //get ImageUri for Image Source 
                var ImageMatch = Regex.Match(node.OuterHtml, "src");
                cutAppLogo = node.OuterHtml.Substring(ImageMatch.Index + 5, 92);

                // get AppTitle from node
                //Beginning of the AppTitle String
                var AppTitleMatch = Regex.Match(node.InnerHtml, "alt=");
                var StringToCut = Regex.Replace(node.InnerHtml.Substring(AppTitleMatch.Index),"alt=\"",string.Empty);
                //End of the AppTitle String
                var searchForApptitleEnd = Regex.Match(StringToCut, "\">");
                //FinalAppName - cutting away the rest of the Html String at index of searchForApptitelEnd
                // if we won't do that, it would not display the name correctly
                cutAppName = StringToCut.Remove(searchForApptitleEnd.Index);
           }

As you can see, we need to perform some String operations, but this is the easiest way I got the result I want – within my app. As always I hope this will be helpful for some of you.

You can download full working sample here:  MarketplaceSearch.zip

Happy coding!

0  

Dev Story Series (Part 5 of many): Styling a WebView or WebBrowser element

This post is about styling our WebView or WebBrowser in our app. Until now, we only got the HTML string that we are displaying in our WebView or WebBrowser. It looks like this:

image.png

The content we receive from our WordPress post content includes already all kind of HTML tags like paragraphs, lists, links, images. That is the advantage for this solution: no parsing is needed, the string can be displayed as is. Both the WebView and the WebBrowser framework element (no, they are not controls) are able to read and render CSS code. And this is how we can match the whole element for our app.

HTML Pages can be styled by using a so called cascading style sheet (CSS), which is similar to XAML code. With a little bit of searching on the web you will be able to style “translate” your XAML properties into CSS.

Here is a sample CSS String:

<STYLE type=\"text/css\">
body{background:#034786; width:450px; }
p{font-family:'Segoe UI';color: white;font-size:medium;}
h1{font-family:'Segoe UI';color: white;}
h2{font-family:'Segoe UI';color: white;}
h3{font-family:'Segoe UI';color: white;}
h4{font-family:'Segoe UI';color: white;}
pre{background-color: #C0C0C0; width:100%;}
blockquote{font-family:'Segoe UI';font-style:italic;}
a:link{font-family: 'Segoe UI';color: #C0C0C0; font-size: medium; text-decoration:underline}
li{font-family: 'Segoe UI';color: white;font-size: medium;list-style-type: square;}
img {text-align:center; width:100%: height:100%;}
</STYLE>";

Every CSS string has to be surrounded with “<STYLE type=\”text/css\”> </STYLE> “. Between those two Style tags, you can set different properties for each kind of HMTL tag:

  • body = the whole page is embedded in the body. this is where we set the background of our content as well as the width and the height
  • p = paragraphs. paragraphs can contain text as well as images or other multimedia content. Mainly used for text like in our blog post, we style how the user is able to read our blog post.
  • h1 – h4 = different kinds of headers. you can define four styles of headers
  • pre = is for lines of code
  • blockquote = if we quote people or other sites, we use quotes to clarify this aren’t our words. should be styled a bit differently than the rest of our blog (e.g. Italic)
  • a:link = how hyperlinks will be styled
  • li = this is how our list will be styled in this view
  • img = how we want to see our pictures in our post

Hint for using CSS in code behind:

If you just C&P the CSS string from above, it will result in some errors from Visual Studio. Visual Studio does not like the new lines in strings, so you have to add it as one line. Also is it not possible to use ‘”‘ within a string declaration. It has to be “escaped”, which we are doing with a simple \ before it: ‘\”‘. I mentioned it because I learned it the very hard way by trying to solve it for 2 hours.

Only thing we now need to do is pass the CSS String together with our HTML string from our JSON to our WebView or WebBrowser element:

WebBrowser.NavigateToString(CSSString + ContentString);

After navigating to this both strings, our content is now displayed like native:

  styledNativeWebView

One last tip:

I recommend to set the Visibility of your WebBrowser or WebView to “Collapsed” until the whole rendering has done. Once the “navigation” has finished, set it via code to visible. This way the user does not recognize that we are rendering the post content for him. Just display a loading animation until that is done. Both elements have a “LoadCompleted” event. Once the rendering (= the navigation to our string) is done, the content of our blog post is shown as it would be natively in our app.

As always, I hope this is helpful for some of you and feel free to leave a comment below.

0  

Announcement: beta test for NFC Toolkit

 wp_ss_20130201_0002

NFC Toolkit, my latest app project, is ready for a first beta look.

If you want to take part in this beta, please consider following points before applying:

  • You need a WP8 device with NFC
  • You will need NFC tags for now, as communication between devices is still in development
  • You are willing to give serious feedback to improve the app

This will be a long time beta, means that even if the app goes live for all customers, I will continue developing with this beta before launching new versions. If you join the beta, you can use and test all new features before all others.

NFC Toolkit aims at normal users, that don’t need all to technical information but want to use NFC.

The beta has following features at the moment:

  • basic tag reading
  • tag writing of most commonly used tag scenarios
  • profiles! This is one of the main features of NFC Toolkit. It is all about settings based on a NFC tag.
  • more unique features to come!

Send your MS Account via mail, if you want to participate in beta testing this all new Windows Phone 8 app.

 

0  

Application ID’s of built in Windows Phone 8 apps

 

As you may have noticed, I am currently working on an NFC app. Development goes pretty well at the moment, thanks to the absolutely awesome and easy to use NDEF library by Andreas Jakl.

If you want to open apps from your app or from an NFC tag, you will need to use the AppId of the desired app. If you have an installed app from the Windows Phone Store, this is pretty easy. You can go to the application list on your phone, long tap and hit “send”. If you now choose mail or SMS, you can obtain the AppId very easy, as it is the last part behind “appId=” on the web address.

With the built in apps, it is a bit more difficult. Luckily, the app NFC interactor for Windows Phone 8, which is aimed at developers, has a solution. The app is written also by Andreas Jakl, who provides a huge tool with this app to support you on developing your own app and it is worth every cent.

I made it through all records for built in apps and extracted the following list, which might come handy for some of you:

  • Alarms AppId 5B04B775-356B-4AA0-AAF8-6491FFEA560A
  • Bing Scan AppId 5B04B775-356B-4AA0-AAF8-6491FFEA5682
  • Calculator AppId 5B04B775-356B-4AA0-AAF8-6491FFEA5603
  • Calendar AppId 5B04B775-356B-4AA0-AAF8-6491FFEA5612
  • Camera AppId 5B04B775-356B-4AA0-AAF8-6491FFEA5631
  • Data Sense AppId 5B04B775-356B-4AA0-AAF8-6491FFEA5646
  • Games AppId 5B04B775-356B-4AA0-AAF8-6491FFEA5634
  • Help+Tips AppId E05410F1-753B-47BC-B101-226E5802B9E1
  • IE AppId 5B04B775-356B-4AA0-AAF8-6491FFEA5660
  • Maps AppId 5B04B775-356B-4AA0-AAF8-6491FFEA5661
  • Messaging AppId 5B04B775-356B-4AA0-AAF8-6491FFEA5610
  • Music+Videos AppId 5B04B775-356B-4AA0-AAF8-6491FFEA5630
  • Office AppId 5B04B775-356B-4AA0-AAF8-6491FFEA561E
  • OneNote AppId 5B04B775-356B-4AA0-AAF8-6491FFEA561B
  • People AppId 5B04B775-356B-4AA0-AAF8-6491FFEA5615
  • Phone AppId 5B04B775-356B-4AA0-AAF8-6491FFEA5611
  • Photos AppId 5B04B775-356B-4AA0-AAF8-6491FFEA5632
  • Rooms AppId 5B04B775-356B-4AA0-AAF8-6491FFEA562D
  • SIM Applications AppId 5B04B775-356B-4AA0-AAF8-6491FFEA562C
  • Start (Home Screen) AppId 5B04B775-356B-4AA0-AAF8-6491FFEA5602
  • Store AppId 5B04B775-356B-4AA0-AAF8-6491FFEA5633
  • Wallet AppId 5B04B775-356B-4AA0-AAF8-6491FFEA5683

All credits for this App IDs goes to Andreas Jakl, I only put them together as a list to find them more easily.

0  

Dev Story Series (Part 4 of many): How to open links from a WebBrowser/WebView in Internet Explorer

XAMLWebView

Today I will share my solution of how to open links from a WebBrowser or WebView on Windows Phone and Windows 8 (as I did in my app for msicc.net).

Generally links are opened within the same WebBrowser or WebView element. On Windows Phone you can solve this problem pretty easy with only one simple method:

public void WebBrowser_Navigating(object sender, NavigatingEventArgs e)
        {
            e.Cancel = true;
            WebBrowserTask wbt = new WebBrowserTask();
            wbt.Uri = e.Uri;
            wbt.Show();
        }

In Windows 8 this gets a bit more complex. There is no Navigating method, and this is why we have to combine different languages together. We will use the ScriptNotify event to pass the link via a small java script and launch IE with the new link.

First, you need to add the function to your HTML string.  I used a RegEx method to add all the pattern that is needed to all links. As I know that a lot of us (especially junior devs like me) have their problems with RegEx, here is my method to add them:

public static string AddScriptToLink(string text)
        {
            const string hrefScript = " onclick=\"return OnLinkClick('{0}')\" ";
            const string pattern = @"href=\""(.*?)\""";

            var result = text;

            var matches = Regex.Matches(text, pattern);
            var sortedMatches = matches.Cast<Match>().OrderByDescending(x => x.Index);
            foreach (var match in sortedMatches)
            {
                var replacement = string.Format(hrefScript, match.Groups[1].Value);
                result = result.Insert(match.Index, replacement);
            }

            return result;
        }

After you did that, you will be able to use the following script:

<script type='text/javascript'>
	function OnLinkClick(a) 
		{       
         	 window.external.notify(a);       
		 return false;    
		}
</script>

I pass this script together with the HTML string (HTML methods need to be first!) to the WebView. I recommend to save the script as a static string, so you have do insert only the name of the string.

If you add the ScriptNotify Event to your WebView, you will be able to use LaunchUriAsync with the value of e, which is the link.

private async void WebView_ScriptNotify(object sender, NotifyEventArgs e)
        {
            await Windows.System.Launcher.LaunchUriAsync(new Uri(e.Value));
        }

I am not sure if there is a better way to do this, but that is my way. It works like it should and does not hurt the experience of my app.

As always I hope this is helpful for someone out there. If you have any way to improve that, feel free to leave a comment below.

0  

Who is it that actually complains about WP?

complaining_about_WindowsPhone

That’s a question that’s been driving me for some time now. When I first came to Windows Phone – on my HD2 back in the days – I was kind of disappointed too. Coming from Windows Mobile and Android I was used to have access to almost anything in the system. I used to have all these nifty things like a file browser, a task switcher/manager, custom lockscreens, custom alarms, custom ringtones. Well, I spent more time for tinkering with the OS than I actually used the device. Not to mention that I flashed my device at least twice a week. Why? Because every single iteration of the ROMs I used was supposed to bring a little more stability and speed. I can’t even tell if this was actually true, but I always considered it well worth a shot.

So after flashing the first DFT WP ROM onto my HD2 – which was months ahead of the first update aka NoDo – I came to realize that MS obviously took a couple of steps back in terms of features. It almost felt as if they were approaching mobile OSes the same way Apple did. Which I found kind of shocking to say the least. Pre NoDo – and even pre Mango – WP7 lacked a lot of features that I felt were a necessity for each mobile OS. There wasn’t any multitasking, no official Messenger app, no social networks. But unlike many other users I saw the potential this new OS had. Even though it was lacking in so many ways. After spending a couple of weeks with it I started to lose the feeling to actually need file browsers, RAM cleaners, task managers and even the whole lot of customization I had gotten used to. Windows Phone’s strength was the focus on delivering information without the need of digging through a thousand of apps. It was its focus on providing a unique user experience and convenience that only Apple managed to provide with iOS so far. And from my point of view they did it in a much better way.

NoDo, Mango and now Windows Phone 8 all built up on these strengths. They added more features and even more access for devs to the underlying system. Each and every single feature Microsoft added was well thought about and felt right. It didn’t have that Frankenstein like patched together feeling I’ve always had with Android and even Windows Mobile.

I’m not blind though. I know that Windows Phone still lacks a few things and certainly doesn’t do everything right. Backups anyone? Podcasts? Xbox Live video support? Unlike many others I at least don’t have any issues with synchronization. But I can see that this is still considered a construction zone rather than a top notch solution. Zune did a better job there. But these are downsides every single OS has to deal with. There isn’t something like perfection.

I’m going to cut the chatter here now and go to what was supposed to be the original topic:

so who are actually the users who complain so much about Windows Phone and what it does or does not? That’s the point I was making with my personal story. It’s mostly these people who feel limited, because of the lack of customization. Limited because of the lack of access to the system. What these people see as boundaries is in fact the exact opposite. Windows Phone set them free. Free from things they actually don’t need. The issue is, they refuse to give into it. They refuse to take the time it needs to get comfortable with it. If more people would really USE a Windows Phone for more than just a couple of hours, they would see and feel the difference. Just like I – and many others now – did.

Bottom line is, it’s up to Microsoft and the OEMs to convince people that Windows Phone does (almost) everything a smartphone needs to do these days. And it does it in the most beautiful and convenient way possible.

9