October 16-19, 2014
SanTan Elegante Conference Center
Gilbert, AZ
There are 7 conference tracks at Southwest Fox 2014. "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.
Keynote
Presenter: Rick Hodder
Group Mind? Yes And? Mind Meld? Whose Line Is It, Anyway?
Am I at the right keynote? Yes, you are, and you are going to be an active part of this keynote, so don't get too comfortable in your seat!
The terms come from improv (like you may have seen on the show Whose Line Is It Anyway?). But improv is not just for comedy! At its most basic level, improv is pure teamwork.
With little or no preparation, a suggestion is accepted from an audience, and a group of people immediately start working together to use the suggestion, all with confidence, listening, assertiveness, and fearlessness.
The techniques of improvisation can be applied in many situations in life and work in general, and particularly in development. Recent shifts in development methodologies and practices (Agile, for example) have brought personal dynamics more deeply into the process, often stretching the comfort zones of developers. (There's a reason they call us geeks).
This keynote will use improv techniques to create a fun, non-threatening environment where we can explore teamwork, and improve listening and thinking on your feet.
Pre-Conference
Presenter: Bo Durban
Level: Intermediate
When: Thursday, October 16, 9:00 - 12:00, Gilbert
So you have a mature desktop app (or maybe several) but you know you need to move to the web, right? Hey it is 2014, everyone is on the web but you, right? And hey, everyone is mobile too, right? So what are you going to do? Rewrite this mature application you've worked on for years, with tons of little features that everyone is used to, and then try to force some HTML and JavaScript to act like your desktop app? Then you have the fun task of forcing your users to update to it while listening to them complain about how slow the web is for data entry and how they like the old version better. Sounds not so fun...and oh so expensive...
So, don't just try to replace your desktop application with a web-only version. Extend your application to the web. Provide a web site that lets users access parts of your application on the web via their personal electronic devices. Most users just want to have read-only access to some of their data remotely. Only a few want simple data entry screens while they are out of the office. Your users will appreciate the add-ons without the disruption to their business.
This session will provide you with some ideas and tools for extending your desktop application to the web with an emphasis on support for mobile devices. This includes data synchronization techniques between your desktop and web applications as well as ideas for hosting your web application.
You will learn:
Prerequisites: Some HTML experience a plus
Presenter: Christof Wollenhaupt
Level: All levels
When: Thursday, October 16, 9:00 - 12:00, Flagstaff
Migrating data with SQL Server is easy: Export the source database, then bulk import into the destination. No problem. But then reality hits hard. For one migration project the first estimates to migrate 350 GB of data in 50 branch offices in two countries with three quarters of a million projects was 250 hours. But there was only a weekend. And bad data that has been collected over the past 15 years. And not enough people to provide support for 50 offices on Monday after migration weekend. A new approach was needed.
In this session I'm going to share what I've learned on a huge SQL server migration project. We talk about capturing data changes, finding bottlenecks, my misunderstanding of how SQL Server really works, the important difference between heap and clustered indexes, how and when SQL Server locks, optimizing transactions, rarely used features like common table expressions, interpreting the execution plan, using hints correctly, and more. Some things might be known to you; some, I hope, are new.
You will learn:
Prerequisites: None
Presenter: Frank Perez
Level: All levels
When: Thursday, October 16, 1:00 - 4:00, Flagstaff
Microsoft SQL Server is probably the most common Relational DBMS for Visual FoxPro developers that need a back-end database server, with MySQL being the second. But there is a third option that you should consider: PostgreSQL. In this session I will discuss some of the pros and cons of Microsoft SQL Server vs. PostgreSQL. I will show you how to get started with each and talk about some of the tools and options that are available.
You will learn:
Prerequisites: None
Presenter: Stephen J. Bodnar
Level: Intermediate
When: Thursday, October 16, 1:00 - 4:00, Gilbert
Over the years, getting applications to "talk" to each other has been difficult at best. Exchanging data between applications has its own set of challenges. Historically, an API or Application Programming Interface has been some library, construction kit, or documentation that has let us interact with other software or hardware. Depending on the specifics, we might have had to work with a specific language to work with the API. If we were lucky, we might find that someone had written a wrapper that allowed us to work in our favorite language and make calls to the wrapper which then interacted with the API.
Today, in web development, the API is commonly a set of defined requests and responses delivered over HTTP that allow us to interact with some other web-based entity. We do this by using standard HTTP verbs like GET, POST, PUT and DELETE to exchange JSON or XML data with such services.
In this extended session, we will explore modern day APIs from top to bottom. We'll start by looking at what makes a good API. We'll explore the concept of RESTful interfaces and learn important concepts for consuming and creating useful Web APIs. We'll talk about some of the many APIs that are out there for us to use to enhance our applications. We'll look at some of the things we might want to do with online services such as DropBox, Google, Amazon and Twitter. We'll then take deeper dives into two powerful services as examples of how we can use APIs to add really robust features to our existing applications.
I'll call you. Or text you. From my app. Or something.
The first API we'll look at is Twilio which is used by big players like Hulu, Intuit, The Home Depot and many others to handle communications tasks such as sending and receiving text messages and phone calls, voice broadcasting, automating polls and surveys and much more. We'll look at the API and work with the code to demonstrate how a RESTful API can let us extend our applications and incorporate this cloud-based communications service. We'll look at a couple scenarios, like having an app send customers a text message when their order has been processed or when their table is ready. We'll look at examples in C# and we'll also talk about what it takes to make this work with Visual FoxPro.
Get Paid!
Our second deep dive will explore the Stripe API for accepting and managing online payments. If you've ever had to accept payments in an app or website before, you know it can be a nightmare. Between merchant accounts and middle-men, there are a lot of places where things can go wrong and get expensive.
We'll look at what it takes to accept payments online as a single one-time payment or automatically recurring subscriptions. We'll also spend some time on the Stripe website, looking at the dashboard, payments, customers and tools for setting up subscriptions and coupons. Again, we'll look at most of the examples in C#, but also look at what it would take to implement this in a VFP app.
By the end of this session you should have a good idea of the kind of power today's APIs offer—in terms of taking advantage of a plethora of available services, as well as the possibility of making our services available to others.
You will learn:
Prerequisites: None
Extending VFP
Presenter: Jim Nelson
Level: All levels
IntellisenseX is a direct descendant of ISX.PRG, written by Christof Wollenhaupt (with help from many others), who started on it fifteen years ago.
IntellisenseX provides drop-down lists for PEMs from objects and field names from tables for a wide range of objects, tables, and data objects not addressed by FoxPro's native Intellisense. The drop-down lists show additional information in extra column(s),and can be filtered using "match-anywhere" (just a $) to reduce the number of items in the list.
We'll start by showing how IntellisenseX is installed, show how it works duplicating native Intellisense for PEMs of objects in the code window and command window, and then into the murky area where it does so for those cases where native Intellisense might be expected to work, but does nothing. Then we will move onto new ground—uses in WITH/ENDWITH blocks, references to variables not yet defined with LOCAL ... AS ..., uses in PRG-based classes, and objects from an object factory.
Our attention will then turn to how it handles fields from tables (something ignored by native Intellisense outside of the command window). We will show how tables can be referenced in code windows, including tables that are not yet open; how tables can be accessed by their aliases when referenced in code (USE .... ALIAS ...,); how to see the fields for aliases used in SELECT statements; and how to see fields from a SQL Server database for use in SELECT statements.
Finally, we will delve into the use of the Alias Dictionary, which allows you to create application-wide aliases for both objects and tables. This simple table provides some remarkable and unexpected capabilities.
IntellisenseX is highly customizable and descriptions of the various options and plug-ins used by IntellisenseX will be interwoven into the session. IntellisenseX is delivered by and integrated with Thor. While installation of Thor will not be addressed during the session, there will be help available outside the session for anybody who needs help installing or using it.
You will learn:
Prerequisites: None
Presenter: Tamar E. Granor
Level: Intermediate, Advanced
The subset of SQL in Visual FoxPro is useful for many tasks. But there's much more to SQL than what VFP supports. Those additions make it easy to do a number of tasks that are difficult in VFP.
In this session, we'll solve some common problems, using SQL elements that are supported by SQL Server, but not by VFP. Among the problems we'll explore are combining a set of values contained in multiple records into a delimited list in a single record, working with hierarchical data like corporate organization charts, finding the top N records for each group in a result, and including summary records in grouped data.
You will learn:
Prerequisites: Some familiarity with SQL, either VFP's or T-SQL
Presenter: Toni M. Feltman
Level: Intermediate
Web APIs are one way to enable distributed systems to interact with each other over HTTP. In the past, SOAP-based Web Services were the Web API of choice. Today developers prefer to use RESTful Web APIs to enable system to communicate. Our Visual FoxPro applications are just one of the types of systems that may need to communicate with others over the web. It is very possible, and pretty easy, to do so using RESTful APIs. In order to take advantage of all that is available using the web you must first understand Web APIs, know how to find them (or write them) and then plug them into your applications.
You will learn:
Prerequisites: Some XML
Presenter: Rick Schummer
Level: All levels
Microsoft introduced Visual FoxPro's highly extensible IntelliSense capability 14 years ago with the release of Visual FoxPro 7.0. I remember seeing the first live demo of IntelliSense at DevCon and recall the chills it sent up my spine because I knew this new feature would instantly make me more productive. This single VFP feature has been heralded as "the greatest thing since sliced bread" and is, at least in my mind, the single biggest productivity boost to developers. Yet to this day I feel I under-use it and wish I would take the time to make things better for myself.
This session reveals how IntelliSense works using scripts and settings, and how it can be implemented, using real world examples authored by numerous Visual FoxPro developers. The implementation will be demonstrated and analyzed with the number one goal of inspiring you to boost your own productivity in the VFP IDE, and later to share those items that might help other developers in the FoxPro community.
Discover the details needed to take advantage of Quick Info, Member Lists, Command and Keyword expansion, Types, and MRU Lists. Techniques include leveraging the FoxCode object, text merge, and more. If time allows, we will explore other IntelliSense implementations and extensions like MY, IntellisenseX, ISX, and FoxCodePlus.
You will learn:
Prerequisites: Desire to be more productive in the VFP IDE, and basic understanding of IntelliSense inside VFP.
Presenter: Bo Durban
Level: Intermediate
The GDIPlusX Library gives VFP developers a hook into a powerful graphics library already built into the operating system. It is very easy to use, optimized for speed, and because it borrows its syntax from the popular .NET System.Drawing namespace, it opens up a huge pool of real world samples all over the internet.
This session focuses on aspects of the library that deal with managing images: from organizing, sorting and storing images in a library, to manipulating, enhancing and combining images. There are already many powerful tools for managing images, such as Picasa and Flicker; in this session, we will also cover how to programmatically interface with these and similar tools to provide even greater control of your image libraries.
As we go through the session, I want to show how easy it is to convert code written in .NET to use VFP and the GDIPlusX library.
You will learn:
Prerequisites: Some GDIPlusX experience useful, but not required
Presenter: Matthew J. Olson
Level: Beginner
This session is geared toward showing people some best practices for dealing with data. Everyone agrees that buffering data is great, they just disagree on how to do it. In this session, I make the case for using Business Objects to not only handle buffering but to do so much more, like handling VFP and SQL Server data, moving between records, and creating new records.
You will learn:
Prerequisites: None
Presenter: Toni M. Feltman
Level: Beginner, Intermediate
I remember way back around 1994 when people started talking about the concept of business objects and application layers. I know that when I spoke on the topic, many people looked at me like I was completely nuts. Why would anyone want to add such layers of complexity to an application? Fast forward a couple of years (or decades) and we have complex business applications that are screaming for features that FoxPro can't provide such as Metro interfaces, offline databases, interactions with specialized hardware such as cameras and GPS. I am really glad that I added that layer of complexity back then because moving portions of my applications to other platforms is significantly easier than it could have been. But what about you? How can you retrofit monolithic FoxPro applications into an n-tier model in an efficient manner that does not require extensive rewrite or testing?
You will learn:
Prerequisites: None
Presenter: Rick Borup
Level: All levels
We all know that VFP is great for database apps, but did you know it's also a superb tool for working with strings? In my own work I frequently encounter situations that require importing or exporting data in many different flat file formats. VFP's wide range of string functions and low-level file commands make it easy for developers to handle anything from lowly CSV files to hierarchical XML. Come to this session to learn some tricks and traps based on real-world experiences.
You will learn:
Prerequisites: None
Presenter: Christof Wollenhaupt
Level: All levels
All the talk about iPad-sized tablets and Windows RT, Store, Modern UI—whatever Microsoft is calling them at the time of the conference—apps make it easy to forget that Microsoft has shipped tablet-enabled Windows operating systems for more than a decade with Windows XP being the first version.
A notebook with a touch screen, Windows Vista/7/8 and Visual FoxPro with a few controls is all you need to create a mobile application. There is no need to start programming Android or iOS devices, or to learn a HTML/CSS/JavaScript/C#/C++/XAML to write Windows RT applications. Even Intel-based tablet computers have become so small that they can easily be carried around... And they run Visual FoxPro.
In this session we talk about adding tablet PC-specific features to your application. This includes capturing touch events, handling pen input, using text recognition, capturing input, letting users sign documents, filling out forms, and a whole bunch of practical uses for tablets in a business application.
You will learn:
Prerequisites: None
Presenter: Kevin Ragsdale
Level: Intermediate
There's a lot to learn about locales, languages, code pages, collation sequences and more if you develop international apps. So much to learn, especially if multi-lingual means your application only speaks English (like mine do). But if your application reaches an international audience, at some point your customers may need the ability to save, retrieve and display data in multiple languages—and in many cases, multiple languages at the same time.
In this session, we'll look at using SQLite as our storage mechanism for a desktop Visual FoxPro application, which will provide quick and easy easier access to data stored in multiple languages.
We'll also look at using an ActiveX control to capture and share data in the app, a couple of built-in Visual FoxPro functions and commands, and tying things together with the IE Web Browser control and DataTables (a plugin "grid" for jQuery) for displaying and sorting Unicode data.
Note: This session is not about localizing the UI of an application!
You will learn:
Prerequisites: Working knowledge of Visual FoxPro
Presenter: Rick Schummer
Level: All levels
VFPX, one of many active open source projects hosted on CodePlex, has some terrific tools to enhance the Visual FoxPro Interactive Development Environment (IDE) and components to impress your customers in the applications you write for them. This session covers some of the recent updates and additions to VFPX in 2014.
We are going to cover as many of these tools as time allows. We'll:
The session will vary between deeper dives and overviews depending on conference attendee needs and the work by the VFPX project managers as the year progresses.
Note, this list is subject to changes based on the releases by VFPX project managers and what other presenters want to talk about at the conference.
You will learn:
Prerequisites: None
Presenter: Jim Nelson
Level: All levels
Why Thor? Because the IDE has been stagnant since version 9 was released about a decade ago, when its features were already lagging behind what was available in other environments; the IDE has the feel from a time long ago. The intricacies of SCXs and VCXs and the inheritance model make for a complex environment in which we have become accustomed to making do with the tools provided, as if that is all we could hope for. Thor offers a wide number of tools to enhance the IDE (and thus your productivity). Some of the concepts implemented in these tools came from other environments (most notably Visual Studio) while others come from brainstorming about the the peculiar needs for handling SCXs and VCXs.
VFP's IDE provides us with manual tools; Thor offers power tools instead.
We will start by installing Thor and then show how you can begin using a wide range of tools that will simplify your programming life, including:
Along the way, we will show how you can use Thor to make these tools available to you in the way that seems most natural to you, using any combination of hot keys, system menu pads, pop-up menus (akin to Multi-Key Chords in Visual Studio), Tool Launcher, and the Thor toolbar.
You will learn:
Prerequisites: None
Presenter: Matthew J. Olson
Level: Beginner
Customer: "I don't want to learn HTML!"
Technician: "Well, then your descriptions will not look how you want them to look online."
Customer: "Well, then I am going to go buy someone else's product!"
Don't let this happen to you. WYSIWYG editors do exist to allow people to generate the HTML that they need. Most integrate into a website and require javascript. This session will show you how to put one into into your VFP application without costing you a penny.
You will learn:
Prerequisites: Some HTML
Solidifying VFP Development
Presenter: Rick Schummer
Level: All levels
Microsoft introduced Visual FoxPro's highly extensible IntelliSense capability 14 years ago with the release of Visual FoxPro 7.0. I remember seeing the first live demo of IntelliSense at DevCon and recall the chills it sent up my spine because I knew this new feature would instantly make me more productive. This single VFP feature has been heralded as "the greatest thing since sliced bread" and is, at least in my mind, the single biggest productivity boost to developers. Yet to this day I feel I under-use it and wish I would take the time to make things better for myself.
This session reveals how IntelliSense works using scripts and settings, and how it can be implemented, using real world examples authored by numerous Visual FoxPro developers. The implementation will be demonstrated and analyzed with the number one goal of inspiring you to boost your own productivity in the VFP IDE, and later to share those items that might help other developers in the FoxPro community.
Discover the details needed to take advantage of Quick Info, Member Lists, Command and Keyword expansion, Types, and MRU Lists. Techniques include leveraging the FoxCode object, text merge, and more. If time allows, we will explore other IntelliSense implementations and extensions like MY, IntellisenseX, ISX, and FoxCodePlus.
You will learn:
Prerequisites: Desire to be more productive in the VFP IDE, and basic understanding of IntelliSense inside VFP.
Presenter: Matthew J. Olson
Level: Beginner
This session is geared toward showing people some best practices for dealing with data. Everyone agrees that buffering data is great, they just disagree on how to do it. In this session, I make the case for using Business Objects to not only handle buffering but to do so much more, like handling VFP and SQL Server data, moving between records, and creating new records.
You will learn:
Prerequisites: None
Presenter: Rick Borup
Level: All levels
Do your applications suffer from Stale Software Syndrome? When you crack open a section of existing code for some simple maintenance work, are you reminded that you've frequently said "I really need to clean this up some day"? Does a simple enhancement request end up taking hours instead of minutes because you never did clean up that section of code? I'd wager these are common occurrences for most developers, and the longer these situations linger the worse they can get. In this session we'll explore how and why code gets stale, and how refactoring can be an effective solution.
You will learn:
Prerequisites: Experience developing VFP apps
Presenter: Toni M. Feltman
Level: Beginner, Intermediate
I remember way back around 1994 when people started talking about the concept of business objects and application layers. I know that when I spoke on the topic, many people looked at me like I was completely nuts. Why would anyone want to add such layers of complexity to an application? Fast forward a couple of years (or decades) and we have complex business applications that are screaming for features that FoxPro can't provide such as Metro interfaces, offline databases, interactions with specialized hardware such as cameras and GPS. I am really glad that I added that layer of complexity back then because moving portions of my applications to other platforms is significantly easier than it could have been. But what about you? How can you retrofit monolithic FoxPro applications into an n-tier model in an efficient manner that does not require extensive rewrite or testing?
You will learn:
Prerequisites: None
Presenter: Rick Borup
Level: All levels
We all know that VFP is great for database apps, but did you know it's also a superb tool for working with strings? In my own work I frequently encounter situations that require importing or exporting data in many different flat file formats. VFP's wide range of string functions and low-level file commands make it easy for developers to handle anything from lowly CSV files to hierarchical XML. Come to this session to learn some tricks and traps based on real-world experiences.
You will learn:
Prerequisites: None
Presenter: Doug Hennig
Level: Intermediate, Advanced
Deployment of your application is easily as important as the rest of the development cycle since it's the first encounter your users have with the application. This session looks at some new ideas for application deployment, including creating a workstation-only installer, installing your application on a server without requiring a workstation installation (zero footprint deployment), and how to update your applications over the Internet.
You will learn:
Prerequisites: Basic understanding of VFP application development
Presenter: Tamar E. Granor
Level: All levels
I love to watch other people work at their computers. Every user makes a unique set of choices about when to use the mouse and when to use the keyboard, whether to use the menu or a keyboard shortcut, and so forth. But people often get set in their ways, and continue to do something one way when there's a much more efficient way to do it.
The same thing applies to Visual FoxPro. It's been said that if you can do something at all, you can do it three ways. But most of us learn how to do something and move on, even if a different way is more efficient or more effective. When new ways of doing things come along, we don't always pay attention to them.
In this session, we'll look at a variety of ways to work smarter in VFP. Some apply to the IDE, while others address the language. In the tradition of Drew Speedie, we'll cover as many of these tips and tricks as time permits.
You will learn:
Prerequisites: Some VFP experience
Taking Advantage of VFPX
Presenter: Jim Nelson
Level: All levels
IntellisenseX is a direct descendant of ISX.PRG, written by Christof Wollenhaupt (with help from many others), who started on it fifteen years ago.
IntellisenseX provides drop-down lists for PEMs from objects and field names from tables for a wide range of objects, tables, and data objects not addressed by FoxPro's native Intellisense. The drop-down lists show additional information in extra column(s),and can be filtered using "match-anywhere" (just a $) to reduce the number of items in the list.
We'll start by showing how IntellisenseX is installed, show how it works duplicating native Intellisense for PEMs of objects in the code window and command window, and then into the murky area where it does so for those cases where native Intellisense might be expected to work, but does nothing. Then we will move onto new ground—uses in WITH/ENDWITH blocks, references to variables not yet defined with LOCAL ... AS ..., uses in PRG-based classes, and objects from an object factory.
Our attention will then turn to how it handles fields from tables (something ignored by native Intellisense outside of the command window). We will show how tables can be referenced in code windows, including tables that are not yet open; how tables can be accessed by their aliases when referenced in code (USE .... ALIAS ...,); how to see the fields for aliases used in SELECT statements; and how to see fields from a SQL Server database for use in SELECT statements.
Finally, we will delve into the use of the Alias Dictionary, which allows you to create application-wide aliases for both objects and tables. This simple table provides some remarkable and unexpected capabilities.
IntellisenseX is highly customizable and descriptions of the various options and plug-ins used by IntellisenseX will be interwoven into the session. IntellisenseX is delivered by and integrated with Thor. While installation of Thor will not be addressed during the session, there will be help available outside the session for anybody who needs help installing or using it.
You will learn:
Prerequisites: None
Presenter: Bo Durban
Level: Intermediate
The GDIPlusX Library gives VFP developers a hook into a powerful graphics library already built into the operating system. It is very easy to use, optimized for speed, and because it borrows its syntax from the popular .NET System.Drawing namespace, it opens up a huge pool of real world samples all over the internet.
This session focuses on aspects of the library that deal with managing images: from organizing, sorting and storing images in a library, to manipulating, enhancing and combining images. There are already many powerful tools for managing images, such as Picasa and Flicker; in this session, we will also cover how to programmatically interface with these and similar tools to provide even greater control of your image libraries.
As we go through the session, I want to show how easy it is to convert code written in .NET to use VFP and the GDIPlusX library.
You will learn:
Prerequisites: Some GDIPlusX experience useful, but not required
Presenter: Rick Schummer
Level: All levels
VFPX, one of many active open source projects hosted on CodePlex, has some terrific tools to enhance the Visual FoxPro Interactive Development Environment (IDE) and components to impress your customers in the applications you write for them. This session covers some of the recent updates and additions to VFPX in 2014.
We are going to cover as many of these tools as time allows. We'll:
The session will vary between deeper dives and overviews depending on conference attendee needs and the work by the VFPX project managers as the year progresses.
Note, this list is subject to changes based on the releases by VFPX project managers and what other presenters want to talk about at the conference.
You will learn:
Prerequisites: None
Presenter: Jim Nelson
Level: All levels
Why Thor? Because the IDE has been stagnant since version 9 was released about a decade ago, when its features were already lagging behind what was available in other environments; the IDE has the feel from a time long ago. The intricacies of SCXs and VCXs and the inheritance model make for a complex environment in which we have become accustomed to making do with the tools provided, as if that is all we could hope for. Thor offers a wide number of tools to enhance the IDE (and thus your productivity). Some of the concepts implemented in these tools came from other environments (most notably Visual Studio) while others come from brainstorming about the the peculiar needs for handling SCXs and VCXs.
VFP's IDE provides us with manual tools; Thor offers power tools instead.
We will start by installing Thor and then show how you can begin using a wide range of tools that will simplify your programming life, including:
Along the way, we will show how you can use Thor to make these tools available to you in the way that seems most natural to you, using any combination of hot keys, system menu pads, pop-up menus (akin to Multi-Key Chords in Visual Studio), Tool Launcher, and the Thor toolbar.
You will learn:
Prerequisites: None
Technology and Business for the Developer
Presenter: Phil Sherwood
Level: All levels
If you're breathing, then you fall into the category of someone who needs help with productivity. Everyone does. This is a quick look at the method espoused by David Allen in his book "Getting Things Done - The Art of Stress Free Productivity" along with some alternatives.
I've been using his methods for a few months now and have found increased focus and greater productivity. I have A.D.D., so that's saying a lot.
If you're running your own business or even if you work for someone else, how do you find time to get all the things done that you know you need to do? How do you even remember them?
This session will give you some tools that you can start using immediately to get organized and to start getting things done.
You will learn:
Prerequisites: None
Presenter: Christof Wollenhaupt
Level: All levels
When: Thursday, October 16, 9:00 - 12:00, Flagstaff
Migrating data with SQL Server is easy: Export the source database, then bulk import into the destination. No problem. But then reality hits hard. For one migration project the first estimates to migrate 350 GB of data in 50 branch offices in two countries with three quarters of a million projects was 250 hours. But there was only a weekend. And bad data that has been collected over the past 15 years. And not enough people to provide support for 50 offices on Monday after migration weekend. A new approach was needed.
In this session I'm going to share what I've learned on a huge SQL server migration project. We talk about capturing data changes, finding bottlenecks, my misunderstanding of how SQL Server really works, the important difference between heap and clustered indexes, how and when SQL Server locks, optimizing transactions, rarely used features like common table expressions, interpreting the execution plan, using hints correctly, and more. Some things might be known to you; some, I hope, are new.
You will learn:
Prerequisites: None
Presenter: Phil Sherwood
Level: All levels
Have you ever thought about owning and running your own software business? This session will cover the tools and techniques I've used in running a vertical market software company for the last 20 years.
We'll discuss topics such as
We won't go into depth on any topic, but you should come away with some ideas of how a software business works and some ideas on what to do and use as well as some things not to do.
You will learn:
Prerequisites: A desire to be your own boss.
Presenter: Spyros Bobby Drakos
Level: All levels
Thanks to the capabilities of both the XBase++ and Visual FoxPro languages, developers are able to write extremely robust and time saving software. But while the bulk of the developer's time is spent mapping out, designing and writing the code necessary to achieve the goals of their software projects, clients and users spend the bulk of their time staring at the User Interfaces (UI) that the developer spends the least amount of time designing.
Historically, the purpose of the UI was to present the user with information and choices with emphasis on elements such as keyboard interaction to get a job done. But times have changed. Today's software is more about being having the ability to be instantly used and understood by untrained people. That means that the UI of today should anticipate the user's needs and present them with the objects needed to achieve their goals.
You will learn:
Prerequisites: Experience with XBase++ or Visual FoxPro code
Presenter: Doug Hennig
Level: Intermediate, Advanced
Windows PowerShell has been included with the operating system since Windows 7 and is available for download for Windows XP and Vista. What is PowerShell? It's Microsoft's task automation scripting framework. PowerShell isn't just a replacement for batch files; it can do a lot more than batch files ever could. This session looks at PowerShell, including why you should start using it and how to create PowerShell scripts.
You will learn:
Prerequisites: None
Moving VFP Applications Forward
Presenter: Eric Lendvai
Level: Intermediate
Currently, I am working towards converting one of my VFP Web applications to Xbase++ using the new transpiler.
During this session, I will take a small-scaled VFP application and discuss my strategy for conversion while still maintaining the VFP version of the commercial app. I will demonstrate how the conversion of more than 1,000,000 lines of code is attainable, including refactoring access to more than 540 tables and 2500 web pages. Since Xbase++ has a new web engine that can run on IIS and Apache, you will see how to run under this state-of-the-art environment. I'll also review how to access DBF and PostgreSQL natively from within Xbase++.
You will learn:
Prerequisites: Knowledge of VFP and HTML
Presenter: Toni M. Feltman
Level: Intermediate
Web APIs are one way to enable distributed systems to interact with each other over HTTP. In the past, SOAP-based Web Services were the Web API of choice. Today developers prefer to use RESTful Web APIs to enable system to communicate. Our Visual FoxPro applications are just one of the types of systems that may need to communicate with others over the web. It is very possible, and pretty easy, to do so using RESTful APIs. In order to take advantage of all that is available using the web you must first understand Web APIs, know how to find them (or write them) and then plug them into your applications.
You will learn:
Prerequisites: Some XML
Presenter: Kevin Ragsdale
Level: Intermediate
Three years ago, we looked at multi-threading Visual FoxPro applications using a helper utility. This year, we'll look at using multi-threaded Visual FoxPro DLLs from within ASP.NET, which provides true multi-threading without the use of helpers.
In this session, we'll look at real-world examples that use Visual FoxPro multi-threaded DLLs with ASP.NET to retrieve and send data back and forth from the internet to our apps—data which can be stored almost any backend, including SQL Server, SQLite and Visual FoxPro free tables and databases.
You will learn:
Prerequisites: Working knowledge of creating multi-threaded DLLs with Visual Foxpro, and some knowledge of ASP.NET
Presenter: Frank Perez
Level: All levels
When: Thursday, October 16, 1:00 - 4:00, Flagstaff
Microsoft SQL Server is probably the most common Relational DBMS for Visual FoxPro developers that need a back-end database server, with MySQL being the second. But there is a third option that you should consider: PostgreSQL. In this session I will discuss some of the pros and cons of Microsoft SQL Server vs. PostgreSQL. I will show you how to get started with each and talk about some of the tools and options that are available.
You will learn:
Prerequisites: None
Presenter: Rick Borup
Level: All levels
Do your applications suffer from Stale Software Syndrome? When you crack open a section of existing code for some simple maintenance work, are you reminded that you've frequently said "I really need to clean this up some day"? Does a simple enhancement request end up taking hours instead of minutes because you never did clean up that section of code? I'd wager these are common occurrences for most developers, and the longer these situations linger the worse they can get. In this session we'll explore how and why code gets stale, and how refactoring can be an effective solution.
You will learn:
Prerequisites: Experience developing VFP apps
Presenter: Kevin Ragsdale
Level: Intermediate
There's a lot to learn about locales, languages, code pages, collation sequences and more if you develop international apps. So much to learn, especially if multi-lingual means your application only speaks English (like mine do). But if your application reaches an international audience, at some point your customers may need the ability to save, retrieve and display data in multiple languages—and in many cases, multiple languages at the same time.
In this session, we'll look at using SQLite as our storage mechanism for a desktop Visual FoxPro application, which will provide quick and easy easier access to data stored in multiple languages.
We'll also look at using an ActiveX control to capture and share data in the app, a couple of built-in Visual FoxPro functions and commands, and tying things together with the IE Web Browser control and DataTables (a plugin "grid" for jQuery) for displaying and sorting Unicode data.
Note: This session is not about localizing the UI of an application!
You will learn:
Prerequisites: Working knowledge of Visual FoxPro
Presenter: Eric Lendvai
Level: Intermediate
Since March of 2007, a multitude of developers have contemplated over and speculated about what to do with their VFP applications. A substantial number of FoxPro developers have invested over two decades in learning and using FoxPro and Visual FoxPro for a variety of purposes. Many new languages have appeared on the market, but none have truly delivered a genuine 4GL language.
Two years ago at Southwest Fox, I purposely attended most of the Xbase ++ presentations to see if there would finally be a viable future for VFP developers, and what a surprise it was! Not only did I see a future for VFP developers, but I also discovered features that we could only dream about in years past.
Due to the enhanced architecture of Xbase++, it is a true 4GL compiler, and while there are only slight differences in the syntax, it provides a lot of new options. In order to take full advantage of Xbase++, it is a necessity for VFP developers to re-think some of the existing development patterns. It is best to think of Xbase++ as an enhanced version of VFP that incorporates many features from other modern languages. As a true compiler, you get a substantially higher speed than before, in addition to code protection.
You will learn:
Prerequisites: Knowledge of VFP
Presenter: Steffen F. Pirsig
Level: All levels
In this session we will talk about Xbase++ today and tomorrow. Attendees will learn how the new delivery approach of Xbase++ 2.0 fits into the whole picture of our vision of continuous delivery and constant feedback. In the second part of this session we will talk about version 3.0 from an Xbase++ as well as Visual FoxPro developer's perspective.
You will learn:
Prerequisites: None
Web and Mobile
Presenter: Bo Durban
Level: Intermediate
When: Thursday, October 16, 9:00 - 12:00, Gilbert
So you have a mature desktop app (or maybe several) but you know you need to move to the web, right? Hey it is 2014, everyone is on the web but you, right? And hey, everyone is mobile too, right? So what are you going to do? Rewrite this mature application you've worked on for years, with tons of little features that everyone is used to, and then try to force some HTML and JavaScript to act like your desktop app? Then you have the fun task of forcing your users to update to it while listening to them complain about how slow the web is for data entry and how they like the old version better. Sounds not so fun...and oh so expensive...
So, don't just try to replace your desktop application with a web-only version. Extend your application to the web. Provide a web site that lets users access parts of your application on the web via their personal electronic devices. Most users just want to have read-only access to some of their data remotely. Only a few want simple data entry screens while they are out of the office. Your users will appreciate the add-ons without the disruption to their business.
This session will provide you with some ideas and tools for extending your desktop application to the web with an emphasis on support for mobile devices. This includes data synchronization techniques between your desktop and web applications as well as ideas for hosting your web application.
You will learn:
Prerequisites: Some HTML experience a plus
Presenter: Kevin Ragsdale
Level: Intermediate
Three years ago, we looked at multi-threading Visual FoxPro applications using a helper utility. This year, we'll look at using multi-threaded Visual FoxPro DLLs from within ASP.NET, which provides true multi-threading without the use of helpers.
In this session, we'll look at real-world examples that use Visual FoxPro multi-threaded DLLs with ASP.NET to retrieve and send data back and forth from the internet to our apps—data which can be stored almost any backend, including SQL Server, SQLite and Visual FoxPro free tables and databases.
You will learn:
Prerequisites: Working knowledge of creating multi-threaded DLLs with Visual Foxpro, and some knowledge of ASP.NET
Presenter: Stephen J. Bodnar
Level: Intermediate
This session will take an in-depth look at Twitter Bootstrap, a web development framework that covers all the bases for modern web sites that work across desktops, tablets and phones.
Bootstrap addresses many of the problems developers face: it allows you to create web sites that both work well and look good. It works across platforms and includes a comprehensive collection of UI elements (forms, buttons, navigation, fonts, etc), design guidelines and JavaScript plug-ins. It includes HTML5, CSS 3 and JavaScript components that all work together correctly. The current release supports Responsive Web Design which means that pages will adjust themselves to look good on difference devices. Bootstrap is based on a grid system which makes it easier for the developer to create consistently clean and attractive pages.
Originally designed inside Twitter in order to promote consistency on internal projects, Bootstrap has since been released into the public domain and has found success in everything from WordPress to large scale sites for entities like NASA and MSNBC.
In this session, we'll look take a look at the various aspects of Twitter Bootstrap and discuss how it can be used out of the box. We'll also take a look at how Bootstrap can be used with ASP.NET MVC.
You will learn:
Prerequisites: Familiar with web development
Presenter: Stephen J. Bodnar
Level: Intermediate
When: Thursday, October 16, 1:00 - 4:00, Gilbert
Over the years, getting applications to "talk" to each other has been difficult at best. Exchanging data between applications has its own set of challenges. Historically, an API or Application Programming Interface has been some library, construction kit, or documentation that has let us interact with other software or hardware. Depending on the specifics, we might have had to work with a specific language to work with the API. If we were lucky, we might find that someone had written a wrapper that allowed us to work in our favorite language and make calls to the wrapper which then interacted with the API.
Today, in web development, the API is commonly a set of defined requests and responses delivered over HTTP that allow us to interact with some other web-based entity. We do this by using standard HTTP verbs like GET, POST, PUT and DELETE to exchange JSON or XML data with such services.
In this extended session, we will explore modern day APIs from top to bottom. We'll start by looking at what makes a good API. We'll explore the concept of RESTful interfaces and learn important concepts for consuming and creating useful Web APIs. We'll talk about some of the many APIs that are out there for us to use to enhance our applications. We'll look at some of the things we might want to do with online services such as DropBox, Google, Amazon and Twitter. We'll then take deeper dives into two powerful services as examples of how we can use APIs to add really robust features to our existing applications.
I'll call you. Or text you. From my app. Or something.
The first API we'll look at is Twilio which is used by big players like Hulu, Intuit, The Home Depot and many others to handle communications tasks such as sending and receiving text messages and phone calls, voice broadcasting, automating polls and surveys and much more. We'll look at the API and work with the code to demonstrate how a RESTful API can let us extend our applications and incorporate this cloud-based communications service. We'll look at a couple scenarios, like having an app send customers a text message when their order has been processed or when their table is ready. We'll look at examples in C# and we'll also talk about what it takes to make this work with Visual FoxPro.
Get Paid!
Our second deep dive will explore the Stripe API for accepting and managing online payments. If you've ever had to accept payments in an app or website before, you know it can be a nightmare. Between merchant accounts and middle-men, there are a lot of places where things can go wrong and get expensive.
We'll look at what it takes to accept payments online as a single one-time payment or automatically recurring subscriptions. We'll also spend some time on the Stripe website, looking at the dashboard, payments, customers and tools for setting up subscriptions and coupons. Again, we'll look at most of the examples in C#, but also look at what it would take to implement this in a VFP app.
By the end of this session you should have a good idea of the kind of power today's APIs offer—in terms of taking advantage of a plethora of available services, as well as the possibility of making our services available to others.
You will learn:
Prerequisites: None
Presenter: Matthew J. Olson
Level: Beginner
Customer: "I don't want to learn HTML!"
Technician: "Well, then your descriptions will not look how you want them to look online."
Customer: "Well, then I am going to go buy someone else's product!"
Don't let this happen to you. WYSIWYG editors do exist to allow people to generate the HTML that they need. Most integrate into a website and require javascript. This session will show you how to put one into into your VFP application without costing you a penny.
You will learn:
Prerequisites: Some HTML