Krav Maga for Windows Phone

5/27/2012
Krav Maga for Windows Phone

When I go training I often take notes afterwards about new techniques, or things I might improve on. It's the usual story - pen and paper aren't always available, but my phone is. So I threw this app together. It includes a training schedule, and also shows the club's Twitter feed.

I'm changing the app to work with any martial art, and it's an interesting exercise. The data model below highlights the shortcomings of LINQ - unless you're using SqlMetal you spend more time coding associations than writing the app. If you DO use SqlMetal you spend your time shoe-horning the generated code into your project.

Damned if you do, damned if you don't, so I decided on a hybrid collection instead. It uses custom events to trigger business rules and CRUD operations, rather than INotifyPropertyChanged.

Data Model

Another interesting aspect of the project was designing the club locator. If the app is going to be useful world wide, then users should select clubs by country, then region and finally a town or city within the chosen region. That scenario is simplified, but does highlight the need for a list of cities.

I got the data from GeoNames.org. The first challenge was to load the GeoNames table from AllCountries.zip into SQL Server. That meant converting from UTF-8 to UTF-16. Next step was to extract all cities (entries with a PPL* feature code) with my minimum population threshold into a separate table, and create references to the appropriate region and region to country. The final step was to serialise the data into a custom binary format (TLV) to shrink the size of the data that goes over the wire from the server to the phone.

A good example of how a one-week hack runs into a 6 week project that's still not in the app store.


Home | Blog | Photos | Contact | About

Wittenburg.co.uk and all content copyright 1995-2018 by Michael Wittenburg, unless otherwise stated.
All content on this site is licensed under the Creative Commons license, unless otherwise stated.

Wittenburg.co.uk uses a single session cookie because it's required by the tech underlying the site (Microsoft ASP.NET). The cookie stores no information and seves no functional purpose.