07 May 2013

ALM Readiness Treasure Map Update–Tracking Progress

If you don’t follow the various ALM Rangers Solutions, you should!  If you do, then you already realize there is a lot of content put out by the various ALM Rangers project teams. In fact, there is so much information provided by the ALM Rangers that they have provided a Windows 8 app to help navigate the ever-changing waters of available content – the ALM Readiness Treasure Map.

Download Windows Store app
[If you’re running Windows 8, click the above image to install the app now]

Coming Enhancements

Although version 1 of the app has seen a lot of use, there is much room for improvement.  That said, there is currently a team of ALM Ranger pirates currently hard at work on implementing many of the proposed enhancements for version 2.  One enhancement in particular is the ability to track the status of each guidance document (referred to as jewels within the app) as you make your way through the treasure map.

If you take a look at one of the proposed screen mock-ups below (click here if you’re interested in seeing the rest of the mock-ups), you’ll notice just after the title the text “1/15 completed”.  This implies that you have flagged one of the guidance documents within this section as having been read.  With this update, we plan to track three states in regards to document status, including:

  1. Not Started – you have not yet viewed the document
  2. Started – you have started viewing the document but have not yet completed it, depicted graphically by an open, yet empty, treasure chest (as seen below)
  3. Completed – you have completed viewing the guidance document, depicted graphically by a filled treasure chest (as seen below)

QUESTION: We have gone back and forth on whether or not a guidance document should be automatically flagged as having been “Started” once you click on the link within the app to view it.  As you can see in the mock-up above, there is a context menu that allows you to manually flag a document as having been “Started” (amongst other states).  We are considering making this an app preference where you get to decide how it works.  However, we don’t want to make something that should be simple, complex.  If you have a strong opinion one way or the other, let us know in the comments below.

As a document’s status is updated, the app will utilize the built-in data roaming features of Windows 8 to synchronize the status across your Windows 8 devices.  So, if you start viewing a document on your Windows 8 laptop and move to your Windows 8 tablet, the correct document status will appear on the tablet as well (assuming you’re using the same Microsoft Account on both devices).

Design Details

The following details outline the changes to be made to the source code to support the tracking features described above.

Data Layer (Data Providers)

TreasureMapDataModel.xml

  • Add ID attribute to <guidance/> element and populate with unique integers (consider grouping by category - e.g. "Prepare" = 0-999, "Quick Intro" = 1000-1999, and so on...).  The ID is currently assigned dynamically when the data structure is loaded.  However, since we'll be syncing up document Status each time the app is ran, we need to ensure the IDs don't change.  For this reason, we need to add them to the data.

DB.cs

  • In LoadDB method, replace uniqueGuidanceCounter with newly added ID attribute from above.

Business Logic Layer (View Models)

Status.cs

  • Create Status.cs which simply contains a new enum:

public enum Status {
     NotStarted = 0,
     Started = 1,
     Completed = 2
}

Guidance.cs

  • Add a read-only Status property of type Status.  This property will be read only to force updates to go through the StatusManager (below) where the overall status values will be kept up to date.

StatusManager.cs

This is a new class used to encapsulate some of the logic necessary to set guidance status as well as return various guidance status based on categories and projects.  This class would be surfaced through the DB class because a) it is always in scope (via the App class) and b) this would allow the StatusManager class to be provided with a reference to the DB class which has references to the categories and projects needed for status counts.

Properties:
These properties would be calculated once (via the private methods below), during the initialization of the StatusManager class.  After initialization, they would be kept up to date as the SetStatus method is called.  This alleviates the need to continually walk the data hierarchy as the counts are displayed via data binding.

    • int CompletedProjectCount
    • int CompletedDocumentCount
    • int ProjectDocumentCount
    • int TotalCompletedCount

Methods:
[-] = Private; [+] = Public  

    • -GetCompletedProjectCount(int category) - gets the total number of projects, for a given category, where all guidance documents have a Status of Complete (2).  Used for displaying completed ratio on the "category" page.
    • -GetCompletedDocumentCount(int project) - gets the total number of guidance documents, for a given project, that have a Status of Complete (2).  Used for displaying completed ratio on "projects" page.
    • -GetProjectDocumentCount(int project) - gets the total number of guidance documents for a given project.  Used for displaying completed ratio on "projects" page.
    • -GetTotalCompletedCount() - gets the total number of guidance documents, across all categories and projects, that have a Status of Complete (2).  Used for displaying overall percentage (on tile).
    • +SetStatus(int guidance, Status status) - sets the current status for the specified guidance ID.  Used by the "Mark as" menu for "Not started", "In progress", and "Completed".
    • -Save() - saves the current state of the various document Status values to "roaming" storage.  This would be simply serializing a List<Dictionary<GuidanceID, Status>> for simplicity.  This method would be called, asynchronously, each time the SetStatus method is called.
    • -Load() - loads the current state of the various document Status values from "roaming" storage.  This would happen during initialization of the StatusManager class.

UI (Views)

Projects.xaml

  • Capture Tapped event for "jewel" hyperlinks and set Status for selected guidance document to Started (1) unless it's already been marked as completed.  Question - do we want to automatically mark something as Started the first time it is opened or do we want to purely rely on the user to mark it via the menu option?

More Information

01 May 2013

TFS Live app for Windows Phone

If you happen to 1) work with Microsoft’s Team Foundation Service (TFService) or another publically accessible TFS server and 2) own a Windows 8 Phone, then you will want to check out the tfs live app for Windows Phone. The tfs live app provides quick, at-a-glance totals for the various types of work items you’re most interested in.

When you install the app and run it for the first time, you will have to configure the app to connect to your TFS server:

wp_ss_20130501_0001

Although a template has been provided for the server URL (as shown in the above image), it is not the best template to follow if you’re connecting to a TFService instance.  In this case, use the following template:

     https://{account}.visualstudio.com/DefaultCollection – replacing {account} with your specific TFService account name.

Once you have successfully logged on, you will need to select a project name, role, and a couple of other options:

wp_ss_20130417_0002

The selected role determines which queries will show up on the main screen. The roles that can be selected from include:

  • Developer – provides: “bugs assigned to me” and “tasks assigned to me”
  • Tester – provides: “bugs assigned to me”, “test cases assigned to me”, and “tasks assigned to me”
  • Dev Lead – “bugs assigned to me”, “tasks assigned to me”, and “overall bug summary”
  • Test Lead – “bugs assigned to me”, “tasks assigned to me”, “overall bug summary”, and “overall test summary”
  • Manager – “overall task summary”, “overall bug summary”, and “overall test summary”

The image below shows the screen for a Developer role:

wp_ss_20130417_0004

Tapping on any of the query icons (on the screen above) will open a custom query (based on the specific type of query being ran) in the web browser displaying the appropriate work items.  This experience is less than ideal but it does work.  I would really like to see the query results come back to the phone and displayed in a list that, when tapped, would then open the web-based query to view the full details.

That said, I still find this app highly useful for keeping up to date on newly assigned and/or modified work items.  Some suggestions I might offer to the app developer would include:

  • Modify the server URL template to be more TFService friendly (as I’ve shown above).
  • Display the project name (and possibly role) on the main screen.  Currently, you can’t tell which project you’re connected to when looking at the main screen.
  • When selecting role from the settings page, “Devloper” (notice the missing ‘e’) is spelled incorrectly.  Not a major issue but detracts from the overall fit-n-finish of the app.

A PowerPoint slide deck with further details is available from the author here.

05 April 2013

Visual Studio/TFS Update 2 Released

The latest update for Visual Studio 2012 and Team Foundation Server 2012, Update 2, has been released.  There is a lot of new functionality included in this release and rather than duplicate all the details here, I’ll simply refer you to this post on the Visual Studio ALM + Team Foundation Server Blog as well as this link.

I would like to point out the download links:

When you download the update for Visual Studio 2012 and/or TFS, you will notice the installer is quite small (1.3MB or less).  This is because the installer is just big enough to kick off the installation process which will first download only the components required to update your machine in its current state.  This saves you from having to download installation files that you do not need.

However, there are reasons where you might want to download the full installation package before updating your system – e.g. if you plan to share the installation files with other people in your organization.  Luckily, this is a relatively easy process.

To pull down the entire installation set, simply run the update with the /layout switch.  For example, the following command will kick off the download process for the Visual Studio 2012 Update 2 install files:

C:\Downloads>VS2012.2.exe /layout

When you specify the /layout switch, you will be prompted for the folder where you would like the installation files to be downloaded to:

image

Clicking on Download will start the download (‘Acquiring’) process:

image

image

Once downloaded, you can start the installation by running VS2012.2.exe in the download folder.

If you run across any bugs within Visual Studio 2012, TFS, or other Visual Studio products, you can submit them here on Connect.

27 March 2013

//Build/ 2013 Announced

Image

Yesterday, Steve Guggenheimer announced //Build/ 2013.  Here are the details known so far:

Date and Location

San Francisco, CA
June 26th (09:00 PDT) – June 28th (14:30 PDT)
The Moscone Center – Game Developers Conference 2013 is being held there as I write this.

Registration opens at 09:00am PDT, April 2, 2013
Early bird (first 500): $1,595 // Full: $2,095

If you happened to attend //Build/ 2012 (last November) then you no doubt recall the endless joy of being bussed from one side of the campus to the other (depending on which sessions you wanted to attend).  You might also fondly recall the walk back from the initial keynote in the rain and the mud :-)  This year promises to be a much better experience by hosting the conference within the much larger Moscone Center.  If you’re curious about the size of the Moscone Center, check out these stats.  You can also get some great insight from these reviews on yelp.

05 March 2013

Tracking Home Inventory

About a month ago, I received a message from my sister informing me that her house had been robbed and that pretty much everything of value had been stolen.  Luckily, she wasn’t home when the robbery took place so she wasn’t in any danger of being harmed.  Not everything that was taken can be replaced (e.g. family heirlooms, jewelry, etc.) so we are hopeful that at least some of her valuables will be located.  However, if they are located, she will still have to prove they are hers.  Luckily, she had recorded the serial numbers of the items (e.g. camera, laptop, etc.).  Having the serial numbers recorded does not guarantee that one will get their stolen property returned to them.  However, if your stolen property is recovered, it will definitely increase the likelihood of getting your items back.

A day or two after my sister’s bad news had settled in, I started thinking about what would happen if I were in the same situation (which, obviously, I hope to never be).  I could get to a few serial numbers on-line based on when I originally registered specific items.  However, I did not have an official home inventory list of the valuables throughout our house.  So, I decided to start the list (I spaced the task of filling out the list over the course of a couple of weeks) in Excel.

Rather than create my own home inventory list in Excel, I decided to search the available templates.  Searching for “home inventory” turned up two templates:

image

Creating a new spreadsheet based on this template provides a great starting point for tracking the valuables throughout your house (or office or wherever you want to track an inventory).  The template is easy to use and understand.

However, not everyone has Excel installed and available.  No problem!  With Microsoft’s SkyDrive, you can get access to Microsoft’s Web Office Applications at no charge (i.e. FREE)!  If you haven’t already signed up for a SkyDrive account, I highly recommend it.  The first 7GB of storage space is complete FREE, plus, you also get access to the web versions of Microsoft Word, Excel, PowerPoint, and OneNote!

One thing to consider is that the web version of Excel does not have the same rich set of templates available that you would get in the desktop version.  All that means is that you have to come up with the spreadsheet design yourself.  To make it easier, I’ve already created a Home Inventory Excel spreadsheet (loosely based on the template shown above) and made it publically available to simplify the process.  This spreadsheet looks something like this:

image

Probably the biggest advantage of tracking your home inventory within a SkyDrive-based document is that if your computer is ever stolen (let’s hope that never happens!) you will still have your home inventory (and any other documents you’ve stored in SkyDrive) safe and accessible from practically any other device you have access to.

Also, along with serial numbers, descriptions, cost and value, it is a good idea to take pictures of your valuables as well.  You cannot paste images into a web-based Excel spreadsheet (you can in the desktop version) but you can create a dedicated folder within SkyDrive to store pictures of your valuables (which can be linked to from within your spreadsheet).  Just something else to consider when building out your inventory.

You can download the above Excel-based Home Inventory template from here.

*Full Disclosure: I’m a SkyDrive Insider, ask me about SkyDrive or learn more about the SkyDrive Insiders program here.

16 January 2013

.NET Mocking Framework Survey Results

Two weeks ago, I posted a survey (using Excel Surveys available in SkyDrive) asking you what your preferred/primary .NET mocking framework was. We plan to use this data to help drive out which frameworks we want to evaluate further.

The survey closed yesterday and, out of 147 responses, here is how everything shook out:

image

image

147 responses may not seem like a lot and, in the grand scheme of all .NET developers across the world, it’s not.  There are several ways you can look at this number:  Out of everyone that viewed the survey request, the majority of them didn’t want to take the time to give their input; they don’t use .NET-based technologies and/or mocking frameworks; I just didn’t reach a wide enough audience and/or provide enough time to get the word out about the survey; or there was some other reason they didn’t bother with the survey that I’m just not thinking of at the moment.

In regards to this penultimate point above, here was my general approach for getting the survey link out:

  • Posted to my blog – just over 225 page views (as of a few moments ago) – not a huge number by any stretch
  • Posted to my twitter feed – roughly 250 followers – again, not a huge number. This one is a little harder to judge because I don’t know how many times it was re-tweeted, copied and tweeted, etc.
  • Posted to Google+ – don’t know the impact – likely very, very small
  • Posted on my LinkedIn timeline – 279 connections
  • Posted on two separate LinkedIn groups: .NET Developers & .NET Professional with .NET Developers having a membership of about 148,000
  • Various e-mail distribution lists – not sure of the count

Click here to view the full survey results.

[Updated: Fixed broken survey link]

14 January 2013

Omaha ALM User Group–Inaugural Meeting

The Omaha ALM User Group, formerly known as the Omaha Team System User Group, is having its inaugural meeting tomorrow night, Tuesday, January 15th, 2013.  The Omaha ALM User Group is a technology agnostic group focused on utilizing tools and automation to support the people and processes across the complete application lifecycle.  The group is co-lead by Jeff Bramwell and Mike Douglas.

Our first talk is Creating a deployment framework with TFS and custom PowerShell Cmdlets by Andy Bayer:

As testing and release cycles continue to shorten for developers, automating application deployments becomes almost a necessity.  TFS and WebDeploy provide some very powerful tools to simplify application deployments, but have limits to what can be done.  An excellent way to extend the out-of-the-box deployment tools is with PowerShell, but that can carry a learning curve and become a maintenance headache very quickly.  Enter custom PowerShell Cmdlets - a way to hide all of that 'evil' PowerShell scripting and deployment logic from view, and at the same time, provide one location to maintain for any number of deployments.  If done correctly, this can result in a fairly simple, yet very extensible deployment framework for any organization.

If you would like to join us as we kick off our first session then bounce on over and RSVP.  This meeting is being hosted and sponsored by Farm Credit Services of America and is located at:

4979 South 118th St.
Omaha, NE 68137
Map

You can enter at the north building on the west side.  The meeting will begin at 6:00pm with the food (pizza :-) arriving around 5:45pm.

For more information:

We look forward to seeing you there!

02 January 2013

Which .NET Mocking Framework Do You Prefer?

We are preparing to evaluate mocking frameworks that support .NET to determine if our current mocking framework is still the best solution for us.  Before we actually start the evaluation, we’d like to get a general idea of which .NET mocking frameworks are popular amongst developers out in the rest of the world.

To aid in this endeavor, we have created a simple survey with two questions (or three, depending on how you answer the first question).  Essentially, the survey asks which of the following .NET mocking frameworks is your primary (or preferred) framework.  The list of frameworks is comprised of the following:

  • EasyMock.NET
  • FakeItEasy
  • JustMock (Telerik)
  • Microsoft Fakes
  • Moq
  • NMock2
  • NMock3
  • NSubstitute
  • Rhino Mocks
  • Simple.Mocking
  • Typemock
  • Other (list in comments)

If you select “Other” then the second question is there to list the name.  The third and final question is simply for any general comments you’d like to make.

We plan to keep the survey open until Tuesday, January 15th.  Once the survey has closed, I will post the results back to this blog.  So, please help us determine what the preferred mocking frameworks are that are in use today.  The survey should (literally) take less than 30 seconds.  Your contribution will be greatly appreciated!

This Survey is Now Closed.  Click Here to view the final results.

Also, please take a moment and pass the word by tweeting, blogging, etc. the above survey link (or the link to this post).  The more responses we get, the better.

01 January 2013

A Backup Strategy

Anyone using computers for any amount of time knows that backups are a must.  We’ve all heard or read that it’s not if your hard drive fails but rather when your hard drive fails you’ll wish you had backed up your files.  However, history has taught me that it’s not always a failed hard drive that makes me run to my backups but the more likely catalyst is my own actions.  For example, have you ever re-imaged a computer, thinking you’ve backed up everything you considered important, only to realize five minutes after installing the operating system that you forgot to include something really important in the backup set?  I have! :-)

So, with the new year starting, now is a great time to think about a backup strategy.  Even if you have a backup strategy, it’s still a good idea to review your backup process to ensure everything that needs backing up is actually getting backed up.

If you have ever researched backup strategies it’s no doubt that you have heard of the “backup rule of three” also known as the “backup 3-2-1” rule.  I have no idea how long this rule has been around as I can’t seem to locate the origin.  It essentially states the following when creating data backups:

3. Keep three copies of everything you intend on backing up.
2. Maintain your backups in at least two different formats (e.g. hard drive and memory stick, cloud storage and DVD, etc.).
1. Ensure at least one copy is kept off-site (e.g. in case of a disaster such as a flood or fire).

Based on these rules I have made use of the following technologies to satisfy my backup needs:

  1. SkyDrive – If you are not familiar with Microsoft’s SkyDrive service, you should definitely check it out.  You are provided with 7 GB of on-line storage space for free – 25 GB if you happened to get in on an upgrade deal that was offered a few months back (plus another 100 GB if you happened to attend this year’s //Build/ conference).  SkyDrive also comes with free use of Microsoft’s web-based Office products including Word, PowerPoint, OneNote, Excel, and Excel Surveys.  If 7 or 25 GB is not enough space, you can pay to upgrade your space.  There are also mobile clients available for Windows Phone, iPhone/iPad, and Android-based devices.  For more information regarding SkyDrive and its features, click here.

    In my case, I use SkyDrive to store my various documents including Word and PowerPoint files, all my photos and music, and miscellaneous other files.  Pretty much anything that I would like to have easy access to from any device I may be using.  I do not store my videos on SkyDrive, however, due to their large size.

  2. Windows 8 Storage Spaces – Used in conjunction with a local machine running Windows 8 Pro (the only “tower” PC on my home network), Storage Spaces provides added protection through mirroring or parity.  In my case, I have three physical hard drives tied together via Storage Spaces using parity (~RAID 5).  If any of the three drives fail, I can replace the malfunctioning drive and the missing data will be restored automatically.  Also, if I need to add more storage to my server, I can simply install a new hard drive and add it to the Storage Spaces pool.

    This server is used as a central location for all backups on my home network as well as the primary storage location for all photos, music, and videos.

  3. Carbonite – Similar to SkyDrive, Carbonite offers cloud-based storage.  However, Carbonite is designed and built from the ground up for backup purposes.  Carbonite’s pricing plans are very attractive as well, starting at only $59/year for unlimited storage space (for one PC).  One of the best features of Carbonite is its simplicity.  For the most part, you simply install it, sign in to Carbonite, and forget it.  However, by default, video files are not backed up (note that videos are automatically backed up with the Home Premier service).  However, it’s a simple matter of right-clicking the video files and telling Carbonite to back them up.

    I use Carbonite to backup my Windows 8 Pro machine – which contains all the documents and files that I care about.  Depending on how many files you have to backup, it can literally take days (weeks?) to perform the initial backup.  However, once the initial backup has been completed, new files or modifications to existing files are backed up quickly.  In the case you ever need to restore lost or damaged files the restore process can also take an extended amount of time based upon the overall size of data that needs to be restored.  If you anticipate the need to restore large amounts of data, Carbonite offers a courier service as part of their Home Premier plan in which case they will mail you a copy of your data on physical media.

The following diagram provides a general overview of how the above technologies are tied together:

image

With all that said, does my approach satisfy the “Backup 3-2-1” rule?  Let’s see…

3. Keep three copies of everything you intend on backing up.  Yes.  I have copies on my local file server, in SkyDrive (with the exception of videos), and within Carbonite.  I suppose I’m skimping a little bit here with videos but I am also banking on Carbonite to take reasonable steps to ensure they don’t lose my backups on their end.
2. Maintain your backups in at least two different formats (e.g. hard drive and memory stick, cloud storage and DVD, etc.).  Yes.  I have backups on local hard drives as well as two separate cloud services.
1. Ensure at least one copy is kept off-site (e.g. in case of a disaster such as a flood or fire).  Yes.  I am utilizing two separate cloud services.

So far this backup approach is working for me.  Although I believe it is a good approach it is by no means the only approach or even necessarily the best approach.  As with most processes out there, use what works for you and throw the rest out :-)  If nothing else, hopefully this post will at least get you thinking about backups and implementing a solution before you actually need it.

What backup strategy are you using?  If you have some great ideas, please let us know in the comments below.

GPZZ3W7658KG

26 December 2012

My Smartphone Past

While off for the Christmas holiday, I decided it was time to clean up my home office.  While it’s quite easy to get rid of some junk (e.g. dozens, if not hundreds, of MSDN CDs/DVDs from 8 years ago) some items from my personal gadget history are harder to part with.  Let’s take smartphones, for example.  For those of us who have used and relied on smartphones for years now you know all too well how attached you might become to a specific device.  It kind of makes sense, I suppose, since you use the device multiple times a day – every day.  How many other gadgets do you own that get that kind of use?

So, just for fun, I thought I’d throw out a quick listing of my personal smartphone choices that I’ve made over the years.  I have not owned very many smartphones nor is the variety all that wide but it’s still kind of fun to look back at the various devices.

Sprint PCS PPC-6700 Pocket PC Phone

imageBack in the fall of 2006, I won this phone from a United Way raffle drawing at my office.  At the time, I owned a pay-as-you-go feature phone with service provided by TracFone.  I loved the phone so much that I went to Sprint (the very next day if I recall correctly) to setup a service and data plan (my first data plan ever :-).  As a software developer familiar with Microsoft Visual Studio and the .NET Framework, I was also excited that I could easily create software for my new smartphone.  Although I tinkered around for a while it wasn’t until the following year that I created the first Windows Mobile app that I would eventually publish – SafetyTip (note: I have since ported this app to Windows Phone as well).

On the right is a screenshot of the emulator running SafetyTip.

main

This phone still works today although I am no longer a Sprint customer (switched to AT&T with Windows Phone).  I really have no use for this phone (I can’t even connect it to my home wireless connection because the OS does not support the latest encryption standards) but I just can’t seem to get rid of it.

Click here for full specs.

 

 

 

Sprint Mogul PPC-6800 Pocket PC

imageAfter a couple of years (2008) of use with the 6700 the battery was getting to the point where it could no longer hold a full day’s charge.  After having no luck in finding a good battery replacement, I decided it was time to upgrade to the 6700’s successor – the HTC Mogul (PPC 6800).  For the most part, the 6800 was the same phone as the 6700 other than it was a little lighter and thinner.  However, it ran the latest version of the Windows Mobile OS – Windows Mobile 6 Professional!  The newer OS also opened up more features that could be taken advantage of by developers.

As a side note, this is the only smartphone that I’ve ever paid “real” money for.  My previous phone (the 6700) was from a raffle contest (although I suppose I did pay a few dollars for the raffle tickets) and most of my subsequent phones were won via contests or provided to Microsoft conference attendees.

Click here for full specs.

 

 

 

LG Optimus 7

imageA couple of years later I was attending the Microsoft Professional Developer’s Conference (PDC) in Redmond, WA.  There was a lot of talk and hype around Microsoft’s latest mobile phone platform – Windows Phone 7.  As luck would have it, they provided each (paid) PDC attendee with a Windows Phone – the LG Optimus 7.  Just as I was with my very first smartphone (the 6700) I was excited about the possibilities of writing apps for my new phone – not to mention the idea of replacing my geriatric HTC Mogul with something that could actually compete with modern phones (i.e. the iPhone).  Also, as with my first smartphone, I visited the AT&T store as soon as I returned home from the conference to setup a new data plan (I didn’t require a contract since I already had the phone).

I loved the new Windows Phone OS from the moment I started using it.  Granted, it took a little time to learn where certain features were located and how they worked (or if they even existed at all) but once I became familiar with the phone I was able to complete common tasks very quickly and easily.  I was also now able to write apps for my new phone using the latest version of Microsoft’s development tools and frameworks.  My first Windows Phone app was simply the conversion of my original Pocket PC app – SafetyTip.  You can see the updated version in the screenshot on the right.

I still have this phone today for occasional use as a development/test device, although not very often.

Click here for full specs.

Samsung Focus

imageNot too long after Windows Phone 7 was launched, Microsoft was sponsoring an app development contest.  Basically, you had to submit an app to the Windows Phone 7 Marketplace (and it had to be published) then you could enter a contest for a chance to win a Samsung Focus.  I still recall getting the e-mail (on my LG) as I was leaving the theater one night notifying me that I had won one of the phones from that quarter’s drawing.  A week or two later, a brand new Samsung Focus showed up on my doorstep!

I loved the Focus.  This phone was larger and lighter than my LG and the AMOLED screen was awesome!  The Focus was also one of the few (if not the only?) Windows Phones that supported a Micro SD card – which I immediately installed :-)

One day I was backing out of a restaurant parking lot with my wife and kids when my wife said she heard a “crunching” noise.  I didn’t think much of it at the time (there was snow on the ground).  When we got home, I couldn’t find my phone!  I drove back to the restaurant and someone had turned a phone in.  The good news was that the phone turned in was mine.  The bad news was that it had been ran over (by me).  Strangely, the Gorilla Glass screen had not cracked but the AMOLED display underneath the glass had (see screenshot to the left).  I realized later, when I went to remove the Micro SD card from the phone, that whomever turned it in had already taken it!

Oh well, back to the LG Optimus 7 (good thing I kept it! :-)

Click here for full specs.

Nokia Lumia 800

imageOnce again, another app writing contest came up (again, I don’t recall the details) and once again I was able to score a free phone!  This time it was the Nokia Lumia 800.

I immediately switched from my LG Optimus 7 to the Nokia Lumia 800 and loved everything about it.  I especially loved how Nokia was committed to the Windows Phone ecosystem (e.g. providing exclusive apps, specialized hardware, etc.).  I could tell almost immediately that I was going to become a long-term Nokia customer and fan.

Although the Lumia 800 has the same size screen as the LG Optimus 7, it felt just a little bit lighter and just felt better to the touch.  It was nice to hold, look at, and use.

I still have this phone today and continue to use it as a development/test device.  My kids also use it for the occasional game session :-)

Click here for full specs.

 

Nokia Lumia 900

imageWhen the Nokia Lumia 900 was announced, I couldn’t wait!  I was really hoping for yet another contest (I had grown accustomed to free phones :-) but none came before I decided to make the move to the 900.  Fortunately, however, the Nokia Lumia 900 was having some software issues out of the gate and Nokia decided to provide a $100 reimbursement to everyone who had purchased a 900 (within a certain timeframe).  Combined with the $100 rebate that AT&T was offering and the Nokia Lumia 900 was effectively FREE!  In fact, I also received a $100 credit that I could put against any accessories in the AT&T store (in my case, a hands-free Bluetooth device and a car charger).  So, in essence, I was being paid to take the Nokia Lumia 900 home with me :-)

Fast forward a few months while on a 40’ish mile road ride… I have my Lumia 900 mounted on my road bike  running one of my favorite fitness apps – Endomondo.  At one point, I hit a bump in the road and the Lumia 900 is jarred from its cradle and it smashes into the highway.  To my surprise, there were only a few dings on the corner of the phone and was still fully functional.  In a not-so-smart move I decide to put the phone back on the bike and continue with my ride.  About a mile later I hit an even bigger bump in the road and the phone goes flying off the bike again.  This time the screen is decimated (Gorilla Glass isn’t indestructible after all)!  You can see the results in the screenshot above.

So, it’s back to the Nokia Lumia 800!

Click here for full specs.

Apple iPhone 4

imageIt might seem a little strange that I happen to have also used an iPhone, based on my obvious Windows Phone preference.  However, there is a rational reason for having an iPhone in my arsenal.  As it turns out, the company I work for has relatively standard, and rigorous security requirements for mobile devices that would like to sync with our corporate e-mail and calendar.  Namely, device encryption.  Windows Phone 7.x does not support device encryption.  So, what’s a gadget geek to do?  Well, in my case, I used an iPhone for my corporate e-mail and calendar and relied on my Windows Phone for everything else.

NOTE: The iPhone was provided to me by my company at not cost (which would be returned once I obtained a Windows Phone 8 device).

Although the iPhone is a very capable device, I still find it easier/quicker to complete most common tasks on my various Windows Phones.  I can’t really say if that’s because I’m just really used to using Windows Phone devices or if it’s because the tasks are simply easier/quicker to use on Windows Phone (probably a little bit of both).  The one obvious advantage that the iPhone has over Windows Phone, as has been said a million times, is the app store.  However, with over 150,000 apps in the Windows Phone store now, it’s becoming less of an issue every day.

With the release of Windows Phone 8, full device encryption is now supported (and I no longer rely on my iPhone for corporate e-mail).

Click here for full specs.

Nokia Lumia 920

imageWe finally arrive to the device that I am using full time today – my Nokia Lumia 920.  This is the phone that was provided to the attendees of this year’s //Build/ conference.  Upon receiving the phone, I immediately pulled the SIM card from my Lumia 800 and installed it into my shiny, new 920 and it was awesome!

Although there have been lots of reports stating the Lumia 920 is too big and heavy, I have to disagree.  Although the phone is a little on the hefty side, there is not a substantial difference when holding the iPhone 4 in one hand and the Lumia 920 in the other.  Also, I prefer a larger phone screen although I don’t think I’d want anything larger than the Lumia 920 (4.5 inches).

Once I had the Lumia 920 configured the way I liked it, I found myself reconfiguring the start screen over and over again.  It took some time to find just the right mix of small, medium, and large live tiles as well as the optimal placement.  Although I’ve pretty much settled on a configuration for now (see screenshot on left), I have no doubt I’ll tweak it for as long as I own the phone.

Click here for full specs.

 

 

So, there you have it… my smartphone history.  Although I am very happy with my Lumia 920, I still look forward to what might be released in the future.  There are still improvements to be made to the Windows Phone OS as well as to the Windows Phone ecosystem.  And, for now, I am happy to come along for the ride! :-)