Platinum Sponsors

White Light Computing

Stonefield Query

Tomorrow's Solutions

Gold Sponsors

Servoy

FoxRockX

Foxpert

Advantage Database Server

FoxInCloud

DBI Technologies

Visual Extend

Geeks and Gurus

Basis

Alaska Software

Alpha Software

Sessions Alphabetically

There are 4 pre-conference sessions and 29 conference sessions. "Level" shows the expected VFP level for attendees for a session. Click a track's icon to jump to the sessions for that track.

Keynote Session

Niche Marketing for VFP Developers, RevisitedSteven Black

Solidifying VFP Development

Presenter: Steven Black
Level: All levels

Several years ago, when the demise of Visual FoxPro appeared imminent, Steve gave several well-received conference presentations, primarily in Europe, on survival strategies for VFP developers. Today Steve revisits this subject, and revises it based on information we know today.

Pre-Conference Sessions

ASP.NET MVC3 JumpstartStephen J Bodnar

Pre-Conference

Presenter: Stephen J Bodnar
Level: Beginner
When: Wednesday, October 26, 1:00 - 4:00, Gilbert

There are some great VFP solutions for building websites for those of us who can host our own websites or work with hosting companies that will support these tools. Many of us, though, need to work with a hosting company that doesn't support these VFP Tools.

Microsoft's ASP.NET MVC provides a great solution for developing data-driven websites, though this solution is completely independent of VFP. The latest release, MVC 3, is a mature, extensible product that can be used to develop complex, robust and attractive websites.

MVC stands for Model View Controller, a design pattern that clearly separates concerns such that the Model is responsible for handling data, the View is responsible for the User Interface and the Controller is responsible for the application logic. The pattern feels very natural to a VFP developer, which makes the learning curve that much easier when trying to adopt new web-based technologies.

Microsoft's ASP.NET MVC implements the MVC pattern in the .NET framework giving us complete control over HTML Markup, supporting AJAX and jQuery, using SEO-friendly URLs and embracing Test Driven Development (TDD).

This session will provide a complete overview of the MVC pattern from the perspective of a VFP Developer. We will develop a fully functioning website during the course of this session. The examples will be written in C#, but we'll take the time to explain exactly what the code is doing so that developers without C# experience won't be left behind.

At the end of this session, you should be well prepared to build your own ASP.NET MVC applications.

You will learn:

  • What the MVC pattern is all about.
  • The difference between ASP.NET MVC and ASP.NET Webforms.
  • Where to get all the tools you need to build MVC applications for free, and the limitations of the free tools.
  • What a View Engine is.
  • How to use Linq2SQL or Entity Framework to create a basic model.
  • How to create Controllers and use them in our website.
  • How to create Views.
  • How Strongly Typed views can help us create CRUD pages efficiently.
  • Where to find a great wealth of additional resources for learning, developing and extending ASP.NET MVC applications.

Prerequisites: There are no prerequisites for this session. It is designed for developers with no ASP.NET or C# experience.

Boosting Your Client Server Application Using Stored ProceduresMenachem Bazian

Pre-Conference

Presenter: Menachem Bazian
Level: All levels
When: Wednesday, October 26, 1:00 - 4:00, Flagstaff

Stored procedures can be essential to an efficient client server application. Stored procedures provide a great many potential benefits including more efficient processing of certain operations, front-end-independent operation (which can be especially useful if your database is being accessed by both a desktop and a web based application) and more.

But stored procedures come at a cost too. Stored procedures are back end specific and they also require a little different way of thinking about your code and application.

This session will introduce you to stored procedures using two of the most popular SQL back ends: MySQL and SQL Server.

You will learn:

  • The nature of Stored Procedures and how they can be used in a client/server application.
  • Different types of stored procedures
  • How to create stored procedures in SQL Server and MySQL
  • How to call stored procedures with Visual FoxPro
  • Differences between SQL Server and MySQL Stored Procedure implementations
  • The pluses and minuses of MySQL vs SQL Server and Vice Versa
  • Strategies for determining propriety of stored procedure usage

Fly in the Clouds - Preparing an Application for FoxInCloudTuvia Vinitsky

Pre-Conference

Presenter: Tuvia Vinitsky
Level: Intermediate, Advanced
When: Wednesday, October 26, 9:00 - 12:00, Gilbert

The key to extending and expanding VFP's life and uses has always been the Internet. Web-enabled apps are all the rage. Experienced VFP developers know rewriting a VFP app in HTML and JavaScript requires tremendous resources—and is more than likely to produce an app with fewer features than the original.

FoxInCloud allows you to run a native VFP app on a webserver as a 100% Web app. It actually uses West Wind Web Connection and other tools to translate the app into HTML and JavaScript calls with almost no overhead and full use of almost all the VFP functions. You can even insert JavaScript into your VFP app if you wish. The FoxInCloud server produces a complete Web 2.0 app appearance as well—no dull old fashioned gray forms or screens.

JavaScript, HMTL, and VFP can all exist side by side. But the best part is that your VFP app can still run on the desktop or LAN. One set of code that can run on the LAN or the Web—the stuff VFP developers have dreamed about for years.

Organizing, adjusting, and maintaining an app for two platforms—one of which is new to many VFP developers—requires careful planning and implementation. This session demonstrates how to take a traditional VFP app and enable it for FoxInCloud, as well as maintain traditional VFP desktop functionality.

We will actually use a very large live commercial app to see how this works.

You will learn:

  • How to manage differences in the VFP and Web object models.
  • How to maintain state across web forms vs a VFP app -- PUBLIC anyone?
  • About data contention on a web app vs. a traditional LAN app.
  • About tools to automate and assist with the adaptation.

Prerequisites: Solid VFP and HTML knowledge. Some JavaScript useful but not necessary.

FoxPro on Your Smartphone? A Complete Guide to Getting StartedSteve Ellenoff

Pre-Conference

Presenter: Steve Ellenoff
Level: All levels
When: Wednesday, October 26, 9:00 - 12:00, Flagstaff

These days, the "Smart" phone is just about everywhere. No longer is it the exclusive domain of Uber-Geeks, it seems nearly everyone from young to old, from computer professional to computer illiterate has one. The mobile phone market has exploded in the last several years with a myriad of different phone hardware, software, and operating system choices out there. There seems to be no end in sight!

Of course, at the heart of these phones are the software applications that make them so cool and useful. In fact many argue a phone's success is measured by the number of "apps" available for it. While consumer oriented applications constitute the vast majority of mobile application development, business oriented and corporate level application development has begun to gain significant momentum.

As FoxPro developers, we are accustomed to providing our business oriented users extensive productivity benefits by creating rich, data-driven software applications on both the Desktop and the Web. By offering Smartphone support and integration to our Foxpro applications, we can take it to a whole new level! Although there is no direct support for FoxPro on mobile devices, there are several different methods we can use to expose and integrate our applications on current and future mobile phone platforms.

This session will provide everything you need to know in order to get started with mobile "smart" phone application development. More importantly, it will demonstrate several different approaches for integrating your existing and new FoxPro applications (even FoxDos in some cases) into the wonderful world of mobile computing, thus allowing you to offer unparalleled convenience and productivity to your business oriented end-users. You won't want to miss this information packed session, so get "smart", and get Foxpro on your Smartphone today!

You will learn:

  • What the major smartphone platforms in use today are
  • What technologies are involved in developing for each platform
  • The licensing costs and application deployment models for each platform
  • The Design Considerations for Mobile applications
  • The methods that currently exist for getting FoxPro applications on a smartphone
  • How to integrate your FoxPro applications using each method
  • The strengths & weaknesses of each method

Conference Sessions

Bind Events for Better ApplicationsTamar E Granor

Solidifying VFP Development

Presenter: Tamar E Granor
Level: Intermediate, Advanced
When: Thursday, October 27, 10:00 - 11:15, Elliott (R1)
Friday, October 28, 11:30 - 12:45, Elliott (R2)

At first glance, the BindEvent() function may seem unnecessary. After all, why bind to an event when you can just write code in the event's method?

In this session, we'll look at why BindEvent() and its cousins, the Access and Assign methods, are so valuable. Using examples drawn from real applications, we'll see how event binding lets you do things you couldn't otherwise do, and simplifies code for other tasks. We'll also talk about the difficulties involved in debugging code that uses event binding.

You will learn:

  • How and why to use BindEvent()
  • How and why to use access and assign methods
  • How to debug when event binding is in place

Class Design StrategiesMenachem Bazian

Solidifying VFP Development

Presenter: Menachem Bazian
Level: Intermediate
When: Thursday, October 27, 8:30 - 9:45, Elliott (R1)
Thursday, October 27, 3:30 - 4:45, Elliott (R2)

When is a class needed and when isn't it? How can you design classes that add power and flexibility not only to your current application but to all your projects? How can you simplify the development and maintenance by using classes?

The "textbook" answer is to do a full blown object orientation analysis and design. But what do you do if you don't have the time for that formal process?

This session, which is both theoretical and practical (code based), will discuss how to think in "OO" mode and how the traditional Cowboy Programmer approach of Visual FoxPro and the formal world of Object Orientation can come together and live in harmony.

The session will also discuss how to modify classes safely.

You will learn:

  • The goals of Object Orientation
  • How to recognize class opportunities and take advantage of them
  • How to modify classes safely so as not to break other projects

Cloud StorageChristof Wollenhaupt

Extending VFP

Presenter: Christof Wollenhaupt
Level: Beginner
When: Friday, October 28, 10:00 - 11:15, Flagstaff (R1)
Friday, October 28, 5:15 - 6:30, Elliott (R2)

Active, .NET, internet enabled... Those were the buzz words of the past. Today's new buzz word is cloud computing.

This session focuses on one aspect of cloud computing, specifically cloud storage, or storing data on a server outside of your own network. A variety of storage solutions exist these days. Some are relational database such as Microsoft SQL Azure or Oracle on AWS. Others are non-relational databases, such as Salesforce's database.com, Amazon SimpleDB, Google BigTable or Google Storage. Many are document centered such as Google Documents, Evernote, Dropbox or RackSpace Cloud Files. Most storage systems offer web services, but some offer more such as ODBC (SQL Azure) or native file access (Dropbox).

Aside from the technical aspects we will also cover the pros and cons of using cloud storage, legal and practical implications, and cost issues.

You will learn:

  • What cloud storage is
  • How to access cloud storage
  • How the various services differ
  • Whether storing data in the cloud makes any sense, at all

Creating ActiveX Controls for VFP Using .NetDoug Hennig

Extending VFP

Presenter: Doug Hennig
Level: Advanced
When: Friday, October 28, 8:30 - 9:45, Flagstaff (R1)
Saturday, October 29, 11:30 - 12:45, Flagstaff (R2)

ActiveX controls provide a way to add both functionality and a modern appearance to your VFP applications. Unfortunately, there are few new ActiveX controls these days, especially ones that take advantage of features in Windows Vista and Windows 7. On the other hand, the .Net framework comes with many attractive looking controls, and there’s an entire industry devoted to providing even more. This session discusses techniques for creating ActiveX controls from .Net components so we can take advantage of these controls without having to convert our applications to .Net.

You will learn:

  • How to create ActiveX controls in .Net
  • Issues with using those controls in VFP
  • How to deploy .Net ActiveX controls

Prerequisites: Generally familiar with ActiveX controls

Data Access Techniques Using CursorAdaptersVenelina Jordanova

Solidifying VFP Development

Presenter: Venelina Jordanova
Level: Beginner
When: Thursday, October 27, 5:15 - 6:30, Elliott

With the CursorAdapter class, VFP programmers have a powerful object, which renders data from the data source into a Visual FoxPro cursor. Using the CursorAdapter class, the developer can access various data sources in one well-known and handy way, plus it's easy to switch between different database platforms. Processing data is one of the main purposes of the information systems that we develop today. Often, in our applications, we need to access not only native VFP tables, but also other data sources like SQL Server, MySQL, Oracle and so forth. The VFP CursorAdapter class is an excellent resource that helps us to accomplish this. Even better, we can develop portable applications accessing different database platforms.

Whether developing on-shelf applications, or migrating the database of in-house applications, the CursorAdapter class helps the developer to build applications that can be upsized without rewriting the data access. This session will demonstrate how to use CursorAdapter objects to access mixed data sources as well as how to develop easy-to-upsize data access. We will discuss the properties and methods of the CursorAdapter class and how to use them for better control over data retrieval and updates.

You will learn:

  • The basics of the CursorAdapter class
  • How to use CursorAdapter classes for data access.
  • How to use CursorAdapter classes to switch at run-time between different data sources
  • Why CursorAdapters are better than views

Prerequisites: None

Developing VFP Applications for Windows 7Doug Hennig

Solidifying VFP Development

Presenter: Doug Hennig
Level: Intermediate
When: Thursday, October 27, 11:30 - 12:45, Elliott (R1)
Friday, October 28, 3:30 - 4:45, Elliott (R2)

Like Windows Vista before it, Windows 7 changes the rules for many aspects of application development, including the user interface, dialogs, deployment, security, and file access. This session looks at things you need to know to create Windows 7-compatible applications with Visual FoxPro.

You will learn:

  • Why your application can't run as administrator any more
  • How Windows 7 security impacts your application
  • What changes your installation executable needs to work properly
  • How to take advantage of new Windows 7 features

Easy Multi-Threading with Visual FoxProKevin Ragsdale

Extending VFP

Presenter: Kevin Ragsdale
Level: Intermediate
When: Thursday, October 27, 3:30 - 4:45, Flagstaff (R1)
Friday, October 28, 5:15 - 6:30, Flagstaff (R2)

For years, FoxPro developers have longed for multi-threading capabilities. Thankfully, several developers have found ways to provide multi-threaded capability in Visual FoxPro applications.

I've used (and tried to use) every published method I know of to create multi-threaded applications, but the easiest method I've found (by far) is by using Christof's DMULT.DLL.

In this session, we'll look at multi-threading and use Christof's DMULT.DLL to easily add multi-threaded capability to a Visual FoxPro application. We'll create event handlers to act as callback objects for our multi-threaded DLL's. We'll also look at some disadvangtages of multi-threading.

You will learn:

  • What is multi-threading?
  • The advantages (and disadvantages) of multi-threading
  • An introduction to Christof's DMULT.DLL
  • Creating event handlers for multi-threaded DLL's
  • Real-world examples of how DMULT.DLL has improved my apps

Executing VFP Code in Silverlight ApplicationsUwe Habermann

Web Development

Presenter: Uwe Habermann
Level: Intermediate
When: Thursday, October 27, 11:30 - 12:45, Gilbert

Create Internet applications with the most modern user interface and do the programming work in VFP? Yes, it is possible! It's easy to create COM servers with VFP. And, it's easy to use COM servers in Visual Studio projects. But what about a Silverlight client application, which runs in the browser of an Internet client? Method calls from the Silverlight client side can be forwarded to the server side by using a domain service. The return value is delivered to the Silverlight front-end. This allows running any code for business logic at the server side. Additionally, we will discuss how the architecture of a COM server can be set up, so that code changes do not require re-registering the COM server.

You will learn:

  • How to create VFP COM servers
  • How to use VFP COM servers from Visual Studio server projects
  • How to call COM server methods from a Silverlight frontend
  • How to change code without changing or re-registering the COM server

Prerequisites: None

Flip the Switch: Lightswitch for VFP DevelopersEric J Selje

Web DevelopmentTechnology for VFP Developers

Presenter: Eric J Selje
Level: Beginner
When: Thursday, October 27, 8:30 - 9:45, Gilbert (R1)
Friday, October 28, 3:30 - 4:45, Gilbert (R2)

Lightswitch is Microsoft's latest development tool and it is aimed squarely at the same market who may have considered Visual FoxPro in the past. Lightswitch creates beautiful Silverlight applications which can run on Windows or the Web (and theoretically Linux too).

If you're creating CRUD applications for databases, you should definitely have Lightswitch on your radar.

You will learn:

  • How to get started with Lightswitch
  • The fundamentals of Silverlight
  • The limitations of Lightswitch as compared to Visual FoxPro

Prerequisites: Perhaps a basic familiarity with Visual Studio 2010

Fox on the RunEric J Selje

Technology for VFP Developers

Presenter: Eric J Selje
Level: All levels
When: Friday, October 28, 11:30 - 12:45, Gilbert (R1)
Saturday, October 29, 8:30 - 9:45, Elliott (R2)

It's not possible to write Visual FoxPro applications for your mobile devices, but that doesn't mean you can't write applications for your mobile devices that use Visual FoxPro. By creating FoxPro-driven web services, you can create web applications that tap your business logic and data easily. But the big WOW is that you can compile these HTML5-based web applications into Native iPhone and/or Android applications too. Then you've got the power of Fox on the Run.

You will learn:

  • Basic techniques to create FoxPro-based web services
  • Some new HTML5 functions for creating database applications
  • Third party tools for compiling HTML5 web applications into native mobile applications

Prerequisites: Intermediate understanding of web-based applications and desire to create mobile apps that tap Visual FoxPro back-ends

Googlefy Your AppsChristof Wollenhaupt

Extending VFP

Presenter: Christof Wollenhaupt
Level: Beginner
When: Thursday, October 27, 8:30 - 9:45, Arizona (R1)
Saturday, October 29, 10:00 - 11:15, Flagstaff (R2)

It speaks volumes that Google offers a search engine to browse their APIs. New Google products are published all the time, others are more or less silently terminated. Over the past decade this has resulted in a number of features that are useful in desktop applications, too.

We will look at Google Chart Tools to create and embed interactive charts into your application, Google Maps integration for address lookup and getting directions, embedding Google search to give users more details about data stored in our databases, translating text with Google Translate automatically, accessing contact information, storing and retrieving documents on Google docs, creating PDF files for office documents, retrieving financial information using the Google Finance API, and whatever new features Google has come up with recently.

This session also covers the technical aspects of the various APIs, the Google Data Protocol, provides a brief overview on the Google App Engine, and explains how you can tell Google everything about you.

You will learn:

  • What offers Google makes
  • What price you have to pay
  • How to embed Google features into desktop applications
  • About legal and licensing issues

How Craig Boyd Makes Me a Hero!Rick Schummer

Extending VFP

Presenter: Rick Schummer
Level: All levels
When: Thursday, October 27, 5:15 - 6:30, Flagstaff (R1)
Friday, October 28, 3:30 - 4:45, Flagstaff (R2)

Craig Boyd is one of the most generous developers in the Fox Community. Over the years his blog has included many posts where he flat out delivers some cool FLL file that extends the functionality of a VFP application, or straight VFP code with numerous benefits, and in turn makes me look like a hero to my customers.

Ever have a customer ask you to provide a feature where compressing a file is best handled with the ZIP format? Do you have users who want automated email and you are tired of battling Outlook security, but MAPI is the easiest way to get email through their email system? How about encrypting information in a table, or encrypting an entire file in your secure customer applications? Need to use FTP, SFTP, or other Web interactions to satisfy even the finickiest customer situations? Run up against the not-so-new Excel 2007/2010 XLSX format and find it breaks your modules where previous versions of Excel worked fine? Ever wished for a smart grid that made it easier to develop data entry grids and made it so it is less painful to implement? Yeah, me too.

This session will go through the best of the best of Craig's FLLs and other tools, show you what they do and how you implement them, and how simple it is to look like a hero too.

You will learn:

  • How VFPCompression.FLL will make zipping files a snap
  • How email with attachments is simple thanks to VFPMapiEx.FLL
  • Why security of the data is trivial with the VFPEncryption.FLL
  • How VFPConnection makes working with the Web as easy as cutting butter with a warm knife
  • How the grid can easily be extended without writing a ton of code, thanks to GridExtras
  • How Excel 2007 introduced the XLSX file format and the Fox Team did not respond, but fortunately Craig did

Prerequisites: None

Improve Data Access with CursorAdaptersVenelina Jordanova

Solidifying VFP Development

Presenter: Venelina Jordanova
Level: Intermediate
When: Saturday, October 29, 8:30 - 9:45, Arizona

The CursorAdapter class has been in VFP since version 8.0 but it's still neglected. Whether connecting data sources or using the class to apply business rules to data, it is a great tool to dig deep into data, with all the power of object oriented programming.

This session will not discuss the CursorAdapter class' basics. The focus is on refinements, and tips and tricks in its usage. The session will demonstrate advanced approaches in data retrieval using parameterized queries, with ideas for how to handle special cases, such as needing more than 256 fields in a cursor, sending updates when querying more than one table in the Select command, and even using stored procedures for retrieving and updating data.

Additionally, we will discuss different data access drivers, their advantages and disadvantages, as well as specifics of several database engines, and ways to debug the commands sent to the database. Retrieving values generated at the server side after inserting and updating are also an important part of database access and the session will reveal these specifics.

Last but not least, in a professional application must pay attention to error processing. The CursorAdapter class provides events to help make that better.

You will learn:

  • How to control data access
  • How to control inserting and updating data in tables
  • How to handle update conflicts
  • How to handle errors

Prerequisites: CursorAdapter class basics

It's so, uh, "gray"... - Tips & Tricks to Improve Your App's User InterfaceKevin Ragsdale

Solidifying VFP Development

Presenter: Kevin Ragsdale
Level: Beginner
When: Friday, October 28, 10:00 - 11:15, Elliott (R1)
Saturday, October 29, 11:30 - 12:45, Elliott (R2)

Ever have a developer ask you to look at the "coolest app ever written," only to discover the UI is an incomprehensible mess?

You know the apps: garish background colors; a mish-mash of fonts, colors and sizes; a steady stream of run-of-the-mill windows with the default 'gray' background; alignment issues; tab order that hasn't been properly set; buttons with wildly different sizes; the list goes on (I've written my share of these apps myself).

In this session, we'll take an ugly ("written in Visual FoxPro") application and give it a complete makeover in one hour, using only VFP base classes. When were done, no one would recognize it as a Visual FoxPro app.

After the makeover, we'll look at some VFPX tools and commercial tools (including the CommandBars library Ribbon control) which can help spruce up the UI.

Who says Visual FoxPro apps have to be "ugly"?

You will learn:

  • Windows guidelines to follow when building apps (and guidelines you should ignore)
  • Properties and methods of objects which help to make a UI "pretty"
  • Built-in VFP tools to use for adding professional polish to your apps
  • _SCREEN versus Top-Level Forms
  • A look at VFPX tools and commercial tools for improving your app's appearance

Prerequisites: None

Joins and Subqueries: Using SQL Commands for the Hard StuffTamar E Granor

Solidifying VFP Development

Presenter: Tamar E Granor
Level: Intermediate
When: Friday, October 28, 8:30 - 9:45, Elliott (R1)
Saturday, October 29, 10:00 - 11:15, Elliott (R2)

Writing simple SQL queries isn't hard to learn. But as soon as you need something a little more complex, you get tangled up in inner joins vs. outer joins and where to use a subquery and so forth.

This session will bridge the gap between simple and complex queries with a deep dive into the JOIN clause and the use of subqueries. We'll also talk about how to optimize queries and the tools VFP provides to help you.

While this session will focus on VFP's SQL commands, much of the information will be applicable to other SQL dialects.

You will learn:

  • The difference between inner and outer joins
  • How to build complex join clauses
  • Where and how to use subqueries
  • How to optimize SQL commands in VFP

Prerequisites: Basic familiarity with VFP's SQL commands

jQuery UI and jQuery Plugins for Making Your Site Look and Work BetterStephen J Bodnar

Web Development

Presenter: Stephen J Bodnar
Level: Beginner
When: Thursday, October 27, 10:00 - 11:15, Gilbert (R1)
Friday, October 28, 2:00 - 3:15, Gilbert (R2)

This session will drill into jQuery UI, a library built on top of jQuery that includes widgets, effects and mouse interactions that allow web developers to implement sophisticated features like themable controls, animations, and advanced interactions such as drag and drop. We'll look at several examples of jQuery UI such as content sliders, content rotators, themes and the ThemeRoller, Accordions, Modal Windows and much more.

We'll start with a very quick intro to jQuery itself. Then cover different options for wiring your website with jQuery and jQuery UI. We'll take a whirlwind tour of all that is jQuery UI and then spend some time drilling deeper into a few examples. We'll wrap up by looking at a few examples of jQuery Plugins that can be used to really push your sites over the top.

This session will also provide a variety of resources for working on your own with jQuery, jQuery UI, jQuery Plugins as well as some resources for User Interface and User Experience design.

You will learn:

  • The difference between jQuery, jQuery UI, jQuery Plugins and even jQuery Mobile
  • How to use a variety of widgets, controls and utilities provided by jQuery UI
  • The vastness of the jQuery plugin options that can be used to really add chrome to our sites
  • Resources for User Interface (UI) and User Experience (UX) best practices and design patterns
  • What jQuery Mobile offers

Prerequisites: none

Looking Back: Techniques I'm Glad We UsedSteven Black

Solidifying VFP Development

Presenter: Steven Black
Level: All levels
When: Thursday, October 27, 2:00 - 3:15, Flagstaff (R1)
Friday, October 28, 5:15 - 6:30, Gilbert (R2)

... and a few I regret. In this talk, Steve goes through several things, some of them unconventional and quirky, that have repeatedly paid-off on projects large and small. He also covers a few that repeatedly hamper project development and their long-term maintenance. The focus is on things that Visual FoxPro does well, and some things for which VFP shouldn't be used, or used anymore.

Programming Standards and Guidelines for Software CraftsmanshipRick Schummer

Solidifying VFP DevelopmentTechnology for VFP Developers

Presenter: Rick Schummer
Level: All levels
When: Thursday, October 27, 2:00 - 3:15, Gilbert (R1)
Saturday, October 29, 8:30 - 9:45, Gilbert (R2)

Application program code not only tells the computer what to do, but should enhance the ability of another developer to read it and allow the a developer to easily understand its intent. Effectively, code is a way for developers to communicate with each other. Just as in daily life, if the developers speak a different dialect of the same natural language, it can easily lead to bad communication, misunderstandings, and other potential problems.

The purpose of programming standards and the creation of a standards document is to consolidate and clearly define the approved standards and guidelines currently being practiced by the development staff at your company. The document should be a living document; the standards and guidelines it describes should undergo regular review as the development team determines better ways to practice their craft. All code written is expected to follow these guidelines in force at the time it is written, unless technically prohibited.

Why do we need a written set of standards and guidelines for developers? Shouldn't we expect a developer to be mature enough to follow best practices and accepted industry standards with respect to software development and programming? Naturally, good and experienced developers have the innate ability to write good code and over time have developed some standards they follow. But as you bring different developers together, each with their own experiences and standards, you start to get code that is harder to read and understand. Having standards is a way to have everyone get on the same page, and enhances the ability to read, enhance, and support each other's code.

You will learn:

  • Why programming standards should not be optional
  • How standards mean your code has fewer bugs, which leads to solid releases, and higher customer satisfaction
  • A detailed list of standard categories to consider and why each is important
  • That you are not stifling creativity and outside of the box thinking with standards and guidelines
  • The contents of a base document you can use for your own standards and guidelines document

Prerequisites: None

To Boldly go Where no VFP'er Has Gone Before—the Tools of Thor (Session I)Jim Nelson

Extending VFPTaking Advantage of VFPX

Presenter: Jim Nelson
Level: Beginner
When: Thursday, October 27, 11:30 - 12:45, Flagstaff (R1)
Friday, October 28, 11:30 - 12:45, Flagstaff (R2)

There are a number of valuable tools that are available in other development environments, but are sadly lacking in FoxPro's own IDE. For some time, there has been a considerable effort afoot to expand the list of IDE tools by reproducing (where possible) the tools from other IDEs (such as Visual Studio), by building on and enhancing existing tools, and by creating brand new tools appropriate to FoxPro.

The most visible of these new tools is named Thor. Thor is a tool for managing add-on tools in the IDE. It provides a unified method for registering other tools, simplifying the task of disseminating them, and a user interface to control the assignment of hot keys and developer-defined menus. The UI provides four different methods for accessing these tools:

  • By assigning hot keys to them
  • By creating pop-up menus accessible via hot keys
  • By adding them as bars under any of the VFP system pads (File, Edit, View, etc.)
  • By creating new pads in the VFP system menu and adding them as bars under these new pads

Unlike the normal limited set of hot keys available from ON KEY LABEL, Thor provides for the full range of multiple-keystroke combinations (Ctrl + Alt + A, for instance).

This session will start by showing how to install and start using Thor, how to use its UI to assign hot keys and create menus and submenus, and how to use Thor to simplify access to your own private tools. We'll also delve into some of the more interesting details on how Thor works.

Using Thor as the backbone for the remainder of the session, we will explore published tools that can be made accessible in Thor, with particular emphasis on the tools mentioned in the first paragraph. The result of the work mentioned here is a suite of tools that provides a large number of features never before available in VFP. You will find that these tools will rapidly become indispensable in your day-to-day programming life.

There is a lengthy list of tools that will be covered (in this two-part session), including the following:

  • GoToDefinition: When editing code, you can go to the definition of a method, property or object, PRG file, procedure or function in a PRG file, constant (created by #Define), class or form with a single keystroke.

  • GoToDefinition #2: When editing code, you can create new properties or methods with a single keystroke (and begin editing the method immediately, if desired).

  • ExtractToMethod: When editing code, you can highlight a block of text and extract it to a new method (yes, with a single ...).

  • BeautifyX: Apply native VFP Beautify and more: provide standard within-line spacing, choose standard operators for string delimiters and others, auto align assignments on consecutive lines, create LOCAL statements, and impose standard formatting on SQL-Select, Update and Replace statements, with a wide range of customization available.

  • Compare objects with other objects or their parent class, change their parent class, or edit their parent class.

  • Use the Format form, which provides enhanced options to the Format pad in the VFP system menu.

  • And many, many more...

You will learn:

  • How to install Thor and use its UI to assign hot keys to tools, create pop-up menus, and add tools to the VFP system menu.
  • How to make your own tools accessible by Thor.
  • How to install and use tools from the Thor Repository (part of VFPx)
  • How to install and use the IDE Tools you never knew you needed -- until you saw them.

Prerequisites: None

To Boldly go Where no VFP'er Has Gone Before—the Tools of Thor (Session II)Jim Nelson

Extending VFPTaking Advantage of VFPX

Presenter: Jim Nelson
Level: Beginner
When: Thursday, October 27, 3:30 - 4:45, Gilbert (R1)
Saturday, October 29, 8:30 - 9:45, Flagstaff (R2)

Note: This session is a continuation of the session 'The Tools of Thor (Session I)', and it is strongly recommended that you attend Session I before Session II.

This session will concentrate on the published tools that are accessible thru Thor, continuing where Session I left off (that is, some of these may have already been discussed in the first session.)

  • GoToDefinition: When editing code, you can go to the definition of a method, property or object, PRG file, Procedure or Function in a PRG file, constant (created by #Define), class or form with a single keystroke.

  • GoToDefinition #2: When editing code, you can create new properties or methods with a single keystroke (and begin editing the method immediately, if desired).

  • ExtractToMethod: When editing code, you can highlight a block of text and extract it to a new method (yes, with a single ...).

  • BeautifyX: Apply native VFP Beautify and more: provide standard within-line spacing, choose standard operators for string delimiters and others, auto align assignments on consecutive lines, create LOCAL statements, and impose standard formatting on SQL-Select, Update and Replace statements, with a wide range of customization available.

  • Compare objects with other objects or their parent class, change their parent class, or edit their parent class.

  • Use the Format form, which provides enhanced options to the Format pad in the VFP system menu.

  • And many, many more...

Finally, if time permits, I will explore the two objects exposed by PEM Editor which can be used when building tools. I'll demonstrate how they can be used to reproduce some of the simpler tools from PEM Editor as well as some of the tools available from VFP's context menu for code windows.

You will learn:

  • How to install Thor and use its UI to assign hot keys to tools, create pop-up menus, and add tools to the VFP system menu.
  • How to make your own tools accessible by Thor.
  • How to install and use tools from the Thor Repository (part of VFPx)
  • How to install and use the IDE Tools you never knew you needed -- until you saw them.

Twenty Tools to Make Your Life Easier and More ProductiveRick Borup

Extending VFPTechnology for VFP Developers

Presenter: Rick Borup
Level: All levels
When: Friday, October 28, 10:00 - 11:15, Gilbert (R1)
Saturday, October 29, 10:00 - 11:15, Gilbert (R2)

I admit it: I'm a sucker for a good utility. Any tool that can save me time or make it easier to do things I need to do regularly is a worthwhile investment. You've heard the expression "a penny saved is a penny earned"? Well, in software development it's equally true that a minute saved is a dollar earned. This session explores twenty of the tools and utilities that help me work more quickly and effectively on a daily basis. Come to this session and learn how they can help you, too.

You will learn:

  • About tools for making your core VFP development work easier
  • About tools to help you fix things when they go wrong
  • About tools to help you learn and stay in touch
  • About tools to help you support your clients and your apps in the field
  • About tools to improve your personal productivity and time management

Prerequisites: None

Using VFP Databases in Silverlight ApplicationsUwe Habermann

Web Development

Presenter: Uwe Habermann
Level: Intermediate
When: Friday, October 28, 8:30 - 9:45, Gilbert

Silverlight applications are supposed to work with SQL Server databases. However, it is possible to access other databases as well. Now, when we have access to COM server methods, it's possible to do almost everything we can do in VFP - even to access a VFP database, to read and save data, and to provide this functionality to a modern Silverlight application. However, doing so requires some knowledge about how data are handled in Silverlight applications. C# data classes are needed and data must be transferred over the Internet by a domain service. The final step is presenting and editing these data in the user interface.

You will learn:

  • How to use VFP COM servers from Visual Studio server projects
  • How to create C# data classes
  • How to create a domain service
  • How to receive and present data in Silverlight applications
  • How to send data to the COM server side

Prerequisites: COM server basics and the Executing VFP code in Silverlight Applications session

VFP and Thin ClientsTuvia Vinitsky

Extending VFPTechnology for VFP Developers

Presenter: Tuvia Vinitsky
Level: All levels
When: Thursday, October 27, 10:00 - 11:15, Flagstaff (R1)
Friday, October 28, 8:30 - 9:45, Arizona (R2)

Microsoft has never been able to make up their minds -- should we be using distributed components or should we all be connecting to Terminal Servers?

Terminal Services is the best known thin client. VFP apps can be centrally located and accessed from anywhere. Often called "hosted" applications, thin clients eliminate distribution and setup problems, cut the time to market, and provide an easy way to users to run your VFP apps.

With several large companies recently having moved their VFP apps to Terminal Servers, is this technology for you? What are the benefits and drawbacks? What about maintenence? Costs? Knowledge set reqired? This session will answer these questions and more about thin clients and VFP.

You will learn:

  • What a thin client is
  • How it works and how it is different from the standard desktop
  • Considerations in deciding whether to implement thin clients
  • Whether it has to be Windows? What about Mac, Linux users, can they attach as well?
  • About different thin client platforms, pro and con.
  • The hidden "gotchas" of thin clients.
  • Where one goes from here.

Prerequisites: Basic VFP knowledge. Some basic network knowledge helpful

VFP Version Control with MercurialRick Borup

Extending VFPTechnology for VFP Developers

Presenter: Rick Borup
Level: All levels
When: Thursday, October 27, 8:30 - 9:45, Flagstaff (R1)
Friday, October 28, 2:00 - 3:15, Flagstaff (R2)

Mercurial is a distributed version control system (DVCS) well suited for use with Visual FoxPro application development. While distributed version control systems are based on a decentralized model designed to facilitate team software development, they are also useful for the independent developer who is working solo. Together with the TortoiseHg shell program for Windows, Mercurial offers VFP developers a powerful tool for managing their version control requirements. Come to this session and learn how to integrate Mercurial into your daily VFP development workflow.

You will learn:

  • The concepts behind distributed version control systems (DVCS)
  • How to install and configure Mercurial and TortoiseHg on a Windows PC
  • The unique challenges of using any version control system with VFP
  • The basic techniques for using Mercurial with VFP application development
  • Advanced techniques to more fully explore the power of Mercurial

Prerequisites: A working knowledge of Visual FoxPro development

Wanted: More Processing Speed!Jody L Meyer

Extending VFPTaking Advantage of VFPX

Presenter: Jody L Meyer
Level: Beginner
When: Thursday, October 27, 5:15 - 6:30, Gilbert (R1)
Saturday, October 29, 11:30 - 12:45, Gilbert (R2)

ParallelFox is the brain-child of Joel Leach. Joel has made parallel processing easier and more approachable for all VFP developers by developing this powerful tool. Jody will walk you through the main components of ParallelFox and demonstrate the basics. She will then show you how you might be able to apply ParallelFox to real-world process such as error-handling, data dictionary rebuilds, and time-consuming reports. The possibilities are endless. ParallelFox is a must have in your developer toolkit to get more speed out of your Visual FoxPro application.

You will learn:

  • What ParallelFox is
  • The basics of using ParallelFox
  • Possible uses for such a powerful tool

Prerequisites: None

Working with Remote Data the "VFP Way": Upsizing to SQL Server Without Redesigning Your Application!Steve Ellenoff

Solidifying VFP DevelopmentExtending VFP

Presenter: Steve Ellenoff
Level: Beginner, Intermediate
When: Thursday, October 27, 2:00 - 3:15, Elliott (R1)
Friday, October 28, 2:00 - 3:15, Elliott (R2)

Ask any developer who has migrated a FoxPro application to SQL Server and almost every one of them will tell you that you need to rethink the way your application works: No more Browse windows, no more record navigation buttons, no more XBASE style mentality. In other words, not only do you need to re-code your application for the actual data handling, you also need to re-design the way it works! That's funny?! I don't remember my customers asking me to redesign screens and functionality just because they wanted to take advantage of the many benefits of using a robust remote database such as SQL Server!

So are we stuck to take this advice without negative consequences? The answer is a resounding NO! While it's true that "redesigning" our XBASE styled FoxPro applications while upsizing to SQL Server is a recommended best practice, there are several ways we can minimize the need to change the way our Fox applications look and behave. Furthermore, we can do so with minimal negative side effects. This session will cover a variety of strategies and tips which will allow you to upsize your applications to any remote data back-end, such as MS SQL Server, MySQL, and many others, with minimal impact on the look and feel of your applications. We'll also cover a number of "how to do that" tips for upsizing the application when migrating from FoxPro local data that I have not seen discussed elsewhere.

You will learn:

  • Why redesign is a recommended approach and how we can work around it without penalty
  • How to implement Record Navigation Buttons (First, Last, Next, Prior) for any remote back-end
  • How to implement SET RELATION style logic using Remote Back-Ends
  • How to implement FoxPro's "Deleted Record" concept on Remote Back-Ends
  • Several other tips to help make upsizing to remote data easy without requiring a redesign of our applications

Prerequisites: General understanding of working with Remote Data (we don't cover the basics of upsizing in detail).