# Monday, 30 September 2013
Monday, 30 September 2013 20:57:00 (GMT Daylight Time, UTC+01:00)
This past Saturday, I experienced my first bar camp - The Bar Camp Tampa Bay. For those who don't know, a bar camp is a technical conference run by the attendees. Unlike a code camp, sessions are not selected in advance; instead, any attendees can sign up to deliver a presentation during an open slot. Technically, I attended this same event last year. However, last year, the Bar Camp was combined with the Tampa Code Camp and I delivered five presentations, which prevented me from visiting the Bar Camp side of the event. This year, I experienced Bar Camp head on. I signed up to deliver a presentation titled "Connecting the Dots: Using HTML5, jQuery, and Web API Together". It went really well. The room was packed and, after every seat was filled, people sat on the floor in the aisles. The only downside was that I ran out of time, but a number of people came out in the hallway with questions. It was a good experience because I'm delivering the same (but longer) presentation at DevConnections this week. I attended a few sessions: students showing off robotics, how to write a successful blog, and lessons from the Game of Thrones (Winter/death is coming to us all eventually and we should be ready). Although most of the attendees were technologies, I noticed that most of the sessions were not about technology - many were about startups and social media and marketing and soft skills. Still, people were engaged and I didn't hear a single complaint about a disappointing session. I also had a chance to meet a number of new people. Most attendees were not Microsoft developers, but we still found common ground and I came away impressed by the Tampa area developer community.
Monday, 30 September 2013 01:36:48 (GMT Daylight Time, UTC+01:00)
# 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)