29 Mar 2016

Creating better forms in Windows Phone apps

If you are a Windows Phone user you must know that filling in forms in apps is usually a real pain. There is no good way to move from one input to another or to collapse the keyboard. The whole process becomes a struggle, tapping outside the input fields to collapse the keyboard allowing you to scroll to the next input or to the submit button at the top of the screen, usually occluded by the keyboard.

The typical struggle to get to the last input fields and the submit button may look like this

There is no guidance on how to approach this. Take a look at the Store app on Windows 10 mobile, the perfect example of bad UI and UX directly from Microsoft and try review an app. You fill in the title of the review, then struggle to go into the review text input, you have to tap somewhere above the input to hide the keyboard, but not to hit the stars control … just an UX disaster.

23 Mar 2016

Using Tooltips to make better menus in Windows apps

If you use Windows apps with navigation menus consisting of icons, you may have noticed that some of those apps show you a text when hovering above those icons. This is a nice touch for the users, allowing them to quickly grasp the meaning of the menu icons without the need to click them or to expand the menu (if available).

Implementing this kind of hovers is really easy thanks to the ToolTipService that is available in Windows 8.1 and Windows 10 UWP. You can add <ToolTipService.ToolTip> with any element and include basically any XAML content as the tooltip. Here is a sample from the animation using a simple localized TextBlock

14 Mar 2016

Choosing an image from gallery or camera a bit better in Universal Windows apps

When developing Windows Phone apps you may encounter a use case when you have to allow the user to either pick a photo from the photos gallery in the photo or a take a new photo using the phone’s camera. One example of this may be the registration process when the user may choose a profile picture.

In Windows Phone 8.1, this task is quite simple, just use the FileOpenPicker. It allows you to pick a photo from the gallery or take a new photo. Just take a look at this animation showing how the users takes a new photo using the phone’s camera.

16 Feb 2016

Using Hockey App to distribute Windows Phone apps

Distributing Windows Phone apps to testers has always been a pain. The Private Beta in the Windows Store intended for this is not very flexible and it got much worse with Windows 10 (generating promotional code that can take up to 24 hours).

One of the better ways to solve the beta build distribution is using a service like Hockey App, that Microsoft recently acquired. To be able to use Hockey App (or any other service) you need to buy a $299 certificate from Symantec.

You then use the certificate to sign the XAP or APPX files of your app. Those signed binaries can be than installed on devices with the correct application enrollment token directly from Hockey App, bypassing the Windows Store.

One of my clients got persuaded to try this approach after some problem with the Windows Store Private Beta and bough the certificate. It took a week for the purchase to go through and another week to finally get the certificate in the correct PFX format from Symantec.

09 Feb 2016

How to handle localization strings provided by the client in a Windows Phone app

I currently work on a Windows Phone 8.1 app for a client with an interesting approach to app localization. They have a Google Docs sheet with all the localization string for the app in all the supported languages and a tool that converts this localization strings in to per-language versioned JSON files. The generated JSON files are kept in a git repository. The Android, iOS and now my Windows Phone app should have the git repository added as a submodule. When a new version of the JSON files with the localization appear in the submodule, the app should use them.

Deciding the localization approach

In the old days of Windows Phone 7 and Windows Phone 8 I would simply write an utility that reads the newest version of the JSON localization files and generate a RESX file for each language. RESX is XML format that is simple to generate. If you had a localized string with a key say Game, you would put it everywhere when the localization of the word game was needed. Simple

In Windows Phone 8.1 (and 10) you should use RESW files for localization. This is the new x:Uid approach that, in my honest opinion, really sucks. It forces you to duplicate string if you use I string in multiple places, there is no design time support, you never know what UI element are localized and what you forgot to localize. Simply put, it is a mess. This approach is not usable at all with the string client provides.

21 Dec 2015

A week with Microsoft Band 2

About a week ago I got a Microsoft Band 2. I really wanted to try out the device, because this second generation does not look as bad as the first one, there are new sensors added and generally it should be a visible improvement over the original Band. I have been an iPhone users for about two years now (approximately the time since last good Windows Phone device was released), currently using iPhone 6s so I was also curious to know how well the Band 2 works with iOS. This blog post sums up my impressions after a week of using the Microsoft Band 2 with my iPhone.

Expectations and habits

First I have to state that I am not a notifications junkie. I do not like being interrupted all the time. On my phone, only phone calls and SMS ale allowed to notify me with a sound and stay in the notifications center. Other few selected apps like Outlook, Twitter, Messenger, Sunrise are allowed to use iOS badges on my phone, just to let me know that there is a Twitter message or something I may be interested in. Other than that, no notifications for me. I guess I am not a typical user when it comes to notifications.

As you may have already guessed, I was interested in the Microsoft Band 2 primarily as a health device, not as a smartwatch or distractions device. My expectation and goal is to move and exercise more and sleep better, not to immediately know about every new Facebook post (I do not even have the Facebook app installed).

18 Dec 2015

Mobilize.net: Converting Windows Phone 8 apps to UWP? Not really

When Microsoft announced the Windows 10 developer platform, they also announced bridges to make porting apps from Android, iOS and Web easier. Those bridges are now either dead (Android) or unusable (iOS) but there is another tool that can be considered a bridge left. It is called Mobilize.net Silverlight Bridge and it is not from Microsoft. It promises converting existing Windows Phone 8 (Silverlight apps) to the Universal Windows Platform. Considering the majority of apps in the Windows Phone Store are Windows Phone 8 apps and the fact that Android and iOS developers do not really care about Windows, Mobilize.net seem to be the most useful of the bridges, because there is no easy porting apps from Windows Phone 8 to UWP, just rewriting. So I tried it out.

Mobilize.net is currently in technical preview. After you download and install it, it integrates into Visual Studio 2015 and there is a new context menu for Windows Phone 8 project, allowing you to convert them to UWP apps. If you use it, you get a dialog windows and a conversion process that will fail most of the times with a strange error. At least for me it did.

07 Dec 2015

Detecting gestures over WebView on Windows Phone

If you develop Windows Phone apps, you surely had to use the WebView component at least once. Any you must have realized, that it kind of sucks. One of the problems is that it swallows all the gestures and manipulation events. This means you cannot put it into a Pivot, you cannot detect swipe left or right events to navigate to next or previous article .. or can you?

In a recent project, I had to implement exactly the mentioned functionality, swiping between articles displayed in a WebView. I did some research and I could not find any solution. So I had to get creative and I find a way involving JavaScript.

25 Nov 2015

The sad state of DVLUP (MS Tech Rewards)

If you are a Windows Phone developer you must know DVLUP. It was a program for developers developed by Nokia. The idea was simple. Do Windows Phone development related challenges, make your apps better thanks to them, get points, exchange points for rewards. Sounds good, does it not?

Interesting, but location dependent

The problem with DVLUP was that it was location dependent. It opened in my countries maybe two years after US and developers from other “more important” countries could participate. The challenges were also location dependent, showing me only a small subset in my country. But they were interesting. They made me implement some new stuff into my apps that I would not do otherwise. And I got points for doing them. When I wanted to exchange the points for some rewards, there were not that many available in my country. No phones or other hardware like in the US. A Steam gift card was the only useful think that I could get. But I did not mind, I liked doing the challenges.

And then Microsoft bought Nokia and slowly DVLUP turned into MS Tech Rewards.

23 Nov 2015

Going static: From Wordpress to Hugo

As you may have noticed, static site generation is the next big think. When I created this blog a few years ago I choose Wordpress, because it seemed like a good choice. Now I have grown tired with updating plugins, exchanging broken plugins for alternative ones and so one. So I decided to try to go the static site generation route to make the blog easier to maintain.

Jekyll? Octopress? FsBlog? Hugo!

There are quite a few static site generators out there, so choosing the right one is quite a challenge. Jekyll or Octopress seemed like the obvious choice. Jekyll requires Ruby, which is ok even on Windows, but Octopress had a few dependencies that I did not manage to get working on Windows. FsBlog seemed interesting, especially for me being a F# enthusiast, but frankly it is not yet very usable. So I choose Hugo.