tag:blogger.com,1999:blog-100112672024-03-13T16:07:28.370-05:00fiat volpesSoftware development, technology, and the independent developerRick Boruphttp://www.blogger.com/profile/01848031964367175979noreply@blogger.comBlogger199125tag:blogger.com,1999:blog-10011267.post-24938703129609008232018-06-20T15:22:00.001-05:002018-06-20T15:22:09.368-05:00VFP9 SP2 Report Listener Bug Bites AgainSpoiler alert: it was all my fault.<br />
<br />
While preparing to demo an app to a client on my laptop computer, I noticed the VFP9 SP2 "SET TALK ON" bug showed up when I ran reports. I knew about that bug (<a href="http://cathypountney.blogspot.com/2009/04/set-talk-appears-to-be-on-when-running.html">cathypountney.blogspot.com/2009/04/set-talk-appears-to-be-on-when-running.html</a>), but thought I had resolved it long ago by correcting and recompiling the class library and replacing the reporting apps with the latest ones from VFPX (<a href="https://github.com/VFPX/ReportingApps">github.com/VFPX/ReportingApps</a>).<br />
<br />
For demo purposes, I run the app's EXE from the development folder where it’s compiled rather than installing the app the way it would be on the client's machines. What puzzled me was that the bug did not show up when I ran the EXE that way on my main desktop development machine, but it always showed up when I ran the identical EXE that same way on my laptop.<br />
<br />
I double- and triple-checked my laptop machine, confirming that all copies of the _reportlistener class library had been corrected and recompiled and that the reporting apps in C:\Program Files (x86)\Microsoft Visual FoxPro 9\ were the updated versions. Everything checked out OK but still the bug persisted - not fatal, but ugly and certainly not something I wanted the client to see in a demo.<br />
<br />
Realizing it was time to ask for help, I reached out to my friend and respected colleague Rick Schummer who quickly suggested I look for out-of-date copies of the reporting apps elsewhere on the laptop.<br />
<br />
And of course that was it.<br />
<br />
Although I had updated the reporting apps in C:\Program Files (x86)\Microsoft Visual FoxPro 9\, I had forgotten about C:\Program Files (x86)\Common Files\microsoft shared\VFP\. That folder had the updated reporting apps on my desktop machine, but old copies were still lurking in that folder on my laptop computer and were being used when I ran reports from the stand-alone compiled EXE.<br />
<br />
Lesson 1: When configuring a new machine for VFP development work, be sure to replace the reporting apps in C:\Program Files (x86)\Common Files\microsoft shared\VFP\ as well as in C:\Program Files (x86)\Microsoft Visual FoxPro 9\ even if you don’t deploy from that folder.<br />
<br />
Lesson 2: Don’t waste too much time before asking for help. Two brains are always better than one.<br />
<br />Rick Boruphttp://www.blogger.com/profile/01848031964367175979noreply@blogger.com0tag:blogger.com,1999:blog-10011267.post-78336743427771957902015-11-19T12:58:00.001-06:002015-11-19T13:13:18.513-06:00Data Visualization Links and ToolsThank you to the anonymous commenter who pointed out that the white paper from my Data Visualization session at Southwest Fox 2015 does not include all the links I mentioned and showed on slides during the actual session. Here is a complete list of those links:<br />
<br />
<u>Brain Rules, by John Medina</u><br />
<a href="http://brainrules.net/brain-rules-video">http://brainrules.net/brain-rules-video </a><br />
<a href="https://vimeo.com/16335750">https://vimeo.com/16335750</a><br />
<br />
<u>Animated visualization, by Dr. Hans Rosling</u><br />
<a href="https://youtu.be/foXlFILJCgk">https://youtu.be/foXlFILJCgk </a><br />
<a href="http://www.presentationzen.com/presentationzen/2015/07/hans-rosling-upgrading-our-worldview-through-data-visualization.html">http://www.presentationzen.com/presentationzen/2015/07/hans-rosling-upgrading-our-worldview-through-data-visualization.html</a><br />
<br />
<u>Animated visualization on the causes of global warming, from Bloomberg Business</u><br />
<a href="http://www.bloomberg.com/graphics/2015-whats-warming-the-world/">http://www.bloomberg.com/graphics/2015-whats-warming-the-world/</a><br />
<br />
<u>Tools for Data Visualization</u><br />
<a href="https://vfpx.codeplex.com/wikipage?title=FoxCharts" title="https://vfpx.codeplex.com/wikipage?title=FoxCharts">https://vfpx.codeplex.com/wikipage?title=FoxCharts</a><br />
<a href="https://powerbi.microsoft.com/">https://powerbi.microsoft.com</a><br />
<a href="http://www.tableau.com/products">http://www.tableau.com/products</a><br />
<a href="http://d3js.org/">http://d3js.org</a><br />
<a href="http://www.highcharts.com/">http://www.highcharts.com</a> <br />
<a href="http://www.fusioncharts.com/">http://www.fusioncharts.com</a><br />
<a href="http://www.zingchart.com/">http://www.zingchart.com</a><br />
<a href="http://www.chartjs.org/">http://www.chartjs.org</a><br />
<br />
<u>Example of misleading bar chart, from Presentation Zen blog</u><br />
<a href="http://www.presentationzen.com/presentationzen/2015/06/using-a-simple-bar-chart-to-obfuscate-the-issue.html" title="http://www.presentationzen.com/presentationzen/2015/06/using-a-simple-bar-chart-to-obfuscate-the-issue.html">http://www.presentationzen.com/presentationzen/2015/06/using-a-simple-bar-chart-to-obfuscate-the-issue.html</a><br />
<br />
<u>Example of a combo chart, from The Weather Channel</u><br />
<a href="https://twitter.com/weatherchannel/status/650745451147325441/photo/1" title="https://twitter.com/weatherchannel/status/650745451147325441/photo/1<br />">https://twitter.com/weatherchannel/status/650745451147325441/photo/1</a>Rick Boruphttp://www.blogger.com/profile/01848031964367175979noreply@blogger.com0tag:blogger.com,1999:blog-10011267.post-2132471205646057432014-06-25T17:09:00.001-05:002014-06-25T17:09:44.151-05:00Why I'm a fan of Southwest Fox, and you can too<p>Southwest Fox / Southwest Xbase++ is the premier annual North American conference for Visual FoxPro and Xbase++ developers. I've attended every one of them except the first, so that makes nine years running. Obviously I'm a fan, and - if you're not already - I hope you'll become one too.</p><br /><p>What makes this conference worth well more than the cost of attending? Outstanding speakers, great topics, white papers for every session, a great venue (sunny Gilbert, AZ), good food, terrific camaraderie among the attendees and presenters... the list goes on and on. Did I mention white papers for every session? This means you get to take home the full content of *every session* even if you can't sit in on all the presentations. The accumulated knowledge and advice in these white papers is awesome. Together, they comprise an invaluable reference library I frequently turn to for solutions. A lot of the material is leading edge, so something presented even years earlier can suddenly become relevant later when I find myself venturing into unknown territory. Other material I'm chomping at the bit to use as soon as I get back. White papers rock!</p><br /><p>The social and networking aspects of this conference can't be overstated either. How valuable is it to "put a face with a name" and finally meet in person someone whose opinions you respect but whom you’ve only met online? They say 90% of communication is non-verbal - getting to know someone personally benefits you by adding a whole new dimension and a deeper level of understanding when you're reading what that person says in print and online. It's not unheard of that a frosty beverage or two helps cement these friendships, either, for those who are so inclined. After hours activities, both organized and impromptu, help round out three and a half days full of conference goodness.</p><br /><p>I'm not alone is saying I've formed and maintained many valuable friendships through Southwest Fox, and I'm looking forward to making many more at this year's conference in October. Will you be one of them? Head over to <a href="http://www.swfox.net">www.swfox.net</a> and register. I hope to see you there. </p> Rick Boruphttp://www.blogger.com/profile/01848031964367175979noreply@blogger.com0tag:blogger.com,1999:blog-10011267.post-74623607771272416732012-07-26T10:33:00.001-05:002012-07-26T10:33:54.720-05:00Why I'm attending the Web Connection Training at Southwest Fox<p>I've been using West Wind Web Connection in production apps for over ten years, so I'm pretty familiar with it - how it's built, how it works, and how to build apps based on it. So why would I invest the time and money to attend more training? </p> <p>The answer is simple: Because I need to sharpen my skill set, and the two-day Web Connection training that's being offered in conjunction with Southwest Fox 2012 is the perfect opportunity to do so. </p> <p>Web Connection has undergone continuous growth and improvement over the years. I started with version 3 (as best I can recall) and migrated to version 4 when it became available. Version 5.00, released in 2006, introduced the Web Control Framework, a major enhancement that provides developers with a rich set of tools to build even better apps. Since its release, Web Connection version 5 has continued to evolve with more and more new features. It's now up to version 5.63, which was released in June of 2012. </p> <p>Despite having read the always excellent documentation for which all of Rick Strahl's West Wind products are known, and despite having worked through most of the online video tutorials, I know there's a lot of power in Web Connection 5 that I'm still not taking full advantage of. The demands of meeting work obligations along with the usual daily distractions make it difficult to block out time to learn new skills. So, what better way to get up to speed than to forget about everything else and concentrate on the framework for two full days? </p> <p>For my money, the Web Connection training on Oct. 17 and 18 is the perfect opportunity to improve my Web Connection skill set. For me, this training will be valuable not only because it's taught by Rick Strahl himself, but also because it offers the opportunity to talk with and learn from other Web Connection developers.</p> <p>It's a unique opportunity. I'll be there. Will you? </p> Rick Boruphttp://www.blogger.com/profile/01848031964367175979noreply@blogger.com3tag:blogger.com,1999:blog-10011267.post-2022772052606008602012-05-02T17:09:00.001-05:002012-05-02T17:09:47.003-05:00Videocast: Solving a Network Deployment Challenge using Inno Setup<p>One common approach to deploying Visual FoxPro apps in a multi-user environment is for the application’s executable file and data to reside on a file server. That way, each workstation only needs the VFP runtime files and a shortcut to the EXE. </p> <p>Installation is simple, generally using either two separate installers or one dual-purpose installer. But in either case, there’s a catch when it comes to running the workstation-only installer: What if, due to different drive mappings, the drive and path to the EXE varies from workstation to workstation? How do you build an installer that can create a desktop shortcut to an EXE it’s not installing and whose location it doesn’t even know? </p> <p>This videocast shows you one way to do this using Inno Setup. It’s available on the FoxPro Developers page of my website at <a title="http://www.ita-software.com/foxpage.aspx#videocasts" href="http://www.ita-software.com/foxpage.aspx#videocasts">http://www.ita-software.com/foxpage.aspx#videocasts</a>. </p> <p>My thanks to Phil Sherwood for posing the question that prodded me to come up with this solution.</p> <p> <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:31925b73-bfa5-4b8a-bb27-4d85f4aa4a53" class="wlWriterEditableSmartContent">Technorati Tags: <a href="http://technorati.com/tags/Visual+FoxPro" rel="tag">Visual FoxPro</a>,<a href="http://technorati.com/tags/VFP" rel="tag">VFP</a>,<a href="http://technorati.com/tags/Inno+Setup" rel="tag">Inno Setup</a>,<a href="http://technorati.com/tags/installers" rel="tag">installers</a></div></p> Rick Boruphttp://www.blogger.com/profile/01848031964367175979noreply@blogger.com1tag:blogger.com,1999:blog-10011267.post-52511736966912683952011-11-07T15:30:00.001-06:002011-11-07T15:30:06.990-06:00How To: Browse a Mercurial log in Visual FoxPro<p>If you use Mercurial as your version control system, you know it maintains a log of all repository history. You can view the log with the <em>hg log </em>command or with the TortoiseHg Workbench app. </p> <p>However, if you’re a Visual FoxPro developer, you might wonder if you can get at the log from VFP. It turns out this is easy to do in two simple steps.</p> <p>1) From the command prompt, do <em>hg log --style xml > log.xml</em> to send the log output to a file named log.xml. </p> <p>2) Then, in VFP, do <em>XMLTOCURSOR( "log.xml", "csrHgLog", 512)</em> to create a cursor you can browse and work with in VFP.</p> <p>This little tip was included in the white paper from my session on <em>VFP Version Control with Mercurial </em>at the 2011 Southwest Fox conference in Gilbert, AZ.</p> <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:9445209b-9c5f-48d0-bb58-b4087055a16c" class="wlWriterEditableSmartContent">Technorati Tags: <a href="http://technorati.com/tags/Visual+FoxPro" rel="tag">Visual FoxPro</a>,<a href="http://technorati.com/tags/VFP" rel="tag">VFP</a>,<a href="http://technorati.com/tags/Mercurial" rel="tag">Mercurial</a>,<a href="http://technorati.com/tags/Southwest+Fox" rel="tag">Southwest Fox</a>,<a href="http://technorati.com/tags/SWFox" rel="tag">SWFox</a></div> Rick Boruphttp://www.blogger.com/profile/01848031964367175979noreply@blogger.com2tag:blogger.com,1999:blog-10011267.post-81520949556490421502011-04-20T22:11:00.001-05:002011-04-20T22:11:17.462-05:00Updated KB2412171 no longer breaks Gmail<p>As noted <a href="http://rickborup.blogspot.com/2010/12/outlook-update-kb2412171-breaks-gmail.html">here</a>, the December 2010 KB2412171 update broke Outlook access to Gmail accounts. The KB2412171 patch was updated on January 11, 2011 and from my experience no longer causes this problem. </p> Rick Boruphttp://www.blogger.com/profile/01848031964367175979noreply@blogger.com0tag:blogger.com,1999:blog-10011267.post-70158887662741697632010-12-15T23:10:00.004-06:002010-12-16T00:10:19.046-06:00Outlook Update KB2412171 Breaks Gmail Account AccessAfter installing the December batch of updates from Microsoft, Outlook 2007 on my Windows Vista SP2 machine could not longer access my Gmail account using POP3. The error message was “Task ‘<gmail address> – Receiving’ reported error (0x800CCC18): ‘Your e-mail server rejected your login with Secure Password Authentication (SPA). …’ ” Uninstalling KB2412171solved the problem.<br />
<br />
Update: Windows Secrets newsletter references this issue and links to a couple of discussions. <a href="http://windowssecrets.com/2010/12/16/07-PC-patches-end-this-year-with-a-bang">http://windowssecrets.com/2010/12/16/07-PC-patches-end-this-year-with-a-bang</a><br />
<br />
<a href="http://lh3.ggpht.com/_mnVU6sbWfF8/TQmfLurzt-I/AAAAAAAABFs/V1qHcvZFRo8/s1600-h/KB2412171_ErrorMessage%5B2%5D.png"><img alt="KB2412171_ErrorMessage" border="0" height="31" src="http://lh6.ggpht.com/_mnVU6sbWfF8/TQmfL7ptUzI/AAAAAAAABFw/Wk-f2BOzCXk/KB2412171_ErrorMessage_thumb.png?imgmax=800" style="background-image: none; border: 0px none; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="KB2412171_ErrorMessage" width="244" /></a>Rick Boruphttp://www.blogger.com/profile/01848031964367175979noreply@blogger.com0tag:blogger.com,1999:blog-10011267.post-74199930736085959932010-04-29T16:57:00.001-05:002010-04-29T17:05:29.500-05:00This blog has moved<br /> This blog is now located at http://rickborup.blogspot.com/.<br /> You will be automatically redirected in 30 seconds, or you may click <a href='http://rickborup.blogspot.com/'>here</a>.<br /><br /> For feed subscribers, please update your feed subscriptions to<br /> http://rickborup.blogspot.com/feeds/posts/default.<br /> Rick Boruphttp://www.blogger.com/profile/01848031964367175979noreply@blogger.com0tag:blogger.com,1999:blog-10011267.post-76807862159571366582010-04-29T16:37:00.001-05:002010-04-29T16:43:19.515-05:00This blog is movingThis blog is moving, stayed tuned for more details.Rick Boruphttp://www.blogger.com/profile/01848031964367175979noreply@blogger.com0tag:blogger.com,1999:blog-10011267.post-7730837001306146032010-03-20T21:48:00.006-05:002010-03-20T23:20:56.477-05:00Conditional TRANSFORMs in VFPVisual FoxPro's TRANSFORM function is a powerful tool for converting an expression into a string. The VFP Help file defines the syntax of the TRANSFORM function this way:<br /><br /><pre><span style="color:blue;">TRANSFORM</span>(eExpression, [cFormatCodes])</pre><br />eExpression is the value, or an expression that returns the value, to be TRANSFORM'ed. The optional format codes enable additional control over the resulting string. The available format codes are enumerated and explained in the <span style="font-style: italic;">TRANSFORM() Function</span> topic in the VFP Help file.<br /><br />The @R format code is a little different that the others. It tells VFP to read a format mask and use it to format the resulting string. This is useful for formatting character or numeric data that may require a specific format, such as currency values, social security and FEIN numbers, and telephone numbers. The following example shows how to use TRANSFORM with @R and a format mask to format a U.S. phone number with area code in the conventional manner.<br /><br /><pre><span style="color:blue;">TRANSFORM</span>( "2175551212", "@R (999) 999-9999") <span style="color:green;">&& Result is "(217) 555-1212"</span></pre><br />(Note that the space after @R is required to achieve the expected result.)<br /><br />Phone numbers, however, are a good example of where you might want to use a different format mask in different situations. Assume a table with phone numbers stored in a character field. Depending on the data and how it was entered, the table might contain U.S. phone numbers with area codes, U.S. phone numbers without area codes, and international phone numbers. Assume the phone number column is wide enough to accommodate any of the anticipated possibilities.<br /><br /><pre><span style="color:blue;">CREATE</span> <span style="color:blue;">TABLE</span> myTable ( cPhoneNbr C(20))<br /><span style="color:blue;">INSERT</span> <span style="color:blue;">INTO</span> myTable ( cPhoneNbr) <span style="color:blue;">VALUES</span> ( "2175551212") <span style="color:green;">&& U.S. phone nbr w/ area code</span><br /><span style="color:blue;">INSERT</span> <span style="color:blue;">INTO</span> myTable ( cPhoneNbr) <span style="color:blue;">VALUES</span> ( "5551212") <span style="color:green;">&& U.S. phone nbr w/out area code</span><br /><span style="color:blue;">INSERT</span> <span style="color:blue;">INTO</span> myTable ( cPhoneNbr) <span style="color:blue;">VALUES</span> ( "+46 704123456") <span style="color:green;">&& International phone nbr</span></pre>A format mask of <span style="font-family:courier new;">"@R (999) 999-9999"</span> works for the first value but returns garbled results for the other two. For the U.S. phone number without an area code, a format mask showing a blank area code would be more appropriate, while for the international number it may be best to use no format mask at all and just display the number the way it was entered.<br /><br />Assume the length of the unformatted phone number can be used to determine what type of phone number it is. Then in a method or procedure code a conditional statement like IF or CASE can be used to determine which format mask to apply.<br /><br /><pre>lcPhoneNbr = <span style="color:blue;">ALLTRIM</span>( myTable.cPhoneNbr)<br /><span style="color:blue;">DO CASE</span><br /><span style="color:blue;"> CASE LEN</span>( lcPhoneNbr) = 10<br /> lcResult = <span style="color:blue;">TRANSFORM</span>( lcPhoneNbr, "@R (999) 999-9999")<br /><span style="color:blue;"> CASE LEN</span>( lcPhoneNbr) = 7<br /> lcResult = <span style="color:blue;">TRANSFORM</span>( lcPhoneNbr, "@R ( ) 999-9999")<br /><span style="color:blue;"> OTHERWISE</span><br /> lcResult = lcPhoneNbr<br /><span style="color:blue;">ENDCASE</span></pre><br />The problem with this is that it won't work in a report field, where a single expression is needed.<br /><br />Fortunately, VFP enables conditional formatting within a single TRANSFORM by using a function for [cFormatCodes]. Leaving out the "myTable." prefix for brevity, the following can be used as a report field expression to get the desired result:<br /><br /><pre><span style="color:blue;">TRANSFORM</span>( cPhoneNbr, ;<br /> ICASE( <span style="color:blue;">LEN</span>( <span style="color:blue;">ALLTRIM</span>( cPhoneNbr)) = 10, "@R (999) 999-9999", ;<br /> <span style="color:blue;">LEN</span>( <span style="color:blue;">ALLTRIM</span>( cPhoneNbr)) = 7, "@R ( ) 999-9999", ;<br /> ""))</pre><br />If that seems a little long to stuff into an expression field, and it could get worse if there are more alternatives, the conditional code can be factored out to a UDF or to a method on some object and called from within the report field expression:<br /><br /><pre><span style="color:blue;">TRANSFORM</span>( myTable.cPhoneNbr, GetPhoneNbrMask( myTable.cPhoneNbr))</pre><br />The ability to use a function in place of a static format code enables us to extend the power of VFP by performing conditional formatting within a single TRANSFORM function.<br /><br /><span style="font-size:85%;">Tags: <a href="http://technorati.com/tag/Visual+FoxPro" rel="tag">Visual FoxPro</a>, <a href="http://technorati.com/tag/VFP" rel="tag">VFP</a></span>Rick Boruphttp://www.blogger.com/profile/01848031964367175979noreply@blogger.com1tag:blogger.com,1999:blog-10011267.post-14741104601918385572009-10-28T12:46:00.002-05:002009-10-28T13:05:40.125-05:00Password Agent 2.6While discussing backup tools in my session on <em>Disaster Recovery and Business Continuity Planning</em> at <a href="http://www.swfox.net/">Southwest Fox 2009</a>, I mentioned that I use a password management program call Password Agent from Moon Software. While probably less well known than some of its competitors, I've used this particular app for several years and have always found it to be reliable and easy to use. The only caveat was that it had not been updated in quite some time, but by coincidence a new version was just released yesterday. Among other changes this release is listed as compatible with Windows 7. If you're interested in a good password management tool, check out Password Agent 2.6 at <a href="http://www.moonsoftware.com/pwagent.asp">www.moonsoftware.com/pwagent.asp</a>.<br /><br /><span style="font-size:85%;">Tags: <a href="http://technorati.com/tag/Password+Agent" rel="tag">Password Agent</a>, <a href="http://technorati.com/tag/Moon+Software" rel="tag">Moon Software</a>, <a href="http://technorati.com/tag/Southwest+Fox" rel="tag">Southwest Fox</a></span>Rick Boruphttp://www.blogger.com/profile/01848031964367175979noreply@blogger.com1tag:blogger.com,1999:blog-10011267.post-44993565930042291582009-06-06T13:10:00.002-05:002009-06-06T13:12:52.944-05:00Southwest Fox 2009 - Don't Miss It!Hard to believe, but it's only a little over four months until <a href="http://www.swfox.net/">Southwest Fox 2009</a>, which will be held October 15-18, 2009 at the beautiful Arizona Golf Resort and Conference Center in Mesa, Arizona. Start making your plans now, because conference organizers Rick Schummer, Tamar Granor, and Doug Hennig have once again put together a great selection of speakers and topics for a conference that is not to be missed. I hope to see you all there!<br /><br /><span style="font-size:85%;">Tags: </span><a href="http://technorati.com/tag/Southwest+Fox" rel="tag"><span style="font-size:85%;">Southwest Fox</span></a><span style="font-size:85%;">, </span><a href="http://technorati.com/tag/SWFox" rel="tag"><span style="font-size:85%;">SWFox</span></a><span style="font-size:85%;">, </span><a href="http://technorati.com/tag/FoxPro" rel="tag"><span style="font-size:85%;">FoxPro</span></a><span style="font-size:85%;"><br /></span>Rick Boruphttp://www.blogger.com/profile/01848031964367175979noreply@blogger.com0tag:blogger.com,1999:blog-10011267.post-46859652492557911862009-06-06T12:39:00.003-05:002009-06-07T13:58:16.641-05:00SWFox 2008 Session White Papers PublishedMy session white papers from Southwest Fox 2008, <em>Hidden Treasures: The FoxPro Foundation Classes</em> and <em>Automating QuickBooks with QODBC,</em> are now available for download from the <a href="http://www.ita-software.com/foxpage.aspx">FoxPro Developers page</a> of my website.<br /><br /><span style="font-size:85%;"><span style="color:#ff0000;">Update</span> [Sunday, 07-Jun-2009]: I posted the wrong links to these papers yesterday. The links are now correct.<br /></span><br /><span style="font-size:85%;">Tags: </span><a href="http://technorati.com/tag/Southwest+Fox" rel="tag"><span style="font-size:85%;">Southwest Fox</span></a><span style="font-size:85%;">, </span><a href="http://technorati.com/tag/SWFox" rel="tag"><span style="font-size:85%;">SWFox</span></a><span style="font-size:85%;">, </span><a href="http://technorati.com/tag/FoxPro" rel="tag"><span style="font-size:85%;">FoxPro</span></a><span style="font-size:85%;"><br /><br /></span><span style="font-size:85%;"></span>Rick Boruphttp://www.blogger.com/profile/01848031964367175979noreply@blogger.com0tag:blogger.com,1999:blog-10011267.post-62664009927516729082009-04-28T08:49:00.003-05:002009-04-28T08:58:12.999-05:00Restore Open Tabs in Internet Explorer 8Unlike IE7, Internet Explorer 8 does not offer to remember open tabs on shutdown. But after re-launching IE8, you can restore them by going to Tools > Reopen Last Browsing Sesssion.<br /><br /><span style="font-size:85%;">Tags: <a href="http://technorati.com/tag/Internet+Explorer+8" rel="tag">Internet Explorer 8</a>, <a href="http://technorati.com/tag/IE8" rel="tag">IE8</a></span>Rick Boruphttp://www.blogger.com/profile/01848031964367175979noreply@blogger.com0tag:blogger.com,1999:blog-10011267.post-30749187571359427882009-04-13T10:23:00.005-05:002009-04-16T18:54:52.398-05:00VFP Task Pane Tip<a href="http://www.rickborup.com/blog/uploaded_images/TaskPaneScript-768604.png"><img style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 320px; CURSOR: hand; HEIGHT: 210px" alt="" src="http://www.rickborup.com/blog/uploaded_images/TaskPaneScript-768602.png" border="0" /></a><br /><div>The Visual FoxPro Task Pane Environment Manager enables you to set up the environment you want to be associated with each project. Among other things, you can specify the project file, the default directory, the path, the resource file, and any environment settings that may be unique to each project.</div><br /><div>When you click the link to a project file in the Task Pane Environment Manager, VFP applies your settings and opens the project. However, the Task Pane window remains open and visible on your screen. If you don't want the Task Pane window hanging around after your project has been opened, there's an easy way to make it disappear.</div><br /><div>Select a project in the Environment Manager. Click on the icon to modify the environment set and select the Environment Settings page, as shown in the screenshot. Notice there are edit boxes for two scripts, one that runs before the environment is set and the other that runs after the environment is set and the project is loaded.</div><br /><div>To automatically close the Task Pane window, simply add "_oTaskPane.Release( )" as the last or only line in the script that runs after the environment has been set and the project has been loaded. Click OK to save your changes. The next time you open the project from the Task Pane, the Task Pane window will automatically close after the Project Manager window opens and you'll have a clean screen to work with.</div><br /><div><span style="font-size:85%;">Tags: <a href="http://technorati.com/tag/Visual+FoxPro" rel="tag">Visual FoxPro</a>, <a href="http://technoratic.com/tag/VFP" rel="tag">VFP</a>, <a href="http://technorati.com/tag/Task+Pane" rel="tag">Task Pane</a></span></div>Rick Boruphttp://www.blogger.com/profile/01848031964367175979noreply@blogger.com0tag:blogger.com,1999:blog-10011267.post-73291704598768960922009-02-20T16:50:00.002-06:002009-02-20T17:17:17.488-06:00SWFox 2007 session white papers publishedIn order not to diminish the value of attending the conference itself, I always wait at least six months before publishing the white papers from my presentations. I didn't really intend to wait 16 months to publish the papers from Southwest Fox 2007, though! In any case, <em>Framework Fundamentals</em> and <em>So You Want to be an Independent Developer</em> are now available for download from the <a href="http://www.ita-software.com/foxpage.aspx">FoxPro Developers page</a> on my website.<br /><br />Unless the year gets away from me again, look for the papers from my Southwest Fox 2008 sessions to be published sometime in late April.Rick Boruphttp://www.blogger.com/profile/01848031964367175979noreply@blogger.com0tag:blogger.com,1999:blog-10011267.post-86745604159481494532008-12-03T17:36:00.003-06:002008-12-03T22:05:26.711-06:00Southwest Fox Session Evals<p>Today I finally found time to carefully read the evals from my sessions at Southwest Fox. Thanks to all of you who attended one of my sessions and took the time to comment. To those who had good things to say, thanks for the kind words. To those who suggested ways in which I can improve, I genuinely appreciate your suggestions.</p><p><em>A Speakers' Dilemma</em><br />One thing I always wrestle with is how much content to try to fit into the allotted time. Like most speakers, I try to provide maximum content and hence maximum value in all my presentations. Sometimes, however, that comes at the expense of not leaving enough time for questions. Several people commented that this was a problem with both my sessions at Southwest Fox this year, and I want to let you know that I hear you.</p><p>I generally ask that questions be held until the end of the session. The reason for this is to ensure there's enough time to cover all the material. You might be surprised at how easily taking the time to answer just a handful of questions during a session can derail a carefully timed presentation. However, I realize that if I ask for questions to be deferred until the end, I'm also making an implicit agreement with the audience to leave enough time for those questions.</p><p>So, here's my main take-away from this year's evals: I need to be sure to leave time for Q & A even if it means trimming the session content a bit. As I think about it, that's a better formula for maximizing the value of a session anyway, because all of us (speakers included) learn from each other's questions. Besides, the white paper provides a place to put relevant content that doesn't fit in the verbal presentation.</p><p><em>A Question</em><br />I think leaving around five minutes for Q & A at the end of a 75-minute session feels about right. Any less is almost certainly not enough, while significantly more means that much less session content. But that's just my opinion. What do you think?</p><p><em>An Apology</em><br />To the person who came up to me at the end of my Friday afternoon session on the FoxPro Foundation Classes: I apologize for putting you off and rushing out of the room. I had come down with some kind of 24-hour bug Thursday evening (and no, not from too much partying - really!). I was feeling pretty rocky all day Friday, and to be honest I wasn't sure I was going to make it through the entire Friday afternoon session. I came pretty close to losing it immediately after I finished speaking, and had to rush out of the room for a couple of minutes. When I got back, you had already left. If you are that person, I hope you will understand, and if you still have a question please e-mail me and I'll be happy to try to answer it.</p><p><span style="font-size:85%;">Tags: <a href="http://technorati.com/tag/Southwest+Fox" rel="tag">Southwest Fox</a>, <a href="http://technorati.com/tag/SWFox" rel="tag">SWFox</a>, <a href="http://technorati.com/tag/conferences" rel="tag">conferences</a>, <a href="http://technorati.com/tag/presentations" rel="tag">presentations</a></span></p>Rick Boruphttp://www.blogger.com/profile/01848031964367175979noreply@blogger.com0tag:blogger.com,1999:blog-10011267.post-325980990806469322008-11-18T19:08:00.002-06:002008-11-18T19:16:19.205-06:00ZoneAlarm Pro for freeIn celebration of the popular firewall's birthday, ZoneAlarm Pro is available for free, today only. <a href="http://tinyurl.com/6l3br7">http://tinyurl.com/6l3br7</a><br /><br /><span style="font-size:85%;">Tags: </span><a href="http://technorati.com/tag/ZoneAlarm" rel="tag"><span style="font-size:85%;">ZoneAlarm</span></a>Rick Boruphttp://www.blogger.com/profile/01848031964367175979noreply@blogger.com0tag:blogger.com,1999:blog-10011267.post-80670381467308286212008-09-03T22:58:00.002-05:002008-09-03T23:03:50.951-05:00Stupid error message of the day<a href="http://www.rickborup.com/blog/uploaded_images/Logitech-Error-792372.png"><img style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://www.rickborup.com/blog/uploaded_images/Logitech-Error-792362.png" border="0" /></a><br /><div>This is evidently all it takes to handle an error. Who said programming had to be hard? </div>Rick Boruphttp://www.blogger.com/profile/01848031964367175979noreply@blogger.com0tag:blogger.com,1999:blog-10011267.post-21531030397636170932008-07-09T16:44:00.002-05:002008-07-09T16:51:21.243-05:00MS Patch 951748 and Zone Alarm IssueIf you use Zone Alarm and Windows XP, don't install yesterday's MS security update #951748 'cause it breaks your Internet connection. The explanation and workaround is already posted on the ZA forum, see <a href="http://tinyurl.com/5k8zjs" target="_blank" rel="nofollow">http://tinyurl.com/5k8zjs</a>.<br /><br />Side note: I posted this on Twitter late last night when I first ran into it and found the answer. After using Twitter for a couple of months, that seems to be where I turn first to post this kind of thing because it's easy to get the word out quickly. I'm still blogging, but some stuff now goes on Twitter first.Rick Boruphttp://www.blogger.com/profile/01848031964367175979noreply@blogger.com0tag:blogger.com,1999:blog-10011267.post-14713578603555918142008-05-16T15:04:00.004-05:002008-05-16T15:41:07.855-05:00PowerDesk Pro 7It looks like a new version of PowerDesk Pro is finally here.<br /><br />PowerDesk has long been my favorite desktop file manager and replacement for Windows Explorer. But version 6, which was released in 2005 and last updated in 2006, has been feeling a little long in the tooth recently. Although clicking on its EasyUpdate link (on the Help menu) still says "You have the latest software version. No update is necessary.", I discovered today that the <a href="http://www.avanquest.com/USA/pc-tools/utilities/desktop-tools/PowerDesk_Pro_7.html">PowerDesk home page</a> is now featuring PowerDesk Pro 7.<br /><br />I haven't received any e-mail announcement of the new version yet, and I can't find any indication of upgrade pricing for licensed users of version 6 on their website, so this might be brand new. In any case, it's good to know this fine product is getting another update.<br /><br /><span style="font-size:85%;">Tags: </span><a href="http://technorati.com/tag/PowerDesk" rel="tag"><span style="font-size:85%;">PowerDesk</span></a>Rick Boruphttp://www.blogger.com/profile/01848031964367175979noreply@blogger.com1tag:blogger.com,1999:blog-10011267.post-83574320291936685742008-05-16T14:55:00.001-05:002008-05-16T14:57:25.898-05:00Minimalist error message<div style="FLOAT: left; MARGIN: 0px 10px 0px 0px; WIDTH: 330px"><a href="http://www.rickborup.com/blog/uploaded_images/ApplicationError-780145.png"><img alt="" src="http://www.rickborup.com/blog/uploaded_images/ApplicationError-780139.png" border="0" /></a><br /><span style="FONT-STYLE: italic;font-size:78%;" >"Just keep on movin', folks. Nothing to see here. Really, this is all you need to know. Anything else would only confuse you."</span></div><br /><br /><div style="CLEAR: both"><br /><p>This is a real error dialog from a real app. Not a beta release, either. And no, I didn't capture the screenshot before the dialog was fully rendered - this is the whole thing. (I did add the caption, though.)</p><p>So we're not only left to wonder what the error was, but also what application had the error in the first place. Huh.</p></div>Rick Boruphttp://www.blogger.com/profile/01848031964367175979noreply@blogger.com0tag:blogger.com,1999:blog-10011267.post-61991764477904836292008-04-30T11:42:00.003-05:002008-04-30T12:04:56.516-05:00Beyond Compare v3 betaBeyond Compare is one of those wonderful little utilities I use virtually every day. Version 2.x has been a terrific product for years, but it looks like it's going to get even better with <a href="http://www.scootersoftware.com/beta3/moreinfo.php">Beyond Compare v3</a>.<br /><br />There's a lot of information about the new version on Scooter Software website. Check out what's coming in the <a href="http://www.scootersoftware.com/beta3/moreinfo.php?zz=gallery">screenshot gallery</a> and the list of <a href="http://www.scootersoftware.com/beta3/moreinfo.php?zz=newfeatures">new features</a>. Or if you want to you can actually <a href="http://www.scootersoftware.com/beta3/download.php">download the beta</a> and explore it for yourself.<br /><br /><span style="font-size:85%;">Tags: <a href="http://technorati.com/tag/Beyond+Compare" rel="tag">Beyond Compare</a>, <a href="http://technorati.com/tag/Scooter+Software" rel="tag">Scooter Software</a></span>Rick Boruphttp://www.blogger.com/profile/01848031964367175979noreply@blogger.com1tag:blogger.com,1999:blog-10011267.post-58364443661465833532008-04-10T09:46:00.003-05:002008-04-10T10:44:00.280-05:00TweetingI've been trying out Twitter since last weekend. If you're already on Twitter you can <em>follow rickborup</em>. If not, you can go to <a href="http://twitter.com/">http://twitter.com/</a> and sign up for a free account.<br /><br /><span style="font-size:85%;">Tags: <a href="http://technorati.com/tag/Twitter" rel="tag">Twitter</a></span>Rick Boruphttp://www.blogger.com/profile/01848031964367175979noreply@blogger.com0