SWFox logo

Southwest Fox 2023

October 19-22, 2023
Hampton Inn & Suites Phoenix-Scottsdale
Scottsdale, AZ

Geek Gatherings Logo

Sessions

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

Advanced Reporting with Microsoft Excel

Presenter: Doug Hennig
Level: All levels

It's easy to add a feature to your application to export to Microsoft Excel: XFRX, Craig Boyd's Grid Extras, several VFPX projects including Greg Green's excellent VFPXWorkbookXLSX, and even a simple COPY TYPE XL5 can create an Excel document. However, such documents are simple, boring lists of data. This session looks at techniques to create attractive, useful reports in Excel, driven with data from your VFP applications.

You will learn:

  • How to feed data from VFP into Excel
  • How to create a reporting template in Excel using data from VFP
  • How to use advanced features of Excel to make your spreadsheets pop

Prerequisites: Familiarity with Excel and VFP

An Introduction to Chilkat (and ChilkatVFP)

Presenter: Bill Anderson
Level: All levels

Chilkat (https://www.chilkatsoft.com) is a cross-language, cross-platform API providing 100+ classes for many Internet protocols, formats, and algorithms. ChilkatVFP is a Visual FoxPro friendly class library wrapper around all the Chilkat objects.

In this session, we learn the Chilkat basics, how to use these objects, and how ChilkatVFP makes it smoother and easier for Visual FoxPro developers.

Come and learn how to harness the Chilkat API in your VFP applications!

You will learn:

  • Chilkat usage basics
  • ChilkatVFP features
  • Chilkat Tasks
  • Harnessing Chilkat events

Prerequisites: None

Challenges and Benefits of Creating MenuDesigner Pro

Presenter: Rick Schummer
Level: All levels

I am fairly certain most Visual FoxPro developers have built developer tools to make creating customer solutions easier or faster, and to save labor doing the things we do every day. Some of these tools are very custom to specific tasks for the creator and some are useful to the larger community of developers.

Building one-off tools or something you use just for yourself allows you to take shortcuts because you only have to support your own use case. If something is not perfect, you only have yourself to blame. Building tools for the broader community opens up a larger can of worms. Mostly support worms. Other developers introduce new use cases and, in the process, push the tool in ways that were not in your original requirements. They also find shortcomings and bugs you did not find in testing. The reality is, the amount of support and number of enhancement requests can be overwhelming, and sometimes the demands can be, in a word, annoying.

In this session, I am going to go through the evolution and creation of the MenuDesigner Pro, one of the newer VFPX projects by time the conference takes place. This is a tool that has been under development since before Visual FoxPro 9 was released more than a dozen years ago. This session will deep dive into the product while discussing the challenges of producing this tool, and some of the reasons it has taken all these years to release to the community.

You will learn:

  • That working with the Visual FoxPro binary DBF source code files requires finesse and reading the documentation
  • That user interface, just like in the customer solutions, has to be done properly or causes increased support issues
  • That contributing to VFPX has both pros and cons
  • Why common ActiveX controls were not a big deal until Visual FoxPro Advanced (64-bit)
  • That announcing a product before it is mostly done is a bad idea, not to be used as an incentive to finish

Prerequisites: None

Closing Session

Presenters:

Collections: Managing Information the Object-Oriented Way

Presenter: Tamar E Granor
Level: Beginner, Intermediate

When the collection base class was added to VFP 8, it gave us the opportunity to make our applications look more like those in other object-oriented languages. Collections let us manage groups of related objects through a straightforward interface, and avoid the peculiarities of working with arrays in VFP.

In this session, we'll cover the basics of using collections, the reasons why they're better than arrays, and show how they improve object models. We'll also consider the weaknesses of collections in VFP and talk about workarounds.

You will learn:

  • What collections are and how to work with them
  • Why they're easier to use than arrays in VFP
  • How they fit naturally into object hierarchies
  • How to debug collections

Prerequisites: Some familiarity with OOP

Creating Applications for the Web and Mobile using Blazor and FoxPro

Presenter: Robert van der Hulst
Level: All levels

In 2022, Microsoft introduced a new style of developing applications for the Web, as well as for mobile devices, using a product called Blazor. Blazor apps can run on any web browser using a technology called WebAssembly, server-side in ASP.NET Core, or in native client apps. Blazor front ends are usually coded with a mixture of Razor and C#. However, Blazor apps can also call code developed in other .NET languages, such as FoxPro code, compiled for .NET with X#.

There is A LOT of learning material about Blazor on the web already. This session will present an overview and will explain the differences between server side apps (running in ASP.NET Core) and Blazor WebAssembly apps.

We will also show how you can run FoxPro code in an XSharp layer behind the Blazor apps to use existing business logic for new applications. This code will be running from a web server. This means that some things are allowed, but other things not. We will look at some issues you can expect.

We will also look forward to a new version of Blazor that has been announced (Blazor United). This new version can be seen as a mix between Blazor Server and Blazor Client, where some components are running on the server, but other components are running on the client.

You will learn:

  • What Blazor is
  • The difference between Blazor Server and Blazor Web Assembly
  • How to call FoxPro code from a Blazor application
  • What can you do in the code behind the Blazor app and what you can't
  • What is coming with respect to Blazor in the not-too-far future

Prerequisites: None

Logging: Clear Cut Solutions for Your Apps

Presenter: Eric J Selje
Level: All levels

Logging - such a simple thing, right? You manually insert a bunch of lines in your code so you can keep track of what's going on.

Well, it can be much more than that. Proper logging in your application is the premier forensic tool when things aren't going perfectly. So what is "proper logging?" Well, it's not clear cut. In this session, we'll review why and how we keep logs, and look at tools available to help us analyze those logs. Sometimes we can even find issues before they become a problem.

You will learn:

  • How to do basic logging for every application
  • About tools to help automate logging
  • How and where to store logs
  • About logging at the next level with SIEM tools to gain insights into your applications

Prerequisites: None

Lunch

Presenters:

Modern Authentication with VFP

Presenter: John Ryan
Level: All levels

While VFP developers traditionally carved their own user authentication systems, in 2023 vendors like Microsoft are urging customers to take much more interest in coordinated security including shared logins/single sign-in and centralized access management.

Techniques like Two-Factor Authentication (2FA), Active Directory (AD) Integration, Lightweight Directory Access Control (LDAP), and Modern Authentication protocols like oAuth2 are widely promoted, increasingly seen as the norm rather than an optional extra.

While some of these techniques may appear daunting, most can be implemented relatively easily by VFP developers. This presentation covers VFP versions of some of the more prevalent options including:

  • AD integration via declared Microsoft API
  • AD integration via LDAP or LDAP against Linux
  • 2FA using Google or Microsoft Authenticator with an entirely VFP implementation: no phoning home
  • Techniques to integrate Modern Authentication techniques like oAuth2 into your work
  • Pros and cons of the various techniques

The session concludes with principles you can use to start moving home-grown user privilege/access handling towards Active Directory or other centrally managed options. This can be surprisingly simple, or complex enough to satisfy any sysop.

The session's source code includes a security class with hooks that allow functionality to be easily inserted into current VFP apps, then enabled via license or config settings when a customer asks.

You will learn:

  • The basics of prevalent modern authentication techniques
  • Pros and cons of the various options, to help customers choose wisely
  • How to implement the options in VFP code
  • About ideas for moving user privilege/access handling towards central management

Prerequisites: Those with an existing bespoke user authentication system are likely to be particularly interested in these techniques, but ability to add modern authentication is useful for all VFP developers.

Opening Session

Presenters:

Optimize Your IDE: Take Full Advantage of Thor Tools Part 1

Presenter: Jim Nelson
Level: Beginner

The Thor Repository contains a huge number of tools that can simplify your everyday life while working within the IDE. But, it seems, most of these tools are little understood and rarely used.

I came to this realization in my own work when trying to share Thor with a new (and very experienced) co-worker and was embarrassed to learn how much of Thor even I was not taking advantage of. This talk (which will cover two sessions) is the result of our work to categorize our tools and make them as easily accessible as possible.

The goal of this talk is simple: by the end of the second session, attendees will have learned how to use an entire suite of Thor tools, and will be able to start using them immediately in their IDE.

You will learn:

  • Thoroughly investigating about six dozen Thor tools (a few of them new, but many likely unfamiliar)
  • (optionally) Installing a Thor pop-up menu on your laptop that is identical to what will be used in the talk, so that everything demonstrated can be tested locally during the presentation
  • A convenient and direct way to access documentation for every tool in the talk

Prerequisites: Thor installed, as well as the following VFPX Projects:

  • DynamicForm
  • Finder
  • Go To Definition
  • IntellisenseX
  • Object Explorer
  • PEM Editor
  • Thor Repository

Optimize Your IDE: Take Full Advantage of Thor Tools Part 2

Presenter: Jim Nelson
Level: Beginner

The Thor Repository contains a huge number of tools that can simplify your everyday life while working within the IDE. But, it seems, most of these tools are little understood and rarely used.

I came to this realization in my own work when trying to share Thor with a new (and very experienced) co-worker and was embarrassed to learn how much of Thor even I was not taking advantage of. This talk (which will cover two sessions) is the result of our work to categorize our tools and make them as easily accessible as possible.

The goal of this talk is simple: by the end of the second session, attendees will have learned how to use an entire suite of Thor tools, and will be able to start using them immediately in their IDE.

You will learn:

  • Thoroughly investigating about six dozen Thor tools (a few of them new, but many likely unfamiliar)
  • (optionally) Installing a Thor pop-up menu on your laptop that is identical to what will be used in the talk, so that everything demonstrated can be tested locally during the presentation
  • A convenient and direct way to access documentation for every tool in the talk

Prerequisites: Thor installed, as well as the following VFPX Projects:

  • DynamicForm
  • Finder
  • Go To Definition
  • IntellisenseX
  • Object Explorer
  • PEM Editor
  • Thor Repository

PHP for VFP Developers

Presenter: Christof Wollenhaupt
Level: All levels

FoxPro is a powerful language that supports ample of business use cases. Requirements are changing, standard are evolving, expectations are increasing... The lack of tool chains, client libraries, or open source solutions sometimes disqualifies FoxPro as the most efficient solution.

There are plenty of languages available to choose from. This session presents one of them. PHP is a mature language that evolved over decades. The language has seen the rise and fall of major browsers, internet technologies, companies, standards, and more. Throughout all these times the language kept changing, but remained largely backward compatible. It's not the top pick of young developers, but has developed a stable fellowship.

Learning a new language is easier if you can connect new information with something you already know. In this session, we look at various language concepts in PHP and how they differ from Visual FoxPro. We dig into how you would things in PHP that you know how to do in FoxPro. We also cover false friends: some things in PHP look dangerously similar to VFP, but are in fact completely different. We learn about includes, scope, classes, arrays, types, object orientation, anonymous functions, libraries and extensions, tooling and more....

You will learn:

  • How to use PHP with their existing VFP knowledge
  • How PHP can help them

Prerequisites: FoxPro knowledge and an open mind

ParallelFox 2.0

Presenter: Joel Leach
Level: Intermediate, Advanced

With today's multi-core processors, parallel processing is an important component for any developer. ParallelFox brought parallel processing tools to Visual FoxPro back in 2011. It's about time for an upgrade! Join us in this session to learn how to use ParallelFox and explore new features in version 2.0.

You will learn:

  • What parallel processing is and the basics of using ParallelFox
  • About exciting new features that are included in ParallelFox 2.0
  • Tips, tricks, and traps for writing code that runs in parallel

Prerequisites: Familiarity with VFP

SQL Server: Getting Started With Always Encrypted

Presenter: Jody L. Meyer
Level: Intermediate

Content is king... especially to the people that want to steal personal information like social security numbers, credit card numbers, birth dates, and other sensitive information. SQL Server 2016 introduced a way to encrypt column content by using Always Encrypted. This enables the sensitive content to be available to people that need access to it. Always Encrypted also prevents access to sensitive content for unauthorized persons and even DBAs.

In today's database environment, encrypting content is required. It protects companies and their customers from theft of their personal information. Implementing SQL Server Always Encrypted is a great start in ensuring unauthorized access to that data.

In this session, Jody will walk through the steps of implementing Always Encrypted in SQL Server 2022 using SQL Server Management Studio (SSMS). She will demonstrate the limitations of queries using Always Encrypted columns. Jody will demonstrate the steps of incorporating SQL Server Always Encrypted in a simple VFP application using SQL Server database backend. She will discuss the use of the SQL Server Connection string in a simple VFP application and how to flip between encrypted and unencrypted content. She will discuss some of the limitations of using Always Encrypted.

You will learn:

  • What SQL Server's Always Encrypt is
  • How to create encrypted columns
  • Limitations of queries using encrypted columns
  • How to implement Always Encrypt in a VFP application

Prerequisites: Knowledge of SQL Server 2016 and up and SQL Server Management Studio (SSMS)

SuperBrowse, Pandora, and Other Favorite Thor Tools

Presenter: Tore Bleken
Level: All levels

This session is about the making of SuperBrowse, and how to use it in far more ways than most people are aware of.

Other Thor tools that the speaker uses more or less on a daily basis will be demonstrated, as well as how to create one yourself.

A brand new Thor tool, Pandora, will be launched. Pandora combines a long list of unique features with features available in some of the other popular Thor tools. This combination will ease the day-to-day work since there will be fewer tools to learn and to remember.

You will learn:

  • How to use SuperBrowse, including little known features
  • How to adapt existing Thor tools to your own needs
  • How to create your own Thor tools
  • How to get more productive with Thor by using Pandora
  • How to extend Pandora

Prerequisites: Some knowledge of Thor will be an advantage, but is not required.

Team Git: Collaboration Made Easy

Presenter: Rick Borup
Level: Intermediate

Git is great for the solo developer, but where it really shines is for collaborating with a team. Hosting platforms such as GitHub, Bitbucket, and GitLab are designed to facilitate team workflows using a central server to track issues, manage branches, create pull (merge) requests, perform code reviews, and coordinate development work among team members. Some of them also provide integrated tools that further enhance the team's project management. This session explores ways to leverage the power of a hosting platform for team development, with the goal of helping VFP developers choose a strategy that works best for them.

You will learn:

  • What GitHub, Bitbucket, and GitLab are and how they differ
  • How to get started using a Git hosting platform
  • About local and remote branching strategies
  • How to create a pull request and what to do afterwards
  • How to create and track issues
  • How to use Sourcetree to work with Git

Prerequisites: Some basic knowledge of Git is assumed. It's OK if your knowledge is only academic, or if your only experience with Git is using it as a local repository for your own work.

Tracking and Mapping Vehicles in Real Time

Presenter: Tuvia Vinitsky
Level: All levels

We can use the Google APIs to display the location and progress of vehicles, i.e. delivery trucks. Deliveries are a key component of many businesses, and a map showing location and progress can be very useful. We can also add timings—was the delivery made as fast as it could have been? Has a vehicle been idle for an excessive amount of time? Show this information color-coded on top of a Google map in a VFP form!

You will learn:

  • Mapping basics: longitude and latitude and how that translates to a street address
  • How to use the Google mapping APIs
  • How to create a map
  • How to pin vehicle locations to the map
  • How to get timings and directions from Google
  • How to store historical data for comparison

Prerequisites: VFP experience and a basic understanding of maps

X# Session

Presenters:

Platinum Sponsors
Diamond Sponsors
Gold Sponsors