Monthly Archives: July 2007

The Personal Divide

I’ve done it.  I have decided to split out the personal posts off of this blog.  In other words, only expect Citrix related posts on this blog in the future.

For those of you that want to keep posted of my non-Citrix related posts, please tune to my blog on WordPress.

I heard the idea through the grapevine and finally I took the step to make this happen.  It is a good thing since it frees me from worrying about how much I should say about non-Citrix things when places like Citrix Community include the posts.

So thanks for listening and from now on my focus will only be Citrix here.

MAPPORT – Simple alternative to NET USE for Citrix COM and LPT Ports

I posted this internally first but have realized that it has value outside Citrix as well.

Surprise. Citrix could support more than COM9 for its COM port redirection.

Currently Citrix recommends using NET USE to map COM ports. The problem is that NET USE has a feature (bug?) that only allows up to COM9. This is because as soon as you try COM10, it mistakenly thinks that COM10 is the remote name. There must be parsing in NET USE that only allows for a one digit suffix. Besides this, NET USE is really only meant for LPT ports anyways.

So, why not build our own version of NET USE? Good question. Here’s the answer:

// MAPPORT.cpp : Simple Program to map COM and LPT ports
//

#include "stdafx.h"

int wmain(int argc, WCHAR* argv[])
{
    if(argc == 3)
    {
        DWORD rc;
        NETRESOURCE NetResource;

        memset(&NetResource, 0, sizeof(NetResource));

        NetResource.dwType          = RESOURCETYPE_PRINT;
        NetResource.lpLocalName     = argv[1];
        NetResource.lpRemoteName    = argv[2];

        wprintf(L"Mapping Local(%s) to Remote(%s)\n", argv[1], argv[2]);

        // we want a added connection with nothing special
        rc = WNetAddConnection2(&NetResource, NULL, NULL, 0);

        if(rc != NO_ERROR)
        {
            wprintf(L"Error with WNetAddConnection2 rc(0x%x, %u)\n", rc, rc);
        }
        else
        {
            wprintf(L"Mapped successfully\n");
        }

    }
    else
    {
        wprintf(L"MAPPORT local_device remote_device");
    }

	return 0;
}

This is a simple tool I wrote just for the sake of testing. It turns out to be very handy for this issue (>COM9). There is a tool that Citrix has provided internally called MAPCOMPORT (Internal Article CTX109186) but I believe you can only get it if your are a reseller. This tool was created in 2006 based on the problem with greater than 9 COM ports.
If there is interest, I am willing to look into providing this code in executable form. I realize that not everyone has Visual Studio installed. I do not think that it is common within Citrix blogs to provide executables. It will be interesting to see how this would work.

Do Not Ask, Just Observe

Recently I attended a very compelling lecture by Michael Schrage in Sydney.  Michael has a very diverse experience within the world of computing but perhaps the most interesting (for me) is his observations about innovation.

He said something very important for me that has helped to clear up something that has baffled me for some time.  It is the mantra of most product development cycles that you must ask the customer what they want.  This is supposed to happen at the beginning of a product cycle and is usually incorporated into the requirements which lead to all the other stages.

What Michael said that changed my thinking was that asking the customers is not always the best thing to do.

This would be considered heresy in most corporations.  It would probably even upset a few customers out there.

My interpretation of what Michael said is that it is okay to ask about desired features but the real understanding comes from observing what features a customer used.

Michael gave an example of how Microsoft spends millions of dollars collecting information about what new features should be included in Office.  In this case, customers did ask for new features.  The surprising result is that 80% of these new feature requests are already incorporated into Office.

Most people would assume that the people had not just read the manual or taken the time to explore the software.  It seems to go beyond both of those assumptions.  If a user is not using something, the user is either not really interested in that feature or thinks it is not worth finding.

This makes sense.  Don’t ask the customer to create items out of thin air.  It is not like Boeing is going to ask passengers what features they would prefer (I’m sure they do but it must be a fairly limited scale).  Customers might come back with requests to make the flight times much faster or reduce the amount of turbulence or increase the seating area per passenger.  The point is that the customer is likely to ask for the moon but not be willing to pay a fortune to get it.

In software is it easy to make mistakes with customer demands.  Some requests are fairly trivial but can actually lead to confusion to a great number of existing customers.  It becomes a bit of a balancing act.

Michael’s view is that it is far better to produce prototypes and find a way to observe how these prototypes are used.  This leads to insight into what features customers really want.

His view is correct based on my experience.  I just didn’t see it as clearly as him.  Now that he has illuminated the issue, it has become much more transparent.

The old saying goes something like “Do as I do, not as I say”.  This concept explains why requested features do not always succeed.

I have one more story to share based on a previous post (the one just before this one).

When I was struggling with English 101 at the University of Arizona, I learned a valuable lesson that was not taught in class.  It was okay to ask the Teaching Assistant what was wrong with a paper revision.  It was always important to take note of the feedback, especially if it was painful or confusing.  The next step for revision needed to include this feedback in order to increase the chances for success.  However, stopping there was a mistake.

A TA (Teaching Assistant) would only state what would match their expectations.  Once I heard a TA explain that if you only did what a TA said, you could only be guaranteed an average rating (C grade).  This was pivotal.

In order to get an above average grade, a student would need to surpass the expectation of the TA and this could only be done by finding fault and improvement for the sake of revision.  In other words, you needed to surprise the TA with the better than expected results that you came up on your own.

This is the bigger secret of software development as well.  You cannot just do what the customer asks for.  You need to surpass this expectation as if you know the customer better than themselves.  You need to know what your customer does and find ways to surprise them (pleasantly of course).

This is when your customers will become your fans.  This is when momentum will move forward as the evolutionary cycle continues with the progress of new ideas.

It is key to allow prototype failures to occur.  Without failure you will never learn what will lead eventually to success.

PowerPoint Abuse

Years and years ago at university, I was an engineering student taking classes I was not completely comfortable with. I did not mind the math, science, and engineering classes but had difficulty with ones classified as humanities or language. This really is not news to most engineering types. There seems to be biases with how brains work and if you tip it too far one way it makes it very hard to go the other way.

So, in short, I struggled with the English classes in my first year. In the end I did well but this was more based on my ability to think creatively instead of my ability to master the nuances of the English language and write wonderful essays or stories.

My common theme during these classes was how computers related to society. I remember writing one essay about how computers were only a tool and it was up to people how they were used. This was back in the days that popular fiction depicted computers as being inherently evil and most average people considered computers as potentially dangerous. Perhaps it really was not that way in 1983 but I certainly perceived people’s mistrust of what computers could do.

This leads to the topic of PowerPoint. Doing presentations has always been a mainstay of corporate environments. At IBM, it was all about using transparencies with overhead projectors. You know, the ones that you could draw on or print out with special plotters. People actually used to switch the images by switching pages manually. The content, however, is the same format as today. People trying to impress someone (a boss, co-workers, or maybe even a CEO), invest huge amounts of time trying to sell a pitch using whatever resources they have available. PowerPoint happens to be a tool overused for this purpose.

I recently came across a video that mocks the abuse of PowerPoint at Creative Leadership Forum . In this video, it is clearly shown how PowerPoint content can become a joke. As most people, I have seen all these elements in the countless meetings I have attended since 1989.

I remember one individual at IBM that focused solely on his image and not any technical skills. This meant that he was really good at presenting statistics at meetings but had no technical understanding of how things worked. Somehow this was acceptable. Not only that, he was promoted solely on his ability to put together a compelling presentations without understanding what the numbers really meant.

Whenever I spot presentations that are too polished and do not actually hold any real value technically (and they are meant to address a technical issue) I really get annoyed. I know the upper level managers will love it but completely miss the point that it has no implementation value. I get even more annoyed when I see people getting rewarded for bad behavior.

I suspect there is a drive for managers of power to have things be easy to consume and decide. Things which are visible in simple form are more likely to be judged to have value.

The warning I would give is that the presenter that focuses on how things look will obviously miss how things actually are and will more interested in appeasing management appetites than telling things as they really are.

It seems this topic has opened up some old wounds. I’ll have to remember to let them heal properly this time.

Anyways, take a look at the video and it might teach you something. Humor often makes light of things and this usually leads to change based on people realizing how silly they look.