Hit-Air vest reset screw

Don’t overpay for a simple screw!

My daughter rides horses, and for safety while riding on the cross-country courses, she wears a Hit-Air vest. This is a cool “airbag you wear” device with a lanyard that attaches to the saddle. If you have an “unplanned departure” from the horse, the lanyard pulls out a restraining ball, allowing a spring-loaded plunger to pierce the seal on a CO2 cartridge and rapidly inflate some pillows to protect the neck, spine, and hips/ribs. Motorcyclists use similar technology for a while too, but with hard external surfaces to protect against road rash, destruction of the vest from sliding on the road, etc. The equestrian version is just a soft canvas-type material all around.

Anyway… at a show a few weeks ago, daughter had an unplanned departure, vest worked as it was supposed to. When I asked where the reset screw was… “I don’t know.”

Great. Check the Hit-Air accessories page – they want $9 plus almost $8 shipping. Other vendors want as much as $20 + shipping! For a single hex-head screw and an Allen wrench. And with shipping the way it is these days, it would likely take a week or two to receive them.

One trip to the local hardware store later… After test fitting several screws, I learned that it is a metric M6x30 1.0 pitch (36mm total overall length, threaded part is 30 mm). I bought 3 of them at about $2 each.

I could not find this information anyplace online, so here it is. Hopefully it helps out someone else in a pinch in the future. I will be telling all our other “barn families” with vest wearers about this too. And I’ve added it as a comment on several of the popular Youtube videos about how to replace the cartridge.

While I don’t begrudge Hit-Air making money off replacement parts, this seems a little exorbitant. Also, in a pinch, it is comforting to know that you could get the part to reset this important safety item from any local hardware store or “big box” vendor like Lowe’s, Home Depot, etc.

For now, we’ll be keeping one screw in the tack trunk with the replacement cartridges, one in the truck glovebox, and one at home in my toolbox. It’s too easy to drop something in the grass, etc., and we don’t want our rider to be without the protection of the Hit-Air vest!

Please don’t “sell out” Memorial Day

Many will “celebrate” Memorial Day as any other holiday, with barbecues, beer, and commercial sales at local malls. Simply put, they have sold out Memorial Day.

This weekend, please visit a local cemetery, find a marker for any veteran, and reflect on their service to this great nation.

“Your silent tents of green
We deck with fragrant flowers;
Yours has the suffering been,
The memory shall be ours.”
Henry Wadsworth Longfellow

American Flag and Cross in Normandy American Cemetery

Puppet environments vs Git branches

Learning Puppet and Git at the same time does make for a lot of confusion most of the time. But a video I watched the other day finally made something “click” in my head about how to manage our multiple environments with Puppet. I had been struggling with the belief that, since we have 3 environments — Dev, Test, Production — we were going to need to maintain 2 long-lived branches (“dev” and “test”) for modules and Puppet code to track changes we’re making, and then deal with using pull requests/etc to migrate the changes from Dev to Test to Production.

That seemed like it was all wrong. And I think it is.

Instead, a branch for a module/whatever will be used for testing something, and deployed as a dynamic environment via r10k to target server(s) for testing, and then we will issue a pull request/code review to merge that change back into the “master” branch once testing is complete. So all “real” servers in Dev, Test, and Production will always get “master” code deployed to them, with environment-specific differences managed via Hiera. The deployment will be controlled via something like Jenkins to ensure that once a change has been merged back into “master” it does not go right to Production with the next puppet agent run. Tags or something will need to be used to mark “master” as ready to go to Prod. Or else it would just be changes to the r10k control repository, and set eligibile versions there. Maintaining long-lived separate instances of a single control repo for each environment is not as daunting as maintaining three branches of everything all the time.

Anyway. Just tracking my current state of mind on this problem. When I think on it for a while, it seems clear in my head, but then I forget it by the next time I need to use it. So I’m leaving this here as a memory jog next time I get stuck.

dxcmd error “Unable to initialize DClient” caused by config file permissions

Attempting to run dxcmd was yielding this error on one of our IDM servers:


DirXML Command Line Utility
version 4.0.2.1
Copyright (C) 2003-2011 Novell Inc., All Rights Reserved

Enter user name: foo.user
Enter user’s password:
java.lang.Error: Unable to initialize DClient
at novell.jclient.JClient.initializeDclient(Native Method)
at novell.jclient.JClient.initialize(JClient.java:906)
at com.novell.nds.dirxml.util.DxCommand.commandLine(DxCommand.java:419)
at com.novell.nds.dirxml.util.DxCommand.main(DxCommand.java:391)

Using the command

strace -f dxcmd -user foo.user -password S00perS33cr3t

turned up a “permission denied” error while trying to open /etc/opt/novell/nici64.cfg. On other servers, that file was world-readable; on the problem server, it was owner- and group-readable only.

The chosen fix was to remove world-readable attribute on all servers, and use “sudo dxcmd” to eliminate the file permissions problem.

Fixing Samsung Galaxy S3 after Android 4.4.2 upgrade

I have a Samsung Galaxy S3 with Virgin Mobile. I updated to Android 4.4.2 yesterday. This afternoon, the LTE network did not work. Symptoms were that the network showed as “Samsung” instead of “Virgin Mobile.” Reboots of the phone, and pulling the battery out/waiting/reinstalling the battery did not work.

I found some postings online which suggested that a manual PRL Update followed by a Profile Update would fix the problem, but it did not.

The cure seems to be a phone restart, then enter ##72786# and wait while the phone does some background updates and automatic reboots. Eventually, on the 3rd reboot, the annoying Virgin Mobile “rave dance” wallpaper/music played and my phone connection appears to be working properly (shows that it’s connected to “Virgin Mobile” network now).

Update June 20, 2014: After doing the above fix, I lost 4G (LTE/CDMA) connection, and could only connect via CDMA. Doing a Profile update, then a PRL update, then another Profile update seems to have restored the LTE/CDMA.

In addition, the 4.4.2 Android update seems to have brought Bluetooth tethering ability to the phone! More investigation of this to come…

Using Evernote + AppleScript + QuickSilver for a daily task log

Trying to be better about tracking my daily workload, I need a lightweight hotkey-based mechanism to quickly capture something as I switch tasks. I can then go back later and total up the times, or just jog my memory about what I was doing on a certain day at a certain time. Tracking this information in Evernote is also a bonus as it’s available and searchable on all my devices.

I created an AppleScript first that did the actions needed:

(* Notebook name to create these journal entries in *)
property nb : "Daily Diary"

(* BEGIN HANDLER CALL

NOTE: I have added a new portion to the script so that users who
aren't familiar with how to use a handler can run the Script
directly and check it out. If you'd like to use this as a handler
in your own AppleScript, Just delete or comment out the portion
of code between "BEGIN HANDLER CALL" and "END HANDLER CALL"

*)

set notetext to text returned of (display dialog "Diary Entry" default answer "")
my handle_string(notetext)

on handle_string(notetext)
if notetext is not "" then
CreateDailyEvernote(notetext)
end if
end handle_string

(* END HANDLER CALL *)

on CreateDailyEvernote(txt)
set t to "Daily Journal " & (do shell script "date +'%Y-%m-%d'")
set crlf to (ASCII character 13) & (ASCII character 10)
set timeStr to time string of (current date)

(* keep track of the app that was running when we hit the hotkey *)
set frontApp to (path to frontmost application as Unicode text)

tell application "Evernote"
set foundNotes to find notes "notebook:\"" & nb & "\"" & " intitle:\"" & t & "\""
set found to ((length of foundNotes) is not 0)
if not found then
set curnote to create note with text crlf & timeStr & ": " & txt & crlf title t notebook nb
else
repeat with curnote in foundNotes
tell curnote to append text crlf & timeStr & ": " & txt & crlf
end repeat
end if
activate
end tell

(* put the old foreground app back on top *)
tell application frontApp to activate

(* just to be sure there are no odd effects, explicitly hide Evernote *)
tell application "System Events"
set visible of process "Evernote" to false
end tell

end CreateDailyEvernote

and then set a QuickSilver trigger to run the script (I use Ctrl-Cmd-J — for “Journal”).

The effect is a simple plain-text list of entries.

This process is based mainly on the work done by Sonny Gill (“Creating a daily log in Evernote from Quicksilver“), but I took out the parts that write HTML into the note and deal with the clipboard as I don’t want either. I also added some AppleScript to put back the foreground app that was running when I hit the hotkey, in order to minimize the impact to my workflow. I don’t want to have to be clicking or using Cmd-Tab to try and get back to the app I was running before…