Categories
Uncategorized

Windows Phone App Challenge #2: Area Gas Prices

app challenge - area gas prices

Last night, while picking up a Windows Phone that I’d loaned to a developer for the weekend so he could give his app a proper test on a real device instead of the emulator, I decided to fill up the gas tank on the Deathmobile, named after the car in the movie that inspired my academic career – Animal House.

(Yeah, it’s 12 years old, but with only 110,000 km on it – living in the city, doing lots of bike commuting and living right by a subway station has a lot to do with the low mileage.)

The gas station was in Vaughan, a suburb just north of Toronto, and regular gasoline sold for CAD$1.05 a litre (for my American readers, that’s USD$3.91 a gallon). As I got closer to home, I noticed that the gas stations were charging CAD$1.00 a litre, or USD$3.72 a gallon. I’d pumped 40 litres of fuel into my car, and had I waited until I got closer to home, I could’ve saved two dollars. For me and this one instance, that’s a minor loss, especially since I only have to fill my tank once every two or three weeks. For someone who does a daily commute, that sort of savings adds up.

However, this incident gave me an idea, and hey, two bucks is a small price to pay for inspiration. How about a phone app that lets you know whether you’re getting a good deal at the gas station?

Gas Price Sites

There are sites like GasBuddy.com, a network of just under 200 city-specific sites that track gas prices. According to their registration page, gas prices vary by 10 – 15 cents a litre (30 – 50 cents a gallon) within a city. The site boasts a membership of 700,000 people sharing gas prices in their area and acting as gas price data collectors and reporters. Each GasBuddy city’s site displays the latest prices reported for that city, along with the handle of the member who posted the price.

Here’s a screenshot of the Toronto-specific GasBuddy site, TorontoGasPrices.com:

torontogasprices site

It’s one thing to cruise this site on a nice big monitor at home or a laptop or even a netbook. On a phone, it’s a bit of a challenge to read:

torontogasprices wp7

Yes, I know you can always use pinch zoom, but then you’re making the user do a lot of scrolling and paging, just to get an answer to a simple yes/no question: Am I getting a good deal at this gas station?

A mobile app that answers this question should adopt the Windows Phone 7 design philosophy of “Glance and Go”. It should give you the answer in a form like this:

gas app example

Getting the Info

For the app to work, you’ll need at least two pieces of information:

  • The area where the user is located
  • Gas prices for that area

Ideally, you’ll want to use GPS for getting the user’s location. You can access the GPS on Windows Phone 7 through the Location service, which lives in the System.Device.Location namespace. There’s pretty good coverage of it in the documentation, and I’ll post some code examples in a later article. You may also give the user the user the option of looking at gas prices in other cities, especially nearby ones.

Getting the gas prices for a specific area is a little trickier. You have a couple of options, listed in order from most to least feasible or realistic:

  1. Get the gas prices from an XML feed. Parsing it is the easy part – the XElement class of the System.XML.Linq namespace makes it pretty easy. Examples abound all over the ‘net – check out Scott Guthrie’s really simple WP7 Twitter app code for an example, and I’ll post an example in a later article.

    As for the feeds themselves, I know that GasTicker.com provides feeds for a number of North American cities. I have no idea how accurate they are – you may have to do a little field research, comparing their reported prices to actual prices in your town.

  2. Scrape the gas prices from a site that publishes them. Once again, the technical part is easy – the DownloadString method of the WebClient class in the System.Net namespace, given an URI (in either string or URI object form), returns a string containing whatever’s there. Once you’ve got the string, it’s up to you to apply whatever string-crunching magic you want to extract the gas price information from it.

    The trickier part is whether the site from which you’re scraping the prices minds. These sites often make their money from ads, and by scraping, you’re effectively bypassing them. Perhaps you can work out a deal with a site, but if you’re doing that, they might be able to give you the data in a more convenient form like an XML feed, and then you can go to method 1.

  3. Have an army of volunteers watch gas stations all over a given area like a hawk. They can then feed the data into some central repository – perhaps an XML feed that they update – and your app can retrieve that data as needed. You can scale this down and even go “hyperlocal” by focusing only on gas stations in your neighbourhood or even just one gas station.

There’s your challenge. I’ll write a follow-up article with example code, but in the meantime, fire up Visual Studio and get on it! If you write an app and submit it to Marketplace, drop me a line and let me know.

Previous App Challenges

pomodoro timer

This is the second in a series of Windows Phone 7 App Challenges, in which I present ideas for apps for Windows Phone 7 developers.

In the previous installment in this series, I presented users with the idea to write a timer that people could use for the Pomodoro Technique, a very simple but very effective method to boost your personal productivity. You can read more about it (and see some code, too) here.

This article also appears in Canadian Developer Connection.

Categories
Uncategorized

We’re Looking for Canadian Windows Phone 7 Apps

canadian wp7 apps

Windows Phone 7 hits the shelves of Bell, Rogers and Telus on November 8th, and we want to make sure that there’s a strong showing of apps written by Canadian developers in Marketplace when that happens. If you’re a developer based in Canada with an app that’s ready or near-ready, please contact me (Joey deVilla) via email as soon as possible! There are some things that I can do to help speed up the submission process that wouldn’t otherwise be available to you.

This article also appears in Canadian Developer Connection.

Categories
Uncategorized

31 Days of Windows Phone 7

"31 Days of Windows Phone 7": Windows Phone showing the calendar for the month of October

Keep an eye on Jeff Blankenburg’s blog for the rest of the month! Every day in October, he’s posting an article on Windows Phone 7 development in a series called 31 Days of Windows Phone 7.

As of this writing, he’s posted these articles:

Jeff talked about his “31 Days” series (previous;y, he did a 31 Days of Silverlight series and 28 Days of Did-You-Knows in Technology one as well) on show 5 of Silverlight guru Jesse Liberty’s podcast.

This article also appears in Canadian Developer Connection.

Categories
Uncategorized

Windows Phone App Challenge #1: The Pomodoro Timer

app challenge - pomodoro timer

Introducing the Windows Phone App Challenge

“I’d love to write an app for launch,” a number of people have told me, “but I can’t think of an app to write. Got any ideas?”

Sure. I have lots of ideas. A few of them are even good (and won’t get anyone put in a compromising position, thrown in jail, or both)! My plan is to take those good ideas and present them to you, the potential Windows Phone 7 developer, as a challenge to turn those ideas into apps and submit them to Marketplace. You can make them available for free or charge for them, and I’ll ask for only one thing: email me and let me know that you’ve submitted an App Challenge app (that goes double if you’re a developer based in Canada)!

Here’s the first App Challenge: Build a Pomodoro Timer app. It’s a simple app, you can write a basic one in a hurry, but if you dress it up a little, you just might be able to sell it and make some decent coin. Sound tempting?

The Pomodoro Technique

pomodoro technique bookWhen you multitask – and a lot of programmers do – you might think that you’re getting more done, but in the end you end up with a set of half-finished tasks half-heartedly done. The way to really get stuff done and get into the much-vaunted “flow” state is to focus on a single task at a time.

The problem is that our brains aren’t evolved for doing that sort of thing for really long stretches. Being able to focus on a single task for hours would’ve gotten us killed by sneaky predators or the other horrible things that Mother Nature came up with in her infinite wisdom and even more infinite sadism. The tendency to get distracted by other things is a great safety feature in the wild, but not so useful in the white-collar 21st century world.

The Pomodoro Technique is a way to be productive that also takes both the need to focus and our limited attention span into account. Francesco Cirillo came up with the idea in the late 1980s and formally defined it in 1992, and there are a lot of people, Yours Truly included, who use it to get stuff done. Here it is in a nutshell:

  • Choose a task that you want to get done. It can be anything: writing some code, filing your expenses, answering your email, filling out TPS reports, cleaning the garage – anything that you need to get done.
  • Set a timer for 25 minutes. Francesco Cirillo used one of those wind-up kitchen timers shaped like a tomato, which in Italian is pomodoro, from which the technique got its name.
  • Do that task, and only that task, until the timer goes off. Focus completely on the task.
  • When the timer goes off, you have completed a Pomodoro! Take a five-minute break. Stretch. Walk around. Get a drink of water.
  • Repeat. You can either continue with the same task, or pick another one. Whatever task you pick, you must completely focus on it for 25 minutes.
  • Every 4 Pomodori (that’s the plural form), take a longer break. You’re only human.

That’s it!

Here’s why it works:

  • 25 minutes doesn’t seem so bad. Ever looked at a pile of work that you had to do and felt the fingers of icy dread wrap around your heart? That’s because you’re picturing the hours, days, weeks, months and even years that it will take. This is the sort of thing that leads to procrastination, and take it from me, procrastination will screw you up in so many ways. Looking at work in bite-sized chunks make it easier to deal with, in the same way that breaking down a program into bite-sized blocks of code makes it easier to deal with.
  • It’s simple. The more complex a working methodology, the less likely it is that you’ll follow it. Pomodoro is dirt easy — it takes only a minute to explain (and less than a minute if you talk quickly), and the only technology you need is a countdown timer that can measure a 25-minute interval.
  • It harnesses the most powerful force in the universe: compound interest. (Okay, you can argue that love is the most powerful force in the universe, but for the moment, let’s say it’s compound interest.) Compound interest is the result of tiny gains made over time. Each interest payment is almost too small to notice on its own, but collectively, and with enough time, the total interest is huge. Every Pomodoro is a compound interest payment in your “stuff done” bank, and over time, it really adds up!

If you’d like to find out more about the Pomodoro Technique, you can check out the book by its inventor, The Pomodoro Technique, which is available free of charge in electronic form from the Pomodoro Technique site. You might also want to look at Pomodoro Technique Illustrated, written by Staffan Noteberg and published by the Pragmatic Programmers.

Your Challenge: Build a Pomodoro Timer App

The 25-minute countdown timer is incredibly important to the Pomodoro Technique. You can’t truly practice Pomodoro without it; you’d have to occasionally check the time, which takes away from the one thing you’re supposed to do during a Pomodoro: focus.

Here’s the basic user story:

  • The user picks a task that s/he wants to focus on during the Pomodoro sprint.
  • The user starts the timer and begins working.
  • 25 minutes later, the timer makes some kind of sound signalling the end of the sprint.

Because I’m a nice guy and want you to succeed, I’m going to give you the starting point for a basic Pomodoro timer and leave it to you to finish it.

pomodoro app

It’s past any sane person’s bedtime as I write this, so I decided to save myself a little trouble and use Nigel “Compiled Experience” Sampson’s Minutes to Midnight app as the basis for my dirt-simple Pomodoro timer example. I left the XAML pretty much as-is; here’s the underlying code:

using System;
using System.Windows;
using System.Windows.Threading;

namespace Pomodoro
{
  public partial class MainPage
  {
    private DispatcherTimer timer;
    private DateTime endTime;

    public MainPage()
    {
      InitializeComponent();
      Loaded += OnLoaded;
    }

    private void OnLoaded(object sender, RoutedEventArgs e)
    {
      timer = new DispatcherTimer
      {
        Interval = TimeSpan.FromSeconds(1)
      };

      timer.Tick += OnTick;
      endTime = DateTime.Now.AddMinutes(25);
      timer.Start();
    }

    private void OnTick(object sender, EventArgs e)
    {
      var timeLeft = endTime - DateTime.Now;

      Countdown.Text = String.Format("{0:D2}:{1:D2}",
                         timeLeft.Minutes, timeLeft.Seconds);
    }
 
  }
}

The Minutes to Midnight app counts down the hours, minutes and second to midnight , which is pretty close in spirit to what a Pomodoro timer does. It uses a DispatcherTimer object and its Tick event to update the display of the time remaining to midnight every second.

I simply took the app and made the following changes:

  • Changed the namespace to Pomodoro
  • Declared a new instance variable, endTime, which would store the time when the Pomodoro should end.
  • In the OnLoaded event handler, I initialized endTime to the current time plus 25 minutes.
  • In the OnTick event handler, I:
    • Changed the calculated value of timeLeft so that it was equal to the amount of time remaining until the end of the Pomodoro.
    • Changed the formatting of the displayed time so that only the minutes and seconds remaining were shown.

Now it’s your turn! Can you:

  • Make the timer stop when the 25 minutes is up?
  • Make it play a sound when the 25 minutes is up?
  • Add controls so the user can start, stop and reset the timer?
  • Let the user type in the name of the task that s/he is supposed to focus on during the Pomodoro?
  • Store the number of achieved Pomodori and catalog them by task type and date?
  • Give the user a “medal”, “trophy” or “achievement” for completing large numbers of Pomodori?
  • Break away from the digital readout and make it look and feel more like a tomato-shaped kitchen timer? (See this article for inspriation.)
  • Make the code less like “example” code and more like “real” code (for instance, moving the main program logic out of the event handlers)?
  • Add a screen or two that explains the Pomodoro Technique?
  • Come up with other enhancements?
  • Write and submit a finished, polished Pomodoro timer app and submit it to Marketplace in the next couple of days?

There’s your challenge! Go write a Pomodoro timer app, submit it to Marketplace, and don’t forget to let me know about it!

This article also appears in Canadian Developer Connection.

Categories
Uncategorized

Peter Henry on Submitting a Windows Phone App to Marketplace

Anatomy of a WP7 App Submission

Ottawa-based developer Peter Henry (you might have seen him speak at TechDays Ottawa last year, and he’s also presenting this year) wrote a simple Windows Phone 7 app called miFlashlight, submitted it to Marketplace and documented the experience for the benefit of his fellow programmers. When it comes time for you to submit an app to Marketplace, be sure to have Peter’s article, Anatomy of a WP7 Application Submission, handy – it’ll help!

This article also appears in Canadian Developer Connection.

Categories
Uncategorized

“Smiles” for Windows Phone 7

Smiles is a matching-puzzle game developed by London, Ontario-based Mike Kasprzak that you’ll probably see in Windows Phone Marketplace. It’s got the gameplay, graphics, animation, sound and music that you’d expect from a puzzle game, and unlike most puzzle games with falling objects, rotating the phone changes the direction in which the pieces fall (this can get you out of a tight spot). This video shows Mike playing Smiles on a Samsung “Taylor” prototype Windows Phone 7 device that we loaned him so he could properly test it.

Mike got the opportunity to deploy his app to a real live Windows Phone (hard to come by – you could cut off both your pinkies and still have enough fingers and toes to count all the Windows Phones we have) and the opportunity to show off his app at the Windows Phone 7 blogger night in Toronto and here on this blog because he contacted me. If you’ve got a Windows Phone 7 app that’s done or nearly done, Drop me a line before October 18th and let’s see what we can do to make you a mobile app rock star!

This article also appears in Canadian Developer Connection.

Categories
Uncategorized

Meet Some of Your Fellow Canadian Windows Phone Developers

Last month, we held a little party where we invited Toronto-area tech press and bloggers to meet some local Windows Phone 7 developers and see what they were working on. This video was shot at the party and features Yours Truly and the developers:

The developers featured in this video are:

  • Mark Arteaga: Owner/developer at Redbit Development. He’s been building Microsoft-based phone applications since the Windows Mobile days, and he’s got some pretty interesting apps lined up for some pretty interesting customers – I’m sure you’ll see them soon. You may have seen him (or you will see him, depending on when you’re attending) at TechDays, where he’s doing a twopart series of sessions on WP7 development with Silverlight.
  • Mike Kasprzak: Owner/developer at Sykhronics and the guy behind Smiles, a very charming, very addictive puzzle game.
  • Barranger Ridler: Indie developer who built Where’s Timmy?, an app that tells you which Tim Hortons are closest to you, and the guy who wrote a WP7 app that won the August Twilio API contest. He now works with Mark Arteaga.
  • Alexey Adamsky: Based in Ryerson University’s Digital Media Zone and working with Alex Yakobovich, he developed a 3-D version of Sudoku. If you thought Sudoku was a lot of work in two dimensions…
  • Shawn Konopinsky: He’s with Nascent Digital and built Songbuzz, a social music sharing app.

Windows Phone displaying the text "Got an app? Contact Joey before Monday, October 18"

We’re very happy to showcase the work of Canadian developers building Windows Phone apps. Want to join the ranks of the developers in the video? Got a Windows Phone 7 app that’s done or nearly done? Want to get a head start on everyone else trying to submit an app to Windows Phone Marketplace? Drop me – Joey deVilla – a line before Monday, October 18th!

This article also appears in Canadian Developer Connection.