February 19, 2008
Is it October yet?
Although, here in Kansas City, it still feels like October (kinda chilly), we are many months away. Still, I am anxiously awaiting for October 2008 to arrive because that is when the Southwest Fox 2008 Conference will take place. Last year's Southwest Fox 2007 Conference (featuring EVERYTHING you ever wanted to know about Microsoft Visual FoxPro) was the most attended ever; bucking the trend of reduced attendence at VFP conferences. There is no reason why this year's conference can't be even better. It was HIGHLY received by the attendees last year, and first time organizers, Tamar Granor, Rick Schummer, and Doug Hennig are in the process of building upon last year's success.
There are several ways in which the conference can be improved and one of them is to spread the word throughout the FoxPro community about the conference. It is in that spirit that I am pointing you to one of the pages on the ( Southwest Fox website ) that is specifically designed to assist community members in publicizing the conference, the ( "Promote the Conference" ) page. On that page, you will find several ways to help promote the conference and spread the VFP "Word".
I am particularly directing your eyeballs to the section displaying two animated banner ads. One (or both) of these banner ads will easily fit onto a page of anyone's website and/or blog. You can cut and paste the HTML code provided to easily display the banners. It would be a genuinely unselfish gesture if each and everyone of you reading this blog would take the time to post an ad (as well as pass along the URL to the promotion page to others likely to post an ad). Incidentally, if you don't, it will reflect on your parents and a big, black checkmark will go on your permanent record. Seriously, anyone who loves Fox and wants to see it continue to flourish is encouraged to post an ad banner. Your help in making the 2008 conference the best one yet will be greatly appreciated.
Lastly, if you are interested, the call has gone out to all those interested in being a speaker at the 2008 conference. Details are on the Southwest Fox website.
Posted by Dave Aring on February 19, 2008 | Permalink | Comments (0) | TrackBack
December 18, 2007
A Promise is a Promise
Back in October, I promised to elaborate on the Southwest Fox 2007 conference and review some of the sessions. Well, Santa is checking out who has been naughty and who has been nice, and frankly, I need as many of the “nice” checkboxes checked as possible. I apologize for the delay, but for those of you who are still awishin’ and ahopin’ I would come through, here ya go.
Before I begin, I would like to regurgitate (what a revolting word; but fun to say) what you have undoubtedly read on many occasions in the past. Namely, if you have never attended a developer conference, what the heck are you waiting for? 15 years ago I was in the same boat. I read (almost) those exact same words and thought a developers’ conference can’t be that good. Well, I was wrong and every time I think I am right, I attend another conference and prove to myself that I am, indeed, wrong, wrong, wrong. Believe me; if you are in the trenches and do application development (i.e. write code) on a daily basis, you owe it to yourself to attend a conference specializing in the coding discipline of your choice. While I am partial to Visual FoxPro, other conferences for other languages are just as rewarding. You get shortcuts, tips, tricks, traps as well as renewed enthusiasm for your work. You get the chance to meet with people who are in the same “development boat” as you. You are not an island. OK, you may be an island, but in a chain of islands that, together, form a beneficial archipelago. Bottom line,.. Consider attending a conference of your choice. I wax poetic, but I also digress, so on with the show.
The two sessions I will address in this blog are the two sessions given by Cathy Pountney. Some of you may know that a few years ago I was a technical editor on a Hentzenwerke book, “The Visual FoxPro Report Writer – Pushing It to the Limits and Beyond” written by Cathy. It was written in the days when Microsoft swore that the report writer would never be improved. It is still a very viable book for those of you who have not upgraded to VFP 9. However, with the release of VFP 9, many of the enhancements were to the report writer. So much so, that it is almost a totally different animal. While I have been hibernating in a cave mainly doing maintenance work on applications written in VFP 8 and earlier, Cathy has been leading the charge to push the VFP 9 report writer past its limits and right into the 5th dimension. So while she is on the cutting edge of the report writer enhancements, I have made a comfortable home on the coagulating edge. I still have a few years of coding energy left in me and I felt it high time that I get on the VFP 9 report writer band wagon. I was reluctant to do so because I felt so at ease with the “old way” and besides, it was a bit intimidating, but biting the bullet, I attended both of Cathy’s sessions with the express purpose of getting over my fears and intimidation. BOY, am I glad I did!
“Getting Your Head Around the VFP ReportListener” was the first session. This was the session that I was hoping would remove the mystique from the newest version of the report writer. It did, or I should say, Cathy did. She knows her audience. She can speak to her audience so that the “difficult to grasp” is “graspable”. This was a good thing. When I walked out of this session, I had been (practically by hand) taken through the basics of the reportlistener. One of the revelations, at least for me, was how the various components worked together to produce the report. In the old days (pre-VFP9) there was just the report engine. With VFP 9, you not only have the engine, but the listener object, the preview container (separate from the report engine) and the extension handler. This fact, in and of itself, was a key to understanding the “new and improved; whiter than white” report writer. Each component was explained and placed in its proper environment as it relates to creating reports. Next came all of the new properties, events, and methods. Cathy’s practical, real-world examples using several of the methods and properties made the task of creating the reports seem easy. It was at that point that she dangled the carrot in front of me that by knowing the basics and understanding the fundamental concepts, developers could then use them to their advantage to create reports the way the user has requested (instead of being forced into a pigeon hole of “this is the ONLY way it can be done”). Extensibility. What a concept! Unfortunately, those tricks will be shown in her OTHER session. For now, she continued with the basics. It was just like having to take Chemistry 101 to learn the periodic table BEFORE you could take Advanced Chemistry and blow things up. Also, she is correct. Learning the basics of the methods, events, and properties is what will allow us to (in a nice way) blow things up when we need to print out those mind-boggling reports.
OK, now for the cool stuff. With the basics out of the way, I later went to the “OutFox the VFP Report Writer: Printing on My Terms” session. I am really glad that I went to the basic session first because this session built upon those concepts. Rather than tell you about the session, I am going to list just a few of the new abilities that users of VFP 9 have at their disposal. How about being able to select which pages of the report they want to print? Or printing only the odd pages, or only the even pages? You can now specify how the report is collated and how many pages print on a sheet of paper (ideal for printing “mini pamphlets”). You can specify the margins. Perfect when you want a wider margin for three-hole punching. You can shrink to fit the page. How cool is that? Haven’t you ever printed out a report and ONE detail line printed on the second page? If only you could have shrunk the report enough to get it all on one page. NOW, you can. You can rotate the report; you can specify different size paper for different pages. You can create your own printer dialog to allow for user input as to all of the specifications mentioned above. Using the extension handler, you can customize the preview container toolbar or modify the print dialog box. I haven’t even added the use of GDI+ to the equation. BOTH sessions were eye-opening. BOTH sessions did exactly what I had hoped; namely removed the mystique and pointed me in the right direction and allowed me to say to myself, “This isn’t so tough.” Of course it isn’t when someone else has done the heavy lifting. Cathy would be the first to acknowledge that she gained valuable insight in certain areas of the VFP 9 report writer from others more informed than she. THAT is the beauty of these conferences. Developers sharing and passing down information so that the less informed can be educated. THAT is another reason why you should consider attending a conference if you never have.
Lastly, and realistically, there is no way one person could walk out of those sessions, sit down to the keyboard, and put what they saw into immediate use. Fortunately they don’t have to, but when they are ready, Cathy provided (as did all speakers) examples, code samples, and white papers about the topics so that you could review later and take the time to master this facet of Visual FoxPro. Two sessions; tightly coupled, but giving me the basic fundamental understanding and the wherewithal to decide how to move forward in the manner that most benefits me when attempting to tame this beast. Time well spent.
Posted by Dave Aring on December 18, 2007 | Permalink | Comments (0) | TrackBack
November 14, 2007
A Bug’s Not a Bug until It Bites You
Ow! I have just been bitten. No, not by a bug, but by my own stupidity. Stupidity may be a bit harsh since the problem was a result of something I have never experienced before. I have been working with FoxPro for over 18 years and in that time I have used the IMPORT command on many an occasion to take data from (among other things) an Excel spreadsheet and place it into a table for further processing. I would guess that most of you have done the same thing. Once you have done it several times, doing it again is not a big deal. Until yesterday!
What happened yesterday has never happened to me before in all my years of application development. Thinking about it, I am amazed that it took this long to have it happen. I am going to speak generically about the incident. Depending on your experience you may think that I “should have known better”. OK, wise guy, you do not have to read any further. Those of you who might want to avoid the trap I fell into may continue to read.
Before yesterday, I have always thought (based on my IMPORTing experience) that when importing data from a spreadsheet, the resulting field data types are all characters. To the best of my knowledge, EVERYTIME I have ever done this, all fields were a character type regardless of the information contained in them. Thus, in order to further process the table, I usually had to use one or more of the VFP character string functions to convert and manipulate the newly imported “character” data. How many of you thought the same thing? Namely when you IMPORT data from a spreadsheet it all gets pulled into character fields. Those of you who raised your hands, thank you, but you are wrong, grasshoppers.
All these years, the reason that all of the resulting fields are of a character type is because (usually) the spreadsheet that is being IMPORTed has a header row and the IMPORT process interprets that first row as a character type and thus, all subsequent records are the same type. As a sidebar, almost always, part of the “cleanup” process for the table was to DELETE that first row because it was “bogus” data and by the time I wrote the routine, I didn’t need it because I knew what data each column contained and how I wanted to manipulate the contents.
To continue this saga... for the past four months, spreadsheets I receive on a monthly basis have always processed flawlessly, but yesterday, when attempting to process the same spreadsheet I got all sorts of data type mismatch errors. How was that possible? Ah, you are way ahead of me, aren’t you? Well, you are right. THIS month the person sending the spreadsheet (who had been taught not to add, delete, or move columns) decided to “help” and removed the first row – the row of column headers. The removal of that row, made the first row actually contain viable data. Some numeric (SSNs, phone numbers, numbers) and some character strings. Now, when my flawless routine (to convert and manipulate) kicked in, it blew up because I was trying to VAL() some (now) numeric fields that had (always) come in as a character strings and it also tried to perform some manipulations on (what were character strings – i.e. the social security number) numeric fields because during the IMPORT process the column contained only numbers. What a mess!
So, should I have known? A quick glance at VFP help did not indicate (I could have missed something) that the IMPORT process attempted to assign data types to the fields of the new table, BUT IT DOES! Bottom line, some day, perfectly good, working code may fail for this reason.
For now, my immediate fix (to be tested over the next few months) is to check the second column of an AFIELDS() array for the character type of select fields (that could either be a character or a number) depending on whether or not the first row in the spreadsheet contains column headers. Then depending on the results, fork the process to manipulate data in the required manner.
If this particular blog helps just one person, I know my life on this planet was not for naught. Ya learn something new everyday or as my sainted mother always says, “You grow ‘til you go.” By the way, this was in VFP9, so if you are using any other version, your mileage may vary. Incidentally, that is the last time in my life I will ever use that phrase; it has become too trite.
Posted by Dave Aring on November 14, 2007 | Permalink | Comments (4) | TrackBack
November 02, 2007
Southwest Fox 2007 Conference – Stream of Consciousness
Visual FoxPro is not dead; hell, it isn’t even breathing hard. For anyone who cares, I am suggesting that the NEXT version of VFP be codenamed, “Lazarus” because what I saw at the Southwest Fox 2007 Conference, makes me believe that VFP is rising from the dead (if, indeed, it ever was dead). How apropos that the conference was held so close to a city named Phoenix.
In the coming days, I will be blogging about my experience at the most recent developer’s conference for Microsoft’s Visual FoxPro and giving more detailed accounts of sessions I attended. Today, however, I am just going to give you some “three dot” journalism and some random thoughts and tid bits.
Bucking the current trend in FoxPro developer conferences, SWFox 2007 set a conference attendance record. With three walk-on registrants the day the conference began, the total number of attendees was 151 (plus speakers) which was MORE THAN DOUBLE (albeit, just by one) last year’s attendance.
I loved Whil Hentzen’s line about getting older and forgetting more often when it comes to syntax. He suggested that he is in the “Write once, forget often” mode.
Andy Kramek was giving a presentation about SQL when someone shouted out, “There’s a bug in your code.” Andy immediately asked, “Where?” To which the attendee responded, “Well, not IN your code, it’s ON your code.” Indeed there was, an actual, giant BUG (of some type) was crawling down the screen where Andy was projecting his code.
The weather was PERFECT! The conference staff did a great job as did the hotel/conference center personnel. There was very little to complain about. With the overflow crowd, it was, at times, a bit difficult to navigate through the crowds. Actually, it would have been a lot easier if there weren’t so many back packs. This made everyone wearing them twice as big. Trying to squeeze between to back-packed attendees would have been a lot easier if they were not wearing the backpacks. On the other hand, it might have been just as easy if I had made it a point to drop some gross (in every sense of the word) tonnage before the conference. I wouldn’t want people to complain about MY “bellypack”.
Speaking of complaints, I do have one. It is more of a pet peeve, but still... what is it about “PUT YOUR PHONES ON VIBRATE” that some attendees don’t get? Every speaker reminded attendees to make sure their phones/pagers/Buck Rogers Atomic ray guns were all set to vibrate (or stun). Yet, in the sessions that I attended there were at least a half a dozen cell phones that rang. I guess those people have the card in their wallet that say, “but me” as in “The rules apply to everyone...” Inconsiderate, very inconsiderate. OK, I am getting down from the soap box.
Another interesting sign was that (VERY subjectively) I felt that the percentage of female attendees was way up from what it usually is. I have no figures, but it would not surprise me if females accounted for 15+% of the attendees, which, in the world of geeks and “Pocket Protector Pow Wows” is a pretty high number. This is a good sign for the distaff side.
Yes, the conference was wonderful. Fun. Informative. Exhilarating. “Brain-baking” and definitely worth the price. I am wondering if it is too early to sign up for next year’s conference. Keep checking back as I will be elaborating, in detail, on some of the sessions that really opened up my eyes and, in some cases, have caused me to reconsider my opinions on several issues.
Posted by Dave Aring on November 2, 2007 | Permalink | Comments (4) | TrackBack
October 08, 2007
Jim, I hate you.
I was working on site for a client recently when I said, “Jim, I hate you.”
Jim’s head pops over the side of the cubicle next to me. He flashes me a quizzical look and asks, “Why is it that?
“Because, I can’t write a single line of code now without writing a test to support it. It is all your fault.”
He smiles and replies, “Well, if you are blaming me for writing better code, I’m ok with that.”
Just in case you don’t know, Jim Erwin is our resident rock star (literally, he was a musician in a previous life) and the author of FoxUnit, a unit testing framework for Visual FoxPro. He is also the Software Development Practice Manager and the evangelist for Test Driven Development (TDD) at Visionpace. In addition to having a great sense of humor he is my ever patient coach on TDD.
I took my first TDD course from Jim and I have been incorporating it into my development practices ever since, but not without some trepidation. I try to keep myself open to new methods and try not to discard a new idea until I have tried it. I will usually adapt a new idea into my development and practice it for a while before I make up my mind on how useful it is. My first impression of TDD was that it really wasn’t that different from how we always did things. Other than that whole idea of writing a test that was bound to fail before you even start, how different could it be? We always test our code, right? I mean, it is not like we write some code and just throw it out there for our users. So how is that TDD thing so different?
It wasn’t until I developed the habit of testing my software with unit tests that I really found that out. I have to admit that it wasn’t easy at first. There were all kinds of problems. Most of which I created by not following good practices. Early on I wanted to test everything with FoxUnit. I tested forms and reports and anything that was part of my application. But that is not what unit testing is all about.
As I progressed as a student of TDD, I began to realize that unit testing meant just that. You test units, not complete applications. As developers we are familiar with the concept of writing small pieces of code with discrete functionality. I realize that I’ve known that for years. It was something that I was taught in college, and that was longer ago than I want to admit. However, it wasn’t until I started unit testing that I really became aware of what that meant. I thought I knew and practiced that.
The more I tried to test my software the more I started thinking of how I could break it down into testable units. There were times I wanted to test some object but I would end up testing ten other things at the same time because of the built-in dependencies. That forced me to look at how I could reduce those dependencies.
As I continued to practice TDD I found myself thinking of how I was going to test the software before I wrote it. When I realized that, I also realized that I wasn’t really doing TDD. When you practice TDD, you write the test first and the code later. What I had been doing was writing the code first and trying to find a way to test it later. When I started writing the test first, I started finding ways to reduce the dependencies.
Jim, I hate you because I can never write code the same again. You taught me to use TDD. You opened my eyes to a different way to write software. You forced me to see some of the imperfections in how I write code. My code is cleaner because of you, and I have the tests to prove it.
Jim is smiling, and he is ok with that.
…
If you are using FoxUnit or practicing TDD, I would love to hear about your experience. Send us an email or stop by FoxUnit.Org and let us know what your experience has been.
Posted by Doug Bliss on October 8, 2007 | Permalink | Comments (1) | TrackBack
September 06, 2007
"Thank you"s Are In Order
In my haste, yesterday, to get something about K.O.K.O.P.E.L.L.I. "up and running", I neglected to mention those VERY patient folks who tested the application, offered constructive criticism, and generally harrassed me to get it done. Without their help, it would have taken much, much longer. So, in no particular order, I would like to acknowledge the following humanoids for their help:
Doug Carpenter
Kelly Conway
Tamar Granor
Doug Hennig
Larry Koska
ShellEy Nass
Brad Pitt (just checking to see if you are paying attention)
Cathy Pountney
Rich Schummer
For those of you who are really weird, YES, it WAS in a particular order - ALPHABETICAL (by last name).
Thanks again to everyone.
Posted by Dave Aring on September 6, 2007 | Permalink | Comments (0) | TrackBack
July 06, 2007
Southwest Fox 2007 Conference
My pager is off. My telephone has been disconnected. The cell phone is on mute. E-mail is shut down. Why? So I won’t have to confront those of you who will claim I am wasting precious “blog space” (I thought it was unlimited) with what might be perceived as a blatant commercial. Oh, I am not denying that it IS a blatant commercial, but like the politicians in Washington say, “I am sorry, but I will not be taking any questions today.” Such an easy way out - not taking questions. Where was that approach when I was in high school? Mr. Aring, please explain the oedipal relationship that Hamlet had with his mother and step-father. “Sorry, teach. I am not taking questions today.” Jeeesch!.
We are halfway through 2007, and yet, several Visual FoxPro conferences loom on the horizon. FoxForward will be held in the Atlanta, GA area. Two European conferences are available (they are excellent or so I have been told since I have never actually been to them) in Frankfurt, Germany and in Prague in the Czech Republic. Of course, there is OzFest in Australia also. However, the one conference for whom I am currently beating the drums is the Southwest Fox 2007 conference ( www.swfox.net ). Time is running out to get the early bird discount of $75 (you can also snag a FREE $99 pre-conference session); you must register by July 6, 2007, but even at the full price, this conference looks like it is going to be a winner.
Established in 2004 by Bob Kocher and Jeff Johnson, and very capably run by Bob for the last couple of years, this conference (held in the Phoenix, AZ area) has taken on a new life this year when it was announced that three of the VFP community’s guruiest gurus, Tamar E. Granor, Doug Hennig, and Rich Schummer have taken over the reins. Unlike other conferences, the subject matter is almost entirely FoxPro “stuff” for FoxPro developers. If you happen to actually learn something (and you will!)about .NET, Agile development, Sedna, or any other technology, consider it a bonus. Newbies, as well as seasoned developers, will encounter a number of topics of interest. There will be five, count-em, folks, FIVE separate session tracks. Extending VFP, Integrating VFP, the Software Business, Sedna and VFP SP2, and some no-spin Fundamental basics. A veritable morgishboard, er, smorga, arg, FEAST for the FoxPro developer who KNOWS (and cares in their heart of hearts) that FoxPro will be around for the next 10-20 years.
If you have never been to a developer conference, you can not imagine how intense they are and how draining on your body. It is no wonder many developers spend that later part of the evening refueling their system with their favorite adult beverage in preparation for the next day’s assault on the learning curve. I have never gone to a conference where I didn’t learn something that I could put to use immediately upon my return to work. I urge you to visit the conference website and consider attending. Believe me, I mean it when I say, “What happens in Mesa, AZ, stays in Mesa, AZ”, unless, of course, you go back home and start showing off all of the cool things you just learned.
Posted by Dave Aring on July 6, 2007 | Permalink | Comments (0) | TrackBack
May 14, 2007
Denial Isn't Just a River in Egypt
A little over a month ago, the Microsoft Corporation officially announced that they will not be releasing any new versions of its relational database software, Visual FoxPro (VFP). The news came as a surprise to many of the developers in the FoxPro community, but those developers must have been in denial or had their heads buried in the Hentzenwerke “Hacker’s Guide” because the handwriting has been on the wall for months. Years! Decades?
To paraphrase Garrett Morris’ Chico Escuela persona from “Saturday Night Live”, “FoxPro has been bery, bery good to me”. It has provided me with an above average income and a comfortable life style (once I kicked all of my kids out of the house). More importantly, Visual FoxPro and before it, FoxPro for Windows and FoxPro for DOS, has been VERY, VERY good to thousands of small to medium sized business as well as some Fortune 500 companies. A VFP application is used to run the operation of the Chunnel (the underwater link between England and France). During the first Gulf War, FoxPro was an integral part of the military’s JFast application which managed the deployment of troops and supplies. There are many other high profile applications, but my point is that mission critical applications created by FoxPro developers provided reliable, efficient, and economically sound solutions to real world problems. ECONOMY is one of the reasons that Visual FoxPro is one of the best selling application development software tools IN THE WORLD. It is reasonably priced and is “self-contained”. i.e. For the most part, it has it’s own reporting capabilities, user interface capabilities, and data storage capabilities. Those are the basics of most data-centric applications. Of course, it has many, many more features than just those basic capabilities. I could go on about my devotion to VFP and why I (as well as many other developers, world-wide) love it so much. Nevertheless, the fact is that Microsoft is going to support Visual FoxPro only through 2015, so there is no sense in denying it any longer. VFP is on its own.
Notice and this is very important, I did NOT say that VFP is DEAD. I just said it is on its own. Why? Because 2015 is eight years away. Who knows what will happen by then? I, personally, am still maintaining applications written in the mid 1990s that the clients love and couldn’t do without. I expect to see applications, being written today, around for another twenty years. The applications do EXACTLY (another key word) what the client wants them to do and they have no plans of abandoning them. Isn’t that the bottom line? So, if you are in need of custom applications and plan on being in business for the next 20-25 years, there is no compelling reason why you shouldn’t consider (or at the very least, do not summarily dismiss) having those applications written in Visual FoxPro. An honest, ethical developer should offer you all options, explain the pros and cons of each, and then help you to decide upon the approach that is best for you.
Posted by Dave Aring on May 14, 2007 | Permalink | Comments (6) | TrackBack
May 09, 2007
My Bucket's Got A Hole In It
One of the tenets of life drilled into me by my dear old Mum is, “Grow ‘til ya go.” When I was six years old, I thought it meant that I was still a little person, but if I ate the right food, I would grow up to be big and strong. At 17 and entering college, I still didn’t get it (but I knew what PART I wanted to see grow). Even after college, the immediate thought of constantly learning was not one that I embraced. When will I ever be done learning? Now, as I approach the September of my years (and, obviously, still able to wax poetic), I finally get it. We will always be learning something. Close that door; the mystery of life has been solved! Wait. What’s that? Another door just opened and on the nameplate it says, “OK, now what?”
That is the bigger question, you know? If I have finally come to terms with the fact that I will constantly be in the learning mode, what should I learn next? I have wrestled with that problem for a long time. In fact, there were times, when I reviewed my day, that I could honestly say I didn’t learn anything. Mom was right. I felt like I had cheated myself. It was then that I decided to take baby steps and I made a compact with myself that any day I ended up going to bed smarter than when I had woken up, was a good day. At times, I really had to stretch my self-imposed criteria to come up with something new that I mastered. For several weeks, I took the easy way out and decided I was going to learn all about the seven remote controls sitting on my living room coffee table. I never said that what I learned had to be earth shattering, but I will tell you this (with chest proudly puffed up in braggadocio mode) every time I hear some standup comedian joke about VCRs still flashing 00:00... 00:00... 00:00, I LAUGH in his face. That serves two purposes. First my guffaws let the comedian think he is actually funny, and secondly, it allows me to secretly bask in the knowledge that I am better than those people whose VCRs ARE still flashing 00:00... 00:00... 00:00. Somewhere in my darkest soul, the echo chamber is queued and I am letting a diabolical laugh rise to the surface. Buh-WA-HA-HA-HA-HA
Last Thursday, I was struggling trying to come up with something that I had learned. I had, long ago, amended my compact to say that LEARNING that you didn’t know something about something did NOT qualify for having learned something. I will give you a moment to reread that last sentence. Go ahead, read it again if you want. So, there I was having discovered I didn’t know something and so far, I have not been able to find the answer. I am hoping that one of you will have a clue. What is this conundrum? Namely, the word, “Bucket” is a reserved word in Visual FoxPro. My question to you, dear reader, is WHY? I discovered this fact when I was writing a SQL statement that included a calculated field that I named, Bucket. Each time I typed Bucket, my editor capitalized it and turned it blue (the sure-fire sign it was a reserved word). Sure enough, after checking the list of reserved words, it was confirmed. I will also tell you that finding the word, Bucket, in the list of reserved words was the ONLY, repeat, ONLY place in the entire VFP Help file where I found the word.
If any of you would want to offer a possible answer, as Dumbo, once said, “I am all ears.” I will warn you that one of my VFP buddies, Lister Potter, came up with the definitive answer as far as I am concerned, so you better really have a good response to top his. Wise old Lister suggested that since Microsoft had announce it would no longer be supporting VFP, that they have secretly added a BUCKET for VFP to “kick” when 2015 rolls around. Makes sense to me. In the meantime, I am going to set my daily learning goal a bit higher and try to find out why people find Howie Mandel funny.
Posted by Dave Aring on May 9, 2007 | Permalink | Comments (4) | TrackBack
August 30, 2005
Good Riddance to Browser-Based Apps?
Here's a link to an article with the above name. It's a guest editorial in the July issue of Visual Studio magazine. You should be able to access the article from the above link, but if not, a free registration will get you in.
The author, Billy Hollis is located in Nashville, TN. He co-authored the first book ever published on VB.NET, has written many articles and is a frequent conference speaker. Mr. Hollis is regional director of developer relations in Nashville for Microsoft, and runs a consulting company focusing on Microsoft .NET. So he is eminently more qualified on the subject than I am.
What's so interesting about the article? To me, quotes like this: "Decision makers are starting to realize that the browser sucks as an application platform."
Seems like this debate has come full circle. VFP developers have traditionally touted the advantages of what is now referred to as a "smart client". I personally have frequently railed at how poor browser-based interfaces are compared to what I can develop for the desktop in an environment like VFP.
Don't get me wrong – there are clearly many applications that are great as browser-based apps. Like e-Commerce storefronts, airline reservation systems, etc. But I've not seen a fulfillment of the promises to make browser-based UIs handle complex tasks you can manage relatively easily in desktop apps. There certainly hasn't been a single commercial (VFP) app I've worked on in the last several years that could possibly have been implemented as a browser-based app, because the UI is much, much too complicated.
In addition to the requirement for a simple UI, browser-based apps are falling victim to the overall browser/Internet security concerns of late. In more and more corporate environments, employees are severely restricted (if not prohibited altogether) from free/any access to the Internet. That reduces the effect of the use of browser-/Internet-based apps that promise easier deployment. Not to mention the problem of existing desktop apps that have been "updated" to be browser-based, when many of the folks who are supposed to use these apps don't/can't have a 24-7 Internet connection.
It seems to me that a significant part of the problem is the marketing that accompanies new technology. That technology is typically hailed as the "Next Big Thing", and marketed as such, the implication that whatever you were doing before is no longer valid. Poppycock. So now, if Mr. Hollis is right, what has been fashionable and trendy for the last few years is now "not so Big Thing", and what we were pretty much all doing before that has now come (back) into vogue. Is he right? I don't pretend to be smart enough to know, but I do know that the desktop app that has fallen into disfavor over the last few years sure doesn't deserve that bad (marketing) rap.
Is it just possible that the "right" kind of application "depends"? I don't see it as rocket science to recognize that some apps are well-suited and even more desirable as web/browser-based apps, while others are definitely not. Why not market "the best tool for the job" or "the best implementation for the app", rather than spouting the marketing babble that there's only one kind of app at the end of the rainbow?
Posted by Drew Speedie on August 30, 2005 | Permalink | Comments (1) | TrackBack
August 28, 2005
Another VFP->Orcas sighting
Here's a link to yet another reference to the incorporation of VFP features into Orcas. We'll hear a lot more of the details once Microsoft goes public/official at the Professional Developers Conference in September.
Posted by Drew Speedie on August 28, 2005 | Permalink | Comments (1) | TrackBack
WinMerge Plugin (update)
(In a previous post I talked about a WinMerge plugin for VFP files. You can read that at http://blog.visionpace.com/2005/08/winmerge.html.)
I have updated the WinMerge Plugin for VFP to handle errors better and have posted the source ZIP. The plugin is available at http://client.visionpace.com/gtaylor.
Posted by Glenn Taylor on August 28, 2005 | Permalink | Comments (3) | TrackBack
August 12, 2005
WinMerge plugin for VFP files
I have the plugin done for WinMerge to compare VCX, SCX, FRX, LBX, and MNX files. You can get it and instructions for use at http://client.visionpace.com/gtaylor/.
There's only one scenario that can't be handled when using this under SOS. If you compare one of those files by selecting the single file from the SOS file pane and do "Differences", SOS only retrieves the actual file selected and not the companion file (.VCT, SCT, etc). This is probably more of a limitation of using VFP in source control than WinMerge or the plugin. There may be ways to get around that but not now.
The only way to get around that now is to compare the whole folder (VSS calls them projects). If you select the folder, SOS downloads all changed (edited, old, renegade) files to a temp folder and then copies the local files to another temp folder and invokes the comparison utility on those two temp folders. (No, I'm not sure why it copies the local files.) Doing this allows WinMerge to use the plugin to compare all the files. Very nice to see the changes so you can write a nice checkin message explaining everything you did.
Of course you can just invoke WinMerge on your system and compare folders and files there with no problems.
This means is presented for those who are not using the Source Control integration in VFP where you put the project into Source Control and VFP uses SCCTEXT to build the VCA, SCA and etc files.
Posted by Glenn Taylor on August 12, 2005 | Permalink | Comments (4) | TrackBack
August 09, 2005
Debugging a collection in VFP
Have you ever been stepping through some VFP code that uses a collection and been frustrated that you can't "see" into the collection? Well if you have, here's a program that I found somewhere in Microsoft's information (but don't remember where, could have been a website or blog).
Basically this adds an array property to the collection that contains the items in the collection. It even handles a collection that contains other collections.
To use it just drop out to the command window and invoke it with DebugCollection(loCollection) and then go back to the Locals or Watch window of the debugger and look through the Items array using the normal + that shows up for an array.
Name the PRG DebugCollection.prg.
*PROCEDURE DebugCollection(oCollection)
LPARAMETERS oCollection
IF oCollection.COUNT=0
RETURN
ENDIF
oCollection.ADDPROPERTY("Items[1]")
DIMENSION oCollection.Items[oCollection.Count]
FOR i = 1 TO oCollection.COUNT
oCollection.Items[m.i]=oCollection.ITEM[m.i]
IF VARTYPE(oCollection.ITEM[m.i])="O" ;
AND VARTYPE(oCollection.ITEM[m.i].BASECLASS)="C" ;
AND oCollection.ITEM[m.i].BASECLASS="Collection"
IF oCollection=oCollection.ITEM[m.i]
LOOP
ENDIF
DebugCollection(oCollection.ITEM[m.i])
ENDIF
ENDFOR
*ENDPROC
Posted by Glenn Taylor on August 9, 2005 | Permalink | Comments (1) | TrackBack
August 04, 2005
VFP 9.0 Rebate
I didn't realize there were any rebate offers for a VFP 9.0 purchase, but there is. If you have purchased VFP 9.0 but haven't sent in your rebate, you can download a PDF version of the official rebate form from the link at the bottom of the site/page located at: http://www.foxtoolbox.com/itemgroup.dbx?sku=340-01230. If you have been putting off purchasing VFP 9.0, this gives you yet one more good reason to do so right away -- the deadline is August 15, 2005.
Posted by Drew Speedie on August 4, 2005 | Permalink | Comments (0) | TrackBack
August 02, 2005
VFP in VB.NET?
Check out Ken Levy's August 2005 Visual FoxPro letter. The most exciting news? That (for me, at least), that Calvin Hsia will make a presentation at the Southwest Fox conference, which will include "…great demos of new language features being added to a future version of Visual Basic for data-centric .NET programming significantly based on Visual FoxPro technology."
Posted by Drew Speedie on August 2, 2005 | Permalink | Comments (0) | TrackBack
The Future of VFP – These Guys Oughta Know
Yes, yet another post about "the future of VFP". Click here to read FoxTalk editor David Stevenson's June 14 interview of Microsoft's Ken Levy (VS Data Product Manager) and Alan Griver (VS Data Group Manager) at the VFP Advisor DevCon conference in Las Vegas. The official Visual FoxPro Roadmap had just been released, including Microsoft's initial plans for Sedna (project for enhancing VFP beyond VFP 9.0). It's a long read, but well worth the time; you'll get a glimpse of your future VFP development life -- it's just a matter of when.
Posted by Drew Speedie on August 2, 2005 | Permalink | Comments (0) | TrackBack
July 31, 2005
Visual FoxPro Community Action
I just read an excellent post by Craig Boyd that I highly recommend you read if you have any interest in VFP at all. In fact, you might add his blog to your list; in addition to typical blog entries, he has quite a few posts of useful technical items. Just this weekend, it looks like he had nothing better to than create a generic VFP SpellChecker. Craig has also been prolific in posting on the www.tek-tips.com VFP forums – you should check out his FAQs there.
Posted by Drew Speedie on July 31, 2005 | Permalink | Comments (0) | TrackBack
July 28, 2005
Microsoft-sponsored VFP technical support forum
There are a number of popular forums for VFP-related support and related activities. However, here's a site you may not know about, the Visual FoxPro General forum of the Microsoft Technical Support Forums. It's an official VFP site sponsored/hosted by Microsoft, as you can see from the URL: http://forums.microsoft.com/msdn/ShowForum.aspx?ForumID=60. I've seen questions get answered by the likes of no less than Ken Levy, Randy Brown, Calvin Hsia, Alan Griver (YAG), plus numerous VFP MVPs.
Posted by Drew Speedie on July 28, 2005 | Permalink | Comments (0) | TrackBack
July 27, 2005
.NET does Data? Not like the Fox!
Anders Hejlsberg (The Father of C#) was recently interviewed about the future direction of C# programming. In the excerpt from that interview that you can read at this link, Anders discusses a number of data-related issues. He even uses the dreaded 'F' word <g>. No, not F#, although he does mention that, too, but FoxPro. Here's one quote (italics mine):
"No. I wouldn't say that it [C#] specifically borrows from FoxPro. As I have said before, the area where we're already laying some groundwork for in Whidbey (Visual Studio 2005) is this big and largely unexplored area of deeper language and data integration. And, of course, FoxPro is a language that has been there … I think they show how closeness to data is tremendously useful for a certain class of applications." No disrespect intended, but, Duh!
If you read this interview, you'll note that Anders is mostly talking about features for "Orcas", the code name for the next next version of Visual Studio, the one after Whidbey, which is slated for release in November. So I'd guess a release of no sooner than 2007 for Orcas. If I read Anders right, he's saying that by the time .NET is about 7 years old, C# might possibly include features that make it 'close to data', which would be 'tremendously useful' for some applications. Such as any application that manages data. In the meantime, VFP has been doing that extremely well for longer than Microsoft has owned it.
A little further in the interview, referring to FoxPro and other dBase-d languages, Anders says "They lacked some capabilities that programmers, generally speaking, want." Like maybe… marketing? Ken Levy has done the best job by far of anyone I can remember in his 'VFP evangelism' position, but his hands are clearly tied. Sure, VFP developers have always had a number of features on their wish lists (just check out the listings on the Fox wiki and the UT). But the number one 'capability' VFP developers have historically requested was a respectable marketing effort even in the same ballpark as VFP's technical capability.
As for the last FoxPro mention in the excerpt, check this out:
"Let's just say for the sake of argument that I want to make it as easy to program data in C# as it is in FoxPro. Or pick whatever goal you'd like. I'm not saying that is a particular goal."
On the one hand, he accurately points out that it is easier to program data in VFP than in C#. No big relevation there. But then he is careful to deny any specific attempt to achieve the same ease of data management in C# as he knows is in VFP. But Microsoft wants all us VFP developers to move to .NET as soon as possible, even though everything we do is directly related to managing data. Again, keep in mind that we're not even talking VS 2005 here, but no sooner than the next version after that.
I did like everything Anders said regarding the possibility of an Integrated Query Framework that would make it possible to query data over multiple different types of data, including XML and objects, not just SQL/relational DBMS. It will certainly be interesting to see how that works out in Orcas. Although I find this Anders Hejlsberg quote at the end of the interview excerpt a little foreboding:
"You sort of declare what you want to have done, but not exactly how you want to have it done. And in many ways, we've educated generations of programmers to think not just about what, but about how, and to explicitly state how in their programs.
"In many ways, programmers have to gradually unlearn that and learn to trust that when they're just stating the 'what,' the machine is smart enough to do the 'how' the way they want it done, or the most efficient way."
Hmm… The goal is to improve the .NET languages so that the developer just has to tell the computer what they want done, and it will 'just happen' in an efficient, consistent (and correct) manner. Sounds quite a bit different from what I've come to expect in VFP, where I always have a number of ways to complete any given task, including querying data. Frequently, that ability to state the 'how' makes it possible for me to produce code that works – the first technique I use may not be fast/efficient, may not work quite as expected, or work at all. Or as I recently heard a developer put it, "There's almost always about a million ways to arrive at the same location. That's what keeps things interesting."
And please forgive me for the chuckle, but why do I have such a hard time swallowing this concept of turning my programming commands into requests, from a high-level manager at a company whose operating system has such a hard time running all the Windows-certified software on my computer?
Hey, I'm not bashing Microsoft/C#/Anders Hejlsberg here. Really. I think his goals for C#/.NET in the Orcas timeframe are lofty, worthwhile, and beneficial for developers. But VFP developers surely have to read this kind of stuff and just shake their heads in incredulity over the lack of data-centric features in the sister .NET languages. We have to wonder how a company that owns VFP and has spent hundreds of millions of dollars (maybe into the billions?) developing and marketing .NET still has to say that its .NET languages don't natively handle data all that well. And, near as I can tell, features like Integrated Query Framework address querying issues, not data-update issues.
Rumors about the incorporation of VFP-like data-centric features in .NET have been circulating lately. For example, here's a link to a David Stevenson blog. That would certainly make .NET more interesting to VFP developers, but we'll have to wait and see what form such features might take.
Oh, and did I mention that this is all contemplated for the next version of .NET? No, not Visual Studio 2005, but the one after that.
Posted by Drew Speedie on July 27, 2005 | Permalink | Comments (8) | TrackBack
July 08, 2005
New VFP 9 book
The What's New In Nine: Visual FoxPro's Latest Hits book for VFP 9 has been available for some time from Hentzenwerke; I've read most of it, and can definitely recommend it.
I just heard of a new VFP 9 book, written by the president of the LAFox Users Group, Michael Cummings: Visual FoxPro 9 For Developers. You can find it here: http://www.lulu.com/content/106787
When you read it, post a comment here!
As for the picture on the cover, Bill Anderson (previous president of the LAFox Users Group) says Michael just likes that picture -- it's not a depiction of the unofficial Microsoft slogan for VFP marketing: "You're on your own if you use VFP!"... <g>
Posted by Drew Speedie on July 8, 2005 | Permalink | Comments (1) | TrackBack
June 16, 2005
Visual FoxPro: Where Does the Roadmap Lead?
I'm on the road between VFP conferences at the moment, having just left Advisor DevCon in Las Vegas, and headed next for the DevTeach conference in Montreal. The major buzz at DevCon centered around the keynote, where Ken Levy reviewed the official VFP Roadmap that Microsoft posted on June 1.
Ken didn't really elaborate, because the roadmap is intentionally vague, giving the Fox team a lot of leeway in what will be included in Sedna. Nothing has been ruled out, including the possibility that Sedna could evolve into VFP 10. That possibility is quite remote, especially in view of the fact that it costs a lot more marketing dollars to do the branding, packaging, and everything else that goes into a new full version. While I don't remember it being said directly anywhere, a VFP 10 version might logically extend the support window for VFP, which is currently through 2014.
If the Sedna effort simply consists of downloadable add-ons to VFP 9.0, VFP developers will get more new features than if the development budget was cut by the amount it would take to create a full-blown new version.
In the meantime, the official roadmap allows Microsoft to keep all their options open. After all, the Sedna effort is directly related to Microsoft technologies like Whidbey, Yukon, Indigo, Avalon, and Orcas, none of which will be released anytime soon, and some of which are quite a ways off. No one knows how those products will finally be implemented, so there's no way to tell right now what Sedna will include for VFP compatibility and leverage.
What's the bottom line? While I can't possibly predict what will happen to VFP over the next couple of years, a few things are evident:
- VFP is not dead yet. Heck, even FoxPro 2.6 isn't dead – you undoubtedly either know of 2.6 apps that are still running and being maintained or are working on one of them so yourself.
- The core VFP product is not going to be enhanced (see the roadmap) to add more features.
- The bulk of the Sedna effort is to ensure that our apps that run in VFP 9.0 will continue to run into the Longhorn era, and that they can be as .NET-"compatible" as is reasonably possible.
- VFP is not a strategic tool in the Microsoft suite of software. Does that surprise you? It shouldn't, given what Microsoft has been saying ever since .NET was announced. As I read in an online magazine article last week, '...Microsoft has spent more money developing and marketing on .NET than NASA did to put a man on the moon...' It makes no difference that VFP is the awesome tool that no one else cares much about.
- VFP developers love their VFP, and the VFP community is as passionate as ever
I think it's important to keep in mind that Microsoft is not compelled to keep the Fox team working on VFP at all. There was some speculation after the release of VFP 8 that is would be the last release. After all, it was, in my opinion, the single most feature-laden release since VFP 3. I remember Ken Levy asking folks at conferences after VFP 8 was released, "What more can we possibly do with the VFP core product?" VFP 9 is a killer product that answers that question well. The fact that the Fox team is committed to work on "whatever comes next" over the next 2 years is by far the best news a die-hard VFP developer could hope for. At a minimum, the roadmap ensures that the VFP apps that you and I are developing right now will continue to run on the Microsoft platform for many, many years to come.
Posted by Drew Speedie on June 16, 2005 | Permalink | Comments (2)




