Free White Paper reveals new software training model:
Perfect Coaching - How Companies
Are Maximizing Software Delivery ROI through Just-In-Time-Training -
For more information on Perfect Coaching, contact Visionpace at firstname.lastname@example.org or call 816-350-7900 or 888-904-7900 and ask to speak with someone about Perfect Coaching.
April 29, 2012
I'm Just A Party Animal
Last Friday night, I had a wonderful time. It was wonderful for many reasons; foremost of which was that it was a retirement dinner. “Isn’t that nice? They gave Dave a retirement party.” The fact of the matter is that I (and my wife, Shelley) threw the party. Sure we are the ones who are retiring, but we wanted to honor close friends and co-workers who, in the past 35 years, have contributed to our ability to be in a position to retire. We wanted to give a (very small) “thank you” to each and every one of them. I am not listing them here. They know who they are and if you want a list, I would be happy to send you one. Instead, I would like to thank friends, colleagues, and co-workers (however minimal the contact and brief the relationship) who are "far,far away" and also have had an impact on my success and ability to retire. Each and every one of them, in ways big and small, made me a better person and/or software developer. So, in no particular order…
Anyone who knows FoxPro (and all of its flavors) knows the name George F. Goley IV. George couldn’t pick me out of a police line-up. Nevertheless, it was George and his traveling road show that first brought FoxPro to my attention and the potential it had as a relational database management system. Additionally, the first ever formal FoxPro class I ever took was a three day seminar that George gave when brought in by one of the members of our users group. Thanks, George. You made the last 22 years of my working life something to look forward to each and every day. Thanks, also to Mike West, the developer who brought George to Kansas City for the classes. It was a perfect storm.
Thanks also goes to Tamar Granor, Doug Hennig, and Rick Schummer. Many of you know them as the current hosts and collective force behind the very highly respected Southwest Fox Conferences. Incidentally, the 2012 conference will be held October 18-21, 2012 in Gilbert, AZ. Check out www.SWFox.net for all the juicy details. Besides that wonderful conference, Doug, Rick, and Tamar have contributed to my growing knowledge as it relates to VFP. Authors, editors, and “silent imputers” of nugget upon nugget of information that made my job so much easier and at one customer, earned me the nickname, “Super Dave”. If I am Super Dave, then Rick, Tamar, and Doug are the “wind beneath my cape”. Thanks, guys.
Speaking of authors of books (remember them? Bunches of paper glued together with words on them), there have been other authors who have also contributed to my programming and software development knowledge. That includes Every (with a capital “E”) one of the authors and editors of books from Hentzenwerke Publishing. There are so many I don’t have the time to list them all. Yes, I do! Hell, I have lotsa time – I’m retiring! So, (again) in no particular order…
Marcia Akins - funny, real-world, and very knowledgeable. Craig Berntson - even though I am a VFP Report Writer evangelist through and through, his book on VFP and Crystal Reports saved my fanny more than once. Jim Booth - discussions over BBQ in Kansas City pointed me in the right direction to handle several issues that confronted me at the time. Rick Borup - a gentleman’s gentleman; always informative and a source of real world tools and tips. Bo Durban - cleared up a whole bunch of Sedna questions/misunderstandings. Toni Feltman - always willing to lend a helping hand. Nancy Folsom - allowed me to “take out my wait windows” and actually use the debugger the way it was intended to be used. Tamar Granor, Ted Roche (special thanks to Ted for the tome on SourceSafe), and Doug Hennig - for you three, I have just two words…”Hacker’s Guide!”. I didn’t tell people about the number of pages; I just said it weighed six pounds, but contained TONS of information). Andy Kramek - should I have put him with Marcia Akins? How could you not love that British accent? With that accent, you just KNEW everything he said would be a gem, AND IT WAS. Lisa Slater Nicholls, Rick Strahl, Chuck Urwiler, Marcus Egger, and all of the other editors and authors in the Hentzenwerke stable. I know that I am leaving someone out and they will be hurt. To them I say, “YOUR contributions are more important than anyone’s who I have mentioned.” Of course, there is a special place in my heart for Cathy Pountney Knight. Ten years ago she, Whil Hentzen, and I got together to discuss a proposal I had for a book. Cathy’s enthusiasm for the VFP Report Writer was UNBELIEVABLE. More than I had ever hoped. Once she agreed to author the project, the “world was never the same”. OK, that may be a bit overstated, but it was never the same for me (and I suspect, Cathy, too). It was one of her early steps to reaching the summit of VFP reporting “guru-dom”. I was lucky enough to grab her coattails and go along for the ride. Selfishly, I have secretly loved any attention I received for having been the technical editor. At least, I never denied it wasn’t a brilliant idea, but in the guise of full disclosure, let there be no mistake about it, Cathy Pountney Knight did all the heavy lifting. Thanks Cathy.
Meriting his own paragraph... all of those books and information would not have been available had it not been the brainchild of Whil Hentzen. Whil ran what was, practically, the world’s mass distribution center for FoxPro information. Not only books, but his influence and contributions to “Fox Talk” and even now, “FoxRockX” were extraordinary, but his Great Lakes Database Workshops were the “indie” conferences made on a Roger Corman budget. I am honored to have become acquainted with Whil. Besides Doug Hennig, Whil is another human dynamo. A real mensch, a so-so cookie baker, and one of those friends that you think about a lot, don’t see often, and when you do meet again, it is like you saw each other yesterday. In my best Gomer Pyle impression, to you, Whil, I say… “Thank yew, thank yew, thank yew.”
Others, you ask? The late Drew Speedie. I will always be sad over his untimely death. I only worked with him for a little over a year, but the influence he had on me was unbelievable. We all know Drew, so I won’t elaborate. Of course, my co-worker, Art Bergquist, has the toughest job imaginable - filling Drew’s Visual MaxFrame Professional shoes. Art, you are doing a GREAT job. Hang in there, buddy. If people knew the time you spend on that effort, YOU would be the fifth bust on Mt. Rushmore (and HOW appropriate would that be? Rushmore optimized). Others like boss supreme, Russ Swall, as well as past co-workers like Larry Koska, Kelly Conway, Doug Carpenter, Kathy Day, Bud Wheeler, Bill Brelsford, Jim Erwin, Travis Davies, Kelly Troxell, Michael Wright, Steve Whitcomb, Gene Steinbacher, Dale Inlow, Dustin Decker, and Bill Elvin all had a positive effect on my career. Lotsa co-workers; lotsa rewarding times. Thanks for everything you did. How about Steven Black and that fabulous wiki he set up? You know, if you use his wiki, have used his wiki, or plan on using his wiki, I am seriously suggesting that you donate (his requested amount) $25 to subsidize a portion of the upkeep. Hey, it couldn’t hurt. There are many other International developers (OK, Steven Black and Doug Hennig are “International”) who, as we speak, are continuing to contribute to VFP’s advancement. Christof Wollenhaupt comes to mind. He has more VFP knowledge in his pinky finger than I would ever hope to learn much less remember. Thanks to ALL OF YOU. Keep up the good work for everyone’s benefit. It is truly a labor of love and I (as just a grain of sand on the FoxPro beach) greatly appreciate your efforts. Now for the little people. Those are the attendees at conferences, user groups, etc. that I may have met only once. The discussions, ideas, concepts – all very inspiring. We all know that the FoxPro community is extremely forthcoming with support, ideas, and assistance. Please keep up all that selflessness. Talk about paying it forward!
To each and every one of you, I hope we cross paths again. It has been the funnest 22 years a person could ask for and you all made it possible.
Bestest to all,
July 07, 2010
My VFP Beliefs Have Been Re-enforced (Again!)
I hope that you are really bored because this blog is going to RAMBLE. I know this because while nothing I am about to say is earth shattering, it is good to know that several of my beliefs have, once again, been validated. I am hoping that you will take the time to read this blog and take from it, ideas I have stated before (but can’t be repeated enough), adopt them as your own, and, eventually, get your own validation of them.
Last week, I was having a Visual FoxPro issue where a report that I inherited was running slowly. In this case, “slowly” means in the five minute range for a three page report. Speaking with the primary user, it seems that this report has been running slowly for MANY years, but since she runs it once a month, she felt that she could take the slowness into account and it would give her time to wash and wax her car. Don’t you just love it when a user says “Oh, it has always been doing that. I have just learned to live with it.”?
The really unusual thing (at least, to me) about it was that it only took under 5 seconds to run on my computer. After our network techie confirmed that all of the workstations (including mine) were configured exactly the same and that the network connections and speeds were the same, it seemed that there might be a software issue. The obvious choice was to check the code. Obvious to a “normal” developer, but to me, I INSTINCTIVELY realized that it couldn’t be a coding issue. After all, we were running the same executable on identical computers, over the same network, hitting the same data, using the same indexes, and yet… when I ran the report, it was 60 times faster. Additionally, it was not a printer issue since this particular report had to be previewed before being printed.
After performing several benchmark tests on other workstations, a pattern began to develop. Of the 25 workstations, three of them (mine and two other “development” computers) were the ONLY CPUs to run the report quickly. The other 22 all took five minutes on average. The ONLY difference between the computers was that the three “development” computers had full-blown VFP9 installed while the workstations had only the run-time files. Could it be that the code ran faster using VFP9.exe rather than the run-time files? That appeared to be the case. At this point I will stop with the details and just say that I convinced myself that this WAS the case. When I renamed the VFP9.exe (on MY computer) and ran the reporting exe , it also took five minutes. Strange. Very strange. This just couldn’t be right, and yet, it sure seemed that way.
Since the solution is not actually the reason for this blog, I will end the suspense by saying that the issue has been resolved by modifying and optimizing the SQL SELECT statement that created the reporting cursor. That is how I actually corrected the situation, but I am still concerned WHY the old code ran faster when run on a CPU with full-blown VFP9 installed. That, too, is a story for another time (after some further study). OK, so my problem is solved. At least, corrected so that the report runs quickly. After all, in many cases, that is the goal. Just fix it. Make it work right. Done!
However, on this journey to correct the situation, I took it upon myself to send out a short email to members of the FoxPro community for THEIR suggested solutions. Now, of course, there isn’t any formal “email directory” of FoxPro users available, but I have my personal list of VFPers whom I have met over the years. How I compiled this list is very important. I compiled it, mainly, while “networking” at various FoxPro conferences. Over the years, I have followed the advice of other VFPers and while at conferences, I took it upon myself to approach the “gurus” who were there and introduce myself. This has paid untold dividends over the years. Besides becoming friends (on various levels), it also gave me the opportunity to widen my range of people who are (always cheerful and willing and) eager to help. Unfortunately, the number of Visual FoxPro conferences is dwindling. Fortunately, there is the Southwest FoxPro Conference (www.swfox.net) which is the best Visual FoxPro conference in the United States, bar none. And guess what? The next conference is just around the corner. It is scheduled to take place in Mesa, AZ in mid-October. Follow the link for all the details. I cannot recommend it highly enough if you are still using VFP. Even if you are a VFP developer thinking about “jumping ship” and moving on, there are many sessions that will aid you in doing just that. You owe it to yourself to check it out.
The response to my blanket email blast was outstanding. I received at least 15 responses with suggestions on what to try to fix my dilemma. ALL, repeat, ALL of them were worth considering. Not only did I receive 15 replies, but they all arrived within 24 hours. This, again, just confirmed what I have come to know and believe… namely, the Visual FoxPro community is the most charitable with both their time and knowledge. The synergistic, collective knowledge it has from “book learnin’” as well as practical experience is a knowledge base that should not be underestimated. The VFP community is BETTER than hitting F1. Those are my opinions and I am sticking to them. Thank you everyone for lending a hand.
April 02, 2010
Life Has Just Gotten Easier
This is going to be a "short and sweet" blog. OK, since I was vaccinated with a phonograph needle, it will be as "short" as *I* can make it.
The purpose of this blog is twofold. First, to help spread the word about a Visual FoxPro issue (and the solution) that has been annoying me for several years. Second, to give credit where credit is due and point you to the source of the solution; namely a recent Doug Hennig blog.
As I said, it has been an annoying issue, but one that was not so bad as to actually cause me to get off my big, fat fanny and do something about it. Fortunately, the ever-tenacious Doug Hennig did and was generous enough (isn't he always?) to publish his findings.
OK, the issue is... most of us Visual FoxPro developers know that it is good form to NOT save the printer environment with the report form. Sorry, but if you do not know this, it is a topic for discussion at another time. Or you could "Google it". Nevertheless, as diligent as I may be in not saving the printer environment, there have been times where it was saved. I could never capture that point in the development of the report form when it happened. The main reason for that is because (usually) when I noticed the printer environment had been saved, it was way past the point at which it happened. Like I said, annoying like a gnat buzzing around your face at a picnic; not like a nine inch nail driven into your brain.
Enter Doug Hennig to the rescue. I am not going to reveal the solution here, but suffice to say that it is a relatively easy fix which can be accomplished in about five minutes. Here is the URL to Doug's blog... http://doughennig.blogspot.com/ Look for the blog entitled, "Fixing a Report Designer Bug".
Thanks again, Doug for sharing.
September 30, 2009
K.O.K.O.P.E.L.L.I. is koko-licious!
The world’s greatest software application has been released. OK, maybe not the world’s greatest, but certainly, this country’s finest software. That COULD be a bit of a stretch, too. Why don’t I tone it down a bit and just say that a useful piece of software is now available? It will be particularly useful if you are planning on attending the Southwest Fox 2009 conference in Mesa, AZ on October 15-18, 2009. K.O.K.O.P.E.L.L.I. is its name and you can read more about it and view a video tutorial at http://swfox.net/kokopelli.aspx. It is also available for download at that URL. Allow me to tell you a little bit more about it.
Several years ago, a co-worker, Doug Carpenter, and I were annoyed by the time we “wasted” in trying to come up with the optimum conference schedule when attending a developer conference with multiple sessions. It seemed like we would spend several hours with pencil and paper trying to pick and choose the correct combination of times and sessions to get the best bang for our conference buck. It was then that we embarked on the quest to come up with some semi-intelligent, intuitive software that would do the scheduling for us. It was that software, “The G.O.D.D.E.S.S.”, which debuted at the DevEssentials in Kansas City, MO. in 2004. K.O.K.O.P.E.L.L.I. is the next generation of this type of software.
Written in Visual FoxPro 9, Kokopelli (K.O.K.O.P.E.L.L.I. is too difficult to type) takes the attendee’s preferences and converts them into a SUGGESTED conference schedule that all but guarantees, by the time the conference is over, that the attendee will have seen every session they wanted to see. You will need either VFP8 or VFP9 installed or have the run-time files available to run the executable.
Once you download the zipped file, unzip the file into the directory of your choice and just run the executable. Take the time to READ both the help (4th page of the page frame) and/or use the graphical help by clicking on the “Help!” button. This is all the help you should need. I do have a couple of warnings however. If you keep them in mind, you will have the best chance of getting the optimal schedule.
First, although it may appear to be so, it should NOT be your goal to “pick” the session in each time slot that you want to attend. The software will eventually do that for you. YOUR job is to rank the four (or five) sessions in each time slot as if they were the only four sessions you could attend the entire conference. i.e. Of the four sessions in the time slot, which one would you MOST like to attend? Which one would be your 2nd choice? Third choice? It is so important that you understand this concept; I am suggesting that you read this paragraph over again. Do the same thing for EACH time slot (ignoring what you chose before in other time slots). To reiterate... Treat EACH TIME SLOT as an entity unto itself. By following this plan, Kokopelli will determine which sessions are most important to you and present a schedule that should meet your needs and ensure that you have had a chance to attend the sessions that interest you the most.
Second, the generated schedule is ONLY A SUGGESTION. No one is twisting your arm and forcing you to attend a particular session. I think you will be amazed at how well it does in creating a schedule for you. You can always tweak the rankings to fine tune the schedule. If you have any questions, concerns, comments, feel free to comment them here and I will answer them and guide you down the right path.
Lastly, we tried to come up with a form that isn’t your standard Visual FoxPro/Windows form in appearance. We hope you like it and appreciate the Southwestern theme of the form.
"Thank you"s are in order. I must mention those VERY patient folks who tested the application, offered constructive criticism, and generally harassed 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:
George Clooney (just checking to see if you are paying attention)
For those of you who are really weird, YES, it WAS in a particular order - ALPHABETICAL (by last name).
Thanks again to everyone.
Liar, liar, pants on fire!
Before I start this diatribe, give me a minute to get up on my soapbox. Ah, that’s better. The air up here is not as polluted and I can see more clearly now. Too bad some of you can’t get up on the soapbox with me to enjoy the view, but I digress. OK, before going any further, I warn you that I am about to offend a lot of “Kool-Aid drinkers”. If you are one of them, tough toenails, because I’ll give you the bottom line right now – you, my friend, are an idiot. If you don’t have thick skin, read no further. Those of you brave enough to face the truth, continue on.
We here at Visionpace make every attempt to practice the Agile methodology of software development. We are proud of the fact that this practice serves both us, as software developers, and our clients extremely well. Many of our clients were reluctant at first, but once they understood the benefits, most of them gave it a chance and haven’t looked back.
Agile practices are a good thing, but I do have one beef that I am VERY passionate about and I am about to discuss (some of you might even say, proselytize) it. In many agile discussions, as well as discussions about other software disciplines, one often hears the phrase, “All comments are lies.” Those of you who believe this are (as I have alluded to above) idiots! However, those of you who do NOT believe it, COULD still be an idiot, and so, be sure to get a second opinion.
Hey, I get it. Don’t trust comments. They are not always accurate. Duh! I feel that there are a certain percentage of you out there who actually embrace this belief because it validates the fact that you were doing the right thing all those years by NOT putting comments in your code. No, it just validates that you are lazy. Lazy is not, necessarily, a bad trait in a software developer, but NOT commenting your code WITHIN the code makes you, dare I say it again, an idiot. That is the last time I will use that term, because, hopefully by now, you are riled up enough to really listen to me.
Other than the fact that someone either knowingly wrote an inaccurate comment or wrote a comment, modified the code pertaining to it, and then did not update the comment, can any one out there give me a reason NOT to trust a comment you discover in code? We will exclude that person from the discussion because he is a “psycho programmer”; you know the one that NEVER follows any kind of standard and use one character mvars. Besides, most “psycho programmers” don’t comment anyway.
Here are the reasons why, in MY opinion, you SHOULD comment your code.
Let’s get the “trust” issue out of the way right now. If YOU put the comment in yourself, you BETTER believe that the comment is accurate. You did it (primarily) for yourself. The fact that an accurate comment will benefit a maintenance programmer who comes down the pike a year later is an extra benefit; a benefit which I appreciate when I am called in to do the maintenance. I will be more than happy to ASSume that the newly discovered comment is accurate because THAT developer put it in there and, like you, why would they want to lie to them self? Yes, there is that chance that the comment is now inaccurate. Studies have shown, statistically, that approximately 93% of comments ARE accurate. Right here, you should be asking yourself where I got those numbers, and right here, I will tell you that I made them up. Who would waste their time researching that fact? Nevertheless, think about it, most comments ARE accurate because the person who writes them WANTS them to be accurate.
OK, I can tell you are getting a little bit peeved right now. Dave, I thought our code is supposed to be “self-documenting”? If I write bug free code, why do I have to comment? Oh, grasshopper, you will learn someday. Until then, trust me, write those comments! In all honesty, I, too, am a believer that under most circumstances, the code SHOULD be self documenting. However, consider the following code:
REPLACE Name WITH UPPER(SUBST (LastName, 1, 2) + LOWER(SUBST (LastName, 3)
That code is self documenting, if someone wanted to take the time to figure out what it does, they could easily do so. The real question the person should be asking their self is... WHY is that code there? It looks kind of goofy anyway. When I first saw it, I thought that perhaps the coder didn’t know about the PROPER function, but then, they were really capitalizing the first TWO letters of the name. Maybe the parameters of the first substring should have been 1, 1. Maybe I should refactor using the PROPER function. I am soooooooo confused! Close to an hour of my time was spent determining WHY this code was here. Imagine how much easier it would have been had the following comment been in place.
DLA/Visionpace 04/01/2004 Mr. Jones, the COO, recently bought 113 file cabinets
DLA/Visionpace 04/01/2004 Mr. Jones, the COO, recently bought 113 file cabinets
Immediately, we can see that the code is correct and that there is a reason WHY it was written. Additionally, as often happens to me, in some scrum, when asked why this was done or who requested it, the answer is there. Not only for me, but for you when you come in to do the maintenance. Two minutes to initially write the comment or 60 minutes to figure out the details five years later. You do the math.
Additionally, what one developer feels is self-documenting, another might not. Why not eliminate any potential confusion and explain the reason for the code’s existence? Again, it will save the next person who comes along much valuable time for there is a real good chance that they will know nothing about the project and the code. Believe me, you will benefit also. One of my favorite phrases is... “When you are coding, you and God know what you are doing. Six months later, only God knows.” I can not begin to tell you the number of times when I have gone into some legacy code and the comment I wrote three years earlier IMMEDIATELY brings back to life the exact reason for the code. Many is the time that it has saved my fanny. Those are the times that I almost dislocate my shoulder patting myself on the back for a job well-done.
If you have made it this far, you are just not getting enough billable hours in. However, thank you for reading along and agreeing or disagreeing. Either way, I would appreciate hearing your thoughts on this very polarizing topic. I promise to bring an open mind if you do the same, but I will say right up front, that it will take a Herculean effort to change my mind. Care to give it a try?
June 29, 2009
Are Ya Catchin' This, Camera Guy?
Hear that sound? Tick-tock, tick-tock...
That's the countdown clock at the main office of Geek Gatherings and it is getting closer to the super-saver deadline for the 2009 Southwest Fox Conference! July 1st is just a couple of days away and I thought I would pass along a reminder just in case you forgot to type it into your task list or stick it on your monitor on a yellow sticky note.
The Southwest Fox Stimulus Package holds firm on the cost of registration if you register by July 1st. Yes, registration will be the same cost as last year’s conference IF, repeat, IF you take advantage of the new "super-saver registration" deadline. Can you say JULY FIRST, boys and girls?
Southwest Fox 2009 will take place in Mesa, Arizona USA and I strongly suggest, if you are still developing in Visual FoxPro, that you think long and hard about being there. Don’t miss out on the $125 discount, the free pre-conference session, and a chance at the $300 scholarship from White Light Computing.
Already registered? Great! Spread the word (hey, that is what I am doing right now) among your fellow VFP developers (who have been procrastinating) that the deadline is looming nigh?
Read about the registration process and get the registration application here:
OK, that sounded kind of bland, but now I would like to add the emotional/excitement factor. The first half of this blog was the facts, ma’am, just the facts. This second half contains (although not in its entirety) stuff that I am looking forward to doing and experiencing at the conference.
Reviewing and reinforcing all I can about the VFP9 Report Writer and ReportListener. Show of hands, please. Who, among you, has still not explored all of the capabilities of the ReportListener? i h v my h n up in h ir. This is the PERFECT opportunity to do just that.
VFPX – Lots of us have heard about it and maybe even played with it a little bit, but THIS TIME at THIS CONFERENCE, I vow to pick the brains of EVERY speaker who is presenting ANYTHING concerning EXTENDING VFP. It will look like a scene from “Hanibal” (Silence of the Lambs – Part II). Doug Hennig (GDIPlusX), Jody Meyer (Extending the VFP Grid Object), Jim Nelson (FoxCharts), Rick Schummer (Enhancing the VFP IDE using VFPX Tools) all better look out. I wonder which goes best with a nice Chianti? Learn to extend VFP to make it bigger, better, richer, fuller!!! I am ready. How about you?
Christof Wollenhaupt has a session about “Excelporting”. That’s just a fancy word that means “make your data look like a spreadsheet”. Sounds like something I need because my clients are always asking for DATA in a SPREADSHEET (and not just using the COPY TO command).
Those are just some of the session that I plan on attending. Your mileage may vary, but if you go to http://www.swfox.net, you will be able to see the entire list of speakers and a brief description of the sessions. Don’t delay; you just have a couple of days! Hope to see you there (unless you are an obnoxious “know-it-all”, in which case, I will just mosey on over to the bar and order another adult beverage).
June 24, 2009
A Joke Isn't Old If You Haven't Heard It Before
The weather here in Kansas City is going to be very warm today. The prediction is 97 degrees and with the humidity, the heat index will make it feel like it is 110 or more. This allows me to tell my annual “how hot is it?” joke. How hot is it? Coming back to the office today, from lunch, I saw a dog chasing a cat across the parking lot <pause> They were both walking. <insert rim shot here>. Now, some of you laughed and some of you groaned and some of you said, “Geesch, that joke is so old, I heard it when I was in the third grade.” I would counter and say that a joke is not old if you haven’t heard it before.
I learned something “new” yesterday that I know is not new, and in fact, might be known by tons of Widows users. However, since I didn’t know it, perhaps you don’t either and that is why I am passing along this bit of “new” information. I have encountered this situation many times throughout my career, been annoyed by it, and yet, never knew I could do anything about reducing my frustration. Yesterday, I was at a client site and the location of some text files I wished to access was stored somewhere on their server. The folder I wanted to access was about six levels down from the root directory and each level had a minimum of 50 folders. Needless to say, migrating to the desired location using Windows Explorer was tedious. Not very tedious the first couple of times, but since I had to do this about every five minutes, it quickly became very annoying. You know the drill (no pun intended)… Open up Windows explorer, search the list of folders for the first level, click on the folder, locate the next level from among 50 folders, find it, click it, and so forth until you have navigated your way to the final level.
It was when I mumbled something about how frustrating it was having to navigate all the way down to Dante’s seventh level of hell, that my contact at the client site stopped me and showed me his technique. Since I think this is such a cool trick, I have to give credit to Patrick Hansen of Penton Media who showed it too me. I hope I am not blowing it out of proportion, but this is one of those tips that I will use often and now, maybe you will too. Navigate to the desired folder in Windows Explorer. Once there, you can add that “location” to you list of favorites at the top of the screen just like you would do for one of your frequently visited websites. Yep, that’s right. Just click on Favorites|Add to Favorites… and enter a description. The next time you need to get to that folder, just open Windows Explorer, click on Favorites and it will be there. Click on the link and you are immediately transported to the desired location. I think this is the closest I will ever get to “Beam me up, Scotty”.
Now, all of these shortcuts to various folders will show up in your list of favorites when you open up Internet Explorer also. Because of this, I created a new folder in my favorites named “Explorer Folders” and the name of each link is the full path I want to go to. Each level is separated with an underscore for clarity. i.e. G_Departments_BookGroup_MarketingRep_Extracts_Colorado_Aug08. What a time saver! Thanks again, Patrick. You CAN teach an old dog new tricks.
May 22, 2009
It may not be a big deal to you, but it is to me.
A Visual FoxPro User Group buddy of mine, Larry Koska, contacted me recently and asked me to confirm his suspicions. I immediately told him, "I agree, you ARE ugly." While this may be true (he's gonna squash me like a bug the next time he sees me), it wasn't what he wanted to confirm.
It seems that tool tips for objects in a grid that have been previously working flawlessly are no longer visible. Would I run his form and see if I got the same results? Sure, but, all knowingly, I reminded him that I shouldn't have to "waste" my time because (undoubtedly) what had happened was that the ShowTips property of the form on which the grid resides probably got accidentally reset to .F..
"No, dummy, (Larry and I clearly have a mutual admiration society going on), I am not that stupid. That was the first thing I checked."
My response then was, "Lar, this may actually be a problem. Let me check it out."
And so the mini test began. I fired up his form and everything worked as expected. I could see tool tips specific to the grid, to the columns, and even the column headings. And yet, I had to believe that Larry knew what he was talking about; he usually does. So, why would the form work on my machine and not his? What recent changes might he have made? A quick phone call determined the difference. Both of us are running VFP9, both of us have access to Vista OS and XP OS and tested on both OSs. The only apparent difference is HE (always on the bleeding edge of technology) is running Service Pack TWO and I (invaribly on the coaggulating edge) am running Service Pack ONE. To confirm, he reinstalled using SP1 and the exact same form work as expected. Mystery solved. Now I am going back and review a recent blog by Rick Schummer (April 8, 2009) to make sure this bug gets reported properly.
Getting tool tips to display may not seem that big of a deal, but if I didn't want them to be displayed, I wouldn't have gone to the bother of creating them. I am glad to see that Larry, as a developer, followed through rather than re-evaluate the need for tool tips. Besides, as quite often happens, I learned something and because I worked on it, I will remember this issue. Subsequently, a Google search did discover a discussion of this issue and that MIGHT have saved us time, but in the long run, I believe it was more beneficial to have gone through the discovery process ourselves. Afterall, it is all a big game and isn't that what we developers like best?
April 02, 2009
One of the Reasons Why I Like Blogs
Blogs are something I can (usually) take or leave alone. Some are good and some are bad. I am aware of the reasons WHY blogs are (supposedly) important to businesses, but, at times, I question some of those reasons. It is difficult, although not impossible, to ascertain accurate numbers regarding how much new business, increased prestige, and other worthwhile benefits are gained as a result of routine blogging. One thing that is easy to measure, however, is how useful a particular blog is to ME. How a blog benefits ME is really the best reason that I can come up with to justify reading blogs.
Today's perfect example is the most recent post ( http://doughennig.blogspot.com ) by one of the legendary (hope that description doesn't go to his head) super-players in the world of Visual FoxPro, Doug Hennig. Hidden within the code that Doug generously provides is a Visual FoxPro function that I did not know even existed. The ObjToClient() function has limited use, but like most functions, when you need it, you are glad it is around. I have never used it, but after reading about it, I KNOW that I could have used it in the past when I "jumped through hoops" to achieve the desired effect. AND... I KNOW that I will use it in the future when the need arises.
I would not have gained this knowledge had I not been in the habit of reading Doug's blog. Now it so happens that, today, Doug's blog was the one that contained the nugget that made me a smarter software developer, but it just as easily could have been one of the many other blogs that I read on a regular basis. So, if you are not reading blogs regularly (which begs the question, what are you doing here right now?), get in the habit of spending a few minutes each day. I guarantee that, in the long run, it will pay YOU dividends.
October 17, 2008
Phoenix in the fall; Arizona in the autumn
If you aren't at Southwest Fox 2008 in Mesa, AZ (http://www.swfox.net/) this weekend, you're missing a real treat. Tamar Granor, Doug Hennig and Rick Schummer have once again done an excellent job organizing a conference that is a tremendous value for your money.
To give you taste, here are some of the sessions I attended today:
- In "Profiling and Refactoring: How to Analyze and Clean up Your Code", Andrew Ross MacNeill talked about a powerful tool in VFPX called Code Analyst that can help you identify "issues" in your code (e.g., too many lines of code in a single routine, too many comments, too many loop structures, has more than one return value, etc.). (VFPX is a Visual FoxPro Community effort to create open source add-ons for Visual FoxPro 9.0). You can select which rules you want run against your code; you can also create your own rules.
You can download Code Analyst for free from the VFPX CodePlex web site: http://www.codeplex.com/VFPX.
Andrew also discussed an add-in for the Coverage Profiler.
- Christof Wollenhaupt gave an introduction to mobile development; employing his product, Guineu (Catalan for "Fox"), you can develop mobile applications from within Visual FoxPro. Cool!
- Doug Hennig talked about Advantage Database Server for VFP Developers; with this alternate back-end, you can either read VFP .DBF files directly or you can move your data into the proprietary ADD format. With Advantage Database Server (ADS), your .DBF files are no longer limited to 2 GB. "In ADS, there isn't a direct limit on the size of the file; instead, the limit is a maximum of 2 billion (2,147,483,648) records. Of course, if your DBF becomes larger than 2 GB, you'll only be able to access it through ADS since VFP will see it as invalid."
"ADS [also] has a fast and powerful full text search (FTS) feature. FTS uses an index on each word in a memo field to provide fast, index-based lookups for desired words."
- Rick Schummer did a presentation focusing exclusively on "Using VFPX Components"; he demo-ed various controls like Themed Controls (e.g., OutlookNavBar), the ctl32 project (e.g., StatusBar and BalloonTips [tooltips on steroids]) and Desktop Alerts. VFPX controls add pizzazz to your VFP applications, giving them a more polished/professional appearance. You can download these controls for free from the VFPX CodePlex web site (http://www.codeplex.com/VFPX) and then implement all of these controls in your VFP applications
- In "Creating Owner Drawn Controls in VFP", Christof Wollenhaupt showed us how to "exploit the power of GDI+ to create our own controls" in VFP forms (e.g., "new pageframes, progress bars, formatted text, chart controls, basic text input or Unicode text output"). He also covered "dealing with mouse and keyboard input."
- Bo Durban showed us how to create custom report controls with VFP 9, employing the GDIPlusX library; rotated text, dynamic text formatting, graphs and custom shapes are a few examples of things you can do/include in your reports.