<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/rss2full.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/itemcontent.css" type="text/css" media="screen"?><rss xmlns:media="http://search.yahoo.com/mrss/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>Visionpace</title><link>http://blog.visionpace.com/</link><description></description><language>en-US</language><admin:generatorAgent xmlns:admin="http://webns.net/mvcb/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" rdf:resource="http://www.typepad.com/?v=1.0" /><media:copyright>copyright Visionpace - All rights reserved</media:copyright><media:category scheme="http://www.itunes.com/dtds/podcast-1.0.dtd">Technology/Information Technology</media:category><media:category scheme="http://www.itunes.com/dtds/podcast-1.0.dtd">Business/Marketing</media:category><media:category scheme="http://www.itunes.com/dtds/podcast-1.0.dtd">Technology/Developers</media:category><itunes:owner><itunes:email>dbliss@visionpace.com</itunes:email><itunes:name>Doug Bliss</itunes:name></itunes:owner><itunes:author>Doug Bliss</itunes:author><itunes:explicit>yes</itunes:explicit><itunes:subtitle>The latest in the world of software development, IT Training and Agile Methodology</itunes:subtitle><itunes:summary>The latest in the world of software development, IT Training and Agile Methodology</itunes:summary><itunes:category text="Technology"><itunes:category text="Information Technology" /></itunes:category><itunes:category text="Business"><itunes:category text="Marketing" /></itunes:category><itunes:category text="Technology"><itunes:category text="Developers" /></itunes:category><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/Visionpace" type="application/rss+xml" /><feedburner:browserFriendly>This is an XML content feed. It is intended to be viewed in a newsreader or syndicated to another site, subject to copyright and fair use.</feedburner:browserFriendly><item><title>Is it October yet?</title><link>http://feeds.feedburner.com/~r/Visionpace/~3/237777823/is-it-october-y.html</link><category>IT News</category><category>Microsoft</category><category>Software Blogs</category><category>Software Development</category><category>Visual FoxPro</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">dbliss@visionpace.com (Doug Bliss)</dc:creator><pubDate>Tue, 19 Feb 2008 14:56:18 -0600</pubDate><guid isPermaLink="false">http://blog.visionpace.com/2008/02/is-it-october-y.html</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>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. </p>

<p>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 ( <a href="http://www.swfox.net/">Southwest Fox website</a> ) that is specifically designed to assist community members in publicizing the conference, the ( &quot;<a href="http://swfox.net/promote.aspx">Promote the Conference</a>&quot; ) page. On that page, you will find several ways to help promote the conference and spread the VFP &quot;Word&quot;. </p>

<p>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.</p>

<p>Lastly, if you are interested, the call has gone out to all those interested in being a speaker at the 2008 conference.&nbsp; Details are on the Southwest Fox website.</p>]]></content:encoded><description>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...</description><feedburner:origLink>http://blog.visionpace.com/2008/02/is-it-october-y.html</feedburner:origLink></item><item><title>It Occurred to Me During the Super Bowl</title><link>http://feeds.feedburner.com/~r/Visionpace/~3/229174363/it-ocurred-to-m.html</link><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">dbliss@visionpace.com (Doug Bliss)</dc:creator><pubDate>Mon, 04 Feb 2008 16:20:55 -0600</pubDate><guid isPermaLink="false">http://blog.visionpace.com/2008/02/it-ocurred-to-m.html</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><span face="Comic Sans MS">The world is coming to an end as we know it. It is as simple as that. I saw proof-positive of that last Saturday. I will tell you why I know this to be true, but before I do, I find myself in the enviable position of being able to solve the rest of the world’s problems. For the sake of this blog, the “world” will be considered to be the “computer” world; not the world of upcoming elections, ongoing military battles, or whether or not the current writer’s strike will end in time for “Two and a Half Men” to resume taping.<br /></span></p>

<p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><span face="Comic Sans MS"><br />&nbsp; &nbsp; Nostradamus</span></p>

<p class="MsoNormal" style="MARGIN: 0in 0in 0pt"></p>

<p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><span face="Comic Sans MS"><a onclick="window.open(this.href, '_blank', 'width=226,height=274,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false" href="http://visionpace.typepad.com/.shared/image.html?/photos/uncategorized/2008/02/04/nostradamus_3.jpg"><img title="Nostradamus_3" height="121" alt="Nostradamus_3" src="http://blog.visionpace.com/images/2008/02/04/nostradamus_3.jpg" width="100" border="0" style="FLOAT: left; MARGIN: 0px 5px 5px 0px" /></a> My gain is your gain. My new-found wisdom will allow you to follow my all-knowing, life-changing decisions.** Again, I remind you that my epiphany is based on the fact that I observed something that convinced me that the world is soon coming to an end. This mere fact makes “seeing the future” very easy (not to mention unnecessary). Anyway...<br /><br /></span></p>

<p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><span face="Comic Sans MS"><br /><br /><br /><br /></span></p>

<p class="MsoNormal" style="MARGIN: 0in 0in 0pt"></p>

<p class="MsoNormal" style="MARGIN: 0in 0in 0pt"></p>

<ol type="1" style="MARGIN-TOP: 0in"><li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in"><span face="Comic Sans MS">XP or Vista?<span style="mso-spacerun: yes">&nbsp; </span>Upgrade downward to XP, but then, does it really matter? The world will end before either of the next service packs are out for either one. </span></li></ol>

<p class="MsoNormal" style="MARGIN: 0in 0in 0pt"></p>

<ol type="1" start="2" style="MARGIN-TOP: 0in"><li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in"><span face="Comic Sans MS">Should I get more RAM? Logically, you can never have too much RAM although most likely, under most circumstances, you can’t use more than about 3.5 gig. Realistically, however, I would refrain from getting more RAM because it will just make things appear to move faster and therefore, you will reach the end of the world more quickly. IMO, downgrade to 16 meg. of RAM and S-L-O-W things down to a crawl.</span></li></ol>

<p class="MsoNormal" style="MARGIN: 0in 0in 0pt"></p>

<ol type="1" start="3" style="MARGIN-TOP: 0in"><li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in"><span face="Comic Sans MS">Paper or plastic? Tough call, but then it doesn’t have to be. Pick one and get on with life, it will be over soon. I suppose from an altruistic standpoint, we might help the next inhabitants of this big, blue marble by leaving as many trees around as we can.</span></li></ol>

<p class="MsoNormal" style="MARGIN: 0in 0in 0pt"></p>

<ol type="1" start="4" style="MARGIN-TOP: 0in"><li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in"><span face="Comic Sans MS">Boxers or briefs. Again, a tough call. Don’t sweat it; it isn’t going to matter.</span></li></ol>

<p class="MsoNormal" style="MARGIN: 0in 0in 0pt"></p>

<ol type="1" start="5" style="MARGIN-TOP: 0in"><li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in"><span face="Comic Sans MS">VFP SP1 or VFP SP2? VFP SP1. In six months if the world is still running and your applications are too, then you can BEGIN to worry about SP2. Until then, count on the apps not needing any enhancements.</span></li></ol>

<p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in"><span face="Comic Sans MS">&nbsp; &nbsp;Davetradamus</span></p>

<p class="MsoNormal" style="MARGIN: 0in 0in 0pt"></p>

<p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><span face="Comic Sans MS"><a onclick="window.open(this.href, '_blank', 'width=150,height=150,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false" href="http://visionpace.typepad.com/.shared/image.html?/photos/uncategorized/2008/02/04/davetradamus.jpg"><img title="Davetradamus" height="100" alt="Davetradamus" src="http://blog.visionpace.com/images/2008/02/04/davetradamus.jpg" width="100" border="0" style="FLOAT: left; MARGIN: 0px 5px 5px 0px" /></a> So, that should just about wrap up any big questions that may be bothering you. If you think I have missed any, just leave a comment, but make it quick; we don’t have much time. Oh yes, what has enabled me to play <span lang="EN" style="mso-ansi-language: EN; mso-bidi-font-weight: bold">Nostradamus </span>for the day?<span style="mso-spacerun: yes">&nbsp; </span>I was grocery shopping on Saturday buying my usual collection of health food; licorice Nibs, Dorito Cool Ranch chips, and hot dogs. I ALWAYS have a problem with the hot dogs. Since the beginning of mankind, it has been virtually impossible to buy the same number of buns (in one package) as there are hot dogs in one package. I mean, after all, who wants to end up with either left over buns or left over hot dogs? Not me! Right now you are, I’ll bet, assuming that I finally found eight buns and eight hot dogs or the mother lode, ten buns and ten dogs. Nope. What I found was something even rarer than being able to match up the same number of buns and dogs. What I found was (are you sitting down?) a package of hot dogs containing SEVEN hot dogs. SEVEN! Now, that’s just not right. It had to be a fluke, but when I checked every one of the packages of that brand (I am purposely avoiding giving out their name to save them the embarrassment, but will send it to you under private e-mail if you would like), indeed, each package contained SEVEN hot dogs. If that isn’t proof-positive the world is coming to an end, I don’t know what is. Be smart. Do not ignore my insight. The end is near.<br /><br /></span></p>

<p class="MsoNormal" style="MARGIN: 0in 0in 0pt"></p>

<p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><span face="Comic Sans MS">**Limit of responsibility – Note that your mileage may vary. Blindly following my new insight may be harmful to your physical person, your savings, your personal relationships, or your bowling average. The new-found wisdom expressed in this blog in no way reflects, one way or another, the feelings, wisdom, knowledge, explicit or implied by my employer, Visionpace (but boy, are they going to be sorry when they elect to not follow my advice). The observations are solely my own; no one else’s, and as such, I expect them to allow me to end up ruling the world (or something very, very close).</span></p>

<p class="MsoNormal" style="MARGIN: 0in 0in 0pt"></p>

<p class="MsoNormal" style="MARGIN: 0in 0in 0pt"></p>

<p class="MsoNormal" style="MARGIN: 0in 0in 0pt"></p>]]></content:encoded><description>The world is coming to an end as we know it. It is as simple as that. I saw proof-positive of that last Saturday. I will tell you why I know this to be true, but before I do, I...</description><feedburner:origLink>http://blog.visionpace.com/2008/02/it-ocurred-to-m.html</feedburner:origLink></item><item><title>Bugs the Debugger Won't Help You With</title><link>http://feeds.feedburner.com/~r/Visionpace/~3/202984702/bugs-the-debugg.html</link><category>Software Blogs</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">dbliss@visionpace.com (Doug Bliss)</dc:creator><pubDate>Wed, 19 Dec 2007 15:44:30 -0600</pubDate><guid isPermaLink="false">http://blog.visionpace.com/2007/12/bugs-the-debugg.html</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>SET RANT ON<br /><br />You do not even have to read any further because there is nothing you can do to improve the situation and contrary to the title, this has nothing to do with any debugging tool.&nbsp; However, Dear Abby says that I will feel much better if I get it out of my system, so here goes.&nbsp; The &quot;bugs&quot; where the debugger WON'T help are those little things that, frankly, annoy the H-E-double hockey sticks out of me. I am wondering if they bug you as much or perhaps you even have some that annoy you and would like to vent. Feel free to comment.&nbsp; Right now, it is my turn.<br /><br />#1 on my list are the companies who have a double door leading into their establishment and NEVER, repeat, NEVER unlock one of the doors.&nbsp; What is that all about?&nbsp; They paid for the door.&nbsp; Why not use it?&nbsp; Otherwise, it is just an expensive wall.&nbsp; I don't need to have my carpel tunnel syndrome <span style="COLOR: black; FONT-FAMILY: &quot;Trebuchet MS&quot;">aggravated </span>by walking into a door (assuming that it will open) only to find it doesn't budge because it's locked.<br /><br />#2 is public restrooms where the maintenance person has jammed the paper towels so tightly into the towel dispenser that it is almost impossible to pull a towel from the dispenser. Invariably, my wet hands try to pull the towel only to come away with a white triangle about the size of my thumb. I try again; same result. I then reach into the slot and pull out 15 towels. The triangles have fallen onto the counter, making a mess and I have killed another tree by wasting 15 towels when two would have done the job.<br /><br />#3 is a corollary to #2. The hand dryers that blow hot (if you are lucky) air.&nbsp; Their drying span is too short to complete the job and yet, too long if run a second time. Think of all the electricity we are wasting by having to run the hand dryers a second time. If we want to stop our dependence on foreign oil, we can start by increasing the amount of time in the drying cycle of hand dryers by 50%, thus requiring only one cycle.<br /><br />#4 are cell phones.&nbsp; Oh, you are all shaking your heads. Well, then, I won't go any further because you already know what I am going to say.&nbsp; Please, save me the effort and just say it for me. <br /><br />You know, Dear Abby was right. I do feel better and the price of the therapy was cheap.&nbsp; Thanks for listening. You, too, can avail yourself of this free, cathartic treatment. Just let me know what is bugging you.&nbsp; Until the next time, here's to better mental health through griping, moaning, and complaining.<br /><br />SET RANT OFF</p>]]></content:encoded><description>SET RANT ON You do not even have to read any further because there is nothing you can do to improve the situation and contrary to the title, this has nothing to do with any debugging tool. However, Dear Abby...</description><feedburner:origLink>http://blog.visionpace.com/2007/12/bugs-the-debugg.html</feedburner:origLink></item><item><title>A Promise is a Promise</title><link>http://feeds.feedburner.com/~r/Visionpace/~3/202263734/a-promise-is--1.html</link><category>Microsoft</category><category>Software Blogs</category><category>Visual FoxPro</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">dbliss@visionpace.com (Doug Bliss)</dc:creator><pubDate>Tue, 18 Dec 2007 10:16:52 -0600</pubDate><guid isPermaLink="false">http://blog.visionpace.com/2007/12/a-promise-is--1.html</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><span face="Verdana">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.<br /><br /></span></p>

<p class="MsoNormal" style="MARGIN: 0in 0in 0pt"></p>

<p class="MsoNormal" style="MARGIN: 0in 0in 0pt"></p>

<p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><span face="Verdana">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?<span style="mso-spacerun: yes">&nbsp; </span>15 years ago I was in the same boat.<span style="mso-spacerun: yes">&nbsp; </span>I read (almost) those exact same words and thought a developers’ conference can’t be that good.<span style="mso-spacerun: yes">&nbsp; </span>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.<span style="mso-spacerun: yes">&nbsp; </span>You are not an island.<span style="mso-spacerun: yes">&nbsp; </span>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.<br /><br /></span></p>

<p class="MsoNormal" style="MARGIN: 0in 0in 0pt"></p>

<p class="MsoNormal" style="MARGIN: 0in 0in 0pt"></p>

<p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><span face="Verdana">The two sessions I will address in this blog are the two sessions given by Cathy Pountney.<span style="mso-spacerun: yes">&nbsp; </span>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.<span style="mso-spacerun: yes">&nbsp; </span>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 5<sup>th</sup> 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.<span style="mso-spacerun: yes">&nbsp; </span>BOY, am I glad I did!<br /><br /></span></p>

<p class="MsoNormal" style="MARGIN: 0in 0in 0pt"></p>

<p class="MsoNormal" style="MARGIN: 0in 0in 0pt"></p>

<p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><span face="Verdana">“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.<span style="mso-spacerun: yes">&nbsp; </span>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.<span style="mso-spacerun: yes">&nbsp; </span>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.<span style="mso-spacerun: yes">&nbsp; </span>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”).<span style="mso-spacerun: yes">&nbsp; </span>Extensibility.<span style="mso-spacerun: yes">&nbsp; </span>What a concept!<span style="mso-spacerun: yes">&nbsp; </span>Unfortunately, those tricks will be shown in her OTHER session.<span style="mso-spacerun: yes">&nbsp; </span>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.<br /><br /></span></p>

<p class="MsoNormal" style="MARGIN: 0in 0in 0pt"></p>

<p class="MsoNormal" style="MARGIN: 0in 0in 0pt"></p>

<p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><span face="Verdana">OK, now for the cool stuff.<span style="mso-spacerun: yes">&nbsp; </span>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?<span style="mso-spacerun: yes">&nbsp; </span>Or printing only the odd pages, or only the even pages?<span style="mso-spacerun: yes">&nbsp; </span>You can now specify how the report is collated and how many pages print on a sheet of paper (ideal for printing “mini pamphlets”).<span style="mso-spacerun: yes">&nbsp; </span>You can specify the margins. Perfect when you want a wider margin for three-hole punching. You can shrink to fit the page.<span style="mso-spacerun: yes">&nbsp; </span>How cool is that?<span style="mso-spacerun: yes">&nbsp; </span>Haven’t you ever printed out a report and ONE detail line printed on the second page?<span style="mso-spacerun: yes">&nbsp; </span>If only you could have shrunk the report enough to get it all on one page.<span style="mso-spacerun: yes">&nbsp; </span>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.<span style="mso-spacerun: yes">&nbsp; </span>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.”<span style="mso-spacerun: yes">&nbsp; </span>Of course it isn’t when someone else has done the heavy lifting.<span style="mso-spacerun: yes">&nbsp; </span>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.<br /><br /></span></p>

<p class="MsoNormal" style="MARGIN: 0in 0in 0pt"></p>

<p class="MsoNormal" style="MARGIN: 0in 0in 0pt"></p>

<p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><span face="Verdana">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.<span style="mso-spacerun: yes">&nbsp; </span>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.</span></p>

<p class="MsoNormal" style="MARGIN: 0in 0in 0pt"></p>

<p class="MsoNormal" style="MARGIN: 0in 0in 0pt"></p>]]></content:encoded><description>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...</description><feedburner:origLink>http://blog.visionpace.com/2007/12/a-promise-is--1.html</feedburner:origLink></item><item><title>Sometimes, It Is the Small Things In Life That Count</title><link>http://feeds.feedburner.com/~r/Visionpace/~3/198105696/sometimes-it-is.html</link><category>Microsoft</category><category>Software Blogs</category><category>Software Development</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">dbliss@visionpace.com (Doug Bliss)</dc:creator><pubDate>Mon, 10 Dec 2007 09:45:42 -0600</pubDate><guid isPermaLink="false">http://blog.visionpace.com/2007/12/sometimes-it-is.html</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><span face="Verdana">Has this ever happened to you?<span style="mso-spacerun: yes">&nbsp; </span>It happens to me a minimum of once a week, but NOT ANY MORE!<span style="mso-spacerun: yes">&nbsp; </span>Most often it happens when I am copying a directory (yes, I am “old school” and refuse to say “folder”) full of files from a hard drive to a thumb drive. I know that the process will take a few minutes so I begin the copying and go get a drink refill.<span style="mso-spacerun: yes">&nbsp; </span>Adding fresh ice, topping off the glass, and meandering back to the computer, I notice a message on the screen.<span style="mso-spacerun: yes">&nbsp; </span>Have you seen one similar to this before?!?!</span></p>

<p class="MsoNormal" style="MARGIN: 0in 0in 0pt"></p>

<p class="MsoNormal" align="center" style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center"><span face="Verdana"><shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"></shapetype><stroke joinstyle="miter"></stroke><formulas></formulas><f eqn="if lineDrawn pixelLineWidth 0"></f><f eqn="sum @0 1 0"></f><f eqn="sum 0 0 @1"></f><f eqn="prod @2 1 2"></f><f eqn="prod @3 21600 pixelWidth"></f><f eqn="prod @3 21600 pixelHeight"></f><f eqn="sum @0 0 1"></f><f eqn="prod @6 1 2"></f><f eqn="prod @7 21600 pixelWidth"></f><f eqn="sum @8 21600 0"></f><f eqn="prod @7 21600 pixelHeight"></f><f eqn="sum @10 21600 0"></f><path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></path><lock v:ext="edit" aspectratio="t"></lock><shape id="_x0000_i1025" type="#_x0000_t75" style="WIDTH: 320.25pt; HEIGHT: 196.5pt"></shape><imagedata src="file:///C:\DOCUME~1\da1\LOCALS~1\Temp\msohtml1\01\clip_image001.jpg" o:title="Blog10"></imagedata></span></p>

<p class="MsoNormal" style="MARGIN: 0in 0in 0pt"></p>

<p><span face="Verdana">&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; <img title="Blog10_4" alt="Blog10_4" src="http://visionpace.typepad.com/photos/uncategorized/2007/12/10/blog10_4.jpg" border="0" />&nbsp; </span></p>

<p class="MsoNormal" style="MARGIN: 0in 0in 0pt"></p>

<p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><span face="Verdana">While not completely wasted, the time getting my refill wasn’t as productive as I thought it would be because the copying process did not complete, but, instead, paused waiting for my input. I said “Yes”, but then had to wait for the process to complete. What a pain. Oooh, thank you Microsoft. I certainly wouldn’t want to overwrite a file that I can recreate any time I want to (usually whether or not I actually want to). The fact that it is referred to as a “system file” makes it seem that much more important, too. Well, in MY opinion, (I use the phrase, “in MY opinion” so that if I am wrong in anything I say, I can just say that “MY opinion” was based on MY experience) there is very little upside by even having these Thumbs.db files hanging around all over the place.<span style="mso-spacerun: yes">&nbsp; </span>If there was only a way to prevent them from propagating like tribbles in heat.<span style="mso-spacerun: yes">&nbsp; </span>Hey, there is!</span></p>

<p class="MsoNormal" style="MARGIN: 0in 0in 0pt"></p>

<p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><span face="Verdana">I ASSume that the main purpose for these files is to have a way to easily (and quickly) see thumbnail images of any graphics files.<span style="mso-spacerun: yes">&nbsp; </span>Nice concept, no problem. It does take some amount of overhead to create the file, but to me, the time is insignificant unless you had a couple thousand .jpgs in a directory (and then, I would question THAT behavior). At any rate, you can prevent the OS from automatically creating (AND THUS, ELIMINATING THIS ANNOYING “FEATURE”) as follows:</span></p>

<p class="MsoNormal" style="MARGIN: 0in 0in 0pt"></p>

<p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><span face="Verdana">Open up Windows Explorer, go to the menu Tools|Folder Options| click on the “View” tab, and under the “Files and Folders” section, look for the checkbox with the caption, “Do Not Cache Thumbnails”. Stick a big, old, fat check in that box and from now on the Thumbs.db file will not be written to your hard drive. Yes, you WILL still be able to select Thumbnails as a format to view the directory’s files, but since it is not written to disk, it is never copied, and you will never see the above message again. As I mentioned, there is a very minor, minor, minor performance hit each time you request a thumbnail view, but it is a small price to pay (again) in MY opinion. Ah, life is good.<span style="mso-spacerun: yes">&nbsp; </span>Sometimes it’s the small things in life that count.</span></p>]]></content:encoded><description>Has this ever happened to you? It happens to me a minimum of once a week, but NOT ANY MORE! Most often it happens when I am copying a directory (yes, I am “old school” and refuse to say “folder”)...</description><feedburner:origLink>http://blog.visionpace.com/2007/12/sometimes-it-is.html</feedburner:origLink></item><item><title>Too Cool for School!</title><link>http://feeds.feedburner.com/~r/Visionpace/~3/196208109/too-cool-for-sc.html</link><category>Microsoft</category><category>Software Blogs</category><category>Webinars</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">dbliss@visionpace.com (Doug Bliss)</dc:creator><pubDate>Thu, 06 Dec 2007 11:42:53 -0600</pubDate><guid isPermaLink="false">http://blog.visionpace.com/2007/12/too-cool-for-sc.html</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Last October, when I attended the Southwest Fox 2007 conference, <a href="http://www.rickborup.com/blog">Rick Borup</a> of ITA Software, showed me a pretty slick tool that he recently discovered. I have been using it for about a month and although I do not use it often, when I need it, it really comes in handy. I thought it was cool enough to pass it along so that you could evaluate it for your own personal use.</p>

<p>The product is called ZoomIt and is available at: <a href="http://tinyurl.com/2xv7eu">http://tinyurl.com/2xv7eu</a>. It is, essentially, an easy way to magnify your screen. It is much easier to use than the magnifier that Microsoft routinely provides under the Accessories|Accessibility options. On top of that, it has a couple of features that are pretty cool. Before I go any further, I will tell you that it will be worth your time to read the accompanying documentation (it’s only one page) to save yourself some startup time. </p>

<p>If you read the documentation, you will find that ZoomIt has the capability to display a countdown timer on the screen so when you are giving presentations and take a 10 minute break, the countdown until the break is over is displayed so that all attendees are aware of the “official” time left before the presentation will continue.</p>

<p>Additionally, ZoomIt allows the user to (crudely) use the mouse as a pen to circle a specific area of the screen for emphasis. In fact, (again, mentioned in the documentation) the user can draw straight lines, using the proper keys, to “box in” an area of the screen. Like I said, I don’t use it often, but it is definitely the “right tool for the right job” and comes in real handy when you need it. Give it a shot. </p>]]></content:encoded><description>Last October, when I attended the Southwest Fox 2007 conference, Rick Borup of ITA Software, showed me a pretty slick tool that he recently discovered. I have been using it for about a month and although I do not use...</description><feedburner:origLink>http://blog.visionpace.com/2007/12/too-cool-for-sc.html</feedburner:origLink></item><item><title>A Bug’s Not a Bug until It Bites You</title><link>http://feeds.feedburner.com/~r/Visionpace/~3/184895320/a-bugs-not-a-bu.html</link><category>Visual FoxPro</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">dbliss@visionpace.com (Doug Bliss)</dc:creator><pubDate>Wed, 14 Nov 2007 16:34:39 -0600</pubDate><guid isPermaLink="false">http://blog.visionpace.com/2007/11/a-bugs-not-a-bu.html</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>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!</p>

<p>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.</p>

<p>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.</p>

<p>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. </p>

<p>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!</p>

<p>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.</p>

<p>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. </p>

<p>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.</p>]]></content:encoded><description>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...</description><feedburner:origLink>http://blog.visionpace.com/2007/11/a-bugs-not-a-bu.html</feedburner:origLink></item><item><title>Southwest Fox 2007 Conference – Stream of Consciousness</title><link>http://feeds.feedburner.com/~r/Visionpace/~3/178768386/southwest-fox-2.html</link><category>Visual FoxPro</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">dbliss@visionpace.com (Doug Bliss)</dc:creator><pubDate>Fri, 02 Nov 2007 09:39:38 -0500</pubDate><guid isPermaLink="false">http://blog.visionpace.com/2007/11/southwest-fox-2.html</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>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.</p>

<p>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.</p>

<p>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. </p>

<p>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. </p>

<p>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. </p>

<p>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”.</p>

<p>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.</p>

<p>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.</p>

<p>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.</p>]]></content:encoded><description>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...</description><feedburner:origLink>http://blog.visionpace.com/2007/11/southwest-fox-2.html</feedburner:origLink></item><item><title>When to Consider Custom Software over COTS?</title><link>http://feeds.feedburner.com/~r/Visionpace/~3/173486920/when-to-conside.html</link><category>Software Development</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">dbliss@visionpace.com (Doug Bliss)</dc:creator><pubDate>Fri, 19 Oct 2007 15:53:00 -0500</pubDate><guid isPermaLink="false">http://blog.visionpace.com/2007/10/when-to-conside.html</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>When your business requires a software solution, you have two directions in which you can go — Custom or COTS (Commercial Off-The-Shelf). Which path you choose depends upon considering a number of factors. It is our goal to arm you with information that will enable you to make the best business decision. </p>

<p>For this article, we will define “custom” software as computer software that the business owner has contracted to have written for their company. Traditionally, custom software is written by a third party entity; usually an outside software development company or a team of in-house personnel. COTS software is usually purchased from a retailer or from a vendor who has developed the software and mass-markets their product to many businesses (usually within a vertical market).</p>

<p>It’s not always easy to decide between custom or COTS software since it often requires long hours of deliberation and an understanding of the pros and cons of each choice. In the spirit of full disclosure, the authors’ main source of income is derived from creating custom business software; however, since we realize that there are times when custom software is not the best solution, we will attempt to present a balanced description of the pros and cons. Reviewing the following pros and cons will make that daunting task easier.</p>

<p><strong><u>Custom Software – PROs:</u></strong><br /><strong>Gives you exactly what you need –</strong> Each business has its own set of unique business rules. Often, the only way they can be computerized is via custom software. Why pay for features that will never be used? </p>

<p><strong>You own the source code –</strong> Owning the source code affords you more control over future enhancements. When clients see the value of custom software, they become more sophisticated and quickly find specific ways to improve their particular business work flow. When ideas pop into your entrepreneurial brain, you can have the existing software modified to incorporate those ideas. Additionally, owning the custom source code is a valuable asset; an asset that should be included in the price of the business if it is ever sold.</p>

<p><strong>More useful reports –</strong> There is no reason to have software unless it can produce the desired output; this is often in the form of reports. Custom software allows for the creation of meaningful reports that are used to make astute business decisions. You, the business owner, can ensure that reports give you the information the way you want it; not how the vendor thinks you want it.</p>

<p><strong>More efficient in-house help desk –</strong> Help desk personnel will be more familiar with the business rules involved and can assist users. They will know about common issues, traps, and work-arounds. This is much better than having to explain a specific issue to COTS help desk personnel who usually deal with generic problems.</p>

<p><strong>Decision makers are readily available –</strong> During the design phase, decision makers are available to make judgment calls. They have an intimate knowledge regarding how the software should work. Users are very good at describing the work flow and as a result, the software can be more effectively designed to increase their efficiency.</p>

<p><strong>Vested users readily accept the software –</strong> If the users have had input into the design of the new software, they more readily accept the changes. Plus, they are ahead of the learning curve because they’ve been exposed to the software during the development stage.</p>

<p><strong>Money is not wasted on unnecessary features –</strong> A side benefit of getting the exact functionality you want in the software is wisely spending your development dollars. Every dollar that is spent goes toward making the best possible product.</p>

<p><strong>No major license fees –</strong> You own the code. You own the software. You control its use. This is not to say that annual fees, hardware enhancements, and other “cost of doing business” expenses don’t exist. Most likely, they will exist, but you will need to find out what they cover, how much they are, and compare them to the same fees for the COTS software.</p>

<p><strong><u>Custom Software – CONs:</u></strong><br /><strong>May cost more –</strong> It is custom software and one would expect to pay more because custom “anything” is labor-intensive. Depending on the scope of the software’s capabilities, it could be considerably more expensive than “canned” software; only you can decide if the derived benefits are worth the expenditure.</p>

<p><strong>Not immediately available -</strong> Depending on the number of developers, the scope of the project and other factors, it may take months for the application to be created. This may be greatly reduced by using developers who employ proven software development practices such as a framework, agile processes, test-driven development, etc.</p>

<p><strong>You may be re-inventing the wheel –</strong> Most applications have many of the same features as requirements; printing reports, displaying data, and adding or modifying data are such examples. Time, money, and effort will have to be spent with respect to these basic tasks.<br />&nbsp; <br /><strong><u>COTS Software – PROs:</u><br />Immediately available –</strong> Upon purchase, the software is yours. Deploying the software and establishing the user environment is up to you; as is getting it to do exactly what you want.</p>

<p><strong>May cost less –</strong> The initial cost will almost certainly be less than any custom software. You may have a licensing obligation, though, where you must pay a fee on a per-user basis.</p>

<p><strong>Don’t have to re-invent the wheel –</strong> For performing basic data functions, COTS software should be able to do the job. Basic customer, sales, basic reporting, and invoicing tasks could be handled as long as you are willing to do it the way the vendor wants you to do it. </p>

<p><strong>Technical support –</strong> Technical support is sometimes free; sometimes, it’s pay-by-incident. Hopefully, the COTS personnel know their package and can relate to your specific issues.</p>

<p><strong><u>COTS Software – CONs:</u></strong><br /><strong>Little extensibility –</strong> The software may or may not be able to implement the features you desire. However, some COTS packages allow for some extensibility via a user scripting tool or via a report writer that enables the user to develop their own custom reports.</p>

<p><strong>Usually “work-arounds” are required –</strong> There may also be additional expenses to implement required “work-arounds” to handle specific needs for your particular business; even then, you might not get the result you desire.</p>

<p><strong>At the mercy of the manufacturer –</strong> You have no control as to when updates, bug fixes and new features will be available or even if they will ever be available. Vendors typically respond to the concerns of “squeaky wheels”. If you are the only one experiencing a specific issue, it could be a long time before it is addressed, if ever.</p>

<p><strong>Non-Vested users can become frustrated –</strong> Users have no vested interest in “canned” software and there is a psychological component when installing new software. Users are placed on the “learning curve” and it usually isn’t fun for them; people are reluctant to change. </p>

<p><strong>Potentially major license fees –</strong> Some vendors charge annual license and/or subscription renewal fees.</p>

<p>In summary, if you find a COTS package that meets your requirements and is reasonably priced, then go with it. However, if you need a solution that more closely meets your business requirements, implements rules for your specific business (not just for the vertical market in which your business resides), and is flexible enough to change as your business changes, then you would be doing your business a disservice by not considering a custom software solution.</p>

<p>- Art Bergquist and Dave Aring </p>]]></content:encoded><description>When your business requires a software solution, you have two directions in which you can go — Custom or COTS (Commercial Off-The-Shelf). Which path you choose depends upon considering a number of factors. It is our goal to arm you...</description><feedburner:origLink>http://blog.visionpace.com/2007/10/when-to-conside.html</feedburner:origLink></item><item><title>Jim, I hate you.</title><link>http://feeds.feedburner.com/~r/Visionpace/~3/166996730/jim-i-hate-you.html</link><category>Agile Methodology</category><category>Perfect Vision</category><category>Software Development</category><category>Visual FoxPro</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">dbliss@visionpace.com (Doug Bliss)</dc:creator><pubDate>Mon, 08 Oct 2007 10:34:26 -0500</pubDate><guid isPermaLink="false">http://blog.visionpace.com/2007/10/jim-i-hate-you.html</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p class="MsoNormal" style="MARGIN: 12pt 0in 0pt"><span face="Times New Roman">I was working on site for a client recently when I said, “Jim, I hate you.” </span></p>

<p class="MsoNormal" style="MARGIN: 12pt 0in 0pt"><span face="Times New Roman">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? </span></p>

<p class="MsoNormal" style="MARGIN: 12pt 0in 0pt"><span face="Times New Roman">“Because, I can’t write a single line of code now without writing a test to support it. It is all your fault.”</span></p>

<p class="MsoNormal" style="MARGIN: 12pt 0in 0pt"><span face="Times New Roman">He smiles and replies, “Well, if you are blaming me for writing better code, I’m ok with that.”</span></p>

<p class="MsoNormal" style="MARGIN: 12pt 0in 0pt"><span face="Times New Roman">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 <u><span style="COLOR: blue"><a href="http://www.foxunit.org/"><span style="COLOR: blue">FoxUnit</span></a></span></u>, a unit testing framework for Visual FoxPro. He is also the Software Development Practice Manager and the evangelist for <u><span style="COLOR: blue"><a href="http://www.amazon.com/exec/obidos/ISBN=0321146530/portlandpatternrA/"><span style="COLOR: blue">Test Driven Development</span></a></span></u> (TDD) at Visionpace. In addition to having a great sense of humor he is my ever patient coach on TDD.</span></p>

<p class="MsoNormal" style="MARGIN: 12pt 0in 0pt"><span face="Times New Roman">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?</span></p>

<p class="MsoNormal" style="MARGIN: 12pt 0in 0pt"><span face="Times New Roman">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. </span></p>

<p class="MsoNormal" style="MARGIN: 12pt 0in 0pt"><span face="Times New Roman">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. </span></p>

<p class="MsoNormal" style="MARGIN: 12pt 0in 0pt"><span face="Times New Roman">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.<span style="mso-spacerun: yes">&nbsp; </span>That forced me to look at how I could reduce those dependencies.</span></p>

<p class="MsoNormal" style="MARGIN: 12pt 0in 0pt"><span face="Times New Roman">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.<span style="mso-spacerun: yes">&nbsp; </span></span></p>

<p class="MsoNormal" style="MARGIN: 12pt 0in 0pt"><span face="Times New Roman">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. </span></p>

<p class="MsoNormal" style="MARGIN: 12pt 0in 0pt"><span face="Times New Roman">Jim is smiling, and he is ok with that.<br /><br /></span><span face="Times New Roman">…<br /><br /></span><span face="Times New Roman">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.</span></p>]]></content:encoded><description>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?...</description><feedburner:origLink>http://blog.visionpace.com/2007/10/jim-i-hate-you.html</feedburner:origLink></item><copyright>copyright Visionpace - All rights reserved</copyright><media:credit role="author">Doug Bliss</media:credit><media:rating>adult</media:rating></channel></rss>
