Organizing Your Work With OneNote Page Templates


If you have seen the Windows Phone commercial where the father is in the grocery store with the shopping list in OneNote you have gotten you first taste of the flexibility that can be had with OneNote.  I like most consultants have a lot of fires going and once and I am finding that the templates in OneNote are helping me to get a handle on the different projects and tasks I need to track.

I started using OneNote to do simply what its name suggests: take and organize notes.  Lately though I am finding ways that it can help to centralize things that I had been using multiple applications to accomplish.  Having them all in one place, as with most things makes it easier to not miss something.

You may find using the tasks feature of Outlook works well for you, but I found that I was in and out of my email so fast that I ignored the tasks.  As simple To Do List template in OneNote seems to be the solution for me since I spend so much time documenting projects.  As an alternative you can use the Prioritized To Do List shown below or the Project To Do List which gives you a list per project.

image

When starting a project at a new client Project Overview is a great way to organize your thought and make sure that you cover all the essentials.  While I am just starting to use it this template is quickly proving its worth.

image

Of course if you don’t find a template that fits your needs you can create your own templates. Start with one of the standards and edit it.  Then click Save Current Page As A Template.  This is great especially for customizing templates like the project overview to suit you needs.

There are many other features to this tool for you to explore.  Add to everything above that it is a write once, maintain anywhere product and I can easily access my notes from any browser or even my Windows Phone.  Life is getting just a little better.

  • Share This Post:
  • Share on Twitter
  • Share on Facebook
  • Share on Technorati

author: Tim Murphy | Posted On Friday, February 03, 2012 3:15 PM | Feedback (0)

Implementing Team Foundation Server 2010 In A Mixed Development Environment


Most of us spend our time in Visual Studio writing .NET code within a Visual Studio solution.  Given this situation we find it very easy to integrate with Team Foundation Server for our source control and have a well known work pattern.  But what happens when you want to use TFS as source control for non-Microsoft development?

The most important thing to remember is that source control should be as transparent as possible to the developer.  If the particular language or product does not have an Integrated Development Environment then having plug-ins to maintain this transparency is not possible and your next concern is making the way the developers interact with TFS as simple as possible.

Let’s assume that you are facing the latter situation.  The first thing to do is sit down with the team and find out what their normal process is for developing.  You need to find out how the code that becomes their executables are organized.  The key is striking a balance between logical separation and making extra work by creating too many projects.  If they users are accustomed to managing their code in a single folder then you may want to maintain that same structure for your TFS projects.

Once you get past the structure issues you then need to address the subject of branching and labeling.  I recently ran into a situation where the non-Microsoft development was customization of a packaged software.  This presented additional considerations.  They get a copy of the off the shelf code with each release from the vendor.  There may be features that are actually removed from one release to the next.  This made it easier to start a new project for each release than using labels or branching.  The last thing they wanted was code files creeping back in if they got latest and only new files had been overwritten but the obsolete files were still there.

In the end it boils down to understanding the needs of your development teams and molding your usage models to those needs.  Maintain as much transparency for your developers as possible by limiting the touch points for TFS and as often as possible allowing them to continue developing the way the always have.

  • Share This Post:
  • Share on Twitter
  • Share on Facebook
  • Share on Technorati

author: Tim Murphy | Posted On Friday, February 03, 2012 12:58 PM | Feedback (0)

PSC Group Releases Project Risk Profiler Windows Phone Application


PSC Group is proud to announce that the Windows Phone version of its Project Risk Profiler application is now available in the Marketplace.  This application allows project managers and stakeholders to evaluate the high level risks and benefits associated with proposed project before committing to it. 

The application is based on a methodology used by PSC when initiating projects and is a port of the iPhone version of the application.  Each negative and positive attribute of a project is given a raking value.  Once all the attributes are totaled the negative total is subtracted from the positive total in order to give the project an overall score.  The lower the score the more risk there is to the project and the more caution should be exercised in deciding to the the project on.

The main features of the application allow you to create a new projection evaluation, maintain your list of projects and email the evaluation results to stakeholders.  Below are some screen shots of the application which can be found in the marketplace here.

MainScreenNewProjectProjectListEvaluation

  • Share This Post:
  • Share on Twitter
  • Share on Facebook
  • Share on Technorati

author: Tim Murphy | Posted On Tuesday, January 31, 2012 2:30 PM | Feedback (0)

Changing Team Foundation Server 2010 Workspace Mappings


When you place a Visual Studio solution into TFS or pull it down for the first time a default working path is set in the workspace mappings.  There are times when you need to point source code to a new location.  Once option you have is to simply use the Manage Workspaces dialog to edit the local folder for the your solution.

Select your workspace.

image

Click on the Local Folder and an ellipse button will appear to allow to set a new folder.

image

The problem with this approach is that it doesn’t seem to consistently cascade to all the child items.  The alternative is to use the Remove Mapping dialog, change the Local Folder and click the Change button.

image

This approach is very affective when remapping child folder locations but be aware of the fact that when you use this approach it will move the files from the original path to the new path.  If it is important that the file stay in the original location you will need to back them up first and copy them back after the remapping.  You will have to work with these options to see which works best for your situation.

  • Share This Post:
  • Share on Twitter
  • Share on Facebook
  • Share on Technorati

author: Tim Murphy | Posted On Thursday, January 26, 2012 4:36 PM | Feedback (0)

February 2012 Chicago Information Technology Architects Group Presentation


CITAG_logo-02a_thumb

So here is try number two.  Mother nature got the best of us last month with the threat of icy roads on our presentation night. Ruben Rotteveel has been gracious enough to reschedule his discussion of Advancements in Messaging Technologies for this month.  Assuming we do not get our usual February blizzard on that day it would be great to see as many of you there as possible. Be sure to register to joins us.

http://citag.eventbrite.com

  • Share This Post:
  • Share on Twitter
  • Share on Facebook
  • Share on Technorati

author: Tim Murphy | Posted On Thursday, January 26, 2012 3:27 PM | Feedback (0)

Twitter Search JSON Deserialization


In a previous post I talked about using the JSON to LINQ features of JSON.NET.  Thanks to Bil Simser I was able to do some testing of the deserialization capabilities of this library.  The key was his hint to leverage the json2csharp web site.  Below is the C# representation of the search results for a Twitter query created by putting an example of the search result into this site. 

public class Url
{
public string url { get; set; }
public string expanded_url { get; set; }
public string display_url { get; set; }
public int[] indices { get; set; }
}

public class Entities
{
public Url[] urls { get; set; }
}

public class Metadata
{
public int recent_retweets { get; set; }
public string result_type { get; set; }
}

public class Result
{
public string created_at { get; set; }
public Entities entities { get; set; }
public string from_user { get; set; }
public int from_user_id { get; set; }
public string from_user_id_str { get; set; }
public object geo { get; set; }
public object id { get; set; }
public string id_str { get; set; }
public string iso_language_code { get; set; }
public Metadata metadata { get; set; }
public string profile_image_url { get; set; }
public string source { get; set; }
public string text { get; set; }
public object to_user_id { get; set; }
public object to_user_id_str { get; set; }
}

public class RootObject
{
public double completed_in { get; set; }
public long max_id { get; set; }
public string max_id_str { get; set; }
public string next_page { get; set; }
public int page { get; set; }
public string query { get; set; }
public string refresh_url { get; set; }
public Result[] results { get; set; }
public int results_per_page { get; set; }
public int since_id { get; set; }
public string since_id_str { get; set; }
}

So how do we use this class once it has been created?  First we need to make sure that we are referencing the Newtonsoft.Json assembly.  As with the previous example we will use the WebClient DownloadStringAsync method to call Twitter.  The main difference is the small bit of call that is in the callback function. 

In the example below I have created a JsonSerializer and then feed the Deserialize method with a new JsonTextReader and the type of the JSON message class.  Once we get to that point it is a simple act of iterating through the object graph to find the members you are interested in.

JsonSerializer serializer = new JsonSerializer();
RootObject rootObject = (RootObject)serializer.Deserialize(new JsonTextReader(new StringReader(e.Result)), typeof(RootObject));

foreach (var tweet in rootObject.results)
{
this.Items.Add(new TweetViewModel(tweet.profile_image_url, tweet.text));
}

Between the JSON.NET library and the json2csharp web site the process of adding JSON deserialization to your Windows Phone app is much simpler.  Now go and put it to good use.

  • Share This Post:
  • Share on Twitter
  • Share on Facebook
  • Share on Technorati

author: Tim Murphy | Posted On Friday, January 13, 2012 12:28 PM | Feedback (0)

January 2012 Chicago Information Technology Architects Group Presentation


CITAG_logo-02a

This post is really late considering that there is less than a week before the event.  Fortunately this is because 2012 is starting out with tons of work to be done.  Not a bad problem to have.  This month we will have Ruben Rotteveel discussing Advancements in Messaging Technologies.  Be sure to register to joins us.

http://citag.eventbrite.com

  • Share This Post:
  • Share on Twitter
  • Share on Facebook
  • Share on Technorati

author: Tim Murphy | Posted On Thursday, January 12, 2012 9:09 AM | Feedback (0)

New WP7 App: Little League Coach


My first Windows Phone app, Little League Coach, has just been released into the marketplace.  If you have ever helped coach a team where every player bats every inning this app should help keep your sanity.  It is a simple application to allow little league coaches to manage the lineup for a game as well as keep track of batter rotation.  As a bonus it tracks pitches and outs during an inning.  Here are a few screen shots from the application.

Lineup2AddTeamMemberGameTracking2UmpireCounts2

  • Share This Post:
  • Share on Twitter
  • Share on Facebook
  • Share on Technorati

author: Tim Murphy | Posted On Wednesday, December 21, 2011 8:40 AM | Feedback (0)

Ways To Pass Time On Window Phone – TouchDevelop


A co-worker was showing me an in phone scripting environment on the iPhone and I knew I had seen one mentioned for the Windows Phone before.  TouchDevelop is an app from Microsoft Research that allows you to create small applications that do a wide variety of operations including using most of the capabilities of the device.  So could this be a fun way for us geeks to waste some time while waiting for our oil to be change or a table to open up at your favorite restaurant?

So what does this language look like?  The structure for TouchDevelop applications is broken into three sections: actions, data and events. 

Actions are essentially procedures and can be run independently from the user interface as long as they are not marked private.  One action can also execute another action using the “code” section of “expressions” UI.

Variables that are defined in the Data section.  They are global to the application and are persistent by default.  The variable types include not only basic structures like strings, but also more complex system constructs like JSON, playlist and camera objects.  This isn’t where all of your variables reside as many variables are automatically generated when you create assignment expressions.

The events that can be handled are somewhat limited but are appropriate for the phone.  As with some of the specialized data types the events are based around the different sensors and services of the phone.

Now the syntax is a little strange compared to most of the languages that I have used in the past.  It is very plain English which can throw you when you are used to more terse programming languages.  You have to get used to the concept of a “wall” instead of console which uses syntax like the example below.

var1->post to wall

You also aren’t going to get a WYSIWYG experience with the TouchDevelop environment.  You will have to create your own visual controls through code.  It reminds me of righting for the Win16 API in C++, only with less built in UI abilities.  If you get to this point then you probably want to start by copying an application that already has methods to generate buttons, text boxes and other controls.

Just to give you a flavor of the environment there are a number of screenshots below.

Screen Capture-1Screen Capture-2Screen Capture-3Screen Capture-4Screen Capture-5

In the end it is a bit of a mind bending challenge to learn to develop with TouchDevelop, but getting out of your comfort zone is always a good thing.  Enjoy.

  • Share This Post:
  • Share on Twitter
  • Share on Facebook
  • Share on Technorati

author: Tim Murphy | Posted On Tuesday, December 20, 2011 8:29 AM | Feedback (0)

Using JSON.NET To Load Twitter Search Results In WP7


The main way that Twitter provides feeds is through JSON.  Unfortunately the version of the .NET Framework that is on the phone does not include the System.Runtime.Serialization.Json namespace.  Rather than trying to brute force the JSON feed I have been looking into using the Newtonsoft JSON.NET library.

The first thing that I ran into with JSON.NET is that the documentation is severely tilted to the serialization side with almost no mention of deserialization.  This would have been my preferred approach considering work I have done with WCF.  In a future posts I intend to explore deserialization in JSON.NET.  Given my time constraints though I ended up using the JSON to LINQ feature of JSON.NET.

Once I headed down this new road I found that even the LINQ features did not work the way I would have expected them to.  I would have thought that when the library parsed the JSON feed it would be able to drill down like a normal object graph.  In the end I used the base JSON to LINQ ability to get a named set and then loop through it using the SelectToken method to pull individual values.

Let’s take a look at an example.  The first thing you need to do is open a WebClient object and assign a method to handle the DownloadStringAsync event and call the DownloadStringAsync method.

WebClient client = new WebClient();

client.DownloadStringCompleted += new DownloadStringCompletedEventHandler(client_DownloadStringCompleted);

client.DownloadStringAsync(new Uri("http://search.twitter.com/search.json?q=" + searchString));

Now comes the real work.  You will see that a JObject is used to parse the feed returned from Twitter.  After that you are able to get the “results” array by name.  I was concerned with getting the text and user image so while looping through the results I access the profile_image_url and text fields of each and record the values.

JObject searchResult = JObject.Parse(e.Result);
var results = searchResult["results"];

this.Items.Clear();

foreach (var tweet in results)
{
this.Items.Add(new TweetViewModel(tweet.SelectToken("profile_image_url").Value<string>(),tweet.SelectToken("text").Value<string>()));
}

Once I have this List of TweetViewModel items I can bind it to a templated ListBox to render it to the user.  In all this was a very simple piece of code that took a lot of trail and error because of poor documentation.  As I dig deeper into this library I will do my best to augment the official documentation.

  • Share This Post:
  • Share on Twitter
  • Share on Facebook
  • Share on Technorati

author: Tim Murphy | Posted On Wednesday, December 14, 2011 7:27 AM | Feedback (2)

Chicago Windows Phone Accelerator Lab Recap


This week I spent three day with close to 30 of my new best friends doing lots of Windows Phone coding and helping each other with our application.  The sessions were lead by Jeff Blankenburg and Dave Bost who and kept the atmosphere light.  This included us finding out a lot about Dave’s tastes in music.

While most of the time was spent working on our individual apps we saw how an app is submitted to the market place and what you can prep your app for the market place using the Marketplace Test Kit.  It was surprising how much of the process of is represented by this tool either in automated form or as scripts you can follow.

Another thing that we came out of the sessions with was a number of links to resources that are gems for both developers new to the platform or those wanting to branch out into new features.  Below are links to a couple of these resources.

We finished up the labs by going around the room and discussing what we had been working on and revelations from our work.  We also got to see a trio of interesting demos from our classmates.  In all it was a rejuvenating as well as an enlightening experience.  If one of these sessions comes to your area be sure to sign up.

  • Share This Post:
  • Share on Twitter
  • Share on Facebook
  • Share on Technorati

author: Tim Murphy | Posted On Friday, December 09, 2011 7:02 AM | Feedback (0)

2011 Year In Review


2011 has been an amazing year in which I ended up working on an exciting number of projects.  SharePoint has continued to be the hottest requested technology that I deal with.  At the same time Windows Phone 7 has put Microsoft back in the mobile market and I will be finishing off the year additionally writing for this platform.  At the same time the old standards of WinForms and ASP.NET have not left our market space.  Ultimately, the IT market is still on fire and I am looking forward to great things next year.

On another front, it was a great year for the Chicago Information Technology Architects Group that saw presentations on Functional Programming, Onion Architecture, SOLID, Scalable Internet Solutions, ORM Frameworks, Mobile Architecture, and Enterprise Architecture.  Our numbers have grown which has made the discussions in our meetings much more interesting.  I am looking forward to even more growth and more exciting topics in our third year.

PSC Group also continues to grow as I have now passed two years with this terrific group of IT Professionals.  I have been spending a fair amount of time interviewing perspective employees and helping to get new business opportunities started.  It really makes me glad to be part of this organization with amazing projects filled with top notch people.

In all, 2012 is looking like it is going to be very exciting.  The biggest challenge, as with all previous years, will be keeping up.  Here is hoping all of you have a great new year.

  • Share This Post:
  • Share on Twitter
  • Share on Facebook
  • Share on Technorati

author: Tim Murphy | Posted On Friday, December 02, 2011 4:06 PM | Feedback (0)

2012 Chicago IT Architects Group Call For Speakers


We are almost at the start of the new year.  The group is currently on our December break from presentations but we are looking to return full steam in January. The Chicago Information Technology Architects Group is community driven and as such we are looking for speakers and topics to keep our community thriving.  If you have a topic that you would like to present or know someone who has a topic that they love to talk about in the IT Architecture space please contact me through this blog.

  • Share This Post:
  • Share on Twitter
  • Share on Facebook
  • Share on Technorati

author: Tim Murphy | Posted On Friday, December 02, 2011 11:49 AM | Feedback (2)

TweetMeme Button or Template Plug-In for WLW


In my search for a way to allow readers to tweet post that I put on GWB I have come across the TweetMeme plug-in for Windows Live Writer.  It automatically puts a twitter button at either the top or bottom of your post depending on how you configure it. 

image

It comes with a warning that it does not work with blog servers that strip out script from posts which I made me afraid it was going to make it incompatible with GWB.  This turned out to be the case so I figured we would need either an upgrade to the GWB platform or writing my own WLW plug-in. 

In comes the Template plug-in.  This allows you to have standardized content that you can insert with a couple of clicks via the interface below.

image

This solved the problem (sort of).  It required that I remove the standard javascript that is defined by Twitter’s button page.  In the end I am hoping for an update to our Subtext implementation to incorporate features like Facebook, Twitter, Reddit and G+, but this should help us until that comes along.

Update:

It looks like this was all useless since it seems that the buttons are in GWB.  I didn’t think I saw them before.  Either it is recent or I am blind.

  • Share This Post:
  • Share on Twitter
  • Share on Facebook
  • Share on Technorati

author: Tim Murphy | Posted On Tuesday, November 29, 2011 2:06 PM | Feedback (0)

Adding Tweet Button To GWB Post


I have wanted to have a Tweet button on my individual posts for a short while.  So here is a test to see if the Twitter code for their button con work on Geeks With Blogs site via Windows Live Writer.

del.icio.us Tags: ,
  • Share This Post:
  • Share on Twitter
  • Share on Facebook
  • Share on Technorati

author: Tim Murphy | Posted On Tuesday, November 29, 2011 1:10 PM | Feedback (0)