Wednesday, February 04, 2009

Shit happens -- even to google

Everyone knows of the now infamous google malware database corruption. Google was able to fix the issue quickly, which is great and all. But what really impresses me is their open attitude when it comes to their end user products, like this post on the gmail blog.

You may be a big headless giant robot, but you're our big headless giant robot.

Sunday, January 11, 2009

Renaming MP3 by ID tag

Ever tried to recover from an IPOD dump, and get a bunch of files with the useless names? Here's a script to fix that.
$ ls *.mp3 | ./rename.pl - | while read line; do OLD=`echo $line | cut -d, -f1`; NEW=`echo $line | cut -d, -f2`; mv "$OLD" "$NEW"; done

And here's the perl script:

#!/usr/bin/perl
#
#Your Love Means Everything.mp3: (tag v1.0)
#songname: Your Love Means Everything
#artist: Coldplay
#album: Varie
#year:
#comment:
#genre: Other(12)
#

while( <> )
{
chomp;
my %hsh = ();
my @info = `id3ed -i "$_"`;
foreach my $iline ( @info )
{
chomp $iline;
#print $iline . "\n";
if( $iline =~ /songname:\s+\b(.+?)$/ ){
$hsh{ song } = $1;
}
if( $iline =~ /artist:\s+\b(.+?)$/ ){
$hsh{ artist } = $1;
}
if( $iline =~ /album:\s+\b(.+?)$/ ){
$hsh{ album } = $1;
}
}

my $newname = "$hsh{ artist }" . "-" . "$hsh{ album }" . "-" . "$hsh{ song }" . ".mp3";
$newname =~ s/\s+/_/g;
print "$_,$newname\n";
}

Monday, January 05, 2009

Autologging in and running app in X

I've been keen on doing this for some time, but a combination of:
  1. lack of need
  2. lack of time
have kept me from doing any real testing on a good solution. But someone has already done the work!

Thursday, December 25, 2008

Coffee Roaster

Just received my christmas gift, and it's the gift that keeps giving.

Monday, December 22, 2008

Lovely art from a co-worker

Found this on the whiteboard next to my desk this morning...



... aww thanks.

Wednesday, December 10, 2008

My first fvwm module

I've been using FVWM for some time now, but have never tried writing any kind of modules to extend it. Yesterday I tried it out, and I've got my first working FVWM module.



I wrote the module in Perl, and you can view there source here. Basically what it does is capture window focus events, and will set the transparency of the window to whatever is set in a configuration file
pblair@laptop:~$ cat ~/.fvwm/fvwmPeteTrans.cfg
XTerm:0.60
The above config will set all xterminals to 60% opacity when the focus moves away from it, but will return it to complete opacity once focus returns to it.

You can add as many types of applications (one per line). For instance, Firefox has
$ xprop | grep CLASS
WM_CLASS(STRING) = "Navigator", "Firefox"
So you could either place "Navigator" or "Firefox" at the left of the colon.

To install the module, place it somewhere where the .fvwmrc ModulePath will find it, then place it into the StartFunction section:

AddToFunc StartFunction
+ I Module FvwmPeteTransFocus
+ I FvwmButtons
P.S. You need "xcompmgr" and "transset" installed. And be sure to change the absolute pathnames within the module to the respective locations on your system.

Tuesday, December 09, 2008

Guerilla Refactoring

In the world of software development, refactoring is the process of updating code (usually for the better). But the problem may exist where management sees the existing application as "good enough" and doesn't want to allocate any budget towards fixing what in their eyes "aint broke".

Enter guerilla refactoring.

I must admit that I fall victim to this. I find lots of things at work that could be expanded upon, or made better, which would drastically increase the use of the package, make it more robust, or simply more elegant and orthogonal. I ensure that it doesn't eat into my work time, and the end product is usually something that I will directly benefit from, but hopefully also something that will make someone else's life better/easier/simpler.

P.S. I recommend this podcast from NPR.

Long time no see

It's been about a year and a half since my last entry. I had lost complete interest in blogging and any self self congratulations that come with the territory.

But I'm starting to feel like I have more to share again, and I hope to see more posts here in the near future.