It’s So Gray: Introduction

It was 9:00 on a beautiful fall morning. I was unpacking my laptop, setting up for my first real on-site job at a real client site. I hadn’t turned the office light on so the room was dark, except for the beam of fluorescent light floating in from the hallway.

Suddenly, the fluorescent light dimmed. I looked up and saw the receptionist standing in the office doorway. She asked, “Don’t you just hate The FoxPro?”

“Uh, no,” I responded. “Actually, I love FoxPro. It’s what I make my living with.”

She replied, “But, it’s so – I don’t know – ugly.”

About 20 minutes later, I got my first look at their custom FoxPro app (written by the owner’s daughter). The app was a one-size-fits-all ordering, shipping, inventory, everything-but-the-kitchen-sink application. It was originally written in FoxPro for Windows 2.6, but had recently been “converted” to Visual FoxPro. To run it, the user had to open Visual FoxPro and type do mainmenu in the Command Window.

That was one ugly application, and as far as the office workers who used the app were concerned, the app was Microsoft Visual FoxPro.

It was around this time that I began to notice a common theme in the Fox blogosphere. People were talking about how much their clients hated THE FoxPro, and a few bloggers (namely, the Craig’s – Bailey and Boyd), began talking about how we, as Fox developers, can make our apps a bit less ugly (or, more professional).

Remember Billy Crystal’s character Fernando on Saturday Night Live? His catchphrases were “You look mah-vel-ous!” and “It is better to look good than to feel good.”

In my experience with software, Fernando was right. Sometimes, it really is better to “look” good than to “feel” good. I’ve seen people get excited by an aesthetically-pleasing, yet buggy, application and completely ignore a rock-solid app that looks a bit, well, ugly.

Although we spend a great deal of time as developers trying to meet specifications while minimizing bugs, one thing that I always keep in mind is, “as far as the user is concerned, the UI is the application” (from the Coding Horror blog link below).

The goal of this session is to provide some tips and tricks to ensure your UI looks “mah-vel-ous!”

A Quick Note About “It’s So, Uh, Gray”

For the past few years, most of my Visual FoxPro development has been geared toward “shrink-wrap” software for the consumer market.

As such, I find myself spending a great deal of time with the overall look and feel of the UI. In fact, a lot of my “main” forms are simply top-level forms which host the Microsoft Web Browser Control – which means virtually the entire UI (except for the occasional secondary FoxPro form) is driven by HTML, CSS and JavaScript.

Some of the tips and tricks you see in this session are geared toward apps that are designed to be compiled as EXE files (namely, the DPI-Aware section and discussions of application icons).

Some tips are simply little tricks I use for classes (properties and methods) that help the overall UI experience.

Other tips (creating custom UI controls) are geared towards stepping back from the usual way of doing things in Visual FoxPro, in order to find new ways of presenting information to the user.

I use the word ugly a lot in this session. I am not suggesting that VFP apps are “ugly” or “wrong”. This session is simply an exercise in improving the overall look and feel of apps created with Visual FoxPro. Beauty is in the eye of the beholder – what is ugly to one person may be beautiful to another – and during the course of preparing this session my opinion of “ugly” shifted from an app perspective to a Windows guidelines perspective.

A lot of the content in this session is based on the Microsoft User Experience Guidelines. It is available online at:

http://msdn.microsoft.com/en-us/library/windows/desktop/aa511258.aspx

A PDF version of the guide is available for download at:

http://www.microsoft.com/en-us/download/details.aspx?id=2695

Finally, all of my FoxPro work is done in Visual FoxPro 9.0 Service Pack 2. If you are not yet using VFP9 SP2, some of the tips may need to be modified in order to work correctly.

Ceil Silver Ambassador Fund

One of my best highlights of last years Southwest Fox conference was meeting Emerson Reed. Emerson is the creator of the ThemedControls suite on VFPx, a stunning set of visual controls which provide a modern UI for Visual FoxPro applications.

He is also one of the nicest people I’ve ever met. Every minute I spent with Emerson at the conference was a great pleasure for me, and I’m very thankful for the opportunity to have met him in person.

Emerson attended the conference as the first Ceil Silver Ambassador to Southwest Fox, representing the Brazilian FoxPro Community, and he truly was a wonderful ambassador.

If you’ve never heard of the Ceil Silver Ambassador Fund, here’s some info from the Southwest Fox Website:

The Ceil Silver Ambassador Fund brings a developer to the Southwest Fox conference as an ambassador for the developers in his or her country. This gives the recipient the opportunity to meet and share experiences with developers attending Southwest Fox and gives other attendees the opportunity to learn about VFP development in the recipient’s country. The Fund is financed by contributions from the VFP community, and from Geek Gatherings.

The Fund is named in memory of Ceil Silver, a long-time member of the Visual FoxPro community, who passed away in January, 2009. Ceil served as Editor of FoxPro Advisor’s Tips and Tricks column for many years and was the founder of the Westchester County FoxPro chapter of PADD, the Professional Association of Database Developers. She was also a contributing author to Special Edition Using Visual FoxPro 6. Ceil understood the value of attending professional conferences, and continued to attend them until her failing health prevented it.

At the conference, Emerson showed off the ThemedControls during one of the Show Us Your App sessions, including a new Office 2007-style ribbon control. Everyone in the audience was amazed at the capabilities of the ThemedControls.

He also spent a lot of time answering questions from me. I’m sure I sounded like a total hack with some of the questions, but he was always gracious and patient, and never turned me away.

When he showed the Ribbon control, he asked for help from the community in developing it. I told him I’d love to help. Unfortunately, thanks to limited time and resources (and by resources I mean ability on my part), I’ve sadly been zero help at all.

So if you have a hankering to help, please contact Emerson via his blog or the CodePlex site.

Emerson Reed – Southwest Fox 2009 (From Emerson’s Blog)

This year there will be TWO Ceil Silver Ambassadors at Southwest Fox: César Chalom (from Brazil) and Bernard Bout (from Australia).

Both César and Bernard are active bloggers on Foxite, and both have done tremendous work with GDIPlusX and showing us how to move our Visual FoxPro apps into the 21st century.

Emerson, César and Bernard truly put the “Visual” in Visual FoxPro.

César also created the FoxCharts (on VFPx) and FoxyPreviewer (a separate project on CodePlex). Both are sensational reminders of what is possible with VFP.

I’m really looking forward to meeting (and learning from) both of them this October.

Updated: 11:32AM – Rick Schummer pointed out that FoxyPreviewer is not a VFPx project. It is a separate project on CodePlex. Thanks, Rick!

Unfinished Business

It’s been a few days since the big announcement, and from reading the various blogs, articles and comments, it seems that half the VFP developers in the world “expected” it, and the other half were “shocked” that there will be no VFP 10.

Meanwhile, the rest of the developers in the world were “shocked” that there even was a VFP 9.

For me, while the announcement was expected, it still felt like a kick in the gut. Until I started thinking about the real surprises in the announcement. Sedna will be FREE for download and released on CodePlex under a shared source license.

The community will continue to grow and prosper. With VFPX, we have the ability to continue to further extend the capabilities of Visual FoxPro.

For me, one of the best things about using Visual FoxPro is knowing that I’m probably going to learn at least one new thing every day. The product is so rich in features, there are still many parts of the product I haven’t even touched yet. I’ll be lucky to hit them all before 2015.

So, I’m not too worried about having to learn new paradigms and new languages.

I’ve got too much unfinished business with FoxPro…

This post originally appeared at the Foxite Weblogs site.