Monday, December 31, 2007


As Rick notes on Shedding Some Light: Fox Rocks with FoxRockX, Rainer Becker is about to launch a new magazine, taking the place of FoxTalk and FoxPro Advisor. Rick has the full details on his post, well, full details except for where to get more info, but I'm sure that's coming.

Looks like 2008 is going to shape up to be a GREAT year for VFP developers.

Powered by ScribeFire.

Monday, December 24, 2007

Merry Christmas

Whether you celebrate now, have already celebrated your past holiday, are planning to, or not, I hope you find yourself surrounded by family and those you love during this holiday season and are able to remember fondly those who are not with you.

We often find ourselves buried in work, or too distracted by other problems, to share and remember a few moments with those closest to us. So many of us are separated by huge distances, we often find it easier to focus on those who are out of arm's reach yet so easy to connect with online, instead of those who are right beside us.

So do yourself a favour, put down the keyboard (stylus, mouse, etc) and spend that time. I know I will.

Merry Christmas.

Powered by ScribeFire.

Monday, December 17, 2007

Where is Sedna?

OK - this is getting a little long now...unless Microsoft is saving it as a Christmas gift for December 24th. It's now been 1 month since the release of XSource for SP2, 2 months since the dbi Controls have been available, 2 months since the release of SP2, 3 months since I spoke with Rick/Doug who thought everything was on track for Sedna, 6 months since the last beta (even though Doug has been posting bits and pieces) and still we don't have the new pieces.

I thought maybe it would be a stealth upload to Codeplex but no. All that's there is the slow but steady updates to VFPX.

Lisa's doing missing documentation...and I'm sure most of the Fox team has gone off to their other new areas...but surely someone is still at home getting ready to put Sedna to bed...anyone?

Wednesday, December 12, 2007

Concentric Hosting is Currently Down

I currently manage 4 sites that are hosted by Concentric - around 12 or possibly 11:30 EST, their servers shut down for unknown reasons, affecting http, email and other services.

I saw that on twitter, other XO sites may have also been affected.

I finally got through to Support after an hour. Of course, their support team don't have much knowledge nor an ETA for the resolution.

About an hour ago, all sites were erroring with Site Not Found errors - the site is now reporting a 500 Server Error - Could not connect to VFS server. So I guess that's some progress.

This just p*sses me off. You can't even get to a site to find out what is happening but once I do find out, I'll post it here.

Of course, at this stage, I can't even redirect the DNS to another site - since they manage it. Or can I? Any ideas?

I suppose this isn't so bad - it's only the second time in 10 years I've had this problem but still what a pain and I've got clients who use some of the other sites as well. Argh!

Tuesday, December 11, 2007

On Automated vs. Human Testing

A lot of people are pointing to Joel Spolsky's Talk at Yale: Part 1 of 3

and it's a great read. If you read it further, I guess closer to the end of Part 1, he makes some very valuable comments on automated testing and the need for human intervention, using Vista as an example:

Speaking of the old approach to testing - "they spent a lot of time making sure that the user interface was consistent from one part of the product to another, because a consistent user interface is easier to use than an inconsistent one."

And because of the reliance on automated scripts - "And so one result of the new emphasis on automated testing was that the Vista release of Windows was extremely inconsistent and unpolished. Lots of obvious problems got through in the final product… none of which was a “bug” by the definition of the automated scripts, but every one of which contributed to the general feeling that Vista was a downgrade from XP. "

"nobody wrote the automated test to check if Vista provided users with a compelling reason to upgrade from XP."

Now that sounds a little harsh but it's also very true. No one will argue (ok, I'm sure some will) that UAC is a better way for managing security, or that putting all the but the reasons that Joel mentions above are precisely the reasons why Chris went off on his rants about the Vista UI last year. Now Ed did counter with some great points but many did agree and the result (6 months after the release of Vista) was still the same.

I'm all for automated testing and test suites, etc - but let's remember that software is only useful if people can use it. And the people who write it aren't always the ones who find the bugs. (great post by Goran Zidar on that)

I often think of this when I wonder why we haven't done more implementing new VFP 9 technology in various products (including Foxfire!). After all, many of the features are completely awesome to put in. But the user experience has to count for something. And while putting a variety of code into the Comments field is one way and while sure, you can build a dialog with a bunch of checkboxes on it - I don't know if you come away making an interface easier to use. Now, most of my readers here are developers - so we want the cool features and the UI on these dialogs certainly works the way most of us would expect it. But I'm taking the leap here from a development IDE to an end user product. Just as a user doesn't always get all the different format options that can be dropped into the Picture box, nor do I think they will get all of the other features. So the user experience has to be considered priority and that is not something that can happen properly with automated testing.

I'm doing some work with outsourced resources from Russian but I've also seen the same results with local contractors. Early on, I have learned that if I want a dialog to say something, I have to spell it out completely - as in word for word, spelling out each dialog. If I don't, I know others will come back and clobber me for it.

Likewise with good user interfaces, it's something everyone needs to struggle with. What is the easiest way for users to discover a feature? (some might argue that users shouldn't have to discover a feature but in this case, I equate discover to inductive user interface). Now some don't get IUI and use obviously bad examples to describe its shortcomings. But that's not the point.

It's all about consistency and while I'm sure there are some automated tests that ensure buttons are lined up perfectly and the right fonts are used, they still don't take the "human impact" into consideration. I don't think any automated test would have shown that Apple's UI decisions would be as impactful as they have been in the software world.

Those that are looking for automated tests to do everything should look into good usability tests. Morae's a useful tool here but sometimes, it's simply enough to set up a Snag It  or a GoToMeeting and just record what people are going through. 

Blogged with Flock

Update: Argh! And just as I posted this from Flock, I was presented with another UI inconsistency. WHO was it that decided that any open-source or non-MS tool should reverse the order of the buttons in a dialog so that the most commonly used option was on the furthest RIGHT instead of the Cancel?

Thursday, December 06, 2007

Crystal Reports 2008 ?? - Really???

Craig points out that Crystal has a new version and in his words, Crystal Reports 2008 -- Don't bother

It's really sad to see companies start ending their support of technology that so many other companies have built their solutions around. Certainly you can't hope to have every technology around forever (I built my first Excel solution using DDE in Windows 2.1) but I find Crystal (er, Business Objects) sometimes makes decisions that are mind-boggingly dumb.

Case in point, Crystal 10 had a nice easy to use Prompt for Parameters. In Crystal 11, this was reproduced by a more web-like interface. Sure, it looked great - but one problem: the customers I had were working in a secure environment where every app that wanted access to an internet page was prompted for security. Not only that, Crystal 11 also used JavaScript heavily - a solution that was disabled for most of the regular end-users.

So while CR 11 may have had these great features, it caused more problems than it was worth.

Why not simply limit the support for older technology? Give them a REASON to switch. One could argue that no one makes applications that use COM anymore - but that just isn't true, not yet at any rate and I don't see it happening for quite some time. If you consider that while a software development tool may only have a lifetime of a few years (consider VS 2003-2005-2008), a BUSINESS application has a considerably longer life cycle - especially when it works.

It's pretty disrespectful of companies to kill features and still expect users to upgrade to it when their businesses run off it.

That's why so many businesses still work off of older versions of applications. Crystal 2008 doesn't offer the same as 11 or 10 before it. In the accounting world, Sage kills off VisionPoint yet the replacement (Pro) doesn't offer the same functionality. I have a client who still uses the DOS version of ACCPAC but generates reports using other tools. I'm sure there are others - look at the OS statistics.

What old application do you still have running around today?

Cathy Pountney: Workaround for Data Group bug

Cathy's posting a workaround for the bug she reported earlier with Visual FoxPro SP2 but the deafening silence from the Redmond camp is kind of annoying. We all looked forward to having a single solid release of VFP from which we could build solutions around - but one that wouldn't be introduce major new problems from previous versions.

Cathy Pountney: Gotcha: Workaround for Data Group bug

Now I suppose one could argue "why didn't this come up in the beta test" but this brings to bear the entire issue of a "public" vs. "private" beta. In my mind, with a Private Beta, users are far more likely to be critical of functionality and not bring on a list of "I want" items. Sure there will be a few - but most developers and users I know of in "private betas" are well-aware that by the time a product goes into "Beta" - the feature list has been locked down and now it's time to fix bugs.

When you release a "public beta", even to developers, you've immediately open yourself up to "why can't it do this" or "I want it to do this", stuff that can take time away from just about everyone on a project.

Now when you look at the Microsoft Connect site, it gets a little more interesting.

There are items that have been reported as Resolved since the release of SP2 but there's no comment about HOW they've been resolved. Does that mean there's a hotfix coming? Or are these items being fixed (somehow) with Sedna? (which still has not yet been released)

It seems Cathy was right about "if enough of us complain, they will address it." but we aren't seeing HOW it's being addressed just yet.

One thing I did notice - is that there is no easy way in MS Connect for someone to pull up all the VFP issues so one thing that would be useful woud be for everyone to preface their bug reports with VFP SP2 (or VFP, at the very least).

While I wouldn't expect MS to continually issue fixes for bugs as they come up in VFP, some of the issues that are being reported are big enough to warrant a hot fix , in my mind. As I said above, I don't mind having a product with known bugs (that have been in there for a while) that we have to work around but regression testing aside, I don't think anyone expected any loss of major functionality. Has anyone heard how these items will/won't be resolved?

Thursday, November 29, 2007

FoxShow #47 Now Available

I just posted The FoxShow #47 that features a great interview with Tod McKenna on the rules of data normalization (the Forms of normalization) and how they apply (or don't) to databases (SQL Server , FoxPro, etc) for general application use and then also for reporting.

It comes in around 50 minutes - but I figure that makes up for the fact that I wasn't able to get one out in the past few weeks.


Blogged with Flock

New Edit Property/Method Dialog Replacement Available

Doug noted it here and if you haven't used it yet, it's definitely worth the download for Visual FoxPro.

I've been using this tool for creating properties so often now that I've forgotten what the original one looks like. Now, they've taken it one step further with the addition of Marcia's Edit Property/Method dialog. Doug's post has a rundown on more of the new features but this new piece totally rocks, making both dialogs dockable and non-modal.

How does that help developers?

You write code and decide that you want to need a new property or method. Habit kicks in and you close your code dialog and click New Property. Now you can't remember the exact name of the property. No problem - open up the code window (while the New Property dialog is still visible) to create it. A lot less trouble closing and opening windows.

Having the Edit dialog being non-modal makes it also really easy to document properties and methods (if you don't fill in the description, you're just making your code harder to maintain).

And I love the ability to switch between Property and Method on the fly in the New dialog - boy, I've made that mistake so many times.

I do have some gripes/wishes but that's WHAT the VFPX project is all about - you want to make changes? Go for it. Either submit them in as wish lists or join into the project and make the changes yourself.

Here's mine - so now I just have to make the changes on my side, test them out and then see about getting them into the full code base:

1. In the Edit dialog, why not have an option to hide the standard PEMs so you're only looking at custom ones? (for that matter, if you're going to show them, why not let us Edit them - this could almost act as a replacement Property window to some extent - and yes I KNOW that's not its scope)
2. In the New Method dialog, we need an option to immediately Add and Edit (as well as add and close).
3. Font options - this is always a tough one - some people like their custom apps (or non-built in tools) to look different - I'm not sold on it - so I would love an option to make the entire UI standard with regards to Font size.

One of the great things about this tool is that it highlights a feature in VFP that very few take advantage of (It seems like Doug has been promoting it for years now) - the ability to completely change what various built-in menu options do. The Help file goes into full details of how it works.

Wednesday, November 14, 2007

Where Have I Been?

Wow - there's been so much information going on in the FoxPro community over the past week and I've been extremely quiet (we lost a beloved pet on November 4th and it's been a bit harder than one might expect).

Craig and Rick have done an excellent job covering the German Developer Conference where Rainer received a Lifetime Achievement Award (congrats Rainer). As Rick noted in an earlier post, there needs to be a more active awareness campaign on VFPX, likely with Codeplex across the board. I know that Alan Stevens has uploaded his VfPX MSBuild Project and there are so many other little projects that COULD be in there.

I see that Craig Boyd has also started a countdown and that Cathy is now blogging (thanks to Doug and Rick's post on this).

Now....back to blogging more regularly...

Blogged with Flock

Saturday, October 27, 2007

FoxTabs lives!

I was concerned a while back about where had gone - it's nice to see that
Craig Bailey has re-forwarded it to the FoxTabs page on this blog.

If you haven't played with FoxTabs before, it totally rocks! And it definitely gets around - I was speaking to one of my colleagues about various tools - and when he shared his screen, there it was! (and no, I hadn't told him about it!)

Sadly, on the site, he does note that the SolutionExplorer itself has been put on hold. That's too bad as too many great FoxPro projects get put on hold while developers have to grapple with daily life. Still, we can get some ideas about what it was all about from the original powerpoint.

It's still a great idea - maybe this concept will lend itself slightly to what Craig, Bo and Alan are working on...until then, however, I may have to come up with my own workaround for it...

Thursday, October 18, 2007

Blogging Southwest Fox

Tod had asked and I'm sure there will be lots of blogging coming from Southwest Fox.

Steve Bodnar has already started SOME of the blogging about going.
Update: Steve continues his coverage with GREAT notes on each of the sessions.
In addition, the FoxShow has some updates and the interview with Servoy.

As well, while I won't be there (sigh), I am planning on having a few calls with Rick and some vendors who are attending while the conference is going on. Instead of waiting for a full show, I plan on posting the updates right away onto the FoxShow site. I definitely will be speaking with Servoy, the Java development platform who is attending the show, hoping to show Fox developers the "java" side of life.

I'll keep this post updated with the other blogging that's going on. If you're on, why not tag it with swfox2007.

Monday, October 15, 2007

Have you picked up your dbi components yet?

It's been a while since their original announcement but dbi-Tech has provided 8 of their controls to all VFP developers using VFP SP2. I covered them about a year ago in FoxPro Advisor (hmm...maybe now it's time to put some revised articles online again).

If you've never used dbi-tech's controls, they all work pretty much the same way so once you get one under your belt, you're well on your way.

Controls that may be of immediate use to FoxPro developers - ctToolbar (Full XP styling Toolbar and menus), ctListBar (similar to Emerson Reed's Themed Controls in VFPX), ctDays (a scheduling style control similar to Outlook), and ctContact (an enhanced list control)

DBI Technologies Inc. | VFP 9.0 SEDNA Components

Great tools for Developers

Over on Rhonda Tipton's Weekly Link Post 10 « Rhonda for October 7th, she pointed to a post by Steven Smith about Nice products for developers.

While the post has a lot of details about VS 2005 and the like, it pointed to a little tool called SlickRun from Bayden Systems. I had previously tried JetStart which gives more of a "Windows Vista" look to the Start menu but found it lacking.

SlickRun takes a different approach putting up a little window in the lower right corner of your desktop (image shown below) but click it and type in a "magic word" and it will start whatever you want to use. Since you control what you want to call things, you can create basic words like "vfp9" or "vfp8" or project-specific words like "clientx" if you want to start up a project in a particular directory. It also includes a quick little jot note function (accessible by the WinKey+J). If you don't want it to appear on your window, you can also hide it in your taskbar (and pull it up by WinKey+Q)

So far I'm really liking it.

Friday, October 12, 2007

Someone forgot the VFP splash screen?

Kind of funky - after installing SP2, I was hit with two issues:

One was more serious - my apps wouldn't run with the runtime, or at least the runtimes that were in the Shared/VFP folder. When I moved them to my app directory, they worked fine. Go figure.

The second was a head-scratcher. Now, I know Microsoft isn't putting more resources into VFP development and I know the team worked really hard on getting SP2 completed with everything. But is there any reason why they couldn't have properly cleaned up the splash screen? Here is what comes up when you first start FoxPro:

UPDATE: Yag has identified that they missed the file. Expect a refresh soon.

Looks like someone edited a bitmap file with MS Paint. On that topic, anyone know how to change the splash screen that is within the EXE?

I remember with older versions of Windows, it was simply a file that was attached to the end of the EXE.

VFP SP2 Released

David Stevenson noted it at 1 this morning - but I saw it on ProFox from Michael Hawksworth. Service Pack 2 for VFP has been released. Interesting to note that XSource hasn't been included for this release but will be coming later - my guess would be as part of the entire Sedna download but who knows...I can now look forward to upgrading all my systems. As David notes, don't install this over previous betas but only over the live system.

Direct link is here.
The Fix list is here.
Congrats to the Fox team for getting this release out.

I wish there had been a little more in the letter from Milind, seeing as this will be the last EXE of VFP from Microsoft but for the community and end-users, this is a great step. Now, (as Mike Feltman noted on the FoxShow) there is ONE static, stable version of the product - no more "wait for the next SP" as we hear from so many other items.

What we do with it now is in our hands...

Visual FoxPro - Letter from the Editor

Saturday, October 06, 2007

Another reason to go to Oz...

If Craig keeps this up, I think I just need to move down there...yes, granted Nick is from Canada - but it seems there's really no end to some of the great stuff coming out of and into Australia these days...especially for Fox developers.

Drag and drop is one of those things that many developers overlook and don't feel can make a major difference in their application and yet once it's been implemented, it totally changes the way the application feels and works to end users. Great topic.

Craig Bailey on Microsoft: VFP: Sydney VFP special event 17 Oct 2007

Thursday, October 04, 2007

Mind42 - MindJet should get worried

I don't know if MindManager is behind (updated - they're not) but one of the things I've been after is a web version of Mind-Manager.

Mind42 (as in For Two) from IRIAN Solutions (I think from Germany) does this and it's a beautiful implementation - similar to Geni's geneaology approach.

It's got some nice basic icons - a VERY easy to use interface and wow! The Collaboration totally rocks and to make matters worse for other Mind Mapping tools, it imports and exports Mind42, FreeMind and Mind Manager files.

I had created a fairly advanced MindMap in Mind Manager and was able to open it without a single problem with Mind42. However, it was unable to open my map that had linked submaps in it.

Some things I didn't like: the direction is always left to right - I can't go down or around or so it looked like. You can do this by adding multiple nodes but it wasn't completely intuitive.

I also had some trouble selecting the nodes correctly every time but the collaboration totally rocks - a colleague and I were editing live just like we do in Google Docs with chat and all.

Check out my sample published map here: Sample MindMap

Mind42 - Free Online Mind Map

Mint Rocks - can't wait for international support

I heard the hype at Demo (or was it Crunch40) and even though I have mostly Canadian accounts, I did set up an account for my US banking.
Mint is totally awesome. I've been looking for this from my own banks for years.

Only American Express currently provides notifications of pending transactions and balance updates but Mint consolidates all accounts into one and provides the same notifications but also one big web site.

I don't know if Microsoft has improved Money at all - I've skipped their last few international updates since they screwed up my initial files - but Mint has definitely set a higher bar.

Wednesday, October 03, 2007

Solution to being able to use ItemTips smartly in Listboxes.

A few months ago, I posted a problem on the Foxite forum about a problem with FoxPro listboxes and ItemTips.

ItemTips, for those who weren't aware, is a property that when turned on, will show the entire item text when there isn't sufficient space in the width of a listbox.

The problem arises however if you are using two (or more) columns with the listbox and the total width of the list is sufficient but the first column doesn't.

x = createobject("Form")
x.listbox.columncount = 2
x.listbox.columnwidths = "125,50"
x.listbox.additem("This is my long item in my listbox")
x.listbox.additem("This is my longer item in my list")
x.listbox.additem("This is my short item")
x.listbox.visible = .t.
x.listbox.itemtips = .t.
x.listbox.width = 200

If you move your mouse over the first item, you will see the tip.
If you move your mouse over the second item, you won't - because the actual text WOULD fit into the text box if you weren't using 2 columns.

Here's the BEFORE picture:

The only solution I had come up with was to pad the text of the items in the list with a bunch of spaces and then some final text, which looks completely bizarre.

Thanks to Rod Lewis of Data Developers - the solution was Found!

It all comes back to the super duper ability to Hide columns. Usually FoxPro developers are used to hiding a column that they want to use as a primary key field but don't want to show it. As in:

listbox.addItem("My company name")
listbox.list(1,2) = "XIFIDSIS"
listbox.columnwidths = "200,0"
listbox.boundcolumn = 2

But this time, think about reversing the logic! When adding the items to your list, add a column before anything else and make the width 0.

Using the previous example:

x = createobject("Form")
x.listbox.columncount = 3
x.listbox.columnwidths = "0,125,50"
x.listbox.additem("This is my long item in my listbox")
x.listbox.additem("This is my longer item in my list")
x.listbox.additem("This is my short item")
x.listbox.list(1,2) = x.listbox.List(1,1)
x.listbox.list(2,2) = x.listbox.List(2,1)
x.listbox.list(3,2) = x.listbox.List(3,1)

x.listbox.visible = .t.
x.listbox.itemtips = .t.
x.listbox.width = 200

Et voila!

The ItemTip will reference the very first column which isn't really hidden - but has a width of 0 so it is invisible.

Here's a picture showing the tip:

One gotcha here: it's a good idea to keep the first part of the hidden column the same as your visible column so users can still use the auto-search with the first few letters.

Foxite.COM Visual FoxPro Forum - - The Home Of The Visual FoxPro Experts

FoxPro: not dead but alive and kicking

ComputerWorld Canada had this article (registration required) from Rafael Ruffulo on products that were killed by their manufacturers but continue to live on. (Of course, XP gets mentioned based on regular news - I still have clients running 2000) but I was interviewed (as was Mike Yearwood) . IDC seems to look at it as a case of investment by programmers to make a product successful and that's why it has built up a great community around it.

I wish the article had a "expected life time" or "future outlook" piece aside from the obit - because some tools are definitely destined to fade away as the hardware architecture changes but others will continue to live on , especially if the host OS stays around for quite some time.

Departmental and End User Computing > Help Desk and End-User Support > Dead techs still roam IT's living world

Monday, September 10, 2007

VFP Runtimes - do we need an installer?

Years ago, the conventional wisdom was that you used an installer program to install the VFP runtimes on the user's machine and then possibly had an application update over it. On network applications (that resided on the file server), this was almost a requirement - the users couldn't run the application without the runtime - but you wanted to be able to install updates without requiring the user to upgrade their runtime files if necessary.

How necessary is that today?

In some instances, very. I still have some applications that reside directly on the file server, where is also where the data lies and thus having a separate runtime installer usually helps - but this can also be detrimental. Even with today's fast networks, the performance hits that come from running an application over the network instead of the local workstation can seriously infringe on the application.

The seeming hassle of creating a separate runtime for the application also strikes fear into some developers hearts as they have to (begrudingly, at times) admit their application uses FoxPro, which can affect how a company with a larger IT department might choose to support it.

This created a chorus of FoxPro developers wanting the VFP runtime to be included with the standard Windows install to make it easier for them to deploy their applications.

So as I was rereading past posts, I came across this great one from Calvin - Enable people to run your programs without installing anything.

It got me thinking - there was a time when a desktop install of 5MB was considered very large but those days are long past. With Windows Service Packs hitting up to 1GB and even the DotNet at 22MB, a 5MB install is nothing - I could install this online in less than 2 minutes.

As FoxPro developers, we are also used to putting files into their "proper" locations - "Common Files\Shared, etc, etc" as though there were lots of applications using the same runtimes. This could reduce versionitis, something that was supposed to be dealt with in XP and now Vista. But is this something that drastically affects VFP applications?

So, coming back to the post, Calvin's entire premise is to just zip up the VFP9R.DLL, VFP9RENU.DLL and the dreaded MSVCR71.DLL and put your application (or your application stub) right in there. Don't worry about pathing, just keep everything right in their own folder.

When combined with a program like Zip2EXE, which you can set to automatically unzip and then run a specific program, or even an installer such as InnoSetup, you can build an entire setup for your application (under 10MBs) that puts everything where VFP can find it without affecting other applications.

You may already be doing something like this so tell me, how do you handle installs?

Sunday, September 09, 2007

Tod blogs from FoxForward

Thank you Tod and added bonus - he's added his programs and presentation slides for Data Warehousing with VFP.

Looks like Kevin's put on another great FoxForward conference!

Tod means Fox | Live from FoxForward: In Alpharetta with My Mustang

Automating Builds in VFP

This is an older post but I was rereading it and realized I hadn't talked about it yet.

While VFP developers wait for tools (such as Solution Explorer (update: removed link - domain expired) or the VFP/X Automated Build client) , this post shows how to do it using a tool that

a) doesn't natively support FoxPro

b) integrates with the FoxPro environment using the VFP OLE Automation.

Yet another useful addendum to Tod's initial post

Kok Kiet's Blog : Experience in Automate VFP Project Build

Thursday, September 06, 2007

Cool Tool for Conferences

This should be updated for FoxForward as well but Dave Aring's great KokoPelli tool will certainly make scheduling conference sessions very easy.

Since it's in a DBC , it should be relatively easy to update for any conferences.

Great tool!

Shedding Some Light: Southwest Fox: K.O.K.O.P.E.L.L.I.

Powered by ScribeFire.

Converting XML to FoxPro tables

Many FoxPro developers are familiar with XMLTOCURSOR() which converts an XML file to a FoxPro cursor for review. This function works typically best with a single table in an XML file.

Unfortunately, it requires a fairly well structured XML file. For example, it can parse this XML perfectly:
<?xml version = "1.0" encoding="Windows-1252" standalone="yes"?>

Yet, it complains when trying to convert:
<?xml version = "1.0" encoding="Windows-1252" standalone="yes"?>

Now the reason may be obvious to FoxPro developers - (ripe-grape is not a valid field while ripe_grape is) - so clearly you have to be very careful when using XMLTOCURSOR.

This program (Advanced XML Converter) will take nested XML tables and create multiple DBF files with it (as well as other formats) - it also deals with these types of issues.

I tried it out because I'm always interested in handling different XML formats. I could likely transform a nested XML into a single one with an XSL but this seemed a little easier.

For those who are unsure what I mean by a nested table, here is a sample (borrowed from here):

      <Lot id="1">

In this scenario, you would see two tables: Lots and Pickers.

Advanced XML Converter saw this and when I saved it as "Vine" it created two DBF files: Vine_Lots and Vine_pickers.

Unfortunately, what it missed was the relationship between Lots and Pickers.

I would have expected to see an foreign key in Pickers that would link it back to Lot. Unfortunately, it missed this relationship. To get it to work properly, I had to do:

      <Lot id="1">
           <Picker id="2">

Which defeats the purpose of the nested XML.

It's too bad - because it did a great job in other areas. Still, might be worth a look if you're looking to at least see what's up with it.

Here's my list of ERs:
1) properly handle relationships
2) build an XSL that will do the conversion for you automatically

Of course, that's not necessarily its purpose - it's more for data crunchers but without the relationship support for nested XML, it is lacking it.

Do you know of a tool that can do this? (either from a command line or others)

Software can turn raw data into structured text., HiBase Group

Powered by ScribeFire.

Tuesday, September 04, 2007

Using VFP to fight crime and help police

Some FoxPro developers may be familiar with the WASP application that was featured as a Microsoft case study. Well, John Harvey has started coming back to his blog (FoxPro USA) and lets us know what he's been up to.

Best quote:
Most of the new development is supposed to be done in dot net, but
there's this thing called "get it done" or "just make it work, now".
So, enter VFP and Web Connection(thank you Rick Strahl).

What's very cool though is how little things are making a big difference and how easy it is for FoxPro to help do it.

Yes - any other tool could do it - but the point here is that you have a subject matter expert (John) combining his development tools to offer solutions that are of value to a large group of people.

Consulting companies often take the approach that things have to be complicated or very lengthy time-wise to build the best solution. This is where you hear end-users complain about "change requests" even for the smallest things (like changing a hotkey) - and then wonder where these companies get a bad rep.

Many times, it's the fast and simple approaches to solutions that make a huge difference.

Powered by ScribeFire.

Monday, September 03, 2007

Lost and Found Again: MindManager on the Pocket PC

Regular readers may know that I am a big fan of Mindjet's MindManager tool - I started using it after hearing about it being a killer application for the Tablet PC and then just wanted to use it for everything. Unfortunately the last version that had a real version for the Pocket PC was 2002. I'm now on the latest version (7) which totally rocks and had just finished sending a "when will you get a mobile version?" to the company when I bothered to look in the forums and sure enough, found a link to this little tool. Pocket Mindmap

It supports all of the key features and best yet, if you only have an older version of MindManager, it's compatible with that version as well.

I think everyone has done this in the past - complain about something and then when you scratch a little further, you find the solution  - I also appreciate it's a pet peeve for just about every company. I know I've seen it a lot in development forums where information is just about everywhere and nowhere all at once - but it's also in other areas as well (as I found out with this case).

Definitely a case of "look before you type"

Powered by ScribeFire.

Thursday, August 23, 2007

How to say no to too much upfront work

Ted Roche posted a great item on ProFox linking to this post. It's typically about designers but it's just as relevant to development. Thanks Ted.

AIGA position on spec work: Design & Business: AIGA

Powered by ScribeFire.

Tuesday, August 14, 2007

The FoxPro ecosystem

Neil Davidson has a great post on the Business of Software blog: The inevitable death of the ecosystem in which he notes how Microsoft is moving into arenas previously filled with their third-party partners and are now competing with them directly. The concern? "Third parties will start to leave the ecosystem and they won’t be replaced. "

So what about the FoxPro ecosystem?
With FoxPro being unleashed, we have a choice: leave it or tend it. The FoxPro community is full of great tools, some competing with each other while others are more complementary. But what is relevant here is that we no longer have to worry about Microsoft possibly coming out with a new feature that will hamper the existence of an existing tool. I recall when the new hooks for the report writer were first being talked about and there was an active discussion from Microsoft about how these changes might affect third party products.

Instead, we are free to build and enhance the great tools that we have been given and also come up with our own. And they can be similar tools or approaches.

Tod's post about automating project hooks referenced Rick Schummer's Project Builder tools - this was one of the first times I had even heard of this tool - because in the past, I've always just done it myself.

While there are other commercial tools available, developers are often a Do-It-Yourself breed. The FoxPro community has always had a good number of developers who are passionate about sharing their tools. Now's a good time to encourage other FoxPro developers to share their ideas and little tools they use.

Many will think now that Microsoft is effectively "leaving" the VFP ecosystem, FoxPro is a "dead product walking" (this is a term mentioned by Rafael Ruffulo in an upcoming article for ComputerWorld canada) - but ecosystems don't have to have major companies supporting it - as long as the other members of that community continue to support it.

Monday, August 13, 2007

Automating Development in FoxPro

Tod wrote a great post on 7/30 5 Ways to Automate Development in FoxPro

I don't use all of these approaches but I did want to touch on his Using Project Hooks and describe one of the ways we make use of this.

We have a fairly "remote" development team with developers in Canada, the US and aboard. We use SourceOffSite to manage our code base which offers its own challenges but one of the trickiest things we have to deal with is creating production builds with the latest versions.

If I build version 2.5.1 of an application and my co-worker has to build it the next day, we want to make sure that he builds version 2.5.2. Now, sure, you could always make sure you get the latest of the project metadata via SourceSafe but that's a bit of a hassle.

Instead, we maintain a table with all of the version numbers for the various apps (there are over 100). The table is stored as XML on our web server. In the BeforeBuild process, when building an application, we download the XML file and convert it to a cursor using XMLTOCURSOR().

We then verify that the application in question is in the table and update the version numbers, first updating the PROJECT version # (provided the table has a later version) and then assigning a new common version #. The file is then reconverted to XML and re-posted to the web server.

We've added a number of other checks into our project process as well (such as copying the EXE to the latest Builds folder, etc) but the end result is that we can have multiple developers working on multiple applications and never need to worry about the version numbers getting out of sync. All thanks to project hooks.

We also did a number of other useful items such as posting notes for the release each you did a rebuild (we had a check to say "Are you building a public release" for this) - while developers may not always provide the most "public-ready" comments about a build, they have helped provide the basis for release notes for every project.

Certainly, it might be nice for some development teams to have larger application life cycle management tools but the cost and implementation requirements for those tools is very often prohibitive. What's great about FoxPro for smaller shops is that it's easy to build all the little pieces you need!

Working with FoxPro SP2 before its release

I don't always recommend running beta software for production purposes but sometimes, when it's good and solid, you can make your own products better or at the very least, make your development day easier.

Cesar has done a great job outlining many of the new features to be found in Sedna here:


In particular, the report enhancements to be found in the Visual FoxPro SP2 beta have been demo'd in a video by Lisa Nicholls - what looks really exciting is the ability to rotate text in a very easy way.

More importantly, Cesar has noted how he is working directly with "pieces" of SP2/Sedna today and how some are directly available without installing the "beta" version of Sedna. For example, you can download the My Namespace directly from Doug's site and he also posted the new Report apps from SP2 on Foxite.

Tuesday, July 31, 2007

Help! My code is suboptimal!

You've got to hand it to SourceGear - not only do they make great products but they make it fun to get swag!

I always wonder if any of the "offers/pleas" companies come out with will even apply to outside the US - I'm happy to see that this one does.

As you can see, (Eric Sink) the Evil Mastermind has me completely at his mercy - he's even got me living in a grey world with fireballs in my hands.

And the full comic is really great as well - where's issue #2? Also, where can I get code-monkeys from?

If you don't know who SourceGear is, they became hugely popular with the SourceOffSite tool, which made VisualSourceSafe useable over the Internet and have since branched out with Vault (a SQL server based VSS system) and Fortress, a SCM tool (x-ray vision goggles not included - or are they?). They also make the great (and free) Diffmerge tool

Monday, July 30, 2007

Vienna will support 32-bit: Even longer life for FoxPro applications

I'll admit it - when Craig has talked about the move to 64-bit in the past, I've agreed with him on it. Microsoft has said numerous times now that they are moving into exclusive 64-bit territory. With all the calls from FoxPro developers wanting VFP to go 64-bit, the amount of work required to do this was always cited as being a reason for not doing any upgrades along this path. Yes, VFP would always run in 32-bit compatibility mode on a 64-bit processor but otherwise, it's not going to take advantage of the next generation of processors. This suggested to me that realistically, 32-bit apps have a future life-span of 10, maybe 15, years.

But this article from ZDNet, Next version of Windows: Call it 7 has a VERY interesting line: "

Like Vista, Windows 7 will ship in consumer and business versions, and in 32-bit and 64-bit versions."

While FoxPro is supported from Microsoft until 2015 but with basic support ending in or around 2010, this means that the next version of Windows will be out around that same timeframe, which would suggest that FoxPro would also be supported under that platform. (as in "runs under Vienna" as opposed to "works with Vienna" or "Certified for Vienna")

It's a curious statement - and maybe someone was misreading something - so if I/they am/are, please clarify.

Most applications these-days are compiled as 32-bit, but more importantly, most of these applications all typically rely on the standard Win32 API. Yes, VS2008 and Silverlight all promise to bring around the wonderful new world of WPF to everyone but real application development on these platforms (as opposed to very cool and fun tutorials) still seems a bit far out there.

Someone recently compared the current tech/dev world to the OS world in the early 90s, when no one knew what the next "big" thing was going to be.

I know of a few large organizations that only just recently moved to XP (from 2000). So yes, there will be the organizations that will continue to move forward and pushing the development edge but they will also be taking a side as to which platform they are supporting. What side the majority of the world comes down on may be a moot point if webware applications (like Coghead - boy that is fun to build with!) continue to grow.

To me, it seems like a good part, if not the majority, of the Desktop world will still be living with 32-bit apps, even though their processors will be 64-bit, for quite a few years to go. In older shops, you may have seen workers flipping between their Windows apps and their 3270 emulation windows. Even today, you see users flipping between Mac to Windows or Linux to WINE apps, etc - all from within their own computer.

The one common denominator that I see on almost all of those platforms? The Browser. Hmmm...maybe Parakey does have something...

Powered by ScribeFire.

Friday, July 20, 2007

Fox Does Mac!

Check out Emerson Reed's new control - I had missed it back at the end of June but this is really cool.

Works similar to the ZoomBar on a Mac. I love it.

What's nice as well is that it's really simple to add into a form and it's all done in FoxPro.

Definitely worth checking out.

Emerson Santon Reed : Here comes a new control... ZoomNavBar!

Powered by ScribeFire.

Thursday, July 19, 2007

What I'm Using

I had installed Wakoopa a few months ago just to see what this tool could do. I installed it on both my laptop and desktop machines (which I typically use concurrently - multi-tasking at its finest - or worst) but didn't really see it doing much.

Doh! That's what it was supposed to do - not much - just keep an eye on what I've been working with. Since a lot of my day is spent connecting to customers, it was no surprise that #3 on my Top 10 software was Remote Desktop Connection (also because I use it to connect to my own server as well) - what I did find interesting was the other software I used. What's also cool is that they keep track of the software and the versions being used - so I can easily tell if I'm out of date.

Sadly, Firefox is number one - but that's because I use it now instead of Outlook completely. Outlook is still what I use to sync my ipaq but for day to day, I almost live in gmail, newsgator and basecamp. Hmm...I wish Wakoopa could keep track of those web sites instead of just saying "Firefox". Anyways, it's an interesting tool and I found one other person who had created a great video on FoxPro as well (in another language, could be Spanish but I'm likely wrong on that)

Very interesting (if trivial in the sense of tracking something that you might not normally track) tool...Wakoopa!

Powered by ScribeFire.

Tuesday, July 17, 2007

Embedding images in your emails

I recently had an email request to do just this and now Cesar shows us how using Visual FoxPro.

Granted, it's with CDO but hey, if it works and the user's machine is set up with SMTP email - but now you know how to do it. Great stuff, Cesar....

Cesar Chalom : Embed images to your emails with CDOSYS

Powered by ScribeFire.

Monday, July 16, 2007

Good and bad habits

Craig Bailey pointed over to this older post by Paul Stovell - Craig's comments on the matter (speaking as a software manager) are just as insightful as Paul's and it reminds me of a recent discussion I was having with a colleague on our FoxPro projects. Paul's triangle diagram is wonderful - you have Resume quality code, production quality code and then prototype quality.

We typically set up a variety of milestones to go through projects, regardless of how small the project may be - and yet invariably, something can jump up - not unlike what's described in BugBash today - and thus throws the entire milestone process into a state of flux. "You have to get this done" or "help this person out" and at the end of the day, time isn't being taken to go through the various steps of the milestones.

We spec'd out a piece of work for an outsourcing resource recently and after reviewing the phase 1 and phase 2 milestones, the comment was "well, why not do it all in one piece?"

Sure, if you've got 10 separate pieces of code to write, why not write them all and THEN review them? (anyone care to guess why?)

We recently wrote up a series of coding guidelines for our outsourcing resources that we use as our primary code review (I mentioned a similar concept in an earlier post) - but one of the milestone steps we always try to incorporate both ways is simply a basic review. While you may not have time to do a proper code review, when handing off work to any resource, it's always useful just to have that "reality check", both on the phone and via shared screens.

One of the challenges? We're all in different locations. We use a variety of tools for this - none seems to do the job properly.

Anyone else face this problem? How do YOU deal with it?

PaulStovell.NET » We are what we repeatedly code

Powered by ScribeFire.

Languages that never took off

Markus points us over to this great take from - what I find funny is that I remember when TWO of these products (Delphi and PowerBuilder) were touted as FoxPro killers.

Ghosts in the Machine: 12 Coding Languages That Never Took Off - Software Developer

I don't know if I would agree with the entire list - but it was interesting to learn the final fate of VRML (which I had hoped would take off) but has now been supplanted with so many other technologies.

Powered by ScribeFire.

Sunday, July 15, 2007

Another great new site for learning FoxPro (for free!)

After my last post about the VFP Bootcamp, here's another site to teach FoxPro from Garfield Hudson. With free videos as well as upcoming premium content, it looks like a great source.

Learn Visual FoxPro - Free!!

This is great to see! His free videos include understanding FoxPro data types, modifying data structures and some really great intros to the VFP environment. Check it out!

Powered by ScribeFire.

Friday, July 13, 2007

Have some people who need to learn FoxPro? Send them to Bootcamp!

Rick commented on the same notice I was about to - Visionpace Bootcamp in August

It's great to see companies like Visionpace and Take Note continuing to offer VFP training like this.

I've noticed a handful of messages recently on Foxite looking for "how do I do..."

Sometimes I refer to them to the online resources but some people do learn better in a classroom environment. These are definitely the places to get it from!

Powered by ScribeFire.

Friday, June 29, 2007

So many conferences, so little time...

In my ideal world, I would be able to attend just about every conference out there - Gnomedex, Advisor DevCon, Southwest Fox, FoxForward, dFPUG and more. Realistically, it's hard for a number of reasons : work, expenses, time, family. I'm always a big promoter of conferences putting some of their sessions online as well, even if it costs something. There's value in conferences even if all the attendees can't get there.  Southwest is going to have a business track which is great - especially because of the number of small business or independent consultants in the FoxPro community.

The Business of Software Conference , coming in San Jose in October, looks like another one that a lot of people would get something out of. It's got a nice mix of developers (Eric Sink, Joel Spolsky), some marketing people, one of my favorite speakers and also Bill Buxton, who has a GREAT session (you can see him speak at the Boston CHI session which is available online)

It's also close  after the Southwest Fox conference - what a perfect time to tour the entire Southwest of the US.

Powered by ScribeFire.

Need an online Wiki? Check out Zoho

FoxPro developers should be fairly familiar with Wikis - after all, Steve Black's FoxWiki has been around for several years, Wikipedia continues to grow in popularity (and so on). MediaWiki is free to install and use but it does have some basic requirements.

If you need to quickly create your own Wiki, check out Zoho Wiki - It's free, fast and easy to set up and works just like other wikis you may know how to use.

Zoho's other offerings are also pretty cool - you just have to get used to the building blocks logo - not exactly business like - but just as irreverent as the Google logo.

Powered by ScribeFire.

Doing Code Reviews with Code Analyst

I mentioned earlier that I was at a developer strategy meeting last week (n fact, Markus was there too) - of course, I wasn't traveling at the time. One of the comments from that meeting was how it's very hard (read, impossible) to stick to manual code reviews. Code reviews are a great practice and certainly valuable but when push comes to shove, it's often one of the practices that seem to slip away in favor of getting things done.

Now, in Team System, you can set up all kinds of rules for checking code in to help manage this process but what can you do in FoxPro?

One idea that came to me was extending the VFPX Code Analyst tool to become "project" or "environment" specific. Yes, you can create a number of new rules to run within the code analyst and enable/disable them as needed but what would also be useful would be to allow different projects to have "different" sets of rules that they might apply to. Then set up a project hook so that when you BUILD the project, the rules automatically run, telling you what's good and what's bad.

In this sense, you now have an automated "code review" tool.

The default rules in Code Analyst handle a number of generic pieces like identifying areas for refactoring, or finding known gotchas like RETURNs within ENDWITH, similar lines of code, but consider project-specific types of rules: ensuring classes are based on a common class library, appropriate use of MESSAGEBOX, no compilation errors, etc - and the tool takes on a whole new benefit.

This is one of those things that I'm going to add to the "to do" list for the Code Analyst: built-in project hooks, and some useful project rules.

What type of rules would you want to see in your code?

VFPX - Home

Powered by ScribeFire.

Wednesday, June 27, 2007

Displaying a Progress bar that doesn't affect your program

I have been really intrigued by the MTmyVFP project on Codeplex - primarily because I want my FoxPro apps to be as efficient as possible and to run in the background where possible but one of my pet peeves in a recent application is that if I'm doing some heavy work and want to display an animation (similar to the Copy files that you see in Windows), the animation really gets bogged down with the processing.

As a result, it looks funky to the user. I had asked Claude Fox if MTmyVFP could be used to do this - and the answer was to make my processing code run in the background and then make the animation run in the main application thread.

That wasn't doable but it made me think: what if I had an application that could show the animation and then I would just call it when needed.

Here's how I did it in VFP:


oForm = .NULL.

PROCEDURE Show (tcTitle,tcAvi)

THIS.oForm = CREATEOBJECT("frmanimation",tcTitle,tcAvi)







DEFINE CLASS frmanimation AS form

Height = 106

Width = 377

ShowWindow = 2

DoCreate = .T.

AutoCenter = .T.

Caption = "Working"

ControlBox = .F.

AlwaysOnTop = .T.

Name = "frmAnimation"

LPARAMETERS tcTitle, tcFile

IF EMPTY(tcTitle)
tcTitle = ""

THIS.Caption = tcTitle
IF EMPTY(tcFile)
tcFile = "filemove.avi"
llRet = .T.
lcErr = ON("ERROR")
ON ERROR llRet = .F.
IF FILE(tcFile)
on error &lcErr

PROCEDURE AddAnimation
.Top = 3
.Left = 0
.Height = 100
.Width = 372
.Visible = .T.
LPARAMETERS nError, cMethod, nLine

** Ignore it

*-- EndDefine: frmanimation

Then build the code as an EXE. I called mine THERM.

Now, whenever you need to show a thermometer, you can call

lo = CREATEOBJECT("Therm.oani")

(hint: you can find AVI files in the VFP Home Directory under Graphics\Videos.)

Your progress bar will appear right in the middle of the screen.  Now when you need to close it, just call:


You can take this even further by changing the form details with THIS.oForm.Caption, etc, etc.

The only downside here is that you HAVE to register your EXE so you can instantiate it but you can do that easily simply by running it once with a REGSERVER.

Now, of course, there is a GOTCHA and that is that if you run this class, you may notice a weird transparent background every now and then.

The solution? Forget using a non-visual class. Instead, create a form with the same code and drop the control on it to begin with.

For good measure, set the Center property of the Animation control to .T.

Then you're even BETTER to go.

So in my class, instead of doing the CREATEOBJECT, I simply call

PROCEDURE Show (tcTitle,tcAvi)

DO FORM DispAni WITH tcTitle,tcAVI NAME THIS.oForm


The end result is a much smoother animation while your application does all its work.

Powered by ScribeFire.

Tuesday, June 26, 2007

The Sketch Questions, the Prototype Answers

This is a GREAT session by Bill Buxton of Microsoft Research on why you should get a sketch pad out when thinking about designing interfaces.

Some great ideas:

 - bring 5 design ideas before you build a prototype (and don't commit to any of them)

 - have great mistakes instead of mediocre successes (in design at least)

 - if a sketch was made in a forest and nobody saw it, it's not a sketch

It's about an hour and a half but you can definitely get some interesting stuff out of it.

Certainly, you can always try simply to follow UI guidelines but...another great one is Why We Should Ignore Users.

Brightcove - BostonCHI - Bill Buxton (Nov. 2006)

Powered by ScribeFire.

Saturday, June 23, 2007

Cloudy or Dark? - your choice for future development platforms depends on you

John, over at gonzomaximus, asked me to respond to his latest post ("The future is cloudy") - I would have directly on this blog but he has comments disabled, so here I am.

I think part of the confusion may have been from my previous post about his World of Tomorrow where I commented that there are a lot of free or low-cost how to's for DotNet.

Since he did ask, I will respond point by point. I certainly don't expect this to become a "read here, read his response, read my response, etc" but I think it's useful to see where this is coming to. (and hey, John - when you get some free time - why not come onto the FoxShow and really tell us how you feel!)

1. Yes, we know you're crazy - oh you said BORDERLINE crazy - sorry, I'll take that back.

2. I agree that to effectively use DotNet, you DO have to get into it a fair bit and likely a lot further than most FoxPro developers ever delve into FoxPro. Just yesterday, I was at a developer strategy meeting and one of the invited guests commented on how to really get the greatest benefit from DotNet, you need to learn how how DotNet handles multi-core, multi-threading, WPF, etc, etc. (I'll come back to that in a minute) It's not simply a "build your app" approach. Another case in point, I just did a Microsoft E-Learning course (a great learning resource) on upgrading from VB 6 to Visual Studio 2005. The basics of OOP and projects aren't anything new to VFP developers - what was interesting however was the attention spent on garbage collection and stack vs. heap, etc. This was in a fairly introductory course, in my opinion (why I took it is a different story) - so I was surprised to see that level of content.

But then, I thought about how frustrated FoxPro developers get when they have to debug stuff that cause C5 errors and have to learn about garbage collection. So it IS valuable to learn.

Also, while many FoxPro developers can make a great application without really getting further into Windows details, some of the really cool things we've seen recently are thanks to developers getting further into the Win32 API than most would want to.

3. I completely agree with John that the majority of FoxPro developers started because they wanted to solve a business solution whereas the majority of C++ developers started out wanting to become developers. But Dotnet also attempts to resolve some of the things that C++ developers need to worry about, via C# and the CLR. Yes - there are still some things that you need to be aware of, but you don't have to be aware of EVERYTHING as you had in the past.

4. Why would you want to mix XAML and VFP? I think there are a few reasons and YES - the pure geeky "fun" of it is one but the other is something I've commented on in the past. With a good understanding of XAML (or XUL or anything similar), where you can essentially build the foundation of a user interface with basic XML, what is possible? You can build your front end for a web app and then still maintain your backend with whatever database you wanted to. My personal enthusiasm comes down to something I LOVE to do with my own VFP applications - and that is to make it extendable (extensible?) at the user level - support dynamic scripting, runtime manipulation and more. If I could find a way of letting users design their own forms at runtime (ok, actually I HAVE done that within VFP), or better yet, find a way that I can make design changes dynamically, I think that's a win-win.

Unlike many developers, I tend to take a "get in, get out" approach to consulting. Every business (that contacts a consultant) has a problem that needs to be solved - sometimes they are big and do require a lot of analysis and project management - but othertimes they are small and don't need the "body shop" approach - they need the "here's the problem, let's get it solved" - and in those cases, I'm intrigued by the possibilities that XAML does offer.

(now I'm not a XAML expert, and I may have a lot of this wrong, so don't hold me to this as the approach but ---) Consider a VFP business component that also had the ability to send down a custom UI using XAML and then it could be customized for whatever platform it needed to be on. What possibilities are opened up to you if you could CHANGE what your application looked like dynamically without recompiling? (here's where I'm sure others will weigh in and tell me - you wouldn't be able to do that - but if I can do it in VFP, I'm sure there's a way to do it elsewhere)

5. Why not Adobe Flex/Flexbuilder? Why not Filemaker? Hey - everything's a tool and you pick the tools of your choice. I've glanced at Adobe Flex, I'm also intrigued by other RIA environments (Gears, etc) - certainly Silverlight isn't the only choice but it is ONE.

John - your main point  "that .Net architecture just doesn't work the way most VFP developers are comfortable with." is valid. Of course, it's a marketing exercise to push VFP developers to the DotNet platform but there's a valid reason for doing it beyond "your application works - why change it?" The reason was brought up at the strategy meeting I mentioned earlier - yes, VFP SP2 is coming out ( Rick Schummer has Milind Lele saying that VFP would only get the "Works with Vista" logo - not Certified for Vista) - so what would happen if a future SP of Vista breaks something in VFP 9 SP2 apps (similar to the visual glitch that many have recently commented on) - would Microsoft issue a HotFix for it?

And while they have recently changed their approach to Google Desktop search, would they do it for a set of loosely-related apps for a handful of businesses?

It's this argument that many consultants will and do use against VFP's continued approach as a platform.

I'm all for finding the right tool to do the job - and Visual FoxPro is the right tool for many jobs - because it gets the job done FASTER and usually better - and I'm sure we'll all sit back and wonder about whatever happened to with a variety of other tools (I still miss NextStep).

So back to am I missing your point? (a LONG WAY back - jeez this is a long post)) - no, I'm not - I'm getting it but Microsoft is offering a suite of development tools to move from beyond the current Windows desktop to a specific future they are building (updated from: believe is coming) (64-bit, Web x.0, mobile devices) . Other vendors are also doing the same based on what they feel is happening. The sad thing is that Visual FoxPro won't be there to make it easier on developers to build the solutions that will need to be built.

But hey, let's not just write about it - come onto the FoxShow and let's talk about it! (when you have time , of course)

Powered by ScribeFire.

Wednesday, June 20, 2007

A Four Hour work week or a simpler life

It seems funny all of the attention on Tim Ferriss' best seller, The Four Hour Work Week, which has some very good ideas (no, I haven't read it yet - but I did listen to his session at South by Southwest) - but many of them seem familiar to me, perhaps because of Bill Jensen's also popular Simplicity Survival Handbook.

The overlap is definitely there:

Tim: Stop checking email / Bill: How to Delete 75% of your emails

Tim: Fire Your Customers / Bill: How to Say No

Tim Result: Four Hour Work Week / Bill: Do Less...Accomplish More

Certainly there's more in Tim's book than just those few items I mention above - but I do find it interesting that both books advocate some of the same actions.

Simplicity: the Book

Powered by ScribeFire.

Tuesday, June 19, 2007

I'm a sucker for a good beer, er, IT strategy story...

Craig pointed me here and then I found this...

The Challenge

Nothing like a good contest between departments.

Powered by ScribeFire.

VFP Sedna Wishlist: A single way of doing dialogs

While Craig is espousing how awesome VFP will work with Sedna and Windows Vista - what IS missing and should likely be the #1 extension put into Sedna upon its release is a way to use the new Vistadialogs4COM under non-Vista platforms. (Updated: Doug brings up a good point in his comments that the purpose of this work was NOT to be a generic dialog handler, strictly for VFP - read the comments below)

As Craig noted, using the dialogs is very simple unless you are allergic to OOP - but it would have been really nice if the DLLs were immediately smart enough to say "hey, you're not running under Vista, so we're going to give you the older file dialogs instead."

I know that Vista is soon going to be everywhere - but NOT including some of this functionality now will limit the usefulness and implementation of this library for regular developers. In most  deployed applications, you are going to be balancing between Windows XP, Windows 2003, Windows Vista and even possibly Windows 98. Then again, in Canada, where they are floating the idea of taxing (additionally) new computers and hardware purchases for additional recycling revenue, I can see the argument for more companies keeping and simply upgrading their existing hardware. If you can do more work on the web today, what is the business argument for switching to Vista?

Maybe it's a case of saying "here's what you can do" and then get the entire community making it more useful. (just like Doug did with the updated New Property and Method dialog).

 If so, I welcome the approach but it kind of leaves me wanting a bit more.

Powered by ScribeFire.

Monday, June 18, 2007

Getting back to customer satisfaction...

You know, if MS hadn't closed down the FoxTeam, this would have been even funnier!

Looking forward to the release of SP2 and Sedna!

Bug Bash Archive Just Checking

Powered by ScribeFire.

VFP 9 SP2 and Sedna Beta now available

Microsoft has made the latest beta for VFP SP2 and Sedna available for download. A good number of bugs have been fixed according to the fix list - I hope this deals with some of the C5 errors I get when working with cursor adapters. Lots of people talking about it - be sure to get it and try it out!

Download details: Microsoft Visual FoxPro 9.0 Service Pack 2 and "Sedna" - Beta

Powered by ScribeFire.

Figuring Out Your Project

(note: on the path to building a software product, there are lots of decisions to make - but perhaps the toughest is trying to decide what type of project /product you want to build. This post describes some of the issues involved - if you've got other ideas, agree or disagree, I'd love to hear about it)

Schedule. Schedule. Schedule

Do you want to be all things to all people from the get-go? Or do you want to grab people's attention quickly and then build functionality based on a longer term vision.

The decision you make will greatly affect how long your entire project will take.

All Things to All People
This approach means you don't plan on releasing a product until it does everything you think it should do across the board.

While the one huge benefit is that you will be able to say "Yes - we can do it" to potential customers, there are several problems with this approach.

"Yes - we do that"
It's always great to be able to say to a customer or potential customer "Yes, we do that" when they ask. It gives the customer a feeling of satisfaction knowing they have chosen a company who has already identified and solved the problem at hand.

Is this the same solution for every customer in that market or a single request from a specific customer? While many companies like to believe they are completely unique in their industry, there usually are a number of synergies that can be applied across a large customer base.

That said, there are many companies who request features because they have never done it any other way before and thus expect the same feature. By ensuring you meet every requested customer feature, you run the risk of bloating your software.

To make this benefit work best, a document or feature matrix outlining everything your software does (and does not do - although by the definition of the concept, this should be fairly limited) is necessary.

"Here's how we do that"

A partner of the "Yes - we do that" benefit is the ability to describe to potential customers precisely HOW you do it. This can offer a huge "relief" factor when discussing implementation issues or strategies with customers.

White papers, demonstrations and presentations are the best tools here - allowing everyone in the organization to understand how each cog in the wheel works.

Identifies strategic partners early
While there will always be some areas that you "cannot" do, you can identify the leaders in those areas and form valuable strategic alliances.

This is incredibly valuable as you will be able to prepare for questions that they have come up with, and also be ready to answer those "can you do?" questions.
Choosing strategic partners can be tricky. Many want to be your "sole- source" which, many times, can be the equivalent of your "soul-source" - you are limited to their limitations as well.

Instead, consider many partners, including some in the same industry. You will always need to choose a "preferred" partner - but you can do that when you absolutely need to.


When will it be ready?
Simply put, more features mean more time. More time to develop, more time to document, more time to test, more time to debug.
If you have an unlimited schedule, great - if not, you have to be able to identify to both your customers and yourself when you expect everything to be ready and then get all of the resources ready to commit to that time.

Is everything being tested?
It's not enough to have enough developers on the project - everything needs to be tested --- by people who will actually USE the feature, instead of those who develop it.

Following a principle of "test early, test often" is the best approach to accomplish this. Expect that developers are doing unit-tests, higher level developers are doing integration tests but also that testers know every possible permutation to test for.

Are we too late?
If you have a long development cycle, the biggest risk is that by the time you are done, your customers or potential customers have already moved onto another platform. You may have the next great gas-powered engine in the world, but if the rest of the industry has moved onto electric or hydro- powered engines, all of that effort will be useful only as an experience barometer.

What did we miss?

Almost as bad as being late is missing something that came out while you were busy working on something else (classic example: Microsoft and the Internet).

Adding new things late in the development cycle is (almost) always a recipe for disaster unless your development process allows for it. Communicating with your potential customers is always a good way of identifying what you might be missing - but keeping your ear to the ground of everything that's going on is just as crucial.

First Out of the Gate

"First out of the gate" doesn't really mean you were the first to do it anymore but it does mean that you are offering something of value right off the bat that other companies may not or may not do the same way.

Instead of taking the "everything but the kitchen sink" approach, you identify certain key features, strip them down to the bare minimum and offer them immediately, allowing you to upgrade them as demand requires.

Faster to build
If you only have to build a tire swing, chances are you'll be done before the person who is building a jungle gym with a swing.

Having a smaller simpler product also makes it easier to add features or to evaluate them later on by keeping a short tight development cycle.

Ship early, ship often is a mantra in many development circles. While it does let you respond faster, it does have its risks.

New Features = New Announcements

Every company likes to promote new features - and the more announcements you make, the better the chance of getting picked up in industry or mainstream press.
Building a smaller application and adding features is also a great way of showing how you are growing your product line. A great example of this is OpenAir - a company that schedules new features once a month. They may be the tiniest feature, but it has grown a very small time-tracking and project management tool into a huge online professional services offering.

Respond to demand

Releasing sooner also lets you get feedback sooner and respond to demand based on the most popular features.

It is the perfect opportunity to solicit feedback from customers as well - because you now have actual customers who are committed to your product.

The other big benefit here is word of mouth - if you have 10 customers and you add a new feature regularly that is requested by 8 of them, it's not just responding to their demand - it also shows them that you care about what they want - a trait that people love to talk about.

Opportunity to link and play well with others

If you only do one thing but do it well, you may find that others who provide other related services (in the same fashion) want to work with you. By opening up to others, you can build an entire network of partners who offer different but complementary services. You may decide to go into a similar area if you find some features that are lacking in a given tool - but otherwise, it might let you focus on a different area.

Easier to test

Simply put - less features to build, less features to test; less features to test, easier to test.

If you have a 5 key features in your product and a team of 5 testers, they can likely do all of the testing on the product in much less time, than if you had 25 key features with the same test group.

It also ensures that the little things that testers (or worse, users) typically find at the last minute can be found faster and earlier because there is more time to do good testing.


Do you offer enough?
If you built a product with feature A, but customers need a product with features A+B, then you either have to have a solution for B, are bringing out B soon after or will lose the customer.

This is why it's critical to define at the lowest possible level exactly what features are needed and will be built.

Too little, too early

If you don't offer enough functionality, then it doesn't matter if you were first - someone will pick up on it and offer the needed functionality in about half the time because they can piggy back on your initial work.

This is the downside of the "ship early, ship often" approach. You show your features to the world and unless you can really capitalize on it, your competitors will instead.

Possibly viewed as "limited"
No one wants to be seen as "limited" - "targeted" or "specific" is better as it shows a single- mindedness to a particular task. But "limited" is a killer term. However, if you are hitting the "new features" with a "fast to build" approach, this risk can be easily reduced or at least, addressed.

Requires ability to say No

This is where personalities play into it. If you (or your managers or partners) can't say "no" to requested features, then you can't hit this approach. It's the corollary to "Yes - we can do that" - you must be able to say "No, that isn't our current focus".

A great example of this ability is 37signals, the company behind Basecamp, who have explicitly said "we are NOT a full-blown project management site" - their focus is on small-team collaboration on projects.

It also requires a single focus - at least for a given feature. SO that everything the company or group does is focused on that one task, instead of several, so that they can get it done and then move onto the next big feature.


Do you have a particular approach you use for projects?