tag:blogger.com,1999:blog-100112672010-04-29T16:57:48.469-05:00fiat volpesSoftware development, technology, and the independent developerRick Boruphttp://www.blogger.com/profile/01848031964367175979noreply@blogger.comBlogger191125tag:blogger.com,1999:blog-10011267.post-74199930736085959932010-04-29T16:57:00.001-05:002010-04-29T16:57:48.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 /> <div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10011267-7419993073608595993?l=www.rickborup.com%2Fblog' alt='' /></div>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.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10011267-7680786215957136658?l=www.rickborup.com%2Fblog' alt='' /></div>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><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10011267-773083700130614603?l=www.rickborup.com%2Fblog' alt='' /></div>Rick Boruphttp://www.blogger.com/profile/01848031964367175979noreply@blogger.com0tag: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><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10011267-1474110460191838557?l=www.rickborup.com%2Fblog' alt='' /></div>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><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10011267-4499356593004229158?l=www.rickborup.com%2Fblog' alt='' /></div>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><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10011267-4685965249255791186?l=www.rickborup.com%2Fblog' alt='' /></div>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><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10011267-6266400992751672908?l=www.rickborup.com%2Fblog' alt='' /></div>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><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10011267-3074918757135942788?l=www.rickborup.com%2Fblog' alt='' /></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.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10011267-7329170459876896092?l=www.rickborup.com%2Fblog' alt='' /></div>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><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10011267-8674560415948149453?l=www.rickborup.com%2Fblog' alt='' /></div>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><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10011267-32598099080646932?l=www.rickborup.com%2Fblog' alt='' /></div>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><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10011267-8067038146730828621?l=www.rickborup.com%2Fblog' alt='' /></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.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10011267-2153103039763617093?l=www.rickborup.com%2Fblog' alt='' /></div>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><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10011267-1471357860355591814?l=www.rickborup.com%2Fblog' alt='' /></div>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><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10011267-8357432029193668574?l=www.rickborup.com%2Fblog' alt='' /></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><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10011267-6199176447790483629?l=www.rickborup.com%2Fblog' alt='' /></div>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><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10011267-5836444366146583353?l=www.rickborup.com%2Fblog' alt='' /></div>Rick Boruphttp://www.blogger.com/profile/01848031964367175979noreply@blogger.com0tag:blogger.com,1999:blog-10011267.post-3798573129374213152008-03-09T20:44:00.004-05:002008-06-13T12:02:09.637-05:00Cool tool from Frank PerezYou learn something new every day. Today while reading <a href="http://feeds.feedburner.com/~r/PaulMrozowski/~3/248390046/BeyondCompareAndVFP.aspx">Paul <span class="blsp-spelling-error" id="SPELLING_ERROR_0">Mrozowski's</span> blog</a> I learned that not only does fellow <span class="blsp-spelling-error" id="SPELLING_ERROR_1">VFP</span> developer <a href="http://www.pfsolutions-mi.com/blog/">Frank Perez </a>have a blog, he's also developed and published a very cool tool for Visual <span class="blsp-spelling-error" id="SPELLING_ERROR_2">FoxPro</span> developers.<br /><br />Of all the tools in my developer's toolkit, the one I use most often (besides Visual <span class="blsp-spelling-error" id="SPELLING_ERROR_3">FoxPro</span>, of course) is probably Beyond Compare from <a href="http://www.scootersoftware.com/">Scooter Software</a>. Besides its ability to compare and synchronize the contents of two different directories, Beyond Compare has a file comparison utility that lets you view two files side-by-side with their differences highlighted. This capability is extremely useful for analyzing the differences between two versions of text-based files such as Visual <span class="blsp-spelling-error" id="SPELLING_ERROR_5">FoxPro</span> <span class="blsp-spelling-error" id="SPELLING_ERROR_6">PRG</span> files.<br /><br />While there are Beyond Compare plug-ins to facilitate comparisons between other, non-text based file types such as binary (hex) and image files, until now there was nothing designed to work specifically with non-text based Visual <span class="blsp-spelling-error" id="SPELLING_ERROR_7">FoxPro</span> files such as <span class="blsp-spelling-error" id="SPELLING_ERROR_8">DBF</span>, <span class="blsp-spelling-error" id="SPELLING_ERROR_9">CDX</span>, <span class="blsp-spelling-error" id="SPELLING_ERROR_10">SCX</span>, <span class="blsp-spelling-error" id="SPELLING_ERROR_11">VCX</span>, and so on.<br /><br />Frank's new <span class="blsp-spelling-error" id="SPELLING_ERROR_12">VFP</span> file viewer rule and <span class="blsp-spelling-error" id="SPELLING_ERROR_13">VFP</span>2TEXT tool fill this void and enable you to use Beyond <span class="blsp-spelling-error" id="SPELLING_ERROR_14">Compare's</span> file comparison feature with Visual <span class="blsp-spelling-error" id="SPELLING_ERROR_15">FoxPro's</span> non-text based file types. Get the full story and the download link straight from the source on <a href="http://www.pfsolutions-mi.com/blog/2008/03/08/BeyondCompare.aspx">Frank's blog post</a>. Nice job, Frank, and thanks for the "cool tool".<br /><br /><span style="font-size:85%;">Tags: <a href="http://technorati.com/tag/Visual+FoxPro" rel="tag">Visual <span class="blsp-spelling-error" id="SPELLING_ERROR_16">Foxpro</span></a>, <a href="http://technorati.com/tag/VFP" rel="tag"><span class="blsp-spelling-error" id="SPELLING_ERROR_17">VFP</span></a>, <a href="http://technorati.com/tag/Beyond+Compare" rel="tag">Beyond Compare</a>, <a href="http://technorati.com/tag/Frank+Perez" rel="tag">Frank Perez</a>, <a href="http://technorati.com/tag/Paul+Mrozowski" rel="tag">Paul <span class="blsp-spelling-error" id="SPELLING_ERROR_18">Mrozowski</span></a></span><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10011267-379857312937421315?l=www.rickborup.com%2Fblog' alt='' /></div>Rick Boruphttp://www.blogger.com/profile/01848031964367175979noreply@blogger.com0tag:blogger.com,1999:blog-10011267.post-15310109683142632292008-03-09T19:07:00.002-05:002008-03-09T19:14:21.749-05:00InstallShield Sold AgainMacrovision Corp. has announced that it has entered into an agreement to sell its Software Business Unit to private equity firm Thoma Cressey Bravo. This may be of interest to Visual FoxPro developers and others because Macrovision's Software Business Unit includes the InstallShield® line of products, which Macrovision has owned since it acquired the original Installshield Software Corporation back in July of 2004.<br /><br />The deal was announced on Feb. 14, 2008, almost a month ago. I'm a little surprised that, with one exception, this hasn't generated any chatter among the developers I know or on the blogs I read regularly. The only public mention of this that I'm aware of was <a href="http://msmvps.com/blogs/installsite/archive/2008/02/15/macrovision-sells-software-unit-installshield-adminstudio-flexnet-to-tcb.aspx">Stefan Krüger's post</a> on his InstallSite Blog the day after the official annoucement was made public.<br /><br />Here are the official announcements <a href="http://www.macrovision.com/company/newscenter/pressreleases/1434_8259.htm">from Macrovision</a> and <a href="http://www.tcb.com/news/Macrovision_Business_Wire_February_14.pdf">from TCB</a>.<br /><br /><span style="font-size:85%;">Tags: </span><a href="http://technorati.com/tag/InstallShield" rel="tag"><span style="font-size:85%;">InstallShield</span></a><span style="font-size:85%;">, </span><a href="http://technorati.com/tag/Macrovision" rel="tag"><span style="font-size:85%;">Macrovision</span></a><span style="font-size:85%;"><br /></span><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10011267-1531010968314263229?l=www.rickborup.com%2Fblog' alt='' /></div>Rick Boruphttp://www.blogger.com/profile/01848031964367175979noreply@blogger.com2tag:blogger.com,1999:blog-10011267.post-24502628035045011722008-02-27T09:09:00.002-06:002008-02-27T09:17:32.810-06:00New goodies from SysinternalsToday on <a href="http://feeds.feedburner.com/coolthingoftheday">Greg's Cool Thing of the Day</a>, Greg Duncan blogs <a href="http://coolthingoftheday.blogspot.com/2008/02/it-sunny-day-when-we-get-new.html">"It's a sunny day when we get a new Sysinternals utility"</a>. Not only a brand new utility, <a href="http://technet.microsoft.com/en-us/sysinternals/cc300361.aspx">ShellRunas</a>, but also updates to a couple of other favorites, <a href="http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx">Process Explorer</a> and <a href="http://technet.microsoft.com/en-us/sysinternals/bb963902.aspx">AutoRuns</a>. On top of that, I discover there's a <a href="http://blogs.technet.com/sysinternals/default.aspx">Sysinternals Site Discussion</a> feed on TechNet Blogs where this kind of news gets posted directly from the source. A sunny day indeed.<br /><br /><span style="font-size:85%;">Tags: </span><a href="http://technorati.com/tag/Gregs+Cool+Thing+of+the+Day" rel="tag"><span style="font-size:85%;">Greg's Cool Thing of the Day</span></a><span style="font-size:85%;">, </span><a href="http://technorati.com/tag/Sysinternals" rel="tag"><span style="font-size:85%;">Sysinternals</span></a><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10011267-2450262803504501172?l=www.rickborup.com%2Fblog' alt='' /></div>Rick Boruphttp://www.blogger.com/profile/01848031964367175979noreply@blogger.com0tag:blogger.com,1999:blog-10011267.post-89179726049191816442008-01-10T16:29:00.001-06:002008-01-10T16:56:43.208-06:00FeedDemon is now freeFeedDemon version 2.6 has just been released, and in a surprise move, it's now free. Also free are the rest of NewsGator's consumer RSS readers, along with online services including feed synchronization.<br /><br />As a long-time fan and paying customer of FeedDemon, I was a bit skeptical at first as to why NewsGator would do this. Evidently anticipating this kind of reaction among its existing customer base, FeedDemon's creator Nick Bradbury addressed some of the reasons for the change in his <a href="http://nick.typepad.com/blog/2008/01/free-demon-yes.html">blog post</a> yesterday, as did NewsGator's Greg Reinacker in <a href="http://www.rassoc.com/gregr/weblog/2008/01/09/newsgators-rss-clients-are-now-free/">his blog post</a>. Best to read these for yourself and get the answers straight from the source.<br /><br />FeedDemon 2.6 for Windows is available for download from <a href="http://www.newsgator.com/Individuals/FeedDemon/">www.newsgator.com/Individuals/FeedDemon/</a>.<br /><br /><span style="font-size:85%;">Tags: <a href="http://technorati.com/tag/FeedDemon" rel="tag">FeedDemon</a> <a href="http://technorati.com/tag/NewsGator" rel="tag">NewsGator</a> <a href="http://technorati.com/tag/Nick+Bradbury" rel="tag">Nick Bradbury</a> <a href="http://technorati.com/tag/Greg+Reinacker" rel="tag">Greg Reinacker</a></span><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10011267-8917972604919181644?l=www.rickborup.com%2Fblog' alt='' /></div>Rick Boruphttp://www.blogger.com/profile/01848031964367175979noreply@blogger.com1tag:blogger.com,1999:blog-10011267.post-38148179608223324292007-12-20T16:03:00.000-06:002007-12-20T16:15:51.832-06:00Getting your head around LINQThere's more to LINQ than just writing your SQL SELECT statements backwards. If you're interested in becoming familiar with LINQ (Language-Integrated Query), the series on <em>Converting SQL to LINQ</em> from the <a href="http://blogs.msdn.com/vbteam/rss.xml">Visual Basic Team blog</a> looks like a good place to start. Five articles have been published so far, with two more to follow.<br /><br /><a href="http://blogs.msdn.com/vbteam/archive/2007/11/19/converting-sql-to-linq-part-1-the-basics-bill-horst.aspx">Converting SQL to LINQ, Part 1: The Basics (Bill Horst)<br /></a><br /><a href="http://blogs.msdn.com/vbteam/archive/2007/11/28/converting-sql-to-linq-part-2-from-and-select-bill-horst.aspx">Converting SQL to LINQ, Part 2: FROM and SELECT (Bill Horst)<br /></a><br /><a href="http://blogs.msdn.com/vbteam/archive/2007/12/04/converting-sql-to-linq-part-3-distinct-where-order-by-and-operators-bill-horst.aspx">Converting SQL to LINQ, Part 3: DISTINCT, WHERE, ORDER BY and Operators (Bill Horst)</a><br /><br /><a href="http://blogs.msdn.com/vbteam/archive/2007/12/12/converting-sql-to-linq-part-4-functions-bill-horst.aspx">Converting SQL to LINQ, Part 4: Functions (Bill Horst)<br /></a><br /><a href="http://blogs.msdn.com/vbteam/archive/2007/12/18/converting-sql-to-linq-part-5-group-by-and-having-bill-horst.aspx">Converting SQL to LINQ, Part 5: GROUP BY and HAVING (Bill Horst)</a><br /><br />Other LINQ links:<br /><br /><a href="http://msdn2.microsoft.com/en-us/library/bb397926.aspx">Language-Integrated Query (LINQ) </a><br /><br /><a href="http://msdn2.microsoft.com/en-us/netframework/aa904594.aspx">The LINQ Project</a><br /><br /><a href="http://msdn2.microsoft.com/en-us/library/bb425822.aspx">LINQ to SQL: .NET Language-Integrated Query for Relational Data</a><br /><br /><br /><span style="font-size:85%;">Tags: <a href="http://technorati.com/tag/LINQ" rel="tag">LINQ</a></span><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10011267-3814817960822332429?l=www.rickborup.com%2Fblog' alt='' /></div>Rick Boruphttp://www.blogger.com/profile/01848031964367175979noreply@blogger.com0tag:blogger.com,1999:blog-10011267.post-63640891564429940252007-10-25T12:51:00.000-05:002007-10-25T13:06:54.579-05:00Security update for Adobe Reader and AcrobatOn Monday Adobe published a <a href="http://www.adobe.com/support/security/bulletins/apsb07-18.html">security bulletin</a> announcing the availability of updates to address "critical vulnerabilities" in Adobe Reader and Acrobat. Those using version 8.1 or earlier of these products are "strongly recommended" to upgrade to version 8.1.1. The update is available via the products' automatic update feature or by direct download from links provided in the bulletin. Version 7.0.9 and earlier of these products are evidently also affected, with an update to be available "at a later date".<br /><br /><span style="font-size:85%;">Tags: <a href="http://technorati.com/tag/Adobe" rel="tag">Adobe</a>, <a href="http://technorati.com/tag/AdobeReader" rel="tag">Adobe Reader</a>, <a href="http://technorati.com/tag/Acrobat" rel="tag">Acrobat</a></span><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10011267-6364089156442994025?l=www.rickborup.com%2Fblog' alt='' /></div>Rick Boruphttp://www.blogger.com/profile/01848031964367175979noreply@blogger.com0tag:blogger.com,1999:blog-10011267.post-57542048528316000092007-10-25T12:02:00.000-05:002007-10-25T12:24:08.166-05:00Southwest Fox 2007 Wrap-UpI got back late Sunday night from Phoenix after spending four awesome days at <a href="http://www.swfox.net/">Southwest Fox 2007</a>. What an outstanding event this turned out to be! Rick Schummer, Tamar Granor, and Doug Hennig, who took over as conference organizers this year, did an excellent job. They deserve a ton of credit for their efforts and for the resulting success of this year's conference.<br /><br />In the spirit of full disclosure, I attended as a speaker so my travel and hotel expenses were covered by the conference. However, we speakers are volunteers and are not paid for our presentations nor for the time it takes to prepare them, so my enthusiasm for this event comes from the heart, not from the wallet.<br /><br />At something over 150, not counting speakers and staff, this year's attendance was more than double last year's. If I correctly remember the numbers Rick Schummer announced at the keynote session, people came from 35 states and 7 foreign countries to be there. Old friendships were renewed and new ones begun. Sessions were well attended. People were excited and continued talking with one another well past session ending times. Outside the session rooms, sidebar discussions were going on all the time. You could feel the energy level running throughout the conference.<br /><br />In short, the buzz was definitely back.<br /><br />With 27 separate presentations (not counting pre-conference and vendor sessions) and 14 mainline time slots, there was literally so much technical content you couldn't see it all. But of course every attendee received complete session materials and code samples on CD, so we can explore the sessions we couldn't attend along with anything we did see but couldn't fully absorb in 75 minutes. In addition, the conference organizers made the session materials available for download a few days in advance of the actual conference. Some people commented later that they took advantage of this to read the white papers and look over the slides before attending the live presentations, which really enhanced the session experience for them.<br /><br />The conference venue -- The <a href="http://azgolfresort.com/en_home.html">Arizona Golf Resort and Conference Center</a> in Mesa -- was beautiful and in my opinion well suited to a conference of this size and type. We pretty well filled up the one conference center building where all the general and breakout sessions took place, although the resort has at least one other conference building as well. Breakfast and lunch were provided by the conference and served in a banquet/party room adjacent to the conference center building. There were plenty of tables and chairs so there was no waiting for somebody else to finish eating before you could sit down. The dining room had a nice open feeling with lots of windows, conducive to relaxation and conversation. Tables were also set up in the outdoor courtyard so those with a preference for sunshine (and there was plenty of that!) could eat outside. Personally, I thought the choice of foods was among the best I've seen at a conference. The Resort's catering and support staff were uniformly attentive and courteous and did a fine job of making things go smoothly without being intrusive.<br /><br />Although I was primarily there as a speaker, I also took advantage of the opportunity to sit in on other speakers' sessions when I wasn't presenting one of my own. Any doubts anyone might have had about the strong future of Visual FoxPro were easily dispelled by the broad spectrum of VFP and VFP-related technical content presented at Southwest Fox. Although most of it is community-based these days, there is so much going on in so many areas that there is no doubt VFP will continue to remain vital and growing for a long time to come, despite Microsoft's decision to end further enhancement of the core product.<br /><br />One side note: Near the end of my session on Framework Fundamentals, I showed a sample application whose "About" screen included the cool "Three Kokopellis" postage stamp graphic representing the Southwest Fox conference logo. Dave Aring of <a href="http://www.visionpace.com/">Visionpace</a> is the creative talent behind that and the other graphics for the conference. I meant to acknowledge Dave, who was seated in the back of the room, but in my haste to finish the presentation on time I forgot to do so. Dave didn't ask to be mentioned for this, but he deserves to be. Thanks for the great work, Dave, and for contributing it to the conference.<br /><br />Southwest Fox was definitely a highlight of the year. I came back feeling totally re-energized by the experience, with lots of good ideas to apply in my future development work. If I can leverage even a fraction of what I learned, both my clients and I will benefit greatly.<br /><br />Perhaps the best news of all: Southwest Fox 2008 was announced for Oct. 16-19, 2008. Mark your calendars!<br /><br /><span style="font-size:85%;">Tags: <a href="http://technorati.com/tag/SouthwestFox" rel="tag">Southwest Fox</a>, <a href="http://technorati.com/tag/SWFox" rel="tag">SWFox</a>, <a href="http://technorati.com/tag/VisualFoxPro" rel="tag">Visual FoxPro</a>, <a href="http://technorati.com/tag/VFP" rel="tag">VFP</a>, <a href="http://technorati.com/tag/Visionpace" rel="tag">Visionpace</a></span><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10011267-5754204852831600009?l=www.rickborup.com%2Fblog' alt='' /></div>Rick Boruphttp://www.blogger.com/profile/01848031964367175979noreply@blogger.com0tag:blogger.com,1999:blog-10011267.post-70988829275977830122007-10-15T15:16:00.000-05:002007-10-15T15:30:54.175-05:00Coming up for airOkay, where did the summer go??<br /><br />I realize it's been very quiet here on fiat volpes since the end of June. I wasn't intentionally staying away. I've been heads down on several projects this summer, plus preparing two presentations for the <a href="http://www.swfox.net/">Southwest Fox</a> conference later this week. And all of sudden it's October.<br /><br />I expect to get back to more regular posting from now on. One news item today: if you're interested, a PDF of my paper on <em>Automating the Build </em>from last year's Southwest Fox conference (2006) is now available for download from the <a href="http://www.ita-software.com/foxpage.aspx">FoxPro Developers page</a> on my website. There's also an HTML version, but the PDF is much more readable so choose it if you can.<br /><br /><span style="font-size:85%;">Tags: <a href="http://technorati.com/tag/SouthwestFox" rel="tag">Southwest Fox</a></span><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10011267-7098882927597783012?l=www.rickborup.com%2Fblog' alt='' /></div>Rick Boruphttp://www.blogger.com/profile/01848031964367175979noreply@blogger.com0