Saturday morning started off with three sessions on architectural/OOP topics, so I was looking forward to it.
Data Driving Applications
Toni M Feltman
Toni is another of my favorite speakers and I love her speaking style. There have been previous sessions about using meta data in frameworks, but this session was more about refactoring legacy code (there’s that subject again) into data. A real-world example she gave was code that ran for specific users. The users were defined by an IF INLIST(“USER1”, “USER2”, etc.) command that was duplicated many times throughout the code. If that sounds ridiculous, perhaps you have seen CASE statements that run custom code for specific clients. The problem is the same: the users/customers are hard-coded into the app. The first thing Toni did was pull the user list into a separate function. This was easy and low risk, and when users changed, they only had to change the list in one place. Later the user list was refactored into a table with the appropriate permissions. Rather than have someone manually add all the users to the table, she did it right in the function and added users automatically with default permissions. The session eventually led to creating memo fields where users could create their own code or expressions without having to touch the main EXE. Another good session.
Getting Your Head Around Business Objects
Tamar E Granor
Business objects are a concept that can be hard to grasp. All too often the technical benefits are highlighted of separating your code into tiers, but what makes it a “business” object? Tamar asserted that the architectural benefit of consolidating your business rules into an appropriate place is more important than the technical benefits. She talked about a fascinating project that used FoxPro to manage network hardware. Since the interface was not tightly bound to data, it forced her to think about how code should be separated into business objects. She then demonstrated the concepts using a Suduko game. There were a lot of objects flying around, but there was a clear separation of concerns and it was interesting to see all the objects interact. Tamar emphasized the idea that business objects are the “engine of your app”.
Advanced Principles of Solid Object Oriented Design
This was originally going to be my last session of the conference, but being a “big idea” session, I knew it would be better if I tweaked KOKOPELLI to move it sooner before my brain was completely melted. 🙂 SOLID is an acronym coined by Robert Martin for key OOP design concepts. I won’t go into the details here, but Alan did a good job of driving home the ideas with both metaphors and code.
FoxCharts – Great Looking, Modern Charts in Pure VFP Code
All I can say is “Wow!” I had no idea how far along this project had come. Jim demonstrated some impressive charts and functionality, and it is all done in a FoxPro style. FoxCharts is every bit as good as commercial options, if not better.
One of the most popular tools for working with data is Excel, which is ironic considering it is not a database. Nevertheless, our clients demand it and we provide. VFP, of course, has built-in commands that make this a snap, but the result is not exactly presentation quality. COM Automation can be used control the formatting and works pretty well, but it can be very slow. Christof presented another option: XMLSS (XML Spreadsheet), a format introduced in Excel XP (a downloadable plug-in is available for Excel 2000). It allows you control over formatting, but since it is just XML, you get VFP’s text handling speed. There are limitations, but if you can work within them, the result is orders of magnitude faster than automation.
Microsoft Virtual PC for VFP Developers
I have heard good things about virtual machines. I’ve never taken the time to try one, so I was ready to see the technology in action. Doug presented Microsoft Virtual PC 2007, which is available for free. As you might guess by the name, it runs an emulated PC inside a window on your desktop. It’s an emulated 32-bit machine with a hard drive, network card, sound card… the basics of what you expect in a typical computer. That being the case, the answer to just about every “How would you do this or that in VPC?” question is “How would you do it on a standard computer?” When you boot up a VM for the first time, you install the OS, service packs, updates, anti-virus software, and any other applications you want.
VM’s are good for testing software, testing installations, and isolating your development environment. Basically, if you don’t want something screwing up your main Windows install, set up a VM and do it there. VPC includes good tools for managing it all. As always, Doug gave an excellent presentation, and now I can really see the value of using virtual machines.
Several speakers and attendees went go-cart racing at a local track. I will let the winners gloat over their respective victories. 🙂 Rather than embarrass myself on the track, I headed back to the room to get a little bit of work done and to post on this blog, with the intent of meeting everyone back at Club 709 after the races. By the time 11:00 PM rolled around, I couldn’t keep my eyes open. I wimped out and went to bed, but still a good day.