SWFox logo

Southwest Fox 2024

September 26-29, 2024
Hampton Inn & Suites Phoenix-Scottsdale
Scottsdale, AZ

Geek Gatherings Logo


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

Consciously Uncoupling Data from Reports

Presenter: Shonnon Morris
Level: Intermediate

Have you ever designed a report that is beautiful, complex and simply put, a work of art. Present it to your client, at which point they say "We love it. It is perfect. We want that report, but... Could you add another report that gives us three additional columns." Or better yet, "Can we have another report that summarizes the first report?".

If the query driving that report was created in the Data Environment of VFP's Report Designer, sure you could make a copy, modify the query to summarize it and/or add the new columns to that report. Easy, right?

But what happens if that same lovely client then wants something changed in both reports? Apart from making the change to both report layouts, you would also have to change the query driving the reports in two places. Good luck remembering that four months later when they inevitably ask for another change.

What if your query driving the report existed separately from the report, like in a separate program or function? Maybe you could call the first program from the second program and work your magic on that program?

Maybe now that the data is living its own best and separate life with no permanent strings attached to any one report, it could do other things, like work with an Excel PivotTable that would love to have data like that. Or a C# program that can present it to new audiences. The possibilities are endless.

In this session we will take a look at this type of scenario and discuss some of the advantages of separating your data from your reports, and we will go through how you too can design your data and reports to be free spirits.

You will learn:

  • How to build a program structure for the separated data
  • How to design your reports to be source agnostic
  • How your other FoxPro applications can make use of this data
  • How you can present this separated data to a C# application
  • How to feed this separated data to an automation server

Prerequisites: Knowledge of Visual FoxPro and some C#

Extending HTML With Custom Elements

Presenter: Kevin Ragsdale
Level: Beginner, Intermediate

Custom Elements are a important part of modern web development, empowering developers to create reusable, encapsulated components with ease. By extending the native HTML elements via JavaScript classes or creating entirely new ones, developers can encapsulate complex functionality, enhance code readability, and foster maintainability. In this session, we will explore the concept of Custom Elements, delving into their anatomy, lifecycle, and practical applications. We will discuss the benefits they offer, including improved code organization, enhanced modularity, and seamless integration with frameworks like React and Angular. Through real-world examples, participants will gain an understanding of Custom Elements and how to leverage them effectively to build robust, scalable web applications. Whether you're a seasoned developer looking to level up your skills or a newcomer eager to explore the cutting-edge of web development, this session will provide valuable insights into harnessing the power of Custom Elements to create dynamic, interactive web experiences.

You will learn:

  • The concept of Custom Elements and how they enhance web development
  • The anatomy of Custom Elements, including their structure, properties, and methods
  • About the lifecycle of Custom Elements and how to use lifecycle callbacks for initialization and cleanup tasks
  • Practical use cases for Custom Elements, such as creating custom UI components, integrating third-party libraries, and encapsulating complex functionality
  • Benefits of using Custom Elements, including improved code organization, enhanced modularity, and easier maintenance

Prerequisites: Basic understanding of HTML, CSS and JavaScript. Web development basics, and using browser dev tools

Fox Tips, Tricks, and Traps

Presenter: Tore Bleken
Level: Beginner

I will present most of the tips, tricks, and traps I have collected over the years. This will include simple one liners and quite a few utilities I have made myself or collected from other sources. Some of the ideas presented are:

  • How to find identical records with a SQL Select statement
  • How to find "holes" in a sequence with a SQL Select statement
  • How to copy an object
  • Easiest way to copy data from a table into Excel
  • How to drastically reduce the amount of RAM used by VFP via Windows API
  • Why your index key expression must give in a fixed length result

You will learn:

  • How to become a better programmer by avoiding pitfalls and using clever tricks

Prerequisites: None

Gone Fishing: Getting the Most Out of GoFish 7

Presenter: Jim Nelson
Level: All levels

GoFish is the premier tool for fast searching and replacing of Visual FoxPro source code. Since Matt Slay introduced GoFish 4 in 2012 (based on Peter Diotte's early versions from 2001-2005), it has become the standard such tool. Since then, there have been continual enhancements, with substantial contributions by Lutz Scheffler and Jim Nelson. The latest round of enhancements, version 7, came out this spring.

You will learn:

  • All the new features introduced last year in GF6 and this year in GF7
  • What spurred the creation of GF and each of its major versions
  • What goes on under the hood in solving some of GF's more interesting challenges

Prerequisites: None

How VFPX Can Make You a Superhero!

Presenter: Rick Schummer
Level: All levels

Various VFPX sessions given in recent years at Southwest Fox and Virtual Fox Fest have focused on the latest and greatest releases from the different projects. Doug Hennig and I have given numerous What's New in VFPX sessions over the years to showcase some of the newest projects released on the community's open-source juggernaut by dozens of developers around the world. Presenting and attending these sessions is one of the ways I keep up with their impact on me as a Visual FoxPro developer.

Tools that have complexity and sophisticated features and functionality like GoFish, Project Explorer, DataExplorer, Builders, IntelliSenseX, Upsizing Wizard, and Thor have had their own dedicated sessions showing you how the Visual FoxPro Interactive Development Environment (IDE) can be enhanced and improved. Other sessions have covered projects like Parallel Fox, ThemedControls, DynamicForms, VFP2C32, and XLSXWorkbook that help enhance and improve your end-users' applications.

But what about some of the older, established projects that may be more feature complete? What about those projects that have been around for a while, but are just as useful as any of the newer projects? There are even some projects that have a narrow, but still useful feature or functionality that might assist you. Today we have access to more than 140 projects included in the VFPX open-source eco-system. The objective of this session is to cover some of the other projects that have not received a lot of attention over the years and to shed some light on projects I have used that have helped me either improve the VFP IDE or improve the code and features of our applications deployed to thousands of customers around the world.

You will learn:

  • What other tools besides GoFish, Project Explorer, DataExplorer, Builders, IntelliSenseX, Upsizing Wizard, and Thor can improve the VFP IDE
  • What other components besides Parallel Fox, ThemedControls, DynamicForms, VFP2C32, and XLSXWorkbook can improve the applications you develop

Prerequisites: None

Modern Development Technology and VFP

Presenter: Christof Wollenhaupt
Level: All levels

When VFP 9 was released 20 years ago, the world of software development was a vastly different one than today. What we take for granted didn't even exist until the following year (Git, YouTube), or even later (Twitter, Stack Overflow). Along with the tech stack (I'm sure we didn't use that term back then), a lot of approaches to software development changed.

In this exploratory session, we look at a variety of different development technologies and see whether they can apply to VFP or not, how they can apply, what they are, where to find more information about them, and how they connect to other pieces that you might come across. This includes:

  • specific development approaches such as SOA and micro services;
  • architectural patterns like dependency injection, inversion of control, asynchronous development;
  • new approaches to application design such as package managers (FoxGet) and tool distribution;
  • changes in IDEs like the release of VS Code, the popularity of CodeSpaces
  • new tooling like refactoring, automated documentation, code quality checks;
  • the shift from software to infrastructure with DevOps, Azure, Pipeline;
  • new expectations in customer support with In-App chats, video tutorials;
  • challenges to our profession with the increasing use of CoPilots, ChatGPT, and even artificial developers.

Due to the wide variety of topics, we will only cover each topic briefly.

You will learn:

  • What new approaches to development are out there
  • How modern applications are not the same as a VFP application
  • Ideas for what might improve day to day work

Prerequisites: None

Modern Web Application Design

Presenter: Joel Leach
Level: All levels

For almost as long as there have been web sites, there have been web applications. For many years, web developers and designers had to make sacrifices in terms of richness, interactivity, and productivity when compared with desktop applications. What about in 2024? Can a web application offer a user experience that rivals its desktop counterpart? In this session, we will explore that topic and learn modern techniques for designing real-world web applications.

You will learn:

  • What it means to be a designer
  • Whether a modern web app can replace a desktop app ... without sacrifices!
  • How to translate desktop design skills to a single-page application (SPA) on the web

Prerequisites: Experience with Windows desktop application design

New VFPX Projects

Presenter: Doug Hennig
Level: All levels

This session looks at three new VFPX projects: VFPX Framework, FoxGet, and DeployFox.

VFPX Framework provides base UI classes and commonly used functions such as reading from or writing to INI files and the Window Registry, recursive file operations with a dialog such as copying files and deleting folders, and so on. Not only does VFPX Framework eliminate duplicated functionality for VFPX projects, it can also be used in your own non-VFPX applications.

FoxGet is the VFP equivalent of the NuGet .NET package manager. The idea is that you run FoxGet when you want to add a library to an application. You search for a library you're interested in and if one is found, you can download, install, and add it to your project with a single mouse click.

DeployFox automates the steps required to deploy your applications by providing a customizable list of tasks: copy files, rename files, build a project into an EXE, digitally sign an EXE, run an Inno Setup script to create an installer, upload files to an FTP site, and so on.

You will learn:

  • How VFPX Framework provides a common set of classes and utilities
  • How to use FoxGet to add libraries to your applications
  • How to use DeployFox to automate the steps required to deploy your applications

Prerequisites: None

Penetration-Testing a VFP Application

Presenter: John Ryan
Level: All levels

Customers are increasingly concerned about being hacked. Apart from the reputation implications, strict privacy obligations in many countries mean that the business or personal consequences can be severe. This is why VFP developers can expect to face more questions about system security and "Pen Testing" (penetration testing) of applications.

This session covers the Pen Testing cycle as it relates to Web and Windows applications using VFP. The session starts with a brief refresher on 2-Factor Authentication (2FA) and AD/LDAP integration that are a common starting point for Pen Testing. Then the session shows use of certificates and credentials to prevent unencrypted data crossing the network, another easy Pen Testing tick for a VFP developer. Then the session covers some anti-hack techniques that work especially well with VFP, quickly pushing your app into the "too hard" basket for most hackers or external Pen Testers. The session concludes with interactive Pen Testing of a poorly secured website showing how devastating a simple XSS or other scripting exploit can be, followed by a hardened sample VFP application showing Pen Tests that VFP developers can document themselves, to be ready when a customer asks.

You will learn:

  • The Pen Testing cycle from a VFP perspective
  • A quick refresher on common Pen Test items like 2-Factor Authentication and AD/LDAP integration
  • How to ensure and Pen Test that data is always encrypted between your app and the database
  • For Web Applications, principles of Cross Site Scripting (XSS) and similar exploits that can let hackers in
  • How Windows makes it easy for hackers, and things you can do about it
  • Examples of Pen Testing of Web and Windows apps, including tests that VFP developers can document themselves

Prerequisites: None

Refactoring VFP Code: if it Ain’t Broke, Fix it

Presenter: Rick Borup
Level: All levels

Have your applications grown stale? Is there code you've repeatedly told yourself really needs to be cleaned up some day? Is unit testing difficult because the code is poorly structured or methods try to do too much? Are you working on an app written by someone else and struggling to figure out how to change it without breaking something? In all of these situations, modifications can end up taking hours instead of minutes or even weeks instead of days. These are probably common experiences for most of us, and the longer code like this is allowed to linger, the worse the situation can become. In this session, we'll explore what refactoring is and how it can be an effective solution.

You will learn:

  • About code smells, technical debt, and other reasons to refactor
  • When to refactor
  • How to refactor
  • Risks of refactoring (if it ain't broke, don't fix it)
  • About refactoring for unit tests
  • About tools for refactoring in VFP

Prerequisites: Experience developing VFP apps

Revisiting wwDotnetBridge and .NET Interop from FoxPro in the Modern Age of .NET

Presenter: Rick Strahl
Level: All levels

If you're building modern applications that need to interface with various system or operating system features, or you need to integrate with many third party components or libraries, 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 .NET features, or by way of open source or third party libraries. With the free wwDotnetBridge Interop library for FoxPro, you can access most features directly or build connector .NET components to simplify access to more complex .NET interfaces in a FoxPro friendly way.

In this session, I show how to use wwDotnetBridge to access .NET functionality both in built-in .NET and Windows system components, as well as take advantage of the wide variety of open source and commercial .NET libraries that you can integrate into your FoxPro code. I'll review the basics of using wwDotnetBridge from FoxPro, and demonstrate a few practical examples of .NET integration in FoxPro, how to find and install components, as well as best practices in for how to effectively expose .NET functionality in your code. In the course of the session, I'll also demonstrate a few useful tools to help discover and test out .NET functionality while you are trying to interface with it from FoxPro.

Finally we'll also take a look at some architectural considerations to decide whether to call .NET code directly from FoxPro, or whether to create small wrapper .NET components that can ease integration of more complex .NET code or components in a FoxPro friendly manner. I'll demonstrate building of your own .NET components using free and light-weight command line tooling, as well as using the traditional .NET flagship IDE in Visual Studio.

The barrier of entry to .NET development is considerably lower these days, and I hope this session will inspire you to take advantage of the wealth of functionality available to extend your FoxPro applications with modern application features.

You will learn:

  • Why you'd want to use .NET in your FoxPro Applications
  • How to get started with wwDotnetBridge
  • Call native .NET components
  • Find, load and call third party .NET components
  • Use decompilers to discover out API signatures
  • Test code interactively with LINQPad
  • Create your own .NET components
  • Distribute your application with .NET components

Prerequisites: None

The Why and How of Test Data

Presenter: Tamar E Granor
Level: All levels

A realistic test data set provides a variety of advantages to developers, testers and end users, yet most applications don't include one. In this session, we'll look at the reasons for supplying test data and examine ways to generate it. Since this session was first presented in 2007, the world of test data generation has changed quite a bit; the session will reflect those changes.

You will learn:

  • Why supplying test data with an application improves the application
  • What test data should look like
  • About tools to generate realistic test data

Prerequisites: None

Using Google Calendars 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 use the Chilkat library to access and manage Google calendars, including selecting a calendar, viewing entries, adding entries, and actually creating a VFP calendar display populated with entries from the Google calendar.

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 and AI? That's Wishful Thinking!

Presenter: Eric J Selje
Level: All levels

Artificial Intelligence (AI) is definitely the hot topic, but using it with our VFP apps and data is wishful thinking, right? YES, because Wishful Thinking, and other open-source AI projects like it, allow us to unleash the power of AI on any data that we feed it.

In this session, I'll give an overview of LLMs and the state of AI and then we'll play around with Wishful Thinking to see what it can do with our VFP (or SQL) data. We'll discuss the benefits and pitfalls of AI and have a conversation about your possible use cases for this technology. This should be fun!

You will learn:

    Understanding AI's Role in LOB Database Development: Explore the ways in which AI technologies, including machine learning, natural language processing, and predictive analytics, can be leveraged to enhance LOB database applications, enabling automation, optimization, and intelligent decision-making. Identifying AI Use Cases in Different Lines of Business: Examine real-world use cases and success stories demonstrating the diverse applications of AI in different lines of business, including finance, healthcare, retail, manufacturing, and more. From customer relationship management to supply chain optimization, discover how AI can revolutionize business processes and drive value creation. Overcoming Challenges and Pitfalls: Discuss common challenges and pitfalls associated with integrating AI into LOB database applications, such as data quality issues, model bias, and regulatory compliance concerns. Discover best practices and mitigation strategies for addressing these challenges, ensuring the successful adoption and deployment of AI-powered solutions.

Prerequisites: None

VFP.Webify(): Tips & Tricks for Moving (Updating & Upgrading) a VFP App to the Web

Presenter: Scott Rindlisbacher
Level: All levels

Everything is moving to the web these days. Heck, even Intuit is shutting down parts of QB Desktop, their product that's been around since 1992 and pushing everyone to QB Online. In this session, we'll cover some basic web strategies, how VFP concepts correlate to the web, a few gotchas to avoid, and how you could (potentially) keep using a large chunk of your VFP code base business logic with very few tweaks/changes while redesigning the front end.

You will learn:

  • JavaScript variable scoping and other basic JS concepts
  • The magic of base64 strings to pass more complex data (pictures, Excel files, etc.) easily to a VFP webservice
  • How to use a framework like VueJS and how that compares to VFP development
  • Pros & cons of JSON in VFP and tools to work with it
  • Pros & cons of CSV data in a web app and tools to work with it
  • Several ways to send data back from a VFP webservice

Prerequisites: A basic understanding of VFP and how it sees the world. A basic understanding of HTML is helpful

Platinum Sponsors
Diamond Sponsors
Gold Sponsors