Posts Tagged FoxForward

Live from FoxForward: The Last Day

Yesterday was the last day of the conference, and I’m sorry it’s ended. I learned a lot and met a lot of great Fox developers (who are people too, by the way). As the sessions were winding down, many of us hung out outside the conference rooms chatting about all things Fox (and a little about cars). I spoke for a second time today (materials here), and was able to catch a few other sessions. Here are some of my notes:

GDIPlusX library

Bo spoke on the GDIPlusX Library. After a brief overview and some instructions on how to download and get the System object in memory, he took a moment to discuss how system.prg works. What a great piece of architecture. If you haven’t checked out the GDIPlusX Library, you should at least download it and review the system.prg file (and then all the others too). GDIPlusX looks a lot like the .NET implementation on purpose, and works the same too.

Of course, at the moment, my head is spinning on all the other implementations for this type of architecture (Math, IO, etc.).

Now here’s a great tip. Declared DLLs take precedent over function calls. Therefore, if you name your own function the same name as a declared library, your code won’t run — the library’s code will. Bo showed us how he and his team developed a technique to take advantage of this behavior. When you need a dll function, call a VFP function with the same name that DECLAREs the DLL and then calls it (passing in all relevant parameters). Now the DLL function is in memory, and next time you need it, it will use it instead of the function. This means that you only need to declare your DLLs when needed. It also means that CLEAR DLLS ALL commands won’t kill your app if you need a DLL after that call (by the way, this is something I lost sleep over a while ago when some 3rd party function issued this command). Additionally, you now only DECLARE the DLLs when needed. I think Bo mentioned that this technique was first used by Rick Strahl, but on a smaller scale.

Bo also talked about how the GDIPlusX help is coming along. It looks like we’ll have more help for this library than we’ll ever need. Bo and his team are doing an amazing job with it.

A great resource for GDIPlusX, other than the official CodePlex/VFPX site, is Cesar Chalom’s Blog. Cesar has a lot of examples and is very active on the project.

How to OGLE Your Application

Alen Stevens taught us about OGLE: “Optimized, Generic, Layer, Extensions”. The goals of OGLE apps is to be future proof, data source agnostic, location independent, and .NET accessible. OGLE relies on physical n-Tier development techniques, where XML is passed among layers. Using XML in this way helps applications to be future proof. After the session, I talked with Alan about the architecture and he reiterated the importance of using XML to pass data between layers. We’re also reminded that VFP is a state-of-the-art XML parser — faster and more reliable than other available technologies. Therefore, using XML to pass data back and forth is a natural fit for OGLE.

The presentation was a perfect compliment to the whitepaper Alan created. The slides helped shape out the logic in the paper. Now I’ve got my head around it. He walked through lots of code examples, demonstrating the basics of the architecture. I haven’t used com as a middle tier before, so I was glued to this session. I felt that Alan gave a great overview of the process and now I feel like I’m up to speed. He showed us how to set up COMATTRIB attribues, which specifies type library attributes and values for PEMs. This applies to OLEPUBLIC classes only. You can do things like insert descriptions and read-only attributes. These are exposed and can be read by other technologies.

OGLEing apps seem like a smart design move. The separation and isolation of layers in each tier are more dramatic and defined. Although I missed Alan’s test-driven-development (TDD) session, I got the feeling that OGLE is also quite friendly for TDD as well. Whether using FoxUnit (Alan loves this thing) or if you’re just writing stubs to test apps, the architecture makes it simple.

I’ll be sure to recap the entire event after my wife and I get out of the Tennessee mountains on Tuesday. I’ll also be at AFUG Tuesday night.

More on FoxForward over at Kevin’s blog: http://cully.biz/. Alan said he might post too, so check out http://netcave.org/.

Tags: , ,

No Comments

Live from FoxForward: Day 2 (Maps, Services, and Tiers…oh my)

Day two was a great day. I find that the size of the conference is perfect for the technologies being discussed. A lot of attention is given to the decline of conference sizes over the past 5 or 6 years. This is true for VFP and other conferences as well. But clearly, the number of “heads” do not diminish the worth of the presentations or the work that the speakers have put into them. I like the intimate atmosphere and will be looking forward to attending more conferences like it.

Fox Trails

Brian’s Fox Trails presentation was great. I didn’t know what to expect (even though I had heard of Fox Trails, and knew what it was supposed to do). I’m not a Ruby guy, and I’ve honestly never evaluated the technology. But his Ruby-borrowed techniques for accessing data and functions in FoxPro was eyeopening and insightful.

One of Ruby’s tenets is: “Don’t repeat yourself”. Brian was quickly to repeat himself… and he almost did. A hearty laughter ensued… Another Ruby tenet is “Convention over Configuration”, making applications more “self aware”. Using directory naming conventions, for example, allows you to write code that can assume certain things about its environment. I’ve always been a big advocate of “Reconfigure over Recode”. I should change mine to “Convention over Reconfigure over Recode”!

He introduced us to “MVC Architecture”, which stands for Model (data and access), View (presentation layer), Controller (business logic). This architecture parallels 3-Tier architecture which many VFP developers are used to. Those of you who have evaluated or are using Ruby will get Fox Trails right away. Those of you who do not, should take a moment to have a look.

Some additional information here and here. Check it out!

VFP Service Architecture

I’m really bummed I didn’t think of this before. I’m really bummed that I didn’t hear Stewart’s session 10 years ago. Come to think of it, ‘bummed’ is not really the word.

Stewart showed us how we can use service architecture, stored on the server as a process, to pass various tasks to the server for processing. As he mentioned, there are literally hundreds of services that you can create on the server. He demonstrated the Mailslot Messaging and PDF report generation. This means that you don’t have to rely on user’s workstation settings to send mail. It also means that they don’t need a PDF writer installed to print to PDF! You configure the service on the server, hit the service from VFP, and send mail; or print a PDF using GhostScript; or zip a file; or run some encryption; or send data via FTP; you get the idea. This architecture can dramatically reduce the amount of workstation configuration needed.

Later in the day, Stewart and I sat through Stephen Bodnar’s MapPoint presentation. I think his bulb went off when mine did. We asked Stephen, “could MapPoint be used as a service”? Because of cost and installation issues, it seemed like a perfect fit for service architecture. We’ll need to read the EULA agreement though. Stephen was skeptical. (More on MapPoint in a few sections.)

I also saw some old Fox commands that I don’t think I’ve ever had an occasion to use: “Save To” and “Restore From”. “Save to” allows us to store current variables and arrays to a variable file or memo field and “Restore from” allows us to retrieve variables and variable arrays saved in a variable file or a memo field, placing them into memory (according to the VFP9 documentation). Come to think of it, I’ve probably used them before, but just can’t remember. They seem too useful!

Developing in n-tier fashion

Michael Babcock showed us how to write non-monolithic applications in multiple tiers. He went through the basics of tier development ,from 1-tier up to n-tier and talked about Logical (same process) verses physical n-tier design (when you can’t see through the tiers, like when using a com server or the Internet).

Mike used the phrase “pass the buck” often to remind us that each tier has a job, and that all tasks (business calls, UI, data access, etc) should be handled in the appropriate tier. In other words, object responsibility. This discipline is forward-thinking and allows you to scale and upgrade applications easily. If you have ever wondered what it would take to build a web UI using your business and data access in VFP, n-tier (and perhaps with some Fox Trails) is the way to go. The same holds true for .NET front ends, mobile applications, and the like.

His business object demonstrations were great, showing the group how to correctly use the business object tier. He also went through the proper methods for using the user interface and data tiers of the design. He walked through real-world scenarios of how you might use an Oracle back end verses a CSV file using the same UI and Business Object. Mike was engaging, well prepared, and his presentation was spot on.

Map Your Data

Using MapPoint, automating it, and utilizing it through ActiveX on a VFP form, Stephen Bodnar brought us through the basics of using the tool. MapPoint with VFP is very cool. He talked about his trip back from an Advisor conference in San Diego back to Detroit (they were grounded on 9/11); then showed us the map of their travels (we hear that Whil Hentzen is a speed demon, averaging something like 80mph on the trip back).

The idea with MapPoint is to use maps to show geographic information in a better context. Just like Google and Yahoo.

I’ve been waiting to see this presentation all day because I have about a million and one needs for a solution like this. Whether showing a map of property sales, or inspection routes, this tool can certainly be used in many different contexts. I’ve been preparing myself for diving into GIS applications (probably ESRI’s tool) for this very purpose. Now I can evaluate MapPoint as an alternative, feeling confident that it will work with VFP and that it will give me the routes and maps I need for my apps.

MapPoint has its problems, though. It is not updated frequently, and all address data needs to be exact for the tool to work correctly. You need to spend about $200 per license on every machine that uses MapPoint.

I also learned a new trick. In VFP (starting in VFP7) the Object Browser can be used to create a set of #DEFINE statements which lists all the constants in a type library by using drag and drop from editor window. The only problem with this approach is that VFP truncates decimals if contained in the constant. Rick Strahl’s tool, “Get Constants” circumnavigates this known VFP bug from the object browser. His tool is here.

On to day 3, the final day of FoxForward 2007!

Tags: ,

4 Comments

FoxForward Session Material Posted

I’ve posted my programs and presentation slides for my presentation: “Data Warehousing with VFP” in the Download Section. Please have a look, download the material and get back to me with your questions!

Update

I just fixed a broken link on the Download page and also uploaded three additional zip files:

  1. Logical Datamap (LDM) Database
  2. Staging Directory Structure
  3. Dimensional Model Database

Tags: , , , , , ,

2 Comments

Live from FoxForward: In Alpharetta with My Mustang

Well, not my Mustang, Hertz’… actually. When the clerk behind the counter asked, “Do you want the Nissan Sentra or the Ford Mus…”, I interrupted: “Give me the Ford! Yup. I want the Mustang”. Not that I have something against a Nissan, but come on… Ok, sorry for the digression.

So far I’ve had the pleasure of meeting Kevin Cully, Dave Bernard, Edward Leafe, Mike Babcock, Garrett Fitzgerald, Bo Durban, and others. Today, I attended track B, seeing two presentations after the meet-and-greet. I didn’t hang out too long after day 1 though, mainly because I needed to go home and write my presentation (just kidding).

Instrumenting VFP

In the first session, Dave Bernard talked about Instrumenting VFP. Like logging application performance, diagnostics, or errors, instrumentation gives you a look into your application. Dave called it “Application visibility”. With it, you can track behaviors, and do a lot of interesting things, like examining mouse clicks (the user swears they didn’t press ‘delete’, but our instrumentation says otherwise); performance bottlenecks (that SQL statement used to run good, what happened?); and even user actions to the point of fine tuning navigation (if users constantly want point D, but are forced through A, B, and C, there might be an opportunity for a shortcut).

Dave talked about how the Coverage Profiler, Error Messages, and Asserts are reactive and not proactive. Instrumentation is proactive. Instrumentation allows you to call your user as soon as they get an error. It allows you to measure function performance over time. Sounds a lot like 80/20 analysis! This technique allows you to refactor code as often as needed throughout the life cycle of a product, without involving the customer.

In my session, I talk about some similar techniques for logging ETL performance in VFP. I didn’t call it instrumentation, in fact, I just called it ‘logging’ for a lack of a better term. Now, I have something to call it! Thanks Dave!

Web Connections 5.x

Stein went though some of the new features that can be seen in Web Connections 5.x. Rick, as expected, has given us some great improvements and new features that will prove to be quite useful for those using WebConnect. I’m not currently a WebConnect user, but wanted to see what all the fuss was about. Bottom line? Rick is a brilliant developer, and his application gets an A+ (in my book).

Stein had a good presentation and was able to get the finer points across to a variety of users (some people in the room were not doing any web development, while others were experienced Web Connect users). Stein showed us some of the WYSIWYG features built into the Visual Studio editor that Rick implemented. We also got to peek at some of the new AJAX functionality. Nice job, Stein, and great framework Rick!

Day one went by pretty quick.

On to day 2! (And back into the Mustang!)

Tags: , ,

4 Comments

FoxShow 41 FoxForward (and beyond)!

I wanted to take a moment to draw your attention to an interview on Andrew MacNeill’s FoxShow regarding FoxForward 2007. It’s a few months old, but will certainly give you an idea on what to expect if you head out.

Here is the link to the audio (mp3).

If you want to know more about the conference, or would like to hear Andrew or Kevin’s voice, check it out!

Tags: , , ,

1 Comment

FoxForward is Only a Few Weeks Away

As most of you know, FoxForward begins September 7th, 2007 in Alpharetta GA. The speakers list has long been set and the schedule of talks is now online. This is looking like it is going to be a great event! There are sessions on FoxUnit (see Alan Stevens blog), Cusror Adapters (see David Stevenson’s blog), Web Connection (presented by Stein Goering), n-tier development (Michael Babcock), and custom report controls with Sedna (Bo Durban). I will be speaking on Data Warehousing — giving you an overview of what it takes to build a data warehouse (using VFP). For those of you looking to use VFP with MySQL or MapPoint, then there are sessions for you. I am particularly interested in John Koziol’s talk on Visual Analysis. Also, Brian Marquis‘ presentation is geared for Foxpro developers looking to add Web 2.0 technologies into their applications (”Fox Trails” not “VFP on Rails”!). And there’s much, much more.

FoxForward 2007 - Alpharetta, GA USA - September 7th-9th

If you can get to the Atlanta area, please make it out! It’s right here.

For more updates, check out Kevin’s blog or visit the FoxForward official website!

Tags: , ,

No Comments