Conference Call

The Conference Call app allows you to select an invitation for a conference call from your calendar and dial into the call with one press of a button.

If you encounter an invitation that cannot be parsed properly please forward it to us and we will update the app accordingly.

258x67_WPS_Download_cyan

Converting event based async calls to Task

Working on a new WinPhone app the other day I encountered an interesting problem which made me scratch my head quite a bit. I needed to read the list of appointments from the phone’s calendar. No big deal, right? Using the MVVM pattern I created a separate view model for my page and a service where I wanted to put all my phone specific stuff. The initial signature of my method was

public IEnumerable<Appointment> GetAppointments();

When trying to implement the method I found out that the calendar API uses the old style event based async pattern (EAP). I tried couple of different methods to wrap the async call and the result from the event in a single method call and failed miserably. After that I tried changing the method to the new async/await style. I knew I had to return a Task<T> so the signature of my method became

public Task<IEnumerable<Appointment>> GetAppointments();

But I still did not know how to make it work. And then I finally came across the TaskCompletionSource class that already solves my problem:

public Task<IEnumerable<Appointment>> GetAppointments()
{
    return Task.Run(() =>
    {
        var tcs = new TaskCompletionSource<IEnumerable<Appointment>>();

        var appts = new Appointments();
        appts.SearchCompleted += (o, e) =>
        {
            tcs.TrySetResult(e.Results);
        };
        appts.SearchAsync(DateTime.Today, DateTime.Today.AddDays(1), "appointments");

        return tcs.Task;
    });
}

Beautiful, isn’t it?

Multi-platform development with c#

The life of the mobile developer today is not easy at all. The market is segmented with at least 3 major players (counting Microsoft, not counting Blackberry). Clients/users want native look and feel and native performance on each platform. Tools like PhoneGap promising write-once-run-everywhere with html5/css/javascript unfortunately just don’t deliver on that promise.

In the recent years Microsoft, knowing that it is not quite winning the post-PC battle is trying to lure the developers to write apps for winphone/win8 by providing the best dev tools and a relatively easy path (with the partnership with xamarin) to porting apps from android or ios to winphone/win8.

Besides code reuse, there is another also important aspect of mobile (or not) development: using a modern and powerful language. In the recent years Java is trailing behind c# (catching up but still not there) and objective-c is so not in the same league as the other two that apple had to introduce a whole new language to replace it few month ago. And c# is almost everywhere – on the client, on the server, on a device, in the cloud – devs can use the same skills and the same tools for any type or size project. (in all honesty that mostly applies to javascript too – with the exception of the nice tools part).

So in the following days I’ll create a small demo of a LOB application on all mobile platforms using visual studio, c#, xamarin, an mvvm library, etc. My goal is to have a form and call a service with the data from the form writing as little code as reasonable and reusing it as much as possible.

#dvlupday in San Diego

I attended a DVLUP day in San Diego this weekend. The event started pretty rough with an ex-military security guard yelling at poor unwoken devs to order in lines before 8:00 AM. Besides that it was a lot of fun. I quite miss the energy of those events. Over a hundred devs sitting in a room in the Nokia office in San Diego, laptops open, coding… Several good presentations most notably on appstudio, unity and maps.

I worked on a video poker app for windows phone. I started with a code from a poker kata we did at work few weeks ago. I also had a control for a playing card that flips when tapped with a nice animation. And I build a working video poker game in less than 8h and it turned out pretty nice. I’m going to submit it to the app store in the following days for a DVLUP challenge.

I’m also planning to create an universal app based on that code base trying to reuse as much code as possible between winphone and win8 apps.

Update (5/5): the app just got published, download from the link below.

258x67_WPS_Download_cyan

Nokia Lumia 800

Yesterday I received my brand new and free Nokia Lumia 800. Any color that you like as long as it’s black… Euro power adapter. Good but not great packaging (my palm pre had better packaging then any other phone I’ve seen 2-3 years ago). Went to the local AT&T store and got my SIM card cut. The girl was very friendly and she was excited to see the phone that is not for sale yet… The whole trip took not more than 15 minutes and I was in the game…

First impressions: compared to my old samsung focus the nokia is thicker and heavier, the screen seems slightly smaller and is less bright. All the buttons are on the right-hand side as opposite to the samsung that has buttons on both sides. The phone came with a plastic cover which is a nice touch. It’s faster than the samsung as has a nice solid feeling.

Somehow I expected that after I login with my live ID all my apps and data will be there from the cloud. That is not the case. You login and then nothing. After setting up my google and work accounts contacts and calendars were synced. Then connected to Zune, installed some updates and had to setup syncing for my music, podcasts and pictures. After about an hour things were looking a bit better. Then I had to reinstall all my apps. Maybe not all but those 15 or 20 that I use often. Overall not a great experience. I hear another company does that better and sells a lot more phones…

Microsoft store will be selling that phone for $900 on Feb 14th. I don’t know what are they thinking. It’s nice but not $900 nice. Can’t wait to see the Lumia 900…

QR Business Cards

QR (quick read) barcodes are a quick and easy way to share information between mobile devices. “QR business card” allows you to create several different business cards with different information in them. For example you can have a personal and work card as well as one with just your e-mail address. To share a card tap on the card to open it and then go to the page with the QR barcode. Let your friend scan the barcode with his mobile device. To receive a card on a Windows Phone 7 device open Bing and tap on the Visual Search icon. Scan the QR barcode and import it in your contact list. On iPhone, Blackberry or Android use an appropriate QR reader application. Never run out of business cards again!