Bitesized tidbits for building Modern (Metro) apps.
Windows 8.1 and Windows Phone 8.1 both have this really great theme support that allows you to use ThemeResource as a xaml type, it means if the theme changes, anything using that will change its theme too. It’s actually very cool. What’s not cool though is you can only have two themes (Light/Dark). What if you want other themes? Yes, you can override both of those themes to show your own custom theme, but what if you want a third? A fourth? What then?
Well I’ve created a little helper that helps to alleviate that, and also means that you can swap themes on the fly without having to restart the app. Pretty cool, huh.
Pocket is a brilliant service that allows you to essentially bookmark links and (as the old name suggests), read it later. Pocket has no official app on the Windows Phone platform, but there are more apps coming from other sources (including my own Squirrel).
One of the things each of the apps has in common (other than being a Pocket client), is the ability to add links to Pocket from other apps. This is done using a custom URI scheme and works as expected. The only problem is, if you’re writing an app that you’d like to add Pocket support to, what do you do? Do you pledge your allegiance to one app? What if your users are using a different Pocket app? What then?
This was a problem I decided to address whilst writing my own Pocket app.
Over the weekend I was looking at some Rotten Tomatoes stuff for Media Browser 3, and I noticed they had an API for getting the movie information (including reviews and fresh ratings). It’s been a while since I last did a PCL and to avoid any withdrawal symptoms, I created a new project.
For those that don’t know, Rotten Tomatoes is a review aggregator for movies that gives a “freshness” rating based on the reviews that have been done about a given movie.
While I was working on In Two (a great game by the way, you should check it out), I was working on one feature that allowed the user to set their profile picture, which involved letting them either choose a photo from one of their many, many albums, or taking a new picture. Most of the development of that game was done using the emulator, which was no problem, I thought, as I knew the emulator came with stock images for you to use. But every time I went to choose an image from my app, all I had was the empty camera roll folder, no stock images.
One of the cool things about working on something that in turn works with a new platform is that both parties are looking to help each other out. And such is the case here. After releasing ScoreoidPortable, I was contacted by the creators of Scoreoid thanking me for my library and also giving me access to some new methods that are new and, as yet, undocumented on their wiki. The documentation for them is coming soon, but they were keen for them to be added to ScoreoidPortable.
A while back I was working on a project that allowed me to actually look at, and use, the Live SDK in order to access information on SkyDrive. I was surprised to find just how hard it was to use the Live SDK, so as part of building the main project, I also built a little helper for using the Live SDK.
For a game I’ve been writing the last few weeks, I’ve been using an online scoring system in order to keep a track of people’s best scores whilst playing the game. What I’ve been using is Scoreoid, which is a cross platform scoring platform. It’s actually pretty easy to get yourself set up with Scoreoid, but that’s not the purpose of this post.
Their API is a REST based one and has a pretty expansive list of calls, from player creation, to score creation to leaderboards, etc. Initially, I looked to see whether anyone had already created any kind of helper library for Scoreoid and found Scoreoid for Windows 8 which I had to tweak in order to use it in my Windows Phone game. Unfortunately, the number of methods it had implemented was somewhat limited, I guess Rudy only implemented the ones he needed, so I found I was going to be adding a lot to his existing code base. In the end, I decided I’d write my own version and have the library how I wanted it (naming conventions etc).
So that’s what I did.