Saturday, May 18, 2019

A Flexible and Inexpensive AC Appliance Timer

As a workaround to persistent problems with our ancient X10 wireless remote system (which we've used for 26 years to control lights in our home, especially those with ridiculous original switch locations), I went searching for something like a "repeating appliance timer." 
   Timer Outlet, Nearpow Multifunctional Infinite Cycle Programmable Plug-in Digital Timer Switch with 3-Prong Outlet for Appliances, Energy-Saving Timer, 15A/1800W
This timer can control a 15 amp load, and cycle AC current with the following strategies:

  1. Daily Timing - up to 3 periods, defined by OFF and ON times of day (like a typical "appliance timer)
  2. Countdown and Turn Off - the timer will turn the AC outlet OFF after up after a delay from 1 minute to (I think) 23 hours, and 59 minutes; It can optionally sound a built-in audible alarm when the countdown reaches zero
  3. Countdown and Turn On - as above, but turning a device ON (with optional alarm)
  4. Continuous Intervals - the timer will continue to cycle between an ON duration and an OFF duration; the intervals can vary between 1 second and 59:59 minutes, or 1 minute and (I think) 23:59 hours. (This is what I'm using for my X10 workaround, resetting the X10 RF/AC interface every 30 minutes for one second.)
  5. Set Interval Periods (Daily) - this restricts the behavior of #4 above between defined Start and Stop times.
(There's a good chance that by the time you read this - originally posted May 2019 - this particular model won't be available, but I suspect you'll be able to find something similar. I just wanted to share that this kind of solution exists at all.)

I'm excited that these exist, and I suspect that I'll be acquiring a few more.

Thursday, October 25, 2018

Having to Scroll Horizontally to Read Your Gmail? Fix Gmail Message Formatting Caused by Large Images

This doesn't come up that often, but sometimes when I receive email with some kinds of large image files included inline with the body text of the email, Gmail presents the image in actual size, rather than scaling it to fit on-screen. When the image is very large, the image can display at several times the width of the region of the Gmail window for viewing message. Worst of all, Gmail flows the text of the message to the width of the image, requiring the user to scroll left and right to read the message.

This free Chrome extension fixes that behavior, configuring Chrome to automatically scale images to fit in the current message pane (as Gmail should have been written in the first place. Gmail's built-in image viewer is still accessible by double-clicking the image, so the user still has access to the full resolution of the inline images.

Gmail Inline Image Fit

Thursday, May 31, 2018

Batch Extract Image Files from PowerPoint Presentations

After going through a lot of grief with alternate (and unsuccessful) methods to do this task, I ran across this incredibly simple solution for extracting image files from within PowerPoint presentations. (I'm repurposing decades-old PowerPoint presentations with hundreds of images on hundreds of pages, so hand-extracting the content image-by-image, page-by-page is tedious and even physically painful.)

The only minimum requirement is that the PowerPoint files be in .pptx file format (not just .ppt), or access to a version of PowerPoint from Office 2007 or later, which can write .pptx files.

This example is on a Mac, but the same principle works on Windows, all that is required for Windows is an un-ZIP utility.

The solution is SIMPLE. SIMPLE.

  • If the PowerPoint file has a .ppt extension, open it in PowerPoint 2007+ and save it again as .pptx.
    • PPTX files save presentation data as widely-supported XML data structures, compressed in a package using the venerable ZIP archive format.
  • On a Mac, rename the .pptx extension to .zip. The Finder will ask if you’re sure. Click “Use .zip.”
  • Double-click the resulting .zip file. The Finder will uncompress the file into a directory structure. Inside[folder with orig filename]:ppt:media are all the image files in their native formats.


Sunday, May 06, 2018

Quickly Rotate Google Photos with a Keyboard Shortcut

While it's possible to rotate an image in Google Photos by:

  • clicking on the photo's "Edit" icon
  • clicking the  "Crop & Rotate" icon
  • clicking the "Rotate" icon once for every 90 degrees clockwise
  • click "Done"
  • click "Done" (again)

That's an incredibly tedious process, especially if several images need to be rotated.

There is a much simpler procedure. Click on an image in Google Photos, and press [shift]+[R] on the keyboard. The image will rotate 90 degrees counter-clockwise. Repeat the shortcut to rotate another 90 degrees as necessary. The change is committed with no further actions.

Pressing the [left arrow] and [right arrow] keys on you keyboard, you can advance to the previous and next images, and repeat the rotate operation. Thus, you can quickly rotate a number of images.

Tuesday, February 13, 2018

SOLVED: Harmony Ultimate Home no longer responds to some Google Home commands


Beginning some time since February 10, 2018, we can no longer invoke many of the Activities our Harmony Ultimate Home via voice commands to our Google Home. When we say, “Me: “Hey Google, tell Harmony to turn on DVR3,” Harmony responds by voice that it does not know how to respond.

(Learn how to configure your Google Home and Harmony hub-based remote to control your Harmony by voice commands at this Logitech Support page: Harmony experience with the Google Assistant.)


I discovered through experimentation that for SOME Activities that I have created, Harmony no longer responds to the expression “tell Harmony.”

SOLUTION: Always say “ASK Harmony.” This has completely resolved my problem.

UPDATE 2/14/2018: My symptoms are entirely related to the presence of numerals in my Activity names. See more below.


Some time after 2/10/2018, some hub-based Harmony remote systems stopped responding to certain voice requests made through linked Google Home devices.

Experimentation reveals that Harmony responds with an error message if both of these conditions are true:
  • The voice command uses the phrase "tell Harmony,"
    • AND
  • The Harmony Activity name contains a numeral or a word representing a number
Substituting "ask Harmony" for "tell Harmony" results in normal execution of the requested Activity.

Renaming the Activity to omit any numerical references also results in normal execution.


Around two days ago, (February 11, 2018), I discovered that SOME of the Activity requests sent to the Harmony Home Ultimate via our Google Home were no longer understood by the Harmony.

Me: “Hey Google, tell Harmony to turn on DVR3.”

Harmony (via Google Home): “Sorry, I misunderstood your last statement.”

Other possible Harmony responses (which vary randomly):
  • “Sorry, I don’t understand.” Ask Harmony for help to ask what I can respond to.” 
  • “Sorry, I’m not totally sure about that.” 
  • “Sorry, I don’t understand. Visit to learn what I can respond to.” 
NOTE: This is the _Harmony_ voice responding, and NOT the Google Home voice.
Curiously, SOME of the Activities could still be invoked. Here is the list of failures and successes:
  • “Hey Google, tell Harmony to turn on DVR1.” FAIL
  • “Hey Google, tell Harmony to turn on DVR2.” FAIL
  • “Hey Google, tell Harmony to turn on DVR3.” FAIL
  • “Hey Google, tell Harmony to turn on Apple TV.” SUCCESS
  • “Hey Google, tell Harmony to turn on PS3.” FAIL
  • “Hey Google, tell Harmony to turn on Chromecast.” SUCCESS
  • “Hey Google, tell Harmony to turn off.” SUCCESS
Rebooting and power-cycling the Harmony hub and the Google Home had no effect on the symptoms.

I tried altering the name of the Activity in a minor way: I changed “DVR3” to “DVR 3” and “DVr3” (noting that all the problem Activities were all-caps), but the problem persisted.

However, completely changing the name from “DVR3” to “Elephant” allowed me to invoke that Activity by saying “Hey Google, tell Harmony to turn on Elephant.” Changing the activity name BACK to the original “DVR3” reintroduced the problem (which is a great diagnostic clue).

Eventually, I tried a different verbal command. Instead of saying, “Hey Google, _tell_ Harmony to turn on [activity name],” I said, “Hey Google, _ask_ Harmony to turn on [activity name].” Success! Without making any changes whatsoever, simply changing what we say - using the polite “ask” rather than the imperative “tell” ALWAYS WORKS.

So something has changed. I’m certain that we’ve always said “tell Harmony” because since November 2017, we’ve had a hand-written sign on our AV cabinet which I wrote for my wife the first day I set up Google Home to work with the Harmony. The sign reads, “Hey Google, tell Harmony to turn on DVR3.”
Even further and more absolute proof: Google Assistant keeps a log of all your activities:
The same command which worked on February 10, 2018 fails on February 13.

Unclear is whether the change that’s taken place was by Harmony (Logitech) or Google.

For now, I’m happy to be back in business.


Thanks to feedback from Logitech Harmony forum user "john_woo," I realized that I'd entirely missed a clue that I'd put in my list of SUCCESS/FAIL Activities above. All of the Activities that result in a Harmony error response when issuing the "tell Harmony to" command have a number in them. (And to reiterate, using "ask" instead of "tell" works even with a number in the Activity name.)

Interestingly, replacing the digit "3" with the word "three" doesn't help. The error persists. To test whether the prohibited terms were digits, I tried incorporating a "30" into an Activity name. So it appears that any use of a numerical reference in an Activity name will cause the request to fail if "tell Harmony to" is also in the voice command.

Something appears to have changed in either the Harmony (Logitech) or Google code which prohibits the use of a numerical value (whether expressed as numerals or written out as a word) in a Harmony Activity name, when used in conjunction with a "tell Harmony to" voice command.


In the course of trying to find any information about this problem online (and since I just found a post from someone else from February 10, 2018, I’m guessing that this problem is too new for there to be any online information), I discovered that by using Google Assistant Shortcuts, we can eliminate having to say the “ask Harmony to” part altogether. By following the instructions starting in Section 4 of this Logitech Harmony Support page, you can shorten these commands from:

“Hey Google, ask Harmony to turn on DVR3”

“Hey Google, watch TV”

...or whatever you’d like to say to start a Harmony Activity.

(If you really wanted to, you could use a Google Assistant Shortcut to still say “tell Harmony” and have Google pass along the more polite and functional “ask Harmony” instead.”)

Wednesday, January 31, 2018

Fixing Stuttering/Jumpy Cursor Problems on Mac Pro with Magic Mouse

I love the top tracking surface of my Apple Magic Mouse - to me, it's the best-ever solution for scrolling, even allowing simultaneous scrolling while moving the cursor.

However, on my Mac Pro 4,1 (2009), cursor control has been spastic, making use of the Magic Mouse frustrating. Concurrently connected Apple Bluetooth Trackpad and wired Mighty Mouse both work normally, thus suggesting that it wasn't either the cursor control subroutines or the Bluetooth system at fault. I've kept all of them connected for years, switching around for either better cursor control or better scrolling.

Periodically, I'd look for solutions to the oft-reported problem, but none of the fixes I attempted had any effect.

Then I found this blog entry: MAC PRO 2009 BLUETOOTH FIX

And was immediately convinced that this blog's author had identified the true culprit: that the Bluetooth antenna location inside the aluminum case of the Mac Pro made for very poor signal propagation (my mousing surface is 10" from the top-front corner of the Mac Pro, and perhaps 30" from the OEM Bluetooth antenna's location inside the case). I liked the sound of the author's "BLUETOOTH FIX USING ORIGINAL BLUETOOTH CARD" solution, which mounts an aftermarket antenna on the outside of the Mac Pro's case.

As of January 2018, I found that Amazon stocks a 2-pack of both the appropriate antennas and the prescribed "pigtail" antenna cables for only $10US:

  • (2) 6dBi 2.4GHz/5GHz Dual-Band WiFi RP-SMA Antenna
  • (2) 35cm U.fl / IPEX to RP-SMA Antenna WiFi Wireless WAN Pigtail Cable
The brand name listed is "Highfine."

The fix is somewhat involved, requiring removal of the Mac Pro's CPU daughterboard and graphics PCI card. The solution also requires some real estate on a PCI mounting plate - the blog article specifies drilling a hole in a blanking plate, but all my PCI slots were populated. I chose to remove an infrequently-used adapter card for a video-acquisition box, but if I were to re-install that, I'd probably add the antenna to a USB 3 adapter PCI card. Fishing the pigtail cable through to the Bluetooth card, and actually working with the tiny U.fl connector can be challenging. 


Problem solved! The Magic Mouse now works like a . . . mouse! Performance is fluid and consistent. It was totally worth the effort.

Tuesday, June 13, 2017

Prevent Your Mouse from Scrolling Between Months in Google Calendar (when using Chrome)

It turns out that I wasn't the only one infuriated by the default behavior of Google Calendar to scroll between months with a mouse wheel. Especially with the Apple Magic Mouse (which controls 2-dimensional scrolling with the touch-sensing top surface of the mouse), unintended switching between months is frequent and aggravating.

Programmer Ivan Morgillo created an extension for the Chrome browser which disables mouse scrolling in Google Calendar. The extension is open-source and free.

NOTE: After installing the extension, you'll need to quit and re-launch Chrome for the extension to disable mouse scrolling in Google Calendar.

Google Calendar Scroll Disabler at the Chrome Store

For nerds: google-calendar-scroll-disabler's GitHub page

HINT: If you want this behavior to be modified across all your Chrome-equipped computers, you can sync your extensions across Chrome installations.