5.12.2006

Tao of the Windows Installer, Part 2

The Windows Installer team has posted part 2 in their series on best practices for the Windows Installer. Tao of the Windows Installer, Part 2 offers twenty-three rules on the subject of Packaging. This series is definitely recommended reading for anyone involved in creating MSI setups.

Tags: ,

5.09.2006

Library Thing

Ted Roche blogged over the weekend about LibraryThing, a web-based way to catalog your books online and share the information with others. Ted mentioned that I'd already cataloged some of my FoxPro books there, which reminded me it had been a while since I posted anything and prompted me to log in again and add some more recent acquisitions and old favorites. Ted's posted some of his books there now, too, and has gone a step further than I have by adding a sidebar to his blog to display some of the titles from his catalog.

LibraryThing is easy to use, and its integration with amazon.com makes adding new entries a breeze. Editing and tagging existing catalog entries is intuitive, thanks to a well designed and flexible user interface. I discovered today you can export your catalog as a delimited text file, which makes it easy to import it into Excel or a database, should you want to do that. Nice.

Tags:

5.03.2006

Best Practices for Windows Installer

Fresh on the heels of my "Best Practices for Deployment" session at GLGDW 2006 comes some more great information on a related topic, this time directly from the source. The Windows Installer team at Microsoft has just published the first in a series on best practices for Windows Installer.

The Tao of Windows Installer, Part 1 was posted on the Windows Installer team's blog on Monday. This first part focuses on Fundamentals, enumerating six rules (best practices) to go by. The other parts -- Packaging, Deployment, Patching, Testing and Support, and Security Considerations -- are expected to follow approximately one per week.

In addition to simply providing these guidelines, the author(s) are looking for feedback from readers in order to help turn this series of blog posts into an eventual whitepaper. Regardless of whether or not you want to provide feedback, it looks like this will be excellent reading.

Tags: ,

5.01.2006

"You are not inadequate" [humor]

Feeling overwhelmed? Awash in new technology? Unable to keep up? The secretGeek has good news: You are NOT inadequate. Ahh, thank you. I feel much better now. (This is largely humorous, but it makes a very good point, too.)

WiX Video on Channel 9

Robert Scoble blogs: "What's possibly the most used piece of software developed at Microsoft? The WiX [Windows Installer XML] toolset."

Some readers know I've been talking and writing about WiX within the Visual FoxPro community for a couple of years now, most recently in a conference presentation at Southwest Fox last fall. WiX builds Windows Installer setup file (MSI) from XML source code. It's unique for several reasons, including the fact that it was the first open-source product released by Microsoft. Scoble filmed a 57-minute video featuring Rob Mensching and the rest of the all-volunteer WiX 'virtual team', which is now available on Channel 9.

In the video, Rob talks about the evolution of Wix and demonstrates its use and integration with Visual Studio. He also shows the Orca MSI editor, a nifty little tool for poking around inside MSI files. Around minutes 30:00 to 33:00, Rob and others talk about the importance of integrating setup authoring into the software development process, a theme I touched on in my Best Practices for Deployment session at last weekend's Great Lakes Great Database Workshop (GLGDW) in Milwaukee.

If you're interested in WiX, this video is required viewing. If you're not, this is a good way to start getting familiar with WiX and the team that created it. For more information, read Rob Mensching's blog and visit the WiX home on the Web at wix.sourceforge.net. The tutorial there is particularly helpful. For VFP developers, there is also a WiX page on the FoxPro Wiki.

Tags: , ,

4.30.2006

GLGDW 2006 Conference Notes and Photos

The 2006 edition of the Great Lakes Great Database Workshop (GLGDW, aka Whilfest) wrapped up last Monday in Milwaukee. Others who were there, including Doug Hennig and Rick Schummer, have already posted excellent conference wrap-ups on their blogs that include individual conference session summaries, so I'll just add a couple of general comments here.

GLGDW has a well-deserved reputation for being an excellent conference, and this year was certainly no exception. After a 2 1/2 year hiatus since the last one in October 2003, Whil brought the conference back in a somewhat different format this year. For one thing, it was essentially just a weekend conference, running from Friday evening to Monday noon instead of stretching over four of five days. For another, there was only one track this year, meaning each session was presented only once and everybody attended the same session at the same time. Also, the entire conference was focused on the single theme of "Best Practices for Visual FoxPro", which gave a certain continuity to the sessions.

The one-track format allowed everyone, including speakers, to attend all the sessions. This worked out pretty well for everyone, particularly so for the speakers because we don't ordinarily get to see the whole show. The smaller size of this conference also facilitated more than the usual amount of dialog between the speakers and the audience during the sessions, which added to the informal feeling of this event. Larger, multi-track conference formats are good because they can accommodate a wider variety of topics and a greater number of speakers and attendees, but the intense "weekend jam session" nature of this year's GLGDW was a nice change of pace.

Kudos to all the other speakers, who did a uniformly excellent job with their sessions, and thanks to everyone who attended and helped make the weekend happen. As always, Whil Hentzen deserves a ton of credit for putting it all together, and his daughter Aleix earns special recognition for helping to keep things running smoothly throughout the entire weekend.

I took a few snapshots at the conference. You can see them at www.ita-software.com/GLGDW2006_Photos/index.html.

Tags: , , ,

4.28.2006

FeedDemon 2.0 Wins PC Magazine Editors' Choice Award

PC Magazine agrees with what I've been saying for a long time: "FeedDemon 2.0 is the best desktop RSS aggregator money can buy." Snapshot review at www.pcmag.com/article2/0,1895,1948579,00.asp, full review here.

Tags:

Chainsaw unusable after being attacked by crocodile [off topic]

Sometimes you see a headline and you just have to read the story. This one caught my attention on MSNBC this morning. According to the report, neither animal nor man were injured, but the chainsaw didn't fare so well.

"Crocodile comes out on top after fight with saw -
"Chainsaw unusable after being attacked by 14.5-foot saltwater crocodile".
Story at www.msnbc.msn.com/id/12526001/.

4.11.2006

Chicago FUDG Meeting Tonight

If you're a Visual FoxPro developer in the Chicago area, come on over to the FoxPro Users and Developers Group (Chicago FUDG) meeting this evening. I'll be giving a sneak preview of my Best Practices for Deployment session, which will be presented at the Great Lakes Great Database Workshop (GLGDW) in Milwaukee later this month. Tonight's meeting is at 5:30 PM; see the Chicago FUDG website for location and details. In addition to the talk, I'll be giving away copies of Deploying Visual FoxPro Solutions and What's New in Nine: Visual FoxPro's Latest Hits as door prizes.

Technorati Tags: , ,

"The 10 worst ways to communicate with end users"

Great article by Becky Roberts over on TechRepublic this morning. "The 10 worst ways to communicate with end users" is a short but valuable read for anybody who deals with end users (and who doesn't?). Originally spotted on the TechRepublic Downloads feed.

Technorati Tags:

4.05.2006

The Future of Programming [Humor]

Charles Petzold, author of "Programming Windows" (Microsoft Press) and many other books, shows us the future of programming with his article on the C# Application Markup Language (CSAML). Note the publication date of April 1, 2006.

FeedDemon 2.0

The newest version of FeedDemon is finally out of beta. FeedDemon 2.0 was released last week and is available for download from NewsGator.

Anyone who's been reading this blog or listening to me speak at user groups and conferences knows I've been a fan of FeedDemon ("Insanely Great Software: FeedDemon") and the other products developed by Nick Bradbury (TopStyle, also now from NewsGator, and HomeSite, now from Macromedia) for a long time. I had some initial concerns about the future of FeedDemon following NewsGator's acquisition of Bradbury Software back in May of 2005 ("Newsgator acquires FeedDemon"), but at least one of those concerns was soon alleviated when it was announced in July that FeedDemon would retain it's stand-alone capabilities and not require a NewsGator subscription ("NewsGator acquires FeedDemon Redux").

My other concerns were (a) how much involvement with and influence over FeedDemon would Nick Bradbury really continue to have, and (b) would NewsGator prove to be as responsive to the FeedDemon and TopStyle user community as Bradbury Software had always been. From what I've observed, the answers are: a lot, and yes.

During the FeedDemon 2.0 development cycle, NewsGator maintained a beta support forum. Those of us who were using the betas got a lot of releases to play with along the way, and needless to say the beta forum was very active. In spite of the daily flood of ideas (and sometimes complaints) flowing their way via the support forum, the company was very responsive to problem reports and suggestions. In particular, Jack Brewster of NewsGator technical support and Nick Bradbury himself deserve a lot of credit for their willingness to listen to and interact personally with the community.

FeedDemon 2.0 features a long list -- ten pages! -- of changes and improvements over the previous release version, v1.5. (Version 1.6 was around for a while but was never released other than as a Beta.) The most noticeable change in 2.0 is that feeds are organized and presented as nodes in a treeview, replacing the separate folders in a drop-down list used in previous versions. Also, synchronization of feeds with NewsGator Online is an option but is not required.

IMO FeedDemon 2.0 is a worthwhile upgrade for anyone still using 1.5 or 1.6, and continues to be an attractive choice for anyone who's looking for a good feed reader. There are still some things I'd like to see added or changed, but it's time to let Nick catch his breath and relax for a while. Meanwhile, FeedDemon 2.0 is ready to rock and roll, and the Technical Support forum and Feature Requests forum are up and active.

Technorati Tags:

Blog Comment Notification Issues

Blogger evidently isn't sending me e-mail notification of blog comments until I log in to Blogger again. Either I'm misunderstanding how it's supposed to work (expected behavior: someone posts a comment, I get e-mail notification right away) or I have something configured incorrectly. Maybe it's because I'm hosting the blog on my own server. I'll have to dig into this some more...

WiX turns 2

WiX, the Windows Installer XML toolset, is two years old today. Creator Rob Mensching looks back over the history of the project and talks about its future direction on his blog.

Technorati Tags:

3.17.2006

Visual FoxPro: How to call back to a form from a popup menu

Popup menus are a useful way to provide users with context-based shortcuts to frequently used actions. In Visual FoxPro, popup menus are commonly invoked from the right-click event code of a control on a form, while the code you want to execute from a bar on the menu may be contained in a custom method of the form.

The challenge is, how do you get a popup menu to run a method of the form that invoked it? You can't reference 'thisform' within the menu, because 'thisform' is out of scope when the menu is active. And it's bad design to reference the calling form with a specific object name, because then the menu is tightly coupled to a particular named instance of the form.

The solution is to pass an object reference to the form as a parameter to the menu. This enables the menu to call back to the form using the parameter as the object reference.

For example, say you have a form with a grid to display rows of data, and another form to edit the data for any given row. The main form has a method named Edit() that does whatever's necessary to launch the editing form, perhaps passing it the primary key of the record for the currently selected grid row. You want the user to be able to right-click on the grid and choose 'Edit' from the popup menu, which in turn should call the form's Edit() method. Here's how to do this:

In the right-click method of a control(s) in the grid, put

DO myPopup.mpr WITH thisform

This passes an object reference to the form as a parameter to the popup menu. In the Setup code of myPopup menu, put

PARAMETERS oCaller

Use PARAMETERS instead of LPARAMETERS so oCaller is PRIVATE rather than LOCAL. As a private variable, oCaller is visible to and can be referenced by any other code in myPopup.mpr. So in the code for the Edit bar of myPopup, you can write

oCaller.Edit()

This runs the Edit() method of the calling form, regardless of what the calling form's object name is.

You can extend this concept even further by passing an object reference to the individual control as a second parameter. For example, put

DO myPopup.mpr WITH thisform, this

in the right-click method, and put the corresponding

PARAMETERS oCaller, oControl

in the menu's Setup code. Within the menu, you now have fine-grained access both to the calling form and to the specific control from which the menu was launched.

Technorati Tags: ,

2.09.2006

New videocast on Inno Setup 5.0 with VFP

I've just posted a new videocast on using Inno Setup 5.0 with VFP apps. This videocast describes how to customize an Inno Setup script so you can install your database files to a location that's independent of where the EXE and other workstation files are installed.

The videocast is available from a link on my FoxPro developers page at www.ita-software.com/foxpage.aspx. To launch the video, click on the 'Video' link under the title Deploying Multi-User VFP Apps with Inno Setup 5.0. The video should start playing automatically. Total running time is 16:31.

Technorati Tags: , ,

2.06.2006

Southwest Fox 2005 papers published

The white papers from my two presentations at the Southwest Fox conference in Phoenix, Arizona last October are now available on my website. Integrating RSS with Visual FoxPro Applications explores ideas for leveraging RSS in VFP apps, while Roll Your Own Windows Installer Setups is a primer on using the Windows Installer XML toolset (WiX) to deploy VFP apps.

Both papers are available in PDF and HTML. Tip: choose the PDF version if you can. The HTML version is what you get when you save a Word document as HTML, which looks pretty good at 600x800 but degrades rather badly in larger browser windows because there is no width constraint.

Southwest Fox conference organizer Bob Kocher didn't place any restrictions on publishing the papers from his conference, but as a courtesy I feel it's appropriate to wait about three months before doing this so as not to diminish the value of the content for those who paid to attend the conference. And speaking of Southwest Fox, be sure you don't miss the 2006 edition coming up on October 19-22.

Technorati Tags: , , , ,

2.02.2006

"A New Look for IE"

From Max Stevens over at the Microsoft IEBlog, several screen shots and accompanying commentary on what's new in the IE 7 user interface.

Blogger Spell Checker

Blogger's spell checker doesn't recognize the word 'blog'. Gee, you'd think it would know that one.

SnagIt 8.0 Installer Options

In my blog post last Monday I commented that the installer for SnagIt 8.0 installs the plugins for Microsoft Office applications without asking if you want them. This is true if you run a 'typical' install, which most people probably will do. I haven't gone back to verify this, but I'm pretty sure the installer for SnagIt 7.0 presented this choice as part of the typical install. In any case, it turns out these choices are still available for SnagIt 8.0 but you have to choose a 'custom' install to see them.

Technorati Tags:

1.30.2006

SnagIt 8.0

Techsmith has released version 8.0 of its SnagIt screen capture tool. The SnagIt user interface has been overhauled and some new features have been added, including the ability to output to PDF.

My first impressions of this new version are positive, although the installer seemed a bit more aggressive than 7.0 in that it installed the SnagIt plugins for all my Microsoft Office apps (Word, Excel, Outlook, etc.) without asking -- or at least, if there was an option to not install these, I missed it. Another change from 7.0 is that the SnagIt Editor tool now includes several of the features that used to be available only in SnagIt Studio. As a result, SnagIt Studio no longer installs with SnagIt, but it is still available for download.

SnagIt has long been a favorite for screen capture duties, and it's good to see a new version come along even if it will take a bit of getting used to.

Technorati Tags:

1.25.2006

FeedDemon 2.0 Beta 1

FeedDemon 2.0 Beta 1 has been released and is available for public download. Read Nick Bradbury's blog post for complete information and a link to the download.

Note that FeedDemon v2.0 uses the same feed cache as v1.6, which itself is still in beta but has now been superseded by v2.0. The current release version of FeedDemon remains 1.5, which I believe uses a different cache location than 1.6 and 2.0.

Nick recommends you install 2.0 to a different folder than 1.5/1.6. I have v1.6 installed in the default location C:\Program Files\Bradbury\FeedDemon and v2.0 installed in C:\Program Files\Bradbury\FeedDemon2, and can now run either one.

Based on the stability of the beta releases throughout FeedDemon's history, I've been comfortable using 1.6 since its first pre-release version and am now using 2.0 Beta 1 with no discernible problems. Version 2.0 does have some major differences from 1.6, notably the use of a treeview instead of separate folders to organize and view your subscriptions. Although 2.0 Beta 1 appears to be stable, the beta forum is active with feedback and suggestions and I'm anxious to see Beta 2.

Technorati tags:

1.23.2006

User Interface Localization in WiX

The latest version of the WiX toolset makes a change that could affect your current compile and link steps. The WiX user interface (WiXUI) files that come with WiX v2.0.3719.0 -- wixui_featuretree.wixlib, wixui_minimal.wixlib, and wixui_mondo.wixlib -- require a localization file to be referenced in at link time. The WiX download includes a U.S. English localization file named WiXUI_en-us.wxl. This is a standard XML file you can edit for other languages.

Using a project named wixdemo as an example, your compile and link steps prior to v2.0.3719.0 might have been:
candle wixdemo.wxs
light -out wixdemo.msi wixdemo.wixobj wixui_mondo.wixlib
Under v2.0.3719.0 the compile (candle) step remains the same but the link must incorporate the localization file using the -loc parameter, like this:
light -out wixdemo.msi wixdemo.wixobj wixui_mondo.wixlib -loc wixui_en-us.wxl
As before, you need to include the <UIRef Id="WixUI" /> element in your WiX source file (which would be wixdemo.wxs in this example) in order to incorporate the WiX user interface into your setup.

Freezing Fog

Freezing FogAs if Monday mornings weren't bad enough already. You gotta love living in the Midwest in January.

1.06.2006

XSource for Visual FoxPro 9.0 SP1 - Follow Up

Yesterday I posted about the release of XSource for Visual FoxPro 9.0 SP1 and said I was off to explore what's in the download. The download is an executable file (VFP9SP1_XSource.exe), so I was expecting an installer of some kind. Turns out it's simply a self-extracting archive that prompts you to accept the license agreement and then extracts the single file xsource.zip to a location of your choice. The expected location is HOME() + Tools\XSource, which is where the copy of xsource.zip from the original release of VFP 9.0 is located.

The SP1 version of xsource.zip contains the same 2459 files as its pre-SP1 counterpart, although most now have an updated date and time stamp. So the good news is, everything we're used to seeing in xsource.zip is still there and is now available under the new permissive license.

1.05.2006

Microsoft releases fix for WMF vulnerability

Microsoft released a fix for the so-called WMF (Windows Metafile) vulnerability this afternoon. This comes in advance of the customary monthly rollout of security updates expected next Tuesday. See Microsoft Security Bulletin MS06-001: Vulnerability in Graphics Rendering Engine Could Allow Remote Code Execution (912919) at www.microsoft.com/technet/security/bulletin/ms06-001.mspx
for details and downloads.

XSource for Visual FoxPro 9.0 SP1

Microsoft has released XSource for Visual FoxPro 9.0 SP1. This download comes with its own license agreement, dubbed the Microsoft Permissive License (Ms-PL), which overrides the VFP 9.0 SP1 license agreement with respect to the XBase source files contained in the XSource download. In his January Letter, Microsoft Visual Studio Data Products Manager Ken Levy states "Our goal is to encourage VFP developers to enhance and redistribute any of the VFP 9.0 Xbase components in XSource to share with the VFP community including via the SednaX community project."

A quick glance at the license shows that Microsoft is granting us the rights to reproduce, prepare derivative works, and distribute this stuff royalty-free worldwide (this is my interpretation - I am not a lawyer, so read the complete license and get your own legal advice). There's no question this is going to stimulate a lot of good and creative things to come. Right now I'm off to read the license more thoroughly and to explore what's in the download.

1.04.2006

Craig Boyd's RegEx Library for VFP

Craig Boyd has written and published a regular expressions (RegEx) library for Visual FoxPro. Check out his blog post for full information, VFP code examples, and a link to download the FLL. Looks like I'm going to have to dust off my copy of "Teach Yourself Regular Expressions in 10 Minutes" and finally get serious about learning this stuff. Nice work, Craig.

Print+Print Preview - Firefox Extension

Another great little extension for Firefox is now available. The Print+Print Preview extension turns the default Print button on the Firefox toolbar into a Print/Print Preview drop-down button. I've often wished Firefox had a Print Preview button, but with this extension you don't need one 'cause the Print button now does double duty.

1.03.2006

Web Developer Extension reaches 1.0

After spending several months at version 0.9x, Chris Pederick's excellent Web Developer Extension for Firefox has reached version 1.0. If you do any Web design and development work, this is a really useful tool to have in your toolbox. Check out the features page for an overview, and read the list of enhancements for details about what's new in this release.

12.29.2005

More feeds added to the FoxBlogs tag cloud

The FoxBlogs tag cloud is now up to 42 feeds. Thanks to everyone who has asked to be added and/or referred me to other lists of VFP-related blog feeds. Also, the list of feeds on the FoxBlogs web page (below the cloud) now has links to both the XML URL and the HTML URL for each blog.

12.26.2005

FoxBlogs tag cloud updated

Thanks to feedback from several folks in the Visual FoxPro community, I've updated the FoxBlogs webpage with several more feeds that were missing from the first go-around. Also, you can now download the FoxBlogs feed list as an OMPL (Outline Processor Markup Language) file - look for the link at the bottom of the FoxBlogs page. The OPML file contains both the XML URL and the HTML URL for the feeds in the list.

12.23.2005

FoxBlogs - The Visual FoxPro Community TagCloud

I've created a new page on my website called FoxBlogs. FoxBlogs is a TagCloud that pulls together keywords from blogs across the VFP community. Tag clouds are a very cool way to view and link to what people are blogging about. Visit the new FoxBlogs page and find out what the Visual FoxPro community is blogging about!

12.19.2005

ITA Website Redesign

Just as the cobbler's kids are the last to get shoes, so the developer's website is the last to get updated. But finally, after months of playing around with it, the overhaul and redesign of my own website (www.ita-software.com) is ready for prime time.

The original site was seriously out of date, not only in appearance but in the mechanics of its design. Like most sites of its vintage (circa 1995), it used HTML tables for layout and HTML font tags for style markup. The site was entirely static, with no dynamic content at all, and there were even a couple of animated GIFs (remember when we thought those were cool?) decorating the home page.

The new site design is entirely CSS-based. Following my own advice, along the lines of the presentation I made to the Detroit Area Fox Users Group (DAFUG) earlier this year, the site redesign accomplishes these objectives:

  • Migrate from HTML to XHTML

  • Eliminate the use of deprecated HTML tags such as <font> to control style

  • Eliminate the use of HTML tables to control positioning of elements on the page

  • Separate the positioning of elements on the page (layout) from their appearance (style)

  • Separate both layout and style from page content


To that end, the site uses two CSS style sheets, one to control positioning (CSS-P) and the other to control style. The content for each page is thereby freed to reside in simple HTML pages within the appropriate <div> tag. This approach is not difficult to implement and makes the site easy to maintain because each aspect of the design -- layout, style, and content -- can be manipulated separately.

Another objective was to make it a three-column layout with a fluid center. In other words, the width of the center column, where the main content of each page resides, should shrink and expand with the browser window while the left and right columns retain their width. This is accomplished through the use of CSS positioning. There are many resources that describe this technique, both in books and online, and I am indebted to several of them for this and other ideas behind my own site's design. In particular, the following books were very helpful:

DHTML and CSS for the World Wide Web, 3rd edition, by Jason Cranford Teague
HTML & XHTML The Definitive Guide, 5th edition, by Musciano & Kennedy
Designing with Web Standards, by Jeffrey Zeldman
Stylin' with CSS, A Designer's Guide, by Charles Wyke-Smith

The new site also has an XML-driven dynamic news feed, which appears at the bottom of the right column on each page. The news headlines in the right column point to a news page, which in turn draws content from an XML feed with full descriptions for each news item and other information in addition to the headlines. In future this may become a true RSS feed, but right now it's kind of a hybrid that suits my particular purpose. Other improvements in the news feed will also be forthcoming as I get around to them.

Finally, cross-browser compatibility remains both an elusive objective and an ongoing challenge for all web designers. My new site design has been tested in Internet Explorer 5.5 and 6.0, Firefox 1.5, Opera 8.51, and Safari on the Mac. As far as I know it renders as intended on all of those browsers, with the exception that IE does not respect the max-width and min-width property in the container div. I ran into a couple of other random behaviors with IE, too, which forced me to change the design a little bit to accommodate it, but that's a topic for another day.

By adhering to standards as much as possible, the site is cross-browser compatible to the extent the browsers themselves adhere to the standards. Earlier (non-released) versions of my site redesign incorporated various hacks to accommodate anomalies in specific browsers. The final design contains no hacks and lets the browsers fend for themselves. Call this lazy design if you will, but I prefer to call it forward thinking. < s >

Tech Note 1: The site now uses ASP.Net to drive the dynamic content, so the page name extensions are now .aspx instead of .htm. Because many people have bookmarked my FoxPro developers page, I've set it up so the old foxpage.htm now redirects automatically to foxpage.aspx. The redirect will remain in place indefinitely, but please update your bookmarks anyway.

Tech Note 2: This site was built largely using Dreamweaver 8, the latest release from Macromedia (now part of Adobe). I use both Dreamweaver and FrontPage, depending on the particular need and design objectives for a site. Both are good tools, but I have to say that this latest version of Dreamweaver is terrific, making it very easy to work with CSS as well as facilitating the dynamic XML content. Through 12/31 there is a special upgrade price of $399 for the entire Studio 8 bundle of products, which besides Dreamweaver includes Fireworks, Flash Professional, Contribute, and FlashPaper. See the Macromedia website for details if you're interested.

All brand names referenced herein are the property of their respective owners.

12.16.2005

Great Lakes Great Database Workshop 2006

Whil Hentzen announced today that the Great Lakes Great Database Workshop, aka Whilfest, will return in 2006. Mark your calendars for April 21-24, 2006 in Milwaukee, Wisconsin. After a two-year plus hiatus, GLGDW has undergone some changes: The 2006 workshop will feature 90-minute sessions, all in one track, focused on examining "Best Practices for Visual FoxPro". Early details are available online at www.hentzenwerke.com/conferences/glgdw2006.htm. Registration information is expected to be available on Dec 20th.

CompuServe® Forum RSS Feeds

I noticed today there are RSS feeds for most if not all of the CompuServe community forums. The VFP sections of the MS Developer Applications forum are still quite active, and having the RSS feed should make it much easier to keep up with what's going on. Subscribed.

The RSS feed for the MS Dev Apps forum is feeds.feedburner.com/ws-msdevapps. A list of all the available forum feeds can be found here.

12.08.2005

VFP9 SP1 is released

Service Pack 1 for Microsoft® Visual FoxPro® 9.0 has been released and is available for download. Ken Levy's December 2005 Letter from the Editor has more information along with a link to the SP1 download page. There's also a link to the SP1 download page on the Visual FoxPro home page and on the Visual FoxPro Product Updates page. A link to the VFP9 SP1 Fix List can be found on the SP1 download page.

12.07.2005

Firefox 1.5 Extensions Compatibility - SnagIt Update

I'm not sure what changed, but the Firefox Extension for SnagIt is now compatible with Firefox 1.5. The extension's web page at www.techsmith.com/products/snagit/firefox.asp does not mention an update for Firefox 1.5, and the extension itself is still versioned as 1.0, but this morning it successfully installed and works as expected on Firefox 1.5.

12.03.2005

Firefox 1.5 Extensions Compatibility - Aardvark Update

The Aardvark Firefox extension has been updated and is now compatible with Firefox 1.5. Aardvark 1.1 is available at www.karmatics.com/aardvark/.

12.01.2005

200K and counting (off topic)

200,000 milesNew in '92 and still going strong - no leaks, no squeaks, no squeals. The old saying was "they don't build 'em like they used to." I think now we have to say, "they didn't used to build 'em like this." Happy 200th to my '92 Caravan.

Firefox 1.5 Extensions Compatibility

I've been checking my Firefox extensions for compatibility with Firefox 1.5. Here are the early results:

Developer Extensions

DOM Inspector - compatible. The DOM Inspector tool comes with Firefox, but you need to do a custom install (on Windows, anyway) and select Developer Tools to get it. Firefox 1.5 installs DOM Inspector 1.8.

Web Developer 0.9.4 - compatible. Available from chrispederick.com/work/webdeveloper/.

View Cookies 1.5 - compatible. Available from addons.mozilla.org/extensions/moreinfo.php?id=315.

Aardvark 1.0 - not compatible. The Aardvark home page is www.karmatics.com/aardvark/. From what I see on the mozillaZine discussion form, it's uncertain whether an update will be forthcoming from the author, but someone posting as 'ka2er' has published a hacked version that claims to be compatible with Firefox 1.5. I haven't tried the hacked version and can't comment on it one way or the other, but see the discussion thread at forums.mozillazine.org/viewtopic.php?t=329468 for more information.

General Purpose Extensions

Copy URL + 1.3.2 - compatible. Available from addons.mozilla.org/extensions/moreinfo.php?id=129.

ChatZilla 0.9.68.5.1 - compatible. Earlier version 0.9.68a is not compatible, though, so be sure you install the latest update. Available from addons.mozilla.org/extensions/moreinfo.php?id=16.

SnagIt Firefox Extension 1.0 - not compatible. This extension is available directly from TechSmith® at www.techsmith.com/products/snagit/firefox.asp. My guess is an update for 1.5 will be available at some point, but right now I have no information one way or the other.

11.29.2005

Firefox 1.5 is released

Amid much anticipation, Firefox® 1.5 has finally been released. The free download is available from www.mozilla.com, the new home of Firefox and Thunderbird on the Web. I resisted the temptation to install any of the 1.5 pre-release versions, so this will be my first look at 1.5. I'll be interested to find out not only what's new in the browser itself but also how well my favorite extensions work with the new release. After several public betas and three release candidates, I anticipate things will go smoothly.

11.28.2005

Update your FeedDemon 1.6 RC2

If you're running FeedDemon 1.6 RC2 release 1.6.0.11 or earlier, you should download and install release 1.6.0.12. Earlier releases of 1.6 RC2 expire on December 1, 2005. This date has been extended in 1.6.0.12. To get the latest version, use Help | Check for New Version on the FeedDemon main menu or visit www.feeddemon.com/feeddemon/beta/.

Two software acquisitions of note

The companies behind two of my favorite software utilities were recently acquired.

- On November 3rd, Microsoft acquired FolderShare from Austin, TX based ByteTaxi, Inc. (see the news release). FolderShare is a file synchronization and remote access service, one of those deceptively simple, incredibly useful, "why didn't I think of that?" kind of ideas. The press release indicates Microsoft intends to incorporate the FolderShare technology into its Windows Live initiative.

I started using FolderShare this summer, liked it a lot, blogged about it, and signed up for a year's worth of one of the paid service levels. About a week after the acquisition, FolderShare subscribers were informed by e-mail that the paid services were being discontinued, but that a free version with "many of the capabilities of the previous paid versions" would still be offered. Paying customers are receiving a pro-rated refund for the unused time remaining on their pre-paid service period. My refund already showed up on my credit card statement, so no complaints there.

So far the service is still functioning as before, although I don't stress it much so I can't say if the now-free service has limits my paid subscription did not have. In any case, I have to wonder how long the service will continue to exist in its present form. I hope it's a long time, because I've grown to rely on it and I'd hate to lose it.

- Although I only found out about it recently, anti-spam software maker Qurb, Inc. was acquired earlier this summer by Computer Associates (see the news release).

I started using Qurb two or three years ago on the recommendation of a colleague, and kept using it because in my opinion it's a best-in-class solution. So, whither Qurb now? The press release says "CA will continue to market Qurb's technology as e Trust Anti-Spam...", a product I'm not familiar with but found for sale at ca.com/consumer. I hope this doesn't mean the Qurb brand and stand-alone product are going to be phased out, but at least for now Qurb is still available under its own name from the Qurb website.

Not all change is for the better, but neither is all change for the worse. I'm hopeful both of these two products will continue to thrive under their new owners.

All trademarks, service marks, and trade names referenced herein are the property of their respective owners.

Southwest Fox 2006

Others have already blogged about this, but let me repeat the good news from Phoenix: conference organizer Bob Kocher has announced that the Southwest Fox conference is a "go" for 2006. Dates are October 19-22, details to be forthcoming. Southwest Fox 2005 was a rocking success, so mark your calendars and don't miss out on next year's event!

Excuses

I realized today that it's been a while since I posted anything here. My excuse: seasonal packet migrations, or possibly line noise from rats in the wall. If you need an excuse of your own for any reason, head on over to Eric Meyer's Excuse of the Day site (RSS feed at meyerweb.com/feeds/excuse/rss20.xml) and pick up one of your own.

10.28.2005

Bob Muglia to head Microsoft's Server and Tools business

From Microsoft PressPass: "REDMOND, Wash., Oct. 28, 2005 – Microsoft this week named longtime executive Bob Muglia senior vice president of the company’s Server and Tools business. The 17-year Microsoft veteran, who has led Microsoft’s Windows Server business since 2003, will replace Eric Rudder, who is taking on a new role working directly for Bill Gates, Microsoft’s chairman and chief software architect."

PDC05 sessions are available online

Just spotted this on Michael Swanson's blog from Monday 10/24/2005: The session content from last month's Microsoft Professional Developers Conference 2005 (PDC05) is now available online at microsoft.sitestream.com/PDC05/. You can watch the session videos online and/or download the video and slides for offline viewing. There's a huge amount of content here, but it's only going to be available for six months. The site requires Internet Explorer 5.5 or better.

Side note: At my session on Integrating RSS with Visual FoxPro Applications at Southwest Fox 2005 earlier this month, I mentioned Microsoft is working on RSS features for Vista and IE7. In the PDC05 materials I found session DAT320: Windows Vista: Building RSS Enabled Applications, which provides some insight into Microsoft's plans in this area. The session runs just over an hour and fifteen minutes and is well worth watching if you're interested in the future of RSS as Microsoft sees it.

10.19.2005

Jumlbed Txet is Esay to Read

It's been said that people can read jumbled text fairly easily when the middle letters in each word are rearranged, as long as the first and last letters of each word remain the same.

This idea gained attention not long ago from an example floating around the Internet that cited "research at Cambridge University" (acutally, it cited "rscheearch at Cmabrigde Uinervtisy".) That claim appears to be false and is refuted by Cambridge's Matt Davis in a writing posted at www.mrc-cbu.cam.ac.uk/~mattd/Cmabrigde/, in which he dissects the Internet piece and references some real research in this field. There is, however, evidently some truth to this idea, at least in English and other languages where words are similarly structured.

In any case, it's fun to play with. By way of example, here's a jumbled version of the first sentence of this blog entry:

"It's been siad that peolpe can raed jbumeld text farily esliay when the mlidde lrtetes in ecah word are raegarnerd, as lnog as the frsit and lsat lteters of ecah word reiamn the smae."

Did you have much difficulty reading that? Clearly, some jumbled words are easier to read than others. Among other things, the degree of difficulty depends on the length of the word and the extent to which its middle letters are jumbled. In the example above, I find the jumbled version of the word "rearranged" more difficult to read than some of the other, shorter words because it's longer and the letters are pretty well mixed up.

What I find interesting is that jumbles involving the trasnposition of two or even three adjacent letters are so easy to overlook. This is evidently because our brains compensate for the errors in such a way that we don't even notice them (the errors, not our brains).

This is probably one reason why we sometimes fail to see typos in our own work, which of course has implications for software developers. For example, while working in Visual FoxPro I sometimes type 'emtpy' when I mean 'empty', but I usually don't notice it.

BTW, developers using Visual FoxPro 9.0 have an advantage in this regard over developers using previous versions of VFP. The new background compilation feature in VFP 9.0 highlights incorrect syntax as you type by underlining or changing the color of the incorrect syntax. This helps catch errors right away instead of having to wait until compile time or run time. You can choose your preferred style for this feature from the Background Compile drop-down list under Tools | Options | Editor.

Just for fun, I wrote a VFP class called JumbleTron to do this kind of jumbling on any block of text. You can download it from my website at www.ita-software.com/foxpage.htm. Look for the link to JumbleTron under "Just for fun" in the downloads section. By design, the class accepts only 4K-byte blocks of text or smaller, but you can increase this if you want to.

Usage is simple: instantiate a JumbleTron object and pass some text to its GetJumbledText method. For example, copy some text to the clipboard, then in the VFP command window do the following to display the jumbled text on the screen.

ox=NEWOBJECT( "jumbleTron", "jumbleTron.prg")
?ox.GetJumbledText( _cliptext)

Or, to return the jumbled text to the clipboard:

_cliptext = ox.GetJumbledText( _cliptext)

Play around with the JumbleTron and decide for yourself how easy or difficult it is to read jumbled text. Have fun!

P.S. Outside of the deliberate examples, there are two typographical errors in this blog entry. Both are simple transpositions of two adjacent letters. Can you find them? Did they jump out at you as you were reading this, or did your brain take them in stride without notifying you?

10.12.2005

Skype and port 80 conflict with IIS

This one bit me yesterday... If you encounter "unexpected error 0x8ffe2740" when trying to start a Web site under IIS, it may be a conflict with Skype using port 80. If so, the solution, which is found on Jon Galloway's blog, is to go into Skype's options and uncheck "Use ports 80 and 443 as alternatives for incoming connections". In Skype 1.4.0.71 this is located under Tools | Options | Connection. You may have to close and restart Skype for the change to take effect.

10.01.2005

WiX has a new Web site

Rob Mensching blogs that WiX has a new home on the Web. WiX in the Windows Installer XML toolset for building MSI and MSM files from XML. The new URL is wix.sourceforge.net.

Side note: I'll be doing a presentation on using WiX with Visual FoxPro applications at the Southwest Fox conference in mid-October.

9.29.2005

SnagIt

Find out how you can use SnagIt to edit, capture, and share your screenshots Ah, the things we won't do for a free T-shirt. < s > Seriously, though, I do use it and it's a great tool. Go get your own shirt.

9.23.2005

FolderShare

For the past few weeks I've been experimenting with FolderShare™, a service that synchronizes file changes between linked computers over an Internet connection. I'm impressed, enough so that I signed up for the paid version after using the free version for only a few days.

In my software development work, I use both a desktop machine and a laptop machine. The desktop machine is at my office, while the laptop machine normally stays at home so I can continue working in the evening. Keeping the two machines in sync has always been a challenge, involving varying numbers of ZIP® disks, CDs, USB drives, and other portable media to physically transport files back and forth from one location to the other. Although that solution was workable, it was cumbersome and prone to biological memory errors (i.e., I'd sometimes forget to take a file home with me, or to bring it back to the office).

FolderShare enables you to establish a link between a folder on one machine and a corresponding folder on another machine. Once the link has been established (a very simple process), you can turn on automatic sync or on-demand sync. Automatic sync keeps the two folders in sync in the background while you work. This is the way I've been using it and I haven't noticed any effect on performance—no slow or unresponsive apps—while I work, even on the older, slower laptop machine. The process has been completely transparent.

I tested FolderShare while preparing my presentation files for the upcoming Southwest Fox conference. By placing everything I was working on for this conference in one root folder and setting it to auto-sync with the same folder on the other machine, I had automatic two-way synchronization between the two machines. Files updates, additions, and deletions on one machine were automatically reflected on the other. Anything I did during the day was ready for me to keep working on when I got home, and anything I did at home in the evening was ready and waiting for me at the office the next morning. No physical media involved. Very slick.

FolderShare setup involves installing a small (less than 1MB) program on each linked computer. Configuration takes place over a secure connection to your account on the FolderShare website. The free version limits you to two shared or synched folders, while the paid versions increase this to 100 or 250 folders depending on the plan you choose. The paid versions also enable other features, including the ability to access files in any folder on a linked machine over the Web. The FolderShare website has a chart comparing plan features. According to the chart, file transfers are encrypted and secure under all plans.

In my experience, FolderShare is simple to use and works as expected. Try it, you'll like it.

9.21.2005

Firefox 1.0.7 and IDN

According to mozillaZine, "The Mozilla Foundation previously issued a patch for Firefox 1.0.6 that protected users against the IDN link buffer overflow flaw at the expense of removing support for IDNs. Firefox 1.0.7 has a more permanent solution that does not involve disabling IDN functionality and any users who installed the patch will find that IDN support is restored when they upgrade." (emphasis mine)

My experience this morning is that if you did not apply the patch to 1.0.6 but rather set network.EnableIDN false by editing about:config manually, installing v1.0.7 does not set network.EnableIDN back to true. You'll have to do that manually.

Firefox 1.0.7 Released

With v1.5 Beta 1 already available for public download, another point release of Firefox v1.0 was not necessarily to have been expected, but recent security concerns have prompted the release of v1.0.7 today. From the mozillaZine news site: "Mozilla Firefox 1.0.7, a security and stability update to the flagship Mozilla browser, is now available for download. Fixes are included for the international domain name (IDN) link buffer overflow vulnerability and the Linux command line URL parsing flaw. There are also other security and stability changes..." The release notes are here.

9.19.2005

Farewell Drew Speedie

Words cannot begin to express the shock and sadness I felt upon learning of the death of Drew Speedie and his young son Brent over the weekend. The circumstances of this tragic accident make it even more difficult to accept. Drew was one of the most likeable and talented developers I've every had the pleasure to know. He's been a 'guru' in the FoxPro community for as long as I can remember, and his innumerable contributions have helped me and so many other people to learn and become better at our craft. My sincerest condolences to his wife and extended family. Drew, we'll miss you, old friend.

9.07.2005

Maynard G. Krebs (off topic)

Although perhaps best remembered by TV fans as Gilligan, before that Bob Denver, who died last Friday at age 70, was beatnik Maynard G. Krebs on the Dobie Gillis show. One very cool cat.

8.30.2005

Free Opera license

As part of their 10th anniversary celebration, the folks at Opera Software are giving away free registration codes for the Opera browser. If you're a Web developer and want to be able to test in Opera — or if you simply want to try it out — this is a good opportunity to get what I assume is an ad-free version of their popular browser.

Jon Galloway blogs that this offer is good only until 12 AM PDT August 31, so if you're interested hurry on over to the Opera Party page or go directly to the free registration page.

8.25.2005

ISTool 5.1.5

If you use Inno Setup you owe it to yourself to also use the companion tool ISTool, which provides a phenomenally useful GUI interface to your Inno Setup scripts. ISTool v5.1.5 was just released, keeping up its tradition of staying in sync with the latest version of Inno Setup itself.

8.18.2005

Inno Setup 5.1.5 Released

Inno Setup version 5.1.5 has been released and is available for download at jrsoftware.org/isdl.php. Read what's new in this latest point release at jrsoftware.org/files/is5-whatsnew.htm.

It's been nearly three months since v5.1.4 came out, which was the first non-beta version to support the installation of 64-bit applications on 64-bit versions of Windows. This product is very stable and has been for quite some time, but it continues to receive tweaks and enhancements.

8.12.2005

Deja View, or Why Too Many RSS Feeds May Not Be A Good Thing

In the beginning, there was RSS. Along came a good feed reader, and my daily work-related surfing habits changed dramatically: 30-60 minutes every day of browsing individual websites to keep up with what's happening were replaced by 5-10 minutes of scanning headlines and occasionally reading a complete story.

Time was saved. Life was good.

But that was then, and this is now. It's no exaggeration to say the number of RSS feeds out there has grown exponentially in 2005. This is largely due to two factors: blogs, and publishers adding RSS feeds to websites that didn't have them before.

Naturally, as the number of feeds proliferated, so did the population of my Favorite Feeds folder. One year ago, there were probably 10-15 feeds I looked at every day. Today, there are easily over a hundred. My 5-10 minutes of scanning headlines has ballooned to 20-30 minutes of reading feed updates. Twice a day. And that's just to stay current: never mind the forays into new and interesting feeds that crop up all the time.

Information overload is very real these days.

What makes it worse, I'm seeing a growing amount of overlap among feeds. For one thing, many news feeds pick up the same story. Then somebody who sees that new item blogs about it, and somebody else sees that blog and posts a reference to it. And so on. I find myself seeing the same material, in one way or another, more than once on a regular basis.

Call it Deja View: the feeling of "haven't I seen this someplace before?"

Is this happening to you, too?

At least one solution is obvious, albeit painful: cut back on the number of feeds I'm reading every day. It's not an easy decision to make, but it's probably inevitable. The risk of missing something important has to be weighed against the benefit of gaining back some valuable time.

I have no idea which feeds I'll stop reading regularly. But I'm going to have to start somewhere. Tempus fugit.

8.10.2005

Amyuni PDF Converter 2.50d bug fix

Among other issues it addresses, Amyuni PDF Converter 2.50d includes a fix for a bug that sometimes caused Adobe® Reader® 7.0 to encounter errors when attempting to render images in a PDF file created by an earlier version of the Amyuni PDF Converter. In my experience this problem showed up frequently in Web pages I'd captured to PDF. According to Amyuni's release notes for version 2.50d, the issue is specific to Acrobat® version 7.

7.20.2005

Firefox 1.0.6 is released

It's not my intention to blog every single release of Firefox or any other piece of software, but because I noted the release of Firefox 1.0.5 just a week ago I felt obliged to point out the release of 1.0.6 today. While Firefox 1.0.5 implemented several security fixes, 1.0.6 is characterized in the release notes as "stability update", to wit: "Restore[s] API compatibility for extensions and web applications that did not work in Firefox 1.0.5." In other words, we broke something and now we've fixed it. Maybe this should've been caught in the pre-release testing of 1.0.5, but a fix within a week is still pretty good. Download from www.mozilla.org.

7.15.2005

Atom 1.0

From ongoing, via kottke.org remainders: The Atom feed specification is about to go to 1.0. The link to the comparison of RSS 2.0 and Atom 1.0 is worth following if you're interested in the differences, or read the actual Internet-Draft document for all the details.

7.13.2005

Windows Installer Team Blog

"As part of the ongoing MSDN Communities effort, the Windows Installer Team is pleased to announce the creation of the Windows Installer Team Blog." Find it at blogs.msdn.com/Windows_Installer_Team/. The Windows Installer Team has already been active in MSDN Chats for quite some time. I'm glad to see the new blog, too. Subscribed.

7.12.2005

Firefox 1.0.5 is released

Firefox 1.0.5 of has been released and is available for download here. The release notes indicate this is primarily a security update. The list of issues addressed by this release is here.

7.10.2005

NewsGator acquires FeedDemon Redux

If you've been reading this blog for a while, you know that my favorite RSS feed reader is Nick Bradbury's FeedDemon. In fact, I liked it so much I awarded it my first Insanely Great Software recognition back in February.

You also know that my initial reaction to the news that Nick had sold his company to NewsGator a couple of months ago was not very positive. That reaction was based largely on my concern that FeedDemon would lose its stand-alone capabilities and become subscription software used to sell NewsGator's services.

Last Wednesday, July 6th, those concerns were realized when Nick announced on his blog that yes, indeed, FeedDemon would become subscription-based software. A careful reading of the related blog post by NewsGator CTO and founder Greg Reinacker, in which he explains the rationale behind the software-by-subscription model, revealed that not only would FeedDemon become subsription software but it would effectively cease working -- you wouldn't be able to retrieve any new content -- if you allowed your subscription to expire. To me, it looked like the end of FeedDemon as we know it.

But, fortunately, that's not the end of the story. One reason I've always been a fan of Nick's software, besides its great design and functionality, is his responsiveness to customers' ideas and concerns.

And the good news is, that hasn't changed.

In his July 6th announcment, Nick acknowledged the decision to switch FeedDemon to a subscription model might cause some concerns, and he asked for feedback from users. Predictably, he got it, and, not surprisingly, the comments were mostly opposed.

Nick and NewsGator really did listen.

On July 8th, not two days after the original announcement, Nick blogged that based on the comments they'd received, the decision had been reconsidered and reversed.

The result is that FeedDemon will be able to take advantage of NewsGator's subscription services, such as server-based synchronization, as long as you continue to pay for the service, but FeedDemon won't stop working if you decide to let the subscription lapse.

This is good news for both FeedDemon and its users. I'm now looking forward to trying out the new services, knowing I still have choice down the road. Kudos to both Nick and NewsGator for getting it right.

RSS Feeds for Microsoft KB Articles

Microsoft is now providing RSS feeds for its Knowledge Base (KB) articles. The feeds are organized by product, making it easy to subscribe only to those of interest. Visual FoxPro developers will find individual feeds for VFP 7.0, VFP 8.0, and VFP 9.0, and of course there are also individual feeds for the Visual Studio languages and tools (both .NET and 6.0), SQL Server, Office, and whole lot more. You can start with the introductory page at support.microsoft.com/gp/rsshelp or go directly to the full index of feeds at support.microsoft.com/selectindex/?target=rss.

7.08.2005

Free ASP.NET Training from Microsoft®

Spotted on the MSDN home page: For a limited time, Microsoft is offering for free the online training course entitled "Developing Microsoft® ASP.NET Web Applications Using Visual Studio® .NET". Information and registration at msdn.microsoft.com/asp.net/learn/asptraining/.

6.21.2005

Ken Levy's July letter is up

Ken Levy's July Letter from the Editor is up on MSDN. Among other things, Ken offers a few additional comments on Sedna (announced earlier this month in the Visual FoxPro Roadmap) and includes a link to the slides from the Microsoft keynote at DevCon.

6.20.2005

New FeedBurner Feed

Today I set up a FeedBurner feed for this blog. If you use a feed reader that doesn't support the Atom feed supplied by Blogger, you can now subscribe to the RSS feed via FeedBurner. If you're coming at this blog from its index page, you'll notice there are now two separate feed links.

Up until now I have been reluctant to sign up with FeedBurner, out of a vague sense I might be entering into a commitment I didn't fully understand and might not want to continue. But recently, FeedBurner announced that it now offers a graceful way out if you decide to stop using their service, and as a result, I'm much more comfortable with it. A fellow named Tom Coates posted a good analysis of this new FeedBurner service, which I found helpful. Judging from Tom's post and comments posted in response to the announcement on the FeedBurner blog, others have shared similar concerns and are welcoming this new service, too.

6.07.2005

Behavior Changes in VFP 9.0: _TALLY

One of the SQL data engine changes introduced in VFP 9.0 affects the value of _TALLY returned after certain kinds of SQL SELECT statements. This change is not documented in the "Changes in Functionality for the Current Release" topic in the VFP 9.0 Help file, and may therefore have escaped the attention of some VFP developers. It is documented under the "SET ENGINEBEHAVIOR Command" topic, however.

The change is this: In previous versions of VFP, _TALLY returns zero when an aggregate function such as SUM() is used and there are no matching records, while in VFP 9.0, when an aggregate function such as SUM() is used without a GROUP BY clause and there are no matching records, _TALLY returns 1 and the result set contains one record with a null value for the aggregate function.

This change breaks code that tests the value of _TALLY to determine if any matching records were found.

To illustrate this, create a table of ten records with integer values and an ID of "foo".

CREATE TABLE myTable ( cID c(10), nValue I)
LOCAL lni
FOR lni = 1 TO 10
INSERT INTO myTable ( cID, nValue) VALUES ( "foo", lni)
ENDFOR


Now perform a SELECT statement to SUM() the nValue of all records with an cID of "bar". Of course, there are no matching records. Under VFP 7.0 and VFP 8.0, the test for _tally = 0 returns true so Procedure A is performed.

SET ENGINEBEHAVIOR 70
SELECT SUM( nValue) ;
FROM myTable ;
WHERE cID = "bar" ;
INTO CURSOR csrBehavior70
IF _tally = 0 && true
DO Procedure_A && Procedure_A is performed
ELSE
DO Procedure_B
ENDIF

SET ENGINEBEHAVIOR 80
SELECT SUM( nValue) ;
FROM myTable ;
WHERE cID = "bar" ;
INTO CURSOR csrBehavior80
IF _tally = 0 && true
DO Procedure_A && Procedure_A is performed
ELSE
DO Procedure_B
ENDIF


Now perform the same test in VFP 9.0. With no other changes to the code, the test for _tally = 0 returns false so Procedure B is performed instead of Procedure A.

SET ENGINEBEHAVIOR 90
SELECT SUM( nValue) ;
FROM myTable ;
WHERE cID = "bar" ;
INTO CURSOR csrBehavior90
IF _tally = 0 && false
DO Procedure_A
ELSE
DO Procedure_B && Procedure_B is performed
ENDIF


The null value of the aggregate function can be seen in the one record in the result set:
SELECT csrBehavior90
?csrBehavior90.sum_nValue && .NULL.


Although the best solution is probably to stop relying on _tally altogether, for this as well as for other reasons, one workaround in VFP 9.0 is to include a GROUP BY clause in the SELECT statement, which restores the result obtained in VFP 7.0 and 8.0.

SET ENGINEBEHAVIOR 90
SELECT cID, SUM( nValue) ;
FROM myTable ;
WHERE cID = "bar" ;
INTO CURSOR csrBehavior90 ;
GROUP BY cID
IF _tally = 0 && true
DO Procedure_A && Procedure_A is performed
ELSE
DO Procedure_B
ENDIF


The changes to the SQL engine implemented by the VFP team in versions 8.0 and 9.0 have helped bring VFP's SQL implementation closer in line with SQL standards. This is a good thing, but watch out for changes like this one that might break existing code.

6.03.2005

David Stevenson's Talking Fox

The number of VFP developers who are blogging continues to grow as well-known VFP developer and FoxTalk 2.0 editor David Stevenson launches his new blog called Talking Fox. Welcome aboard, Dave!

InstallShield Express News

Macrovision has announced the end of support for several older versions of InstallShield, effective November 1, 2005. Included in the list is InstallShield Express versions 2.0-3.x. Support will continue for InstallShield Express 5.0 and later. See the Macrovision End-of-Life Policy for the official announcement.

The InstallShield Express Limited Edition for Visual FoxPro that ships with VFP 9.0 is based on InstallShield Express version 5.0 and should therefore still be supported. The InstallShield Express Limited Edition for Visual FoxPro that ships with VFP 8.0 is based on InstallShield Express version 3.54, for which support is apparently ending.

The current version of InstallShield Express is version X (as in 'ten'). The InstallShield Premier and Professional editions are already at version 11. In an InstallShield webinar yesterday, InstallShield Product Manager Bob Corrigan announced that Macrovision will be releasing version 11 of the Express product in "mid-2005".

6.02.2005

Beyond Compare 2.3.1 Released

Scooter Software today released Beyond Compare version 2.3.1. This point update fixes a startup issue under Windows 95, which surfaced in the recently released version 2.3.0, along with a few other miscellaneous fixes and changes. See the change log for a complete list.

It doesn't affect me personally, but kudos to the guys at Scooter Software for still caring about Windows 95. Hard to believe anybody is still running that old horse any more, although I'm sure I'd be surprised to know how many actually still are.

5.31.2005

Insanely Great Software: Beyond Compare

There are a lot of good utilities out there, but every once in a while one comes along that stands out above the rest. Such programs provide a unique combination of usefulness, reliability, quality, value, and a certain "wow" factor that, in my opinion, earns them the title of Insanely Great Software. This is certainly true of one of my long-time favorite utilities, Beyond Compare® from Scooter Software.

At its core, Beyond Compare is a file and folder comparison and synchronization utility. As a developer, I rely on this kind of utility many times a day to sync my backup folders with their corresponding live folders, to update my deployment folders with the files from the latest build, to compare 'before' and 'after' results during testing, and a variety of other such tasks. Beyond Compare quickly became my favorite for its intuitive interface, ease of use, and great features.

Folder Comparison and Synchronization

Beyond Compare's user interface consists of a pair of side-by-side treeviews showing folders, sub-folders and files. The display, which refreshes rapidly even for long lists, drills down the folder hierarchy from whatever drive or folder you have selected as the root on each side. The intelligent use of color makes it easy to quickly spot matches, mismatches, and orphans between the two sides.

You can choose to view all files or only files that are different on one side than on the other. If you choose to view only files that are different, there are several choices involving various combinations of mismatches, orphans, and files newer on one side than on the other. Toolbar buttons enable you to quickly select the desired view and to expand or collapse all the sub-folders in the view, among other things. As you would expect, you can expand and collapse individual folders by double-clicking them in the treeview.

Other buttons on the Beyond Compare toolbar enable you to easily synchronize two folders by copying newer and unmatched files from one side to the other. Synchronization can be done either en masse or for individually selected folders and/or files.

Zip and FTP

Beyond Compare treats Zip files as folders, enabling comparison and synchronization between a folder and a Zip archive, or even between two Zip archives, as though they were all actual folders. It can also connect to an FTP site on one or both sides of the comparison, thereby extending its functionality beyond the local machine or network.

Sessions and Explorer Integration

If you find yourself frequently comparing the same pairs of folders, Beyond Compare lets you save each set as a named session, which you can then open from a drop-down list the next time you need it. Integration with Windows Explorer (optional, but recommended IMO) enables you to select two folders in Explorer and launch Beyond Compare from the right-click menu. Although I have several dozen saved sessions I use all the time, I still find the integration with Explorer extremely useful for ad hoc comparisons and synchronizations.

File Compare and Editing

Beyond its core functionality, one of Beyond Compare's most useful features IMO is the built-in file comparison and editing capability. With any two files selected, you can launch a file comparison with a just click or two. This gives you a side-by-side, line-by-line comparison of the two files in a separate window, again using color to highlight the differences. The basic file comparison is designed for text files, which of course also works great for Visual FoxPro® program (PRG) files, INI files, header (.h) files, and the like. Plug-ins are available for viewing and comparing other file types, including a Hex viewer for binary files and an image file viewer for popular graphics file types.

The file comparison window has its own toolbar, which includes one-click buttons to immediately jump to the next or previous difference without scrolling. A visual representation of the file runs down the left-hand side of the file comparison window and uses bands of color to illustrate where areas of difference occur. I find this very intuitive and especially useful when working with large files that have only a few differences. The file comparison utility also enables you to edit the files in situ; you can edit individual lines on either side and/or copy a line or a group of selected lines from one side to the other.

Licensing

Another plus is that Beyond Compare can be licensed to the person, not just the machine. The license states that "One registered copy of the Software may either be used by a single person who uses the software personally on one or more computers, or installed on a single computer used by multiple people, but not both." As an independent developer who works primarily on two machines (a desktop PC and a laptop PC) not shared with anyone else, I value this kind of license agreement a lot.

Automation

Beyond Compare can also be automated -- that is, run without a user interface -- via scripting. Rick Schummer of White Light Computing is currently doing some interesting work in this area. Look for his upcoming Class Compare utility for Visual FoxPro, which takes advantage of Beyond Compare's scripting capability to implement some very cool reporting.

When you add it all up, Beyond Compare is a really great piece of software. Go download the latest version and see for yourself.

Beyond Compare is a registered trademark of Scooter Software, Inc. Visual FoxPro is a registered trademark of Microsoft Corp.

['Insanely Great Software' is an occasional series about some of my favorite programs and utilities.]

Inno Setup 5.1.4 Released

Inno Setup 5.1.4 has just been released and can be downloaded here. The major enhancement in this version is support for installing 64-bit Windows® applications. This version also includes other miscellaneous changes and additions since the previous version 5.0.8. See the Inno Setup 5 Revision History for a complete list.

5.28.2005

BeyondCompare 2.3 Released

Scooter Software has released version 2.3 of Beyond Compare, one of my all-time favorite utilities. After spending a couple of months in beta, this release has been widely anticipated. Judging by the list of changes and enhancements, which runs two printed pages, there's a lot to look forward to. Beyond Compare version 2.3 is available for download here.

Beyond Compare will be featured in the next installment of my Insanely Great Software series here on this blog. Stay tuned.

5.25.2005

What time is it?

I registered for an online 'webinar' today. The confirmation e-mail informed me the event would take place on the specified date at 15:00 BST, 16:00 CEST. Not being sure how to translate this to U.S. time zones, I had to do a search on those terms to find out what they meant. In the process I found a good site at www.computerhope.com/jargon/t/time.htm with a list of several time zone abbreviations and their relationship to GMT. BST in this case is British Summer Time, and CEST is Central Europe Summer Time.

5.17.2005

Newsgator acquires FeedDemon

Straight from the source: Nick Bradbury of Bradbury Software reports on his blog this morning that Newsgator has acquired FeedDemon, Nick's outstanding and highly popular feed reader (see my recent blog), along with Nick's other excellent product, the TopStyle CSS and HTML editor. Given that Nick himself is going to work for Newsgator, the headline should probably read "Newsgator acquires Bradbury Software."

I don't blame Nick in the least for selling out while the market was hot, but I'm not optimistic about this. Main reason? Two words: subscription model. More later after I've had a chance to cool down. Right now I'm not feeling too good about this.

5.16.2005

Internet Explorer 7 has tabs

From Microsoft's IEBlog: "Yes, IE7 has tabs." Good news, and about time. Tabs make inifinite sense when you want to work with multiple Web pages open at the same time. I hope the tabs are on top of the main content and not at the bottom, or at least that they're moveable to suit individual preferences. I also hope IE7 will implement Ctrl+Tab to move from one tab to the next, Ctrl+PgUp and Ctrl+PgDn to move back and forth among tabs, and Ctrl+T to open a new tab from the keyboard. Keyboard shortcuts sometimes get short shrift; those three ought to be standards, IMO.

5.14.2005

Three Cool Firefox Extensions for Developers

If you design Web pages and write your own HTML/XHTML and CSS, or even if you're just interested in seeing how your favorite Web pages are put together, you'll probably find these tools as useful as I do.

Web Developer Extension
Chris Pederick's Web Developer Extension provides a whole range of useful little tools, many of them focused on helping you work with CSS. Among them is the ability to selectively disable CSS styles -- all styles, embedded styles, inline styles, linked styles, or even individual style sheets -- making it easy to see (and debug) the effect of each style. You can even interactively edit CSS styles and see the effect of your changes immediately, even on public pages. Other groups of tools in this extension help you work with forms and images, outline selected elements on the page, view information about the page, perform various validations, and more. You can find Web Developer Extension at chrispederick.com/work/firefox/webdeveloper/.

View Cookies
This nifty little extension, by Edwin Martin, adds a tab to the Firefox Page Info dialog on which you can view the name, value, domain, path, and scope (duration) of the cookies for any page you're viewing. Very useful when developing and debugging cookie-based pages. View Cookies is available for download from addons.mozilla.org/extensions/moreinfo.php?id=315.

Aardvark
When turned on, Aardvark outlines each page element as you pass over it with your mouse, showing you the associated element type such as div, p, td, h3, etc., along with its CSS class or ID info, if any. A set of keyboard shortcuts enable you to interact with the selected element in various ways. From Karmatics, Inc. at www.karmatics.com/aardvark/.

Others
There are of course many other Firefox extensions, both for developers and for other uses, too. You can find an alphabetical list on mozilla.org at addons.mozilla.org/extensions/?application=firefox. Two that I'll be checking out soon include View Formatted Source and View Rendered Source. Look for them near the bottom of the Developer Tools list.

5.13.2005

Windows Installer 3.1 Redistributable (v2) Now Available

The Windows Installer 3.1 Redistributable is back as 3.1 (v2). This update fixes the problem described in KB #898628, Windows Installer fails silently when trying to update a file protected by Windows File Protection. The release notes for 3.1 (v2) are here, and the download link is here.

5.12.2005

Windows Installer 3.1 Redistributable Temporarily Withdrawn

As reported last week by Stefan Krueger of InstallSite.org, Microsoft has temporarily withdrawn the Windows Installer 3.1 Redistributable due to issues discussed in knowledge base article #898628. The original post with a bit of follow-up discussion is here.

Firefox 1.0.4 now available

Firefox 1.0.4 is now available for download. This update fixes three recently publicized security issues. More information is available in today's mozillaZine article.

5.09.2005

Firefox Security Advisory

Mozilla.org has posted a security advisory for two "potentially critical" vulnerabilities in its Firefox Web browser. The advisory suggests users temporarily disable JavaScript until a fix is published.

4.13.2005

Not new, but still great

Going through CDs and listened to an old favorite this afternoon. Santana's Supernatural is not new but it's still great. This is probably my favorite Santana album since the original, which by the way I still have on LP. (Yeah, I know... what the heck is an LP??) This guy is amazing: even after 35-plus years, still high-energy and cranking out some of the cleanest and most compelling guitar work around. Made my day.

Windows Installer 3.1 Redistributable Now Available

The redistributable for Windows Installer version 3.1 is now available. It is being released through this month's Windows Update service and can also be downloaded from here. KB article 893803 explains what's new. Windows Server 2003 SP1 already contains Windows Installer 3.1 and therefore does not need this update.

4.12.2005

New Visual FoxPro Section on MSDN Forums

In my 4.8.2005 blog about Microsoft's new MSDN Forums, I noted there was no section for Visual FoxPro. I commented that I didn't see this as a cause for concern, but that it would nonetheless be a plus to see VFP in the mix there. Well, this morning I was pleased to discover that a Visual FoxPro forum has in fact now been added. Alex Feldstein noticed this first and blogged about it yesterday evening - thanks for pointing it out, Alex.

It remains to be seen how much activity this site will attract, but whether it's a lot or a little it's still gratifying to see VFP have an 'official' presence among the other, mainly .NET-related sections of the MSDN forums. For my part, I'll certainly continue on the Universal Thread, the FoxPro Wiki, and the other VFP sites I've used, contributed to, and relied on for years, but I'll be dropping in on the MSDN site from time to time, too.

Blog Stylesheet Revised

This morning I revised the stylesheet for my blog. I've always felt the original style was a tad on the large side, and I finally got around to changing it. I've tightened things up a bit and reduced the size of most elements.

The new style's been applied to the index page, but the archives are still the older style (for now, anyway). I think I did all this in such a way that the old stuff won't hit your news aggregators again, but if it does, my apologies.

If the new style doesn't look good in your particular browser, please post a comment and let me know.

4.08.2005

MSDN Forums Beta Now Available

Alex Barnett blogs that MSDN Forums Beta is now available. Check it out at forums.microsoft.com/msdn/. It's organized around .NET, with sections for .NET Development, Visual Studio in general, individual Visual Studio languages, and others. If you do .NET development, this forum promises to become a valuable resource.

No, there is no section for Visual FoxPro. But then again, the VFP community has been setting the standard for community-based peer-to-peer support forums for a long time. With the rich set of community resources already available to VFP developers, the absence of a VFP section here -- although it would be welcome for the additional visibility and credibility it might provide -- does not place us at a disadvantage.

4.05.2005

Google Local Adds Satellite Imagery

Google has added satellite imagery to its Google Local service. Google Local, which I blogged about on March 16th, is a city and state-specific search with a movable map display alongside the results. With the addition of satellite imagery you can now view a geographic image of the search location, too. Imagery resolution depends on location, with the major metropolitan areas having the highest resolution right now. Some of it is spectacularly detailed.

Try it out for yourself by zooming in on Google headquarters in Mountain View, California.

  1. Point your browser to www.google.com and click the Local link on top of the search box.

  2. In the What box type Google, and in the Where box type Mountain View, CA. Then click the Google Search button.

  3. In the list of results, result A should be Google. Click that link.

  4. Under the small map, click View Larger Map.

  5. You should now be looking at a larger map with Google's location marked and identified near the middle. Click the Satellite link in the upper right-hand corner.

  6. You should now be looking at satellite imagery for the area under the map. Use the navigation and zoom tools at the upper left of the map to move around and drill down to the desired resolution.


For even more cool imagery, take a spin with Google's Keyhole product. It features the ability to 'fly over' an area and tilt the view so you can see things from different angles. With imagery resolutions of 1 foot in many places and even better in others, it's awesome.