Contact Us

Use the form on the right to contact us.

You can edit the text in this area, and change where the contact form on the right submits to, by entering edit mode using the modes on the bottom right. 


Coding, designing and general software bumf. The blog and website of Martin McGirk, a software engineer from Edinburgh.


A blog about software and my life

Planning my first Windows Phone App - Part 1

Martin McGirk

App development starts on paper before it gets anywhere near my 3 screens

About a month ago I paid $19 and bought myself a years subscription to the Windows Phone Dev Center. I've been toying with the idea of becoming an "app developer" in the loosest possible sense of the word for quite a while now, and with the Dev account on sale and Windows Phone 8 finally looking like it's gaining (some) traction, I thought why not, I'd give it a try.

Why Windows Phone? Several reasons.

  1. Windows Phone 8 apps are written in c#, and since I'm already a c# geek there's no new language to learn. 
  2. The Windows Phone App Store is pretty devoid of apps right now, so there's less competition as I get started.
  3. I liked the look of the platform and the Lumia 1020 had such a good camera I simply couldn't resist buying one - developing for the 1020 is as good a justification for that purchase as any.

My first app will be a tool to help people find and enter online competitions. People love to do this kind of thing apparently, and I previously wrote about a winforms app I built as a prototype of the idea. This means I already have some code to start me off in the right direction, so that can only be a plus. 

By failing to prepare, you are preparing to fail.

My first instinct as a programmer is always to dive straight into Visual Studio, however, before I get too involved in coding my app I have to work out what it is I want to build exactly. The surest way to fail on a project is to not design it properly and I have no desire to mess this up. The first thing I do when I'm formulating a software design is to sketch it out on paper. This means sketching the system architecture, how I want it to look, and writing up ER diagrams for my objects.

Below are some rough v1 sketches I did for how my app will hopefully look. They conform to the Windows Phone style guidelines and kind of show the flow through the app. I want a user to start seeing all competitions, I want them to be able to swipe through various filtered categories of competitions and I want them to be able to press on a competition and end up in a browser within the app able to enter the competition.

The main screen

More categories

The drill through screen

That's the app I'm planning in a nutshell. A series of several lists of competitions, scraped lovingly from the web and sanitised such that a user can easily see what each competition is for.

I'll want to keep the bandwidth of the devices running the app to a minimum, so the web scraping and processing of lists will all be done "in the cloud" in a web service I build to run on something like Windows Azure or (Mono permitting) Digital Ocean. My working theory is that I'll have to run web scraping on a timer, in some kind of background thread, and have that thread push any competitions I find to a data store of some kind - probably a cloud hosted SQL Server Database. I envisage my final server side set up to look pretty similar to the following.

The basic components of my service

And my final system to look pretty much like this:

The basic idea of the system

In part two I'll continue the design discussion and get into more detail as to how I intend to implement this.