Saturday began with Doug Hennig’s “Creating Explorer Interfaces in Visual FoxPro” session. This presentation was about creating an explorer like interface similar to Windows Explorer using a TreeView control and the VFPX OutlookNavBar component.
Besides being an excellent speaker, Doug’s sample code and white papers are alone worth the price of admission. For example, Doug does not just use the standard TreeView control. He extends it by automatically linking an ImageList control, proving node load control, adding double click and right click functionality, adding “go back” support, adding support for saving and restoring the state on close/open, and more. Did I mention that it is also data-driven? That’s just awesome.
The second session of the day was Andrew MacNeill’s “Working with CodePlex and VFPX”. In this presentation Andrew discussed the basics of VFPX, how to use the CodePlex site, and how to access the source code. I’ve always felt like the VFPX site was a little confusing to navigate so it was nice to get a demonstration.
The third session was Alan Stevens’ “Manage Complexity with Agility”. This was my first time hearing Alan speak. I had heard good things about his presentation last year, so I was eager to experience one this time. I have to say, Alan exceeded my expectations. His presentation contained a lot of good ideas about the software development. For example, on the topic of software schedules, Alan suggests delivering something every 1 to 2 weeks. It is better to find out what you’ve done is not what the customer wanted, even though it may be what they asked for, sooner than later.
He discussed that most customers are not technical and therefore cannot provide formal requirements. What you can do is get the user to explain what they need in short descriptions, a.k.a. user stories. A user story consists of a role, a need, and a reason.
Alan also demonstrated unit testing with FoxUnit, and automating builds using VFP MSBuild Target. FoxUnit is an open source unit testing framework from VisionPace. VFP MSBuild Target is a VFPX project for performing Visual FoxPro builds.
After lunch I attended Doug Hennig’s “Advantage Database Server for Visual FoxPro Developers” session. I was really interested in attending this session so that I could get some first-hand knowledge about this product from a trusted Visual FoxPro developer.
Doug did a really thorough job of explaining what Advantage Database Server (ADS) is, how to install it, and how to use it with Visual FoxPro. This session covered a lot of material, so I’m going to limit my comments to my favorite three things.
First, if you are still using the Visual FoxPro ODBC driver, which has not been updated since Visual FoxPro 6, you may want to consider replacing it with the ADS ODBC for the following reasons. One, it supports Visual FoxPro 9 fields types, such as auto incrementing. Two, it’s free!
Second, ADS supports accessing Visual FoxPro data both as native tables and through ADS. This means that you can slowly convert an existing system to a client server model one module at a time. For example, you could change one form to access the data using ADS, while the rest of the system continued to access the tables directly. The end goal would be to change all the forms to use ADS, but this one module at a time approach allows you to first concentrate on the portions of the system that need the conversion to client server the most. How cool is that?
And finally, the ADS full text search capability. This feature alone could be enough reason to use this product. Doug started by creating a table with 80,000+ records (60MB DBF) that had a 500MB FPT file. He then performed a search with both Visual FoxPro and ADS. The results speak for themselves.
- Visual FoxPro Case Insensitive: 305 seconds
- Visual FoxPro Case Sensitive: 60 seconds
- ADS: 0.07 seconds
My last session of the day was Alan Stevens’ “Ignorance is Bliss: Why You Don't Need to Know Where or How Your Data is Stored?”. Alan discussed the idea that an application should not tightly coupled to the data. This makes it possible to have a more flexible system that can support different data sources.
Unlike his other session, Alan walked through quite a bit of sample code in this session to show this could be implemented using XML to transport the data. Alan warned that the Visual FoxPro XMLTOCURSOR() function tends to hang when the size of XML reaches about 11MB. His solution, was to use the XML DOM object in a loop to process the XML in batches of 500. I’ll have to keep that in mind if I ever run into that problem in the future.