Winamp Control from Launchy

I’m a big fan of the Launchy keystroke launcher, and have used f0vela’s iTuny plugin for controlling iTunes intermittently for a while. One thing that bugged me with iTuny was that the playlists always seemed to be in reverse track order. That is, if I asked iTuny to queue up everything from R.E.M.’s “Green”, I’d end up with track 1 at the end of the playlist, and track 11 at the beginning. I suppose that’s a bug in iTunes rather than iTuny, but since I couldn’t find a way to get iTuny to re-sort the playlist by track number (AutoIT isn’t a particularly full-featured language), I started looking for other options.

So I ended up updating my Winamp, which I had rarely used for music, and mostly for exploring sound effects from WoW addons or similar things. I shortly found ActiveWinamp which was originally intended to let Winamp control other programs as an ActiveX client, but later added features to make Winamp an ActiveX server, too. Add one night of cursing at VBScript and I’ve got Launchy controlling Winamp to my liking.

Download link at Dropbox. I’ve also got a post at the Launchy plugins forum for more feedback.

Installation:

Extract files into Launchy\Utilities and recatalog.

Features:

  • Playlist control: next track, previous track, pause, play, shuffle, stop
  • Playlist creation: by artist, album, track title, or year

Usage

“winamp control.vbs” (next|prev|pause|play|shuffle|stop|query) [arg1 [arg2...]]

next, prev, pause, play, shuffle and stop require no extra arguments.

query requires queryType and queryName arguments:

  • queryType: (album|artist|title|year)
  • queryName: word1 [word2...]

Query Examples:

  • artist Mojo
  • artist Rusted Root
  • album Tuesday Night Music Club
  • year 1994
  • title Elvis
  • title Brand New Day

Good Job, Eweek (Open-Source and Mac Alternatives to Windows 7)

Sometimes these little slideshows that show up in my email turn me onto some useful piece of software I was previously unaware of, but this one sets the bar pretty low.

Nine slides, sparsely describing seven GNU/Linux distributions plus Apple’s Snow Leopard. Realistically, who’s the audience for this? What subset of their subscribers isn’t aware that other operating systems exist, and have characteristics different from Windows 7?

This is even worse than 10 Must-Have Applications on Windows 7 Launch Day, a list that included iTunes and Office 2007. And AVG Antivirus.

Walking Through 50 Years of Hard Disk Drive History? That was actually worth reading.

GreaseMonkey tweaks for lite.facebook.com

I’m starting to like the cleaner interface of lite.facebook.com. No application spam, few/no ads, etc. And I’d used some other folks’ GreaseMonkey userscripts to unclutter or otherwise tweak regular Facebook. But aside from a bit of horizontal scrolling, the lite interface was a good fit for my tiny-screened EEEPC 8G. And with the following userscript code, it is nearly perfect for me:

var headerArea = document.getElementById('header');
headerArea.style.width = '760px';
var navigationArea = document.getElementById('navigation');
navigationArea.style.width = '760px';
var contentArea = document.getElementById('content');
contentArea.style.width = '760px';
var footerArea = document.getElementById('footer');
footerArea.style.width = '760px';
var rightAreas = document.getElementsByClassName('splitViewRightInner');
rightAreas[0].style.width = '250px';

Results:
lite.facebook.com with GreaseMonkey

2009 Honda Fit Interior Bike Rack

Introduction

So in mid-August, we traded in our 1995-ish Ford Ranger (rated 18 mpg) for a 2009 Honda Fit (rated 29 mpg). It made me sad, but the transmission was likely to go out in the next year, and there was no way we’d get $4500 for it any other way. The only worry with it was whether or not we’d be able to transport one or both of our bikes in the back hatch. Amazingly, the answer is yes. It’s a tight fit, but we can even put a third passenger in the car with both bikes, which is more than we could say for the Ranger. I also hadn’t noticed this post or this gallery at Fit Freak before I started construction, but they’re both pretty similar to what I ended up with.

The Bikes

72fx_red

Trek 7.2FX (mine)

8291-36_d

Specialized Globe Carmel (hers)

Basic Design

bike rack drawing

Start with a 1×6 measuring 50 inches in length. Check that this fits snugly behind the rear wheel wells if you orient the board vertically. Cut a 4″x4″ triangle off two corners to accommodate the rear wheel wells and let you place the board flat across the cargo area.

Prepare some firring strips to reinforce the 1×6, so that the bikes’ weight doesn’t cause it to sag. I attached four strips roughly 9.5″ in length around 12″ from each end. Your own lengths and positions will vary according to where your bikes end up.

Remove the front wheel from both bikes, and see how you can arrange them upright on the floor so that their leading surfaces line up, and that they take up as little room as possible from side to side. In our case, this put the front fork of the 7.2FX about 2-3″ behind the front fork of the Globe Carmel. This is when I also noticed that in this position, the Carmel’s rear wheel stuck out quite a bit further than the 7.2FX. And it was quite a bit taller — all this indicated that the Carmel was definitely going to have the tightest fit.

Next, do a test fit of both bikes into the cargo area. This is a job best done with two people, but it’s possible to do solo if necessary. Depending on where you position the front seats, you may be able to butt the rear wheel of the bikes against the back surface of the driver’s seat, or like us, you may have to position one rear wheel between the driver’s seat and the door, and the other rear wheel between the front seats. Place each bike onto their front fork block, make sure you can close all the doors and the hatchback without bumping into anything, and then mark the final positions of each fork block.

Our fork blocks (one Yakima, one Delta) required drilling 1/4″ holes. Since the only 1/4″ screws I had on hand were too short to fit through both the blocks and the full depth of the 1×6, I drilled 1/2″ countersinks on the bottom of the board. Go ahead and attach the firring strips somewhere near the center of the board’s span, or near where the fork block attach.

As can be seen below, the Carmel makes for an especially tight fit, but there’s no interference or contact anywhere.

All other photos from the installation are at Flickr.

My Ideal Reader

Daring Fireball is great.

My Ideal Reader

When’s Your Tax Freedom Day?

Apropos Slacktivist’s Post-apocalyptic anarchy day and the Tax Foundation’s Tax Freedom Day, I got to wondering. When is my Tax Freedom day? I can’t just assume it’s April 13, like the TF folks publicize. I can’t even really use the slightly more specific one they quote for Tennessee (April 5).

So, since it’s income tax preparation season, I figured I’d figure out mine. All numbers somewhat approximated due to it being nobody’s business in general, although someone could potentially look up my gross salary as a state employee. That bugs me a bit, but I can live with it as part of transparency in government.

So, the numbers:

  • Gross household income: substantially higher than the median for Tennessee, but not ridiculous. We’re effectively single-income, but I don’t make anywhere near the median income for engineers working in industry.
  • Deductions: two semesters of Carolyn’s undergraduate education at TTU. Property tax. Standard deduction.
  • Income taxes withheld: about four weeks gross income.
  • Social security taxes withheld: about three weeks gross income.
  • Medicare taxes withheld: under one week gross income.

So far, I’m up to a bit over than two months of gross income combining all my federal and property taxes, and my property taxes make for a federal income tax deduction. With the remaining ten months of gross income, let’s assume I spent everything else and paid Tennessee’s crazy high 9.75% sales tax on it all, that’s not quite another month of my gross income going toward taxes.

No, I’m not including license plates for the truck and other such. And realistically, we do manage to save a bit at the end of each month. So as a worst case, our day is mid to late March. Realistically, a bit earlier.

Saving a copy of the “We Are One” concert from the HBO website

Disclaimer: HBO owns the rights to this concert, but they’d obviously allow you to record it from your TV onto a videotape, DVD, or onto your DVR. The method below should be comparable, but works entirely off the streaming Windows Media version on the HBO We Are One site. Don’t go violating copyright law and redistributing this with 10 million of your closest friends on Limewire or whatever the kids are using today. But hey, if you already had a copy from some random peer-to-peer network, you wouldn’t be reading this anyway, right?

Now that we have all that out of the way, here’s a way you can save a copy of the concert for posterity, for later viewing on your portable media player, etc.

Minimum requirements: VideoLAN’s VLC media player. Optional item: something to convert Windows Media files into some other format suitable for iPod, Phone, or whatever — I used Format Factory, but there are several other options out there. And if you just want to watch it on your PC, you don’t need any converters at all. Read More »

In Memoriam, FEB (@tntech.edu)

(With apologies to Tennyson, but the title hopefully brings a slight smile to the mix of tech geeks and literary geeks that Frank knew over the years. The below is from the local paper’s obituary, in case they take it offline later.)

Friday, Jan 02, 2009

COOKEVILLE — A memorial Mass of the Resurrection for Frank E. Bush, 62, will be held Saturday, Jan. 3, at 11 a.m. at St. Thomas Aquinas Catholic Church.

Family will receive friends today, Friday, Jan. 2, from 4-7 p.m., with a prayer vigil and time of reflection service at 7 p.m. at the church. The family invites friends and colleagues to come and share stories and memories of Mr. Bush to honor the passing of a beloved father, husband, mentor and friend.

Mr. Bush died suddenly Monday, Dec. 29, 2008, in Cookeville Regional Medical Center.

He was born Aug. 6, 1946, in Cleveland, Ohio, to the late Frances Edward and Julia Elizabeth Vasko Bush.

Mr. Bush was an active member of St. Thomas Aquinas Catholic Church since 1975. He led the music ministry at St. Thomas Aquinas with his wife, Sheila, for 25 years, in addition to organizing and leading the Search program, an interfaith retreat for students from Tennessee Technological University. He had been actively involved in music ministry for the past seven years at St. Alphonsus Catholic Community in Crossville. Since 1988, Mr. Bush served as scoutmaster for Boy Scout Troop 156 of St. Michael’s Episcopal Church. He earned the rank of Eagle Scout at the age of 15 and mentored many young men to the same accomplishment over his 15 years as a devoted and respected leader.

Mr. Bush graduated from Tennessee Technological University in 1970, with a bachelor of science degree in business management. His career at TTU spanned more than 36 years. He was the assistant director and manager of systems support at TTU and was an integral and vital part of the Computer Center. Mr. Bush’s leadership and solid professionalism has been a guiding light at Tennessee Technological University for many years and will be sorely missed.

His family includes his wife of 29 years, Sheila Beazley Bush of Cookeville; a son, Stephen Wyatt Bush of Cookeville; two daughters and a son-in-law, Catherine Bush and James Rushing of Fayetteville, N.C., and Sarah Elizabeth Bush of Cookeville; his mother-in-law, Mickey Beazley of Nashville; six brothers-in-law and sisters-in-law, Randy Beazley and wife Pam Palmer, Donna Drinkwine, Rickey Beazley and Rip Beazley and wife Marge Wozny, all of Nashville, Rusty Beazley and wife Lisa Mote of Newborn, Ga., and Laurie Beazley and husband John Wells of Lafayette; and a host of nieces and nephews.

In addition to his parents, Mr. Bush was preceded in death by a sister, Theresa Ann Falls; a brother-in-law, Frank Drinkwine; and his father-in-law, Raymond Beazley.

Honorary pallbearers at the Mass of the Resurrection will be the Boy Scouts of the Upper Cumberland District.

Memorial donations may be made to the Frank Bush Memorial Fund, 107 N. Dixie Ave., Cookeville, TN 38501.

Fathers Don Loskot and Jim Harvey will officiate the services.

Since Sheila had asked for us to share Frank stories at the visitation today, in generally chronological order, and as true as I can remember them:

- 1 -

The first time I met Frank must have been in August or September 1990, shortly after an Honors 101 class on using the university VMS system for email and such. I actually wasn’t in this particular class, but my friend Bill Langston and I had spent several weeks prior to it tweaking some slightly more user-friendly methods we’d inherited to help people maintain an email address book. We’d tested and tested this stuff, written up notes and documentation for whoever was going to be conducting the class, etc. because both Bill and I were taking another class at that time.

As it turns out, our procedures worked fine as long as the user had a data file in place before they ran the procedure. We’d never tested under that condition. As it turned out, if that data file was missing, the procedure would go into a tight infinite loop looking for the data file over and over. Now the VAX node the class was conducted on (an 11/785, maybe?) could barely handle 30 people being logged in at once, so having 30 people following the teacher’s instructions of “now that everybody’s got the new login.com file, to keep from having to log you back out and in again, everyone type @login and hit the Enter key… now” brought the poor thing to its knees. In all honesty, it probably put its knees through the raised floor in the machine room and put a dent in the concrete below.

So when Bill and I exit our class at 1:30, we head over to the main Computer Center terminal room to check our email for a bit before getting lunch. I swear, not 30 seconds after we logged in, Frank walks up behind us and introduces himself. Accompanying him were Mike Wheeler and Chuck Wilson, the rest of the systems support group. I very dimly remember that meeting now, probably from shock at the time. I know Frank said a few things, nothing angry, and left shortly afterwards. Mike showed us VMS lexical functions to check for a file’s existence before blindly opening it. Frank didn’t disable our accounts.

- 2 -

I think Frank once mentioned that his family originally came over from the eastern half of Europe, surname of Busho, perhaps? Ever since then, I’ve always imagined Frank looked just like Mr. Prosser from Hitchhiker’s Guide to the Galaxy — that his ancestors conquered a goodly portion of Eurasia through horses, archery, and axes. Sometimes Frank would force a smile in response to something annoying him; I always thought he was hearing a thousand hairy horsemen shouting in his head.

And sure, my geography and history may be muddled, but it’s the thought that counts here.

- 3 -

Late one Friday night in August 1994, on the last day of my co-op work period in Oak Ridge, my friend Chuck Ransom died in a car wreck on his way to Cookeville. He was going to stop there overnight before he and some other of our friends were going to help Carolyn and I move back to Cookeville from Oak Ridge. I drove down that Saturday morning expecting to meet Chuck, his girlfriend Robin, and Mel Gold so that we’d all caravan back up to Oak Ridge to load up, drive back to Cookeville, and move everybody in. Instead, I find Robin and Mel after they’d been up most of the night crying. This wasn’t the sort of news you’d lay out over the phone if you had any other option, and they hadn’t found out themselves until very late that night. While Robin and Mel finished getting cleaned up for the rest of the day, I tried to find Bill to tell him the bad news. Couldn’t find him at home, so I thought he might have an early shift working the printer/plotter window at the Computer Center. He wasn’t there, but Frank and the systems group were there doing some maintenance or other work. I expect I looked like hell, and Frank asked me what was wrong. I don’t remember how much crying I did then, but Frank hugged me, and after a while, I went on my way, and he went back to work.

- 4 -

Frank let me work on the music and support team at Search for quite some time, despite having no real musical training or instrumental talent. He never told me I couldn’t sing. He didn’t bar me when once I accidentally started singing a completely different song halfway through our previously-agreed-upon song, and took a sizable fraction of the Search team along with me.

- 5 -

When Krissy Bright and I were working up materials for the first team meeting for the Re-Search we led in the fall of 1997, we found a lot of what we thought were useful thematic elements from this book (what can I say except that some Searches were really interfaith?). We sent out a mass email to the incoming team, and also to Frank (one of our permanent advisors), with teasers for what we’d be doing the first meeting, promising various weighty discussions into “ovine ontology”. I remember running into Frank later that day, but all I remember him saying was “Sheep, Mike?”

I knew in 1988 or 1989 that I wanted to be an engineer, despite having few to no examples in my family or direct experience. But not too long after that, Frank, Mike, and Joel gave me examples for being a systems administrator. Today, I’m a bit of both. I never worked directly for Frank in any technical capacity, but he always demonstrated the best ideals for that sort of work. Frank was an awesome guy, and I’ll miss him terribly, as will everyone who knew him.

OMG, Webb Wilder walked past me!

Webb Wilder was at the Crossville Arts Council’s Music on Main series last night. A late friend was an unabashed fanboy of Webb’s from the early/mid-90s, and I received his Doo Dad CD and Corn Flicks video from the family after the funeral. Doo Dad has worn grooves in my iPod. So my wife humored me in heading to this free concert up the road.

We set up across the street from the stage, and listened through the canned music leading up to the 6:15 live show. As I was looking around, a guy in a dark blue shirt walked out from behind us and across the street with a handful of torn legal pad sheets. I thought he resembled Webb, but I didn’t get a good look at him from the front. Lo and behold, he reached into the Ford van near the stage and pulled out a fedora. OMG, Webb!
IMG_0338

Webb rocked. Through two sets, with lots of material from Doo Dad, and lots of other songs I’d not heard before.
IMG_0353

Partway through the second set, the local Girl Scouts commandeered the stage to announce who won various prizes from the downtown shops:
IMG_0407

I now have a signed poster and concert DVD plus two unsigned vinyl stickers, and my wife has a Webb shirt. Awfully nice guy, puts on a great show. Now I have to go get the rest of his MP3s from Amazon. Many, many more photos in my Flickr set.

To michaelb1 at 43Folders

(So, so tired of trying to figure out why I can’t post these long-winded explanations at times. Context here.)

On a certain level, it is how the web is built. And along the same lines, a class in Drupal (or any other CMS) would be like taking a class on MS Word. Practically useful in that you might gain expertise in a common application, but there are whole areas that it locks you off from learning about that might be more applicable in a different type of course.

When I think about the number of web-related things I either helped develop or currently support on a regular basis, they cover a huge range of toolsets and complexity (obviously the development ones are much, much simpler):

Personal stuff:

  • My WoW guild’s forum: I didn’t write a bit of it, but I did write a customized application form to help people answer the right questions in the right order, and help post it to the right forum. I didn’t do this from scratch, but started with someone else’s work in a support forum somewhere. This mixes PHP, HTML, Javascript, and a small bit of the API from the forum.
  • Guild’s CMS: I didn’t write this either, but I have to know which buttons to press when, and which settings to fix to allow people to post their own items to the front page. The decision of which CMS to go with ended up being the one that was an addon to the already-selected forum software. I had gotten tired of buggy modules that would combine the authentication lists from the forum and the CMS, and decided that a standalone CMS just wasn’t worth it.
  • Guild’s roster: I wrote an initial set of bank pages there. Raw PHP and SQL, starting from a similar set of pages used for personal inventories.
  • Personal site/blog: all in WordPress. I mostly want the site for the blog; other types of pages are less important, and can mostly be done in WordPress.

Work-related stuff:

  • Work site: almost entirely done in the Plone CMS. Why a CMS at all? Because I wanted full-text indexing of all the content so that people could search for “MATLAB” and get some relevant documents back, without relying on Google like the main university site does. And so that I wouldn’t have to go to a lot of effort to get a consistent page layout and focus on writing the page content. Why Plone? Because at the time I started getting into this, the usual PHP-based CMS systems were constantly getting compromised with buffer overflows and other security problems.
  • Work blog: WordPress again. I could get a blog for Plone, and it would have the advantage of putting all the content into one big searchable database, but Plone doesn’t have anything as good as Spam Karma 2 to keep the spammers away.
  • Site at work that lets Helpdesk workers preview large-format plots before releasing them to the plotter, or deleting them outright: good old Perl CGI and HTML for the front-end, and a slightly oddly-configured Apache server that has permissions to manage the printer queues on the server. I did use a Perl module to help write out the HTML rather than hard-coding it all in regular print statements. Why Perl instead of PHP? Because there are a grand total of two pages on this entire site, CGI is good enough for the limited things it needs to do, and at the time, my PHP was much rustier than my Perl.
  • Site at work that lets selected students and faculty view still images and animations from Axis IP cameras in their labs: Python code that grabs images, converts them to FLV format, and writes out an XML playlist for a Flash-based media player. Also a PHP file that makes a page including links to all the still images, shows the video player, etc. Why Python? Because it’s much cleaner looking than Perl, and I stand a better chance of reading it in the future. Why PHP for the front-end? Because I know it enough to get the job done, and these pages aren’t that complicated.

The point of all that rambling is that a CMS isn’t everything, but has its place. And being able to write stuff outside of a CMS is important at times. And that you’re not likely to use the same toolset for 10 years at a time.

And if you’re still not clear on what Drupal does, start here, then possibly head to here or here. As for how to use it, install it somewhere, then play around. Add pages, categories, etc.