VFF logo

Virtual Fox Fest 2025 (October)

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

October 29 and 30, 2025

Geek Gatherings Logo

Sessions

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

"J, J, J... SON, SON, SON..." - Using SQL Server's Killer Built-in JSON Functionality

Presenter: Kevin Ragsdale
Level: All levels

SQL Server 2016 introduced native JSON support, and it's been silently stalking inefficient workflows ever since. In this fast-paced and code-filled session, we'll unmask the power of SQL Server's JSON capabilities. No hockey mask required! Learn how to store, query, and manipulate JSON data directly in T-SQL. We'll cover FOR JSON, OPENJSON, JSON_VALUE, and JSON_QUERY, and show how to integrate SQL Server with modern REST APIs without the need for external parsers or middleware to serialize and deserialize.

Whether you're returning clean JSON to your frontend or slicing and dicing incoming payloads with precision, this session will give you the tools to slash development time and streamline your data pipeline. You'll leave with practical patterns, performance tips, and maybe even a few chills. If you've haven't used SQL Server JSON functionality, you'll never look at SQL Server the same way again.

You will learn:

  • How to store and retrieve JSON in SQL Server using FOR JSON and OPENJSON to seamlessly integrate with modern APIs
  • How to extract and manipulate JSON fragments using JSON_VALUE, JSON_QUERY, and ISJSON without writing custom parsers
  • Benefits of enhancing and extending your tables without adding new columns
  • Real-world patterns for building efficient, maintainable, and scalable database-driven APIs with SQL Server as the backend engine

Prerequisites: None

Document and Email Management in VFP Applications

Presenter: Doug Hennig
Level: All levels

Many applications generate or reference documents: purchase orders, invoices, lab results, and so on. Storing a small number of documents on a local file system is fine but when there are thousands of documents consuming many GB of space, tasks like backup and restore become time-consuming.

Often associated with that is the need to automate emailing: sending purchase orders to suppliers, order confirmations to customers, and so on. While Microsoft Outlook provides a message store that can be searched by VFP applications, performance and flexibility are issues.

This session looks at both of these topics: using Amazon S3 to store documents in the cloud and managing emails from VFP applications.

You will learn:

  • How to set up an Amazon S3 account
  • How to store documents to and retrieve documents from S3 in VFP
  • How to use the VFPX Document project to manage documents
  • How to manage emails sent from Microsoft Outlook
  • How to use email templates to automate email messaging

Prerequisites: General knowledge of VFP

Git Advanced Techniques

Presenter: Christof Wollenhaupt
Level: Intermediate

Randall Munroe, the creator of the popular xkcd webcomic, said about Git: “If you get errors, save your work elsewhere, delete the project and download a fresh copy”. This captures the feeling of many developers around the world once they run into a problem with Git. Obviously, he made it part of a comic that is many times funnier than my partial quote.

With the help of many sessions at SWFox and VFF and tools on VFPX you are happily using Git… most of the time. Sometimes things stop working and won't tell you why. Sometimes you wonder if stashing, rebasing and cherry picking is something you need to know or can safely ignore. How to deal with a detached head and what's that anyway? What happens if you delete a branch or a tag?

This session talks about how history works in Git, why and how to rewrite it, how to deal with complex branching scenarios, solve conflicts and avoid them in the first place. We look into the engine room to understand the structure of a Git repository and the secret commands you only discover when you are already in trouble. We also look into typical problems with syncing your repository to one or multiple remote. (As a bonus, we will discuss why a Git repository isn't a backup.)

You will learn:

  • How to fix problems when Git isn't behaving
  • What is safe to do and what isn't (aka how not to eradicate your company's source code)
  • Using Git the way you want, not the way that CoPilot and ChatGPT tell you

Prerequisites: How to use Git and VFP together for basic tasks

Introducing SideKick

Presenter: Tore Bleken
Level: Beginner, Intermediate

This session introduces Sidekick, which adds a lot of new features to Thor. All these features are available by defining one common hot key in Thor.

In a way, Sidekick can be described as a command line utility where you use a dedicated hot key instead of Enter, in addition to being an advanced project and subproject organizer.

Its most important functions allow you to:

  • Execute code in any of VFP's editors, in the Command Window, or in the clipboard by pressing the dedicated hot key
  • List all and optionally select your VFP files from a common form, with a lot of detailed information
  • Zip and unzip your files from a file picker
  • Tidy your working environment by moving seemingly unused and unnecessary files into zip libraries
  • Use a long series of utility commands, with one common interface
  • Access built-in Help which can be used as a reminder if you forget a "command"
  • Organize groups of files you need for a project, or parts of a project, and open them all in one operation

The session will also describe in detail Sidekick's organizer, and how to take advantage of all its features.

You will learn:

  • How to be much more productive by using Sidekick's commands and advanced organizer
  • How to take advantage of Sidekick's many features and "commands"

Prerequisites: Some knowledge of using Thor will be a benefit, since Sidekick requires that Thor is installed.

It's Time to RESTful With XSharp

Presenter: Fabrice Foray
Level: All levels

REST is one of the underlying architectural ways to exchange data on the web. On the web, clients and servers can interact in complex ways without the client knowing anything about the server and the resources it hosts.

Nowadays, it is common to exchange data and the great thing is REST makes use of the standard HTTP methods to expose your DataModel, so it is available everywhere.

First, we will explain some basics of RESTful APIs, and what we have to provide in order to create our own server. Then, we will use XSharp to create that server and use some test-tools like Postman or those available in MS Visual Studio.

As XSharp has access to DBF data, let's create a model based on the record structure and make it available through REST. Now that our legacy data are open to the web, let's access it with new technologies!

You will learn:

  • What RESTful means
  • How to organize your server
  • How to write a server with XSharp
  • How to use your data, even DBFs

Prerequisites: Some knowledge in MS Visual Studio and XSharp, or any xBase languages, will ease understanding but are not mandatory.

Lessons in Buffering and Transactions

Presenter: Tamar E Granor
Level: Intermediate

FoxPro has offered buffering since Visual FoxPro 3 was introduced in1995. Transactions were added in VFP 5. I'm still learning more about using these tools effectively, even after all these years. In this session, we'll cover the basics, and then look at some things I've learned along the way. Some of these discoveries have been real surprises, while others made sense once I stepped back and thought about them. At least one feels like a bug in Visual FoxPro.

You will learn:

  • What VFP's buffering and transactions are
  • How they interact with locking
  • What tables should be excluded from transactions
  • Why you shouldn't lock new buffered records

Prerequisites: None

SQL Server Mash-Up

Presenter: Jody L. Meyer
Level: All levels

Let's talk SQL Server. Working with SQL Server is fun and challenging. Working with co-workers is even more fun because we can share what we are learning along the way. This session is a mash-up of time spent in SQL Server: things I have learned about the SSMS user interface, investigating the meta-data, cool SQL Server functions, as well as functions I have developed to help do a developer's job better.

Do you have anything that you would like to be discussed? Contact Jody and perhaps we can cover that too.

You will learn:

  • SSMS tips and tricks
  • How to investigate the metadata for content for stored procedures and/or functions
  • How to investigate the metadata for table structures, indexes, and constraints
  • SQL Server functions such as STRING_SPLIT, STRING_AGG(), ISNULL, COALESCE(), etc.

Prerequisites: SQL Server experience

The VFP Developer's Guide to Git and Sourcetree

Presenter: Rick Borup
Level: All levels

Git is the de facto standard for distributed version control in modern software development. It's powerful but also complex, and even after you've used it for a while there is always something new to learn. In this session we'll review the basic workflow using branches with a local and a remote repository, explore some of Git's lesser-known features and functions, and dig into some of the situations you can get encounter that leave you scratching your head and wondering what do to next. Throughout the session we'll touch on a couple of helpful tools including the VFPX Project Explorer and a close look at Sourcetree, a free and easy-to-use Git GUI that makes working with Git less stressful and more intuitive. If you've ever wondered "how to I do that in Git?", this is the session for you.

You will learn:

  • About a basic workflow using a local and a remote repository
  • About working with short-lived branches for development
  • About some of Git's lesser-known features and functions
  • About how to use Sourcetree
  • About ways to get in trouble and ways to get out of it
  • About how the VFPX Project Explorer beats the native Project Manager

Prerequisites: A working knowledge of Git basics. Some experience using Git with VFP would be helpful but is not required.

Using Google Calendar in VFP

Presenter: Tuvia Vinitsky
Level: All levels

Wouldn't it be great to be able to show the user their Google calendar and allow them to manage it from within a VFP application? Google has scared off application integrators with more and more complex logins and access requirements.

We will see what options are available to VFP developers, from simply displaying a live calendar in VFP to actually manipulating calendar data.

You will learn:

  • What a Google calendar is
  • How to log in to Google with the latest auth requirements and get a token
  • How to select a calendar
  • How to add, delete, and view entries
  • How to create a VFP form with a calendar showing the Google data

Prerequisites: VFP development knowledge

VFP C++ Compiler: Options and Settings for Modern, Secure Applications

Presenter: John Ryan
Level: All levels

This is a session about VFP C++ Compiler (VFPC), a VFP add-on that assists VFP developers to deliver thoroughly modern, secure applications.

Using VFPC, applications are obfuscated, then split into an EXE and companion DLL that can be compressed, encrypted, and compiled using recent versions of Microsoft Visual C++, without the VFP developer needing to write a single line of C++ code.

This session uses live and prepared VFP project compilation to demonstrate how VFPC works. 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/C++ source can be baked into the app's DLL.

In addition to common settings in VFPC's GUI, some of the newest and most powerful features are only accessible by editing the VFPC config file. These new settings are covered, including remarkable optimization features that can significantly improve performance.

This is intended to be an interactive session with opportunities for questions while compilation is underway and attendees able to identify their own topics of interest.

You will learn:

  • How to avoid common installation glitches by selecting the most useful/easily installed VC++ versions
  • What various settings do, including some of the more opaque options
  • How to deliver encrypted compressed EXE/DLL apps that no longer need a VFP runtime
  • About the newest exciting optimization settings that significantly improve performance

Prerequisites: Familiarity with VFP. Attendees should have no difficulty following proceedings and appreciating how things work.

Platinum Sponsors
Diamond Sponsors
Gold Sponsors