Well, I guess the title gives it away; yep, I’m moving my blog to another location. Not that anything was wrong with this company hosted blog; I just wanted my blog to be a little more personal, have more flexibility & more importantly, tons of space.

So, big thank you to all who cared to read my random bursts of thoughts; I appreciate every bit of your time and hope for your attention in future. This will be my last post to this blog; please update RSS endpoints if you had subscribed.

All my musings, past & future, will be here: http://samidipbasu.com.

Final Adios!


Ahright, this has been long due I guess. Having had a HTC HD7 Windows Phone for a couple of months now, here are my top 10 must-have 3rd party apps for WP7. This is a dynamic list though as my needs evolve. So, here goes:

1. Weather Channel — Rich WX data presented in panoramic layout; also provides radar maps, forecast details & videos. Live WX Tile isn’t shabby at all.

2. HTC Hub — This I think is good to have for any HTC phone. And here is the unabashed reason — the manufacturer Live tile is double in size and the weather graphics are stunning ! Also, one has to muse at the over-the-top graphics in the HTC apps contained in the Hub; some useful ones are T-Mobile My Account, Notes & Stocks.

3. Twitter — This is the official Twitter app for WP7. Really like the look & feel in dark theme. No frills, just works with good caching.

4. Netflix — May I say more? This I think is the best Netflix app across all Mobile platforms.

5. Tech News Now — wonderful RSS aggregator from my favorite tech gadget sites.

6. Last.FM — This MSFT-built app has single-handedly made me switch from Pandora to Last.FM. Some of the scrobbling features, continuous play & rich UI is very pleasing. Plus, it works under locked screen; too bad does not prevent screen lock-out in the first place.

7. AP Mobile — Nice news aggregation. Like Live Tile image surprises throughout the day.

8. Open Table — Again, I think this is the best Open Table app across mobile platforms. Metro UI fits this perfectly.

9. Beez – Another cool Twitter client with rather amusing Timeline view. This one is also armed with Push Notifications for DMs & mentions.

10. MyChannel 9 – All Channel 9 videos  & news at your fingertips. Only wish video playback had a few more controls.

Now, there are two that did not make this list, because they are just too good to be ranked .. ha ha. And that’s because yours truly has had his hands in them.

  • Sogeti Hub – Ok, I don’t blame you for not knowing/finding this one .. it has not hit the Marketplace yet. There was some red tape to get Sogeti LLC. set up officially with an account; we should be able to push it out soon. Hopefully, this will be awesome with everything Sogeti in mind, both internal & external facing.
  • ShopTillYouDrop – Now, I am kind-of ashamed to mention this. This was a rather basic Shopping List app I had written way back last year .. it kinda works; but doesn’t look very Metro. In its defense though, it was amongst the very first round of apps to go live in the WP7 Marketplace. I have been working on an update to support multiple lists, richer UI & Push Notifications; but all the other work keeps pushing it off to the back burner. I will make an update soon, I promise !

Ok, now for a few tips that I find handy:

  • Remember, you can hold down the Camera hardware button to bring up the Live cam, even if the phone screen is not lit.
  • Hit the Power button once, and without unlocking, you can change the volume toggle between ring & vibrate.
  • Remember that Games do not always honor the vibrate setting .. be careful in meetings.
  • Markeplace app is kinda sensitive; I know MSFT has promised a fix in the first update. But until then, once in the Marketplace, always let the screen finish loading stuff .. otherwise Marketplace may crash & require a reboot.
  • Use Bing voice search abundantly .. it really works very well.
  • The vibrate mode icon looks like slices of bacon .. rather yummy..ha.

Hope this was entertaining. Please do drop comments with suggestions or other interesting stuff.

Adios!


This week I was really happy to drive down to Dayton’s Wright State University where Sogeti is hosting a Microsoft Bootcamp for new hires in the company. I was asked to speak about Windows Phone 7 & Mobility in general. It was great !! It is so much fun speaking of Mobile solutions to fresh minds. And the audience was awesome. If these folks are the future of Sogeti, we are in good hands! So, thank you to all who attended.

If you guys are interested in the slides or any links that you found interesting, the whole slide deck may be found at the location below. Please note this is an internal Sogeti site & the slides are proprietary. Please use your credentials to pull down the presentation deck from here:

https://connex.sogeti.com/Practices/mtg/ems/
Shared%20Documents/MSFT%20Bootcamp%20Mobility.ppt



Also, we talked about a few alternative Mobile development approaches. Some interesting links would be as follows:



Hope all you guys take great interest in Mobile solutions and take us to the next level.

Adios!


This post is in response to a question someone asked in the Microsoft App Hub forum and because I was plain curious. That thread is here: http://forums.create.msdn.com/forums/t/72708.aspx

So, in Windows Phone Silverlight programming, we have access to a WebBrowser control. This is essentially a stripped-down version of the IE browser in the OS and can be slapped onto any XAML page. The WebBrowser control can then be asked to load any webpage (or local HTML), including ones with JavaScript interaction; it does not seem to handle HTTPS certificates too well though.

Now, what if you use the WebBrowser control within your XAML page to display web content & the user clicks on a link on a webpage? Yes, you guessed it right; the WebBrowser control loads the destination page. What if the user wants to come back to the first webpage? Hmmm .. this is tricky. Unlike the full-blown IE, the WebBrowser control does not maintain a backstack, as far as I can tell. Also, if you try overriding the hardware WP7 Back button, you might be walking on the edges of app certification requirements; the hardware button is supposed to take the user back out of the XAML page and onto the last history in the app page backstack; not to the last webpage loaded by the WebBrowser control!

So, it seems like a custom solution is called for when needing to support navigation in a WebBrowser control. Following is what I whipped up rather quickly; so BIG disclaimer – this custom browser backstack does *not* work for anything but the simplest of web pages. No postbacks or Jscript or cookies or URL params are supported. You may off course take the concept and extend this to your needs.

Here is how the quick demo app looks like. We take URL inputs from the user & display the page within a WebBrowser control embedded in the page. The user is free to click on any links on web pages to navigate elsewhere, with the destinations URLs loaded in the same place. Also, we throw in two Software navigation buttons in the App Bar, for supporting Forward/Back navigation of the content displayed.

Nav

Now, here’s the little requisite code. Since we are creating a custom backstack, some data constructs are needed; at a minimum a List/Dictionary data structure to remember the URLs for forward & backward navigation. Again, this was my way of doing things; feel free to trail braze with your own logic.



  List<string> URLStack = new List<string>();
  int position = -1;
  bool navigationButtonClicked = false;

The WebBrowser does raise events, which give us the opportunity to capture the URL of the page it is loading. We do, however, need to differentiate between when the user simply clicked on a link versus when he hit the navigation buttons.



private void MyWebBrowser_Navigated(object sender, System.Windows.Navigation.NavigationEventArgs e)
 {
     if (this.MyWebBrowser.Source != null && !this.navigationButtonClicked)
     {
       if (position == 0)
       {
         string firstURL = this.URLStack[0];
         this.URLStack.Clear();
         this.URLStack.Add(firstURL);
       }
      this.URLStack.Add(this.MyWebBrowser.Source.ToString());
       position++;
     }

    this.navigationButtonClicked = false;
  }

And the Back & Front navigation buttons have the following code behind their event handlers. You may update the URL Textbox accordingly.



private void Back_Click(object sender, EventArgs e)
 {
     this.navigationButtonClicked = true;
     this.MyWebBrowser.Navigate(new Uri(this.URLStack[position - 1].ToString()));
     position--;
 }



private void Forward_Click(object sender, EventArgs e)
 {
    if (this.URLStack.Count > position + 1)
      {
         this.navigationButtonClicked = true;
         this.MyWebBrowser.Navigate(new Uri(this.URLStack[position + 1].ToString()));
         position++;
      }
  }



That’s it; a simple browser navigation example with custom URL stack. Hope this was somewhat useful.

Adios!


Recently, a small issue in Windows Phone 7 development drove me nuts for a day .. don’t get me wrong, I love doing WP7 dev; just got frustrated with not being able to change a small setting. Here’s the story..

Any WP7 application that uses Location Services has to have permissions from the user, as per app certification guidelines. Makes sense. Also, one needs to provide the user with an in-app setting to turn Location Service use on/off, without affecting the master switch. Also makes sense. So, many apps are resorting to using the Silverlight WP7 Codeplex Toolkit controls to provide such a Settings screen. There is a very handy Toggle Switch to turn a setting on/off .. just like what you’ll find in the rest of the OS. So, this becomes a natural choice for the Location Service use setting. Following is the Setting screen in the Sogeti Hub WP7 app, with the real white theme and an altered wheat background :

Toggle Switch Head lost in background

Toggle Switch Head lost in background

Toggle Switch Head shows against colored background

Toggle Switch Head shows against colored background

                            

A more in-depth use of the Toggle Switch is described here:

http://www.codebadger.com/blog/post/2010/11/05/WP7-Tip-of-the-Day-Silverlight-Toolkit-Toggle-Switch.aspx

Now, here’s the little issue — when pitted against an all-white page background, the slider head of the Toggle switch could not be distinguished in the emulator window!!; in other words, got lost in the white back color. Now why not change the white background? .. because the rest of the app has the similar look & feel and a different color/transparency would be jarring.

The Toggle Switch is a rather flexible one though.. one may use highly customized templates for header & content ; assign event handlers to the user turning the switch on/off etc. However, I could not find a setting that would allow me to manipulate the look of the switch itself. Background and Brush Silverlight usuals were not handy. Now, I know what you’re thinking .. it’s a codeplex toolkit; get the code and manipulate. Yes, true .. but I was reluctant to try messing with the pre-built switch just to be able to draw a border. It should just work, right? Eventually, would probably have tried writing my own toggle switch; but a quick look at my HD7 WP7 phone revealed that with a Light background theme, the same toggle control rendered just fine !! Were there differences in what the OS was using versus what the Codeplex code had?

Then, just out of curiosity, took my app and deployed it to the phone with a light background theme. Voila .. it works! The Toggle Switch shows up exactly as it should with a black border around the switch head, which distinguishes it from the rest of the page content. So, it has always been working .. why was the emulator lying? May be a little issue in rendering with the Silverlight toolkit controls. Nonetheless, thought I would blog to save some other soul a day of frustration.

Sanity returns to earth .. ha ha.

Adios!