Virtual Fox Fest 2022 (October)

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

October 13, 19, and 25, 2022

Sessions

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

DevOps with Visual FoxPro

Presenter: Joel Leach
Level: All levels

For years, Microsoft has been telling developers to “rub some DevOps on it” to improve our processes and code quality ... but what exactly is DevOps? Is it something we can use with Visual FoxPro? In this session, we will explore the DevOps methodology and implement some of these ideas in VFP using the Azure DevOps service.

You will learn:

  • What DevOps is and how to apply it to Visual FoxPro
  • How to build CI/CD pipelines using Azure DevOps
  • About microservices and containers, and whether they can be used with VFP

Prerequisites: Familiarity with VFP

FoxPro Interop: Revisiting Modern .NET for the FoxPro Interop Developer

Presenter: Rick Strahl
Level: All levels

If you're building modern applications that need to interface with various system or operating system features, you'll likely need external functionality that isn't available natively in FoxPro. Whatever your needs are, you can probably find this functionality in .NET either via built-in features, or by way of open source or third party libraries. With the wwDotnetBridge Interop library you can access most features directly, or you can build small .NET components that often make those interfaces easier to use.

While wwDotnetBridge can directly call .NET code, if your code requires a number of calls or accesses complex types it's often much easier to create a small wrapper library in .NET and call that from your FoxPro code.

In this session you'll learn how you can easily create small .NET components and use them from your FoxPro code, using both new lightweight tools like Visual Studio Code to create, build and run your code from the command line, as well as using full development IDEs like Visual Studio or Rider to build, debug and test .NET code and then call it from your FoxPro application. You'll find out about useful tools like LINQPad to quickly experiment with .NET code, and decompilers like Reflector, ILSpy, DotPeek and JustDecompile to examine API signatures so you know what's available to call for your FoxPro code.

You will learn:

  • How to create a .NET project
  • How to use NuGet to work with third party components
  • How to figure out what dependencies are required
  • How to build and compile .NET code into an assembly
  • How to test code interactively with LINQPad
  • How to use decompilers like Reflector, DotPeek, JustDecompile to figure out API signatures
  • How to call your assemblies using the open source version of wwDotNetBridge

Prerequisites: Some familiarity with .NET is helpful but not required

GoFish: Searching in VFP Projects and Folders

Presenter: Tamar E Granor
Level: All levels

GoFish is a community-grown search tool for VFP. It's faster and better than the Code References tool that comes with VFP. In this session, we'll look at how to use GoFish to find and replace in your VFP projects and folders.

You will learn:

  • Why GoFish is better than Code References
  • How to get and install GoFish
  • How to search VFP projects and folder
  • How to replace in VFP projects and folders, including writing code for custom replacements

Prerequisites: None

Meet WinRT, the Windows Runtime API

Presenter: Christof Wollenhaupt
Level: All levels

I'm sure I'm not the only one who is confused by the pile of technology that Microsoft is throwing at us in quick succession. Before I get a chance to take a deeper look at some of these offerings, they are already outdated, replaced, or maybe only renamed.

In this session, we take a closer look at the Windows Runtime API. It's best known as the technological foundation of the Universal Windows Platform aka the apps you download from the Microsoft Store. WinRT isn't limited to new apps which are out of reach for Visual FoxPro. With a little effort and some glue code in C#, it's even open to traditional Visual FoxPro applications.

WinRT was meant to be the successor of Win32API. As such, its feature set matches much more modern computing capabilities and requirements. For instance, there's an OCR engine built right into the runtime. Unlike many other offerings these days, all of it runs locally on the device. There's no subscription you need, nor do sensitive files need to be shared with cloud services. We look at how OCR works from VFP and how you can combine this with PDF generation and scanning documents.

There are so many more features in WinRT. We will look at various APIs to access sensors, use machine learning, cryptography, and speech recognition. Some features in the WinRT API require package identity, which provides us with the opportunity to look into the package concept and briefly cover MSIX deployment.

This session is not about creating your own Universal Windows Platform application or the Microsoft app store. We also won't look into any modern UI, because the UI part of WinRT isn't supported in classic desktop applications like Visual FoxPro.

You will learn:

  • What the Windows Runtime API is
  • How to use features like OCR, sensors, machine learning
  • How to work around certain restrictions imposed by WinRT from a VFP developer's view
  • What limitations we can't work around

Prerequisites: This session includes VFP and C# code. Some features require writing .NET code.

Migrating your FoxPro code to .Net

Presenter: Robert van der Hulst
Level: Beginner

This session will show you how you can use existing Visual FoxPro code in .NET using the X# compiler with very few changes. After the migration, you can call that code from any .NET application, such as Desktop applications with Windows Forms and WPF, Web applications, and Mobile applications. The migrated code will be edited, compiled, and debugged in Microsoft Visual Studio.

We will also look at how the compiled functions and procedures are converted to .NET assemblies and how you can call them from other .NET languages, such as C# and VB, and from Win32 applications such as Visual FoxPro.

Finally we will show how you can create new components in X# and use them in your Visual FoxPro applications.

You will learn:

  • How to convert an application to .NET
  • How to use a .NET component in a FoxPro application

Prerequisites: None

Securing VFP Applications Against a World of Hackers

Presenter: John Ryan
Level: All levels

The technology landscape has changed significantly since Fox apps were first distributed in the late 1980s. In those pre-Internet days, data often resided unencrypted on a single machine and a simple "encrypt" compilation option was enough to satisfy developers that their apps had protection. This protection remained largely unchanged as development moved from DOS to Windows where multi-user applications became the norm. Lack of DBF security pushed many towards client-server databases with their own security challenges, and applications were increasingly exposed to the Internet. In recent years, hacking has become a serious business threat with regular stories of leaked customer data or damaged databases.

The old Fox "encrypt" option no longer serves a useful purpose and while many VFP developers consider that their work doesn't warrant special protection, customers increasingly expect that steps are taken to protect their businesses and data. Consultants are doing the rounds at large and small customers, offering alarming security audits to sell more of their services and possibly replace applications they declare to be insecure.

While VFP does have some distinct vulnerabilities, development habits and add-ons make it possible for VFP developers to seriously harden their offerings with minimal extra effort.

This presentation covers vulnerabilities of native VFP apps with or without additional protection, as well as Windows vulnerabilities and ways to mitigate them. Common protection mechanisms are reviewed along with ways those can be breached. Tools like Refox and VFP C++ Compiler are covered, showing how they can make hacking of a VFP app exceedingly difficult at minimal cost or inconvenience to developer or customer. The presentation ends with techniques that move hacking into the "too hard" basket, forcing a detailed C++ decompilation that would be beyond the capabilities or motivation of all but the most determined hacker.

You will learn:

  • About VFP vulnerabilities and coding practices to mitigate them
  • How to use external tools to move hacking to the "too hard" basket
  • Ways to secure VFP applications and pass security audits with minimal extra effort

Prerequisites: While any VFP developer can follow the practice habits and protection techniques, this is most useful for seasoned VFP developers who are aware of VFP protection techniques and often will already use one or more routinely

Switching to SQL Server

Presenter: Rick Borup
Level: All levels

Want to learn how to switch your VFP apps from DBFs to SQL Server? Then this session is for you. Drawing on lessons learned from real-life experiences, this session shows you how to use the VFPX Upsizing Wizard to create the SQL Server database and how to modify your VFP code to work with it. Along the way, you'll learn many tips and tricks to help things go more smoothly and avoid some common pitfalls. There's a lot to know, but it's easier than you think!

You will learn:

  • How to prepare a VFP database for conversion to SQL Server
  • How to use the SQL Server upsizing wizard from VFPX
  • About SQL Server data types and how they map to VFP
  • How to transform VFP SQL code into T-SQL for SQL Server
  • How to trap errors and debug T-SQL in VFP code
  • About what can go wrong and what you can do to avoid it
  • About a brand new tool to document SQL Server database table structures

Prerequisites: A working knowledge of Visual FoxPro and familiarity with the SQL language

The Anatomy of the VFP Runtime Command Window

Presenter: Rick Schummer
Level: All levels

If you release customer applications to customers who do not have a Visual FoxPro license, it is fairly likely that you eventually will run into a support situation where you need a tool to repair or clean up data, produce custom queries and reports, or even work with source code. This is where having a runtime command window comes in handy.

I've talked with many developers over the years and it seems like everyone has either their own home-grown tool or have adopted one of the community contributed tools. I've seen some very basic ones that just get the job done, and I have seen some very sophisticated ones that work easily with local Visual FoxPro data and more complex remote SQL Server data.

In this session, I will introduce you to various community contributions, discuss some of the requirements I have had over the years of supporting thousands of customers, and then walk through FoxCommand, the tool created by the White Light Computing developers to help support our customers.

You will learn:

  • The basics of what a runtime command window can do and not do
  • What community contributed command window tools exist
  • How to beef up the runtime command window to make it easier to use
  • How you can run Visual FoxPro from a thumb drive while at a customer's site instead of a runtime command window

Prerequisites: None

Using VFP to Access Rest APIs with Chilkat ActiveX Components

Presenter: Dave Crozier
Level: Intermediate

Recently, you may have noticed the increase in the number of vendors offering and requiring access to their data via a bespoke REST API. REST has taken over in the last few years from both HTML and SOAP as the preferred method of accessing online data and using JSON as a data format with full end-to-end authorization.

There are a number of ways to access REST APIs. One method is to use Rick Strahl's West Wind software. Another is to use Chilkat ActiveX components, which is what we will concentrate on during this session.

Chilkat ActiveX components work seamlessly with VFP and contain many more components other than the REST services covered here. They are available in trial mode for those of you who wish to evaluate the software with no time constrictions.

POSTMAN is free software allowing the user to test out any available REST service and the Chilkat ActiveX components contain a number of REST functions amongst the many available, all accessible with VFP!

There are three things to know when using REST APIs:

  • Information about the service(s) offered and the data each service return
  • How to log in to the service and request the REST data
  • How to convert the JSON data feed into VFP compatible format for onward manipulation and use

You will learn:

  • How to load and use POSTMAN to explore any REST API
  • How to use the Chilkat ActiveX REST components
  • Brief overview of other Chilkat features

Prerequisites: VFP Knowledge and an interest in Web Data Access via VFP

VFP and IT Security

Presenter: Eric J Selje
Level: All levels

Visual FoxPro developers, in general, are not like other developers. As a rule, we work directly with the end users, we do the design ourselves, we code it, we test it, we deploy it, and we support it. (This is not the case with all software developers.) For our software to be secure means we need to know what security issues exist all along the software development chain. That's a lot to know, but this session will cover some general concepts to consider to reduce the risk of your applications.

You will learn:

  • Where you might introduce risks in your development
  • Where external parties might inadvertently introduce risks
  • Good principles for secure software development

Prerequisites: None

VFP to Mobile Web Using Drupal

Presenter: Robert A Colish
Level: Intermediate

The goal: keep VFP as-is while adding two-way data sharing for mobile devices. Cost is a factor so keep it low.

Possible solution: create a Drupal site to share to mobile while keeping the VFP application as-is. Since Drupal is open source, there is no ongoing maintenance fee. Drupal is very similar to VFP in many ways: views, forms, essentially endless possibilities.

This session uses a real world example. The company has over 10,000 accounts, three sales reps, five technicians, and two route drivers. The in-house VFP software does everything they want. Adding the Drupal site allows them to go paperless and lets the office process all A/R, service, and CMS with the existing VFP system.

Existing VFP Applications can "go mobile and stay local" at the same time!

You will learn:

  • How to create csv files used to send to the Drupal site feed (website)
  • How to retrieve data from the Drupal site for importing into VFP applications
  • About the content creation GUI for data fields to be uploaded on Drupal site
  • What a “feed” on a Drupal site is and how to set it up (imports the CSV data)
  • How to create “views” (i.e. reports) on a Drupal site where the uploaded data is displayed/used
  • About Drupal Webform creation (i.e. forms)

Prerequisites: None

What's New in VFPX

Presenter: Doug Hennig
Level: All levels

The last session looking at new VFPX projects was at Southwest Fox in 2018, so it's time for an update. There are at least 20 new projects since then, so this session will cover as many of them as time permits.

You will learn:

  • How to use SFMail to send emails from VFP applications, including using mail servers requiring Modern Authentication
  • How to add a highly configurable and customizable error handler to your applications
  • How to add a Microsoft Office 365-like ribbon control to your applications
  • How Object Explorer provides an explorer to view members of an object, even at runtime
  • How a variety of projects can add new functionality to your applications

Prerequisites: General knowledge of VFP

You've Sent (HTML) Mail!

Presenter: Tuvia Vinitsky
Level: Intermediate, Advanced

Sending emails has long been a staple of desktop applications. Originally emails were just text, but nowadays almost all emails are in HTML format, an ability VFP seems to have left behind. Not any more!

In this session, we will create a form for sending HTML emails complete with images and formatting. But why stop there? We will also learn how to actually save and manage sent and received emails, all in the native email .eml format! This has been used by clients to replace third party programs such as Constant Contact. Keep it all in VFP and own the app and the customer experience!

You will learn:

  • The real difference between text and HTML emails
  • Email file formats
  • How to edit the HTML in VFP
  • How to send emails
  • How to store copies of sent emails
  • How to view stored emails and incoming emails

Prerequisites: VFP development experience and a basic understanding of HTML and email

Platinum Sponsors
Diamond Sponsors
Gold Sponsors