Southwest Fox 2008 - Day 3

by Frank Perez October 18, 2008

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.


Filed Under: VFP

Southwest Fox 2008 - Day 2

by Frank Perez October 17, 2008

Day 2 started with Andrew MacNeill's “Profiling and Refactoring: How to Analyze and Clean-up Your Code” session. This was my first time seeing Andrew present, although I've been reading his blog and following his podcast The Fox Show for some time now. The two big things I got out this session were Code Analyst and Coverage Profiler tip.

Code Analyst is an open source developer tool on VFPX that is used to evaluate code against a set of user defined rules. For example, there could be a rule that PUBLIC variables are not allowed. There could also be a rule that every method/program/function must have a RETURN. Code Analyst would then scan the source code and document which rules were broken and where at in the source code. Kind of like a Code References on steroids.

A really cool feature of Code Analyst is that it supports four types of rules: method, line, object, and file. A good example of a method rule is the RETURN command. Each method must have at least one. Or only one, depending on you was raised {g}. Whereas checking for a PUBLIC variable would be something that is done for each line.

One idea I had for using Code Analyst is enforcing Software Development Standards (a.k.a. this is how we do it here). For example, I could have a function for opening tables called OpenDBF(). Therefore, the USE command should only exist in this function. I could create Code Analyst rule to check for the USE command.

As for the Coverage Profiler tip. Anyone who has used Coverage Profiler knows that the LOG file it generates can get big real fast. Disk space is not the problem so much as getting the Visual FoxPro Coverage Profiler Analyzer tool to process a 100+ MB file. Andrew suggested importing the LOG file into a table and then deleting the entries that were not important. For example, I could delete entries based on the filename, class, or the time it took to execute. After that I’ve got something that is probably a lot easier to grok.

The second session of the day was Christof Wollenhaupt’s “Introduction to Mobile Development”. This presentation covered the basics of developing software for mobile devices. Christof discussed how to setup a virtual mobile device for testing, mobile device limitations such as screen size and API, and did a demonstration of how to use the alternative Visual FoxPro runtime Guineu for running VFP applications on a mobile device.

Next I attended Rick Strahl’s “Using Ajax and jQuery features to build Rich Web User Interfaces with Web Connection” session. Rick explained what jQuery is, why you want to use it, and demonstrated some cool examples. He stated the number one reason for using something like jQuery is the normalization across the different browsers. He also mentioned a blog post on his web site where he explains how to add jQuery IntelliSense to Visual Studio. Although it sounded like Microsoft should be adding that feature soon.

After lunch, it was time for Craig Boyd’s session “VFP Studio: Extending the Visual FoxPro IDE”. Ever since the Southwest 2007 keynote where Craig and Bo Durban first did a sneak peak of VFP Studio, I’ve been waiting to hear more about VFP Studio. Craig explained that VFP Studio is a replacement for the Visual FoxPro IDE. For example, the MODIFY COMMAND window, Class Browser, Project Manager, Form Designer, and etc. It is not a run time replacement, like Christof’s Guinea or eTechnologia's VFPCompiler for .NET projects.

Craig went on to explain that VFP Studio was created with Microsoft Visual Studio SDK. This same SDK has already been used to create IronPython and a few other IDEs. He stated the biggest problem with the SDK is that it is so huge that it can be quite overwhelming. He also mentioned that it is still evolving, so sometimes a new release will break existing code.

Craig was able to demonstrate some of what he and Bo have already completed. What I saw was very cool. I especially like code editor and form designer features.

Replacing the Visual FoxPro IDE may not sound like a cool idea if you have never worked with Visual Studio. Trust me, it is {g}.

Craig wrapped up with a call for help. He and Bo are currently looking for developers with C# and Visual FoxPro experience. They also have a need for testers. So if you are interested, please contact either of them directly via email at SweetPotatoe Software or Moxie Data.

Next I attended Christof Wollenhaupt’s “Creating Owner Drawn Controls in Visual FoxPro” session. In this presentation Christof demonstrated how to create your own controls (i.e. page frames, progress bars, and etc.) using GDI+. I would call it a basic how to guide for creating the same kind of cool things you see on VFPX like ctl32 StatusBar and FoxCharts.

One of the coolest parts of this session was an example of an Office 2007 style floating menu bar. You know the one that pops up when text is highlighted and the mouse is positioned over the text. Very cool.

I also enjoyed the way he “converted” a complete Visual FoxPro form to a .NET GUI with the click of a check box. Everything from page frames and option groups to text boxes. That was pretty slick.

The last session of the day was Rick Strahl’s “Using .NET with Visual FoxPro for Reliable Web Service Access and Hosting” session. Rick discussed the current state of Web Services and Visual FoxPro, how to use .NET via COM Interop, and the differences between ASMX and WCF.

I must admit that I have only done a few web services so far, mostly Visual FoxPro server to Visual FoxPro client. It was good to see what my options are for the future and to be able to squirrel away some sample code and notes {g}.

Andrew MacNeill's Blog
Rick Strahl's Blog


Filed Under: VFP

Southwest Fox 2008 - Keynote Presentation

by Frank Perez October 16, 2008

One of the questions I get asked most often by someone who could not attend the conference is what happened during the keynote? Traditionally the keynote is when big announcements are made and new cool stuff is publically previewed. For example, last year Craig Boyd and Bo Durban demonstrated VFP Studio.

This year the organizers of the conference did something different that I think was really cool. A live video broadcast streamed over the internet.

So, if you missed the live broadcast or just want to see it again. It is available for viewing at Be sure to catch the "magic" of Craig Boyd and Bo Durban about 57 minutes into the video {g}.

One last thing. I want to thank Steve Bodnar of Geeks and Gurus for making this happen. He did all of the work solo. From the setup and testing, to shooting the video and handling the chat window. Way to go Steve!

Geeks and Gurus


Filed Under: VFP

Southwest Fox 2008 - Day 1

by Frank Perez October 16, 2008

Today began with Andy Kramek's pre-conference session - Introduction to Transact SQL. This session covered the basics of Microsoft SQL Server Transact SQL (T-SQL). From variables, temporary tables, and common table expressions. To functions, stored procedures, triggers, and more.

My favorite part was the explanation of how Microsoft SQL Server, and most other database management systems, process a SELECT command. Andy took us step by step how the query engine builds each of the intermediate result sets, the order everything is processed in, and how Visual FoxPro's engine works slightly different.

Knowing this helps me understand how to build better SELECT commands. It also explains why a SELECT command might not always do what I expect it to. Great information.


Filed Under: VFP

Brooksie Way 2008

by Frank Perez October 5, 2008

Today I completed my first half marathon (13.1 miles) with a time of 2:15:35 (hh:mm:ss). My first goal was simple - cross the finish line. After that, I was shooting for a time of 2:15 (hh:mm). So I must say that I am pretty happy with my results.

As for the race itself, this was the inaugural year for the Brooksie Way Half Marathon & 5K Run/Walk. From my perspective I think everything went really well. I like the course, a mixture of paved roads and dirt trails, flat ground and hills. There were plenty of aid stations, lots of volunteers working the course, and a beautiful finish line at the Meadow Brook Hall on Oakland University campus.

I would like to say thanks to my family and friends who cheered me on along the course and at the finish line. Every time I saw your faces and heard your voices it made me forget the fatigue and gave me the boost I needed to push harder.

Now that I have done my first half marathon, I'm thinking the Martian Marathon (26.2 miles) on April 5th, 2009.

Brooksie Way Half Marathon
Martian Marathon


Filed Under: RUN

About Frank

Frank lives in West Bloomfield, Michigan with his wife and three children.  When he is not writing code, he enjoys long distance running and riding his motorcycle.

Month List

Tag Cloud