Southwest Fox 2014
Southwest Xbase++ 2014

October 16-19, 2014
SanTan Elegante Conference Center
Gilbert, AZ

Southwest Fox 2014 Sessions

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.

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

Keynote

Pre-Conference

Pre-ConferenceWeb and Mobile

Presenter: Bo Durban
Level: Intermediate
When: Thursday, October 16, 9:00 - 12:00, Elliott

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:

  • HTML
  • JavaScript/jQuery
  • Web hosting
  • Data synchronization
  • Mobile Web Development

Prerequisites: Some HTML experience a plus

Pre-ConferenceTechnology and Business for the Developer

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:

  • How to track changes to data
  • Where to look for bottlenecks
  • What those index options mean
  • How locks and hints really work

Prerequisites: None

Pre-ConferenceMoving VFP Applications Forward

Presenter: Frank Perez
Level: All levels
When: Thursday, October 16, 1:00 - 4:00, Elliott

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:

  • The pros and cons of Microsoft SQL Server and PostgreSQL
  • How to get started with Microsoft SQL Server and PostgreSQL
  • Some of the tools and options that are available with each

Prerequisites: None

Pre-ConferenceWeb and Mobile

Presenter: Stephen J. Bodnar
Level: Intermediate
When: Thursday, October 16, 1:00 - 4:00, Flagstaff

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:

  • What it means to be RESTful
  • About HTTP Verbs and how they are used
  • How data is passed over the web using JSON and XML
  • How to consume third party web APIs
  • How to create a web API allowing others to exchange data with your application
  • How to make an outbound phone call using the Twilio API
  • How to work with incoming text messages
  • What Twilio offers in terms of recordings, transcriptions and notifications
  • What it takes to set up Stripe customers and payments
  • How Stripe handles security related issues such as PCI certification and encryption.
  • How to use Embedded or Custom forms for payments
  • How Stripe charges its customers and how and when payments are transferred
  • How to handle subscriptions or other recurring payments
  • How to use the dashboard and Stripe website to manage your account
  • What it takes to make this work with Visual FoxPro

Prerequisites: None

Extending VFP

Extending VFPTaking 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:

  • How to access PEMs from objects (in SCXs, VCXs, and PRGs) that native Intellisense forgot
  • How to access lists of fields from native FoxPro tables, in SELECT statements for both native FoxPro tables and SQL Server tables, and from data objects
  • How to create and use system-wide aliases for objects and tables
  • How to use other related Thor tools to achieve auto-completion of names used in a procedure and to find #Define compiler constants

Prerequisites: None

Extending VFP

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:

  • How to combine data into a delimited result with FOR XML PATH
  • How common table expressions (CTEs) make it easy to work with hierarchical data (and much more)
  • How the OVER clause lets you rank records in a variety of ways
  • How ROLLUP, CUBE and GROUPING SETS let you compute summaries as you aggregate data

Prerequisites: Some familiarity with SQL, either VFP's or T-SQL

Extending VFPMoving VFP Applications ForwardWeb and Mobile

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:

  • What REST is
  • About examples of systems that expose their API using RESTful interfaces
  • Different ways to plug your Visual Foxpro applications into RESTful APIs
  • How to build some full featured applications components that take advantage of RESTful interfaces

Prerequisites: Some XML

Extending VFPSolidifying 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:

  • About IntelliSense scripts you can use everyday
  • How to build time-saving Command/Keyword expansion and syntax completion techniques
  • How to make coding easier using Quick Info, Member Lists, and Types.
  • How to leverage and manage Most Recently Used (MRU) lists.
  • How to avoid the duplicate typing that comes naturally with SET commands.
  • How to reap the benefits of the C operators.
  • How Property Editors play in the IntelliSense sandbox.
  • Ideas to improve the IntelliSense Manager.
  • About Runtime IntelliSense, and how to take advantage of it in your custom apps.

Prerequisites: Desire to be more productive in the VFP IDE, and basic understanding of IntelliSense inside VFP.

Extending VFPMoving VFP Applications ForwardTaking Advantage of VFPX

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:

  • GDIPlusX
  • Image manipulation tools
  • .NET to VFP code conversion

Prerequisites: Some GDIPlusX experience useful, but not required

Extending VFPSolidifying VFP Development

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:

  • Advantages (e.g. able to run app against SQL Server data or VFP free tables, easily move between records, save record without using TableUpdate)
  • Disadvantages (e.g. SQL injection)
  • How to build a business object
  • How to use the business object to load, save, move record, etc.

Prerequisites: None

Extending VFPSolidifying VFP DevelopmentMoving VFP Applications Forward

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:

  • What n-tier or Separation of Concerns is all about
  • About examples of clean n-tier architecture in Visual FoxPro
  • Simple ways to refactor existing code to fit the separation of concerns model and thus begin to be able to take advantage of modern technologies
  • Effective techniques to ensure that future application components fit properly into the new model you are working towards
  • The strengths of FoxPro in conjunction with the best layer for certain processes

Prerequisites: None

Extending VFPSolidifying VFP DevelopmentMoving VFP Applications Forward

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:

  • About importing flat file data into VFP
  • About exporting VFP data to flat files
  • Why dates and numbers can be tricky
  • Why Excel files are not data
  • About methods to make working with serial data easy

Prerequisites: None

Extending VFP

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:

  • How to use and configure tablet features in Windows
  • How to extend a VFP application with pen, touch and digitizer input
  • What APIs and controls are available

Prerequisites: None

Extending VFPMoving VFP Applications Forward

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:

  • How to replace native FoxPro tables with SQLite
  • How to capture, save, retrieve and display Unicode data in your FoxPro apps

Prerequisites: Working knowledge of Visual FoxPro

Extending VFPTaking Advantage of VFPX

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:

  • Explore the Data Explorer enhancements
  • Determine how FoxBin2PRG fits in the binary source code flattening space
  • Generate Excel files without Microsoft Office or OpenOffice using ExcelXML
  • Get a quick overview of changes to the mighty Thor!
  • See the value of Finder and how it has become a legitimate project manager replacement
  • Peek at the FoxCharts enhancements that make charting in your applications easy
  • ...and more as the year progresses.

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:

  • What is new in VFPX in 2014
  • How VFPX is going to make a developer's life easier
  • Where to get all the new goodness
  • Why it is more important than ever to get involved in VFPX

Prerequisites: None

Extending VFPTaking Advantage of VFPX

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:

  • GoFish: the successor to Code References
  • Go To Definition: opens the definition of a method, property, object, PRG file, procedure, function, method, form, or class, or creates a property or method ... with a single keystroke
  • Super Browse: browses tables and simplifies the selection of fields for SQL statements
  • Tools for re-factoring
    • Working with highlighted text
      • Extract to Method / Extract to Variable / Extract to Constant
      • Wrapping text (IF/ENDIF, etc)
    • Copying and pasting objects, and properties/methods in an object
    • Working with Parent and Container Classes
  • Finder
  • Set Object size and Position
  • BeautifyX
  • Recognizing and correcting C5 errors inside WITH / ENDWITH
  • Working with .H files

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:

  • How to install Thor
  • How to use a wide range of tools for the IDE to increase productivity, right out of the box
  • How to configure the IDE by making these tools accessible

Prerequisites: None

Extending VFPWeb and Mobile

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:

  • How to put a browser into your application
  • How to limit the browser to only give you sites that can be worked on
  • How to extend this browser to start doing WYSIWYG typing and styling
  • Most importantly, what to do with that HTML code when that editing is done

Prerequisites: Some HTML

Solidifying VFP Development

Solidifying VFP DevelopmentExtending VFP

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:

  • About IntelliSense scripts you can use everyday
  • How to build time-saving Command/Keyword expansion and syntax completion techniques
  • How to make coding easier using Quick Info, Member Lists, and Types.
  • How to leverage and manage Most Recently Used (MRU) lists.
  • How to avoid the duplicate typing that comes naturally with SET commands.
  • How to reap the benefits of the C operators.
  • How Property Editors play in the IntelliSense sandbox.
  • Ideas to improve the IntelliSense Manager.
  • About Runtime IntelliSense, and how to take advantage of it in your custom apps.

Prerequisites: Desire to be more productive in the VFP IDE, and basic understanding of IntelliSense inside VFP.

Solidifying VFP DevelopmentExtending 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:

  • Advantages (e.g. able to run app against SQL Server data or VFP free tables, easily move between records, save record without using TableUpdate)
  • Disadvantages (e.g. SQL injection)
  • How to build a business object
  • How to use the business object to load, save, move record, etc.

Prerequisites: None

Solidifying VFP DevelopmentMoving VFP Applications Forward

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:

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

Prerequisites: Experience developing VFP apps

Solidifying VFP DevelopmentMoving VFP Applications ForwardExtending VFP

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:

  • What n-tier or Separation of Concerns is all about
  • About examples of clean n-tier architecture in Visual FoxPro
  • Simple ways to refactor existing code to fit the separation of concerns model and thus begin to be able to take advantage of modern technologies
  • Effective techniques to ensure that future application components fit properly into the new model you are working towards
  • The strengths of FoxPro in conjunction with the best layer for certain processes

Prerequisites: None

Solidifying VFP DevelopmentMoving VFP Applications ForwardExtending VFP

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:

  • About importing flat file data into VFP
  • About exporting VFP data to flat files
  • Why dates and numbers can be tricky
  • Why Excel files are not data
  • About methods to make working with serial data easy

Prerequisites: None

Solidifying VFP Development

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:

  • Where the VFP runtime files should go and why
  • How to create a workstation-only installer
  • How to install your applications with zero footprint
  • How to update applications over the Internet
  • How and why to code-sign your application and installer
  • How to install different versions of .NET

Prerequisites: Basic understanding of VFP application development

Solidifying VFP 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:

  • How to work more efficiently in the VFP IDE
  • How to debug more effectively using the tools VFP provides
  • Differences between some similar language elements and which to choose when

Prerequisites: Some VFP experience

Taking Advantage of VFPX

Taking Advantage of VFPXExtending 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:

  • How to access PEMs from objects (in SCXs, VCXs, and PRGs) that native Intellisense forgot
  • How to access lists of fields from native FoxPro tables, in SELECT statements for both native FoxPro tables and SQL Server tables, and from data objects
  • How to create and use system-wide aliases for objects and tables
  • How to use other related Thor tools to achieve auto-completion of names used in a procedure and to find #Define compiler constants

Prerequisites: None

Taking Advantage of VFPXMoving VFP Applications ForwardExtending 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:

  • GDIPlusX
  • Image manipulation tools
  • .NET to VFP code conversion

Prerequisites: Some GDIPlusX experience useful, but not required

Taking Advantage of VFPXExtending VFP

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:

  • Explore the Data Explorer enhancements
  • Determine how FoxBin2PRG fits in the binary source code flattening space
  • Generate Excel files without Microsoft Office or OpenOffice using ExcelXML
  • Get a quick overview of changes to the mighty Thor!
  • See the value of Finder and how it has become a legitimate project manager replacement
  • Peek at the FoxCharts enhancements that make charting in your applications easy
  • ...and more as the year progresses.

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:

  • What is new in VFPX in 2014
  • How VFPX is going to make a developer's life easier
  • Where to get all the new goodness
  • Why it is more important than ever to get involved in VFPX

Prerequisites: None

Taking Advantage of VFPXExtending VFP

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:

  • GoFish: the successor to Code References
  • Go To Definition: opens the definition of a method, property, object, PRG file, procedure, function, method, form, or class, or creates a property or method ... with a single keystroke
  • Super Browse: browses tables and simplifies the selection of fields for SQL statements
  • Tools for re-factoring
    • Working with highlighted text
      • Extract to Method / Extract to Variable / Extract to Constant
      • Wrapping text (IF/ENDIF, etc)
    • Copying and pasting objects, and properties/methods in an object
    • Working with Parent and Container Classes
  • Finder
  • Set Object size and Position
  • BeautifyX
  • Recognizing and correcting C5 errors inside WITH / ENDWITH
  • Working with .H files

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:

  • How to install Thor
  • How to use a wide range of tools for the IDE to increase productivity, right out of the box
  • How to configure the IDE by making these tools accessible

Prerequisites: None

Technology and Business for the Developer

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:

  • A method for taking control of your busy life
  • A way to empty your mind of all the endless loops
  • How to take control when you feel overwhelmed by the busyness of your life and work.
  • Various tools you can use to help you be more productive.

Prerequisites: None

Technology and Business for the DeveloperPre-Conference

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:

  • How to track changes to data
  • Where to look for bottlenecks
  • What those index options mean
  • How locks and hints really work

Prerequisites: None

Technology and Business for the Developer

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

  • Software development (Source control, Teams, Tools)
  • Marketing (tools for marketing the software, advertising, web sites and trade shows)
  • Finances (business finances, employees and taxes)
  • Sales (pricing your product, making sales)
  • Customer support (keeping the clients happy)

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:

  • The benefits and pitfalls of owning your own software business
  • Tools and techniques you can use to market your software
  • Tools and techniques you can use to sell your software
  • Tools and techniques for keeping your clients happy
  • What the financial model for a software business looks like and how it works

Prerequisites: A desire to be your own boss.

Technology and Business for the Developer

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:

  • About human perception and how our bias influences it
  • How visual information should be structured
  • Why reading is unnatural and what we can do to make it a better experience
  • How placement of objects can supersede content
  • The strengths and weakness of how we perceive color
  • How our short term memory (attention span) influences the decisions we make
  • Why hand-eye coordination rules are something we should care about
  • What other senses we can apply to the UI to extend it beyond a visual experience
  • Why Culture is important and misunderstood

Prerequisites: Experience with XBase++ or Visual FoxPro code

Technology and Business for the Developer

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:

  • Why PowerShell is useful
  • How to create PowerShell scripts
  • The basics of PowerShell programming

Prerequisites: None

Moving VFP Applications Forward

Moving VFP Applications ForwardExtending VFPWeb and Mobile

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:

  • What REST is
  • About examples of systems that expose their API using RESTful interfaces
  • Different ways to plug your Visual Foxpro applications into RESTful APIs
  • How to build some full featured applications components that take advantage of RESTful interfaces

Prerequisites: Some XML

Moving VFP Applications ForwardExtending VFPTaking Advantage of VFPX

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:

  • GDIPlusX
  • Image manipulation tools
  • .NET to VFP code conversion

Prerequisites: Some GDIPlusX experience useful, but not required

Moving VFP Applications ForwardWeb and Mobile

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:

  • How to protect your app from unlicensed use (product activation and validation)
  • How to access external API's (paid or free) without needing to save your access keys and passwords in your app source
  • Error reporting made easy
  • How to find new versions of application "components" to download and install on-the-fly

Prerequisites: Working knowledge of creating multi-threaded DLLs with Visual Foxpro, and some knowledge of ASP.NET

Moving VFP Applications ForwardPre-Conference

Presenter: Frank Perez
Level: All levels
When: Thursday, October 16, 1:00 - 4:00, Elliott

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:

  • The pros and cons of Microsoft SQL Server and PostgreSQL
  • How to get started with Microsoft SQL Server and PostgreSQL
  • Some of the tools and options that are available with each

Prerequisites: None

Moving VFP Applications ForwardSolidifying VFP Development

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:

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

Prerequisites: Experience developing VFP apps

Moving VFP Applications ForwardSolidifying VFP DevelopmentExtending VFP

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:

  • What n-tier or Separation of Concerns is all about
  • About examples of clean n-tier architecture in Visual FoxPro
  • Simple ways to refactor existing code to fit the separation of concerns model and thus begin to be able to take advantage of modern technologies
  • Effective techniques to ensure that future application components fit properly into the new model you are working towards
  • The strengths of FoxPro in conjunction with the best layer for certain processes

Prerequisites: None

Moving VFP Applications ForwardSolidifying VFP DevelopmentExtending VFP

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:

  • About importing flat file data into VFP
  • About exporting VFP data to flat files
  • Why dates and numbers can be tricky
  • Why Excel files are not data
  • About methods to make working with serial data easy

Prerequisites: None

Moving VFP Applications ForwardExtending VFP

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:

  • How to replace native FoxPro tables with SQLite
  • How to capture, save, retrieve and display Unicode data in your FoxPro apps

Prerequisites: Working knowledge of Visual FoxPro

Web and Mobile

Web and MobilePre-Conference

Presenter: Bo Durban
Level: Intermediate
When: Thursday, October 16, 9:00 - 12:00, Elliott

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:

  • HTML
  • JavaScript/jQuery
  • Web hosting
  • Data synchronization
  • Mobile Web Development

Prerequisites: Some HTML experience a plus

Web and MobileMoving VFP Applications ForwardExtending VFP

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:

  • What REST is
  • About examples of systems that expose their API using RESTful interfaces
  • Different ways to plug your Visual Foxpro applications into RESTful APIs
  • How to build some full featured applications components that take advantage of RESTful interfaces

Prerequisites: Some XML

Web and MobileMoving VFP Applications Forward

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:

  • How to protect your app from unlicensed use (product activation and validation)
  • How to access external API's (paid or free) without needing to save your access keys and passwords in your app source
  • Error reporting made easy
  • How to find new versions of application "components" to download and install on-the-fly

Prerequisites: Working knowledge of creating multi-threaded DLLs with Visual Foxpro, and some knowledge of ASP.NET

Web and Mobile

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:

  • The comprehensive list of features included in Twitter Bootstrap
  • How to work with the 12-column grid system
  • How to take advantage of re-usable components
  • How Bootstrap uses LESS and CSS 3
  • How Bootstrap can be used inside development platforms like ASP.NET MVC

Prerequisites: Familiar with web development

Web and MobilePre-Conference

Presenter: Stephen J. Bodnar
Level: Intermediate
When: Thursday, October 16, 1:00 - 4:00, Flagstaff

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:

  • What it means to be RESTful
  • About HTTP Verbs and how they are used
  • How data is passed over the web using JSON and XML
  • How to consume third party web APIs
  • How to create a web API allowing others to exchange data with your application
  • How to make an outbound phone call using the Twilio API
  • How to work with incoming text messages
  • What Twilio offers in terms of recordings, transcriptions and notifications
  • What it takes to set up Stripe customers and payments
  • How Stripe handles security related issues such as PCI certification and encryption.
  • How to use Embedded or Custom forms for payments
  • How Stripe charges its customers and how and when payments are transferred
  • How to handle subscriptions or other recurring payments
  • How to use the dashboard and Stripe website to manage your account
  • What it takes to make this work with Visual FoxPro

Prerequisites: None

Web and MobileExtending VFP

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:

  • How to put a browser into your application
  • How to limit the browser to only give you sites that can be worked on
  • How to extend this browser to start doing WYSIWYG typing and styling
  • Most importantly, what to do with that HTML code when that editing is done

Prerequisites: Some HTML

Platinum Sponsors
Gold Sponsors