YaketyStats Released!

A lot like real excrement, it’s a lot harder to give shit away than it is to make it!

It’s hard to believe just how much work we put into being ready to give this software away. You see, when you write something for yourself –and remember that YaketyStats has been in use for 3 years or more in one form or another by my work– you can make all kinds of assumptions about the environment and you don’t have to document anything because if you have a question, you just ask a co-worker.

However when you give it away, first you have to yank out all of those assumptions. That takes a very long time because it’s a hard thing to think about. Confirmation bias ain’t just about new information, bubsie. While you’re tearing out assumptions, you’re making new bugs. You’re fixing old bugs that didn’t really matter to you, but would probably matter to others. Your bug fixes make new bugs. You start to have confidence issues about anyone wanting your crappy code anyway.

You have to make a website, and like all of the rest of this, it’s way harder than you’d think. You can go with the siloed antiques you know (Mediawiki and Bugzilla) or you can try something new on a platform you’re uneasy with (Jira/Redmine) and then there’s all of the time you spend vacillating in between. Don’t forget the time it takes to set it all up and tear it all down, to learn about the new platforms… you get the idea.

Once you pick your website stack, it’s time to document your every little thing about your project. You get to document how to install it, how to use it, why it does all the crazy crap that makes sense to your environment and possibly no one else’s. You word it, you re-word it. You wonder if you’re still making assumptions. You are making assumptions. You re-write it again. You re-organize it. The new organization is better, but you need to re-write some if it to fit the new organization.

Oh, and the whole time you’re doing all of this you’re wondering to yourself if you’re throwing a party which no one will attend.

Then the release date you thought for sure you’d make comes and goes and you make a ton of last minute changes. You drop your “announcements only” WordPress install in favor of using the semi-crappy News feature of Redmine. You re-organize all of the documentation again. Then you try to write a “press release” and ZOMG BBQ lemme tell ya — writing press releases is something that I am in no way equipped to do. So then you enlist the help of others. These others are much more tuned to writing this sort of copy, but they don’t really know your software or why it’s cool and different. You’re grateful in any case. This is the best that the blind leading the people who don’t know where we’re going can come up with:

Athens, GA (Oct. 14, 2008)

We’re happy to announce the WORLD-WIDE release of YaketyStats, a new tool for gathering and graphing statistics about your UNIX/Linux systems.

It has an intuitive, AJAX-powered web interface for graphing data. Graphs are built on the fly, can contain stats from multiple systems and include “Google Maps”-like dragging.

YaketyStats is easy to install, maintain, and extend and is free Open Source software licensed under the GPLv2. YaketyStats supports Firefox and is built on Perl, PHP, and RRDtool.

If you’re tired of having to micro-manage your existing stats system or you don’t have one, you should check out the YaketyStats website and demo video at yaketystats.org

I’ll pretend it’s tomorrow and publish this now.

Type less, smile more

How many times a week do you type /etc/init.d/blah start and then you realize you’re on HP-UX and it’s /sbin/init.d/blah Forget it.

# Turn on extended globbing and programmable completion
shopt -s extglob progcomp

export MYOS=$(uname -s)

if [[ "${MYOS}" = "Linux" || "${MYOS}" = "SunOS" ]] ; then
    INITDIR='/etc/init.d';
else
    INITDIR='/sbin/init.d';
fi
export INITDIR;

function RCCT () {.
    if [[ -z "${2}" ]] ; then.
        ls $INITDIR; 
    elif [[ "${1}" = "Start" ]] ; then
        cd / && $INITDIR/${2} start ; cd -;
    elif [[ "${1}" = "Restart" ]] ; then
        cd / && $INITDIR/${2} restart ; cd -;
    elif [[ "${1}" = "Stop" ]] ; then
        cd / && $INITDIR/${2} stop ; cd -;
    elif [[ "${1}" = "Reload" ]] ; then
        cd / && $INITDIR/${2} reload ; cd -;
    else
        echo "Something bad happened.";
    fi
}   

function _myservices() {
    local cur
    cur=${COMP_WORDS[COMP_CWORD]}
    COMPREPLY=( $( builtin echo $INITDIR/!(*.rpmsave|*.rpmorig|*.dpkg-old|*~|functions)) )  
    COMPREPLY=( $( compgen -W '${COMPREPLY[@]#@($INITDIR)/}' -- $cur) )
}

function Start () { RCCT ${FUNCNAME} ${*} ; };
function Restart () { RCCT ${FUNCNAME} ${*} ; };
function Reload () { RCCT ${FUNCNAME} ${*} ; };
function Stop () { RCCT ${FUNCNAME} ${*} ; };
complete -F _myservices Start Restart Reload Stop

You might be thinking that RCCT is pretty ugly and it is, but it’s complete-able, so it all shakes out. It also starts and stops services with / as the working directory which is a good idea if you’re dealing with Solaris or HP-UX.

Meme take 1

So as I’m sure you’ll imagine I’m not big on blog memes or chain letters, but I thought of one that might be fun, so I thought I’d give it a shot especially since my blogging has dwindled a bit lately.

So the meme is Today’s Hell, the idea being that you describe a situation that could be considered a repeating Groundhog’s Day-style hell-dimension. It doesn’t have to be the worst thing ever, just something funny or annoying that you want to vent about. If you’re one of the 4 people who reads my blog, make one up yourself and pingback/trackback me!

Today’s Hell: I’m stuck at a busy traffic light behind two morons on their cell phones in their McCain-stickered Escalades who are too scared/stupid/not paying attention enough to turn left at the same time. Every track on my CDs and every station on the radio is playing “What a Fool Believes” by Michael McDonald or the Doobie Brothers or whatever the hell. A strong waft of patchouli suddenly floods the car and suddenly I remember that I have HR-mandated sensitivity training once I get to work.

Your turn.