Virtual Fox Fest 2021

An online conference presenting the latest in Microsoft Visual FoxPro development techniques

October 14, 20, and 26, 2021


"Level" shows the expected level for attendees for a session. Click a speaker's name to see their bio.

A Decade of Thor Extending Visual FoxPro

Presenter: Rick Schummer
Level: All levels

Note: if you cannot access YouTube, you can watch the video here

It has been a very long time since Microsoft made any improvements to the Visual FoxPro Interactive Development Environment (IDE). Even with the ongoing changes to Visual FoxPro Advanced, the IDE is not seeing any radical improvements. The release of Visual FoxPro 9 included some critical extensibility with the addition of Property Editors and MenuHits. Additionally, we have the ability to create and use Builders and extend IntelliSense to meet our needs. Over the past ten years I have been optimizing my IDE experience to save time via updates and upgrades to IntelliSense, but the most bang for my buck in this regard has been the innovations provided by Thor, which is available from VFPX.

This session shows some of the things Thor provides to extend and improve the Visual FoxPro IDE. Not only will you see some of the great things the Fox Community has contributed to the Thor Repository (a treasure trove of cool functionality and features), but through this process, I'll expose you to some of the plumbing, explain how these tools work, and show you how to create your own tools with the hope of inspiring you to write some of your own extensions via Thor, and (I hope) share them with the Fox Community.

You will learn:

  • About some Thor tools I find indispensable
  • How Thor's tools are assembled
  • What it takes to create a Thor tool
  • How to leverage and create Thor Templates

Prerequisites: Ability to install Thor on your computer, or have it installed already

Building and Consuming REST API Services with FoxPro

Presenter: Rick Strahl
Level: All levels

Note: if you cannot access YouTube, you can watch the video here

REST APIs or Services that use plain HTTP requests and JSON have become the de facto replacement for the more complex SOAP Based architectures of the past. Most modern APIs available on the Web—from Credit Card Processors, to E-Commerce backends, to Mail services and Social Media data access—use REST services or variants thereof like GraphQL to make their remote data available for interaction.

REST based services tend to be much simpler to build and consume than SOAP services because they don't require any custom tooling like SOAP/WSDL services did and are using JSON which is inherently a much easier format to create and parse into usable object structures. All you need is an HTTP Client and a JSON parser and good API documentation.

In this session I'll demonstrate how to build a server-side REST API using both .NET Core and FoxPro (using West Wind Web Connection) and then demonstrate how to consume those APIs from a FoxPro client application using various JSON and Service client tools. I'll also discuss some common strategies for writing client side API code that helps with error handling and consistent access to API calls via wrappers that abstract API calls into easy to use application level classes that behave more like traditional business objects.

You will learn:

  • What a REST API is
  • How and why JSON is different than XML
  • How to call a REST API with raw HTTP calls
  • How to parse and send JSON between FoxPro and APIs
  • How to call a REST API with high level service APIs
  • How to organize API client code for resiliency and ease of integration

Prerequisites: Some familiarity with Web Technologies. I'll be using some West Wind tools (provided with samples) to demonstrate the FoxPro features but concepts can be easily applied to other tools and even other platform.

Can Your Legacy VFP Program be DPI Aware?

Presenter: Tracy Pearson
Level: Intermediate

Note: if you cannot access YouTube, you can watch the video here

In this session we will review how Microsoft Windows handles the monitors' Dots Per Inch (DPI) in a legacy VFP application. We will review the history of what Microsoft has done with DPI changes over the recent versions of Windows. We will work with some code to make a legacy application properly DPI Aware. We will discuss the pros and cons of the different options available.

You will learn:

  • The reason customers ask "Why is the app blurry?"
  • Options to address that question
  • The pros and cons to each of the options

Prerequisites: None

DotNet2Fox: Simplified Interop

Presenter: Joel Leach
Level: Intermediate, Advanced

Note: if you cannot access YouTube, you can watch the video here

DotNet2Fox is an open-source library that simplifies calling Visual FoxPro code from .NET desktop and web applications. Have you tried your hand at COM interop only to be met with limitation after limitation? Did you find that exposing your existing FoxPro code over COM would require a major refactoring effort? DotNet2Fox provides a simplified interface for calling into existing real-world FoxPro code, and without all those limitations. This session explores the features of DotNet2Fox and how to use it for successful interop between the two platforms.

You will learn:

  • What DotNet2Fox is and how it compares to classic COM interop
  • When (and when not) to use DotNet2Fox in your applications
  • How to use DotNet2Fox in multiple scenarios for both desktop and web applications
  • Tip, tricks, and workarounds

Prerequisites: Familiarity with VFP and .NET

Easy Multi-Threading with Visual FoxPro

Presenter: Kevin Ragsdale
Level: Intermediate, Advanced

Note: if you cannot access YouTube, you can watch the video here

For years, FoxPro developers have longed for multi-threading capabilities. Thankfully, several developers have found ways to provide multi-threaded capability in Visual FoxPro applications. I've used (and tried to use) every published method I know of to create multi-threaded applications, but the easiest method I've found (by far) is by using Christof Wollenhaupt's DMULT.DLL.

In this session, we'll look at multi-threading and use DMULT.DLL to easily add multi-threaded capability to a Visual FoxPro application. We'll create event handlers to act as callback objects for our multi-threaded DLL's and create a Thread Manager to keep track of our open threads. We'll also look at some disadvantages of multi-threading.

You will learn:

  • What multi-threading is
  • The advantages (and disadvantages) of multi-threading
  • About DMULT.DLL
  • How to create event handlers for multi-threaded DLL's
  • How to create a thread manager to keep track of open threads
  • About real-world examples of how DMULT.DLL has improved my apps

Prerequisites: Knowledge of building DLLs in Visual FoxPro is helpful, but not required

Everything You Wanted to Know About ODBC

Presenter: Doug Hennig
Level: All levels

Note: if you cannot access YouTube, you can watch the video here

ODBC (Open DataBase Connectivity) has been around since the early 1990s, but there's more to it than just connecting to and querying a database. This session looks at all things ODBC, such as whether to use a DSN or a connection string, how differences between drivers affect your code, how different settings in VFP can impact a query, and many more topics.

You will learn:

  • The basics of ODBC
  • Which functions in VFP are related to ODBC
  • The pros and cons of using DSNs vs. connection strings
  • Which ODBC drivers to use under different conditions
  • About 32-bit vs. 64-bit issues

Prerequisites: None

Integration of Modern Development Stacks Within an AWS Hosted FoxPro Ecosystem

Presenter: Chris McGuinness
Level: All levels

Note: if you cannot access YouTube, you can watch the video here

This session will cover the integration of Servoy and Jaspersoft based solutions within a larger FoxPro based product suite in a hosted AWS environment. The techniques shown should apply to a wide variety of external technology integration scenarios.

It will look at our experience and lessons learned over several years of hosting FoxPro applications in AWS.

The session will cover direct data access and API interfaces into FoxPro based applications for purposes of integrating external development stacks and reporting tools including the pros and cons of JDBC access to native FoxPro tables vs. several API implementation choices.

You will learn:

  • About our AWS ecosystem and how we use it to deliver our products to our customers
  • How we have integrated Servoy and Jaspersoft based solutions within a larger FoxPro based product suite, all hosted within an AWS environment
  • The lessons we've learned over several years of hosting FoxPro applications in AWS
  • How to use direct data access and API interfaces in FoxPro based applications to integrate external development stacks and reporting tools (including the pros and cons of JDBC access to native FoxPro tables vs. several API implementation choices)

Prerequisites: None

SQL Server Reporting Services – New Beginnings for the VFP Developer

Presenter: Jody L. Meyer
Level: Beginner

Note: if you cannot access YouTube, you can watch the video here

This year I had the privilege of learning SSRS or SQL Server Reporting Services. I have found that my VFP Report Writer skills have come in very handy. So, together let us do a few reports to see just how easy it is to create basic, matrix, and drill through reports. While we are constructing these reports, we will get familiar with the interface, learn how to create expressions, and explore adding parameters and how to create conditional actions for the drill through reports.

You will learn:

  • How to navigate the SSRS Interface
  • How to create a simple report and define the data source
  • How to create a matrix report and define the data source
  • How to create a drill-through report

Prerequisites: SQL Server Reporting Services - Already installed. It is helpful for the developer to be able to write well-formed SQL Server query statements.

The How and Why of Recursion

Presenter: Tamar E Granor
Level: Beginner, Intermediate

Note: if you cannot access YouTube, you can watch the video here

Recursion is a programming technique in which code calls itself either directly or indirectly. In some cases, using recursion can make code much simpler and more readable. In others, it adds only complexity.

In this session, we'll look at the basics of recursion and how to implement it in Visual FoxPro. (It's easy.) Then, we'll look at VFP problems where recursion is the best choice and some where it's not.

You will learn:

  • What recursion is
  • How to make recursion work
  • How to use recursion for traversing object hierarchies in VFP
  • When not to use recursion

Prerequisites: VFP basics

Using Good Tech to Protect from Evil Tech

Presenter: Bo Durban
Level: All levels

Note: if you cannot access YouTube, you can watch the video here

Ransomware uses the latest and greatest exploits to extort money from you. And they are really good at it. Most ransomware victims believed they were protected using the most common ransomware prevention tools and techniques available. But that is part of the problem, isn't it? The hackers have all the playbooks of their victims.

Learn how to protect yourself from over 98% of ransomware attacks using a few, simple, proactive steps, including Patch Management, End Point Detection, End Response, Employee Education, Security Hygiene, Backup Strategies and more. Also, learn how to leverage a Managed Security Services Provider to get high end protection at a lower cost.

You will learn:

  • Some Ransomware stories to scare you just in time for Halloween
  • The types of ransomware
  • Attack points and how to secure them
  • About managing backups
  • Whether you need a security expert
  • About intelligent hardware upgrades

Prerequisites: None

VFP C++ Compiler: Towards Another Decade of Secure, Extensible, Portable VFP Apps

Presenter: John Ryan
Level: Intermediate, Advanced

Note: if you cannot access YouTube, you can watch the video here

VFP's longevity may be legendary, but customers and developers sometimes wonder about compatibility going forward, as well as the importance of 64-bit and other advancements that can be difficult to access from 32-bit products. It's worth remembering that VFP is written in Visual C++7 that was released in 2003, 18 years ago, while Visual C++ is now up to Visual C++14 in 2021.

VFP C++ Compiler (VFPC) is a clever VFP add-on that helps to address these concerns by translating VFP projects into the latest 32-bit or 64-bit VC++, allowing VFP developers to offer thoroughly modern options that are portable and easily extensible, and also extremely secure. This combination of benefits is easily accessible using VFPC's various options and your chosen VC++ version to move important VFP source code into a C++ DLL.

This session uses live and prepared VFP project compilation to demonstrate how VFPC works and what it can deliver without the VFP developer needing to write a single line of C++ code. Common compilation options are covered as well as tips learned over the years to increase control over the process. Antihacker options are briefly covered as well as encryption and compression samples that no longer need companion flls, since the C++ source can be baked into the app's DLL.

Presented by VFPC's first commercial user who has used the product since 2010, this session should be useful whether you are a VFP C++ Compiler newcomer or a more seasoned expert.

You will learn:

  • How to install VFP C++ Compiler efficiently, including selection of VC++ version/s
  • An overview of VFP Project structure and how it's usually compiled
  • The effect of commonly used VFP C++ Compiler options and comparison to classical compilation
  • The effect of programming style and/or how you can direct the VC++ compiler
  • About inlining/including AES assembly or VC++ in your VFP application for portability and extensibility
  • Security benefits by default or easily augmented to ace security audit

Prerequisites: Familiarity with the VFP project and standard contents like classes, programs and forms. Experience compiling projects into standard VFP EXEs. Understanding of standard VFP extensibility via FLL. Familiarity with VC++ is not necessary, but can be helpful when reviewing inlining of C++ code.

VFP Migration Real-World Project Stories - Interactive Panel Pitfalls, Obstacles and Best Practices

Presenter: John Kullmann
Level: All levels

Note: if you cannot access YouTube, you can watch the video here

Technology leaders from three different companies will share their VFP journey. Each has a good story to tell and is prepared to answer tough questions. This fun and engaging panel will cover topics listed below while emphases will be put on questions from the audience.

  • What were your driving factors necessitating a migration?
  • How did your company prepare both operationally and technically?
  • How did you continue operations during the migration?
  • What obstacles did you face?
  • What do you wish you had done differently?

The panelists are:

The session will start with each of the three panelists delivering a five-minute overview of their company, application functionality and development history. A meeting administrator will be responsible for collecting questions from chat and enabling microphones allowing attendees to voice questions.

You will learn:

  • To forget theory – this is real life
  • What the drivers of modernization are
  • What the expected effort is
  • What the pitfalls of a migration are
  • Best practices to follow
  • Obstacles to avoid

Prerequisites: An open mind to consider and discuss alternatives

WPF: Modern UIs in VFP Applications

Presenter: Christof Wollenhaupt
Level: All levels

Note: if you cannot access YouTube, you can watch the video here

The definition of a good user interface has significantly changed since Microsoft stopped the development of Visual FoxPro. While WPF (Windows Presentation Foundation) itself is not the latest UI technology either, it is a much better fit to modern UI requirements: scrollable forms, responsive design, rich media support, unicode and emojis, background operations, and customizable designs. We look at a case study where WPF was a superior solution to native VFP. From there we explore the finer details of WPF and how it might help you with your VFP applications.

You will learn:

  • How to integrate a WPF UI into an existing VFP application
  • How to access FoxPro data and call existing VFP code from WPF
  • How to debug an application that uses VFP and C# code
  • What WPF and XAML are
  • A few fundamentals concepts of WPF
  • Where to find WPF controls, UI inspiration and further help

Prerequisites: Basic knowledge of C# is useful

What's Up Doc

Presenter: Tuvia Vinitsky
Level: All levels

Note: if you cannot access YouTube, you can watch the video here

Document management used to be a distinct specialty in software applications. But nowadays users expect and need even basic applications to scan and/or store all types of documents and related materials.

SQL Server databases can store enormous amounts of data. But when you start storing documents and images, all of a sudden the database gets a lot more complex. How do you best manage storing large volumes of electronic materials in SQL Server? Long delays in data access, storage problems, VFP view problems... it seems problems abound with using a SQL Server database designed to hold data as a repository for documents.

In this session, Tuvia Vinitsky takes you through the ins and outs of designing and implementing a SQL Server database and a VFP front end to manage millions of documents at a time.

You will learn:

  • Different options for column types in SQL Server and how they affect document storage
  • How to use the FileStream feature added in SQL Server 2012 for storing files
  • Pros and cons of indirect links to documents vs storing the actual documents in the database
  • How fields with documents affect SQL passthru and VFP remote views
  • How to display documents
  • How to ensure adequate speed and performance in a database with a large number of documents

Prerequisites: VFP and SQL Server development experience

Platinum Sponsors
Diamond Sponsors
Gold Sponsors