irssi, screen, and growl… Nerdy goodness.

At $dayjob, we use IRC a lot. Most everyone runs irssi in screen, so they can re-attach whenever and whereever and not miss out on important info. Today I thought to myself “Surely SOMEONE is doing irssi in screen and wants growl notifications”. As ridiculous as it sounds, someone was. I took their approach, briefly outlined below, and customized it a little to make me happy. For this to work, you need Growl and GrowlNotify installed on the Mac. Jabba, if you read this, I didn’t figure you’d mind the rewrite here :)

  1. On both: Cut a hole in the box. By this I mean “Set up ssh keys to access the box.” If you aren’t running with passwordless ssh keys, make sure you are using something like “ssh-agent bash” as your default terminal window
  2. On remote: Download Justins script from . Install it in ~/.irssi/scripts/ , then symlink it into ~/.irssi/scripts/autorun/ :
    mkdir -p ~/.irssi/scripts/autorun && cd ~/.irssi/scripts/ && wget && unzip && ln -s autorun/
    If you don’t want to quit irssi for this procedure, do this:
    /script load
  3. On local(Mac): Make a local script named “” in ~/bin/ . Put this in it and chmod 755that bad boy:
    # $argv = %r %h

    # Kill all current fnotify sessions
    ps | awk '{if($0 ~ /fnotify/ && $1 ~ /[0-9]+/ && $4 !~ /awk/) print $1}' |
    while read id; do
    kill $id

    # SSH to host, clear file and listen for notifications
    (ssh -q $1@$2 -o PermitLocalCommand=no "> .irssi/fnotify; tail -f .irssi/fnotify" |
    while read heading message; do
    growlnotify -t "${heading}" -m "${message}";

  4. On local put something like this in ~/.ssh/config:
    Host remotehost
    PermitLocalCommand yes
    LocalCommand ~/bin/ %r %h

Next time you ssh to the box, this second ssh session will start silently in the background, reading the ~/.irssi/fnotify file and outputting new lines to Growl.  Pretty cool!

April 17, 2012 • Posted in: FOSS, How-To, Linux, OSX, Technology • 2 Comments

Awesome- .bashrc tab autocompletion of known hostnames

Here’s one of those what-did-I-do-before-i-met-you ideas,

SSH_COMPLETE=( $(cat ~/.ssh/known_hosts | cut -f 1 -d " " | \sed -e s/,.*//g | uniq ) );
complete -o default -W "${SSH_COMPLETE[*]}" ssh

Put that in .bashrc and you get tab autocompletion of hostnames for anything in your known_hosts file. Thanks to Nate for this one.

March 30, 2012 • Posted in: Blogging • No Comments


A short entry to let you know that I have recently been instrumental in coining a new phrase in the Project Management Lexicon Of Silly Phrases… ADTEN.

ADTEN = Arbitrary Difficulty/Time Estimate Number.

1 = < 1 day, simple task
2 = 1 – 5 days
3 = 5 – 10 days
4 = 10 – 30 days
5 = 30+ days

All time ranges given are subject to +/-100% margin for error.

My project manager (one of the best I’ve ever worked with, for the record) was even kind enough to make us a logo…



I’ve censored the following, in protest of a bill that gives any corporation and the US government the power to censor the internet–a bill that could pass THIS WEEK. To see the uncensored text, and to stop internet censorship, visit:

I ██████ ████ you won’t let the █████ ████████ ████ ████ ████.

Uncensor This

December 14, 2011 • Posted in: Blogging • No Comments

4.74 Degrees of Separation on Facebook

Apparently, 6 degrees of separation has been shrunk down considerably. This is interesting to me, as lately I have been connecting with people I have met because they know disparate groups of folks I know. Also, I have abandoned Google Reader because of their stupid G+ end-run, and am now using NetNewsWire on my MacBook.

[From 4.74 Degrees of Separation on Facebook]

November 24, 2011 • Tags:  • Posted in: Interesting Stuff, Life • 959 Comments