Archive for April, 2005


I was talking with some tech friends recently about instant messengers (IM) and their value to me as a geek, businessman, parent, friend and family member. There was some surprise among the group that this technology is anything more than a communication tool for kids, or another instant interruption in the flow of the workday.

I find all of these apps extremely productive and useful in both business and my personal life. For instance, I have AOL IM (AIM) to keep tabs on my kids and to be more accessible when I am not with them. They use instant messenger to talk to their friends and do homework collaboration projects. One huge benefit of them having IM is the pure fact they stay off our family phone. I know when they get home from school because I see them pop up in AIM. I may actually talk to my parents on AOL IM more than I talk to them on the phone. My mom is actually shocked if she cannot contact me in IM, because that means I am away from my computer. I know…shocking.

I use MSN IM to communicate with some friends and family, but mostly to interact with my tech partners and customers. Yes, customers! I have customers who pay me to contact me via IM. Most of these clients are other developers who have hired White Light Computing for mentoring or testing. It is easy for a developer to pop me an instant message with a quick question, and usually get a quick answer so they can continue doing what they are working on. Same for me if I am testing a module for them, I can inquire about a feature or clarification of a requirement. It does not replace phone conversations, but I can say it is easier to send code examples via IM easier than a phone call. Some times a client will just ask if it is a good time to call. It is an additional way to provide good customer service.

When I was a partner at Geeks and Gurus, the Steves and I used IM extensively. Before we had an office we typically worked at home and our homes are in diverse geographic locations around the city of Detroit. It is a long distance phone call so instant messenger saved us from chewing through our cell minutes. Heck, we instant messaged each other while we were in the office and at no point were we ever 20 feet apart {g}. It was not unusual to find us all online at 11:00 at night discussing some business or technical issue we needed to solve, or just chat about how the Red Wings were doing that night. Very convenient, and very productive.

I have not experienced much of the unsolicited interference I have read about (like SPAM, but an IM, not an email). I have in the past with MSN Instant Messenger, but it has been more than a year since the last “attack”. I have very few individuals on my block lists. I believe it depends on your configuration. I have limited my “profile” on AOL IM, MSN IM, and Skype to only get calls from people on my contact list. I also set it up so people can only find me if they know who I am.

Skype is the newest of the IM technologies I am using. Skype is both a voice and instant messenger built into one. Actually, the latest MSN IM also has voice, but I have not used it. Skype is free (as are the other instant messengers) and offers crystal clear voice communications. I swear the clarity makes it sound like the person is sitting across the table from you. This could revolutionize the way I communicate with people I normally use instant messenger. After all, the biggest drawback of IM is my need to type. Typing is much slower than talking so conversations on IM take longer. On the other hand, typing out something allows you to think longer about what you are saying, so you can often eliminate embarrassing statements before you send them.

There are only two issues I have with three different IM technologies. The first is maintaining three sets of contacts, all which are separate from my email and phone contacts. I know there are tools to combine the different IMs together, but it has not been painful enough for me to pursue. The second is the network gods who lock down the ports used by these technologies. I have a customer who blocks MSN IM so I only have access to Skype and AOL IM via the client tools. I know there is Web access available, which I am going to investigate further. I am onsite three days a week and the lack of access is bad for business.

I hear from others how they find all these technologies disruptive. What people often forget is each of the tools have status settings to inform the people who can interrupt you that you are busy. If I do not want to be interrupted I set the status to busy or offline and get my work done. If I forget to set my status and someone contacts me, I apologize and see if we can schedule something for later. It really can be a controlled accessibility.

If you are interested in joining my “buddy list”, send me an email and we can correspond with the necessary contact details. It does surprise me to see people post them in blogs. I think this opens one up to the hacks and unsolicited interruptions people complain about, but that is just my opinion.


Last weekend was an absolute blast in Atlanta where the Utica Community School’s ThunderChickens (robotics team 217) competed in the FIRST Championships along with 9,000 students at the Georgia Dome. You may recall from an earlier blog posting that my oldest son Chris is a programmer on the team and White Light Computing is a team sponsor. The competition is the best-of-the-best with 466 teams from 19 countries, making it more of a true world championship than a national championship.

After a slow start, the ThunderChickens finished 8th out of 85 teams in the Archimedes division and joined the number one alliance (Adambots from Rochester Michigan, our ThunderChickens, and Menlo Atherton High School team from California). This strong alliance competed in the elimination round where they became the Archimedes Division Champions without losing a single game!

The four divisional alliances (each with three teams) competed against each other for the World Championship. The Archimedes alliance won the first game against the Newton alliance before barely losing the next two games in the semifinals. The alliance they lost to eventually became the World Champions. It was heartbreaking, but the team did a great job and the alliance worked together as if they have been doing it all year long. Still, they made it to the “final four” and we are extremely proud of the gracious professionalism the teams showed throughout the competition. Many people at the competition thought the ThunderChickens had the best robot on the field.

The Woodie Flowers Award, presented by Small Parts, Inc. to an outstanding engineer or teacher participating in the competition who best demonstrates excellence in teaching science, math and creative design was won by Paul Copioli, who is a mentor for the ThunderChickens. This is a huge honor for Paul, his family, and the team.

Dean Kamen, the founder of FIRST (For Inspiration and Recognition of
Science and Technology), provided another inspiring speech to the bright young competitors in between games played during the finals. He is not the most dynamic speaker, but his topic is this year was inventing and protecting intellectual property. It is his opinion people will make oodles of money with intellectual property in the next decade.

Dean invited Jon Dudas, the Under Secretary For Intellectual Property and Director of the United States Patent and Trademark Office (USPTO), to address the crowd about the value of intellectual property. He also discussed some of the complexities of gaining a patent and trademark and how they are granted. This was very interesting. He also noted he was soon embarking on a personal vacation with his family. He is visiting a hall of fame in Ohio. Most people might think about the Rock and Roll Hall of Fame in Cleveland or maybe the Football Hall of Fame in Canton, but his trip is going to the Inventors Hall of Fame in Akron. Very interesting.

The other guest speaker was Larry Page, one of the Google Boys. He talked about engineering and the continuous process of solving problems and making technology better and easier to use. His discussion took us through a brief overview of how he and Sergey Brin started with an idea to search Web pages on the Internet, had it rejected, decided not to quit, and built Google. I would hate to be one of the people who told Larry and Sergey they were not interested in their idea. It is simply a 50 billion dollar bad decision. Larry and Sergey have started, which is the philanthropic arm of Google. Not only are they making the Internet easier to use, driving the future of computing, and inspiring engineers to solve bigger problems, they are paying it forward by giving back some of their fortune to make the world a better place. They announced they would be contributing to the FIRST organization in the future. Larry is originally from Michigan, which is something I did not know before this weekend.

It was a very exciting weekend. One of those weekends that regenerates the brain cells and at the same time was fun. It also helps restored some faith in the future of our world and the generation we are raising. Therese and I met some brilliant kids who were more than happy to demonstrate and discuss the technology they used in their robots, animations, designs, and Web sites. Cooperative competition, exactly like we have seen in the Fox Community for nearly two decades. In the years ahead the talent pool of programmers and engineers will be stocked with some excellent men and women. I look forward to the day I can hire a few at White Light Computing.


Microsoft is encouraging developers to write productions applications with the new Beta 2 releases of Visual Studio 2005 and SQL Server 2005. From this press release:

“Together, the products provide a deeply integrated development and data management platform, enabling customers to utilize existing skills and familiar tools to harness data in powerful new ways that increase productivity and efficiency. Several early adopters such as ABS-CBN Interactive, ORF and Townsend Analytics Ltd. have deployed these products in their production environments to reap the benefits of close tool and database integration. Because of broad customer demand to work with these prerelease products today, Microsoft also announced the Microsoft Go-Live license program for customers interested in deploying Visual Studio 2005 and SQL Server 2005 Express Edition immediately.”

I for one would never deploy a production version of my custom applications with beta products at this stage of development, and I have worked with some rock solid beta versions in the past. What happens to your production products when Microsoft decides to pull a feature out of the product because it cannot be tested sufficiently or they decide it was poorly designed or implemented? Now you have to tell your users: sorry, we have to remove this functionality because Microsoft decided to pull it from Visual Studio or SQL Server.

I think this is a really bad idea for a product at this stage of development. Release candidates are usually buttoned down from a feature standpoint, but even those versions have been known to have show-stoppers in them. Early adoption is one thing, but I think this is pushing the envelope too far. The one upside for Microsoft, some of the best bugs are found in shipping products. Maybe this is just a better way to find those hidden bugs (tongue firmly planted in cheek).


Earlier today a fellow FoxPro developer sent me a question about an IntelliSense script Andy Kramek wrote about in MegaFox. Normally I pass along the questions I get on topics I did not write about to the original author, but in this case I had an alternative solution to pass along.

Our reader asked for some help with the InLineGetLocVars script found on page 74. So I looked up the section in MegaFox and re-read the tip. This cool script is designed to drop down a list of declared variables when you type in the first two letters of a memory variable following the standard of a scope letter and data type letter. This is a common code standard adopted by VFP developers. Local character variables start with “lc”, local date variables with “ld”, character parameters start with a “tc”, and so on. Once you type in the second letter and hit the spacebar, a dropdown list appears with all the variables declared in the procedure or method. This is a very power and very productive IntelliSense script.

Reading this section reminded me of a moment a few months ago when I was sitting in Cleveland listening to Andy speak on IntelliSense. Andy demonstrated a script that ships with VFP 8 and 9 that I had never seen. In one of your programs type in the following:


And press the spacebar. Bingo, all the local variables and any parameters for this procedure are in a dropdown list. You can type zloc anywhere in the code line. There are two advantages of this script compared to the one Andy created for MegaFox. The first advantage is you do not need to know what the variable starts with. The second advantage might not be a practical advantage for many developers, but your variables do not have to conform to the industry variable naming standard. At first this might sound like a bad idea, but I often work with code written by other developers who do not code to the same standards I have established.

Both IntelliSense scripts (the MegaFox example and the native VFP) require you to have your variable declared (which is something everyone should be doing by default anyway – another part of my development standards and best practices I subscribe to in an attempt to retain sanity).

There are a couple of gotchas you have to watch for with this IntelliSense script. The variables in this list are only the variables declared between the beginning of the method/procedure and where your type in zloc. The other gotcha is PRIVATE memory variables are not included (note it is called zLOC).

Now something I did not share with our reader is the cousin script to the zloc script, the zdef script. The zdef script will drop down all the constants you have declared in #DEFINEs. Both of these scripts provide a dramatic increase in productivity and I hope it adds to yours.

The person who sent me the question was slightly embarassed they did not know about the zloc script. I perfer to look at it from a different perspective. One can never know everything about FoxPro, it is impossible. I love the fact I have the opportunity to learn something new about my profession and the tools I use in my profession every single day.

So why did I title this blog entry “Paying It Forward VFP Tips?” It is simple: I don’t want to be the last person to learn the tip so I try to tell others. If every developer passes along this tip to a couple other FoxPro developers, and they pass it along to another couple of developers, and so on, this tip will make the rounds in no time. Pay it forward!


I am going to alert you to a grumpy developer warning in advance. I am back from a restful vacation and finally, after a week of catching up on the various tasks put into the background, I have time for a blog post.

Most people who know me understand that I am usually a fan of Microsoft products. It is not that I automatically adopt all Microsoft technology or that I drink the marketing kool-aid, rather I prefer mature Microsoft products that make my day-to-day computing experience enjoyable. MSN Messenger is one of those products.

I often get pulled into debates with friends on how Microsoft is trying to rule the world, and how Bill Gates is the current incarnation of Satan, and how feeding Microsoft my hard earned cash is the stupidest thing I could do. Normally I thank Bill Gates for the roof over my head, and the Microsoft geeks for providing a stable platform, and more importantly the capability for my software creations to run on hundreds of millions of computers without too much hassle. Today provided me a clearer glimpse into the negative viewpoint so many others have on how Microsoft forces themselves on their customers.

Before I go any further, let me state for the record that I fully understand the viewpoint of my friends and clients who would rather use another office suite, different email clients, safer browsers, etc., I just philosophically disagree with them. I refuse to make emotional business decisions, and try to pick technical solutions to my needs based on feature sets, technical support, reliability, stability, and ease-of-use.

Today I got notification that Microsoft released the latest version of MSN IM. I have been using this tool for more than four years now. I read about the new features and because I have not been burned in the past with upgrades I decided to download it and install it. This will not be a story of woe with the product (unlike Andrew MacNeill’s trouble with Windows 2003 SP1), it is working flawlessly so far. My gripe is purely with the installation.

The installation is the typical wizard stepping you through some choices. This is where my complaint is centered. There is a page where you select additional features and settings. I am upgrading, therefore I believe it should respect the settings I made during the last install or upgrade. I might want to change, but why should I have to uncheck the settings I unchecked the last time?? I do not need the MSN Toolbar polluting Internet Explorer (even though I only use IE when exploring pages). I am perfectly happy with Google Search so I don’t need MSN Search at this time. My browser home page is FoxCentral. I see no single reason to have it automatically changed to MSN Home. Lastly, I already have enough shortcuts to MSN Messenger configured and having the installer add more means I have to delete them later. So instead of hitting the next button, I have to click four times to uncheck these options before proceeding.

It does not end here. After the install I have to explore the MSN IM Options to see what other options it has tweaked on me. Sure enough, despite me turning this off previously, the installer decides I need to see MSN Today every time MSN IM is started. I don’t think so! So I again, uncheck this option.

Come on Microsoft, stop making decisions on my behalf! I am perfectly happy and capable making my own decisions. If I want to switch these options, I can go into the Options Dialog and make the choices. Sheesh! At least the installation did not pollute my desktop with an unnecessary shortcut.

Before all the anti-Microsofties get overly excited by my flirtation with the dark side, I will not be scrapping MSN IM anytime soon because it is an app I am dependent upon. Maybe Microsoft is just trying to be compatible with AOL Instant Messenger. Each time I have upgrade AIM, I have the exact same issues, and it keeps adding several shortcuts to my desktop despite my selection for the installer not to do it. AIM keeps trying to add the Weatherbug applet and other applets each time, and turns on the page during startup. These two apps keep ignoring my preferences during upgrades. This is a complete waste of my time. Microsoft and AOL (and other software vendors thinking about tweaking my preferences) need to get their act cleaned up with respect to their software installations. Deployment is supposed to be easy for the end users.

Okay, time to get ungrumpy.

You may be wondering why I use IM, and three of them at that (Skype is the third one). Well I have friends who have asked this question recently and plan on blogging on this topic soon. Stay tuned.