Attention comment spammers! I screen every comment on this blog before publication. Please apply your skills to do something better for our world.

Posted on by Don | Leave a comment

Linux Mint 18 “Sarah” MATE Edition on Acer Aspire E5-575-33BM

Just completed the installation of Linux Mint 18 on a new Acer Aspire E5-575-33BM as a Christmas present for my wife. Her 2007 Intel Core Duo Macbook 2,1 running LM 17.2 was getting too cranky and the battery life was getting shorter so it was time for an update/upgrade. I’d considered getting her a Chromebook but the price delta was not that much between getting a 15.6″ Chromebook (which has printing issues) and this machine which included a 1TB disk. She can always use my Chromebook by simply logging in with her Gmail account, so there was little to lose by going with the more capable machine.

She has become very comfortable with using Linux over the past year plus on her Mac and it has met all her computing needs so it was a no-brainer to avoid the intrusive solution that is Win 10 and go Linux on this unit too. The following are the steps I took to make it work. Got some clues from here and here.

  • Update Acer Firmware. The update tool works only under Windows, so I did this before modifying the machine. Booted into Win 10, did only a basic system set up (including disabling ALL automatic updates before connecting to the web) and then ran the FW update downloaded off the Acer site. Latest FW (jumping two versions) installed fine.
  • Twiddled some FW settings (press F2 at power on) to allow for Legacy mode booting off a Linux Mint 18 MATE live USB image and tested basic functionality – pretty much everything worked fine. Cool. Shut down and remove back panel to do some HW work.
  • Swapped out the Samsung EVO 850 SSD from her old Macbook to the new Acer, removing the 1TB disk for safe keeping with the Windows 10 install. Just swapped the applicable disk caddies and put the SSD in. For giggles I twiddled the FW once more to use Legacy (BIOS) mode and was able to boot the existing LM 17.2 image just fine on the new machine, but the wireless did not work and it was a 32 bit install, so it was time to install a new version for the 64bit machine.
  • Updated FW settings once more to enable USB boot for the installation and disabled Secure Boot (yet UEFI was enabled).
  • Booted live USB for installation. As for some strange reason I did not follow my common practice in the old LM 17.2 installation to set up a separate home partition, I needed to migrate the contents of home to someplace safe – so I used GParted to create and resize partitions for both home and the UEFI boot files (and to create backup images). Used FSArchiver (Partimage doesn’t work on ext4 file systems, which my prior install was on) to create a backup disk image of the old 17.2 environment. Migrated the home directory files using GRsync to the new /home partition. Installed LM 18 from the live USB, which took a surprisingly short time with a wired Ethernet connection.
  • Bring up FW set up once more and enabled Secure Boot again. Within FW “trust”ed the UEFI partition files for Secure Boot. Reboot and come up in new LM 18 environment. Using Driver Manager, installed the intel_microcode firmware to support the i3 processor. Reboot as required by Driver Manager.
  • Run Mint Update Manager and install all 167 offered updates. Onboard wireless works, but is incredibly slow (1 MB/s), yet all available updates are installed. Tried a bunch of online solutions to update the Atheros Ath10k firmware and kernel, etc. which didn’t work – and ended up causing some problems when I tried backing them out – so I ended up repeating the installation of Mint once more from the FW/Secure Boot settings through to the reboot required by Driver Manager above.

I have on hand an Edimax USB WiFi dongle with a Realtek chipset, so tried that one out via Network Manager and it connected at 54 MB/s right away. So for the time being, we’re sticking with that one and pretty much everything now works – sound, volume control via function keys, wireless, video playback, Jacquie Lawson Christmas Web Advent Calendar card (HTML5 or flash-based?). Brightness control does not work via the function keys yet but does work with the software control.

Machine is very snappy under Linux (much faster than it seemed under Windows 10) and idles with just single digit percentages of CPU core use and a small fraction of the 4MB DIMM capacity being used. Screen is very nice. Battery life is still TBD under normal use (as I was hitting it pretty hard with all the installation work), but it definitely goes for at least something like 6+ hours.

Think this one will work out well for some time into the future – the OS is supported until 2021!

Posted in Computer, Linux, Mint, Windows | Leave a comment

Creating OpenVPN .ovpn Files for Android (Any?) Clients

In another post I cover setting up and OpenVPN server on a Tomato powered router and making client connections to that server.

In setting up a new phone, I see the OpenVPN for Android app will now import yourVPNclient.ovpn files (much easier than transferring and importing the separate key and cert components as covered in my prior post). It took a bit of Googling to find out how to create the .ovpn files, but now that I’ve found the file format, setting one up turns out to be a piece of cake. Here’s the template:

proto udp
port 1194
dev tun

key-direction 1

# insert base64 blob from ca.crt

# insert base64 blob from client1.crt

# insert base64 blob from client1.key

-----BEGIN OpenVPN Static key V1-----
# insert ta.key
-----END OpenVPN Static key V1-----

I edited the “remote” directive to point to my VPN (router’s) dynamic DNS address and then copied the specified parts of the files from the /etc/openvpn directory as created in my prior post to this template. Then saved the consolidated file as myserver+clientname.ovpn.txt on my linux box.

Why with *.txt extension? Because otherwise the bluetooth file transfer from my desktop linux box to my phone would fail (unsupported file type). Text file transfer is supported, .ovpn is apparently not.

I then simply renamed the file on my Android phone to drop the .txt suffix and imported the resulting file in the OpenVPN for Android app (it turns out you can leave it, but the app will include that text in the connection name by default, so I now simply cut it there). I still needed to go through and set some options properly in the app to match my server config (LZO, persistent TUN, etc.), but the heavy lifting was already done.

Connected successfully on my first try! I see no reason why the same file set up would not work in NetworkManager on Linux or some other client, but I haven’t tried myself. Good luck!

Credit for the .ovpn template content goes to this ServerFault discussion thread .

Posted in Computer, Linux, Web Architecture | Tagged , , , , , | Leave a comment

QR Codes as a Password/Key Storage Mechanism

I was doing some recent volunteer work for the Concord Scout House, Inc., setting up a new network and telephony infrastructure for this non-profit enterprise. In setting up the various pieces of equipment, I was sure to create strong passwords and use key and certificate based encryption or similar security mechanisms in order to keep things secure.

Of course, I kept copies for my own records in a suitable electronic format (I personally do local plus encrypted cloud backups of critical files via Spider Oak). As this is a volunteer job, it is very possible someone else will need to do something with this infrastructure at a later point – when I may no longer be involved with the organization. This left me with the problem of how to document and pass on those passwords and keys in a convenient and durable fashion to those who may follow.

I could prepare a DVD or flash drive with the passwords and keys, etc. in simple text files to hand over. This could work fine but also quickly fall prey to changes in applications or operating systems (e.g.: Wordpad or vi? Unix or DOS line feeds?), hardware technology (how many Android phones have a DVD reader? will USB2/3 ports be usable in 10 years?) or simple hardware failure (scratched DVD). For convenience’s sake, I will provide a soft copy on DVD (as that may be stored easily in a file folder) but there’s one medium all organizations still know how to deal with and store safely: paper.

I could simply print out the passwords and certificates/keys as plain text on sheets of paper, but then someone trying to use it would have to accurately type in that text at a later point where/when required. As we’re talking 100+ characters in some cases, this simply won’t work. Here’s where QR codes come in. I happened upon this blog post which mentioned the idea of using QR codes to store such text as a paper record, able to be machine read for accuracy at a later point. Brilliant!

So here’s a practical example of generating such a paper copy of a password using only online free resources, so no software installation required (of course, there are many programs or apps you may install, should you wish to be off-grid):

The password example:


This is a very strong password which, although it isn’t simply random, is still quite secure due to its length (66 chars.) alone. Even the NSA with all its resources would take a very long time to crack it, provided the encryption mechanism doesn’t suffer from a back door or other systemic vulnerability. Given the pseudo english phrasing it would be possible to type or even memorize this password, but it wouldn’t be easy. And a single character discrepancy means not getting in to wherever it protects.

Generating the QR code:
One of many free online QR code generation sites is Taking the above password there, we can plug it into their on-line code generator:
Generating the QR code online

And download the image file of that password in a QR code:
Generated QR code

This QR code can then be placed on a printed page.

Reading the QR code to “reawaken” the text:
There are also many online QR reader/decoding sites, including:

This site provides for you to either take a picture of the code via your device’s camera, or upload a file with the code image (say from a scanner or photo of the paper page) and returns the code content.

Uploading the above QR code image file results in the following:
Decoding the QR image

A perfect copy of the original plain text password!

Posted in Computer, Non-Profits, Web Architecture | Tagged , , , , , , , , , , , | 1 Comment

Replacing Hood Release Cable on a 2003 Saturn Ion

Just a quick note on this one. We have an old Saturn with 155,000+ miles on it. Things are at the stage where lots of stuff is starting to break (exhaust, front brakes, starter) and need repairs, but it still is good basic transportation to keep around as a second car and gets better mileage than our Subaru Outback.

With all the recent repairs I’ve been doing, the fact that I’ve been using a coat hanger stub poking out of the grille to open the hood (after the release cable broke a couple of winters ago) started to get old. Looking around the web there was little info on how to actually do the repair but the parts were fairly cheap – I was able to get a “used” and “minor cosmetic issue” unit from Amazon’s Warehouse deals for under $16. So I decided to give it a go. (BTW, the cable ended up being brand new in original packaging when it arrived, yay!)

Should you be looking to do the same, I figured out an easy way to get the fix done.

Our cable had snapped (and the handle came off) from the end inside the car. The cable is routed from inside the kick panel next to the driver’s side, up behind a bunch of insulation/sound deadening stuff, through the firewall (passing through an integrated grommet) and into the engine compartment. From that point below the cowl area it travels along side the battery connection/fuse box frontwards and through a hole in the radiator support and turns toward the center hood release. There are two routing clips along that route through the engine compartment, one near the fuse box and one just through the radiator support.

It seems there was a factory technical service bulletin at one point due to the fairly common seizing and breaking of the hood release. Water was getting inside the cable sheath and freezing in cold weather or causing corrosion which ultimately jammed the cable. Cables were replaced while still under warranty and they changed the routing of the cable to pass over (instead of through) the radiator support to eliminate the dip in the cable which was trapping the water.

Looking at this situation, I was not looking forward to having to manually route this cable so I was looking for some way to get it done more easily. I ended up figuring out a really simple solution and had the cable done in less than 10 minutes once I started. Here’s what I did:

Inside the car, remove the trim alongside the driver seat/rocker panel area – lift the plastic at the seam/split and snap it off (4 clips, 3 on the rocker panel and one under the dash). This reveals the hood release lever mount and the cable end. While our lever was already broken off, you can take off the lever here and remove the cable end.

Under the hood, remove the cable end from the hood release lever (I also removed the grille assembly via the 3 small bolts to give me more working room as I was removing my prior coat hanger hack as well). Pull the ferrule towards the front of the car (firmly) to remove it from the bracket and then down to provide slack in the cable. Wiggle the cable end out of the release lever so the cable can come fully free. Trace the cable and release it from the two guide clips mentioned above.

Now that the cable is free of all but the firewall pass-through, go back to the driver’s footwell. There I used a plumber’s pipe cutter tool to cut the cable sheath several inches from the cable end and pulled the sheath off so that I had several inches of bare cable available (you may need to cut off the cable end ball). I then used a pair of vise grips to clamp on the sheath and pull about a foot of the cable assembly back into the footwell. This dragged along the integrated grommet on the cable, which I slipped off after removing the vise grips. Now there was a full length of smooth cable sheath I could pull back through the firewall to the engine compartment side.

Inside the car, I took the new cable assembly and attached the lever to the end of it. After wrapping several turns of the old cable around the front/latch end of the new cable (being careful not to kink the new cable), I wrapped a couple of turns of duct tape around it (staying clear of the new cable as much as possible in order to not gum it up). I was able to then go out to the engine compartment and simply pull the free end of the old cable and it dragged along the new cable, pulling it through the firewall (including seating the grommet) and along the existing routing to the radiator support. Once there I did the equivalent of the factory TSB and routed the cable over the radiator support and back down to the hood release to prevent the cable dip.

However, before installing the cable at that end, I lifted it to face vertically and squirted a whole bunch of white lithium grease in the cable end to lubricate it and inhibit moisture. I then proceeded to install the cable into the hood release as it was before, being sure to snap the ferrule in properly and tight. Snapped the cable back into the guide clips and installed the release lever onto the cable in the footwell. Slid the release lever assembly into the mounting bracket in the footwell and tested the release to be sure the hood opened (which it did smoothly/easily!) and then reinstalled the fascia panel from the kick panel and along the rocker panel.

Now that I knew the hood could be opened normally, I then reinstalled the grille assembly and made sure to align it with the hood (required some wiggling before tightening the bolts). Done – now we don’t have to explain to service personnel how to open the hood anymore!

Posted in Automobile, DIY, Frugal Living, Handyman | Tagged , , , | Leave a comment

DIY Crock Pot Sous Vide System

On a visit to some friends I became aware of the whole topic of Sous Vide “under vacuum” (SV) cooking, the concept of using a controlled water bath to cook food (particularly meats) at low(er) temperatures for more consistent and desirable results. High end restaurants have been doing this for a while. At the time, Sous Vide systems were quite expensive but some home cooks were doing ingenious hacks to simulate a professional SV cooker by using hot water in beer coolers, etc. In that discussion, I mentioned that I thought one of the small computers I was toying with for home automation (HA) could make a simple & cheap SV system with some other basic parts.

It took me some time to come back around to the whole SV idea myself. Not too long ago I came across a great deal on some London Broil at Market Basket and that served to get me going on setting up my own SV system using parts I had already at the house from my previous HA projects. While there are now some SV immersion systems on the market for under $200, I thought I had everything needed to make one on hand. I figured I could try it out and see what I thought of SV cooking without spending any more money. Here’s what I came up with.


OK, with that out of the way, here’s a photo of my solution:

My DIY Sous Vide System

The major parts here are:

  • standard Crock Pot slow cooker
  • Programmable Power Controller, consisting of:
    • CAI WebControl PLC (Programmable Logic Controller) unit
    • DS18B20 1-wire temperature sensor, embedded in a stainless steel probe
    • AC to 9v DC power adapter
    • 5v “Arduino” relay board
    • Misc. breadboard wires, low voltage wires and a PC 12v fan connector
  • 110v home wiring components:
    • Light switch
    • Power outlet
    • Appliance power cable
    • Misc. wires and connectors

Update 5/29/2016:

I’ve now been using this set up successfully for nearly a full year. Today I’m doing a SV Leg of Lamb for later finishing on the BBQ grill. Other meals have included lots of chicken, pork and beef – each one has turned out really well (I’ve yet to do fish, but will try it soon). I’ve not posted my PLC code up to now because I was awaiting it becoming stable – which I think I can now consider it, as it’s pretty much worked unchanged since day1 – so here it is. A bit of explanation:

HEAT_ON is a subroutine to energize the power relay, HEAT_OFF does the opposite.
HEAT_MAIL informs me of changes in state of the power relay.

Using the WebControl PLC’s General Setup page, various values can be set to control the program:
UROM1 is the desired set point (degF *10), so 1360 is 136.0 deg
UROM2 is the lower offset (degF * 10), so 8 is 0.8 deg – this controls the amount of swing in the actual temperature and will need to be tweaked for a given crock pot. This determines the actual point at which the heat will be turned on.
UROM3 is to enable or disable the power relay. 1 enables.
UROM4 is to enable or disable the email notices. 1 enables.







I’ve also set up a script on a Raspberry Pi on our network which I use for data logging of each batch. At 10 minute intervals it captures the relay state and current bath temperature into a .csv file via a URL get from the WebControl. I can use this data for tweaking the UROM2 value above and for modifying my recipes going forward.

I’m very pleased with the system now and may be extending it to control more than one bath. For instance, today I was wanting to do both a pork loin and the lamb leg at the same time. There’s not enough space in the crock pot for both, despite the temperatures being able to be the same (but duration differing). With some code changes and multiple probes & relays I could control several baths.

I may also be creating an internal web portal on the pi which could provide real-time graphing and settings management for the SV set up, so I don’t have to look up what UROM values mean what each time! πŸ™‚ This will be more important if/when I extend it to multiple baths, as only the UROM values have a built-in web interface on the WebControl unit.

Posted in Cooking, DIY, Frugal Living, Handyman, Sous Vide | Tagged , , , , | Leave a comment

Hack: Recycled Scrubbies!

We love to save money and the environment. Aways great when you can get a two-fer, and here’s one!

Do you need non-scratching scrubbing pads for cleaning around the house? Did you know that the woven plastic netting from vegetable packaging like this onion bag works wonderfully? No need to buy scrubbies when you can make them yourself from something you aready have!

Just cut the woven material away from the product labeling and you’re set to go (it used to be easier when the bags used to have simply ties – before they started bonding plastic labeling to the netting – but I haven’t found any brand that doesn’t do it now). Avoid the other non-woven plastic “netting” bags that are sometimes used (where they simply slit a flat sheet of plastic and stretch it into an open net form) as these have sharper edges and may scratch.

Be sure to test it someplace inconspicuous to be sure it doesn’t scratch the surface in your application. I find these work great for cleaning out grubby pots and the kitchen sink. If they get messy just toss ’em in the recycling bag after rinsing them out and grab a new piece – they don’t “cost” anything, after all! πŸ™‚
2015-05-20 20.29.34

Posted in DIY, Frugal Living | Tagged , , , , , , | Leave a comment

OpenVPN on Tomato with Android and Linux Clients

I’ve been wanting to do this for a very long time. When away from home I sometimes need access to the systems (or data residing on those systems) back at home. I wanted to set up a secure means to access the machines behind my router’s firewall and one of the most versatile and secure ways to do that is with a Virtual Private Network (VPN). The problem was that this stuff is pretty complicated and even though the open source firmware we run on our router has had a VPN-enabled version available, I’ve been loathe to try implementing it.

Well, the garage control system project I was recently working on had a hardware failure such that I could not implement it in the original way intended (until I replace the CAI WebControl board central to it). The board failed in such a way that it would not accept PLC programming but would still respond through the default web interface – which unfortunately is not sufficiently secure to expose to the internet directly. However, we were going away for an extended period and I needed to be able to access it while away. A perfect application for VPN technology, I could keep the “vulnerable” system firewalled behind the router and poke a secure hole through it using the VPN to control it from afar when needed. Just the shove I needed to get going on the VPN!

Curiously enough, in googling, I was able to find various basic tutorials about setting up a Tomato VPN-enabled router (which is Linux based) as a VPN server with Windows clients and creating the certificates and keys on Windows but pretty much nothing simple about doing so with other platforms like mine – Android (again Linux based), Linux and Mac. The ones about setting up a VPN with Linux all seemed to want you doing everything down in the weeds of config files and installing VPN packages on your own server (not a router). Not what I wanted.

The good news for you and me is that I figured out how to get this done with minimal effort and it pretty much worked perfectly on the first try, so I’m writing it up here for future reference and to share with any others following this path. Looking back, it wasn’t that hard but the lack of clear guidance made it all confusing. All that said, here’s some clarity on how to get it done:

Creating Certificates and Keys

On Linux Mint LMDE (Debian Linux) workstation, using Synaptic or another package manager install:

This will install the easy-rsa scripts into

Taking note of the instructions at, I did the following:

Copy the easy-rsa files to another location that will persist after package upgrades (note, this location already existed as a result of the openvpn installation and contained the single file update-resolv-conf, so maybe that claim is misleading?) and cd into that directory:
sudo cp -R /usr/share/easy-rsa/* /etc/openvpn/
cd /etc/openvpn

Edited the vars file using vi to set the KEY_COUNTRY, KEY_PROVINCE, KEY_CITY, KEY_ORG, and KEY_EMAIL parameters. These were at the bottom of the file for me. From what I can tell, the two email entries are identical but for the quote symbols. I presume the quoted one is meant to be the “real life name”, but nothing I could easily find via google confirmed or contradicted this – so I just set them both to the same address.

export KEY_CITY="MyCity"
export KEY_ORG="My ORG Name"
export KEY_EMAIL=""

I then completed the rest of the steps at the above link using root/sudo priviledges, creating the certificate authority, server certificate and key and then the client certificates and keys. What I found online was not very informative on this point, but the Commmon Name (CN) must be entered each time you build these items and should be varied so as to be descriptive. So, for each command:

For this I specified my own name as the Common Name (I’m my own certificate authority) and it generated two files, ca.crt and ca.key (note, these are not named after the Common Name given, unlike the following).

./build-key-server ServerName
I gave my intended VPN server name as the ServerName which it then used as the Common Name and generated ServerName.crt, ServerName.csr, ServerName.key plus a 01.pem file and changed the index.txt and serial files in the keys directory.
NOTE: I also here encountered something different than that laid out at the above URL, for each key it asked me for:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
which I simply clicked Enter through (I presume to set as blank, as no password was later asked for).

./build-key ClientNameHere
I gave unique descriptive names for each client and it created similar files to the server ones above, named per the client names I gave, created sequentially numbered pem files and updated the index.txt and serial files.

Returned Generating DH parameters, 1024 bit long safe prime, generator 2
This is going to take a long time
(But it didn’t – it was less than 5 seconds on my main Linux 64 bit workstation)

In the Arch Linux wiki entry for EasyRSA it stated that there was a need to convert the server certificate to an encrypted .p12 format for use on Android. I found this to not be needed, using the OpenVPN for Android client from the Google Play Store.

In order to provide additional TLS security and to protect against potential denial of service attacks against my router/VPN server I also set up an HMAC signature:
openvpn --genkey --secret ta.key

Setting the server and clients up…

As I created all the certificates, keys, etc. on my main Debian workstation, I needed to transfer those files to the associated machines. First I used my browser and the Tomato-powered router (VPN server) web interface to set up the VPN server following the info here *except* for using TUN instead of TAP. Installing Tomato is covered in my other blog post. Here’s screenshots of my settings (click on them to enlarge):

Connecting with a Linux machine. I then set up the test client on my Mint LMDE/Debian laptop following the leads at , which dragged along a bunch of other required packages including openvpn, easy-rsa, etc. I imported the certificates and keys when setting up the VPN connection using NetworkManager. Trying to connect via this initially failed. I thought this might be because I was on my home network at the time, so I proceeded to set up my phone as a client to see if I could use the cellular network to test outside access.

Connecting via Android. I installed OpenVPN for Android from the Google Play store onto my cell phone. Copied over the certs and keys to my phone using USB cable and set up the connection in the app. Took a bit of twiddling to figure out where everything went and which boxes to check, but it connected quickly once set up. Could access private resources behind the router firewall now! I went on to set up my Android tablet with the same app.

Connecting from an Outside Network. Brought my phone, Linux laptop and Android tablet for a drive to find an available Xfinity Wi-Fi connection. Tried each client to access the VPN once connected to some poor folks’ wireless access point (why folks stand for Comcast doing this, I don’t know), and they all connected quickly and could access my Garage Control System web interface on my home network… success!

Note that in none of these set-ups did I need to edit or create any configuration files manually on the clients or server, despite lots of other tutorials making great points of this! It appears each of the OpenVPN server and client implementations I used took care of this for me.

The only bit of weirdness is that I cannot figure how to directly disconnect from the VPN using NetworkManager under MATE desktop on my Linux laptop. I can disconnect the VPN by dropping the wireless connection overall. There should be a “Disconnect VPN” option within NetworkManager but I don’t see it on my laptop when I’m connected (it is there when I’m not!). But that’s a (minor) problem for another day.

I’ve found the disconnect option in the VPN menu under NetworkManager and that can be used to drop the VPN connection. The Android clients have a connection status entry in the notifications list which provides a disconnect option once clicked on. All good to go now!

Posted in Computer, Debian, DIY, Linux, Mint, Windows | Tagged , , , , | 10 Comments

Spicing Up Your Dance Collection with Pepperplate

In this post I will lay out some history of how I have managed my dance collection and what I am currently exploring as a way to greatly simplify the work of building and maintaining that collection and making it available whenever and wherever I am.

I’ve been calling (leading/prompting) contra dances for several years now. One of the things you need to figure out pretty quickly when you decide to become a caller is how you’re going to record and organize your dances.

Like most beginning callers, at first I recorded dances by hand on index cards (or all too frequently, any spare sheet of paper I could find at a dance). As my collection grew (and I started actually having to use these compositions to lead others through the dances) my requirements for standardization and legibility grew. (In all fairness, my background includes quite a bit of business process work – so I’m a bit of a process wonk.)

So for a couple of years now I’ve been working with a system which typically involves too much work. Why? Because I chose to standardize on using 3×5 inch index cards, which turns out to be pretty darn small. The 3x5s have enabled me to carry my core card collection easily in my dance bag if I want. But the small size means I need to really work on re-writing a lot of the material I gather to abbreviate or summarize and reduce to a standardized shorthand format I record on my cards. The real estate has been very constraining (but in fairness has made me really good at slimming down language clearly). And when someone else wants to see my card or I post a dance to a discussion group there’s sometimes questions about the notation.

I have been creating these cards using a template I had set up in Open Office Writer (now Libre Office) which then I would laser print 4-up on card stock as I added new ones or a given card wore out/was revised and then cut them with a paper trimmer to size. I could also export the cards to a large PDF file containing my whole collection. I kept both the pdf and original files backed up and synchronized across several computers via Spider Oak so I would never fear losing my collection. An example card:
A dance card format example.
My workflow for finding dances and transforming them into a usable card was essentially:

  1. Find a dance I liked. This could be from dancing or seeing one danced or based on something in email from a group/forum, etc.
  2. If got in person, I originally would scribble it down. Sometimes a caller would offer to email it to me. My latest trick has been to either take a cell phone picture of a caller’s card or quickly get the dance name and/or moves entered into Google Keep on my phone.
  3. If via email, I tag the email with a “Dance to Collect” tag in GMail which becomes a queue to transcribe from.
  4. Discover my dances in queue (Keep, email or photos) and review them for quality/suitability. Was I just in a dance trance and got carried away or is it really a good one? Will I actually call it? If all good, continue on. If not, delete or recycle the paper.
  5. Process worthy dances into standard format, adding them to the master Writer file. Queue them in the “dances to review” section and when there’s a suitable chunk, print on recycled regular sheets of paper to try out.
  6. Kitchen Validate. Try dancing my transcribed card in our kitchen. If needed, cajole other family members to run through it with me. Apply my now standard set of QA checks to the dance (progresses? work for both roles? etc.) and create teaching notes as required for when I’d call it.
  7. Dance Validate. When a suitable opportunity presents, call the dance. Note any key learnings on the card and mark it as validated as applicable. Factor in any dancer or musician feedback (often noting the tune chosen, if I’m sharp enough to ask).
  8. Update Cards. When I’d think of it, I would drag out my cards and scan them for ones with handwriting on them and record that information back into the electronic copy. If significant, I’d reprint the card(s).

As you can likely tell, that’s a lot of work. However, my cards enabled me to do a pretty good job calling even material that was new to me. I often got positive comments from musicians I worked with about the cards being very usable.

If you’re a caller, you might ask why I wasn’t using one of the existing caller tools to capture my cards, like Caller’s Companion or Dance Organizer? Well the answer is that I don’t have any iThings or WinThings. I run Linux on all my computers plus my cell phone and tablet are using Android currently. Sadly both of the established caller solutions don’t support any of what I’ve got.

So in a fit of frustration the other day I launched into yet another of my ~yearly reviews of the caller/leader software out there and found the dedicated applications landscape to have essentially remained unchanged. I thought briefly of setting up something on my own domain,, to do this as a database application but that would be limited to where I could get on a network. So, as an open source enthusiast, I started thinking creatively (we often need to do this, as popular “local app” tools are frequently omitted for Linux in particular). My breakthrough was thinking “what is a dance card?” and my answer was “it’s effectively a recipe for a dance.” With that insight, I started researching the recipe management software solutions out there. Again, I found a lot of stuff for OS X and Windows, even Android and a bit for linux. As I looked into it I realized my criteria basically boiled down to:

  1. Being able to add or edit dances anywhere I was on any device
  2. Being able to print them to hard copy if needed
  3. Being able to organize them into a program for an evening.

These were the core requirements, several ancillary ones flowed from there. These included the ability to classify dances in standard ways for filtering, searching to quickly find one, and managing my work queue. Also important was the ability to work offline when a web connection was not available (and sync that work when connected again).

The end result of my search was finding the Pepperplate recipe suite. It supports all my electronic devices, either through local apps or website tools. It supports tagging, filtering and search. The dance and meal analogy gets extended via treating a dance as a dish, a program as a menu and a booked event as a planned meal. It supports sections (parts) of a recipe, like sauce (A1), ingredients and instructions (moves and calls/teaching points). Pepperplate provides for adding dishes to a menu, and menus to a meal. I find that the analogy fits pretty well and I can use this tool to do most of what I want for my dance collection seamlessly. It also supports sharing recipes (dances) in a couple of easy ways.

The biggest difference from what I’ve otherwise found in the caller tools space is that this will work with pretty much all popular (and even unpopular) devices and that it automatically syncs across them. And not that it really matters given the relatively low cost of the existing dance leader applications, but it is also free.

I’m in the early stages with Pepperplate and tried calling from it for the first time just this past weekend. I only have a limited set of dances in the tool so far but it has been doing pretty well. I’m no longer severely space constrained! I do have some criticisms and have discovered some workarounds (mostly Android settings) to get around them. And BTW, there’s a big plus for me: the Android app includes a timer for each dish (dance) in a menu (program), so I can set it for how long I want to run the dance and a “can’t miss” message pops up to keep me on track.

In fairness, there are some risks and glitches with using Pepperplate for a dance collection beyond the obvious. These include a dependence upon a business with a not entirely clear how they make money business model. They might also not be happy with it being used this way (though from a quick review of their Terms of Service it appears to not be in violation and doing so just provides more eyeballs for their ads served). However, the data is stored locally on the device for off-line use and (at least on Android) is in a format that can be backed up and extracted/manipulated should go belly up.

Is it ideal? No, but it’s ~85-90% of the way IMO. Until something better comes along, I think I’ll be using Pepperplate to manage my dance collection going forward.

In a later post I’ll cover my experiences and tips with using the tool for this application: limitations I’ve found as a dance organizer (and even as a straight recipe) app, how I’ve set things up for ease of use/applicability and how I’ve fit Pepperplate into the dance collection workflow I lay out above. A quick preview: it has made things much easier!

Posted in Computer, Contra, Dance, DIY, Frugal Living, Linux, Recipes, Windows | Tagged , , , , | 2 Comments

gLabels Avery 5167 Template Problem

Was having trouble printing some 5167 Return Address labels using gLabels. The alignment was significantly off in my set-up using the default predefined template installed with gLabels on my Linux Mint LMDE netbook.

In comparing the template definition file with the stock measurements I found several things to be off slightly. In addition, my Samsung ML-2851ND laser printer appeared to be shifting the page image a bit also.

I created a custom template, adjusted for what I was experiencing, and now I can print consistent cleanly formatted labels within the stock outlines. Should you be experiencing similar issues, you could use my custom 5167 template. Just save into a file named as your_filename_here.template in the location set by your distribution (for Linux Mint LMDE, I discovered that was in ~/.confg/libglabels/templates).

BTW, should you need to customize the template further, see this documentation.

Good luck!

Posted in Computer, Debian, Linux, Mint | Tagged , , , | Leave a comment

Google Voice Greeting Playback Problem with Firefox and Flashblock

Just debugged a problem which for which there seemed to be no solutions posted on the web already. So in case you (or I, should I forget πŸ™‚ ) run into this, here it is:

Was trying to play back Google Voice greetings on my Linux Mint LMDE system today. I selected the proper greeting and pressed the play button, but nothing happened.

Thinking this was some sound complication with my recent LMDE update pack 8, I spent some time poking around my alsamixer and pulseaudio settings and nothing seemed amiss. Tried googling the web for others with the problem but nothing direct came up… but something triggered me to think about what they used to accomplish this playback within a browser window and I thought… “flash!”.

I had recently installed the Firefox extension Flashblock, which disables and replaces flash entities with a little symbol you can click on to enable them selectively (no more annoying ads playing on web pages and slowing down page loads!). The problem was that the GV greetings page was using flash, but the indication of it being blocked was not showing – there was no symbol to click on.

So I went into the Firefox extensions settings dialog for Flashblock and whitelisted and then went back to try playing the greeting – presto! we have sound!

Posted in Computer, Firefox | Tagged , , , | 1 Comment