All posts in “Programming”

Install Windows XP Guest Services in Windows 10 HyperVisor

I needed to do a test in a windows xp environment today. Since I am running Windows 10 I simply created a new Virtual Machine in Hyper-V Manager and installed an old copy of Windows XP from an ISO image.

After completing the install, I could not find any way to install the Integration Services (aka Guest Services). I never had this issue in Windows 8.1, so I wondered if I could just use the drivers from Windows 8.1.

Since I have a backup of Windows 8.1 before I upgraded, I went searching the backup and found this folder:

C:\WINDOWS\VMGUEST

I restored this folder and downloaded an application to create an ISO image from a folder. The program I used was http://sourceforge.net/projects/iso-creator-cs/

Once I had a vmguest.iso file, I just mounted this in my guest operating system and ran

D:\support\x86\setup.exe

Now I am running Windows XP with integration services in Windows 10

What are M-shaped people?

This week our team spent some time reviewing all of the points on Arlo Belshee’s Adaptive Engineering Proficiencies.  It was a fantastic discussion and a sobering experience learning that many of my traditional beliefs and practices when developing software lead to dead ends instead of leading to awesome software.  It became very clear  what proficiencies I will work on to get back on the right path.  One first step was to stopped code reviews on our team.   This was very hard to swallow at first because code review is actually a favorite practice of mine.  My former belief was that code reviews made developers awesome.

To begin the journey to get back on track to awesomeness, one proficiency I needed to understand is what a T-shaped and M-shaped people are.  The T and the M letters illustrate the breadth and depth of a person’s skillset.

From our team discussion and my short research on the internet, the horizontal bar in the letter T represent the ability to be collaborate in the many different disciplines of software development.  Some examples of the disciplines might be a person who is

  • knowledgeable in process management (ITIL, COBIT)
  • agile methodologies (scrum, kanban, xp)
  • quality assurance skills
  • writing code (C#, java, javascript, ruby)
  • design/layout skills and css
  • data skills (sql, cassandra, mongo, etc)

T shaped person
These are skills in a traditional development team are considered “roles” might be performed by a different person on the team. On a cross functional team everyone is expected to perform any role.

The vertical bar of letter T represents the depth of the skills, so in my case my C# development skills is where my vertical bar is the longest.

For a more descriptive explanation of T shaped person read this article with IDEO CEO Tim Brown and T-Shaped Stars: http://chiefexecutive.net/ideo-ceo-tim-brown-t-shaped-stars-the-backbone-of-ideoae%E2%84%A2s-collaborative-culture

So what is an M-shaped person?

The vertical bars represent the same concept as T, so this person would have deep knowledge in many different skillsets.  They are equal or more knowledgeable in the skills expected of a T-shaped person.  These people thrive as a member in a high performance cross functional team.

Other terms that have been used to describe abilities and skills are I shaped and E shaped people.   I-shaped people are very narrow skilled with no breadth.  This most often happens for people in the roles of dba or project management.  No matter what the skill is, I shaped members on a team should not be acceptable.  E-shaped people is a concept similar to T shaped where people have depth and breadth, but also represents a persons “experience, execution, exploration, and expertise” traits.   Source : http://culturecartography.wordpress.com/2012/07/26/business-trend-e-shaped-people-not-t-shaped/

How can I transform from an I-or T- shaped person to an M-shaped person?

If you follow the path on the Adaptive Engineering subway map, the route to awesomeness is full time pairing.  If you are you in a quality assurance role and want to learn Test Driven Development,  start full time pairing with a developer.  Insist that you won’t write another test case unless you are sharing a computer monitor with the developer.  It’s a win all around, you are creating two m-shaped team members while writing code and test cases in pure awesomeness.

Connecting to a PHP Web service with WCF in C#

I was connecting to a web service hosted in PHP today when WCF threw the following error:

The content type text/xml; charset=ISO-8859-1 of the response message does not match the content type of the binding (text/xml; charset=utf-8). If using a custom encoder, be sure that the IsContentTypeSupported method is implemented properly. The first 1024 bytes of the response were: …

I did some searching on the internet and it seems to be a known issue.  Here is exactly how I solved it.  I created three new classes which I have included links to download:

CustomTextMessageBindingElement.cs
CustomTextMessageEncoder.cs
CustomTextMessageEncoderFactory.cs

After adding these to your project add the following code to set the custom binding


CustomBinding binding = new CustomBinding(
new CustomTextMessageBindingElement("iso-8859-1", "text/xml", MessageVersion.Soap11),
new HttpsTransportBindingElement());

myWebService client = new myWebService();

client.Endpoint.Binding = binding;

Download code here WCF_CodeSample

 

Thanks to these links for the source files and answers

http://msmvps.com/blogs/paulomorgado/archive/2007/04/25/wcf-text-message-encoding-and-iso-8859-1-encoding.aspx

http://msdn.microsoft.com/en-us/library/ms751486.aspx

http://stackoverflow.com/questions/7033442/using-iso-8859-1-encoding-between-wcf-and-oracle-linux