Sunday, November 29, 2009

VFP 5 on Windows 7 Issue

This past week I was contacted by someone who attended one of my sessions at Southwest Fox and asked me for some help with a problem he was having getting an application and even the VFP 5 IDE to run on Windows 7. The error he was getting: "error initializing application object."

According to the developer the VFP Help indicates the message relates to some kind of problem with the registry.

To me it sounded like a rights issue. I recommended he try to run VFP 5 as an administrator and see if the message disappeared. My thinking on it was the problem happens because the user does not have rights to modify the registry. VFP would probably succeed running as an administrator. Sure enough it worked for him. What I am not sure is if this is a "run once and it is fixed for all users" (machine level registry entries) or you have to continue running as an administrator.

I have not been able to reproduce this behavior in a virtual machine. VFP 5 worked for me the first time. I don't recall this problem showing up on Vista either. Anyone else have experience with this? I only have one application still using VFP 5 runtimes (never needs updates or changes) so I am slightly curious in case my customer decides to upgrade to Windows 7.


Saturday, November 28, 2009

Get on the VFPX Bandwagon

A group of VFPX developers/users held a bonus session during the Southwest Fox conference in October to discuss future direction of VFPX and what is needed to get the word out to other developers in the Fox Community. There were a number of good ideas shared, but there are three key details I believe need to be highlighted.

The first is to tell people all the tools and components on VFPX are FREE! Developers, especially Visual FoxPro developers love free stuff. Free code, free tools, free components, free forums, free tips and tricks, and even free documentation. During my series of articles in FoxRockX I believe I have not mention the price to use the tools and components enough. They are FREE. No money is needed to get any project from VFPX. All you have to do is download the files, install them and take the time to learn how they can be useful to you and your development. Yes, this takes time, but if you are a FoxRockX subscriber you have access to every article in my VFPX series. That would be 11 articles dedicated to detailing how to use and extend the various VFPX tools and components. So spread the word about FREE, FREE, FREE stuff at

Another suggestion is to get more user stories posted on the VFPX wiki pages. These user stories show developers (who are intrigued by the things they see on VFPX) how other developers are putting them to use. I know I learn much faster and gain momentum quicker when I see how something is done rather than reading how it is done. Both ways help me learn, but the hands-on method is a lot faster for me. These stories can be told via text or could be a short screencast on demonstrating how a control was implemented in a production application. A brief discussion how one of the tools saves you an hour a month might shed some light to help someone else get it. These stories can be told on the various project pages.

The third important idea is one I actually have been pushing for in the VFPX articles and sessions I have been giving for the last three years: we need to get project managers to promote their projects to released status. It is true that some of the projects are in the alpha, beta, and release candidate status. But the fact remains many could be considered released. Project managers are suffering from the common “but just one more thing syndrome” like all of us have faced in our careers. What we all need is a little reminder that we can have a 1.1 or 2.0 release in the future. I know I use several VFPX projects in my production applications as if they were released. On the user side I believe there are developers who don’t want to risk something as important as a production customer application with something not considered released. If the status of the project was elevated to “released” it might stimulate adoption in the community.

There are other good ideas discussed during the meeting and things the administrators need to get prioritized and find others to help implement. You can watch most of the VFPX User Meeting on SWFox TV. There was a glitch in the Internet connection during the recording so it is in two parts. Part 1 and Part 2 are available at SWFox TV.

So jump on the VFPX Bandwagon and get using these FREE tools and components. Provide feedback to the project teams, and if so inclined, get involved in development or testing. VFPX is a significant part of the future for Visual FoxPro, be a part of it!

Labels: , , ,

Sunday, November 22, 2009

Southwest Fox 2009: Wrap-up

Doug Hennig mentioned at the closing session that this was the most fun he has had at any conference. I have to agree. I think there was a lot of anticipation for this year's conference because of the buzz on Twitter and the behind the scenes planning by non-organizers for more of the social aspects surrounding the Feltman Party Suite and Grotto (hot tub area). I think the Fox Community is growing stronger because of events like this and the way people get to interact via Twitter and the forums.

I saw more sessions than any year as an organizer thanks to Therese and Marshal handling the registration desk area throughout the conference. I really enjoyed going to sessions and feel blessed to have learned as much as I did before the conference during rehearsals and at the conference. We have the best bunch of speakers on the planet. We host the conference, but when the rubber meets the road, the speakers make the conference and give people the biggest reasons to come to Mesa.

Speaking of the hard work our speakers did to prepare sessions, I am looking forward to reading each and every white paper written by our talented presenters. We have over 1000 pages of pure goodness to read. If you were at the conference, make sure to check for a few updates by our speakers. We have updated materials from Menachem Bazian, Mike Feltman, Toni Feltman (pre-con), Tamar Granor, Paul Mrozowski, Alan Stevens, and Christof Wollenhaupt.

I really enjoyed meeting Emerson Santon Reed, and seeing him at Southwest Fox. Emerson was the first of hopefully many ambassadors we get to bring to Southwest Fox. The Ceil Silver Ambassador Fund is a magnificent idea and the response from the community was overwhelming. I think this worked out well and seeing how excited Emerson was before and at the conference made my day. I also want to thank all those who talked to Emerson, shared in his experience at the conference in any way, and showed him how the Fox Community here works the same as it does in Brazil. One big community helping people learn about Visual FoxPro and software development through the broad sharing of knowledge. What a great experience for me to participate in.

There was one thing I noticed at the conference that was a little strange. It was the first year both Andy Kramek and Marcia Akins were not at the Southwest Fox. I know both have decided to retire from the speaking circuit, but it still was weird not seeing them this year in Mesa.

If you want to catch up on what other people are posting/blogging see the Southwest Fox blog:

A huge thanks:
  1. To everyone who came to Mesa and attended the sessions, participated and contributed their knowledge in every way, and supported Southwest Fox so we can continue putting them on in the future!
  2. To all the speakers, you guys are the very best!
  3. To everyone who contributed to the Ceil Silver Ambassador Fund. It was terrific meeting Emerson and getting his perspective on Southwest Fox, and making this entire concept work. I cannot wait until we do it again next year. What a terrific tradition.
  4. To Arizona Golf Resort and Conference Center and their true partnering to make this conference as successful as ever!
  5. To Mike and Toni Feltman for opening up their room and enhancing the social side of the conference for everyone!
  6. To Doug and Tamar, my partners in crime, for helping me retain some sanity through this process again!
  7. To Frank Perez, for holding down the fort and keeping the customers happy at White Light Computing while I go missing in action for periods around the conference!
  8. To my wife Therese, also known as the Best.Wife.Ever (BWE), for her support during the planning, the support at the conference, and helping me unwind after the conference. None of my contributions are possible without her.
I am already looking forward to 2010. I hope you will meet us in Mesa from October 14-17, 2010 at the Arizona Golf Resort and Conference Center. I am sure there will be many more memories made next year.

Labels: , ,

Southwest Fox 2009: Day 3

The last day of the conference starts with my traditional first slot session. This year my topic "VFP and MySQL: Case Study for Remote Data." I really like the first session of the last day because the real conference diehards show up for the presentation. I am most appreciative of this group and this year they did not disappoint. Great session from my perspective.

The last session I attended was Jim Nelson's "PEMEditor: Swiss Army Knife for the Forms Designer -- the What and How." I needed to see part of this session in preparation of my VFPX session in Germany. Since Jim was covering his PEM Editor in a full session here at Southwest Fox I only covered a little bit of it in my VFPX session. In Germany I do not have this luxury. I anticipated Jim would cover some of the 5.0 features he just released and I did not have much experience with. Good session on one of the most powerful tools on VFPX.

I skipped the last session to prepare for the closing session, take care of some business with the conference facility, and say goodbye to some friends who had to catch an early flight.

After the closing session we clean up, and then head over for a meeting with the conference staff. Year after year they amaze me with the positive approach they take with the people who come to their resort, and how well they deal with any issues that come up during the conference. Unfortunately the discussion always seems to gravitate to the small problems or snags we hit, but in reality the conference was very smooth and the issues small. Next year I want to tell them how great it was and tell them I will send the small issues to work on for the next year in an email after the conference. They want to constantly improve just as much as we want to improve the conference experience.

After the meeting I headed back to the room and started helping Therese as she prepared for the speaker dinner. She had been working most of the day on getting food, and working preparing the meal. She excels at this and wanted everything to be perfect. I also got a bit of time to read a few of the evals. The speaker dinner came together nicely and the dinner was much more relaxed for the rest of us than the traditional speaker dinner. We had a BBQ with steaks and chicken, lots of roasted vegetables, sweet potato fries, and a peach crisp for dessert. Very tasty.

The speaker dinner sort of blended into the normal Feltman hosted party as other conference people still hanging around the conference center joined in. The grotto was packed and the party went late into the night. I called it a night sometime around 2 or 2:30. It was a great way to wrap up the most fun conference ever.

Labels: , ,

Southwest Fox 2009: Day 2

Saturday starts out with session surfing between Jody Meyer's "Developing and Extending the Visual FoxPro Grid Object" (one of the most popular sessions of the conference) and Doug Hennig's "Practical Uses for GDIPlusX." Normally I skip all of Doug's sessions because I can see them in Germany in a couple of weeks, but this year I am getting to Frankfurt a day late and will miss most of the sessions on the first day. This means I cannot rely on the scheduling gods working in my favor since I have to cram my sessions into the last couple of days. Both of these sessions had terrific content. Fortunately they both have good white papers for me to catch the stuff I did not see presented. I saw Jody's session a couple of times during the rehearsals in Michigan. I wanted to see how she performed in Mesa. I was not disappointed.

Next up was Rick Borup's "The Show Must Go On: Disaster Recovery and Business Continuity Planning." This is a really important topic in the computer services industry and often overlooked. You also don't know it is overlooked until something bad happens, and then you are miserable. I have worked on a couple of disaster recovery plans in my career, but I have not worked on one in a while. I wanted to get a refresher course so to speak with this session. Always enjoy Rick's sessions because I feel like I am back in college and Rick is the professor sitting at the front of the room. I liked how the other audience members participated and shared some of their disaster recovery experiences. Really enhanced the whole session.

Up next I presented the second occurrence of my "Enhancing the Visual FoxPro IDE with VFPX Tools."

After my session I jumped over to the Moxie Report Objects vendor session. A couple of years ago I almost had a project with the need for Bo's tools, but it did not materialize. I wanted to get a feel for what was new and where this important product was headed. Mission accomplished.

Unfortunately the last couple of session slots were taken over by a customer problem I needed to solve. I was planning on seeing Alaska Software's: "Fox and the Polar Bear", and Craig Boyd's "FLLs and the Visual FoxPro API." I did get a chance to record the "Nerf Attack" as Craig assulted Doug Hennig during his VirtualPC session. You can watch all the action, including the attack planning here: Strategy Session and Attack of Doug Hennig SWFox2009. As you can see, we like to have fun at Southwest Fox 2009.

Normally the speaker dinner is Saturday night, but based on speaker feedback in 2008, they wanted more free time during the conference evenings and a less formal dinner. So we moved the dinner to Sunday night after the conference. That freed up Saturday night dinner. Several of us had a hankering for sushi so we headed out for dinner. We ended up at a different sushi place than another car, but Christof Wollenhaupt, Doug Hennig, Emerson Reed, Therese and I found a terrific place recommended by Bill Anderson. Dinner was awesome.

After dinner a group of us headed over to the F1 racing track for some go-carting. Jody Meyer, Toni Feltman, Cathy Pountney came in dressed as the "Pink Ladies" and Frank Perez and the greaser guy. Smooth move as they had Doug and I thinking there was some conspiracy against us on the race track. The racing was fun for sure and the competition for bragging rights for another year was fierce. As usual I had the best average lap time in the second race which is my goal.

After the race we went back to the conference center. I spent a little time in the bar talking with people and a little more time at the Feltman Party Suite and hot tub. Since I had an 8:30 session Sunday I had to make sure I made it to bed at a "reasonable" time.

Labels: , ,

Southwest Fox 2009: Day 1

I was up early on Friday to run through my "Enhancing the VFP IDE with VFPX Tools" session. I always like to go through the session slides once and make sure the examples all run. I found one of my demos was broken and baffled at how it happened. Fortunately I was able to devise a strategy if it failed in the session.

Each day at the conference I make sure the conference session rooms are set up correctly and work with the conference center staff to reset some power and test out all the projectors. I also swap out the room schedules boards. Once I know everything is humming along I head over to breakfast. Nothing better than starting out the day with eggs. I appreciated it even more knowing we did not expect to have breakfast this year based on budgeting issues. I also like to sit down and eat with folks who are supported the conference and see how things are going and what sessions they are hoping to see during the day.

I surfed the first slot and caught part of Jim Nelson's "FoxCharts - Great Looking, Modern Charts in Pure VFP Code", and Rick Borup's "Quibbles, Quirks, and Quickies." I saw Jim's session rehearsed at DAFUG in August and was curious to see how he was going to do in front of the Southwest Fox crowd. Really, there was no change. Completely smooth delivery. Rick Borup is a seasoned professional and delivered a quick set of interesting VFP behaviors to consider and watch out for in development. I enjoyed both sessions, but with my VFPX session up next I was more compelled to understand why one of my demo was flaking out.

I really enjoyed giving my session on the VFPX tools. I also was happy with the turn out as I was up against three awesome sessions by Toni Feltman ("Data Driving Applications"), Jody Meyer ("Speak to Me: Applying MS Office Automation to Real Business Needs"), and Craig Boyd ("Virtual Earth for Visual FoxPro"). There is nothing more enjoyable than watching people have an "aha moment" when I show them something they will be using as soon as they can download and install it. The entire session is filled with possibilities. The only thing I don't like about it is the fact that 40 other developers are constantly updating the things I could be showing during the session. 40 to 1 means I typically deliver an obsolete session in some capacity. At Southwest Fox I knew the PEM Editor section was already behind as Jim and Matt released a new version just before the conference.

Next up was Doug Hennig's "Microsoft Virtual PC for VFP Developers" session. I had already seen the other three sessions in the rehearsals done before the conference. Doug never disappoints. I have been using VirtualPC and VMWare for years, yet I still learned something new with respect to how VirtualPC works. Doug showed us "Differencing Disk", which is like subclassing a base virtual machine into a second virtual machine and only the differences added to the second are stored on the second disk. VMWare has this functionality, but I did not know VirtualPC had it. Great session.

The lunch was make your own deli sandwiches. More importantly I got the chance to sit down and relax a bit, and have some really good discussions about Visual FoxPro and things happening in the Fox Community.

The afternoon started out with Christof Wollenhaupt's Excelporting session. Christof always comes up with excellent session topics and outputing to Excel is something many VFP developers deal with on a regular basis. Christof's session was superb, and his ideas always stretch my thinking on new approaches. His dry sense of humor also was shining again this year.

Next up was my favorite session to give at the conference: "VFP and MySQL: Case Study for Remote Data." It is my favorite because it is different from the productivity sessions I typically give. I also completely applied something I am working on and bring my experience directly through to the session. I started working on this session in October 2008, just after returning from Southwest Fox. So it took almost a year to bring to fruition. Remote data (non-DBF data stores) is something I believe is important for my customers and other developers. The idea I can connect a VFP desktop app and a Web site to the same database is powerful. I got a chance to start using MySQL which is something I have wanted to do for quite a while. The fact that there were excellent questions also showed people were interested in the material and interactive sessions really get my presentation energy going. I really enjoyed giving this session and received a number of kind remarks from the people who came to see it.

Another thing we tried this year is moving some of the bonus sessions into a regular session slot. In the past we received feedback that bonus sessions are too late and people are already tired by the end of the day. We offered the first half of the "Show Us Your App" (SUYA) and the VFPX Users Meeting. I wanted to attend the SUYA because it was a huge hit last year, but my duties as a VFPX Administrator gravitated me toward the VFPX session. You can watch the VFPX meeting as we broadcasted it live on SWFox TV (check out part 1 and 2). There are a lot of good ideas that were presented including creating an applet to consume XML to notify people of new releases, adding stories, a roadmap, and a launch point to, and pushing more project managers to get to a released status. One of the key take-aways from this session is to promote the fact the tools and components are FREE! All developers love free stuff, so why not take advantage of this.

The dinner party followed the first set of bonus sessions. I think the best part of the dinner party is that people get to wind down and do more networking.

After dinner I wanted to get to the second half of the SUYA. I got to see Mike Feltman show off his form to reporting builder, which is kind of cool. You can read more about it on the F1 Tech blog.

My wife came into the SUYA session to let me know the people in the "Future of the VFP Developer" bonus session were waiting for me to lead the discussion. The session is an open spaces session, which means developers discuss the topic and share ideas among themselves. The session is not really lead by one person. I thought someone else was covering the moderating part, but no problem, it sounded like it was going to be a good session to attend as well. Turns out the session was exactly how I hoped it would be. Lots of people indicating what they saw in their future. Most VFP developers have long adopted other technologies to integrate into their solutions. Listening to what others had to say shows some people sticking with VFP for the primary development and integrating other best of breed technologies as needed. Others discussed migrating to other technologies. I think in a way it showed a good cross-section of the Fox Community. Some people got validation of the approach they are taking, while others got ideas for them to consider. That was the entire goal of the session so it worked out perfectly. You can listen in on the conversations on SWFox TV.

Labels: , ,

Southwest Fox 2009: Pre-conference Day

Thursday morning we get the early rush at the registration desk. I spend the morning setting up the two pre-conference session rooms, and ensure the speakers' computers are working with the projectors. I really liked how the registration area was set up this year. It worked way better than the setup of the last couple of years. We did learn we need to get a banner so people know where the registration desk is as I was constantly answering the question about where people go to get their registration processed.

One thing we forgot to mention to the conference center people during the walk through on Wednesday is how we wanted coffee and tea out for the entire day. It took a full 15 minutes before the coffee station was up and running. I joked with Marc who runs the day shift that the staff was a little slow in getting it turned around. He joked he had to fire a couple of people for the slow performance. Fortunately everyone has a good sense of humor.

I did get a chance to check out part of Walt Krzystek's "Integrating VFP with SourceGear Vault" morning session. I was interested in the Vault session from a personal perspective since I am considering moving to SourceGear Vault. I did get to see an abbreviated rehearsal of Walt's session in Atlanta, so I wanted to see some of the parts I did not see. I did sneak into seeing part of Alan Steven's "Break It Down: Dealing With Legacy Code" session. I deal with a lot of legacy code at White Light Computing so I probably could have benefited from seeing the entire session.

The Mexican lunch was really good and I was starving by time lunch rolled around.

The afternoon I helped at the registration desk and worked with Craig Boyd to see if we could reproduce some download problems from the Southwest Fox FTP site and the CD image. I was able to reproduce the problem, but we could not figure out the exact condition or the settings to resolve the problem. We will get this ironed out before the 2010 files are ready. We did not make this a priority at the conference since every person got a CD with all the materials, and the individual sessions could be downloaded.

Right after the pre-conference sessions we have the speaker meeting. Not sure why, but the energy level at the speaker meeting was off the charts. Lots of jokes and friendly barbs. We had the speakers sign a couple of SWFox T-Shirts for auction for the 2010 Ceil Silver Ambassador Fund.

To change things up this year I actually had dinner between the speaker meeting and the Keynote. Therese had already taken Sara Ford to dinner so I joined them. All I had was some soup. For some reason I cannot eat before the keynote. It definitely is not nerves.

The Southwest Fox Conference Keynote is the official kickoff of the conference. We did announce Cesar Chalom as this year's recipient of the "VFPX Administrators Award" for all of his hard work on FoxCharts and GDIPlusX. We also introduced Emerson Santon Reed as the Ceil Silver Ambassador for 2009.

This year we changed things up by bringing in an outside speaker. When I say "outside", I mean someone who is not going to talk about Visual FoxPro in particular. In past years the Southwest Fox Keynote has something about Visual FoxPro on the agenda right after we deal with some of the "administrivia." Sara's talk was titled "Towards a Stronger Open Source Ecosystem on" Based on feedback some people really enjoyed it and others, not so much. I get a sense from some of the people who did not like it that they did not understand that VFPX is hosted on CodePlex, and Sara was talking about the underlying Web site where the VFPX project and all its goodness is hosted. We also had some sound problems. You can watch the entire Keynote on SWFox TV.

The Trade Show reception followed where people checked out what vendors had to offer and others caught up with old friends, or had a chance to make new ones. I eventually made it over to the bar and then to the Feltman Party Suite before calling it a night much later than I wanted.

Labels: , ,

Southwest Fox 2009: Preparation Days

The preparation to make the trip to Phoenix is always jammed packed with last minute details. The 2009 conference was our third time putting on the show so one would think things would become some what automatic. In some cases it is and in some cases it is not as we try to change things up a little based on feedback and our own ideas. This year my check list seemed longer than normal, but I realized I was just busier than normal with the White Light Computing workload.

Northwest changed our booked flight just before the conference and the flight time really put a crimp into the planned schedule based on a tight schedule once we hit Phoenix. I called Northwest and got Therese and I on an earlier flight, but this meant getting up a few of hours early (1:30am Arizona Time). We carry a lot of the conference materials in our carry-ons because we want to ensure all the really important things make it to Mesa. This means lots of luggage. The flight to Phoenix started out with a 75 minute delay in Detroit. The air conditioning on the plane was not working because one of the problems was getting power working at the gate. I believe Northwest was just preparing us for the Arizona weather by heating up the plane to 85F. The delay forced us to figure out a new schedule once we hit the ground.

Once in Phoenix we got our luggage, picked up the rental car, found Doug searching for his luggage, and rushed to pick up the conference t-shirts, speaker shirts, and conference bags. Direct to the conference hotel to check in, drop everything off and head back to the airport to pick up Tamar and Marshal. Believe it or not, we were only a little behind considering the delays in Detroit. Last stop before heading back to the conference center is to pick up the room schedule posters we get printed out.

Dinner at the Cheesecake Factory Tuesday night was a nice reward at the end of a long day. Tuesday night only has two scheduled tasks. The first was to take delivery of all the shipped materials, inventory the items, and check to see nothing got broken. The second task was to get a full night of sleep because it is the only night in Mesa that happens.

Wednesday morning I was up bright and early. This works well for me as I can get some email and work handled before we jump into official conference mode. I also took a quick walk around the golf course to enjoy the warm weather. After breakfast we have a meeting with the conference center staff. We literally walk though the schedule of each day we are on site so everyone understands what is going to happen and when it is going to happen. The staff at the Arizona Golf Resort and Conference Center are terrific.

After the meeting we begin the assembly of the conference bags. New idea this year was to literally build the bags for each individual. The last two years we built generic bags and customized them as people checked in. This was a brilliant idea as it really simplified the registration process and reduced the number of people we needed to have at the registration desk.

Several other things happen on Wednesday. The conference center transforms the ballroom into the four session rooms by assembling the four 12 foot screens. This year there was a mix-up with the screens and we had to have them swapped out between the pre-conference sessions and the Keynote. The projectors arrive and need to be set up and tested. The conference bags get moved over to the registration desk. Many of the speakers arrive on Wednesday so Therese was making continuous runs to the airport to pick each of them up. She also picked up the Ceil Silver Ambassador Emerson Santon Reed early in the day. It really is a busy day. We ended it by going out to dinner at PF Changs. Dinner was awesome, but paled in comparison to the excellent discussions with everyone and getting to know Emerson a little bit before the conference.

Labels: , ,

Sunday, August 16, 2009

User Group Dependency on Conferences

Last week I saw Jim Nelson present his two Southwest Fox sessions, and one of Jody Meyer's sessions in Grand Rapids and Detroit. Yesterday I had the pleasure to listen to Cathy Pountney and Jody Meyer rehearse both of their sessions at Chicago Fox User/Developer Group (CFUDG). The two groups were also kind enough to listen to the real rough beginnings of my sessions too. I thought the three meetings were terrific and the hosts did a magnificent job.

Special thanks to Jody Meyer and Cathy Pountney for putting on the special August meeting in Grand Rapids last weekend and thanks to Bill Drew and Jeff Simon and the CFUDG gang for putting on the special meeting yesterday! And thanks to everyone who came out to listen.

These sessions are invaluable to speakers as they figure out what works and what does not work in front of a live audience. At least for me, I know I present differently in front of developers interested in learning than when I sit down in front of the dog in the office and run through my sessions.

Cathy finished her second session of the morning making it obvious to me she is serious about defending her #1 speaker status as she is already in top conference form. It was at that time someone made the comment (and I am paraphrasing here): "There is no need to waste your money on expensive conference fees and outrageous hotel costs when you see this quality of session during rehearsals."

Now I am sort of being kind on the paraphrasing, because what I really heard is: there is no need to support Southwest Fox or other conferences when speakers do the session rehearsals for almost free at user groups. Mind you the group who showed up made a generous donation for the food and covered some travel costs for the speakers, so the event was not free. Yet, the comment really rubbed me the wrong way. As an organizer who commits to 200-300 hours of volunteer time to put on Southwest Fox each year, and another 80-130 hours preparing sessions for the conference, I don't appreciate the sentiment that was expressed. It simply hurts.

There is something I believe is too important to be overlooked. It is something I have known for a long time and probably have not expressed out loud enough. Southwest Fox depends heavily on FoxPro user groups. We depend on them for marketing and we depend on them to provide venues for the speakers to rehearse their sessions. It is something the organizers of Southwest Fox have recognized from the very beginning. Two of the three organizers started and run local user groups and the third organizer presents at them regularly. We all understand how important these groups are for the community to share and learn together. One of the first things we figured out for Southwest Fox was the user group discount we offer and giving money back to the community to support the groups.

But this is not a one way dependency. FoxPro user groups depend on Southwest Fox and other FoxPro conferences. You see, the Chicago group has been blessed more than most groups because they draw lots of conference speakers to present to their group. CFUDG invites speakers to come and share. They proactively call speakers to visit. They are a terrific group to present to and are open to learning all kinds of new things. The Detroit Area Fox User Group, Grand Rapids Area Fox User Group, and LA Fox User Groups also have been blessed with regular meetings being filled with conference-level sessions. I know there are other Fox user groups around, but these groups really fill their schedules packed with presentation rehearsals.

So what exactly is the real dependency? Conferences need well prepared speakers to draw people to the conference, speakers need to rehearse, and user groups need speakers to draw people to meetings. So if the presenters are not rehearsing the conference suffers and people are not as likely to return next time. If there is no conference, speakers are not likely to spend 40-80 to prepare one session. User groups won't have conference-level sessions at their meetings and as a user group leader I know the "big name, conference level sessions" draw more than the core regulars to a meeting. It would be a downward spiral. I prefer the upward spiral where conferences exists and draw the best speakers and attendees, where user groups get more rehearsals, and the perpetual motion goes in the right direction. For conferences to exist, people must come. So now you understand why the comment felt like a dagger in my chest.

I know some people are unable to come to Southwest Fox because it conflicts with personal events, or live to far to travel at a reasonable cost, that the economy has affected some, or they have some project deadlines to meet. But to not come because you can see some of the sessions before the conference really doing yourself a disservice. You are missing most of the session you can benefit from seeing, not to mention the networking, the comradery, and talking to vendors who have some terrific products to demonstrate for you in person. Getting outside of the office and talking with other developers of like mind is an experience you will find extremely beneficial.

At the same time lots of people have asked me about 2010. Will there be a Southwest Fox 2010? I can only say maybe. We have not signed a contract at this time for a venue, and have not set any date. It all depends on how the community supports the conference.

So support your favorite conference (I hope Southwest Fox is high on your list) and support the speakers who are hard at work preparing to help you learn some really cool and useful stuff. There are upcoming rehearsals in Chicago, Atlanta, Detroit, Lansing, LA, and Philly. I personally will see almost half the sessions before we arrive in Mesa and hope to see more at Southwest Fox and German DevCon.

This past week I saw six of the sessions and I already learned enough stuff where it is entirely worth the effort I put in to make Southwest Fox happen. I think you will find out the same thing when you attend our conference.

Labels: , , , ,

Friday, May 01, 2009

Southwest Fox 2009: Registration Opens

Months of preparation come to a climax today as we announce our speakers and sessions, and get rolling on the registration for Southwest Fox 2009. Even though this is our third year doing this, it is still exciting and still fun. We also added some new wrinkles into the event.
  1. Sleep in a little more in the morning - 8:30 start times instead of 8:00.
  2. "Green option" for registration to skip the conference binder, but still get materials in PDF before the conference.
  3. New registration application to electronically send in the registration.
  4. Super-saver, early-bird, and regular registration levels and times.
  5. New "Technology" track looks at tools and technologies to make life as a developer easier or more productive, including such things as virtual machines and source control.
There still may be a few surprises to come too.

We also worked very hard with the budget to ensure people had the opportunity to register for the same price as last year. We are doing the best we can to continue to make Southwest Fox fit into your budget this year. The conference center hotel rooms are the same price as last year, and the conference fee is the same price as last year if you register before September 1st.

Topping the first five Southwest Fox Conferences is not an easy task. Coming up with new ideas while retaining the best of the past is a challenge each year. Still, I think we have put together the foundation to make this year the best ever.

One of the other new things is our first ever Ceil Silver Ambassador. Cesar Chalom is coming to represent the Fox Community from Brazil and South America. We made this announcement a couple of weeks ago. Since the announcement I have heard from a lot of people who are really excitied to meet Cesar in person. I know I am one of his fans and look forward to seeing him in Mesa.

Over the last six months or so we have been working very hard to encourage some new people to share their knowledge with the Fox Community. This has been a goal of the organizers since day one. Over the last couple of years we had a few speakers who have not spoken in a while return to the speaker circuit and have introduced a couple of new people, but not to the level we initially hoped for. This year is completely different though and I am really excited that we have what I am refering to as the fab five freshmen (Steve Ellenoff, Walt Krzystek, Jody L. Meyer, Paul C. Mrozowski, and Jim Nelson) speaking for the first time at Southwest Fox. Jim and Walt took part in the "Show Us Your Apps" session last year, Steve spoke at Fox Forward a couple of years ago, and Paul and Jody deliver regular presentations at their local Fox user groups so they are not really rookies. I think this is super important moving forward to grow the speaker community and this is a huge step in the right direction.

Naturally we are also bringing back some seasoned favorites too. Menachem Bazian, Rick Borup, Craig Boyd, Mike Feltman, Toni M. Feltman, Tamar E. Granor, Doug Hennig, Cathy Pountney, Rick Schummer, Alan Stevens, and Christof Wollenhaupt. A terrific line up.

Some of the great things you already expect from Southwest Fox:
  1. Terrific selection of sessions from great presenters.
  2. 28 regular conference topics, 4 simultaneous sessions, 4 pre-conference sessions, and a keynote will pack your days with learning opportunities and inspiration.
  3. White papers from every session (mandated by the organizers) so you can read about sessions you can't fit into your schedule, or review material you saw at the conference when you return home.
  4. Lunch Thursday if you register for two pre-conference sessions
  5. Lunch Friday and Saturday for all attendees
  6. Dinner Friday night
I hope you take some time to review the sessions when you have a chance. I also hope you will consider joining us in Mesa this October.

All the details are posted on the Southwest Fox Web site. Watch for more news on our conference blog and follow us on Twitter too.

Labels: ,

Wednesday, April 08, 2009

VFP 9 - Reporting Bugs

Microsoft moved all bug reporting for VFP to their Connect system years ago. The FoxPro Community followed the Microsoft direction with some kicking and screaming. One of the drawbacks of this was the VFP reports went through the Visual Studio group and we never got the feeling of being a first class citizen in the process.

Microsoft has fixed this. Well, sort of fixed this. {g}

About a month ago Gianni Turri posted a message on the ProFox list server noting a bug report he posted was rejected with the following message:
Thank you for submitting this Connect Issue. Visual FoxPro is no longer supported though Connect. Please use the Visual FoxPro Support Center ( or the Visual FoxPro Discussion Forum on MSDN ( for more information or suggestions. You can also contact Microsoft Help and Support ( ) for further assistance. For additional information please visit the Community Resources page on Visual FoxPro MSDN site ( as well as the VFPX project on CodePlex ( Thank you, Visual Studio Product Team.
[Editorial note: interesting plug for VFPX - yeah!]

I confirmed this with Milind Lele. He told me Microsoft Connect is great for products in continuous development and allows better management of the reports to flow into the next release. All Visual FoxPro bug reports need to go through Product Support Services.

To get to Product Support Services you go here:

Near the bottom of the page you will find "Get Help from Microsoft". Click on Assisted Support. Scroll through the list of products to find Visual FoxPro 9.0 (or 8.0) and click on the link. Or you can go to this link:

You will see three options:
  1. Email Support (24 hour response time, two free incidents, US$99 for support)
  2. Online Request to be called (US$259 per incident, response time based on severity)
  3. Request by phone (US$259 per incident during business hours, US$515 after hours)
Other options for contracts are available.

So I asked about "paying" to report a bug. You do initially have to pay if you are past your two free support emails. But if the support people determine it is a product bug (their definition of being out of spec, not your perception of what you might consider a bug), your payment will be credited. Exact words from Milind:
Actually for a valid bug, the charges get reverted. The quickest way to get a fix is to have a hotfix issued. And the fastest and surest way to do that is to create that request from support.
The good news: you will be routed to the folks that know VFP best and in my opinion, some of the sharpest folks supporting software anywhere. Plus the reports are going directly to them, not through a system that treated our favorite product as less than first class.

My recommendation: if you think you have run across some "buggy feeling feature" in Visual FoxPro, post the issue on one of the forums. Let the Fox Community help you flush out any issues to see if it is indeed a bug. Then report it though the Product Support Service channel.

Labels: ,

Monday, March 09, 2009

Making Migration Choices

One of the hallmarks of FoxPro and Visual FoxPro is the level of backwards compatibility the Fox Team was committed to during the decades it was created and enhanced. The compatibility was not just from FoxPro to FoxPro versions, but often was extended to other XBase flavors such as dBASE and Clipper. One of the side-effects of this decision by Fox Software and Microsoft is that developers can easily port code forward, even when there might be easier or better ways to accomplish the same thing.

Over the last week I have helped another developer migrate some Clipper DOS code to Visual FoxPro. The decision to do a direct port of the code was made way before I was asked to help. Because of the deep commitment of the Fox Team this port was working except for three areas where the developer requested my help. The one aspect that caused me the most grief was colors - requirements are to match the colors exactly as the old system.

I figured the color issue would be a snap because the color settings were done through procedures, not on individual @SAY,@GET lines. Each procedure had SET COLOR TO commands. What I did not realize was the color pairings in Clipper were done in numbers instead of letters (apparently Clipper supports both). Visual FoxPro seems to run the code, but the colors were not matching. Took me a while to figure this out,but VFP is more accurate with color pairings as letters. Once I understood this trap I was able to get the colors going in the right direction.

One issue with the colors though was the background color was not set correctly on many of the screens. The @SAY and @GET code displayed correctly. What I learned is that VFP is setting the screen backcolor to the backcolor of the first @SAY done after a CLEAR. Unfortunately that took me a long time to figure out. Once I understood how it works I developed some code that handles it. Oh, and don't think you can just set _SCREEN.BackColor, it does not work well with @SAY or @GET code.

I guess the Fox Team did not sufficiently test scenarios with @SAY and @GET compatibility (tongue firmly planted in cheek).

Why am I posting this? Is it because I believe many people are running Clipper or FoxBase/FoxPro code in Visual FoxPro these days? No. Just as a reminder to those developers who are faced with the choice of migrating old code to Visual FoxPro and some of the headaches you might face if you select to go the route of running the "compatible" code in Visual FoxPro. The backwards compatibility with old style user interface elements might not be as compatible as you would like. I believe the developer I am working with made the right call for his customer's situation, and the customer's requirements and budget, but the cost is going to be many hair pulling moments. Unfortunately in my case I was working with a fixed price budget, and I blew the hours by three times the allotted amount of time. So much for my weekend being fun.

Another lesson re-learned at the school of hard knocks.

Labels: , , ,

Friday, February 06, 2009

VFP Upsizing Wizard Tip

Earlier this week I finished writing the chapter on the Upsizing Wizard for the upcoming Sedna update book we are close to completing. In the chapter review Doug Hennig pointed out a possible third way to run it (the first two being from the VFP Command Window and from the Data Explorer). He suggested trying to rename the Sedna Upsizing Wizard to the name of the old Upsizing Wizard and copying it in the Wizards folder under the VFP root.

This got me thinking. All the Wizards are driven off a table called Wizards.DBF. What if I just added a record in this table and pointed it to the new Sedna version? It works. All part of the extensibility of the Visual FoxPro IDE.

First locate the Upsizing Wizard record in the Wizards table:

USE (HOME() + "Wizards\Wizard.DBF") ;


LOCATE FOR Name = "Microsoft SQL Server Upsizing Wizard" ;
AND Type = "Upsizing"

Change the Program memo field to:

c:\program files\microsoft visual foxpro 9\sedna\upsizingwizard\

Or alter the path to your environment setup as needed.

If you want both the original and the Sedna version, just do a SCATTER and GATHER and make the change in the second one. I recommend also changing the Name column because each time you start up the Upsizing Wizard from the menu you will select between the two and the Name column is displayed for you to pick which one you want.

The downloads for the chapter will include a program you can run to correct the registration.

Labels: , ,

Thursday, January 22, 2009

VFP 9 SP2 Help file (fixed) coming to VFPX

As you may know, the April 2008 version of the VFP 9 SP2 Help file is broken. Actually I would consider it a serious mess. Lots of cosmetic things broken, and hyperlinks broken on important things like properties, events, and methods. I blogged about many of the problems found. A real mess, literally unusable, and not much hope from Microsoft to get it fixed by the Help team because of resources.

Several people (who will remain nameless at this time) started working behind the scenes to fix the Help file by decompiling it, repairing the problems, and rebuilding it. Some of us allegedly got closer than others and there allegedly was lots of collaboration, but one person allegedly made a serious breakthrough with lots of time put into getting it corrected.

I contacted Alan Griver and asked if a Help file allegedly was fixed, would Microsoft post it for the Fox Community to use it. You see, there are lots of legal entanglements with copyrights and third-parties and no one wanted anyone to be thrown in jail. It took a while and I was starting to lose hope.

A couple of nights ago Alan emailed me with the news that we can post the changes on VFPX under the Creative Commons license. This means the Fox Community has the rights to improve the VFP 9 SP2 Help file! Some final tweaks are going to be made to the new file, and one additional fix has to be made, but soon a usable VFP 9 SP2 Help file will be posted.

Thanks to Alan Griver for spending time battling Microsoft Legal and going to bat again for the Fox Community. Proof again that even though there might not be an official Fox Team at Microsoft, we still have friends who are helping us out. And thanks to all allegedly involved in the battle to assemble the Help file without some key source files. You know who you allegedly are and you folks rock!

Labels: , , , , ,

Wednesday, December 17, 2008

VFP: Grid Header Pictures

Those following along on Twitter know that I am working with Craig Boyd's GridExtras class in one of my customer projects. This is an interesting tool that is making me look really proactive to my customers.

One of the features is the ability for users to double-click on the header and the RecordSource is sorted on the column in the grid. Jody Meyer enhanced this to toogle from ascending to descending to no order. The columns can also be filtered which is an awesome feature because Craig mimics the dialogs to work like column filtering in Microsoft Excel. Both of these features put images in the headers of the columns to give the users a visual clue of what is going on for the grid.

For some reason I was not getting the images in my grids. Obviously it is working for Craig because the sample app he ships has the images displayed. It is not a VFP 9 SP2 thing, because I could run his app in VFP 9 SP2 without any issue.

On a whim I moved the images from the gridextras folder I have under a different directory tree on the same drive, and put them into an images folder underneath the project. I then removed all the pointers in the project to the image files and added the images from the new folder into the project. Rebuilt the EXE and presto, the images show up in the grid header. Nice.

My question is why? All the images are compiled into the EXE either way as I did not exclude them in the Project Manager. VFP should be able to find the images in the EXE. Is there a logical answer, or is this one of the VFP quirks I have to remember to work around in the future?

Labels: ,

Tuesday, December 09, 2008

VFP: File and folders via indirection

Last night one of my clients was implementing their vertical market application half way around the world. The onsite support people were reporting an error when the app was started: "Invalid path or file name."

Thanks to the new error handler we implemented in the app I tracked this problem down to a single line of code:

CD &lcDataPath

Looking at the value of lcDataPath it became instantly apparent what the problem was, spaces in the folder name. The tech support person right away explained to me the standard for the install is no spaces in the folder names. This site deviated from the standard folder name recommended by my customer. Now she knows exactly why the original developers proclaimed this "requirement" years ago.

I have not been burned by spaces in code for a long time because I always use indirection in my code whenever I deal with file names or folders.

CD (lcDataPath)
DELETE FILE (lcFileName)

I posted this issue on Twitter earlier today and Andrew MacNeill noted this is probably a great rule to add to Code Analyst up on VFPX. I agree. I am now curious how many developers do not test their applications in folder structures with spaces in the name. I just checked my development machine and all my test folders are space free. But I do install my applications on a virtual machine in the Program Files folders and this tests out the space problem.

Yet one more reason why we have standards at White Light Computing and why the adoption of industry best practices gives us more solid deployments and apps in production. Fortunately the onsite tech people were okay with renaming the folder, otherwise my customer would have been hiring us to review the application for other macro expansion gotchas.

Labels: , ,

Sunday, December 07, 2008

German DevCon - Day 3

The final day of the conference in Germany is like the final day of any conference, you start out the day exhausted. Add on top of the fact I have not slept more than a couple hours a night because of the jet lag and the time zone difference from home.

I also did not have the first session of the day so I was able to attend Bo Durban's 8:30 session on "Creating Custom Controls with Sedna." Yes, another reporting session I am sure will be very useful to me in the near future. Bo showed us how to take the Sedna reporting architecture and extend it for our own purpose. His extensions show how you can drop a shape on the report and have it be one of the custom shapes he has predefined. His custom shape takes on the attributes (size, color, etc.) of the standard VFP shape you drop on the report. Very interesting and will take a little to sink in.

Up next is Tamar's "Solving Common Problems with VFP SQL" session. It sort of was a session that gave me that time-warp sensation. I recall sitting in on one of Tamar's SQL sessions at one of the early DevCons (probably 1993 in Orlando). Tamar has been giving SQL sessions for many years so I am not sure if it was then or 1996 in Scottsdale. Or maybe both. It does not matter how many times I see sessions like this, I always walk away being reminded of some technique I have forgotten about. It also reminded me I probably should reread her book: "Taming Visual FoxPro's SQL - Real World Data Solutions For VFP". There are techniques I just have not used that were introduced in VFP9 like the ability to create SQL Selects from virtual tables (another SQL Select).

I skipped the Microsoft keynote given by Tim Fischer of Microsoft Deutschland because I probably would only understand about 1% of it. The topic was interesting as it was about Software + Services and VFP, but it was given in German and my mind was not prepared to pseudo translate.

After lunch was "Practical Uses of XML" by Doug. I really liked this session. I definitely have used XML in my customer applications and developer tools, but it is always interesting to see what applications other developers come up with. Doug's session gave a brief overview of XML and some of the gotchas you have to be aware of and some techniques for working with XML data.

Last session of the conference was my "Extending the Sedna Data Explorer" session. I have done this session numerous times and I got tripped up in the last example where I display the ShowPlans for all the views in a database. The demo crashed and burned. This is a demo I did in the morning when I ran through all my examples one last time. During the day I was working on the Upsizing Wizard chapter and upsized the VFP NorthWind database. I was testing the upsizing of VFP views and when you do this it turns them all into remote views. Well the ShowPlan code is counting on local views and I was seeing the SQL Server login dialog during the demo. Not cool. Fortunately everyone was understanding that the demo gods were not kind during the last 5 minutes of the session. See why I don't update my machine for a couple weeks before a conference? Even something a silly as a demo can get tripped up by changing data.

Later in the evening of the last day is the speaker dinner. Rainer always comes up with a spectacular spread of interesting food. Each year there is fun discussion and lots of laughs. I thought I would leave by 11:00 but they kicked us out sometime after midnight. I was nearly falling asleep at some point, but got my second wind along the way.

The conference was terrific. I learned a lot, got some important work done, and was able to get some ideas spawned for VFPX during my time in Germany. In fact, during the conference one of the German speakers submitted a project to automate VFP builds. It was accepted and is the first time I was able to tell the project manager face-to-face that the project was accepted. We have not announce the project yet because the project manager is busy with his real job, but expect to see it soon. Looks real interesting. I am looking forward to next year if I am so blessed to be selected to speak in Germany for the fifth straight year.

Labels: , ,

German DevCon - Day 2

I skipped all the morning sessions so I could work on my customer projects since I have seen all the English sessions already. I did not get a lot done Wednesday and Thursday and was feeling the heat to produce some code for the deliverables I promised. The code is not very glamorous as it is changes to a FoxPro for DOS app, but the implementation is extremely important for my customer and the code I am working on has some cool elements in scheduling service calls out for the repair people. My customer is changing the process of assigning the calls to the repair people for the first time since the 1990's so I have to make sure it works and assigns the calls correctly every time.

The first session I attended was Doug's "Creating Explorer Interfaces in VFP", a session I have looked forward to since he submitted it as a session for SWFox. His screencast generated a lot of interest among the people who registered for SWFox and it received a lot of praise from people I talked to who went to it (both at SWFox and in Germany). During the session Doug went into something I am coining as "high-speed Canadian" as he started speaking quickly. You can tell when a speaker is really excited by the material they are presenting. Doug is a natural high energy speaker and he was ramping up during the early part of his session. He did slow down eventually. You see, while the Germans are terrific at English, it is not their first language so it is the responsibility of English speakers to conscientiously slow themselves down. The session did not disappoint. Doug has a really powerful treeview wrapper class with all the bells and whistles you could want. I also know he added the ability to disable the treeview after his session based on feedback he got during the session. He also showed how he uses VFPX components from the Themed Controls project as well.

The second part of my "Using VFPX Components in Production Apps" session was next. I presented a couple of components and filled in the rest of the session by showing off the new changes to the New Property/Method and the Edit Property/Method Editor being worked on by Jim Nelson and Doug Hennig, and the recent FoxTabs project lead by Joel Leach.

The last regular session of the day was Kevin McNeish's "Rich Internet Applications in Silverlight 2.0." There has been some buzz around Silverlight and I have a potential project that might be best done as a Web app so I wanted to get the scoop on Silverlight.

Rainer asked me to talk about VFPX in the second bonus session during his segment on the future of Visual FoxPro. He wanted me to briefly discuss the importance of VFPX, why it is so important to the future of VFP. I took the opportunity to ask people to get involved one more time.

Labels: , , ,

German DevCon - Day 1

Rainer Becker (organizer) starts out the first day at 9:30am with a brief Welcome session. It is in German, but I still catch part of it based on the technology words he uses.

First up was Tamar's "Making the Most of the Toolbox" session. I vaguely recall seeing Tamar do a session like this many years ago, and Toni Feltman did a session on this tool several years ago at DAFUG. I even present a couple of uses of the Toolbox during my "Get Productive with VFP" sessions. That said, I rarely use the ToolBox. I drag and drop classes from the Project Manager. But Tamar reminded me that the Toolbox is way more than the Form Controls toolbar on steroids. There were lots of interesting things presented, but the one I really liked is how you can set properties on an item in the toolbox. The property settings you make are applied to the control when it is dropped on the designer. For instance, you have a command button in a class library to close forms. I drop this on to the designer and right away I am compelled to name the control cmdClose via the Property Sheet. You can set this up in the Toolbox so it is done for you. This works almost like a builder or property editor, but handled behind the scenes and is custom to the class you are working with.

Up next was the conference keynote and keynoteX (where Ken "KenX" Levy talked). Ken gave a little history of VFP and how Microsoft actually at one point killed the product after the 6.0 release, but it was not killed based on the community uproar and the efforts of the Fox Team. He also noted that developers need to try VFP 9 SP2 to make the appropriate business decision for themselves instead of making the decision based on what they hear SP2 is like. There are over 100 bugs fixed and a couple of serious regression bugs that might not affect your application. Ken also mentioned some interesting statistics from community surveys. The one I remember is half of VFP developers are using SQL Server.

As far as the future of VFP, Ken mentioned several things. He expects Microsoft to provide hotfixes for VFP 9 if there are issues related to Windows 7 (note these are Ken's opinions, not Microsoft official statements - he no longer works for Microsoft). He said that the Fox Community must remain active to support each other. He had high praise for VFPX and the efforts of the people working on projects. He even referred to the developers as the "New Fox Team." He is watching and recommends the community watch the progress of VFP Studio, Guineu, .NET Extender for VFP and the VFP Compiler for .NET.

Ken finished up noting the four pillars of the VFP Community:
1) Product and Experience (VFP9, Sedna, & third party products)
2) Frequent Communication (online forums, online content, Web casts, screencasts, blogs and white papers)
3) Deep Engagement (conference, events, influencers, open source)
4) Product Enhancement (VFP tools online, VFP XSource, and VFPX)

After lunch I gave the first part of my "Using VFPX Components in Production" session to a crowded room in the auditorium. As a speaker I prefer crowded rooms because I feed off the energy. Rainer said my two VFPX sessions had the highest attendance of the conference. Sweet. I think the session went okay. I did have trouble finding a couple of examples, which is uncharacteristic of my sessions at a conference (I blame the jet lag). I did get some positive feedback afterwards and during meals. VFPX is really taking off in the community right now so it is not unexpected that there is some buzz going on at conferences too.

Doug Hennig followed my session with his "Advantage Database Server for Developers" session. I really looked forward to this session and was not disappointed. I am learning bits and pieces of ADS and Doug's session really helped me understand the positives and minor negatives with this product. One of the things that impressed me is the full text searching you can do on memo fields. If I recall correctly it took five minutes to do a search with the $ operator in native VFP and less than a second using the ODBC drive and the full text index capability of ADS. Very cool stuff.

Bo Durban's session on "VFP 9 and SP2 Reporting Component Basics" was one of the sessions I really wanted to see at SWFox, but knew I could see in Germany. It is always cool to have this in my back pocket when I am picking sessions I want to see. Being able to spread them across two conferences rocks. I arrived a little late as I was talking with Igor Vit and Christof Wollenhaupt between sessions. In this session I was hoping to pick up some tips on working with some of the new SP2 reporting enhancements because I have not had a lot of time to work with them based on my current projects. Getting a refresher on the Dynamic properties was worth the price of admission. Bo has a knowledge packed white paper for the session. It is definitely going to be one of those white papers I will need to read several times for everything to sink in.

After dinner is the evening sessions. The first was more from KenX. Ken showed the NET4COM and My Intellisense tools from Sedna. He also showed his AppScanX tool he has been working on this year and plans to submit to VFPX as a new project. Ken mentioned AppScanX to me several months ago and was planning on showing it at SWFox, but decided at the last minute he was not ready. I have been wondering how this new tool was different from Code References. It is actually a cool tool that takes a different approach to searching for text in all the source code in the project. You can search for text strings just like Code References, but you can also tell it to skip instances of the string based on different conditions. The tool is a little rough based on the fact the UI is done by BROWSEing a table, but it shows a lot of promise and should be something to look at in the future. I am looking forward to seeing Ken submit the project to VFPX. We kidded Ken at the speakers meeting that we are under strict orders to reject anything he submits. I am sure it will be accepted.

That is all I could take for the day. It was busy for sure and I was feeling a little guilty because I was neglecting my customer work, but I make that up on Friday as you will read: I played hookie in the morning to work on my customer projects.

Labels: , , ,

German DevCon - Day 0

Sorry for the delayed posts, but life has been very busy since returning from Germany.

Traveling to Germany is not high on the physical fun list when you go and come back in less than a week. I like the conference and the people, but my body does not do well on the trip. The flight to Frankfurt was empty when I booked the trip and nearly as empty when I checked-in online the day before leaving. Wouldn't you know, someone picked the seat next to me when there was an empty row behind me. So I moved my seat so I could have two seats. When I got on the plane the person across the aisle made a bed out of 5 seats. I watched a couple of movies (Wall*E being one of them) and tried to sleep, but instead worked a little on customer code and some on the Upsizing Wizard chapter for the Sedna book.

We made it to Germany 30 minutes early. Normally I get there before Doug and I would go to his terminal. This time my flight was arriving after Doug and Tamar and so they came to my terminal. We got a taxi to the hotel. Rooms were not ready so we ate breakfast and talked about Southwest Fox feedback. Once the rooms were ready I took a nap and did a little bit of work before the speaker meeting Wednesday evening. Before the meeting I met Bo and his wife and listened to their stories about traveling in Germany before the conference. This is exactly what I did with Doug and Jeff the first year I came to the conference.

All the VFP sessions I attended at the conference were excellent. Normally you will see me rate them with a certain number of stars. I learned something in every one of the sessions and rate them all 5 of 5 stars.

I did a lot of live posts during sessions on Twitter using the #GerDevCon hashtag, but is dead and does not find them which bums me out as I was hoping to use them as notes for these posts. I did have lots of fun interacting with my friends on Twitter, especially when I offered twitter beer when Rainer brought in beer during the evening sessions.

The conference hotel rooms have a new digital TV and digital service. I thought it was cool that I could filter channels by language. Mostly watched the BBC to keep up on news, and CNBC to hear about the financial crisis and watch the Tonight Show for some American humor. After the speaker meeting I went back to the room and slept as solid as I have in Germany.

Labels: , ,

Monday, November 03, 2008

Joel Leach blogging

Joel Leach has entered into the blogosphere over the last few days over on Foxite. In case you don't know Joel, he is the new project manager of FoxTabs over on VFPX.

Welcome Joel!

Labels: ,

Sunday, September 14, 2008

Microsoft releases security updates for VFP

Just in case you are like me and missed this, last week Microsoft released security updates for Visual FoxPro 8 SP1, Visual FoxPro 9 SP1 & SP2. The patches affect a lot of other Microsoft products too since it is one of the core DLLs used many Microsoft and other third-party software packages.

All the details are here.

I am a little confused on why there might be three separate patches since there is only one GDIPlus.DLL file, and it is currently shared between the three versions on my machine. It might be set up this way for those running only one of the three versions. I think you only need one of the patches since there is only one GDIPlus.DLL file, but I am not 100% sure.

I have an email off to Milind and yag for clarification.

UPDATE From Milind:
Yes, the same GDIPlus.DLL is used. However the patches are for all mainline supported versions for VFP.

The dll gets installed to common files, as well as the VFP install location (C:\Program Files\Visual FoxPro 8.0, for instance).

So if you have VFP8 sp1 and vfp9 sp2, you will only need those two patches. Since sp2 is cumulative of sp1, one can't really have 'all 3'. {g}
So it sounds like you need to install each of them if you want the update installed. Milind obviously did not read my white paper on installing all three versions of VFP 9 (I sent him the link {g}). My recommendation at this time is to install the GDIPlus patch for VFP 9 and copy the installed version to each of the other two folders if you have them installed.


Friday, September 12, 2008

Customizing Your Vertical Market Application

Today Cathy Pountney drove across the state of Michigan and presented/rehearsed her Southwest Fox session called "Customizing Your Vertical Market Application" to the Detroit Area Fox User Group. I have been looking forward to this session from the moment I saw it proposed to the organizers of the conference. Tonight I was not disappointed.

What Cathy showed is one approach, one architecture to developing and extending vertical market applications (those built with several potentially diverse customers who work in common businesses). Her approach uses a data driven, hook infested, dynamic approach. The ideas presented are not just something she is thinking of doing, but are a simplified version of the real world approach she and her teammates are using in the app they support.

The session starts out with a demonstration I won't spoil for those coming to the conference. Trust me though when I tell you there is some humor and some fun poking at herself and the three Southwest Fox organizers. Cathy then demonstrates how she makes the core app work completely different in the other three implementations.

Her architecture works for forms, reports (naturally), menus, processes, and controls. It is built into the base classes and is extremely extensible. While her session focuses on the vertical market application implementation, it could be applied to any software that needs ultimate flexibility to adapt to a dynamic business environment. Here examples are fun, the code is all there for the taking, and the ideas there to use and be expanded upon.

Cathy's approach might not be exactly what we implement in the first vertical market application White Light Computing develops, but the ideas and approaches were inspiring and could easily be the basis for something we design and integrate with the commercial framework we use.

Definitely a five out of five stars. While I have been to many sessions where I can say this session paid for the entire conference, I can say this session paid for the entire conference and the conference has not even started yet. Very well done.

Labels: , ,

Monday, August 25, 2008

Getting started with Visual FoxPro

In the last couple of years I have observed a lot of newbie type questions on the forums, and get a feeling that there is a slight influx of people new to Visual FoxPro showing up online, or maybe just getting online. Please don't interpret this observation that Visual FoxPro is surging in popularity worldwide, but in certain parts of the world it might be. In recent emails and over the years on forums I have answered a number of posts with the question: how do I get started learning Visual FoxPro?

Here are my current recommendations:
  1. Use the product and try things out. I don't think there is any better way to learn Visual FoxPro than trying things. There is a reason I put this as my #1 reason, it is the most important.
  2. Open the Help file and read. Sure there is the command syntax, but the VFP Help file is chock full of information about the product and approaches you can take to solve problems.
  3. Buy books and start reading:
    Any of the VFP books at Hentzenwerke Publishing are worth reading and have good information, especially the Fundamentals book, HackFox, KiloFox (1001 Things), the Report Writer, and Deploying Visual FoxPro Solutions. If you are new to VFP 9 and need to understand what is new in Visual FoxPro, get all the What's New books to get up to speed quicker. Soon there will be new books published by FoxPro User Group of German Language (dfpug, publishers of FoxRockX).
  4. Subscribe to FoxRockX (formerly FoxTalk 2.0).
  5. Scan,, ProFox List, MSDN Forums, Microsoft Newsgroups, Tek-Tips, the UniversalThread, the Virtual Fox User Group, dfpug (German), and PortalFox (Spanish/English). Read as many messages as you have time for. Many of links are on the admittedly outdated Favorites page of my personal website. (Yes, feel free to send me more and the corrected links {g}).
  6. Read as much of the Visual Fox Wiki as possible. Yes, I know there is a lot to read. How do you eat an elephant? One bite at a time. (sorry to those who love elephants - it is just a saying related to tackling large tasks, not a slight on elephants or elephant lovers)
  7. Read as many blogs as possible. Lists to start are here: Visual FoxPro Wiki - BlogWatch and the UniversalThread Blog List. You might consider getting a RSS feed aggregator. I currently recommend FeedDemon (now free).
  8. Sign up for one or more of the upcoming conferences (German DevCon (Frankfurt), Prague DevCon (Czech Republic), Atout Fox (France), SDN VFP Conference (The Netherlands), Brazilian Conference (Sao Paulo), VFP Conference Teheran (Iran), and Southwest Fox) (USA))
  9. Find a local FoxPro user group if one exists, otherwise band together some other Fox developers in your area and start one.
  10. Surf the web (Google is your friend), there are plenty of sites available with VFP information. You can start with some of the favorites on my site. From there you will find hundreds more.
  11. Consider hiring a mentor.
This should get you started and there might be stuff I missed (post comments on this blog entry). I realize that there is a huge financial investment and you will spend a lot time learning. The challenge you face is one many VFP developers have conquered in the last 13+ years. You have a lot of support waiting to help you out on the forums and way more resources than we had in 1995 when many of us were cutting out teeth on VFP.

Good Luck!


Thursday, August 21, 2008

Extending the Sedna Data Explorer - Teaser Posted

In an effort to entice you to sit in on my Extending the Sedna Data Explorer session I have recorded a short teaser video, and have it posted on the Southwest Fox Video page. The same session will be given at the German DevCon in November.

Please take a look and let me know what you think.

Labels: , , ,

Tuesday, August 19, 2008

Appreciation for the VFP compiler

We all take things for granted and I recently found renewed appreciation for the VFP compiler catching simple things. Over the last week I have been working on and off to track down an indexing issue brought to my attention by one of White Light Computing's sub-contractors. It is an issue between VFP and FoxPro for DOS.

One of my test programs runs in FoxPro 2.6a DOS and had the following code:

llSeek1 = SEEK( "CRANE ", "test", "lo_locn" )
llFound1 = FOUND()
llEOF1 = EOF()

I posted the code for a code review and it was revealed to me something I know: FoxPro 2.6a does not support the third parameter for the SEEK() function. FoxPro 2.6a for DOS and FoxPro 2.6a for Windows happily accept the line of code and ignore the extra parameters. I guess the FoxPro compiler figures this is a mistake on your part and is doing you a favor by ignoring the problem. In my case it was bad because I did not have the proper index tag selected and I was getting misleading results.

In VFP, the compiler catches extra parameters. If you add a fourth parameter to the SEEK() function VFP provides you some responsible feedback.

Compiling d:\devvfp9apps\junk\program1.prg
llSeek1 = SEEK( "CRANE ", "test", "lo_locn", "more?" )
Error in line 23: Too many arguments.

Compiler rules being tighten does cause pain initially, but in reality this is one of the best things the Fox Team did for us over the many versions released. I work in several versions of FoxPro and VFP these days, and understand the tweaks on the syntax is something I get burned on once and awhile. I really appreciate when the compiler saves my bacon.

One of the other things I commonly see with code I am working on is the ENDIF comments. For instance, sample code:

IF llCondition
llQueryOK = .T.
llQueryOK = .F.
ENDIF llCondition

Initially looking a the ENDIF one might think this is invalid syntax (ok, maybe I was the only one {g}) and the developer forgot to put in the && inline comment. In reality, FoxPro knows there is no valid syntax after the ENDIF so the rest of the line is completely ignored at compile time. This happens in all versions of FoxPro.

We have been taking on quite a few projects over the last year and my preference is to recompile to VFP 9 so we support fewer versions of VFP compilers and runtimes, and I want to take advantage of the stability of VFP 9. The most common compiler error I see is the lack of commas separating variable declarations. This one drives me crazy. It is easy to fix for sure and VFP 9 is really good about pointing out the problem.


Tuesday, August 12, 2008

Visual FoxPro Wiki: CDX Corruption Checklist

I am doing some research on a strange index issue today (likely a future blog post). Googling almost anything in VFP will link you to the single biggest FoxPro KnowledgeBase on the planet: Steven Black's hosted Visual FoxPro Wiki. I wish I had a count of the number of times I visit the Visual FoxPro Wiki.

Today the topic I found extremely compelling is "CDX Corruption Checklist". It is already marked as a three-star topic (highly rated). This topic did not help me solve my problem, but it was an excellent read.

My thanks to all involved in putting this one together.

Labels: ,

Thursday, July 10, 2008

Today's fun: VFP Memory Limitation

One of my clients called me with a problem with one of their VFP 6 applications crashing. The application has been running in 30 locations for 10 years with very few changes. I did not develop this particular app, but did mentor the original developer and helped with the design. It is used by engineers. At the site it was working on one computer, but not the other three. The error is one of the more common ones: Function argument value, type, or count is invalid. (11)

The IT department no longer has fresh VFP expertise because they have moved on to a new development platform. They gave me a call hoping I could fix it immediately so the engineers could keep on working. They brought the data back, but could not reproduce the problem.

Fortunately the Visual MaxFrame error logging is decent. Unfortunately the customer does not compile in the debug code so I could determine the program, but not the line number or the actual code. I dug in using the error log and traced the code to the SYS(3050) command. In the startup of the application a call is made to a procedure that sets the amount of foreground memory to a percentage of the overall memory available on the machine. The calculation uses Windows API calls to get memory on the machine and then works through a formula. In this case we are talking about three new engineering workstations and they were loaded with 4GB of physical memory. The program was determining it could have a little more than 2GB of RAM. The VFP Help file does not indicate a limit even in the latest version, but apparently there is one.

So the lesson learned today is: do not to allow the setting of the SYS(3050) function be strictly calculated. I added code to pick the minimum of the original calculated amount and something less than 2GB. It is the first time I have used the VFP MIN() function in a long time.

I never hit this problem because I have a configuration item with the amount of memory to set. I know several developers use a formula to determine the amount of memory to allocate to VFP. If you are one of these developer you might want to check your formula to see if large amounts of memory could trigger this error.


Sunday, June 22, 2008

VFP: Include Config.FPW in EXE

I was working with one of my clients a couple weeks ago and he asked me my thoughts on using a Config.FPW with a VFP app. I mentioned I include one with every application I deploy and sometimes two.

The first one is brought into the project, marked as included, and compiled inside the EXE. Some Developers shy away from this technique because it makes the Config.FPW read-only and this sort of defeats the purpose of a configuration file. This was true in VFP 7, but since VFP 8 was released you can have more than one by including the following line in the Config.FPW:


You can include a Config.FPW file in the application folder to override any of the settings. Visual FoxPro gives the external file priority. Here is my default Config.FPW file I start with for all my applications.

* Default Configuration file for application
_FOXREF = ""
_GENPD = ""
_WIZARD = ""

You might be wondering why I have a bunch of the system memory variables blanked out. I cannot recall where I read it, but this helps a run-time application start faster because VFP is not trying to find the IDE tool locations determined by the system memory variables. This has been an old trick from a long time ago. We are probably talking nanoseconds of savings because VFP is very fast, but I only really had to type these in once.

So my client implemented my idea in his app and called me back to tell me I was nuts because it was not working. Crazy talk, I know I have been using this for years. I asked him if the file was marked included, and if there was actual settings in it and he proclaimed yes. So I connected up to his machine to see what was up. He included it in the Programs section, not the Text Files section in the Project Manager. Took me about 30 seconds to figure this out and he was back in business.

I do find it interesting that Fox cares about this as I always thought it was the file name extension that mattered, but apparently the section you include the file under does have an impact on how it is treated. Good to know (and share with all of you just in case I am not the last developer to learn this {g}).

I have read where some developers are using this file to SET REPORTBEHAVIOR 80 so they can move their apps to the VFP 9 runtimes without needing to change their source code. I have an application object that calls an environment settings object to make most of the SET commands the way I like or need them for my applications. Alternatively you could set them in the Config.FPW, I just don't use it this way.

I also read something interesting this week about the Config.FPW file that I had not considered before, but if you include a Config.FPW file in the same folder as the Visual FoxPro OLE DB driver it will use your customized settings. I have not had a whole lot of use for the OLE DB driver in my Fox projects, but it is good to know in case I do have the need to do so in the future.

What techniques are you using to help me build a better default Config.FPW?


Thursday, June 19, 2008

VFP and heart stoppage

I can probably count on both hands and feet the number of times I have literally sworn at Visual FoxPro (that would make it an average of once a year). Today was one of those days. I have been working on a new solution for one of my customers that needs to send email. I have tried several techniques with emailing from FoxPro over the years (Outlook Automation, CDO, West Wind wwIPStuff, Shelling out a MailTo, and most recently Craig Boyd's Extended MAPI FLL, and Blat). The swearing has nothing to do with any of the email techniques, but I can say working with email does cause hair loss.

The situation that caused me to swear today was one I have never seen before, and honestly cannot explain how it happened. I was working with a set of classes. One parent class (abstract) and four different subclasses with all the different implementation scenarios. I was using the Class Browser to work with the class library. I instantiated the child class like normal using a NEWOBJECT(), and then called the SelfTest method I have setup to run through different test scenarios I have to verify the code works as designed. I found the problem I was tracking down in the debugger, canceled out, and opened up the subclass.

This is when the twilight zone moment happened. When I opened the class all the source code for the class was gone. I mean gone, as in zero property settings, and no method code. I closed the class and opened it again. Same thing. Holy S&^*&&*t! (sorry, but I have to tell the whole story). A complete morning's worth of stream of conscious coding out the window. I tried to open up the parent class and got the message that the class was in use. Weird.


Yes, I know the commands have some redundancy, but one can never be to sure to get the cleanest environment. Back to the Class Browser and still no luck opening the parent class: still in use. Visual FoxPro has a way to hold on to classes when I least want it to. Time for the FoxPro flush (not the FLUSH command, rather, QUIT and restart). Opened up the Class Browser and my subclass and there it is in all it's glory, the source code for methods and properties are back to normal. Relief.

So I backed up the class library and finished up the documentation in the classes and called it a morning. Hopefully the stress of potentially losing the source code made me stronger since it did not kill me (this time at least).


Thursday, June 12, 2008

VFP Reporting Tip - paying it forward

I was mentoring one of our clients this morning because of a reporting issue he faced with some weird truncating labels (not that this tip is of any help for his problem {g}). During the session he showed me this new wiz-bang function he created to concatenate text together to be displayed on the report. He mentioned how his function removes the missing details from a snail mail address. You know the drill, customer wants to track address line 1 and 2, contact name and company name, but only wants to print the things that are filled in.

I turned around and told him about his new friend the semi-colon (;). This is a trick I learned back probably in FoxPro for Windows or even DOS when I was creating labels for customer mailings. You first drop a textbox on the Report/Label designer and size it to show the max lines you will print based on all the data being entered in the record. You can add the expression like this:


The semi-colon acts as a carriage return and any columns in the expression that are empty are not printed and if the line is empty the carriage return is not included. The commas (,) outside of a quote are replaced by spaces. So you can see how I am concatenating the city, state, and postal codes for a line.

I know this is an old trick and tip, but my client has been using Fox of some sorts for a long time too so in the case where you did not know this I am hoping it will be helpful. There are so many little things like this I take for granted that everyone knows, but realize in working with other Fox developers that this is not always the case. I also wonder from time-to-time how many little tips like this one I don't know about.

Labels: , ,