Devsta Day 1: Collaboration, WCF and Windows Mobile

Update: I told you if I badgered Jarred he'd start blogging. It turns out that the networking with Mobile Device Emulator is a pain to get right as he's having issues too. I'm just jealous because he has been authorized to spend time on our project at work and my project is too busy. What am I saying, it benefits us both. Go man go!

Alright so I did actually manage to get up at 6 o’clock this morning which meant I had 8 minutes to stumble around looking for coffee before the Devsta competition brief went out. The theme is “Old School, New Cool” which totally didn’t fit in with any of the plans we had.

First up, who is this “we” I speak of? Obviously one of them is me. If you don’t know who I am and are just searching the internet for the term Devsta on the off chance that one of your competitors is going to reveal there whole master plan, here is a brief summary: My name is Mike and I code for fun at the Web Solutions Centre for Fujitsu Australia which fits in well because they happen to pay me for it.

The other half of “we” is Jarred, a friend and colleague of mine. Jarred has as much enthusiasm with new technologies as I do (which I like) and he argues with me all the time (which I like more). He always seems to know a little bit about every random technology I throw at him and when you scratch the surface, bugger me if he can’t go deep on any of them too. He doesn’t have a tech blog at the moment but I’m sure if I badger him enough he’ll get one and I’ll be back here updating the post with a link.

We decided to go in together because A) it increases our chances of getting something really cool in, B) is NOT against the rules and C) there are two tickets to Las Vegas in the first prize.

So Jarred and I had brainstormed a little during the week. Trying to think of cool Microsoft technologies to utilize in a project. Unfortunately, as I said at the beginning of the post, none of them really fit with the theme.

So first up this morning we had a quick brainstorming session. A couple of tools proved invaluable here. First up is Skype. I’ve only ever used Skype the same way that I use MSN, to type messages to friends and read their textual responses. I’ve never used Skype with a headset and now that I have I find typing over MSN to be terribly annoying and inefficient. When trying to describe a problem or an idea to someone, being able to speak to each other is far better than typing any day. Webcams just really raise the bar as well and luckily for the two of us, we have work machines with built in Webcams and mics.

Secondly (and surprisingly to me) is OneNote. If you haven’t used it before, OneNote is a note taking/personal wiki application that comes with some versions of Microsoft Office. One of the features which I had never seen before was the option to share a OneNote folder and have two (or presumably more) people writing/drawing in the same page at the same time. That combined with the speech capabilities of Skype made life really easy for brainstorming. In fact, for two people, I almost like it better than actually being in a room together with a whiteboard. It meant that we could research stuff quickly and ignore each other or collaborate as the moment demanded.

When we are done and the competition is over I’d really like to publish a screenshot of our OneNote page. It’s a horrible mess with a napkin architecture covered in pink crayon-like marks. It will be interesting to see how close our final solution matches these early ideas and designs.

And what an idea! Obviously I can’t tell you anything about it right now but it’s going to rule. As soon as we had the idea together we knew we were on to a winner.

After a few hours of throwing ideas around and coming up with a basic architectural design we realized that there were quite a few technologies that neither of us had used before (or if so, sparingly) and that there were some integration points to be sorted out.

As I write this it is technically day 2 because I have been struggling with a freakishly annoying problem for much of the day (at least when I haven’t been installing updates, service packs, SDKs, etc.). And as is always the case when that happens, when the answer finally presents itself, it’s a little obvious.

The problem was trying to get a Windows SmartPhone application running on an emulator to talk to a web service (in this case a WCF service but with basicHttpBinding which makes it much the same as any other web service). I had never done SmartPhone apps before so I had a few surprises in store. Here are a couple of tips if you are having trouble:

  1. The ASP.NET Development Server (Cassini) won’t allow remote connections and even though the Emulator runs on the local machine, it’s going to appear as though it is communicating over the network. In order to get this working, I had to deploy my Web App (with the Service Host in it) to an IIS Virtual Directory.
  2. When you add a web reference to a service in the current solution it will automatically utilize the computer name in the URL (or localhost which presents it’s own problems because on the device localhost means…the device). Unfortunately the mobile device emulator will not be able to resolve the computer name and so all calls to the web service will fail with a “cannot connect to server” error. The trick here is to use the dev machines IP address. There are a few ways of doing this:
    1. After you have created your Service Proxy object set it’s Url property explicitly to one which contains the dev machines ip address OR
    2. Update the Generated Code to do this for you (it is set in the constructor). This sucks because whenever you update your proxy it will overwrite your change. A better way is to wrap the creation of the proxy up into a factory method somewhere which configures the proxy object before returning it.
    3. DO NOT just change the URL to the IP address whilst adding the web reference as the tooling is smart and will replace it in the code with a resolved machine name. This is the issue which stumped me all day because the IP address was set in the properties for the Web Reference I didn’t feel I needed to examine the generated source code for the proxy. Grrr!

Admittedly Jarred had a much better time than I did. I won’t go into what he was doing yet because I don’t want to give too much away but he made me feel old and slow. Admittedly I did take the kids out to see Wall-E (it made me cry again damn it), I installed nearly 800MB of stuff and we had people over for dinner along with a surprise guest so maybe I shouldn’t feel too bad.

Well, before I head to the land of nod I want to quickly fire up a SQL Server 2008 session and have a play with one of the new features. That way at least I can say I can accomplished two things today. Or, given that it’s already tomorrow, perhaps I’ll call it quits and hit the hay. The proof of concept work is now all done. Tomorrow we can begin implementing our crazy ideas.

Time Remaining: 180 hours 51 minutes

Posted by: Mike Minutillo
Last revised: 27 May, 2011 02:42 PM History


No comments yet. Be the first!

No new comments are allowed on this post.