# Friday, May 15, 2009

Episode 23

Michael Letterle is a developer for Preemptive Solutions, a company that makes the .Net obfuscation product Dotfuscator.  I was familiar with Dotfuscator, but I was unaware of most of their other products.  In this interview, Michael describes the different software created by Preemptive.

8 mins

Friday, May 15, 2009 12:54:39 PM (GMT Daylight Time, UTC+01:00)

Today I gave a presentation (again) on the Microsoft Managed Extensibility framework.  Below are the slides and demos used for this presentation.

ProjetListDemo A simple demo showing the syntax for MEF imports and exports 

DemoAccounting shows how to dynamically add modules to an application at runtime, without recompiling.

Friday, May 15, 2009 3:26:06 AM (GMT Daylight Time, UTC+01:00)
# Wednesday, May 13, 2009

Episode 22

For the past six years, Jamie Wright has been building applications using Rocky Lhotka's CSLA framework.  In this interview, Jamie explains the framework and why he is such a fan.

10 mins, 23 secs

Wednesday, May 13, 2009 1:02:51 PM (GMT Daylight Time, UTC+01:00)
# Monday, May 11, 2009

Episode 21

Microsoft Developer Evangelist Jeff Blankenburg coordinated the Stir Trek conference in Columbus, OH to present highlights of the recent Mix09 conference.   In the middle of the day, he took a few minutes to discuss what he was doing.

5 mins, 4 secs

Monday, May 11, 2009 10:57:10 AM (GMT Daylight Time, UTC+01:00)
# Sunday, May 10, 2009


Juan is a software developer working for a consulting company.  He is smart, conscientious and hard-working. One day, Juan showed up at his customer, was given a task and set off to his cubicle to complete it.  After working diligently for a week, Juan completed the task, checked in his code and asked for a new task.  A few days later, a tester opened a defect against Juan's task.  It turns out that Juan had misunderstood the assignment.  He had coded to the task as he understood it rather than as the task writer understood it.  Juan received clarification, completed everything correctly in a few days, and resumed his work.  No big deal, thought Juan.  In fact, the actual assignment was simpler than he had originally anticipated so he implemented it correctly in less than a week.

Over the next 6 months, Juan did a lot of very good work for the customer.  Any minor mistakes he made were very small compared to all he accomplished.

When Juan rolled off the project, he received an evaluation from his manager.  To his surprise, she asserted that Juan had trouble following directions.  She had never told Juan this was a problem, but the evaluation listed several minor incidents to support this point. After working hard and receiving only positive feedback for six months, Juan expected a better evaluation. 


Ammal is a software developer working for a consulting company.  He is smart, conscientious and hard-working. One day, Ammal showed up at his customer and was given a task.  Before beginning this task, he verified that he understood it by articulating his understanding to the person who wrote the task.  Before writing a line of code, he was able to reconcile all discrepancies between his assignment and his understanding of said assignment.    He then set off to his cubicle to complete the task.  After a couple days of writing code, he had a better understanding of the system and the environment in which he worked, so he was able to identify some ambiguities in the task description.  He formed assumptions around these ambiguities, but he immediately sought a decision-maker to validate his assumptions.

When Ammal began coding, he understood his task and was able to complete it the first time.

After about a week, he checked in his code and asked for a new task.  A tester tested and passed his checked-in code.

Over the next 6 months, Juan did a lot of very good work for the customer.  Any minor mistakes he made were very small compared to all he accomplished.

When Ammal rolled off the project, he received an evaluation from his manager.  His manager raved about Ammal’s performance.  She specifically called out some of his accomplishments and made no mention of any minor issues.

What went wrong for Juan?

Ammal and Juan performed almost identically, yet their evaluations were considerably different. So where did Juan go wrong? 

In this example, a few things worked against Juan.

A bad early impression marred the manager’s opinion of Juan.  The manager didn't stop to ask why the miscommunication took place (Generally, both parties are to blame for a miscommunication).  She only noticed that Juan spent over two weeks on a task that should have taken one.  Once this opinion formed, it was difficult to change and everything the manager saw afterward was colored by her early perception.

Get feedback early and often

Ammal avoided this early bad impression by initiating communication early.  By being proactive, Ammal not only avoided the initial rework, he also established a communication channel, making it easier to get feedback sooner. 

This frequent feedback loop that Ammal encouraged helped him to correct misunderstandings before they cost him time and effort. 

Frequent feedback loops are a very popular strategy in software development.  Many agile methodologies suggest scheduling software delivery in sprints of 1-2 weeks in order to increase the frequency at which developers will receive feedback from business users.

But this increased feedback cycle can also pay dividends outside of software delivery.  On the projects I work, I strive to get feedback from my manager or managers as early and as often as possible.

Within days of starting on any project, I always try to schedule a one-on-one appointment with my new manager.  We met alone for anywhere from 15-60 minutes to discuss the manager’s expectations of my role.  I may have already received information about my role but I want to get that information from the person who is going to evaluate me.

I may have been hired to write code, but does the manager expect more from me?  Am I expected to mentor junior developers on the team?  Would it be helpful to write documentation on the features I implement?  Is unit testing important in this environment? Should I look for ways to improve the process in the department?   Are there particular areas of the application in which they needed more help?  I want to find out the kind of things that they value so that I can focus my energies there. 

I use this initial meeting to describe my experience, strengths and interests and to suggest ways that I might add value.  I always emphasize that I am here to add as much value as I can, but that I am looking to the manager to tell me where I can most effectively do that.

I take many notes during this meeting and use them to guide my activities for the rest of the project.

Different managers have different ideas about how their employees should work.   Some believe in controlling everything themselves and some believe in empowering users.  Usually a manager’s style becomes obvious during this early meeting.

The initial meeting helps to establish goals; but this is not sufficient.  We need to act on those goals – keep them nearby; tape them to your monitor or tack them above your desk. 

Send frequent updates to your manager and let him know what you are working on and how that relates to the goals the two of you set together. 

Send him a weekly status report.  Don’t ask if he wants or needs a status report – just send him one.  Every week.  No exceptions.  Even if you are on vacation, send him a status report, letting him know what is pending.

If possible, encourage your team (and your manager) to hold a daily standup meeting.  This meeting should be less than 15 minutes long (Forcing everyone to stand up discourages long meetings) In a standup meeting, each team member gives a quick status of what he did yesterday, what he intends to do today, and any impediments standing in his way.

These status reports and status meetings help you to stay on track; they help you to communicate your agenda and goals to your manager; they allow your manager a chance to give you frequent feedback; and they give you a chance to brag about your recent accomplishments, so they are fresh in the mind of the manager.

The punch line

On his next project, Juan adopted the strategy of getting feedback early and often from his manager and others.  As a result, his work quality improved a little but the perception of his work quality improved substantially.  This time around, Juan’s performance review was as good as Ammal’s.  Which is where we get the old expression: “If you’ve seen Juan, you’ve seen Ammal.”

Sunday, May 10, 2009 11:54:26 PM (GMT Daylight Time, UTC+01:00)
# Wednesday, May 6, 2009

Microsoft SkyDrive is an online file storage and sharing service provided by Microsoft.  You may store up to 25GB in your SkyDrive folders.  Using SkyDrive, you can copy files to a location in "the cloud" and share them with others.  “The cloud” refers to some unknown yet accessible location not on your local computer.  You can share each folder and assign permissions on folder you create to a single user, a group of user or to all users, allowing them to Read, Write or Delete files in that folder.

In order to use SkyDrive, first sign up for the Live Mesh program.  You can do so at https://www.mesh.com/welcome/default.aspx.  Associate your Windows Live ID with the Mesh account and you will be required to enter your Windows Live e-mail and password.  If you don't currently have a Windows ID, there is a link on this page where you can create one.

Once signed up, you can access a SkyDrive account from several locations. 

Your SkyDrive page looks like the one below. 

By default, there are 2 folders: Documents and Public

Only you have access to the Documents folder, making it ideal for backing up files or making them available when you use a different computer.  Because a user must supply a username and password to view this folder, files stored here are protected from prying eyes.

Files in the Public folder can be viewed by anyone.  Copy files here that you want to share with the world.  Not only does this free you from the bother of e-mailing files to numerous recipients, it is a good way to get around the size limitations imposed by most e-mail systems.  Everyone is able to view (but not add to or update) all the files in this folder.

The permissions on the Public folder cannot be changed. 

If you require more granular sharing permissions, you should create a new folder.  To do so, click the ‘Create Folder’ link. 

On the Create Folder page, enter a name for the folder and select with whom you want to share the files in this folder.

The “Share with” dropdown allows you to specify users or groups of users with permission to view, delete or modify the files in this folder.  Only you can modify or delete the folder itself.  You cannot grant that permission to anyone else. The groups and users you specify must exist as contacts in your Windows Live account. Once you select users or groups with whom to share, you can specify one of the following two permission sets
• Can view files
• Can add, edit details, and delete files

After setting sharing permissions on a folder, you may go back later to alter those permissions.

Once the folder is created, you have the opportunity to add files to it by either dragging files from Windows Explorer or by clicking the Select files from your computer link.

To share the files in a folder, give them the file’s URL.  If you want embed a link to the file in a web page, the Embed option generates HTML to provide an HTML icon, link and description.  For example, the icon below is a link to PowerPoint slides covering SkyDrive and other Live services.

In this article, we showed how to share files using Microsoft SkyDrive.


Wednesday, May 6, 2009 4:43:44 AM (GMT Daylight Time, UTC+01:00)
# Sunday, May 3, 2009

They ran their final unit tests, checked in their code and wiped the sleep from their eyes before lumbering up the basement steps into the museum.

They had been designing, coding and testing for almost two straight days - some with only a few hours sleep; some with no sleep. Many had brought sleeping bags and had slept in the museum.  A mid-afternoon power outage had slowed them down and drove them from the museum basement, but it did not stop them.

Up the steps, at the other end of the museum, was the closing ceremony.  Here, everyone quickly re-energized.  They saw demos of the applications everyone had built.  They saw the gratitude of the charities, who could not have afforded to pay for this software.  They felt the accomplishment won of hard work and perseverance.

The Lansing Give Camp was held in the basement of the Impression 5 Science Center (except for Saturday afternoon, when a power outage forced everyone to find a new place to work for a few hours) and helped out thirteen capital-area charities.  Teams of developers, designers and DBAs worked through the weekend to write custom software for each charity. 

Organizers Jeff & Carla McWherter and Jay & Amy Harris worked the longest.  Weeks in advance, they began recruiting software professionals, securing a location, finding sponsors and vetting charity requests.  On Friday, they arrived hours before everyone else.  They bought food, set up work areas and made sure the network was in place to allow everyone to be productive when they arrived.

Many volunteers got something out of the Give Camp as well.  Amy Harris told of a college student she met, who said he learned more this weekend than in any of his classes.

In the end, Jeff McWherter called the event a success because the charities were happy.  But he was quick to point out it is not over.  Many developers maintain a relationship with these charities and continue to enhance the applications they wrote.

But on this Sunday evening - as the closing ceremonies ended and appreciation was drowsily accepted - the volunteers headed off for home seeking hot showers and clean sheets.

Until next year.

Sunday, May 3, 2009 1:05:17 PM (GMT Daylight Time, UTC+01:00)
# Friday, May 1, 2009

Episode 20

David Edson of visibility.biz spends his time consulting on and teaching custom development using Microsoft Visio.

In this interview, he describes the advantages of using Visio as a platform for data visualization.

7 mins, 17 secs


Friday, May 1, 2009 12:03:05 PM (GMT Daylight Time, UTC+01:00)
# Wednesday, April 29, 2009

Episode 19

The Lansing Give Camp April 24-26 helped over a dozen charities. 

After months of preparation and a weekend with almost no sleep, Jeff & Carla McWherter and Jay & Amy Harris still had enough energy to talk about what made this event so successful.

8 mins, 43 secs

Wednesday, April 29, 2009 11:43:07 AM (GMT Daylight Time, UTC+01:00)
# Tuesday, April 28, 2009

Mr Eaton I expected that the Kalamazoo X conference would be a success but I was surprised by how successful it was.

Everything started with Michael Eaton.  He turned the concept - a conference consisting primarily of talks on soft skills - into reality.  Assisted by a staff of volunteers, Michael secured the venue, promoted the event, signed up the sponsors and recruited the speakers.  The speaker list was impressive - most traveled from Ohio and most have a solid reputation in the development community. 

I was grateful that Mike asked me to speak at this conference and I was excited to do it.

Chris Woodruff A couple weeks ago, Mike suggested that we switch from a multi-track to a single-track event.  This meant that all sessions would be held in the same room and that no two speakers would talk at the same time.  In order to accommodate this format, all sessions had to be cut from one hour to 25 minutes.  This was difficult for those who had already prepared an hour-long talk.  However, nearly all were able to make the adjustment.  (At least one speaker decided to back out after the format change was announced).  For me, this was less of an issue because I had never given my talk before and had barely begun preparing it. 

The format worked really well.  Speakers were forced to cut the fat from their slides and each talk was concise and to the point.  This also gave me the opportunity to watch every session, since I never had to choose between two excellent speakers.

One thing that added to the event was Mike's skills as a Master of Ceremonies.  He introduced each speaker by telling a personal story about him or her.  It was clear he was familiar with all the speakers and had put some preparation into these introductions.

My talk - Effective Communication with your Customer or Manager - was very well received.  Several people approached me afterward and told me how much they enjoyed it.  I'm working on a series of articles on this topic and hope to have them out in the next few weeks.

Leon The most telling thing about the success of the conference was that there were attendance was higher at the end of the day than at the beginning.  Whatever small attrition occurred during the day was more than offset by others showing up.

I'm looking forward to next year.

See more photos here

Tuesday, April 28, 2009 5:38:37 AM (GMT Daylight Time, UTC+01:00)