Southwest Fox 2019

October 24-27, 2019
SanTan Elegante Conference Center
Gilbert, AZ

Southwest Fox 2019 Sessions

There are 7 conference tracks at Southwest Fox 2019. "Level" shows the expected Visual FoxPro level for attendees for a session. Click a track's icon to jump to the sessions for that track.

Pre-Conference: These half-day sessions are offered on Thursday before the main conference starts, and are available for an additional cost; see the Register page for details.
Extending VFP: The sessions in this track look at ways to extend VFP's reach, by using it together with other products or by taking advantage of native extension capabilities, including working with SQL back-ends.
Moving VFP Applications Forward: This track covers topics related to modernizing VFP applications as well as alternatives for new platforms and future application development.
Solidifying VFP Development: This track includes VFP fundamentals, aimed at those newer to VFP, whether moving up from FP2.x or coming to VFP from other languages; VFP best practices, aimed at helping all VFP developers improve; and in-depth looks at aspects of VFP that some developers may not have mastered yet.
Taking Advantage of VFPX: The sessions in this track showcase the projects in VFPX, providing attendees with enough information to put those projects to work for them.
Technology and Business for the Developer: This track looks at tools, technologies and techniques to make life as a developer easier and more productive.
Web and Mobile: The sessions in this track are aimed at developers who want to learn more about creating web and connected mobile applications.

Keynote

Presenter: Kevin Ragsdale

When: Thursday, October 24, 7:00 - 8:30, Elliott/Flagstaff

Visual FoxPro 9.0 was released in December 2004, just a couple of months after the first Southwest Fox Conference. In March of 2007, Microsoft announced there would be no VFP 10. A few months later, Southwest Fox celebrated its fourth year (and the first one organized by Rick, Tamar, and Doug). This year, we're gathering in Phoenix for the SIXTEENTH annual Southwest Fox Conference.

I've been using FoxPro for over 25 years - a late bloomer compared to many Southwest Fox attendees. I attended the second Southwest Fox in 2005, and even though I was a wallflower at my first conference, it was one of the best experiences I've had over the course of those 25 years. Every time I've attended since then, my "best experiences bucket" continues to be filled.

Please join me on a humorous and (I hope) recognizable celebration of the history of FoxPro, the community, and Southwest Fox, largely based on my personal journey from FoxPro 2.6 for Windows through VFP 9 - and beyond!

Pre-Conference

Pre-ConferenceMoving VFP Applications ForwardTechnology and Business for the Developer

Presenter: Rick Borup
Level: All levels
When: Thursday, October 24, 9:00 - 12:00, Flagstaff

While Mercurial remains a perfectly satisfactory choice for distributed version control, it's no secret that Git has become the dominant player. The acquisition of GitHub by Microsoft has accelerated the movement toward Git, particularly if you want to share or contribute to open source projects. What are your options if you are currently using Mercurial? Should you consider migrating to Git? Can you convert your existing repositories or do you have to start over from scratch? Are there tools to help you work with both Git and Mercurial? This session explores the answers to these questions and more.

You will learn:

  • How Git is similar to yet different than Mercurial
  • Why you might want to consider migrating to Git
  • About using Git for version control in VFP development
  • About using GitHub to share code and contribute to open source projects
  • About tools to work with both Mercurial and Git repositories

Prerequisites: Some experience with Mercurial is helpful but not required

Pre-ConferenceTechnology and Business for the Developer

Presenter: Jody L. Meyer
Level: All levels
When: Thursday, October 24, 1:00 - 4:00, Flagstaff

So you have moved your software or have developed software with a VFP frontend and a SQL Server backend. That is really cool. Your customers are happy which of course makes you happy. They aren't a big shop. They don't have a resident database administrator. So, guess what?!?! Tag, you're IT! You have become their DBA.

Their SQL Server needs regular maintenance tasks to be performed such as backups, reindexing of tables, etc. The database needs to be tuned, indexes re-evaluated, processes that once used to take minutes are taking hours and perhaps days! Also, security has become a very hot topic and you need restrict access to table content.

Maintenance Plans Their SQL Server needs regular maintenance tasks to be performed such as backups, reindexing of tables, etc. These tasks are necessary to avoid performance and availability issues from occurring. It is now your responsibility to implement and automate these regular maintenance tasks.

SQL Server Indexing We all know how to build an index, but is it a well performing index? SQL Server has indexing tools to help identify indexes that can improve database performance. There are ways to monitor indexes: to see if indexes are being used, how they are behaving and how they are impacting your environment.

Implementing Security with Users, Groups and Roles You would think that implementing SQL Server database security should be a simple topic. All you want to do is to grant a specific login a specific capability such as the ability to update tables in a specific database or just view content of some tables in a specific database. However, with SQL Server, setting up security can get complicated very quickly.

You will learn:

  • What core maintenance tasks should be implemented or at least considered
  • How to backup your database
  • How to set up consistency checks
  • How to set up index maintenance
  • How to cleanup all those old backups automatically
  • How to set up Maintenance Plans
  • How to configure SQL Server Agent Settings
  • About indexing tools: Missing Index DMOs, Database Engine Tuning Advisor
  • How to monitor and analyze indexes: What to create, modify and drop
  • How SQL Server manages security
  • What principles, securables and scope are in context of SQL Server
  • What Users and Logins are and how to create them
  • What Roles are and how to create them
  • How to establish permissions and privileges
  • How to modeling schemas to support security best practices

Prerequisites: SQL Server experience

Extending VFP

Extending VFP

Presenter: Doug Hennig
Level: Advanced
When: Saturday, October 26, 10:00 - 11:15, Flagstaff (R1)
Sunday, October 27, 8:30 - 9:45, Flagstaff (R2)

You may have seen sessions at previous Southwest Fox conferences on using wwDotNetBridge to call .NET code from VFP. If you haven't, this session will introduce you to the benefits .NET can add to your VFP applications. However, this session is more from the .NET side. When do you need to write a wrapper program in .NET rather than accessing the .NET code directly? How do you write such a wrapper? This session will also look at a new interop library by James Suárez called Kodnet. This library has some features that aren't available in wwDotNetBridge.

You will learn:

  • Basics of using wwDotNetBridge (refresher if you've seen a session or already use wwDotNetBridge)
  • When and why to write a wrapper program in .NET
  • How to write a wrapper program in .NET
  • How to debug C# code called from VFP
  • Differences between wwDotNetBridge and Kodnet

Prerequisites: Basic knowledge of C# is useful but not required

Extending VFP

Presenter: Doug Hennig
Level: Intermediate
When: Friday, October 25, 3:30 - 4:45, Flagstaff (R1)
Saturday, October 26, 5:15 - 6:30, Flagstaff (R2)

Reports and menus are two components in VFP for which there is no object-oriented access. And yet an OOP approach to both would make them much easier to work with, especially if you want to dynamically create or make changes to them at runtime. I created object-oriented wrappers for both reports and menus and have used them successfully for many years. In this session, I'll show you how to use these wrappers to provide cool features to your applications, such as dynamic menus that provide control for security purposes and dynamic reports that output the contents of a grid or form.

You will learn:

  • How object-oriented wrappers for reports and menus work
  • How to create or modify reports programmatically at runtime
  • How to create dynamic menus that automatically adjust based on security or other settings

Prerequisites: General knowledge of VFP

Extending VFPTaking Advantage of VFPXSolidifying VFP Development

Presenter: Rick Schummer
Level: All levels
When: Friday, October 25, 2:00 - 3:15, Elliott (R1)
Sunday, October 27, 8:30 - 9:45, Elliott (R2)

Rapid Application Development is a leftover buzzword from decades past. Are you as productive with VFP as you can be, or wish to be? How do other developers use the world's best database application development tool to bring applications to market quicker? Are there tips I can learn to save me 10 minutes a day or an hour a week? This session demonstrates as many tips and productivity ideas as can be crammed into a 75-minute session. As the old saying goes, there are always three ways to accomplish something in Visual FoxPro. Sometimes we only know one way and there are two other ways that are faster or better. Sometimes we don't even know that you can accomplish certain things with VFP. I am constantly amazed, even after using Visual FoxPro for more than two decades, how much I have learned just looking over the shoulder of others as they develop with this product.The session has productivity tips for developers working with all versions of VFP, but focuses on IDE tips and tricks as well as some goodies from VFPX, including a new tool from VFPX that will be introduced at the conference.

You will learn:

  • How to make better use of the VFP tools: Class Browser/Component Gallery, IntelliSense Manager, Object Browser, and Task List Manager, Task Pane, Toolbox, and Code Reference
  • How to make better use of the code editors, IntelliSense, and IntelliSenseX (VFPX)
  • Why features like Document View, List Members, Quick Info, and Macros should be at your fingertips
  • How Property Sheet productivity is improved via Property Editors.
  • How to extend the Class and Form Designers with Builders
  • How to use the Debugger more effectively
  • How to enhancing the VFP IDE to be more productive day-to-day
  • What VFPX enhancements can help

Prerequisites: None.

Extending VFPSolidifying VFP Development

Presenter: Tracy Pearson
Level: Intermediate
When: Friday, October 25, 8:30 - 9:45, Flagstaff (R1)
Saturday, October 26, 11:30 - 12:45, Flagstaff (R2)

In this session, you will learn how to implement a VFP COM object that can be consumed by another Windows application and how to register this object. This presentation demonstrates a C# application (web service, desktop application, etc.) instantiating the COM object. The COM object accesses VFP data and returns it as XML, allowing C# to consume it. We will look at how .NET 4 and .NET Core on Windows can use this object, as well as how to return errors to .NET to implement error handling. Time permitting we will demonstrate VFP updating and/or consuming a C# object.

You will learn:

  • Why we chose a COM object and not the OLEDB driver, and lessons learned.
  • How to send errors from the COM object to the C# host
  • How a COM object can be used by a C# application
  • How to use a 32-bit COM object in a 64-bit application
  • About testing, the challenges we hit, and what you can learn from our experiences

Prerequisites: None

Extending VFPTechnology and Business for the Developer

Presenter: Rick Borup
Level: All levels
When: Friday, October 25, 11:30 - 12:45, Gilbert (R1)
Sunday, October 27, 11:30 - 12:45, Gilbert (R2)

SQLite is a lightweight, open-source, cross-platform, single file SQL database engine that's perfect for many situations where you want to store and retrieve information quickly and reliably. SQLite databases are widely used by many software applications, often behind the scenes; in fact, it's likely you already have at least one SQLite database on your computer without even knowing it. As a Visual FoxPro developer, you can leverage the power and convenience of SQLite in your own applications, too. Come to this session to learn about SQLite and how to use it.

You will learn:

  • What SQLite is
  • How to download and install SQLite on a Windows computer
  • About tools for working with SQLite databases
  • About using SQL to query and edit data in a SQLite database
  • How to work with a SQLite database from Visual FoxPro
  • About suggested use cases for SQLite in VFP applications

Prerequisites: A working knowledge of Visual FoxPro and SQL

Extending VFPMoving VFP Applications Forward

Presenter: Tuvia Vinitsky
Level: Advanced
When: Friday, October 25, 11:30 - 12:45, Flagstaff (R1)
Sunday, October 27, 11:30 - 12:45, Flagstaff (R2)

Whether it is vehicle routing, time and distance calculations, or just a pretty street view, maps add a layer of capabilities and sophistication to a VFP app. However integrating a map API can seem like a daunting task. In this session, we will add maps to a VFP app and add features such as distance calculation.

You will learn:

  • GPS and Maps - Origins and Standards
  • The differences between the Google API and the Bing API
  • How to add a basic map to a VFP form
  • How to calculate and display distances
  • How to add graphical indicators
  • How to add place information along with reviews
  • The limits on APIs

Prerequisites: Strong VFP knowledge. Experience with API calls and HTTP or HTML desirable

Extending VFPSolidifying VFP Development

Presenter: Tamar E. Granor
Level: Intermediate
When: Friday, October 25, 8:30 - 9:45, Elliott (R1)
Saturday, October 26, 3:30 - 4:45, Elliott (R2)

Whether you're working in VFP, SQL Server, or MySQL, some problems come up pretty regularly. In this session, we'll look at how to solve some frequent problems using SQL. In some cases, we'll see how differences in what portion of the SQL standard is implemented make a problem easier to solve in some variants than others.

You will learn:

  • How differences in SQL versions make some problems easier or harder
  • How to work with hierarchical data
  • How to solve some other common problems

Prerequisites: Some familiarity with basic SQL syntax

Extending VFPMoving VFP Applications Forward

Presenter: Eric J. Selje
Level: All levels
When: Saturday, October 26, 8:30 - 9:45, Flagstaff (R1)
Saturday, October 26, 3:30 - 4:45, Flagstaff (R2)

Did you know there is (kind of) a Visual FoxPro version 10? It's not an official Microsoft release though, but rather the work of one man!

VFP Advanced fixes over 80 bugs in VFP 9, introduces a couple of new data types, and also (drumroll please) comes in a 64-bit version.

In this session, we'll take a look at this free patch for Visual FoxPro. We'll go over some (but not all 81, as of this writing) bugs that it fixes and how he did it, discuss what being 64-bit does for us, and have a conversation about whether you want to develop and release software that uses this patch. Is it dangerous? Buggy? Well-supported? Come to this session and find out.

You will learn:

  • What VFPA is
  • How to install it
  • Whether it can run side-by-side with VFP9 or whether it replaces it
  • What new features it gives us
  • How all this is accomplished
  • Whether it's this even a good idea to use

Prerequisites: None

Moving VFP Applications Forward

Moving VFP Applications Forward

Presenter: Rick Strahl
Level: All levels
When: Friday, October 25, 3:30 - 4:45, Elliott (R1)
Saturday, October 26, 2:00 - 3:15, Elliott (R2)

.NET Core is a new version of .NET that is cross platform, very high performance, and includes many new features and improvements over the original Windows-only .NET Framework. These versions of .NET are similar but they are not 100% compatible and .NET Core brings an entirely new development paradigm to the .NET eco system with better and more open tooling, multi-platform support and many new enhancements.

In this session, we'll take a high level look at how .NET Core works and how it is different than full framework .NET and how that affects its relationship with Visual FoxPro. In the past, FoxPro has been able to play with .NET, and that is still true—with a lot more limitations—in .NET Core. The platform isn't integrated into Windows any more nor is it even Windows-centric and it doesn't support many Windows-centric features like STA threading in the built-in frameworks. This changes the relationship with FoxPro considerably as traditional .NET tooling and approaches do not work in .NET. You can't use COM Interop with .NET Core Components (or wwDotnetBridge as is), nor easily run FoxPro components from ASP.NET Core Web applications. We'll examine a few different interop scenarios and provide some guidelines when it makes sense to use .NET Framework or .NET Core.

This session is an overview of functionality and trade offs and as such, light on code and heavy on architecture and concepts that discusses high level architecture and overall concepts.

You will learn:

  • What .NET Core is
  • How .NET Core differs from .NET Framework
  • What you can do with .NET Core using FoxPro
  • What you lose by using .NET Core vs. .NET Framework

Prerequisites: Some familiarity with .NET Platform. Some experience building .NET Interop related features is recommended but not required. This session focuses on high level guidance rather than specific coding concepts.

Moving VFP Applications ForwardTechnology and Business for the Developer

Presenter: Christof Wollenhaupt
Level: Intermediate
When: Friday, October 25, 10:00 - 11:15, Flagstaff (R1)
Saturday, October 26, 2:00 - 3:15, Flagstaff (R2)

AI, Machine Learning, and Deep Learning have replaced the cloud and agile as the new hot buzzwords. Depending on who you ask, AI will either change our life completely for the better or is the reason why the world ends in AI domination. AI investments have spun up a new race between nations, most notably between the USA and China.

In this session, we look at what Machine Learning is and how it works. We will cover how the current concept of machine learning is different from AI research in the past decades and how gamers have paved the way for today's technology.

On the practical side, we explore what tools are available to us as VFP developers. We explore cloud services that perform OCR and image content recognition, such as Google Cloud Vision API and Azure Machine Learning, but also local tools like TensorFlow, or whatever tools are in use by the time this presentation is given.

You will learn:

  • What is machine learning?
  • What are the limits of AI today?
  • What can YOU do with machine learning in your application?
  • How to sound smart when clients inquire about AI services

Prerequisites: Interest in new technologies and curiosity

Moving VFP Applications Forward

Presenter: Eric J. Selje
Level: All levels
When: Friday, October 25, 2:00 - 3:15, Flagstaff (R1)
Sunday, October 27, 10:00 - 11:15, Flagstaff (R2)

Would you be interested in a product that compiles Visual FoxPro into .NET compatible code? Well, that product doesn't exist, but there is a compelling product called X# that is working towards that goal. They've got a mature product that compiles many dialects of xBase to .NET already, and they're now actively working on VFP syntax.

In this session we'll look at X# from a Visual FoxPro developers point of view and try to answer a few questions.

You will learn:

  • How close a real FoxPro to .NET compiler is
  • Whether this is a product you can move forward with, given your current skill set
  • Whether this is even a direction you want to go

Prerequisites: None

Moving VFP Applications ForwardPre-ConferenceTechnology and Business for the Developer

Presenter: Rick Borup
Level: All levels
When: Thursday, October 24, 9:00 - 12:00, Flagstaff

While Mercurial remains a perfectly satisfactory choice for distributed version control, it's no secret that Git has become the dominant player. The acquisition of GitHub by Microsoft has accelerated the movement toward Git, particularly if you want to share or contribute to open source projects. What are your options if you are currently using Mercurial? Should you consider migrating to Git? Can you convert your existing repositories or do you have to start over from scratch? Are there tools to help you work with both Git and Mercurial? This session explores the answers to these questions and more.

You will learn:

  • How Git is similar to yet different than Mercurial
  • Why you might want to consider migrating to Git
  • About using Git for version control in VFP development
  • About using GitHub to share code and contribute to open source projects
  • About tools to work with both Mercurial and Git repositories

Prerequisites: Some experience with Mercurial is helpful but not required

Moving VFP Applications ForwardExtending VFP

Presenter: Tuvia Vinitsky
Level: Advanced
When: Friday, October 25, 11:30 - 12:45, Flagstaff (R1)
Sunday, October 27, 11:30 - 12:45, Flagstaff (R2)

Whether it is vehicle routing, time and distance calculations, or just a pretty street view, maps add a layer of capabilities and sophistication to a VFP app. However integrating a map API can seem like a daunting task. In this session, we will add maps to a VFP app and add features such as distance calculation.

You will learn:

  • GPS and Maps - Origins and Standards
  • The differences between the Google API and the Bing API
  • How to add a basic map to a VFP form
  • How to calculate and display distances
  • How to add graphical indicators
  • How to add place information along with reviews
  • The limits on APIs

Prerequisites: Strong VFP knowledge. Experience with API calls and HTTP or HTML desirable

Moving VFP Applications ForwardExtending VFP

Presenter: Eric J. Selje
Level: All levels
When: Saturday, October 26, 8:30 - 9:45, Flagstaff (R1)
Saturday, October 26, 3:30 - 4:45, Flagstaff (R2)

Did you know there is (kind of) a Visual FoxPro version 10? It's not an official Microsoft release though, but rather the work of one man!

VFP Advanced fixes over 80 bugs in VFP 9, introduces a couple of new data types, and also (drumroll please) comes in a 64-bit version.

In this session, we'll take a look at this free patch for Visual FoxPro. We'll go over some (but not all 81, as of this writing) bugs that it fixes and how he did it, discuss what being 64-bit does for us, and have a conversation about whether you want to develop and release software that uses this patch. Is it dangerous? Buggy? Well-supported? Come to this session and find out.

You will learn:

  • What VFPA is
  • How to install it
  • Whether it can run side-by-side with VFP9 or whether it replaces it
  • What new features it gives us
  • How all this is accomplished
  • Whether it's this even a good idea to use

Prerequisites: None

Solidifying VFP Development

Solidifying VFP Development

Presenter: Cathy Pountney
Level: All levels
When: Saturday, October 26, 8:30 - 9:45, Elliott (R1)
Sunday, October 27, 11:30 - 12:45, Elliott (R2)

Preparing your vertical market application for an international customer base involves a lot more than just swapping the captions with a new language. MessageBox and WAIT dialogs need to be handled differently. Hard-coded combobox values need to be handled differently. Dates, numbers, and dollar amounts need to be formatted differently. Controls may need to be resized and groups of controls may need to be realigned. Certain customer data, such as lookup tables, may need to be translated. Utilities need to be created for helping with the translation process. The list goes on and on! Even if you're not considering multi-languages ... Is your application used by various disciplines? Nomenclatures can be handled using many of these same design considerations. For example, is it "Client" or "Customer"? Is it "Part Number", "Item Number", "Product Code", or "Service Code"? Starting to get the picture? In this session, Cathy discusses a wide variety of design considerations to help guide you through the process of localizing your application.

You will learn:

  • The general concept of how to swap languages (or nomenclatures)
  • The special considerations for MessageBox and WAIT dialogs
  • The special considerations for formatting of dates, numbers, and dollar amounts
  • The special considerations for various types of controls
  • The special considerations for implementing customer-translated data
  • Lots more!!!

Prerequisites: None

Solidifying VFP DevelopmentTaking Advantage of VFPX

Presenter: Cathy Pountney
Level: Intermediate
When: Friday, October 25, 10:00 - 11:15, Elliott (R1)
Saturday, October 26, 11:30 - 12:45, Elliott (R2)

With regards to reports, VFP 9 SP2 has enormous power and extensibility. It has the ability to create custom features that can be used over and over again on numerous reports. For example, would you like the ability to easily add a watermark to reports? How about the ability to dynamically reduce the font on long text so it fits within a narrow column? The possibilities are endless and no one developer can think of them all. My fxReports reporting framework and corresponding utilities allows each of us to create our own custom features to use in our applications as well as share them with the FoxPro community. And of course, the opposite is true: you can take advantage of custom report features created by other developers. This project is part of the FoxPro Community effort on VFPX (hosted on GitHub). In this session, I'll walk through the entire concept from both sides. You'll learn how to use features developed by other developers, you'll learn how to create your own features, and you'll also learn how to share those features with other developers.

You will learn:

  • How to download and use custom report features created by others
  • How to create custom report features (e.g., watermarks on reports)
  • How to upload and share your custom report features with others

Prerequisites: Knowledge of the VFP Report Writer required. Knowledge of ReportListeners is helpful.

Solidifying VFP DevelopmentTaking Advantage of VFPXExtending VFP

Presenter: Rick Schummer
Level: All levels
When: Friday, October 25, 2:00 - 3:15, Elliott (R1)
Sunday, October 27, 8:30 - 9:45, Elliott (R2)

Rapid Application Development is a leftover buzzword from decades past. Are you as productive with VFP as you can be, or wish to be? How do other developers use the world's best database application development tool to bring applications to market quicker? Are there tips I can learn to save me 10 minutes a day or an hour a week? This session demonstrates as many tips and productivity ideas as can be crammed into a 75-minute session. As the old saying goes, there are always three ways to accomplish something in Visual FoxPro. Sometimes we only know one way and there are two other ways that are faster or better. Sometimes we don't even know that you can accomplish certain things with VFP. I am constantly amazed, even after using Visual FoxPro for more than two decades, how much I have learned just looking over the shoulder of others as they develop with this product.The session has productivity tips for developers working with all versions of VFP, but focuses on IDE tips and tricks as well as some goodies from VFPX, including a new tool from VFPX that will be introduced at the conference.

You will learn:

  • How to make better use of the VFP tools: Class Browser/Component Gallery, IntelliSense Manager, Object Browser, and Task List Manager, Task Pane, Toolbox, and Code Reference
  • How to make better use of the code editors, IntelliSense, and IntelliSenseX (VFPX)
  • Why features like Document View, List Members, Quick Info, and Macros should be at your fingertips
  • How Property Sheet productivity is improved via Property Editors.
  • How to extend the Class and Form Designers with Builders
  • How to use the Debugger more effectively
  • How to enhancing the VFP IDE to be more productive day-to-day
  • What VFPX enhancements can help

Prerequisites: None.

Solidifying VFP DevelopmentExtending VFP

Presenter: Tracy Pearson
Level: Intermediate
When: Friday, October 25, 8:30 - 9:45, Flagstaff (R1)
Saturday, October 26, 11:30 - 12:45, Flagstaff (R2)

In this session, you will learn how to implement a VFP COM object that can be consumed by another Windows application and how to register this object. This presentation demonstrates a C# application (web service, desktop application, etc.) instantiating the COM object. The COM object accesses VFP data and returns it as XML, allowing C# to consume it. We will look at how .NET 4 and .NET Core on Windows can use this object, as well as how to return errors to .NET to implement error handling. Time permitting we will demonstrate VFP updating and/or consuming a C# object.

You will learn:

  • Why we chose a COM object and not the OLEDB driver, and lessons learned.
  • How to send errors from the COM object to the C# host
  • How a COM object can be used by a C# application
  • How to use a 32-bit COM object in a 64-bit application
  • About testing, the challenges we hit, and what you can learn from our experiences

Prerequisites: None

Solidifying VFP DevelopmentExtending VFP

Presenter: Tamar E. Granor
Level: Intermediate
When: Friday, October 25, 8:30 - 9:45, Elliott (R1)
Saturday, October 26, 3:30 - 4:45, Elliott (R2)

Whether you're working in VFP, SQL Server, or MySQL, some problems come up pretty regularly. In this session, we'll look at how to solve some frequent problems using SQL. In some cases, we'll see how differences in what portion of the SQL standard is implemented make a problem easier to solve in some variants than others.

You will learn:

  • How differences in SQL versions make some problems easier or harder
  • How to work with hierarchical data
  • How to solve some other common problems

Prerequisites: Some familiarity with basic SQL syntax

Taking Advantage of VFPX

Taking Advantage of VFPXSolidifying VFP Development

Presenter: Cathy Pountney
Level: Intermediate
When: Friday, October 25, 10:00 - 11:15, Elliott (R1)
Saturday, October 26, 11:30 - 12:45, Elliott (R2)

With regards to reports, VFP 9 SP2 has enormous power and extensibility. It has the ability to create custom features that can be used over and over again on numerous reports. For example, would you like the ability to easily add a watermark to reports? How about the ability to dynamically reduce the font on long text so it fits within a narrow column? The possibilities are endless and no one developer can think of them all. My fxReports reporting framework and corresponding utilities allows each of us to create our own custom features to use in our applications as well as share them with the FoxPro community. And of course, the opposite is true: you can take advantage of custom report features created by other developers. This project is part of the FoxPro Community effort on VFPX (hosted on GitHub). In this session, I'll walk through the entire concept from both sides. You'll learn how to use features developed by other developers, you'll learn how to create your own features, and you'll also learn how to share those features with other developers.

You will learn:

  • How to download and use custom report features created by others
  • How to create custom report features (e.g., watermarks on reports)
  • How to upload and share your custom report features with others

Prerequisites: Knowledge of the VFP Report Writer required. Knowledge of ReportListeners is helpful.

Taking Advantage of VFPXExtending VFPSolidifying VFP Development

Presenter: Rick Schummer
Level: All levels
When: Friday, October 25, 2:00 - 3:15, Elliott (R1)
Sunday, October 27, 8:30 - 9:45, Elliott (R2)

Rapid Application Development is a leftover buzzword from decades past. Are you as productive with VFP as you can be, or wish to be? How do other developers use the world's best database application development tool to bring applications to market quicker? Are there tips I can learn to save me 10 minutes a day or an hour a week? This session demonstrates as many tips and productivity ideas as can be crammed into a 75-minute session. As the old saying goes, there are always three ways to accomplish something in Visual FoxPro. Sometimes we only know one way and there are two other ways that are faster or better. Sometimes we don't even know that you can accomplish certain things with VFP. I am constantly amazed, even after using Visual FoxPro for more than two decades, how much I have learned just looking over the shoulder of others as they develop with this product.The session has productivity tips for developers working with all versions of VFP, but focuses on IDE tips and tricks as well as some goodies from VFPX, including a new tool from VFPX that will be introduced at the conference.

You will learn:

  • How to make better use of the VFP tools: Class Browser/Component Gallery, IntelliSense Manager, Object Browser, and Task List Manager, Task Pane, Toolbox, and Code Reference
  • How to make better use of the code editors, IntelliSense, and IntelliSenseX (VFPX)
  • Why features like Document View, List Members, Quick Info, and Macros should be at your fingertips
  • How Property Sheet productivity is improved via Property Editors.
  • How to extend the Class and Form Designers with Builders
  • How to use the Debugger more effectively
  • How to enhancing the VFP IDE to be more productive day-to-day
  • What VFPX enhancements can help

Prerequisites: None.

Technology and Business for the Developer

Technology and Business for the DeveloperWeb and Mobile

Presenter: Tamar E. Granor
Level: All levels
When: Saturday, October 26, 10:00 - 11:15, Elliott (R1)
Sunday, October 27, 10:00 - 11:15, Elliott (R2)

PHP is one of the most commonly used languages for adding code to websites. It allows you to pre-process information and generate HTML, and it has extensions for working with a variety of databases, including SQL Server and MySQL.

In this session, we'll look at the basics of PHP as well as how to use it to add data to websites at runtime.

You will learn:

  • What parts of web development PHP is useful for
  • PHP fundamentals
  • How to use PHP to connect to SQL databases

Prerequisites: Some familiarity with HTML

Technology and Business for the DeveloperMoving VFP Applications Forward

Presenter: Christof Wollenhaupt
Level: Intermediate
When: Friday, October 25, 10:00 - 11:15, Flagstaff (R1)
Saturday, October 26, 2:00 - 3:15, Flagstaff (R2)

AI, Machine Learning, and Deep Learning have replaced the cloud and agile as the new hot buzzwords. Depending on who you ask, AI will either change our life completely for the better or is the reason why the world ends in AI domination. AI investments have spun up a new race between nations, most notably between the USA and China.

In this session, we look at what Machine Learning is and how it works. We will cover how the current concept of machine learning is different from AI research in the past decades and how gamers have paved the way for today's technology.

On the practical side, we explore what tools are available to us as VFP developers. We explore cloud services that perform OCR and image content recognition, such as Google Cloud Vision API and Azure Machine Learning, but also local tools like TensorFlow, or whatever tools are in use by the time this presentation is given.

You will learn:

  • What is machine learning?
  • What are the limits of AI today?
  • What can YOU do with machine learning in your application?
  • How to sound smart when clients inquire about AI services

Prerequisites: Interest in new technologies and curiosity

Technology and Business for the DeveloperWeb and Mobile

Presenter: Christof Wollenhaupt
Level: Intermediate, Advanced
When: Saturday, October 26, 8:30 - 9:45, Gilbert (R1)
Sunday, October 27, 10:00 - 11:15, Gilbert (R2)

One day your client tells you that there was a security review on one of the Web APIs that your application uses. The review discovered that your URLs can be intercepted, modified without detection, and replayed at any time. A security disaster, even though your application was state of the art when you wrote it 18 years ago.

You are told that you have to encode the URL using the SHA256withRSA algorithm. As you're trying to figure out what that is, you are informed that the required certificate is stored in a Java Key Store file that you and your client have no control over as that is provided by the company's IT department.

Granted, that might not be your everyday experience. However, security is increasingly becoming an issue even for in-house software as our business and our customer's IT infrastructure is more and more regulated, because software runs more and more critical infrastructure and countries around the world invest massively into the so-called cyberwar.

In this session we cover the foundations of encryption. What are certificates and how do they work? Why are some cheap and some expensive? How are they stored? How do you make use of them? What's a certificate authority? What's the interaction between certificates, encryption algorithms, and hashes. What algorithms are still considered to be secure? How to deal with code that is no longer considered to be adequate?

You will learn:

  • How certificates work
  • How to use certificates
  • How to evaluate the security of your application

Prerequisites: A desire to improve security in your applications large enough to deal with a dozen three letter acronyms

Technology and Business for the DeveloperPre-ConferenceMoving VFP Applications Forward

Presenter: Rick Borup
Level: All levels
When: Thursday, October 24, 9:00 - 12:00, Flagstaff

While Mercurial remains a perfectly satisfactory choice for distributed version control, it's no secret that Git has become the dominant player. The acquisition of GitHub by Microsoft has accelerated the movement toward Git, particularly if you want to share or contribute to open source projects. What are your options if you are currently using Mercurial? Should you consider migrating to Git? Can you convert your existing repositories or do you have to start over from scratch? Are there tools to help you work with both Git and Mercurial? This session explores the answers to these questions and more.

You will learn:

  • How Git is similar to yet different than Mercurial
  • Why you might want to consider migrating to Git
  • About using Git for version control in VFP development
  • About using GitHub to share code and contribute to open source projects
  • About tools to work with both Mercurial and Git repositories

Prerequisites: Some experience with Mercurial is helpful but not required

Technology and Business for the DeveloperPre-Conference

Presenter: Jody L. Meyer
Level: All levels
When: Thursday, October 24, 1:00 - 4:00, Flagstaff

So you have moved your software or have developed software with a VFP frontend and a SQL Server backend. That is really cool. Your customers are happy which of course makes you happy. They aren't a big shop. They don't have a resident database administrator. So, guess what?!?! Tag, you're IT! You have become their DBA.

Their SQL Server needs regular maintenance tasks to be performed such as backups, reindexing of tables, etc. The database needs to be tuned, indexes re-evaluated, processes that once used to take minutes are taking hours and perhaps days! Also, security has become a very hot topic and you need restrict access to table content.

Maintenance Plans Their SQL Server needs regular maintenance tasks to be performed such as backups, reindexing of tables, etc. These tasks are necessary to avoid performance and availability issues from occurring. It is now your responsibility to implement and automate these regular maintenance tasks.

SQL Server Indexing We all know how to build an index, but is it a well performing index? SQL Server has indexing tools to help identify indexes that can improve database performance. There are ways to monitor indexes: to see if indexes are being used, how they are behaving and how they are impacting your environment.

Implementing Security with Users, Groups and Roles You would think that implementing SQL Server database security should be a simple topic. All you want to do is to grant a specific login a specific capability such as the ability to update tables in a specific database or just view content of some tables in a specific database. However, with SQL Server, setting up security can get complicated very quickly.

You will learn:

  • What core maintenance tasks should be implemented or at least considered
  • How to backup your database
  • How to set up consistency checks
  • How to set up index maintenance
  • How to cleanup all those old backups automatically
  • How to set up Maintenance Plans
  • How to configure SQL Server Agent Settings
  • About indexing tools: Missing Index DMOs, Database Engine Tuning Advisor
  • How to monitor and analyze indexes: What to create, modify and drop
  • How SQL Server manages security
  • What principles, securables and scope are in context of SQL Server
  • What Users and Logins are and how to create them
  • What Roles are and how to create them
  • How to establish permissions and privileges
  • How to modeling schemas to support security best practices

Prerequisites: SQL Server experience

Technology and Business for the DeveloperExtending VFP

Presenter: Rick Borup
Level: All levels
When: Friday, October 25, 11:30 - 12:45, Gilbert (R1)
Sunday, October 27, 11:30 - 12:45, Gilbert (R2)

SQLite is a lightweight, open-source, cross-platform, single file SQL database engine that's perfect for many situations where you want to store and retrieve information quickly and reliably. SQLite databases are widely used by many software applications, often behind the scenes; in fact, it's likely you already have at least one SQLite database on your computer without even knowing it. As a Visual FoxPro developer, you can leverage the power and convenience of SQLite in your own applications, too. Come to this session to learn about SQLite and how to use it.

You will learn:

  • What SQLite is
  • How to download and install SQLite on a Windows computer
  • About tools for working with SQLite databases
  • About using SQL to query and edit data in a SQLite database
  • How to work with a SQLite database from Visual FoxPro
  • About suggested use cases for SQLite in VFP applications

Prerequisites: A working knowledge of Visual FoxPro and SQL

Technology and Business for the Developer

Presenter: Tracy Pearson
Level: Intermediate
When: Friday, October 25, 2:00 - 3:15, Gilbert (R1)
Saturday, October 26, 5:15 - 6:30, Gilbert (R2)

This session is a discussion about why we chose to automate the work of deploying a vertical market project. There will be a demonstration of how we use Visual Build Professional to automate the build step of VFP and .NET applications and their installers. It will demonstrate how to reuse steps and spend less time with maintenance of the automation build.

We will discuss how each of our executable files is signed to prevent the dreaded "Unknown publisher" message. We also integrate sending email and team chat (Slack/RocketChat) messages upon each build, as well as publishing new build bits to Amazon S3 and updating a web service.

You will learn:

  • Why you would want to automate your builds
  • What route we took to make it happen, and ideas we had before choosing this route
  • Why signing the executable became essential for us
  • How our recent move from VSS to Git improved our process

Prerequisites: None

Technology and Business for the Developer

Presenter: Tuvia Vinitsky
Level: All levels
When: Friday, October 25, 8:30 - 9:45, Gilbert (R1)
Sunday, October 27, 8:30 - 9:45, Gilbert (R2)

Who owns your software code? Your reusable routines? Do you know what to do to protect your software from undesired use?

Patents, copyrights, trademarks, license agreements, trade secrets, rights of employees and consultants, and more! These are aspects of software development most likely to be overlooked and misunderstood by developers both large and small—until it is too late. Knowing about these important topics is critical to ensuring the long and successful life of a software project.

In this session, Tuvia Vinitsky guides you through the maze of the U.S. legal system as it applies to software development. Please note that I am not a lawyer. Talk to your lawyer for advice regarding your specific needs.

You will learn:

  • How to determine code and project ownership
  • What patents, trademarks, and copyrights are
  • How to know if and when you need a patent, trademark, or copyright
  • How to obtain patents, trademarks, and copyright
  • The key elements of license agreements
  • What to make sure to include and what to leave out of developer and contractor agreements
  • How to proactively protect your rights
  • What to do when someone misuses your software or violates the license, patent, trademark, or copyright

Prerequisites: Software development experience

Web and Mobile

Web and Mobile

Presenter: Rick Strahl
Level: All levels
When: Friday, October 25, 11:30 - 12:45, Elliott (R1)
Saturday, October 26, 5:15 - 6:30, Elliott (R2)

VueJS is the latest in a long line of popular JavaScript client side frameworks libraries that aim to make it easier to build rich Web applications. Vue sets itself apart being smaller and simpler than most other full Single Page Application (SPA) frameworks like Angular and React, and—maybe more importantly—can be integrated into existing Web sites without a complicated build process. Vue allows for easy drop-in integration and progressive enhancements to existing static or server generated Web content without forcing developers into fully client side SPA applications. But Vue also supports a full SPA framework using the same tools that you may have seen in the other frameworks, which provides a richer model for creating components and composing of complex SPA applications.

In this session, I'll demonstrate the basics of Vue in plain Web pages using standard ES5 JavaScript code that we're all familiar with to start with by adding some rich data binding features to an existing HTML page. I'll demonstrate the core features of Vue including models, data binding and messaging using these simple examples. We then look at creating a small application using a full SPA model using the Vue CLI and using the full build process that is provided through the Vue CLI. The features demonstrated are generic and mostly work with HTML content only, but I'll also provide a server REST service using Web Connection to provide FoxPro data to one of the samples.

You will learn:

  • What Vue is and how it is different than other frameworks
  • How to integrate Vue into existing Web content using standard ES5 JavaScript
  • How to create full SPA applications using the Vue CLI
  • How to consume server data from the Web Browser

Prerequisites: Familiarity with HTML, CSS and JavaScript

Web and MobileTechnology and Business for the Developer

Presenter: Tamar E. Granor
Level: All levels
When: Saturday, October 26, 10:00 - 11:15, Elliott (R1)
Sunday, October 27, 10:00 - 11:15, Elliott (R2)

PHP is one of the most commonly used languages for adding code to websites. It allows you to pre-process information and generate HTML, and it has extensions for working with a variety of databases, including SQL Server and MySQL.

In this session, we'll look at the basics of PHP as well as how to use it to add data to websites at runtime.

You will learn:

  • What parts of web development PHP is useful for
  • PHP fundamentals
  • How to use PHP to connect to SQL databases

Prerequisites: Some familiarity with HTML

Web and MobileTechnology and Business for the Developer

Presenter: Christof Wollenhaupt
Level: Intermediate, Advanced
When: Saturday, October 26, 8:30 - 9:45, Gilbert (R1)
Sunday, October 27, 10:00 - 11:15, Gilbert (R2)

One day your client tells you that there was a security review on one of the Web APIs that your application uses. The review discovered that your URLs can be intercepted, modified without detection, and replayed at any time. A security disaster, even though your application was state of the art when you wrote it 18 years ago.

You are told that you have to encode the URL using the SHA256withRSA algorithm. As you're trying to figure out what that is, you are informed that the required certificate is stored in a Java Key Store file that you and your client have no control over as that is provided by the company's IT department.

Granted, that might not be your everyday experience. However, security is increasingly becoming an issue even for in-house software as our business and our customer's IT infrastructure is more and more regulated, because software runs more and more critical infrastructure and countries around the world invest massively into the so-called cyberwar.

In this session we cover the foundations of encryption. What are certificates and how do they work? Why are some cheap and some expensive? How are they stored? How do you make use of them? What's a certificate authority? What's the interaction between certificates, encryption algorithms, and hashes. What algorithms are still considered to be secure? How to deal with code that is no longer considered to be adequate?

You will learn:

  • How certificates work
  • How to use certificates
  • How to evaluate the security of your application

Prerequisites: A desire to improve security in your applications large enough to deal with a dozen three letter acronyms

Web and Mobile

Presenter: Rick Strahl
Level: All levels
When: Friday, October 25, 5:15 - 6:30, Gilbert

Traditionally Web Connection has not been easy to install on a live server due to the variety of components that need to be installed and moved to a running server. In recent versions Web Connection has introduced a number of tools and features that make it much easier to package and publish files to a server and automate much of the configuration process.

In this session I'll demonstrate these new features by creating a small sample application and then publishing it onto a new, clean virtual machine server from scratch. I'll show how to test your application locally and get it ready for deployment, use the new tooling to package up files, copy files to the server, and then use the new built-in configuration tools to configure the server and run it. Finally I'll also show how to make changes and update the running application on a live server.

This session also covers hosting options and what hardware or virtual machine features you need to look at along with some notes on various host providers.

This sessions both discusses the concepts and pieces needed for publishing and then provides a real-time walk through of the configuration process on a live virtual machine hosted in the cloud.

You will learn:

  • How to build and test Web Connection locally
  • How to prepare for publishing an application
  • How to get files moved to a server initially and subsequently
  • How install IIS quickly on the server
  • How install and configure your application quickly on the server
  • How to manage and update your application on the server

Prerequisites: Some familiarity with Web Connection is recommended as we talk about Web Connection applications, but the concepts and features are easily accessible without any other pre-requisites

Post-Conference

Platinum Sponsors
Diamond Sponsors
Gold Sponsors