Monday, October 26, 2015

Looking Back


Visual FoxPro, abbreviated VFP by Microsoft, is the name of the power programming tool I used around the change of millennium (late 1900s, early 2000s).  The package went through several editions, up to VFP9, and that was after Microsoft bought it and made it run inside Windows.

The computer language VFP implemented was more formally known as xBase, with a first commercial implementation known as dBase II (there was never a dBase I).  At one point, Microsoft expected BASIC, xBase and C to be three major pillars going forward (a magazine cover I recall).  This was well before Java, or Python, or the .NET ecosystem.

Given I'd cut my teeth on programming at Princeton (Class of 1980) using both punch cards and a dumb terminal, by the time I returned to Portland five years later, I was ready to get up to speed and take clients.  Given my wife to be was a fund accountant for nonprofits, it makes some sense that I'd work in that sector also.

We sometimes had the same clients, as was the case with Vision Northwest, providing support for mostly older adults losing their eyesight to varying degrees.  Dawn did their bookkeeping while I launched their first Vision Voice application, a programmable phone tree that came with its own circuit board for the PC.  Users could navigate to informational recordings, made by VNW staff, including sale prices for grocery stores.  Fixed income seniors needed to save every penny.  I also wrote dBase for them.

Dawn and I became a business partnership in 1990 having both served at CUE (Center for Urban Education), itself a nonprofit providing tech support to other nonprofits.  Steve Johnson ran the Apple computer center (Macs + LaserWriter).  Thanks to a government contract, we later added PCs by IBM and its army of clones.

I took on dBase clients, and even a FORTRAN client, starting then, plus taught computer classes.  Dawn was the CUE bookkeeper.  My boss was Carol Slaughter (later Slegers).  Her boss was David Lansky, through whom I made my initial connection with Providence Health System, eventually to become my biggest client for my Visual FoxPro programming services.

Visual FoxPro's tenure at Microsoft was uneasy, because (A) it had its own IDE distinct from Visual Studio (B) it competed for market share with Access, a Microsoft flagship product (C) it started to spread free of charge, in Europe especially (I heard Prague was a HQS), outside of Microsoft's control.

I'd say reason (B) was the most devastating, as Access was the Microsoft flagship in that important realm of cube farm databases, but then I'm not a Microsoft insider and have never been a BASIC fan (in any of its incarnations, including VBA) though I appreciate how it filled a niche.  So lets count me as biased.

VFP was able to parse SQL in-line as part of its object oriented syntax.  It has (or had  -- Microsoft discontinued support for the language this year) a stellar development environment, in terms of letting one drag and drop widgets into place.  On the other hand, the separate DBFs for each data table, with external indexes, was immature.  Talking to a dedicated SQL engine makes more sense and in that sense the writing was on the wall:  xBase would be going away.

These days, the most standard architecture is to have a general purpose computer language talk to SQL and noSQL engines through APIs.  The Microsoft tool stack includes Visual Studio with Apache Cordova or maybe Xamarin, allowing programmers to write for iOS, Mac and Android, even Blackberry, as well as Windows.

However, given the demise of VFP, I've not been on the Microsoft bandwagon for some time now, except at work, where I run Eclipse on a Windows server back ended into a Linux filesystem.  I teach Python, which runs fine on Windows.

At the height of my career with VFP, I was juggling both CLAIR and CORIS.  CLAIR was the Cath Lab Angioplasty and Interventions Registry whereas CORIS usually decoded to Cardiac Operating Room Information System or something of that nature.  A co-worker, Andy Bennett, made up these abbreviations.

CLAIR ran in the cath lab and helped technicians capture useful research data at the point of care.  CORIS did much the same thing in the operating room.  One of the heart surgeons took CORIS on the road to show it off to other companies as the kind of thing hospitals might use (given ours did, under his supervision).  Our collaboration was no doubt influential although neither application spawned directly derivative works.  They were each one-of-kind.

I'm not the only "VFP refugee" who had to turn to other technologies.  The fact that Microsoft had made VFP fully object oriented, even more so than VB, and the fact that xBase had always had a shell (called the "dot prompt"), or REPL, made learning Python pretty easy.  C# is too low level, coming from a FoxPro background, meaning it requires too many lines of code to get too little work accomplished.  Moving from VFP to .NET of any flavor was not a paved, well-signed highway, so many VFP refugees took off in different directions.  Yes, a diaspora.

Nowadays I look at the Python-Jython / Clojure / Java ecosystem as my homeland.  I'm actually towards the bottom of the Clojure ladder, but that just means lots of room for advancement.  When you're at the top of all your ladders, that's not necessarily a pleasant occasion.  I like having both object oriented and functional programming languages running on the same VM, in this case the JVM.