Programming
Why I think Windows Phone is superior phone OS?
0Windows Phone? How did that happen?
Well over the last couple of months i was experimenting with mobile devices a lot because i was kind of tired of the Desktop and the whole HTML5 madness (yes i don’t like Java Script that much and i certainly don’t think its the-way-of-the-future, but that’s subject for another post).
Out of desperation at first i tried Android and got me a LG Optimus One phone. And I must admit that i liked it very much.
Yes, battery lifetime was problem at start, but installing CyanogenMod custom ROM completely solved that. I even spent some time programming an Android game but that failed miserably because my productivity was close to zero considering all the new things i needed to learn (Java, Open GL).
And all that time one good friend was constantly telling me how great his Windows Phone was. I was very skeptical about that since I previously owned Windows Mobile 6.5 phone and it was complete failure. I even recall at some time in the past promising to my self that i will never buy Windows powered phone again!
But after hearing all the good things about new Microsoft phone OS I eventually decided to give it a try and got me a Samsung Focus with Windows Phone Mango installed.
Boy was i pleasantly surprised.
And lets be honest here: its not that i did not like Android. Its good and mature mobile OS.
Its (kind of) Open Source and its has significant market share – not without good reason.
But using Windows Phone after Android was a really pleasent and refreshing experience. And there is no way I’m going back.
Disclaimer: before I continue i want to make few things clear: i don’t work for Microsoft, and i never did and probably never will. Everything i say on this blog is my personal opinion and not of my neighbors or my dog.
So now let me try to summarize the things i
personally love about my new Windows Phone:
- Superb UI - The whole phone User Interface is absolutely AMAZING! Its very simple and intuitive.
Yet at the same time it manages to stay slick and beautiful with subtle animations and transitions that do not annoy user but enhance the overall UI experience and make it fun and pleasant.
UI team did a great job – without any compromises. This is huge win for the platform.
- Live Tiles – When we speak of the User Experience I must mention the excellent Live Tiles concept.
Live Tiles are actually just animated squares on your home screen that represent applications or shortcuts for documents, contacts, URLs or any other static/dynamic piece of information that you can pin and arrange on your mobile ‘desktop’.
They are called Live for a good reason – they often change their content to show additional information – like number of emails in inbox for email application Live Tile, current temperature for weather app Live Tile etc.
I like this because it works great for the limited screen space of the phone – each of the tiles can show more info by flipping to display live content as it becomes available/relevant.
- The phone Just Works – From the practical everyday usage perspective the OS feels very natural and in 99% of cases works exactly as you think it will.
I have to admit that i never expected this from Microsoft but the whole Windows Phone is so well planed and designed that its never in the way when you are using it. One good example is how built-in music player works with non-standard headphones.
I tried plugging in the headphones from my old Android phone (it’s a different manufacturer) and I was able to control music playback by pressing the hardware button on the headphones, one press for play/pause, double press to skip current track. Yes I know this is minor and expected thing, but remember i found this out just by trying and expecting that it should work, and it ‘just worked’ even with non-supported headphones.
And when you use the phone you often catch yourself thinking ‘Wow this works just as I expected it to work’. After few moments like that and I was already bought.
- General Email experience is great! In my opinion its superior when compared to the built in email clients on IPhone or Android. And I don’t mean just MS Exchange email.
I’m a long time Google Mail user and i don’t use Exchange Server at all. So i was little worried how this will work with MS phone – but without any reason.Gmail works flawlessly out of the box without ANY additional apps or customizations. I just added my Google account and it worked. Even the push notifications worked without a single glitch. It also synced my Google Email Contacts and Google Calendar in expected way, no fuss.
- Built in keyboard is great! Unlike Android you cannot replace keyboard with 3rd party replacement, but there is really no reason for you to do so any way.
Default keyboard flawlessly supports multiple languages – I’m using English and Czech settings and i can enter all the Czech special characters very easily (they appear by long pressing the keys – as expected).
Actually I’m deliberately writing this post on the phone using that same keyboard just to prove the point (therefore don’t mind my spelling, please).
Copy and paste works very nice and another thing i like is the caret repositioning – just by long pressing the screen and then moving the caret around – i would love to see this working so nice on Android.
- Multitasking experience is very nice at least in the Mango Windows Phone version that i have.
Actually there is no real multitasking (if you exclude the occasional background data sync) because only one app is active at the moment. Others are ‘tombstoned‘ until you activate them.
But there is very nice illusion of multitasking that does the job pretty well.
By long pressing the Back hardware button you get on the screen very cool visual ‘Task Manager’ where you can see list of your app screens which you can scroll through and choose which app you want to activate now.
Simply brilliant.
On the other hand Android has true multitasking but list of running apps is hidden in phone settings and not so slick at all.
- Phone and SMS functionality – Simple, quick and feature rich yet not in your way when you want to do quick call or SMS somebody. And I could hardly say that for Android or IPhone. Very impressive.
- TextToSpeech and SpeechToText – Windows Phone has pretty decent voice recognition and when you use wireless or wired headsets you can set it up so that it reads you your SMS messages and you can reply to them over voice command and then dictate your answer. Have a look at this Windows Phone voice commanding demo if you want to know more. Yes i know its not Siri and it can be much better but even as it is now is quite usable if you are native English speaker.
- Marketplace – Even though there are less apps then for other platforms, there are enough of them and number is growing so time will fix that. But generally speaking Marketplace is already mature and useful.
- Social Networks integration is flawless. Again without any third party tools.
Facebook, Twitter, LinkedIn you name it. Its all integrated into People hub on the phone, so you can merge Facebook account with your SIM card phone contact to use it as his/hers account picture etc.
- do i need to mention that phone integrates nicely with desktop MS Office? OneNote, Word, Excel it works as good as it can get on a mobile device. I don’t use it too much except for OneNote but i think its huge win for corporate users.
- Built in Music Player and Radio app are great and i enjoy using them for they simplicity and stability. Not a single crash. Try that on android device and good luck trying!
- One big advantage of Windows Phone for .NET software developers especially for Silverlight folks is that programming Windows Phone is very familiar experience. Visual Studio has very good support for phone development and Emulator for Windows Phone is in my personal opinion much better and faster then Android one. (Off course one could say I am biased since I’m .NET developer but speed is something that is easily measurable).
If you have .NET background you can start app development or XNA game development in no time.
And the Marketplace is not overcrowded. Anyone mentioned word Opportunity?
- Another small thing that can be a lifesaver is the phone boot time.
My Samsung Focus boots in 20 seconds and its immediately ready to make phone calls or to write SMS.
My Android device was not even close to that and even when it was booted it remained to be slow for some time, probably until Micro SD card is initialized and until all the services are up and running.
Sometimes when you need to make an urgent call this can be really important feature.
- Every Windows Phone has built in Find My Phone feature that allows you (if you enable it) to see on the map where is your phone and to start the Ringing on the phone, Lock it or Erase it (off course it needs to be connected on the network for this to work).
This is useful if you lose your phone, or if it gets stolen. I’m not sure about IPhone but I know that on Android you need to install third party apps for this so this is another nice benefit of this platform.
- Battery Saver – if enabled phone automatically switches to power saving mode when battery is low (stops background sync for example) and your phone calls and SMS functionality continues to work until there is juice in the battery. I really like this because after all this is a phone device so my calls are more important then my Facebook updates
- Lock Screen on Windows Phone is beautiful. It is following the general minimalistic approach but still manages to show all the relevant information – calendar items, missed calls, messages, emails etc. If you are playing some music there are small controls there.
All in all very nice without unnecessary bells and whistles.
I could continue like this for some times because there are many other nice things that deserve mention.
But at the same time this is young phone platform so there are also some problems to be addressed.
The biggest issue I currently see for Windows Phone is that its not open enough for developers. Many OS features are exclusively used only by OS apps and by Vendors apps and everyday developers don’t have APIs to access them. Much has been written on the subject so I wont repeat it here, so read the post 10 ways to improve Windows Phone 7 if you are interested or WP7 Extensibility Rant from same author.
Typical example is that in 3rd party apps you cannot subscribe to some user invoked actions, for example there is no way for user to send url to non system application.
I dont see anyone benefiting from this kinds of limitations.
I really hope that Windows Phone team will address these problems and give developers more power.
There is WPDev User Voice Feedback site where all the requests from the developer community are listed – so there is hope this will change soon.
Another thing I don’t like is that for some settings there is no quick way of access.
For example WiFi or Flight Mode. In order to manipulate them you need to go to System Settings and choose menu item and then switch them on or off. Instead of this hassle I would like to have quick toggle button somewhere on the phone desktop.
Again this is something that would be solved if developers could have access to those settings to programmatically manipulate them.
I guess Microsoft do not want to open the Pandora’s Box by giving too much power to 3rd party apps, but I think they over did it in this case.
Right balance between opennes and system security on Windows Phone needs yet to be determined.
I would also love to see support for more languages for Text To Speech and Voice Recognition. Im not sure abut Microsoft plans but this would be a killer feature since i think voice is the way to go when it comes to the future of mobile platforms.
Wow this was longer post that I originally intended it to be!
I hope I was able to explain why I personally choose Windows Phone over other modern phone platforms.
Then again, this is all my personal experience and your mileage may vary.
It all depends on what you expect from your phone:
- If you want to pay for Brand, then simply buy IPhone.
- If you want phone that does everything you want and that is completely customizable yes often fails because its complex and bloated with unstable apps – get Android.
- if you just wont cool phone that dont stand in your way but does all things you really could need from mobile device – i recommend Windows Phone
I don’t really expect my phone to be Swiss army knife capable of EVERYTHING but failing to do anything efficiently.
I like minimalistic approach and simplicity so probably this is why I like Windows Phone so much.
But the war of the platforms is still on so don’t be surprised if tomorrow I choose another
Those were my 2 cents on the subject, let me know what’s your experience and what is your best mobile OS out there, and most importantly: WHY?
Lighthouse – Silverlight Unit Test Runner Project released
13Unit Testing in Silverlight? But you need Web Browser to do that!
No you do not! Ok maybe you do. But not in a direct way. I will clarify that later. Lets first go back in time to the root of the story:
Since the initial release of Silverlight i was really annoyed by the fact that Unit Testing had very slim support.
Even later when Silverlight Unit Testing Framework was introduced by Microsoft things became little better but still it was far from good.
You could create Unit Tests, but you had to start your Visual Studio in order to run them – eventually looking at the results of tests in your favorite Web Browser.
That ruled out one of the most important facets of Test Driven Development – running your Unit Test on Continuous Integration server, so that you can easily see when any of your Unit Tests are broken – in other words treating your Unit Tests equally as all your code, like you should.
Not to mention that there was no way to run Unit Tests from Reshaper! (oh boy don’t even let me get started on that one).
Can feeling of anger be a motivation for good deeds?
Very likely. I started by investigating what open source projects were available to fill these Silverlight TDD gaps.
And i did found few of them. But they were either too complex or simply did not work properly and failed to run tests from one reason or the other.
This is how i decided to create project Lighthouse – probably in same way how many other open source projects are born: to scratch an itch of single developer, for the benefit of the community
What is it for? What’s the Roadmap?
Lighthouse is envisioned as project that will host multiple tools that will allow Silverlight developers to do Test Driven Development much easier then before.
First tool in this project Silverlight Command Line Unit Test Runner has just been released on Codeplex website.
Lighthouse Command Line Unit Test Runner is console application that runs given Silverlight Unit Testing Framework Unit Tests and collects their results and saves them in known NUnit XML Unit Tests results file format on your hard-drive.
What can i expect?
The rule of the thumb goes like this:
YOUR SILVERLIGHT UNIT TESTS SHOULD BEHAVE EXACTLY THE SAME WHEN YOU RUN THEM WITH LIGHTHOUSE AS IF YOU ARE RUNNING THEM FROM VISUAL STUDIO OR WEB BROWSER.
In other words: If they failed in browser, they will fail when you run them via Lighthouse in completely same way (same timing, same exception etc) – and vice versa.
You can use Lighthouse to run tests in XAP packaged application or you can use it to run tests directly specifying your Silverlight DLL’s – it is very flexible.
Currently Lighthouse saves results in NUnit XML Unit Tests results file format so that means you can use it to run your Unit Tests in ANY Continuous Integration server that supports this format – CCNet, Team City you name it.
In future we will maybe add more output XML formats, but for start this should suffice.
Lighthouse Silverlight Command Line Unit Tests runner supports variety of command line switches so you can tweak it to work how you need it.
You can specify Tag Filter to run only certain test cases.
You can specify timeouts, output log file, output directory etc.
Make sure you visit the Lighthouse Command Line Test Runner Documentation page to get familiar with all the options.
In the future we are planning to develop Resharper plugin to run Silverlight Unit Tests, but you will here more on that when its ready.
And how does all this work?
Its much simpler to explain then it was to make it work:
In its essence, Lighthouse analyzes your XAP/Assemblies and modifies them in a way so that it can control the Unit Test execution. It then fires up a web browser instance in the background and start this modified Silverlight application and collects the results of all Unit Tests. Results are saved in XML file and everyone go home and live happily ever after.
What now?
Until future releases I’m asking all interested Silverlight developers to use Lighthouse and send us feedback or even join the Lighthouse team to make it better.
For the end check out this short video where Lighthouse Command Line Runner executes Silverlight Unit Tests from Sterling project:
http://www.youtube.com/watch?v=MhBarClpvp8
Stay tuned…
Microsoft Silverlight 4 Certification, is it worth the ride?
3Now some good news folks: I received the confirmation that I successfully passed the Silverlight 4 Microsoft Certification.
I was too busy to immediately brag about it and write a show-off post so I will here just quickly share my thoughts on how all this went before my brain moves these impressions to non-accessible-memory-banks-prepared-for-deletion.
First of all I must admit that I was pretty sceptical about the whole certification thing. I’m not big fan of certifications in general and I find it a bit overrated – who cares about fancy printouts people are framing on their walls. You either know how to do your job or you don’t and some poster with Microsoft stamp on it wont change that in any way.
But at that time (it was 3 months ago) Silverlight 4 Exam was beta test (you could take it for free) and in that period of time I was switching my corporate job to become a full time Silverlight developer so this seemed like perfect opportunity to test my knowledge – and I applied.
Honestly I did not had enough time to prepare for the test – even though I was planning to do so. Simply could not find the time or strength to study and eventually I had to go for a test without any especial preparations – all I had was my hands-on experience in writing Silverlight code and few books I have read on the subject along the way.
Naturally I expected lots of theory mumbo-jumbo in the test so I was sure I will fail-fast
But to my surprise the test was mainly pragmatic with questions from real-world Silverlight programming practice so it turned out I did pretty good after all.
It was interesting that some parts of the test required knowledge of MVVM pattern – just as if they asked me what to put there
All in all test turned out to be more serious and realistic than I expected so this is +1 for old Microsoft.
In case any one of you want to take the test and don’t know how to prepare I have two things I could recommend:
- read THE book: Pete Brown’s Silverlight 4 In Action – Its the best Silverlight book I have read so far and covers most of the knowledge needed for the exam.
- Mark Monster also participated in the Beta Silverlight 4 testing and blogged about how he was preparing for it so this is also worth reading.
All in all this was fun ride, and now I’m looking forward to Silverlight 5 Certification announcements















