Author Archives: karl.kranich

Repairing an HDMI cable

A friend asked me if I could repair an HDMI cable. The end was broken, and because it was run through the wall in a complicated way when the room was built, it would be very hard to run a new one.

After reading several articles online, I realized that one of the hardest parts of the job would be figuring out the wire coloring – there doesn’t seem to be a standard. The cable was labeled “LWC Digital Media Interconnect E190607-N”. I found this document that got me part of the way, but I had to use an ohmmeter and the broken end to figure out the shielded pairs. At the bottom of this post is the pinout that I confirmed.

My first try was with this solderable connecter kit. But I’m not great with super-detailed soldering, and I couldn’t wrestle the the wires into the correct places and get them soldered without shorting each other out.

There is good advice in this forum discussion, which led me to success with this hdmi field termination kit.  This solution results in a female hdmi connection, which you then extend to the device with a short (normal) hdmi cable. With this kit, a radio shack project box, and a short hdmi cable, I was able to repair the broken cable!

halfway there

halfway there

Continue reading

Google Apps Script to find duplicates in a Google spreadsheet

Sometimes you want to find duplicate rows in a Google spreadsheet, but don’t want to examine every column — maybe you want to exclude a timestamp or other columns.

This Google Apps Script takes a list of columns that you care about.  Then it temporarily copies those columns to a new sheet, looks for duplicates, highlights the duplicate rows in red on the main sheet, and removes the temporary sheet.

The script is attached to this Google Spreadsheet. Make a copy of this sheet, or just copy the script.  You can do that by going to Tools – Script Editor and copying the script to the script editor of your own spreadsheet. Then edit the line that defines the important columns. After you re-open your spreadsheet, the “My Scripts” menu will show up. The first time you run the script, it will bring up the permissions dialog. You’ll need to run it again to make it work.

Here’s a video of it in action:

Opening an S-hook to mount a playground swing

chiselI needed to pry open some heavy duty S-hooks to change out a playground swing.  There were different suggestions online, but none that seemed like they would work for S-hooks this thick.

Finally I realized that I could hammer a chisel into the gap, and it worked!

Now I just need a better way to close them back up — I held them with a Vise-Grip and hammered on them, but they rotated some and got sharp barbs where the Vise-Grip tore them.  I had to grind them down with an angle grinder.


Where did all the space go on my Mac hard drive?

Before I switched to a Mac, WinDirStat was my favorite tool for figuring out what was taking up space on my hard drive(s).

There doesn’t seem to be a great free alternative on OS X, but it’s been totally worth it to spend $12.99 on WhatSizeMac (also available on the Mac App Store).

When you first run it, you get a list of your drives.  Click on the one you want to analyze, and it will start spinning…

whatsizeWhen it’s done, you’ll be in a folder-browsing interface that lets you drill down and find the files and folders that are taking up the most space.  This has helped me clear out a lot of unneeded files from my hard drive (video footage that I didn’t need anymore mostly).

Check it out!


Temporarily use a blog page as your front page

I wanted to temporarily redirect people who browse to to the page  Since this is a WordPress site, I should have been able to easily do this by logging into the dashboard and going to Settings – Reading and changing the static front page to the Donate page.  For some reason, the Donate page wasn’t rendering properly, even though the page looked fine when it wasn’t set as the front page.

Rather than take the time to figure out what is going on in the WordPress processing, I added the following line to the .htaccess file after “RewriteBase /”:

RewriteRule ^$ [L]

This matches any browser requests that don’t have anything after the hostname and redirects them to /donate. It seems to be working well so far.

Communicate your message through a custom 404 error page

Mars Hill 404

I love the idea of using a custom  error page to communicate the gospel — I wish I were that creative!  Above is the 404 page that you used to get from Mars Hill Church.

Think about ways that you can use your 404 page to educate, encourage, or entertain.  Hopefully your site is organized well enough that people won’t see the page often, but they will eventually — it might as well be a positive experience!

Depending on how you’re hosting your web site, there are different ways to customize your error pages.  If you’re using WordPress, your theme might have a custom 404 page template as described here.  If you’ve coded your site manually, your web host might have a control panel to edit error pages, or you can point to custom error pages via your .htaccess file.  The web host 1and1 shows how to use the .htaccess file here.


1and1 upload_max_filesize problem

This is one of those frustrating stories for a tech, where you bang your head against a problem for a few hours, finally fix it, then try to break it again to document it and it doesn’t behave the way you expect.  But it’s still working, so maybe it will still help someone else…

I was trying to upload a 4 MB photo to my WordPress 3.4.2 site hosted at 1&1, and the uploader told me that it was too big — that the maximum upload file size was set to 2 MB in php.ini.  It doesn’t appear that 1&1 gives me access to the main php.ini, so I tried to add one to the root folder and/or the wp-admin folder of my WordPress installation.  Neither seemed to work, but I eventually figured out that I needed the file in the wp-admin folder and I needed to log out and back into the WordPress dashboard.  Here’s the simple php.ini that I added to the wp-admin folder:

upload_max_filesize = 10M
post_max_size = 10M

What was extra frustrating was what happened when I removed the php.ini to document this: instead of going back to 2 MB, the maximum upload size went to 8 MB.  That’s bigger than I needed, and if it had started that way I wouldn’t have had to go through all of this.  I can’t explain it!

Choosing a Microcontroller

Maker Shed has a new Microcontroller Comparison chart comparing six Arduino variants, the Raspberry Pi, and the BeagleBone.

I’m still amazed by the hobbyist wonderland that we live in these days — the number of choices, the capabilities, and the low costs are unbelievable.

For a nice introduction video to the Arduino series, see the descriptions at and the video at the bottom of the page.


Raspberry Pi White Noise Generator

It’s helpful to have a white (or brown) noise machine outside our director’s office, since his office is next to the lunch room and it helps to make his conversations more private.  But all of the machines that I saw on the market are sleep-oriented, and expect that you want them to turn off after a certain amount of time.

We started with a laptop, powered speakers, and the web site (we like the “Brown Noise” sound there).  We could use the mute button on the laptop or the power button on the speakers to turn the sound on and off.  But that’s a waste of a laptop if the machine is good for anything else, and problem-prone if the laptop isn’t good for anything else.

So I decided that this would be a good first project for the Raspberry Pi. I found that mplayer will loop an audio file forever if you use the “-loop 0” switch. It does go silent for a split second when it’s looping, so you’ll want an audio file at least 15 or 20 minutes long to minimize the number of times it sounds like it’s stuttering.

There are plenty of tutorials out there about getting started with the Pi.  After that, it’s as simple as:

  1. Load up an mp3 or wav file with 15 or 20 minutes (or more) of noise.
  2. sudo apt-get install mplayer
  3. create /etc/init.d/ (included below)
  4. add it to system startup with “sudo update-rc.d defaults”

This could also be used as a Music on Hold player for older phone systems.

#! /bin/sh
# Provides:          whitenoise
# Required-Start:    $local_fs
# Required-Stop:     $local_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: whitenoise
# Description:       plays whitenoise file.
/usr/bin/mplayer -quiet -loop 0 /home/pi/whitenoise.mp3 < /dev/null &
exit 0