Archive for November, 2010


The conference was terrific. I learned a lot and it was great renewing some friendships and making a couple of new ones. The Germans are terrific guests and Rainer and Tina (who does most of the real work according to Rainer) do a terrific job putting on the event. Despite the jet lag, I look forward to the trip every year. This year was more fun because Cathy came to speak for the first time and it was nice having a friend along for the long flight to and from Germany. I have already been invited back for next year too, which is terrific.

The speaker dinner was themed oriental with some of my favorites including sushi and Thai food. More importantly the discussion was fun and often so funny I had tears in my eyes. It started at 8:00pm and ended around 3:00am for me, just a few short hours before we had to get in the taxi for the ride to the airport for the morning flights. Lots of discussion on how we can improve both German DevCon and Southwest Fox. We have a lot of synergy between the conferences and the organizers help each other out when ever possible. I think you will find many of the discussed topics making their way into the conferences next year as some of the ideas were downright cool and genius.


The last day of the conference is always the hardest since your brain is suffering from “VFP overflow” from all the knowledge you gained from the sessions. Combine that with the jetlag and you have a recipe for sleepiness. Fortunately there are only 5 sessions and the closing session on the last day.

Up first is Doug Hennig and his “Cool Controls for Your Applications” session. Doug’s theme this year was deep diving into various controls in both of his conference sessions. Doug is making the important point that your apps do not have to be mundane and boring. There are no more excuses. Doug covered his impressive SF Splitter control (for vertical and horizontal splitting, which I am planning to use soon for one project), the SFComboTree (found in the PEMEditor), the VFPX PopMenu project, Paul Mrozowski’s RCSCalendar control, and finally the VFPX Balloon tips by Carlos Allotti. Great session for anyone looking to spruce up your app.

I skipped the next session because my head was hurting a little bit and because it felt like I had gone non-stop for a few days.

Alaska Software was kind enough to show us where they are going with their “Polar Fox” project. They showed this off at Southwest Fox, but I did not have time to review it in Pheonix. Steffen Pirsig detailed the plans for the next major version of XBase++ and how it will transpile the current FoxPro source code into their format to run. Details include:

  • Transpiler: will take existing Visual FoxPro code and transport it to XBase++ code.
  • Source code control will be simplified with text based source code.
  • Source compiles down to native platform executables.
  • Decompilers will be a thing of the past.
  • Designers will be written in XBase++, IDE can be automated (continuing the tradition of extensibility).
  • Command prompt, roll your own commands (interactive just like Visual FoxPro).
  • Concepts they are pushing: no limits, innovate without disruption, favor design, continue the language.

Code already is compiling and building EXEs, the initial designers are working, they are making the reporting engine 100% compatible, and have the Profiler and Debugger working.

The idea that gives me the most confidence that Alaska Software can pull this off is that they have done it before with Clipper and the Clipper Community. They also seem to have a terrific grasp on what Visual FoxPro does and how developers use Visual FoxPro, and the types of applications they write. I really appreciate the time Steffan put in on the presentation and how Alaska Software is working on a path for Visual FoxPro developers in the future.

After lunch was my “Mocking Your Customer” session. This session is the one I was most nervous about because it really counts on audience participation. Having other contribute to any session benefits everyone, and the participation I have had in rehearsals and at other conferences was terrific. So in an effort to coax people into asking questions I offered to draw names for one of two licenses of Balsamiq Mockups. It worked a little as two people asked questions. Each won a copy of Mockups. The business side of the session went faster than normal since there were no questions or observations to share. I enjoyed the session and got several nice compliments from attendees as they were leaving.

The last session of the conference for me was Servoy’s vendor session “Servoy for the Visual FoxPro Developers.” Several Fox developers have made some very public statements on how they are learning Servoy and how they like it. Ken Levy did not show up on time so I went out in the lobby to track him down and remind him he had a session to give in 5 minutes. I am not throwing stones here based on my tardiness to my first session. I normally don’t get to see vendor sessions so I decided to take the opportunity to check out Servoy. After all, they have sponsored SWFox for 4 years and I don’t really have in-depth knowledge of the specifics, and have not seen a demo of the product. It does look impressive, especially how you can literally change the source code while the code is running. Once you save the change it is immediately reflected in the running form. They offer a good deal to start with the development IDE for free. Unfortunately as cool as it looks, the one thing I did not get answered specifically is the licensing costs, which I have been told is per seat licensing. They slipped through the pricing slide extremely quick and ask that you contact them for specifics on the pricing.

The conference finished up with the closing session where lots of door prizes are given away.


One might be thinking of “feast” and the food served at German DevCon. While breakfast was delicious (I had eggs and smoked salmon, with grapefruit juice), I am referring to the nine session slots during the day. Lots of choices and lots to learn. Official sessions on Friday start at 8:30am and run until 10:00pm. It is a day developers feast on a lot of great material presented by some great speakers.

Up first is Christof Wollenhaupt with his first of five sessions for the conference. This session is called “Psychologie und Softwareentwicklung” and was presented in German. All the sessions in this slot were in German so I picked the one in the same room as my next session. I listened as much as I could, but mostly I caught up on some email and other work. Christof’s sessions in German are fast, as in speaking fast and packing in the information for the attendees. I like the fact that people laugh at is jokes and he has interactive sessions.

I followed Christof’s session with my “How Craig Boyd Makes Me a Hero!” session. I enjoyed it and hope the attendees did as well. The session was more interactive than most sessions I have given in Frankfurt. I love interaction and contributions from the audience when I talk so this helped me. I got through all but one demo so the timing on this session is still not perfected (something I worked on last weekend and on the plane ride to Frankfurt). The demo gods made sure I was in check with a VFP 9 SP2 C5 crash and the same for Skype (which definitely should not have been running in the first place). Rainer, the conference organizer, stopped by the room before the session and noted how much he really liked the session title. I have plenty of material for part two next year if Rainer wants to invite me back.

Up next was Cathy Pountney’s “Making the Most of VFP 9 SP2 Reports.” Cathy reminded me about some issues with respect to installing VFP 9 SP2. Since I have seen this session numerous times at user groups and conferences I took the time to update my document “Install and Run Different VFP 9 Versions on One Computer” with her discussion about Virtual Storage in Windows Vista, Windows 7, and Windows Server 2008. The introduction to the new Report Dynamics is delivered from one of the few experts in the community. The tips she shows in this session are outstanding. One of her tips in particular deals with the wrapping of details to the next page of reports when you have more than one object with different sizes bumping up the height of the band. This one hit home because on of my mentoring customers has a very similar problem (which Cathy helped me work through for a solution during lunch). This reminds me of an important benefits of conferences: getting help from other developers to solve problems that have you stumped. I know I try to help out other developers when ever I have a chance, but to do it face-to-face is really beneficial. This session actually was a perfect warm up to her fxReports session later in the afternoon.

Lunch followed Cathy’s session. At this point I was not hungry because breakfast was so good, but I had some salad and naturally the smoked salmon.

“Windows Presentation Foundation 4″ by Kevin McNeish followed lunch. This was the perfect follow up to the Entity Framework 4 session on Thursday. Kevin compared and contrasted the differences between Windows Forms and WPF-based interfaces. I really know nothing about either, so it was great getting background from one of the experts on the subject.

“fxReports – Sharing Custom Report Features” by Cathy Pountney is another session I saw in rehearsal at the Grand Rapids Fox User Group. Cathy added some stuff based on the fact that the site is established. We are working on getting a place set up so the community can share add-ons and plug-ins for the various VFPX tools that have them. We decided that we needed a place separate from the VFPX Codeplex pages because VFPX hosts core projects and is not great with respect to multiple downloads. The rest of the session showed various dynamics and special effects Cathy has produced via a new reporting framework called fxReports. She showed the code and how they work, and how they are implemented in the ReportListener class hierarchy. The framework is designed to share components with other developers. Cathy has devised a VFPX project that helps developers not only design special effect classes for reports, but to load other ones by other developers, and share the ones they create. This is a really cool project and has tremendous potential for developers to create special effects on report and simple to implement ones developed by others. Really cool and a great session.

Christof (note, I only have to use his first name {g}) presented “Automatisierung des Entwicklungsprozesses” also in German. I was catching up on more work as I listened to him and tried to understand the various processes he has tried to automate in his work life. So many things to try and so little time to do so.

I skipped the two after dinner sessions since they were in German and got some more real work done. I needed to work on a proposal that was due for a customer by 5:00 EST so the fact that I was six hours ahead really helped me beat the space-time continuum limitations.

Once the proposal was completed and emailed I headed downstairs to participate in some discussions in the bar and later headed to bed because I was really tired after the long day. Unfortunately, jetlag was kicking my behind once again.


As you can read in my previous post, things did not start out well on day one for me. It was not until after lunch some time that the adrenaline finally leveled off and my hands stopped shaking.

For the record, I had smoked salmon at every meal during the conference including lunch on day 1. This is a personal goal I am happy to meet each year at German DevCon.

Doug’s “A Deep Dive into the VFPX ThemedControls” session was up first after lunch and as is normal for one of the world’s best speakers, Doug did a great job. He stepped us through a deep dive into Emerson Santon Reed’s class library of fantastic controls that really helps in the quest to make Visual FoxPro applications look modern. Doug talked about the fundamental classes: ThemesManager (allows you and your customers to pick from one of six predefined themes), the ThemedContainer, the ThemedTitlePageFrame, and the ThemedButton (including the builder). After the fundamentals Doug described in great detail the classes and code needed to implement the ThemedExplorerBar, the ThemedOutlookNavBar, ThemedToolbox, ThemedZoomNavBar, and the newer Ribbon. I agree 100% with Doug’s summary that there are no more excuses for Visual FoxPro developers to create applications that do not look good. Doug’s 26 page white paper on this topic is a gold mine of information as well.

Cathy Pountney’s session “PEM Editor: An Absolute MUST HAVE in your development toolkit” followed Doug’s session. I saw this session in Grand Rapids when she rehearsed it for Southwest Fox. Cathy’s session in Grand Rapids was good, but it was obvious she refined timings and material since I saw it. I was wondering if I would learn anything new since I saw it once before, and should not have forgotten that there is so much to this tool and I was destined to learn or relearn something new. PEMEditor is always changing and being improved by Jim Nelson so any minute we can count on a new release with new features. Cathy gave a brief overview to show people in the room who did not know what the PEMEditor is. After this she showed the crowd a dozen or more different features that are new in the current version. One of my favorites was the “Go To Definition” which literally opens up the method in the method editor, the property in the PEMEditor, or an object in the PEMEditor Document Treeview. The “Extract to method” does exactly that, BeautifyX is a beefed up beautifier, and the built in Enhanced Cut, Copy and Paste are fantastic advancements in the PEMEditor becoming a serious refactoring tool.

Kevin McNeish’s “The Microsoft Entity Framework 4″ (also known as EF4) made my list of sessions because I have read and heard from others that it is Microsoft’s data access soup of the day for .NET development. Seriously, Microsoft has put a lot of resources together to improve the Entity Framework. White Light Computing purposely used EF4 in our conference session eval Web site that we created earlier this year for Southwest Fox so we could learn more about it. Kevin introduced EF4 with his normal wit and humor. The one thing I took away from the session is that Microsoft made some significant improvements from EF1 to EF4. EF4 is really the second release of the Entity Framework and in true Microsoft fashion, needs three releases to really get this product at a mature state. One thing is for sure though from what I have learned at German DevCon, Microsoft needs to listen to database developers more closely as there are some fundamentals missing in EF4, which I find disturbing, but not surprising.

I skipped the first session after dinner since I needed a bit of a break. I also needed to finalize the three tips I planned to present during the bonus session.

The second bonus session was the delivery of two “FoxPro Lifetime Achievement Awards” and Tips & Tricks from the conference speakers. Rainer started out the session with an overview of an app he is working on. Most of his discussion was in German with an occasional break in English to help out the non-German people in the audience. It looked like an interesting application.

The two “FoxPro Lifetime Achievement Awards” were given to Jürgen “wOOdy” Wondzinski, and Christof Wollenhaupt. Both wOOdy and Christof are developers people recognize with a single name, like Cher, and have made so many contributions over the years to the world-wide Fox Community. Their contributions are going to be posted soon on the Fox Wiki. I was honored to be one of the presenters along with fellow award winners Doug Hennig and Rainer Becker.

Up next was the Tips and Tricks session. Several speakers presented tips they have learned over the years. I presented an ActiveX/IntelliSense tip, ability to sort Watch Expressions in Debugger, and a DataExplorer Query tip.

Other tips presented by the other developers included:

  • Doug Hennig demoed “Go To Definition” feature of PEM Editor and a instrumenting/logging tool.
  • Ken Levy demoed _SetAllX FFC class he included in VFP, _EvalText found in _HTML.vcx, and advanced Component Gallery tips.
  • Cathy Pountney demos Report Designer trick for “;” as CHR(13) in reports, and is showed off SlickRun.
  • wOOdy is showed a field type tip, a BROWSE NAME trick, and EVAL() tip.
  • Christof showed integer in Command Window does Goto, “-” concatenates and ALLTRIM(), using SET VOLUME, and killing/restarting VFP. Christof also mixed tips and tricks with humor and had the audience in stitches.

The tips might be printed in a future issue of FoxRockX. That was the end of the conference day. I hung out with folks in the bar for a while, and then headed back to my room around midnight to get some customer work completed. Day 2 would come too quickly.


The most common nightmare I have as a speaker is showing up for a conference unprepared. So far I have been able to avoid this. The second most common nightmare is completely losing my voice. The third most common nightmare I have is oversleeping. You know, waking up to a phone call from the organizer wondering why I am not starting my session. I have heard stories over the years for a couple people that this happened too, mostly due to some heavy partying the night before. I take pride in the fact that I am always on time for my sessions and prepared, and organizers often count on me to do the early morning sessions because I don’t party.

Today I overslept despite setting up a wake-up call, the television alarm, and my phone as a backup. I did not wake up until Doug Hennig called me almost four hours after the alarms.

I heard the phone ring. I answered it expecting it to be someone from the hotel telling me to wake up. Strange though was the voice sounded a lot like Doug. I think I asked him what time it was. “11:20″, Doug replied. Mental check, my session starts at 11:30. Holy $%#, 10 minutes.

Need computer working so I figured I could log in and get things set up and ready so I can start immediately upon getting in the room. Blue Screen! Seriously?!? Really?!? At this point I thought I might want to wake up from this nightmare. This is not a joke. These are real thoughts. Pinch, nope I am awake, phone says it is 11:21. Reboot the machine and hit shower, dress, login, and run for session room.

I arrived and started my session at 11:35.

The first 5 minutes were the hardest 5 minutes of my presenting life. The adrenaline level was as high as I have experienced in all my years of speaking. I could feel my heart jumping out of my chest as I introduced the session. At the same time I was introducing the session I was trying to figure out where I could cut time, and slow down my racing heart.

Jet lag is obviously killing me this trip. I returned to my room exhausted last night, but could not fall asleep since my body thinks it is dinner time back home. I tried several techniques to sleep and all failed. I got up and called my family and went through my session (which turns out to be a key to delivery this morning), tweeted about the problem of not sleeping, and handled some email for customers. All tasks were done hoping to make me more tired. I ended up falling asleep at 4:30 local time.

All-in-all I was able to convey the information I wanted to share with the people in the room. One of the attendees told me at lunch after the session, after learning I woke up 15 minutes before starting the session, that I did remarkably well considering the experience. In my mind it was definitely not my best work, but appreciate the kind review. I am also hoping the adrenaline levels off some time this afternoon. Wish I could bottle it up for use later.

Thanks to Doug for recognizing my absence and waking me up. Thanks to those who stayed and attended the session. And apologies to Rainer for letting you down this morning. It will not happen again. As a fellow organizer I know how important it is to count on the speakers to show up on time and deliver a good session.


I got a call from our longest term customer. We have worked together for some 13 years. Normally I like getting a phone call from them. But I dislike the calls that go something like this: “Rick, long time no see…heh, my computer got hit by a virus when the grandson played an Internet game on it over the weekend. My hardware person said the computer is too old and not worth fixing. He is ordering me a new Windows 7 computer, and upgrading Office from Office 97 to 2010. You don’t think there will be any problems with your Visual FoxPro 5 app, do ya?”

This computer is the only computer for the company and is close to 8 years old, and really did need to be replaced. This customer is running a Visual FoxPro 5 app that I developed in 1997 and has run without major issues since then. The app is so reliable I cannot convince the customer to upgrade it to Visual FoxPro 9.

So let me see, how much could go wrong with VFP 5 on Windows 7 64-bit, using Aero? The app uses Excel to import records via a remote view, and automates Word to generate letters and envelopes via VBA in Office 97. Hmmm, a few versions of Office, lots of potential glitches with Aero, and a handful of ActiveX controls and FoxTools.FLL. My response was: “I don’t have any idea the number of things that could go wrong.”

My greatest concern was the 32-bit ODBC drivers for Excel, followed by the VBA automation, and then the User Interface glitches we have seen in newer versions of Visual FoxPro on Aero. I also used a couple ActiveX controls and had no idea how well it would work on Windows 7.

I did immediately think it was my opportunity to update to Visual FoxPro 9, which means no more Visual FoxPro 5 apps to support. {big evil grin}.

I arrived at my customer’s home. He literally runs his business out of his basement. I start up the app and it immediately crashes on “API library is not found.” Easy one, FoxTools.FLL is not loaded with the run-time files. It took me a little bit of time to track down the location of the VFP 5 runtime files, and copy over a copy of FoxTools. Run-times were in the Window’s SystemWOW64 folder instead of the System32 folder. App up and running FTW. I tested out most of the data entry forms and there are no UI glitches. Customer is happy to see the app running.

Celebration lasted about 2 minutes when we tried to import the Excel file. Hardware dude who moved over “everything” forgot to set up the ODBC driver. This is easy to overlook and I had good documentation on setting it up. I dig around and find the 32-bit ODBC Manager and set up the ODBC driver. Import routine works just fine. Another round of premature celebration follows.

Surely something is bound to go wrong, right? I mean, would I even dare write a blog post about a perfect scenario for an upgrade? Probably not. {g}

Off to test the letter generation code. CRASH! It is not what you are thinking if you are thinking the VBA code was not working. It crashed on the silly progress bar update that runs as the letters are generated. It crashed on the progress bar setting the value to zero, as in zero percent. Odd. I futzed with the code and tried a few things and eventually determined the progress bar was unnecessary for the moment. The VBA code actually ran without a single hiccup once I got past the progress bar not making progress. I am curious about the progress bar, but that battle is for another day. It was more important that the letters and envelopes are generating so the business can meet their commitments to their customers.

Oh, and thanks Microsoft for keeping backward compatibility with VBA and the Excel ODBC driver in Office 2010 on Windows 7. Nice job! Kudos to everyone on the Office team for not making my life miserable and showing the customer that his investment in Visual FoxPro and Microsoft Office was a well placed investment.

The only things I wished I had today was the current error handler we use, and time to dig into the progress bar issue.  The error handler I wrote back in 1997 feels weak. The one we use today is way more robust. I am speculating that the progress bar only accepts integers and I am passing decimals, or it is looking for the percent.

The moral of this story is to add one more thing to consider the next time a customer calls and wants to upgrade to Windows 7: native Windows ActiveX controls. Silly thing is I avoid most of the Microsoft ActiveX controls these days because of the deployment headaches. Not a single issue I worried about materialized. It was the unexpected problem that consumed most of my time. That, should not be a surprise.