Archive | FoxPro

The most powerful desktop database development environment in the known galaxy. Sadly owned by a company not interested in promoting it.

Life After VFP

Robert Jennings posts Yet “Another Life After VFP Thread.” For those not following VFP closely, MS recently announced a confirmation of earlier news that there were no plans for a VFP version 10, and that the VFP scripts in the project known as Sedna would be released under some sort of public license. Poor communications lead to media and Slashdot reports that VFP was to be Open Sourced, sadly not the case.

Robert does a good job of outlining the huge cost in moving a vertical-niche application into another development environment, language and runtime. Most sophisticated specialty applications have person-years of investment built into them, knowledge not easily extracted, transferred or translated to any new environment. Regardless of whether that new environment is Dot Net, Dabo, LAMP, Python or Visual Fred, there will be a huge cost and risk with any enterprise making this switch.

Unlike the Open Source world, when a vendor choses to discontinue a product, developers have little choice but to move along. While many folks point out the upside that the product will likely run for years to come, and a lack of Microsoft official support doesn’t instantly obsolete a product (DOS apps can still be found, after all), there is an immediate slowdown in the custom software market, and a longer-term turning away from the product by customers. Large-scale vertical products have to be operating with 5- and 10-year plans for reinvestment and changes in direction, to ensure they can fund “The Next Big Thing” while continuing to deliver good value to their customers today and tomorrow.

This is not a death knell for the product. The writing has been on the wall for years. But developers with large applications have to be looking around for a new platform.

FoxPro developers always viewed themselves with a bit of “Battlestar Galactica” mythology: a rag-tag crew of self-taught developers from the PC Revolution, they survived the dBASE wars and the implosion of Ashton-Tate. Working under a cruel master who never promoted their product, they persevered. MS’ internal team developing VFP did amazing things on a shoestring budget, introducing a fairly smooth transition from procedural to object-oriented, from developer-guided to event-driven interfaces, from characters to pixels, from local ISAM to RDBMS. The VFP IDE was a remarkable environment in which to develop rich-client, component-based, web-driven or even server-based applications. I will miss it, and look forward to becoming as skilled at my next platform.

FoxTalk Death Throes Continue…

On the FoxPro wiki, Alex Feldstein documents the most recent of many problems with New Hill Services, aka Eli Research, the latest purchasers of the FoxTalk newsletter, originally from Pinnacle Publishing. (Disclosure: FoxTalk published several articles of mine, starting in 1992 and ending in 2004). These people are just incredibly clumsy in the way they have worked with the community that once supported the newsletters. Terminating the editor, dropping or antagonizing their top-notch contributing writers, harassing former subscribers and failing to engage the community have ruined any chances of FoxTalk’s recovery. I wish they would just terminate the paper and spare us all the embarassment.

Just this morning, I received an email announcing “Your latest FoxTalk 2.0 is Available Online!” Curious if they were giving away free online content or offering a trial, I navigated to, which asked for a login and displayed the Pinnacle (not Eli, not New Hill) logos and no links — no “Who we are,” “Read our other publications,” nothing. Really suspicious. Examining the HTML source, there were no signs of foul play (it does look like a phishing expedition, doesn’t it?), so I tried the “forgot your password” link and supplied my email address (I already get and squash 500 spams a day, so one more wouldn’t hurt). I promptly got an email with my password, and attempted to log in. “Account Expired” it told me, again with no other information or links. How annoying! If it was expired, why send the email notice? And wouldn’t this be a killer opportunity to ask me to re-up? Nothing. Bozos.

Hacking WordPress with Visual FoxPro

My first attempt at importing blog postings from Radio Userland to WordPress resulted in over seventy categories. Every post with a different combination of categories like “MySQL; LAMP; Technology; Security” created a new category with that exact name, rather than a one-to-many post-to-categories representation. WordPress supports this, as does Radio. The communication breakdown occured between the two, in an export routine I used that created MT-compatible text files.

I could have kept experimenting with different imports, but I’d rather just plow ahead with what I’ve got, so I took a look at the WordPress schema and figured out what I’d need to hack. I used Visual FoxPro to read in the category table, figure out which (multiple) category posts I should have instead of the single, multi-category category, and rewrote the many-to-many file that joins the posts to the categories.

That narrowed it down to 15 categories. I added a new one, “Personal” for notes about politics and personal goings-on. I hope to squash the four, now three “My” categories, which are the old example categories left over from the original Radio install. Stay tuned!

I noted the counts of the number of posts per category was showing zero for several categories. There’s a (denormalized) category_count field in the category table. I popped open phpMyAdmin on the server to poke around and finally issued a “update wp_categories set category_count = (select count(*) from wp_post2cat where category_id = cat_ID)” to get the counts to update. Thirteen rows updated in 0.0635 sec. Darn near as fast as Rushmore.

New E-book: VFP Best Practices for the Next 10 Years

Over at Shedding Some Light, Rick Schummer blogs VFP Best Practices E-book Available “Have you read some of the blog or forum posts touting the sessions at GLGDW 2006, and kicked yourself for not attending? Wish you had a second chance? Well Whil is giving you a second chance by releasing the session whitepapers as a new e-book: Visual FoxPro Best Practices for the Next Ten Years

What a great idea! I wish more of the conferences would offer their proceedings in electronic format! There is so much knowledge in those conference notes. While it’s nowhere near as good as attending the conference in person, these notes can be treasure troves of clever code and solutions.

Why Not FoxPro?

On the ProFox mailing list on 2/24/06, Dave Bernard wrote: > > For every person on this planet planning or executing a complete rewrite of > a working line of business VFP system (not a developer tool) into > .NET/J2EE/anything, I want to ask a simple question: > > “What were the business reason(s) for doing so?” >

1. Scale. Client wanted to move to gigabytes of data, and their internal programming staff and consultants they brought in could not develop a satisfactory app. Client invested millions in DotNet and SQL Server, and went bankrupt. Remants of the company are back to megabytes and back to VFP.

2. Inability to find good consultants. Having gone through a dozen VFP developers who were dBASE refugees and should not have been developers, company went for the magic pixie dust of Java. After millions of dollars of development (sounding familiar?), company was bought for hundreds of millions of dollars and entire app was scrapped in favor of the purchasing company’s existing system.

(There are a lot of developers out there who write junk for code. I don’t think VFP attracts them, especially, perhaps it’s just had a longer time to accumulate them? I’ve seen some pretty awful stuff out there.)

3. Painted too deeply into the corner: I supported a client for nearly a decade who had a legacy system written by a well-known developer early in the VFP 3.0 days. There were no best practices then, so there were some fairly complex work-arounds. The system was very large and very complex, and the micro-managing, penny-pinching boss would never authorize an hour spent to rewrite something that worked, no matter how arcanely. After a decade of making serious money out of this application, he got caught up with a young guy who could show him spiffy little tricks in *Delphi* of all things (out of the frying pan, into the fire) and, not understanding the differences between superficial GUI tricks and the deep functionality of his application, put his existing development into maintenance mode to go on a wild goose chase with Delphi. He was too cheap and too wily to lose his business to this, but his best developers quit, his customer base moved on, and when he sells out in a few years, he’ll get a lot less than he could have.

4. Slightly off-topic from the VFP re-write question, but an answer to why not FoxPto: Corporate standards: I tried to pitch a WebConnect app to a Very Large Insurance Company. They had standardized on: Macs on the desktop, Novell for their network, Oracle for their database and Netscape Enterprise for their intra-, extra- and inter-nets. I fought this one all the way up to a one-on-one with the CIO, who tried to explain to me that Microsoft was “going the wrong way,” a view I’ve come to agree with, but for different reasons and with a differnt new direction. IT evolution slowed to a crawl in this company, and the CIO has taken an early retirement to “pursue other interests.”

5. Cost savings: Tired of paying experienced senior developers with decades of experience in the business niche and this particular application, PHB thought it would make sense to employ cheap VB developers to rewrite the app in the para-dig-m of the day, VB and SQL Server. Experienced developers moved on, weaker devs stayed on for free training. New apps took forever to deliver, cost gazillions, and lacked the functionality of the original. Customers wouldn’t upgrade for fewer features. Company foundered, bought up by BigCompany for 1/10th of peak worth, for customer base. Old code and new code discarded.

In summary: incompetence, incompetence, incompetence, incompetence, incompetence. Hmm. Guess there is a pattern .

So, Dave, you were looking for GOOD business reasons to switch? I have run into few of them:

Good apps need to be rewritten every once in a while, as cruft builds up, and the model of the business encapsulated in the code doesn’t always evolve as fast as the business does. Software tends towards rigidity and/or fragility. Refactoring and other advanced techniques are designed to extend the longevity of an application, but refactoring a gnarly old app can be more costly than rebuilding.

When rewriting, you have the glory of starting with a clean slate, and re-examining your assumptions. New business models (software rental, software as a service, application service provider) may be available since the original app was conceived (probably back when we used floppies). ACID compliance, disaster recovery, HIPAA and SOX compliance can make new architectures a requirement. New component models, loose coupling, multi-phase commits, heterogenous backends are all designs to consider.

Security is a huge concern with ever-increasing connectedness, portability and liabilities.

So, ultimately, the business decisions come down to:

1. What business(es) do you want to be in? 2. What architectures enable that? 3. What tools enable those architectures? 4. What resources do you have available to execute those designs?

When faced with a clean slate project, new languages and tools are always a siren song. “There are no silver bullets” is a 30-year-old quote.

However, given the specs of a couple of apps lately, I couldn’t find a justification for writing them in FoxPro. While we have a mature language (well-debugged, well-documented and lots of support), some great frameworks and lots of programming talent, there were concerns I could not address: Microsoft has handed out BILLIONs in legal settlements in the last couple of years. Microsoft has made it clear VFP9 is the end-of-the-road for the binaries, with some xBase decorations extending VFP9 into Sedna. 64-bit is out and support for NX bits mean some loss of functionality. Bottom line: a single vendor who is end-of-lifing the product. Competing languages with rich features included Perl, Python, PHP and Ruby had no proprietary vendor lockin, no preferred data source and the flexibility to deploy on many platforms. VFP Web deployment is a chain of SPOFs (Single Point of Failure): W2K3, IIS, COM. In comparison, if a mod_perl app has a problem on Apache/Linux, redeploy on OS X or on Zeus or via CGI. Options. Choice. That’s what it came down to. The VFP solution was climbing out onto a limb with a vendor renowned for orphaning its products.

Orphaning: In the late 80s, I sat in a room back at the Park Plaza Hotel in Boston while Microsoft announced the rollout of the NT platform. During the Q&A session, a fellow came up to the microphone and explained that he was a Microsoft “partner,” had subscribed to their products and had spent years with a staff of programmers developing an app not far from release, but targeted at OS/2. What, he asked, was Microsoft going to do for him? His voice was unsteady, and it was apparent that he was facing a disastrous failure. There was an awkward silence when he finished as the crowd fell silent. There was no noise but an occasional clink of crystal against silverware. A Microsoftie finally managed to speak up, trying to deflect the comment into a pitch for their new development tools. The spell ended, but the impression remains to this day.

I can’t lead another client down that path. THAT’s the business reason.

Ziff-Davis notices FoxPro and Sedna

Microsoft Watch from Mary Jo Foley reports FoxPro Faithful Await Microsoft ‘Sedna’. “This week, FoxPro developers received a first test build of a new set of technologies, code-named Sedna, designed to make FoxPro interoperable with Windows Vista, Office 2007 and .Net.”
“Visual FoxPro developers, oft-overlooked by Microsoft, are about to get an infusion of new technologies aimed at making the FoxPro language interoperable with Windows Vista, Office 2007 and .Net.”

Powered by WordPress. Designed by Woo Themes

This work by Ted Roche is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 United States.