Inno Setup 5.1.10

Inno Setup 5.1.10 has been released. Download from here, see what's new here.




Managing Passwords

I use a password manager utility to store all my usernames and passwords in an encrypted database. From time to time I print them out and deposit the list in a safe deposit box as a backup. Each time I do this, I make a mental note of how many entries I'm keeping track of.

When I started using this password manager about five years ago, the database contained 59 entries. Today it has 254.

To quote a favorite line from a favorite movie, "That's a lot of nuts!"

Admittedly, there's some dead wood in there, and a few are entries I maintain for clients to help them out when their memory fails, but I'd guess easily 80% of what's in there represents my own active accounts of one type or another.

What's amazing is how many of the dumb things I can remember without looking them up. Talk about brain clutter...

No real point to this, just the observation that the list has gotten that large and the speculation that most of us -- software developers, anyway -- probably have to keep track of an equal or greater number. What about you: how many usernames and passwords do you need to keep track of?



Article on Potential Windows Installer Issues under Windows Vista

Windows Installer MVP Stefan Krueger has published 7 Reasons Why your Installations May Fail on Windows Vista (And How You Can Fix Them). A short and useful read with the focus on Windows Installer technology, Krueger discusses the issues and offers solutions to some potential problems you may encounter with MSI deployments under Windows Vista. The article is available on the Macrovision website at www.macrovision.com/company/news/newsletter/tips/is_vista.shtml.

Krueger also runs InstallSite.org, a forum for installation developers. Over the years I've found this site to be full of good resources, particularly relating to Windows Installer.

Tags: , , , ,



SnagIt update fixes conflict with Logitech mouse software

The latest SnagIt update v8.2.1 fixes a show-stopper issue earlier versions had with some Logitech mouse software. I ran into this problem yesterday after installing the software for a new Logitech® VX Revolution™ cordless laser mouse on my laptop PC. When hovered over the SnagIt v8.2 window, the mouse icon flashed rapidly—it appeared to be alternating between the normal arrow icon and the wait/busy hourglass icon—and clicking anything in the SnagIt window had no effect.

In my experience this problem did not occur with older Logitech mouse software: I've been using a Logitech MX 1000 cordless laser mouse on my desktop machine for a long time and there were no conflicts with SnagIt v8.2 or earlier. In any case, the v8.2.1 update resolved the problem with the new Logitech mouse software on my laptop PC.

BTW, the VX Revolution cordless laser mouse is without doubt the best notebook mouse I've ever used, and ditto for the MX 1000 cordless laser desktop mouse. When my desktop mouse bites the dust I'm sure I'll be looking to replace it with the latest MX model from Logitech.

Tags: , ,



Cool tool for presenters

Mark Russinovich of Sysinternals (which was acquired by Microsoft last summer) has written and released ZoomIt, a free tool for presenters. ZoomIt provides a screen magnifier, a drawing pen and a break timer, each available via its own hotkey combination. The pen can be used with or without the magnifier, and the break timer remains active even if you Alt+Tab to a different task. IMO a highlighter would be more useful than a pen, and the timer evidently resets itself if you use one of the other two tools, otherwise it could be used as a session timer for shorter presentations that don't include breaks. Still, it's one more neat little tool you can use to help make your presentations more effective. Information and and a download link available at www.microsoft.com/technet/sysinternals/utilities/zoomit.mspx. And an acknowledgement to fullasagoog.com for picking up the post where I first learned about ZoomIt this evening.

Tags: , ,




EMC Corporation has announced plans to take 10% of VMWare public via an IPO "sometime this summer." The announcement from VMware President Diane Greene is here, and the press release is here.

Tags: ,



What's in a name?

A recent thread on foxforum.com pointed out an interesting question about the syntax of the Visual FoxPro INSERT - SQL command. The VFP Help file gives the syntax for this command as
INSERT INTO dbf_name [(FieldName1 [, FieldName2, ...])]
VALUES (eExpression1 [, eExpression2, ...])
where "dbf_name" is defined as "the name of the table for appending a new record".

The question raised (and answered) in the forum thread was, can you use an alias for "dbf_name" in an INSERT statement? The answer of course is yes, and most of us probably do so without even thinking about it.

For example, most of us would be perfectly comfortable writing code like this
  CREATE TABLE table1 ( cField1 C(10))
INSERT INTO table1 ( cField1) VALUES ( "Bob")
which creates a table named table1.dbf and adds Bob to it, as expected. But there's a hidden question lurking here: in the INSERT statement, is "table1" the name of a table or the alias of a work area?

The answer is, it depends. If there is an open work area whose alias is table1, as in the example above, then VFP inserts the record into the table that's open in that work area (which may or may not be table1.dbf, as we'll see in a minute). If there is no open work whose alias is table1, then VFP looks for a table named table1.dbf either already open under another alias, or not open but existing on disk. If it finds table1.dbf, VFP inserts the record into that table.

When a work area's alias is the same as the name of the table that's open in that work area, there's no ambiguity. But if the alias is different than the table name, things may not work as expected. Therefore it's important to recognize when we're using an alias and when we're using a table name.

Consider the following:
  CREATE TABLE table1 ( cField1 C(10))
CREATE TABLE table2 ( cField1 C(10))
USE table1 IN 0 ALIAS table2
USE table2 IN 0 ALIAS table1
Note that table1.dbf is now open in work area 1 using alias table2, and table2.dbf is now open in work area 2 using alias table1, like this:
--------  -------  ----------
-------- ------- ----------
1 table2 table1.dbf
2 table1 table2.dbf
-------- ------- ----------
So now if we write
  INSERT INTO table1 ( cField1) VALUES ( "Bob")
then the question is, where's Bob? In table1.dbf or in table2.dbf?

The answer is, Bob's in table2.dbf. The INSERT statement can be read as "insert a record into the table that's open in the work area whose alias is table1". The table that's open in that work area is table2.dbf, so that's where Bob goes.

Similarly, if we follow up with
  INSERT INTO table2 ( cField1) VALUES ( "Carol")
then Carol ends up in table1.dbf.

To avoid confusion, we can tell VFP we're specifying a table name instead of an alias by including the file name extension.
  INSERT INTO table1.dbf ( cField1) VALUES ( "Ted")
INSERT INTO table2.dbf ( cField1) VALUES ( "Alice")
This is unambiguous regardless of any aliases currently in use, so Ted ends up in table1.dbf with Carol, and Alice goes in table2.dbf with Bob. (Which is sort of what happens in the movie, I think. Either that, or all four of them ended up in table3. It's been a long time since I saw that movie...)

It may be helpful to remember that an alias refers to a work area, not to a specific table. In any case, the point is it's important to know when "dbf_name" is an alias and when it's a table name in a VFP INSERT statement.