Sunday, October 28, 2012

Microsoft Access Inaccessible

I recently copied a Microsoft Access data base file from my Windows XP/Access 2003 desktop pc to my Windows 7/Access 2010 laptop.

My first attempt to open the Access file failed miserably. I encountered the following error message:
Undefined function 'Date' in expression.
I had set my data file to automatically open a form with several underlying fields that do in fact draw upon Access's standard Date() function. I was thoroughly puzzled why such a basic function that had worked for years in Access 2003 and prior versions now failed in Access 2010.

I googled the problem and stumbled upon a variety of proposed solutions with the following mixed results.

1. Switch to Now() function

I originally had two underlying queries in which the Date() function occurred a total of five times. I changed all five occurrences to Now() instead of Date().

Voilà! The file now opened without a hitch, and the computations appeared to be correct. However, this "solution" left me unfulfilled. It was tantamount to sweeping the problem under the rug because it begged the fundamental question: why does the basic — and in this case, more appropriate — Date() function fail to work in the first place?

2. Copy elements to new database

Several contributors posting on various blog sites recommended creating an entirely new database in Access 2010 and then copying and pasting all elements from the old defective file to the new one. Based on my later findings, I came to understand how this might work. However, I did not personally try that approach because I simply had too many tables, queries, forms, reports, macros, and modules to make it practical to copy so many objects one by one.

3. Decompile/recompile

Several other writers recommended this process to fix the Visual Basic for Access (VBA) code's compiled state. Decompiling discards all the old VBA compilations, and leaves just your VBA source code. You'll need to then recompile again to return to a compiled state.

After decompiling/recompiling, you can also invoke a separate Compact and Repair process to compress the data tables. That additional process reportedly has no affect on the VBA code itself but might significantly reduce the size of your database.

Here are the steps to decompile and recompile:
  • In the "Windows | Start | Run" command line, type the expression "msaccess.exe /decompile"
    You might have to type the full path name to Access instead of just masccess.exe. For Access 2010, that would become
    C:\Program Files\Microsoft Office\Office14\MSAccess.exe /decompile
  • You could also create a shortcut with the same command line for repeated future use.
  • From the resulting Access window, open the database you want to recompile; allow trusted authority for Access 2003 or later.

    Important note: If you have any startup code in your database, you should hold down the shift key to bypass the startup code execution.
  • Select the "Database Tools | Visual Basic" menus.
  • In the resulting "Visual Basic for Applications" window, click the "Debug | Compile..." menus.
  • You may then click the "File | Save" menu options to save your work.
(While you are at it, you might want to re-open the database and compact it. The location of the Compact command varies by Access version. In Access 2010, simply select the "Database Tools" tab. The "Compact and Repair Database" button is the first button on the far left.)

If it were not for bad luck, I would have no luck at all. I could not even do the decompile! I created the prescribed shortcut successfully, but when I attempted to use it to open the database in question, I encountered the following error:
Your Microsoft Access database or project contains a missing or broken reference to the file 'msado21.tlb' version 2.1.

To ensure that your database or project works properly, you must fix this reference.
The compile/recompile approach failed in the short term, but the error message provided the clue that ultimately yielded the effective solution.

4. Fix Library References

I found at least two ways to approach fixing library references: (1) editing the original file on my old XP/Access 2003 computer before copying to the file to my newer Win 7/Access 2010 laptop and (2) editing the file directly on the the Win 7/Access 2010 machine after copying the file from the older machine with the older version of Access.

a. Edit file before transfer

After I opened the original file on my XP/Access 2003 desktop, here are the steps I followed:
  • Right-click on the open area in any one of the object types (tables, queries, forms, reports, pages, macros, or modules; it doesn't matter which)
  • In the resulting menu, click the "Visual Basic Editor" menu option; it should be the last entry
  • In the resulting window entitled "Microsoft Visual Basic," click the "Tools | References" menus
  • Deselect (uncheck) the "Microsoft ActiveX Data Objects 2.1 Library" entry (file 'msado21.tlb' cited by the error message from Step 3 above)
  • Click the "OK" button to save your work
  • Exit Access
I then copied the edited database file to Windows 7/Access 2010. Lo and behold: it worked just fine! The problem was clearly an invalid library reference to an ActiveX library not present on the Win 7/Access 2010 computer.

Just for grins and giggles, I then went through the prescribed mechanics of decompiling/recompiling my database, but that was a hollow exercise at best. The decompile/recompile was superfluous, of course, because the problem had already been resolved by deleting the faulty "References" entry. In fact, I had to correct the reference problem *before* I could even execute the decompile/recompile. There is a self-fulfilling prophecy if there ever was one.

b. Edit file after transfer

Upon opening the file, I clicked my way past the "Undefined function 'Date' in expression" error and then clicked the "Stop All Macros" button. To access (pun intended) the Reference library in Access 2010, perform the following steps:
  • Select "Database Tools" tab
  • Click "Visual Basic" button
  • Select "Tools | References" menu
Unchecking the "Microsoft ActiveX Data Objects 2.1 Library" reference generated the following error message: "Error in loading DLL." I nevertheless clicked the OK button to save my (de)selection. I then saved the file, and when I re-opened it again, amazingly enough: everything appeared to work properly.

c. Cleaning up loose ends

Even though my file now worked after implementing both methods, I was still left with the old "Microsoft DAO 3.6 Object Library" reference from Access 2003. This was a less-than-ideal configuration because of the differences in the default libraries for Access 2003 compared to Access 2010. For Access 2003, here are the default reference libraries:
  • Visual Basic for Applications
  • Microsoft Access 11.0 Object Library
  • OLE Automation
  • Microsoft DAO 3.6 Object Library
  • Microsoft ActiveX Data Objects 2.1 Library
For Access 2010, the default reference libraries are as follows:
  • Visual Basic for Applications
  • Microsoft Access 14.0 Object Library
  • OLE Automation
  • Microsoft Office 14.0 Access database engine Object Library
I have already addressed the issue of the problematic "Microsoft ActiveX Data Objects 2.1 Library" reference and how to solve it. The first three library references seem to automatically adjust themselves when the Access 2003 file is opened in Access 2010. Let us focus instead on the remaining fourth entry listed for each program: "Microsoft DAO 3.6 Object Library" (Access 2003) versus "Microsoft Office 14.0 Access database engine Object Library" (Access 2010).

As an experiment, I tried to activate both the "Microsoft DAO 3.6 Object Library" and the "Microsoft Office 14.0 Access database engine Object Library" reference libraries at the same time. My attempt failed with the following error message:
"Name conflicts with existing module, project, or object library."
Clearly, those two references conflict. You may activate one or the other, but not both. From everything I read, it is much better to go with the "Microsoft Office 14.0 Access database engine Object Library" reference that is native to Access 2010.

Regardless of which solution we use to solve the basic problem (step 4a or 4b), it is probably a good idea to restore the proper library reference to the Access 2010 file rather than allow the Access 2003 reference to linger. To address this situation, go to the Access 2010 references section one last time (see step 4b above), uncheck "Microsoft DAO 3.6 Object Library" reference, and instead check the "Microsoft Office 14.0 Access database engine Object Library" reference. Save the file and reopen: everything still works, and now you have all four default Access 2010 references properly selected.

I suspect that this is the same net effect from Method #2 (Copy elements to new database) discussed above. To refresh your memory, that process involved opening a fresh database with the four default Access 2010 references and then copying each object element (database, form, macro, module, query, and report) from the old file to the new. The result is a new file whose elements duplicate those from the original Access 2003 data file but with all of the library references associated with Access 2010.

Another potential pitfall

More than once during the course of my experimentations, I copied my original Access 2003 file, edited or otherwise, to my Windows 7/Office 2010 laptop, and when I tried to open the file in Access 2010, I encountered two problems:
  • A window labeled "Macro Single Step" appeared with the following field values:

    • Macro Name: AutoExec
    • Action Name: RunCode
    • Arguments: setActionQueryPrompt (false)
    • Error Number: 2001
  • An orange ribbon across the entire Access window reading as follows:

    "Security Warning   Some active content has been disabled. Click for more details."
When I did click for more details, I encountered a window that said:
"... The following content has been disabled: VBA Macros ..."
Fortunately, there was a button within the orange ribbon that said "Enable Content." Clicking that button did successfully re-enable macros, so all was well once again.

Upon further reflection, it dawned on me why this problem occurred. I had copied the file to a folder where I had not relaxed security restrictions. To correct this oversight by authorizing Access files to execute from designated folders, it was necessary to perform the following steps:
  • Open Access and then click the "File | Options" menus
  • In the resulting Options window, click the "Trust Center" menu item
  • Click the "Trust Center Settings" button
  • In the resulting "Trust Center" window, click the "Trusted Locations" menu
  • Click the "Add new locations..." button
  • In the "Path" field, type the path an name of the folder you wish to allow. You may check the subfolders option if you wish to allow subfolders, and you may also type a meaningful description of the folder in the "Description" field
  • Click the "OK" button to save your work
If you are careful to open and execute Access files from folders you have designated in the Trust Center, you should not encounter the orange security notification ribbon as I did.

Finally, you might want to consider applying this same process to Excel, Word, and PowerPoint as well.

Postscript

On my Window 7 laptop, I visited the folders
"C:\Program Files\Common Files\System\ado\"   and

"C:\Program Files (x86)\Common Files\System\ado\"
Both files contained just one ActiveX file, msadox28.tlb, that clearly designated version 2.8. However, when I went back to Access and attempted to select "Microsoft ActiveX Data Objects 2.8 Library" from the References list, I encountered the following error message:
"Error in loading DLL"
Recall that this is the same error message I encountered when I deactivated the "Microsoft ActiveX Data Objects 2.1 Library" reference in step 4b above. Needless to say, Access 2010 did not retain my selection even though the indicated file was clearly present. I can only speculate that there is yet another unresolved internal conflict present.

How typical of Microsoft. I finally fix one problem after hours of research only to encounter yet another obstacle. Because I have no immediate need for any ActiveX module, I will set this new problem aside for another time. For now, I can only shake my head in resignation.

Toshiba Sleep-and-Charge

The Problem

The battery to my son's Toshiba laptop computer was discharging far more rapidly than my other two Toshiba laptops, even when completely turned off and the power unit unplugged. Recently, whenever I turn the laptop on after 2-3 days of disuse, the battery level was down to 80% or so. I have never seen the other two computers below 95% even under the same circumstances.

Proposed Solution

When I googled the problem, at least one blogger reported the issue as being caused by his laptop's Sleep-and-Charge feature. Sleep-and-Charge ports allow users to charge smart phones, MP3 players or other portable electronics even when the laptop itself is turned off. It so happens that my new USB external hard drives for both my son's and my daughter's laptops do not have an a/c power supply; instead, they draw power from the laptop itself.

If you have a Toshiba laptop, here is how to access Toshiba's Sleep-and-Charge utility:
  • Click on the Windows Orb
  • Click "TOSHIBA | Tools & Utilities | Sleep Utility" menus
  • Uncheck the Sleep-and-Charge box
To see if that writer's suggestion even applied to my case, I disabled Sleep-and-Charge on my problem machine and then turned that laptop off with the intention of checking back in a few days.

Even if the battery were to then retain its charge, that raises the question: why just on that one laptop? Why do the other two Toshiba laptops remain unaffected?

The perfectly logical explanation suggested itself when I examined the settings on each machine: the Sleep-and-Charge feature was evidently turned off by default on both my daughter's and my own laptop, whereas it was apparently turned on by default only on my son's. The fact that only my son's laptop has this battery problem strongly suggested that Sleep-and-Charge might indeed be the cause of the problem.

Test Results

After I changed the settings and turned off "Sleep and Charge," I let the machine sit for a full 24 hours with the power off. When I finally did turn it back on, the battery had a full 100% charge remaining, not the 80-85% I had been experiencing. I then allowed it to sit for 48 hours with the power turned off. When I turned it back on after two full days, the battery still had a full charge of 100%. Both tests seem to indicate that the problem is indeed solved.

Final Observation

Upon further research, I discovered that on Toshiba laptops, Sleep-and-Charge USB ports are marked by a colored USB port (blue on my computers). I never knew the significance of the colored USB ports. In retrospect, it explained some phenomena that I did observe: not knowing any better, I frequently plugged my external USB hard drive into that colored port. Whenever I did, I noticed the hard drive's light on even after I turned off the laptop altogether.

In my ignorance, I never made the association. I should have, because the battery reading was really low when I turned the laptop on again after several days. However, I learned the wrong lesson: whenever I could remember, I used the "Safely Remove Hardware" icon in the system tray to disconnect my external hard drive before logging off. That "solution" apparently only papered over the real problem. In the immortal words of Homer Simpson, "Doh!"

On my own Toshiba, there are only three USB ports, and none of them are colored. The user manual says any Sleep-and-Charge port will be marked by a vertical lightning bolt icon, but I cannot make out any lightning bolt on any of the USB ports. They all seem to have the standard USB icon, but it is very difficult to make out such tiny, black-on-black icons. I do not know if activating Sleep-and-Charge will activate all three USB ports or not - and I am not about to find out!

Postscript

Even though I solved the problem of the run-down battery by disabling Sleep-and-Charge, I still have to make sure I unplug the USB external hard drives before I turn the machine back on. If I make the mistake of leaving the hard drives plugged in during boot-up, the laptop cycles endlessly and never does boot up. I checked the BIOS and verified that the internal hard drive is checked first in the boot sequence and the external USB hard drive is last. It remains a mystery why the boot process still hangs, but that is a problem whose solution will have to wait for another day.

Sunday, October 7, 2012

Google Gmail Filters: Unleash the Power

Problem

For many weeks, I was receiving at least one and later two e-mails a day from a spammer using the comment section of my Google blog site to lure me into visiting his or her many web sites. That might not sound like much, but that amounted to 30-60 unwanted e-mails per month. While I welcome genuine comments about my blog postings, I do not welcome people trying to generate business for their commercial web sites or even worse, trying to sucker me into visiting a malicious, virus-infected site.

I have been using Google e-mail filters for a long time, but this situation posed a new problem. All offending e-mails contained a variation on a common theme: some mention of a blog site, web page, or home page followed by a url. I certainly did not want to create a separate filter for each individual phrase. Instead, I needed to consolidate those multiple conditions into a single filter field, something I had never done before.

Solution

To access Google's Gmail filters, open Gmail and then:
  • Click the "Settings" cog near the upper right corner
  • Select the "Settings" menu option from the resulting pull-down menu.
  • Select the "Filters" label from the menu options across the top
  • Click on the "Create a new filter" link at the bottom
There are five e-mail filtering categories: From, To, Subject, "Has the words" and "Doesn't have." You may create entries in more than one category suitable for your needs.

All of the obnoxious e-mails, originating as they did from my Google blog site, contained the sender
"noreply-comment@blogger.com"
so that became the sole entry in my filter's "From" field.

The key, of course, becomes the "Has the words" field. I needed to include several different alternatives utilized by the spammer. After poking around Google search for a little while, I found something that worked. The key to multiple values is the following syntax:
enclose the entire expression in { } curly brackets, and then within those brackets, enclose each individual expression in " " double quotes.
The curly braces indicate an OR condition where any one of the conditions will trigger the filter. Simple parentheses ( ) indicate that all of the specified conditions must be present, not just one. As an alternative, users can forego the braces and parentheses altogether and instead place AND or OR between the conditions (making sure to preserve the capitalization). Both alternatives work equally well.

Bingo! The following example worked like a charm:
{"my web blog" "my weblog" "my blog" "my web page" "my webpage" "my home page" "my homepage" "my site" "my web site" "my website"}
The following example also works:
"my web blog" OR "my weblog" OR "my blog" OR "my web page" OR "my webpage" OR "my home page" OR "my homepage" OR "my site" OR "my web site" OR "my website"
I lean towards the first example if only because it is slightly more compact.

In addition to my sender criterion, I also placed the above compound expression into my "Has the words" field, set my disposition instruction to delete all e-mails, and saved the filter settings. Now, instead of receiving one or two offending messages each day, I have not received a single one in over a week. The filter's syntax clearly works.

[Side note: I have since relaxed my disposition to send the e-mails to the trash bin instead of immediate deletion. By doing so, I can monitor the trash bin occasionally to determine if the e-mails are still arriving while simultaneously confirming that my multiple conditions are indeed still working properly.]

Postscript

Google apparently imposes no numerical limits on its users. Even so, it seems far more economical to create one filter with multiple conditions rather than multiple filters each with one condition. In general, it is far easier to manage a smaller number of filters even if those filters have multiple conditions.

By contrast, Yahoo's mail limits its e-mail users to 100 filters. (Cheer up: only a few years ago, the limit was just 20.) Yahoo offers four categories (sender, recipient, subject, and body) on which to filter. For each of those four options, users may select "contains, "does not contain," "begins with," or "ends with."

Alas, despite some claims that Yahoo's conditions recognize Boolean operators such as "AND" and "OR," I could never get them to work. I tried the OR condition both lower case and upper case (as in Google searches); with and without the brackets (and plain parentheses, also like Google searches); and with and without the double quotes. All combinations failed miserably.

To me, the inability to express multiple conditions within a filter is a fatal flaw, especially when you have only a limited number of filters available.

Microsoft: Essentially Secure From Its Own Self

Digging Myself Into a Hole

On 26 September 2012, Microsoft released an update to its own Security Essentials anti-virus software under the moniker KB2754296. It was classified as an "Important" update. In the past, almost all "Important" updates are checked by default, so I was a bit surprised when this update did not have the usual check mark. Little did I know that this was only a harbinger of trouble to come.

I tried to implement the update several times, but all attempts failed. I then began trying various solutions I read about when I Googled problems associated with KB2754296. Unfortunately, I did not keep a record of my various attempted fixes because I did not expect to get so wrapped around the axle as I eventually did.

In the course of my failed experimentations, I did notice that the shortcuts on my daughter's machine for the Security Essentials executable file "msseces.exe" pointed to the parent folder
"C:\Program Files (x86)\Microsoft Security Client\"
which as we will see shortly is not correct for a computer with a Windows 7 64-bit operating system. I must have erroneously installed the 32-bit version of Security Essentials at one time, an error which might have contributed to my initial downfall.

Probably the worst thing I did was follow a recommendation to delete any and all registry entries associated with Security Essentials. Big mistake. One of my machines degenerated to such a state that not only was I unable to update Security Essentials, I also could not uninstall the software with the ultimate goal of re-installing it anew for a fresh start. In fact, I could not even open Security Essentials to access any settings. In short, I became totally distraught because I had a machine whose "security" system was in such disarray that it rendered the machine next to useless.

Perhaps worst of all, my daughter needed to download some images of the American flag for a school project, and while we found many pictures she liked, we could not successfully download or save any of them anywhere: not onto the laptop's hard drive or onto her external USB thumb drive. Stymied at every turn.

Climbing Out of the Hole

In sheer frustration, I tried using the most recent restore point to restore my system to the state it was in three days before. Whew: that seemed to help. I lost three days of file and system updates, but at least I had a functioning security system back, outdated though it might still be.

In the course of Googling the KB2754296 update problem, I stumbled upon one particular web site that contained the following paragraph:
There are quite a few updates that seem to get blocked by security S/W. There are times disabling a security app will allow the update to take place. The better alternative in these cases may be to download the update in question from MS and save it to your PC, disconnect from the internet, then disable your security apps prior to running the update. Once the update has completed you can enable any security apps you disabled, then re-connect to the internet.
With no other options remaining, I decided to give this approach a try out of sheer desperation.

I first visited the Microsoft Security Essentials download site and downloaded the file applicable to me: the Vista/Windows 7 64-bit option. There were also files for Windows XP 32-bit and Vista/Windows 7 32-bit.

Download whichever file applies to your situation, double-click the downloaded file, and let the fun begin. You should soon encounter a window that says:
The feature you are trying to use is on a network resource that is unavailable.

Click OK to try again, or enter an alternate path to a folder containing the installation package 'epp.msi' in the box below.
After many failed attempts and much time and effort to research the proper location, I was able to use the "Browse" button in that same window to navigate to the following folder:
C:\Program Files\Microsoft Security Client\Backup\amd64     (64-bit)
For 32 bit systems, the applicable folder reportedly is
C:\Program Files\Microsoft Security Client\Backup\x86     (32-bit)
And in 20-20 hindsight, for my apparent misguided installation of the 32-bit version of Security Essentials on a 64-bit machine, the epp.msi file of interest was probably in folder
C:\Program Files (x86)\Microsoft Security Client\Backup\x86     (32-bit)
In any case, armed with the correct location of the troublesome epp.msi file, I had a eureka moment: the process now ran to completion! The new version installed successfully.

I felt an immediate surge of relief. My almost inoperable machine was back to what passes for normal. Both machines were now able to perform Security Essentials and other Windows Updates, including the laptop that could not even open Security Essentials before I started.

Fittingly enough, after my installations were complete, the first Security Essentials definition update was number 666. How spooky is that???

Lessons Learned (Maybe)

In summary, here are a few lessons learned from this bitter experience:

First, be wary of updates marked as "Important" but that are not checked by default. That appears to be an indication that something might be amiss. Some bloggers claimed that this was an early release and not a mature, fully-tested, stable update.

Second, before attempting to install such updates, create a manual restore point and assign a recognizable name (e.g. "My manual update") to distinguish it from the many system created restore points, most of which carry the same generic "Windows Update" name. In addition, the default type for a system-generated restore point is "Critical Update" whereas the type will read "Manual" when you initiate your own restore point.

To manually create a restore point in Windows 7:
  • Click on the Windows Orb icon in the lower left corner
  • Click on "Control Panel | System and Security | System" if "Category" mode is set;
    Click "Control Panel | System" if "Large Icons" or "Small Icons" mode is set
  • From the menu links to the left, select "Advanced System Settings"
  • In the resulting "System Properties" window, select the "System Protection" tab
  • Click the "Create..." button
  • In "System Protection" window, type the customized name of your choice
  • Finally, click the "Create" button to generate the restore point
Last but not least, if the update involves Microsoft Security Essentials, learn the correct functional location for the "epp.msi" file on your computer. There might be a version of that file in one or more temporary folders, but the relevant folder locations are those listed above, depending on the version of your operating system.

Postscript

All of this begs the question: why did Windows Update work more or less satisfactorily on my laptop but not on the laptops belonging to my two children? They are all made by Toshiba, and they all have Microsoft's Windows 7 64-bit Professional operating system. The only significant difference I can think of is that my laptop has an Intel Core i3-350M processor while theirs has an AMD Quad-Core A6 processor. Can a processor make so much difference in how the Windows Update function works? If so, yikes!

Most exasperating, however, are the continuing problems with Microsoft's updates to its own software. I previously reported on difficulties involving both Silverlight and .NET Framework 4. Now we must wrestle with yet another troublesome update, this time to Security Essentials. Microsoft's repeated failures are rapidly becoming strong arguments for adopting Linux.

Tuesday, May 22, 2012

Icon Not See (Or: Cache Me If You Can)

Background. The other day, my daughter complained to me that her computer screen did not look right. In particular, the icons to Microsoft Office products in her start menu all had the same colorless generic appearance instead of showing distinctly colorful icons for Excel, PowerPoint, Word, and associated Office tools.

Now, my daughter is the perfectionist in our family: she insists that everything be just so. My son and I don't put much stock in fancy appearances as long as the software functions properly, which it apparently did. Just out of curiosity, though, I scoped out my son's machine and confronted the very same problem: his machine also displayed the same drab default icons for all Office menu items. To find the same problem on two different computers was suddenly cause for concern.

At this point, many analysts would immediately advocate re-installing Office to set things right again. To me, however, that is an extreme measure to be used only as a last resort. Instead, I much prefer to find the proximate cause of a problem in the hope that any new-found knowledge will translate into a simpler, more direct solution. The following narrative describes what I found.

1. Insure Icon Files Are In Their Proper Place

Some shortcuts created by Microsoft Windows installer programs have the Target field and the Find Target and Change Icon buttons grayed out when viewing the shortcut's Properties in the Shortcut tab. These shortcuts seem to rely on Class entries in the Registry to locate the icon file and icon number within the icon file. If that icon file is deleted, moved, or that registry entry is changed the shortcut will display the standard broken icon with no easy way to figure out where the problem is or fix it.

For Microsoft Office products, you can use Regedit to search for the files "wordicon.exe," "xlicons.exe," "pptico.exe," "outicon.exe," "accicons.exe," "misc.exe," etc. The purpose is to find the path or folder where Office expects to find these files so that you in turn can insure they are where the registry says they should be.

Searching the registry should lead you to one of the following folders:

Office 2003:
C:\WINDOWS\Installer\{91E30409-6000-11D3-8CFE-0150048383C9}
Office 2007:
C:\Windows\Installer\{90120000-0030-0000-0000-0000000FF1CE}
Office 2010:
C:\Windows\Installer\{90140000-003D-0000-0000-0000000FF1CE}

The folder you want to examine is by default hidden and protected. To reveal the folder so that you can then inspect its contents, you must
  • Open Windows Explorer as administrator
  • Select the "Tools | Folder Options..." menu
  • Select the "View" tab
  • Uncheck the "Hide protected operating system files (Recommended)" option
  • Click the "OK" button to save your selection
Once you have done so, navigate to the folder resulting from your registry search. If the required folder does not exist, then go ahead and manually create it.

My Office 2010 folder included 12 files with extension .exe and one with extension .ico; based on the file names (e.g., accicons, pptico, wordicon, xlicons, etc.) it is clear that the .exe files are indeed icon libraries. [There was also one other misfit file named ShellUI.MST which I ignored with no apparent ill consequences.]

I copied all 13 icon files (that is, everything except ShellUI.MST) to my newly-created folder and returned to the Start menu. Imagine my delight when I saw that all Office menu items now displayed a colorful, meaningful icon without even having to restart the computer. I thought I had solved the problem.

Almost, but not quite. On each or my two children's computers, I have established four separate accounts: one admin account for me and three general accounts: one for my son, one for my daughter, and another one for myself. With four accounts on each of two machines, that totals eight different accounts. Seven of those eight could now successfully view the icons in all Microsoft Office start menu shortcuts.

As luck would have it, it was my fussbudget daughter's account on her own computer that was the one account that still did not display properly. A graphic illustration of Murphy's Law at work.

All was not lost, however: my daughter's account was not a total failure. All of the programs listed in the "Microsoft Office 2010 Tools" sub-menu now displayed meaningful icons, as did OneNote in the main parent menu. Alas: the Big Three of Excel, PowerPoint, and Word all still displayed the dull, drab default icon, not their colorful trademark icon.

I briefly contemplated adding the ShellUI.MST file to the folder C:\Windows\Installer\{90140000-003D-0000-0000-0000000FF1CE} because that file was present in that folder on my own laptop. However, if seven of eight accounts on my children's two computers managed to work perfectly without that file, then its absence was clearly not causing the problem.

2. Chase a Wild Goose

If I were not fortunate enough to have access [pun intended] to the collection of icon files, I would have been compelled to try another alternative that I had read about. I now decided to give that method a try in the hopes that it would fix my one remaining problematic account.

This next measure was intended to be a repair process for broken shortcuts:
  • Open the Microsoft Office Picture Manager (file name: OIS.exe) as administrator
  • Click on the "Help | Detect and Repair..." menus
  • Check the "Restore my shortcuts while repairing" option
  • Click the "Start" button to begin the supposed repair process
When I did this, I waited what seemed like an eternity only to encounter the following error message:
"The Windows Installer Service could not be accessed. This can occur if the Windows Installer is not correctly installed. Contact your support personnel for assistance."
In an attempt to overcome this new hurdle, I opened the Services window [select "Start orb | Control Panel | System and Security | Administrative Tools" and then double-click on "Service"]. Somewhat surprisingly, I found that the "Windows Installer" service was already active. I clicked the "Restart" link just to refresh that service. Still no luck: when I ran the Microsoft Office Picture Manager repair process again, I ran into the same error message as before. To quote the immortal Charlie Brown, "Rats!"

Even though this last tactic failed for me, I offer it to you readers as an option to consider because there were folks posting to on-line forums who reported that the method had worked for them. The more arrows in our quiver the more likely we are to eventually hit our target. And if I had not been fortunate enough to have all of the necessary icon files from a readily available computer with a functioning version of Office, this approach would have taken on greater importance to me.

3. Delete the Offending File

As it was, I now had reached the end of my rope. I had only one more alternative left to try. I felt that any remaining problem had to be related directly to my daughter's local account because all other accounts were now working correctly while only hers failed. After a little more research on Google, I took the following steps:
  • Logged on to my own admin account
  • Opened Windows Explorer
  • Navigated to my daughter's "C:\Users\[daughter's-user-name]\AppData\Local" folder
  • Promptly deleted her "IconCache.db" file
I then logged back on to my daughter's account to see what, if any, effect all my gyrations had produced.

Eureka! In her start menu, links to all Office elements, including the three troublesome programs (Excel, PowerPoint, and Word) now displayed their distinctive icons. Windows had re-generated a new "IconCache.db" file in my daughter's account. All was finally well, at least for the time being. Case closed - hopefully!

4. Prevent a Recurrence (?)

I include that qualification "hopefully" only because I have read numerous reports where this same problem continues to crop up over and over again. To prevent a recurrence, I offer the following recommended solution:
  • Open the registry editor (regedit.exe) as administrator
  • Navigate to the following registry key:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer
  • In the right-hand pane, create a new REG_SZ (string value) called "Max Cached Icons" (omit quotes but include the spaces)
  • Enter a value of 4096 or even 8192. These are values in megabytes (Mb) and should increase the size Windows allows for the icon file from the anemic default of only 500 Mb to whatever larger value you have entered.
I have been fortunate so far in that the problem has not reared its ugly head a second time—yet. While I therefore have not had occasion to personally verify these last few steps, I am fully prepared to give them a try if the need arises. I feel mildly optimistic that these steps should help because Microsoft's own web site http://support.microsoft.com/kb/2396571 prescribes them.

Postscript: Because only three shortcuts remained broken (Excel, PowerPoint, and Word), it would have been a simple enough matter to open Windows Explorer, copy each executable file (Excel.exe, PowerOnt.exe, and WinWord.exe), and paste them as shorcuts to my daughter's individual start menu (as opposed to the "all users" start menu).

However, that is not really solving the basic problem; it is merely sweeping it under the carpet and evading it altogether. What fun would that be???



Make no mistake: this is a cosmetic problem only. It does not seem to affect Office's ability to function properly. Even without the icons present, the software itself seems to work just fine. Both of my children use Office for school at some time or other during virtually every week, so far without incident. However, the missing icons were an irritant I can very well do without.

Allow me one final cautionary note: even though the issue involved is largely cosmetic, there were any number of postings on public forums to the effect that "it sound like your system is corrrupted and that you need to re-install Office or even Windows." Beware of alarmists who pose radical solutions to mundane problems. There almost always will be a solution whose complexity will be more proportional to the nature of the problem. No need to detonate a nuclear warhead just to kill a mosquito.

Having said that, I am still left with at least three nagging unanswered questions:

Lingering Mystery #1: What caused the icon file folder to disappear from my children's laptops while remaining intact on my own Windows 7 laptop? They all have the exact same operating system; were made by the same manufacturer, Toshiba (albeit a different model with a different processor); and more importantly, had the exact same version of Microsoft Office 2010 installed. Indeed, Office was installed on all three machines from the very same CD ROM disk because it was the student version with licenses that allow installation on up to three machines. It so happens that I installed Office first on my machine and then on the machines belonging to my son and daughter. Wild thought: could the footprint left for the second and third installations be not quite *exactly* the same as the installation on the first machine? Pure conjecture on my part, but nothing about Microsoft products would suprise me any more.

Whatever the case may be, you can bet that I have placed those icon files in a single archive (zip) file for storage in a safe place so that if that same folder ever disappears again, I am sure to have the necessary files readily available.

Lingering Mystery #2: Why did restoring the missing folder with icon archive files fix seven of eight account but only partially repair the eighth? Even within my daughter's computer, the shortcut links are posted to a folder path available to all users; why do three user accounts see the link properly while my daughter's account cannot properly view that same shared link? What caused her "IconCache.db" file to misbehave so badly?

Lingering Mystery #3: Why did the Microsoft Office Picture Manager repair process fail so miserably? I could not get that to work even after I repaired all of my daughter's icons.

There you have it: as is so often the case with Microsoft products, I began with one single problem, and even though I eventually resolved that issue, doing so spawned three more unanswered questions. About par for Microsoft's course.

Terrible Tuesday

Microsoft publishes updates to its Windows operating systems on the second Tuesday of every month. I have only half-facetiously been calling that day "Terrible Tuesday," but this past Tuesday (8 May 2012) was far worse than most. I encountered not one, not two, but four updates that would not install: one to Silverlight and three to .NET Framework 4.

As is so typical of Windows 7, in the course of researching fixes to those two problems [I consider the Silverlight and .NET problems as separate because their solutions were radically different], I encountered a third: I could not access or open the Event Viewer log window, open the Services window, or perform some several other related Windows functions even when I logged on to my admin account.

I will address these issues one by one. I will not regale you with any of the procedures that I tried but which ultimately failed. There is often some learning value even with failed attempts, but in the interest of keeping this post to a manageable length, I will forgo describing those unsuccessful efforts and limit my description only to what worked.

Finally, be aware that the problems I describe occurred only on my children's Windows 7 laptops. The updates all went smoothly on my ancient workhorse desktop running Windows XP. And for reasons that I still have not figured out, they also went smoothly on my own Windows 7 laptop. Go figure.

1. Event Viewer Window Failed To Open

On the second Tuesday in May 2012, Silverlight and .NET Framework 4 updates failed to install during Microsoft's monthly update process. My first thought was to open the Event Log to see whatever warning and/or error messages might be present on my computer to help me diagnose the problem.

[Note: in order to open [or attempt to open] the event log, click the sequence "Start orb | Control Panel" and then the link "View event logs" immediately under the "Administrative Tools" label.]

If your "Event Viewer" window opens successfully, you are good to go. Unfortunately for me, the Event Log would not open at all. Instead, I encountered the following error message:
"Event Log Service is unavailable. Verify that the service is running."
"No big deal," I thought to myself. "I'll just open the Services window and re-start the Event Log Service."

[Note: To open the Services window, it is necessary to click "Start orb | Control Panel | System and Security | Administrative Tools" and then double-click the link to "Services" in the right-hand panel.]

When I did that, I encountered more failure. Now my error message read as follows:
"Windows could not start the Windows Event Log service on Local Computer.
Error 4201: the instance name passed was not recognized as valid by a WMI data provider."
I was clearly stuck: I could not perform basic functions that any system administrator should be able to.

I immediately suspected that this problem was a self-inflicted wound. A week or two before, I attempted to copy the Windows folder contents onto my external hard drive for backup using the old tried-and-true drag-and-drop method in Windows Explorer. After a significant amount of time, the process finally ended but with precious few files and folders actually copied.

After repeated failed attempts and out of sheer frustration, I impulsively seized control of the "Windows" folder under my own administrative user name. Bingo! I was finally able to copy all the Windows folder files and sub-folders to my external hard drive for backup.

I naïvely thought all was well. Wrong! The Event Log problem and the Services functional problems [and who know what else!] were lurking beneath the surface. How to fix them?

The short answer: insure that the "SYSTEM" entity is included in the "Groups or user names" field in the Security tab of the Property window for the following folder:
"C:\Windows\System32\LogFiles\WMI\RtBackup"
I know what you're probably thinking: if that is the short answer, you'd hate to see the long answer. Yes, that was a mouthful, but bear with me just a bit longer.

I actually found two methods to accomplish this objective. The first method I am about to describe should more clearly illuminate the long-winded statement I made above:
  • In Windows Explorer, navigate your way to the folder "C:\Windows\System32\LogFiles\WMI\RtBackup"
  • Right-click on the folder and select the "Properties" menu at the very bottom
  • In the resulting window, select the Security tab
  • Click the "Edit..." button
  • In the resulting "Permissions for RtBackup" window, click the "Add..." button
  • In the resulting window, type the word "SYSTEM" (without quotation marks) into the field that says "Enter the object names to select (examples):"
  • Click the "OK" button
  • You will now be back in the "Permissions for RtBackup" window. Make sure that "SYSTEM" is selected in the "Group or user name" field. The bottom field should be labeled "Permissions for SYSTEM." If it is not already checked by default, click on the "Full control" option.
  • Click the "OK" button to save your new settings
You should now be back in the "Security" tab of the "RtBackup Properties" window. An entry for "SYSTEM" should now appear among the groups and user names listed in the top field, and if you select that "SYSTEM" entry, all options associated with full control should now be checked in the "Permissions for SYSTEM" window.

The second and much easier method: simply delete the folder
"C:\Windows\System32\LogFiles\WMI\RtBackup"
altogether and restart your machine.

As an alternative, if you are like me and are hesitant to delete system folders, simply rename the folder to something like
"C:\Windows\System32\LogFiles\WMI\RtBackup_original"
and then restart.

With either approach, when you restart your computer, Windows will re-create the missing folder and magically include the requisite "SYSTEM" entity among the groups and users along with the appropriate permissions.

You will now be able to open both the Event Log and the Services window. All this work just to overcome the first hurdle of three. But don't stop now: there's more fun to come...

2. All .NET Framework 4 Updates Failed

This actually turned out to be the easiest problem both to diagnose and to fix. To make a long story short, here are the steps to take:
  • Click "Start orb | Control Panel | Programs | Programs and Features"
  • In the resulting "Uninstall or change a program" window, select "Microsoft .NET Framework 4 Client Profile" from listed programs
  • Click the "Uninstall/Change" label at the top of the listed programs
  • Select the option "Repair .NET Framework 4 Client Profile to its original state"
  • Click the "Next" button and proceed with the repair
Eureka! When I returned to Windows Update and tried again, the three updates involving .NET Framework 4 succeeded.

On the down side, I had to also install four additional updates to .NET Framework 4. My guess is that "Repair .... to its original state" is a euphemism for something akin to a fresh re-install. That might explain why I had to install seven total updates instead of just the three I was expecting.

Whatever the case, this repair process worked for the .NET updates—but it failed miserably for Silverlight.

3. Silverlight Update Failed

The repair process that worked so nicely for .NET did not work at all for Silverlight largely because there was no "Repair" option available in the program list. The label said only "Uninstall" and not "Uninstall/Change." I was hesitant to completely uninstall Silverlight even if it was slightly outdated. I was fearful that if I could not re-install Silverlight, I would then be left without any functioning program at all.

But when I tried installing the new version over the old, I received the following error message:
"The feature you are trying to use is on a network resource that is unavailable. ...
[E]nter an alternate path to a folder containing the installation package 'silverlight.msi' in the box below."
It turns out that the procedure I finally used was even more radical. In Windows Explorer, I right-clicked on the file "C:\Windows\System32\regedit.exe" and selected the option "Run as administrator." I then navigated my way to the following registry key
"HKEY_CLASSES_ROOT\Installer\Products\
D7314F9862C648A4DB8BE2A5B47BE100"
—and then promptly deleted that entire key!

I had previously downloaded what I thought was the Silverlight installation file (Silverlight.exe) from Microsoft's web site http://www.microsoft.com/silverlight/. It was in fact the installation file, but not in the way that it first appeared.

I had read on Google that the Silverlight.exe file I downloaded was actually an archive file consisting of several different individual files. Sure enough, opening "Silverlight.exe" with WinZip, 7-Zip, IZArc, or any other archive program revealed four separate files within, one of which was named "silverlight.msi." Many of you will recognize the extension ".msi" as shorthand for "Microsoft installer." I then extracted the files to a folder on my hard drive and double-clicked on silverlight.msi.

Hallelujah! This installation process, coming as it did after deleting the registry key, successfully ran to completion. As with the .NET update, I had to install not only the update that highlighted the problem in the first place but another one as well.

Unresolved Questions

One small question that lingers in my mind: would double-clicking directly on the "Silverlight.exe" file I downloaded have worked just as well? That would have saved me the drill of extracting the four component files. If I am ever confronted with the same situation again, I will certainly give that a try first.

A second and more important question: could I have used the "Uninstall" option in the "Uninstall or change a program" window? I vaguely recollect that I tried and that the attempt failed. However, I neglected to write down any resulting error message, so I cannot be absolutely certain. At that point, I was juggling several balls in the air at the same time, and I guess I took my eye off one of them for a moment.

After the dust settled and Silverlight was finally working once again, I actually contemplated experimenting with the uninstall process—for a fleeting second. After all I had gone through to finally get Silverlight to work, I chickened out and chose to leave well enough alone.

However, you can bet that if this situation ever arises again, especially with Silverlight, I'll give "uninstall" a whirl first before I go mucking around in the registry again. If the "uninstall" works for you, then more power to you. If not, at least you now have another alternative that should work.

Final Thoughts

I have been a long-time critic of Microsoft and Windows, and these examples merely reinforce my inclinations. Why can Microsoft not even make functional updates to its own software (e.g., Silverlight and .NET) on its own latest-and-greatest operating system (i.e., Windows 7 Professional 64-bit)? I deeply resent having to squander so much of my own time and effort researching and resolving problems that just should not exist in the first place.

And if I were not already so angry, I might have laughed at some of the on-line forums where Microsoft's own technicians said several times: "Try this solution; if that doesn't work, try this second solution; and if they both fail, try third-party software."

Third party software? Microsoft unable to fix its own defective products? As Chatsworth Osborne Jr. so astutely observed on the old The Many Loves of Dobie Gillis TV show, "Surely you jest!"



And for all of you hardy souls who stuck with this narrative to the bitter end, I now ask you: do you begin to understand a little bit why I refer to it as Terrible Tuesday???

Wednesday, April 25, 2012

Parental Discretion Advised

There are at least three ways to prevent your children from accessing internet web sites that you do not want them to view:
  • Use your network router
  • Use individual web browser parental control features, if any
  • Use the Windows "hosts" file
Two additional methods include (1) installing specialized software made by McAfee, Norton/Symantec, Net Nanny, and other vendors; and (2) utilizing your ISP's parental control features, if any. These options are going to vary so much from one household to another that they are beyond the scope of this blog.

The first three methods listed above will have more general applicability, so let's tackle them one by one.

1. Your Network Router

The way to make only one change but still affects all computers without exception: block sites on your internet router.

Comcast happens to be my internet service provider (ISP), and they have provided me with an SMCWBR14S-N4 router. For those of you who share the same router, perform these steps:
  1. Log on
  2. Click the "Firewall" menu option at upper right
  3. Click the "Content filter" menu at the far left (last entry in list)
  4. Go to field "Add a URL filter" to block a url (alas: wild cards not accepted; enter "encrypted.google.com" and "www.google.com" separately, not the more generic "*.google.com")
    or
    Go to field "Add a Host (keyword) Filter" for specific keywords
  5. Click the corresponding "Add" button(s)
The exact details will obviously vary from one router to another, but the principle will be the same: log on to your router's software, locate the content filtering section, complete the applicable fields, then save your newly-created filters.

I consider this technique to be the strongest method of the three. It prevents all all computers on the network from using any of the blocked web sites. For example, consider the case where you happen to have a favorite adult web site you like to visit from time to time [and I am speaking purely hypothetically, of course] but which you do not want your children to visit. Then too bad, so sad: neither their computers nor yours will be able to access the forbidden fruit under this method. Everyone gets shut out.

2. Web Browser Parental Control Features

Another method involves blocking websites within particular web browsers. The following steps steps apply both to Internet Explorer versions 8 and 9:
  1. Open Internet Explorer
  2. Click "Tools | Internet Options" menus
  3. Select the "Content" tab
  4. In the "Content Advisor" section, click the "Enable" button
  5. Answer "Yes" in the User Account Control window to allow program changes
  6. Select the "Approved Sites" tab
  7. In the "Allow this website" field, add all sites that you want to block and click the "Never" button, not the "Always" button.

    [Note: You can block all subdomains of a website by entering *. in front of the domain. For example, if you want to block all sites of google.com, simply enter *.google.com]
  8. Select the "General tab"
  9. Check the option "Users can see websites that have no ratings"
  10. Click on the "Create password" button to set a password to control the Content Advisor
  11. Click the OK button to save changes
Firefox, unfortunately, has no intrinsic parental control features. Users must therefore rely on a variety of available add-ons for Firefox. I have read about one such add-on called BlockSite that supposedly performs what its name implies, but the reviews make it sound very problematic and troublesome. I personally have had very good success with another add-on called Procon Latte which I heartily recommend.

Opera has a built-in system similar to that of Internet Explorer:
  1. Open Opera
  2. Click on "Tools | Preferences..." menus
  3. Select "Advanced" tab
  4. Select "Content" menu from list at left
  5. Click "Blocked Content..." button at very bottom
  6. Clock the "Add..." button
  7. Type the url you wish to block in the field indicated
The blocked urls are stored in a file in the user's profile as per the following examples:

      C:\Documents and Settings\<user name>\Application Data\Opera\Opera\urlfilter.ini   (Windows XP)

      C:\Users\<user name>\AppData\Roaming\Opera\Opera\urlfilter.ini   (Windows 7)

For Google's Chrome browser, I found the following instructions on the internet but have not verified the process because I have not yet installed Chrome on any of my computers:
  1. Open your Chrome Web Browser
  2. Click the wrench symbol in the upper right corner.
  3. Choose "Tools"
  4. Click "Under the Hood" tab
  5. Choose "Change Proxy Settings"
  6. Click "Security" followed by "Restricted Sites"
  7. Double click "Sites" and add the site you want block
The methods in Internet Explorer, Opera, and Firefox are password-protected, so if you beat your children to the punch and are the first to assign those passwords, then you should be good to go. Wouldn't it be ironic if some tech-savvy youngsters read this article and preempted the parents by assigning their own password before the parents did, thus locking the *parents* out? Fortunately, I think you must have administrative privileges to set the passwords; if you have granted your children admin privileges for whatever reason, then you have only yourself to blame.

In addition to Firefox, Opera, and Internet Explorer, I also have Avant Browser, Maxthon, and K-Meleon browsers installed. If I were to eventually install Google Chrome as well, that would make seven browser accounts to modify. With my two children, that translates to potentially fourteen individual browser tweaks. I personally am just not that industrious; that many changes would simply be entirely too tedious, cumbersome, and unwieldy for me. However, if parents do not lock down all installed browsers, then children can simply try one browser after another until they find one that allows them access.

For these reasons, I consider this the weakest of the three approaches under consideration.


3. Edit the Windows "hosts" file

Another way to block web sites in Windows: modify the "hosts" file (found in "C:\Windows\System32\drivers\etc\hosts"). The idea of modifying "hosts" has been around since at least Windows XP, but the details are somewhat different for Windows 7.

The following steps must be taken on each applicable Windows 7 computer:
  1. Open an elevated instance of Notepad or Wordpad32 (i.e., open as administrator)
  2. Drill down to folder "C:\Windows\System32\drivers\etc\"
  3. Set file type to "All Files (*.*)" to display files with no extension
  4. Right click on file "hosts" and select the "Properties" menu item
  5. Uncheck "Read only" attribute
  6. Finish opening "hosts" and edit: for offending sites, add lines such as
    127.0.0.1   www.googles.it         and/or
    127.0.0.1   googles.it
  7. Save changes with "Save As...", again setting file type to "All Files (*.*)"
  8. After saving "hosts" file, reset "Read-only" attribute
[Note: Some anti-malware software such as SpyBot Search & Destroy automatically add numerous entries into the "hosts" file to block sites identified as malicious and therefore harmful. All the more reason to add such anti-malware in addition to your firewall and anti-virus software.]

I consider this approach to be the happy medium between the other two. It is nowhere near as draconian as using the router settings which block any and all computers on the network from accessing the blocked sites. Instead, I can target only the "hosts" file on my children's computers while leaving my own computer unaffected.

On the other hand, this technique is nowhere near as cumbersome as having to adjust the settings of a multitude of different web browsers for each user. Indeed, only one "hosts" file is involved that covers all users of that computer regardless of the browser(s) involved.

Of course, this last method might not be applicable if you happen to share a computer with your children because editing the "hosts" file to block web sites will affect your own account, too. If your child's computer has only one browser installed—most likely Internet Explorer—then maybe the web browser tweak option is the simplest way to go. If you do not use the computer much but other family members have one or more computers with multiple browsers, then maybe programming the network router is the best option. As with almost anything these days, you will have to choose the alternative that best suits your particular situation.



For further reading:

Blocking Web Sites in Windows 7

Setting Up Parental Controls (Microsoft site)

Sunday, April 22, 2012

Hungry for Missing Feeds?

For reasons I have never understood, Mozilla has deleted the RSS feed icon from the URL field of the Firefox web browser. Prior to version 4 of Firefox, this RSS icon appeared in the address/URL field whenever the site had RSS feed capabilities. Users had only to click on the icon to subscribe to RSS feeds from that site. On the other hand, the icon was altogether absent if the site had no such RSS capability. In short, this method provided a very quick, definitive, and convenient visual cue.

Alas: that useful feature is no more. Beginning with the release of Firefox version 4 on 22 March 2011, there is no longer any visual cue whatsoever because there is no longer any RSS icon at all.

Or is there? Yes, in fact, there is: it is just well hidden. To display it, simply click on "View | Toolbars | Customize..." menus and find the "Subscribe" button with the RSS icon. Simply drag the button to the toolbar of your choice.

Voilà! Unlike before, the RSS logo will always be present. Now, however, the "Subscribe" button becomes an active link with bold black print in the presence of an RSS feed site. Conversely, the button becomes an inactive link with faded gray print in the absence of an RSS feed. Not quite as prominent a visual cue as the original, but it will suffice; it is certainly better than nothing.

It still irks me that users must discover this solution on their own and then implement it. This is especially puzzling in light of the fact that Mozilla's own SeaMonkey browser still retains the original feature of the RSS icon in the URL field. It took me over a year before I stumbled upon the new Firefox alternative, and then thanks only to this helpful web site.

I did personally reap an immediate benefit from this discovery. It so happens that in order to view the RSS icon on my local school district's web site, Firefox users must:

  • allow font@http://themes.googleusercontent.com (based on JavaScript)     *AND*
  • allow system colors     *AND*
  • allow images

By default, I have all three of those features disabled in Firefox. I disable JavaScript as a security measure; I apply my own soothing color scheme to avoid migraine headaches caused by the garishly bright color schemes present on most web sites; and I disable images to avoid an avalanche of unwanted advertisement eyesores.

As a result, I never saw the RSS icon on my school district's quirky web site and was therefore completely unaware that the site even had RSS capability — that is, until I installed the "Subscribe" button on my "Bookmarks Toolbar" in the manner described above. Lo and behold: the bold black "Subscribe" link drew my attention and alerted me to the presence of RSS.

Yippie kay yay! My hunger for RSS feeds is once again satiated.

Sunday, March 18, 2012

Google's "Privacy Policy" Oxymoron

Marketers are rapidly overtaking lawyers as my most despised profession. The marketers take a marvelous tool like the internet and them promptly abuse it. [As an example of non-internet marketing abuses, our local Walmart now has small TV screens in almost every aisle that broadcast nothing but a steady stream of advertisements. And our Exxon gas stations now have a small TV screen between each pair of gas tanks to promote the products sold inside the local store. Gag me with the proverbial spoon!]

Here are some measures I have already taken to try to limit the intrusion of marketers into my internet web browser:
  • turn cookies off
    (selectively allow for those sites that have valid security need like on-line banking)
  • turn JavaScript off, then selectively allow as necessary
  • turn pop-up windows off
  • even turn images off to block gif animations (selectively allowing images for things like editorial cartoons, of course!)
  • use only secure, encrypted Google (https://encrypted.google.com) to search, not the usual open and unencrypted http://www.google.com/
  • recently installed add-on called "Ghostery" on my Firefox browser: a real eye-opener to the vast array of entities tracking us on almost every web site. As a result, I have chosen to block everything listed as 3rd party elements (820 as of this writing!)
I am not happy with what I'm seeing and hearing about Google's changes to their so-called privacy policy that became effective on 1 March 2012. I give them credit for publicizing the changes in advance, but the term "privacy" in this case a gross misnomer. On the contrary, they instead encompass ways to increase the range and scope of sharing user information with an expanding base of commercial vendors. At this rate, "Google privacy policy" is destined to become a classic oxymoron along with my previous favorites: military intelligence, congressional ethics, rap music, and Microsoft Works.

My previous internet service provider (Verizon) assigned dynamic IP addresses, so I would shut down each night and log on the next day to a different IP address. Unfortunately, my current internet service provider (Comcast) assigns static IP addresses. That means that even though I still shut down every night, I log on the next day to the very same external IP address I had the day before. That makes it far too easy for transactions to be identified to me over long periods of time, thus making it easier for vendors to compile my browsing history.

Consequently, I now take special additional measures aimed specifically at Google:
  • When I check my Google mail account, I read the mail and then promptly sign out. No searches or other transactions while signed in to gmail.
  • Same thing for Google+: whenever I sign in to Google+, I read the postings, make my own posting(s), if any, and then promptly sign out. Again, no searches or other transactions while signed in to Google+.
  • Same applies to Google's Blogspot: sign in, post new blog, then immediately sign out. Again, no searches or any other transactions while signed in to Google's Blogspot.
  • Ditto for our family web page posted to Google's web site hosting service at sites.google.com. Same principle applies: sign in, make changes or additions to my web page, and promptly sign out. No other searches or other transactions while signed in to Google's web site service.
  • Likewise for my individualized Google search profile (iGoogle). In addition to selecting a baseball stadium background, I have selected a variety of widgets to show MLB/NFL/NBA scores, the performance of various stock market indices as well as my own mutual fund holdings, news briefs, weather updates, etc. This is the most insidious because I must sign in to see all of this information and I am sitting right there at the Google search page! Even so, the same principle applies: sign on, view the information, and then sign out.
You can see how pervasive Google has become to my internet life, but one clear pattern should now become clear: execute no Google searches while signed in to any Google account!

As a result, in addition to all the privacy measures I outlined above, I have now for the first time in my life begun experimenting with using manual proxy servers chosen from a list of publicly available (i.e., free) proxies. The primary purpose, of course, is to maintain anonymity by hiding my readily identifiable Comcast static IP address.

A quick summary of results after changing to manual proxies, especially the https proxy: Facebook and Google mail require verification (e.g. a CAPTCHA input screen and/or answering a security question) with each proxy change. By contrast, Twitter, Comcast, and Yahoo mail presented no problems at all.

My initial thought was to simply disable my manual proxies and revert to "Use system [default] proxy settings" whenever I access Facebook or Google mail. However, I quickly rejected that notion because Facebook and Google are the most aggressive profilers out there. As such, they are the prime target for security measures such as these.

I have instead settled for a compromise that while not quite eliminating all problems, does greatly reduce them: use manual proxies for the standard http but not for https. If something is securely encrypted already, then I presumably will remain moderately safe even without https proxies and all of their associated problems.

I now feel slightly more comfortable with that compromise because of another recent discovery I just made: my Google Web History has apparently never been activated. You can check your own status by logging on to any of your Google accounts (gmail, Google+, Blogspot, etc.) and then visiting the https://www.google.com/history/ url. In my case, I see the following hogwash narrative:



Web History makes search better

Your Web History includes searches you've done on Google and pages you've clicked in search results. Web History allows you to:

See personalized search predictions as you type.
Get results and recommendations that are tailored to your preferences.
Search the full content of pages you've already seen.

You can view and edit your Web History from any computer by signing in to your Google Account. Learn more.



This is followed by two buttons labeled "No thanks" and "Turn Web History on." Guess which one I selected.

If your history has already been activated, you will have to explore how to turn it off if you still can now that the 1 March 2012 deadline has passed. More than likely, you will have to experiment with settings to minimize future tracking of your comings and goings. Good luck with that!

And if all of this sounds slightly paranoid, just remember what Sigmund Freud himself once noted: even paranoids can have real enemies!

Casey at the Bat - Release 2.0

"Casey at the Bat" was always my favorite poem as a youngster, but now I am beginning to wonder why. In trying to memorize the baseball poem as a mental exercise, I've had occasion to read it over several times as an adult, and I can only shake my head in disappointment.

Consider this: Mudville's opponent was leading 4-3 in the ninth inning. After two outs ("...when Cooney died at first, and Barrows did the same"), Casey's team then suddenly placed runners at second base and third base ("There was Jimmy safe at second and Flynn a-hugging third").

With the tying and winning runs already in scoring position, two outs, and first base open, why on earth would the opponent pitch to Casey? Obviously, they would not: they would walk Casey intentionally and take their chances with the next (and presumably weaker) hitter. Of course, that might not make for a very interesting poem.

At the very least, the poem needs to be re-written with Casey as the sixth batter in the inning, not the fifth. The batter immediately ahead of Casey then needs to get hit by a pitch or draw a base on balls to load the bases with two outs. Only then would the opponent have to pitch to Casey in a bases loaded, two-out, all-or-nothing, do-or-die situation.

As it stands, "Casey at the Bat" simply has no credibility with regard to baseball strategy. Alas: another childhood icon shattered.

Any aspiring poets out there able to compose some extra lines? The following is my first attempt at a proposed new stanza to be inserted between verses 4 and 5:

"But wait! There's more!" as the TV ads would say.
There's one more noxious batter coming into play.
But contemplating Casey, the pitcher lost control.
He plunked that batter with a pitch and cringed within his soul.

Move over, Ernest Lawrence Thayer.