# Tuesday, 24 September 2013
Tuesday, 24 September 2013 01:24:59 (GMT Daylight Time, UTC+01:00)
# Tuesday, 17 September 2013
I recently completed and published my first Windows 8 application. The app is simple: Click a button and the app selects 1 or more random numbers in a given range; the user can select the range of numbers and whether or not to re-use numbers. I wrote it because my user group needed such an app and because I wanted to learn how to write a Windows 8 application. I chose XAML/C# for this app pretty much by a coin flip. I still plan to write a Windows 8 app using HTML5/JavaScript. For me, the biggest challenge was were getting the correct layout using a combination of StackPanels and tables. I solicited the help of Jeff Yates, who explained the syntax to me and help me to fix the layout. The app was rejected the first time because I had checked a box on the property page stating that it was network-aware and I had not included a privacy statement page. My solution was to uncheck this box because it requires no network access. If you would like to see this app in action, you can download it at http://apps.microsoft.com/windows/en-us/app/raffle-picker/24508bc8-4e8e-4ba5-a77f-934df4a0018c

Screenshot.230704.100000[1]

Tuesday, 17 September 2013 05:03:48 (GMT Daylight Time, UTC+01:00)
Tuesday, 17 September 2013 02:57:36 (GMT Daylight Time, UTC+01:00)
# Monday, 09 September 2013
Monday, 09 September 2013 18:59:00 (GMT Daylight Time, UTC+01:00)
# Tuesday, 03 September 2013

Recently, I was asked to give a presentation to a group of brand-new software consultants about what to focus on with your customer. Here are the highlights.

First impressions are important!
You never get a second chance to do this. It's important to hit the ground running on every project. A win on day 1 is much more impressive to the customer than a loss on day 1 and a win on day 5.

Think about privacy
Lock your unattended workstation. Think twice before forwarding an internal e-mail to an external person. Be conscious of your customer's intellectual capital - be cautious about what you reveal when having casual hallway conversations.

Delight your customer!
As a consultant, this is the single best thing you can do to increase sales. It is far easier to sell more services to a happy customer than to find a new customer.

Listen to your customer
As we gain more experience, we tend to think we know the answer more quickly. Resist the temptation to tell the customer what they want before allowing them to explain the problem. Interrupting and answering questions before they are asked can come across as arrogant.

Be professional
If this is your first "real world" job, there are some adjustments. Know the dress code (if you don't know, ask); be punctual; stay focused during work hours

Communicate early; Communicate often.
I have made many mistakes in my career. The ones for which I payed the heaviest price are those that went unnoticed for weeks or months. Keep your customer and/or supervisor informed about what you are working on and any potential roadblocks. I often send a weekly status report to accomplish this.

Stay Positive
There will be times in your career when you don't feel motivated. Don't take this out on your team. Don't be the guy who constantly complains about management or the project status. Every project has positive and negative things. You'll be happier if you accentuate the positive.

Look for opportunities
Keep your ears open for pain points expressed by the customer - even if they don't relate directly to your project. If this is something your company can help with, communicate to your manager or sales rep. If a consulting company can solve a customer's business problem, both parties win.

Know the strengths of your company
Be aware of what your company does well. This will help you to look for opportunities and know who to call when you have a technical question.

Learn the technology stack
There is a lot to learn in this business, so you better get started. Take the time to learn the basics of your job and dive deep into 1 or 2 other areas. Read books and blogs, attend conferences and user groups, and listen to podcasts. There is plenty of information available.

Focus on teamwork
If your team succeeds, you succeed. Share the credit with others and you will find that you will generally share in the team's successes.

Learn names
This is something I'm not very good at but it can make a big difference in how you are perceived. The first day of a project, I always create a folder under "My Documents" for the customer and I add a text file to store the names of the people I meet. Whatever method works for you, remembering the names of those with whom you interact can make a big difference in the impression you create.

Bring passion to each project
Software consulting is an exciting way to earn a living. We get paid to play with toys all day and we are constantly learning. Embrace that. Your passion will tend to be reflected in your work.

Tuesday, 03 September 2013 18:43:00 (GMT Daylight Time, UTC+01:00)

Overview

The Google GeoCode API offers a service for retrieving driving directions between 2 addresses.

Syntax

The service is exposed through a URI. The syntax of the URI is

http://maps.googleapis.com/maps/api/directions/output?parameters

output is the format in which I want to receive result – either “json” or “xml”. I prefer the simplicity of json.

parameters is an ampersand-delimited list of name value pairs to pass to the API. The parameters I care about are

Origin

The starting address

destination

The ending address

alternatives

”true”, if you want the service to return more than one possible route. Unless I have a reason to provide multiple routes, I prefer “false”

Units

”imperial” to return data in feet and miles; “metric” to return data in meters and kilometers. This should depend on the country where the data is going to be used.

Sensor

”true”, if I am using a sensor to provide location; otherwise “true”. I don’t own such a sensor, so I set this to false.

Sample Code

Here is a sample URI to request directions from my old office to my new one, returned as JSON data.

http://maps.googleapis.com/maps/api/directions/json?origin=31555 W 14 Mile Road, Farmington Hills, MI, 48334&alternatives=false&units=imperial&destination=26957 Northwestern Highway, Southfield, MI, 48076&sensor=false

This is a nice function to call from JavaScript. I prefer the simple jQuery syntax for making Ajax calls like this.

var startAddress='439 East 31st Street #214, Chicago, IL 60616';

var endAddress='30 North LaSalle St, Chicago, IL 60616’;

var requestUrl = 'http://maps.googleapis.com/maps/api/directions/json?origin=' + startAddress + '&alternatives=false&units=imperial&destination=' + endAddress + '&sensor=false';

$.ajax({ 
url: requestUrl, 
dataType: "json", 
type: "GET", 
data: {}, 
error: function (err) { 
$(#distanceDiv).html("Error calling Web Svc.<br/>Calculate."); 
}, 
success: function (data) { 
var distance = data["routes"][0]["legs"][0]["distance"].text; 
$(# distanceDiv).text(distance); 
} 
});

The code above calls the service; then parses the resulting JSON to retrieve the distance and displays that distance in a DIV with the ID distantDiv. In this example, I hard-coded the 2 addresses, but you could use jQuery selectors to retrieve the address from elements on the page or user input.

Response

Below is part of the Json response to the service call

JSON Results

Limitations

There are some limitations you should be aware of. I am a cheapskate, so I’m using the free version of this API. With the free version, I can only send 2500 addresses per day. If I try to send more, the service will respond with a status of “REQUEST_DENIED” and no results will be returned.

Also, Google expects you to display the results on a Google Map. I’m not sure how they enforce this, but they don’t allow you to use the Geocoding API to display data on someone else’s map.

Tuesday, 03 September 2013 18:02:00 (GMT Daylight Time, UTC+01:00)
# Monday, 02 September 2013
Monday, 02 September 2013 18:16:00 (GMT Daylight Time, UTC+01:00)
# Sunday, 01 September 2013

Recently, I was asked to give a presentation to a group of brand-new software consultants about what to focus on with your customer. Here are the highlights.

First impressions are important!
You never get a second chance to do this. It's important to hit the ground running on every project. A win on day 1 is much more impressive to the customer than a loss on day 1 and a win on day 5.

Think about privacy
Lock your unattended workstation. Think twice before forwarding an internal e-mail to an external person. Be conscious of your customer's intellectual capital - be cautious about what you reveal when having casual hallway conversations.

Delight your customer!
As a consultant, this is the single best thing you can do to increase sales. It is far easier to sell more services to a happy customer than to find a new customer.

Listen to your customer
As we gain more experience, we tend to think we know the answer more quickly. Resist the temptation to tell the customer what they want before allowing them to explain the problem. Interrupting and answering questions before they are asked can come across as arrogant.

Be professional
If this is your first "real world" job, there are some adjustments. Know the dress code (if you don't know, ask); be punctual; stay focused during work hours

Communicate early; Communicate often.
I have made many mistakes in my career. The ones for which I payed the heaviest price are those that went unnoticed for weeks or months. Keep your customer and/or supervisor informed about what you are working on and any potential roadblocks. I often send a weekly status report to accomplish this.

Stay Positive
There will be times in your career when you don't feel motivated. Don't take this out on your team. Don't be the guy who constantly complains about management or the project status. Every project has positive and negative things. You'll be happier if you accentuate the positive.

Look for opportunities
Keep your ears open for pain points expressed by the customer - even if they don't relate directly to your project. If this is something your company can help with, communicate to your manager or sales rep. If a consulting company can solve a customer's business problem, both parties win.

Know the strengths of your company
Be aware of what your company does well. This will help you to look for opportunities and know who to call when you have a technical question.

Learn the technology stack
There is a lot to learn in this business, so you better get started. Take the time to learn the basics of your job and dive deep into 1 or 2 other areas. Read books and blogs, attend conferences and user groups, and listen to podcasts. There is plenty of information available.

Focus on teamwork
If your team succeeds, you succeed. Share the credit with others and you will find that you will generally share in the team's successes.

Bring passion to each project
Software consulting is an exciting way to earn a living. We get paid to play with toys all day and we are constantly learning. Embrace that. Your passion will tend to be reflected in your work.

Sunday, 01 September 2013 18:43:00 (GMT Daylight Time, UTC+01:00)
# Friday, 30 August 2013

I limited my travel during July and August because it was the last months I would have my sons at home before they moved out of state for college. But the coming months will be very busy and filled with a  lot of travel. I started this hectic schedule last week with a presentation on Strategies for Refactoring and Testing Legacy Code at the Northwest Ohio .NET User Group and this pace only accelerates into the fal.

Date Event Location Topic  
Sep 14 Code Camp NYC New York, NY HTML5 is the Future of the Web Link
Sep 21 Vermont Code Camp Burlington, VT TBD Link
Aug 30 CloudDevelop Columbus, OH Cloud and Azure and Rock and Roll Link
Oct 1 DevConnections Las Vegas, NV Strategies for Refactoring and Testing Legacy Code Link
Oct 2 DevConnections Las Vegas, NV Connecting the Dots: Using HTML5, jQuery, and Web API Together Link
Oct 16 Great Lakes Area .NET User Group Southfield, MI Connecting the Dots: Using HTML5, jQuery, and Web API Together Link
Friday, 30 August 2013 10:02:00 (GMT Daylight Time, UTC+01:00)
# Thursday, 29 August 2013

I limited my travel during July and August because it was the last months I would have my sons at home before they moved out of state for college. But the coming months will be very busy and filled with a  lot of travel. I started this hectic schedule last week with a presentation on Strategies for Refactoring and Testing Legacy Code at the Northwest Ohio .NET User Group and this pace only accelerates into the fall.

Date Event Location Topic  
Aug 30 CloudDevelop Columbus, OHn Cloud and Azure and Rock and Roll Link
Sep 14 Code Camp NYC New York, NY HTML5 is the Future of the Web Link
Sep 21 Vermont Code Camp Burlington, VT Effective Data Visualization Link
Sep 28 Tampa Bar/Code Camp Tampa, FL TBD Link
Oct 1 DevConnections Las Vegas, NV Strategies for Refactoring and Testing Legacy Code Link
Oct 2 DevConnections Las Vegas, NV Connecting the Dots: Using HTML5, jQuery, and Web API Together Link
Oct 16 Great Lakes Area .NET User Group Southfield, MI Connecting the Dots: Using HTML5, jQuery, and Web API Together Link
Oct 17 Southwest Fox Gilbert, AZ HTML5 is the Future of the Web Link
Oct 18 Southwest Fox Gilbert, AZ How I Learned to Stop Worrying and Love jQuery Link
Thursday, 29 August 2013 18:39:00 (GMT Daylight Time, UTC+01:00)