Ugh… Why the paranoia, Transmission!?

Just wasted an hour because of the janky configuration setup for an otherwise great BitTorrent daemon, Transmission. Basically, the default configuration for Transmission that ships with Debian has RPC authentication turned on in two places. Finally discovered this by reading the README in /etc/transmission-daemon (*blush*). This pointed me to Message #24 of bug 539936 which explained things nicely. Solution summary:

  1. Stop transmission-daemon
  2. Turn off RPC authentication in
  3. Turn off –auth parameter in
  4. Restart transmission-daemon


Posted in Uncategorized | Tagged , | Comments Off on Ugh… Why the paranoia, Transmission!?

Installing Flash on PortableFirefox

Lifehacker and many other blog postings which turned up in a Google search for “portable firefox flash” seem seem to have outdated information, about where to place the flashplayer.xpt and NPSWF32.dll files. It cost me over an hour of trouble shooting the correct location to place these two files (at least with Firefox 3.0.8 and Flash 10) is


Ahh, it feels good to finally see this:

Posted in Uncategorized | Tagged , , | Comments Off on Installing Flash on PortableFirefox

Easy remote torrent queuing with trasmission, zenity, and a dab of glue

Here is just a dab of glue that takes two very cool projects, Transmission and Zenity, and makes something very usable. Open a text editor as the root user (gksu gedit) and copy and paste this script:

#!/usr/bin/env bash

targethost=$(zenity –list –title “Assign host to download torrent” \
–radiolist –column ” ” –column “Host Name” \
TRUE localhost \

# Special case for localhost so it will still work if transmission is
# not already running
if [ “${targethost}” == “localhost” ]; then
transmission “$1” &
# TODO: Start transmision on the remote host if it is not already
# running
transmission-remote ${targethost} -a “$1”

Just replace YOURSERVER with the name of the computer running transmission. Save the script to /usr/local/bin/add-remote-torrent (or whatever you want to name it) and give it execute permssions (sudo chmod +x /usr/local/bin/add-remote-torrent) For help setting up the transmission daemon the Transmission wiki has some well written guides, particulary the one on running Transmission on a headless machine.

Also, note that this script requires Transmission 1.50 or later, which supports adding torrents by URL. Ubuntu 9.04 and newer have this by default. Users of older releases need to add the official Transmission repository. From System -> Administration -> Software Sources, add the following APT line:

deb intrepid main

Then add the authentication key so that the software repository is recognized as a “Trusted Software Provider”

sudo apt-key adv –recv-keys –keyserver \

Regardless of what version of Ubuntu you are running, you will need to explicitly install the Command Line Interface version of Transmission (transmission-cli) :

sudo apt-get install transmission-cli

Finally, go to your web browsers setting/preferences page and associate BitTorrent files (MIME type “application/x-bittorrent“) with /usr/local/bin/add-remote-torrent. In Firefox this setting is located at Edit->Preferences->Applications. Now when ever you click a torrent link you will have the option of downloading the torrent on your own computer or on another computer.

Posted in Uncategorized | Tagged , , | Comments Off on Easy remote torrent queuing with trasmission, zenity, and a dab of glue

Kink the video, not your neck

If you’re anything like me when shooting short video clips with your camera, you regularly find that you’ve captured a great little clip with one exception – the video is turn on its side. Here is a little script to get you out of that dilemma, since I’ve found that it’s not as easy as it should be with most video editors for Linux.

#!/usr/bin/env perl
# Naulilus (or command line) script to rotate one or more videos, renaming
# each one from, e.g., ‘dir/input.avi’ to ‘dir/output (rotated).avi’
# Author: Taylor Braun-Jones
use File::Basename;

my ($input, $output);
my ($filebase, $dir, $suffix);

# open DBG, “>/tmp/rotate_video_debug” and select DBG;
} else {
@videos = @ARGV;

foreach $input ( @videos ) {
chomp $input;
($filebase, $dir, $suffix) = fileparse(“$input”, ‘\..*$’) or die “Failed
to parse filename: $input”;
$output = “$dir$filebase (rotated)$suffix”;
print “Rotating: ‘$input’ -> ‘$output’\n”;
system “mencoder -vf rotate=1 -o \”$output\” -oac copy -ovc lavc \”$inpu
close DBG if DBG;

Just drop this script into $HOME/.gnome2/nautilus-scripts/ and give it execute permsions


Also, make sure you have mencoder installed. On Debian-based systems (like Ubuntu) it’s as simple as:

sudo apt-get install mencoder

Posted in Uncategorized | Tagged , , | Comments Off on Kink the video, not your neck

Short DHCP Lease Times

If you are an Ubuntu user who has experienced WiFi disconnects from public hot spots while other Windows and Mac users around you are Web browsing worry free you’re not the only one. In this particular case, however, the fix may be quite easy.

The symptoms my wife experienced were that she could connect to the USC wireless network and happily surf the internet for about an hour before being booted off and not being able to reconnect for a period of about 24-hours. Turns out, according to USC IT department, that defaut DHCP lease time in Ubuntu is shorter than that on Windows and Mac OS. This exceeded whatever arbitrary DHCP renewal rate threshold USC has configured and caused her MAC address to be blacklisted for a day. Here’s the fix:

Edit /etc/dhcp3/dhclient.conf as root with the following command (Tip: Use Alt-F2):

Change the DHCP lease time by editing the following option (or adding it if it does not already exist)

That sets the lease time to be 86399 seconds – one second shy of a day.

Posted in Uncategorized | Tagged , | Comments Off on Short DHCP Lease Times

Gmail Contacts… Almost Accessible

Google has provided interfaces to most of its services through standard protocols, which is great. I can access my Google Calendar events via a private iCal address (one-way only, Google to my local client). I can access my Gmail messages through POP or IMAP. I can import my OpenDocument files to Google Docs (even keep them synchronized as I work on them with the help of OpenOffice.org2GoogleDocs extension).

One gripe I’ve had since the beginning of Gmail is that I cannot access my Gmail contacts from any LDAP-supported address book — until GCALDaemon. It’s a daemon that, among other things, translates LDAP requests from a local client (e.g. Mozilla Thunderbird) to HTTP requests. A bonus feature for me (though this seems to actually be the main feature of GCALDaemon) is that I get two-way synchronization with my Google Calendar now too. GCALDaemon is available for Linux, OS X, and Windows, though the developers are obviously Windows centric — the Linux release comes as a zip file (no .deb, .rpm, or even tarball) and then you are instructed to add execute permissions the the shell scrips as part of the manual installation process! It also lacks an init script, so I wrote a simple one to get the job done (Assumes you unpacked the zip file to /opt):

#! /bin/sh
# /etc/init.d/GCALDaemon

# Carry out specific functions when asked to by the system
case “$1” in
echo “Starting GCALDaemon …”
start-stop-daemon –start –pidfile /var/run/ \
–chuid nobody:nogroup –background –make-pidfile \
–exec /opt/GCALDaemon/bin/
echo “Stopping GCALDaemon …”
start-stop-daemon –stop –pidfile /var/run/ –user nobody
echo “Usage: /etc/init.d/blah {start|stop}”
exit 1

for getting up and running quickly. So why are Gmail contacts only almost accessible? Only email addresses and phone numbers seem to supported by GCALDaemon, not postal addresses.

See also:

UPDATE (2008-11-14): I discovered Zindus and have been using it for a few weeks now. It’s a more elegant solution, though they still need to figure out out a better solution for syncing postal addresses. The best solution is to simply standardize the way postal addresses are stored, IMO. Currently the Thunderbird address book keeps sepearate fields for Street, City, etc., whereas Google (and many others) store addressses as one big free-form field.

Posted in Uncategorized | Tagged , , , | Comments Off on Gmail Contacts… Almost Accessible

FInally, A Solid DVD-to-MPEG Converter

For some reason I never came across HandBrake until reading about it by chance on It’s a CLI application that makes great use of two cores. With my dual-core opteron, top reports close to 200 percent CPU utilization. I don’t think I’ve ever seen that from a single application before. It runs on Mac OS and Windows and there is even a Mono-based GUI for Linux called RippedWire, which I have yet to try out.

Posted in Uncategorized | Tagged , , | Comments Off on FInally, A Solid DVD-to-MPEG Converter

Typing Heaven

For my first Father’s Day (woohoo!) I received a SpaceSaver keyboard from It’s essentially an old school Model M with a few modernizations:

I’ve considered buying a used Model M in the past, but was put off by the amount of desk space it eats up and its lack of a Super modifier key (which is useful for all kinds of shortcuts).

The only thing I would change about the SpaceSaver — and this is fairly minor — would be to add volume control keys above the number pad like on the recently deprecated Apple keyboard. Another idea I have brainstormed, but haven’t though through completely, is to move/add a modifier key next to the number pad, ideally around the bottom left so that you can easily run two-key shortcuts with your right hand (thumb + index/middle/ring fingers).

Posted in Uncategorized | Tagged , | Comments Off on Typing Heaven

Debian RC Script Control

As a former Gentoo user, I had to learn the Ubuntu/Debian way to add service to a system runlevel. For my desktop, I never had to worry about it because, as usual with Ubuntu, a nice GUI is provided to manage startup services (System -> Administration -> Services). However when installing pyscrabble-server on my closet server I had to lookup the CLI tool for the job. (Note that I could have just used X11 forwarding to run the GUI tool, but that is just not nearly as cool and would have required lots of unnecessary GUI packages) It its simplest form, the comand to automatically start and stop /etc/init.d/SERVICE at startup and shutdown is simply:

sudo update-rc.d SERVICE defaults

From the man page:

If defaults is used then update-rc.d will make links to start the service in runlevels 2345 and to stop the service in runlevels 016.

For anything more complex, see the man page. Note that Debian has good bash completion support for the update-rc.d command.

If you’re adding your own home-brew service, you can always just add commands to /etc/rc.local and make that file executable.

Posted in Uncategorized | Tagged , , , | Comments Off on Debian RC Script Control

MythStream: Please help me ditch my cable TV

So I’ve been wondering when someone would finally get around to writing a plugin like this for MythTV. I can’t wait to get a setup that uses this plugin so that I can ditch cable TV altogether. Especially with the writer’s strike that is sure to lead to an increase in reality TV… Ow, my eyes; they bleed…

Posted in Uncategorized | Tagged , | Comments Off on MythStream: Please help me ditch my cable TV