Saturday, December 27, 2008

My first Drupal module(s)!

I'd nearly given up learning the Drupal content management system, after it took me two hours to change a font on a static web page. But I needed to procrastinate something even more difficult than changing fonts in Drupal, so I decided to try, try again.

The first interesting thing I wanted to try in Drupal was feed aggregation. I love the idea of feed aggregators like Tumblr, FriendFeed, and Swurl, but I'm unsatisfied with the limitations on what or how many feeds you can use. The output (from Tumblr in particular) can also be rough-looking. Why oh why can't they handle quotation marks in titles right. I'm no regex champion, but I suspect even I, PHP fledgling, could write the fix to that. Surely they've noticed that posts titled "Barack Obama - "Yes We Can"" aren't very appealing? (I had to go out of my way for Blogger to let me make it that ugly.) Finally, I'd like to enhance the output of at least one feed with additional content from my own database, which is completely impossible with Tumblr, Swurl, or FriendFeed.

So I've been checking out Drupal's feed aggregators. I tried Aggregator and FeedAPI my first day using Drupal, so I doubt I assessed their usability fairly. I'll try them again when (if) I understand CCK and Views. But when I tried the ActivityStream module, my enthusiasm for Drupal was restored! Not only did it do significant portions of what I want done (Flickr, last.fm, and delicious feeds), but it looked dead easy to add new feeds by making new sub-modules.

It was indeed dead easy. To add a Goodreads sub-module, I copied and pasted the delicious sub-module. I opened the two delicious files and replaced the word "delicious" with "goodreads". I opened my module list and saw my new module. I turned it on, entered my Goodreads info, and holy shit it worked! My recent Goodreads activity was interspersed with the Twitter, delicious, last.fm, and Flickr info I'd already added. I decided sleep could wait until I made five modules like my Goodreads modules, for Blogger, StumbleUpon, YouTube videos, YouTube favorites, and Hulu.

My new modules are far from perfect. I have a list a page long of improvements I want to make (like handling quotation marks in titles...). But the beauty of Drupal, and open source in general, is that I have access to the code to make those improvements. All I can do with Tumblr is gripe and hope they fix it.

Thus far, it seems to me that in Drupal, it's much more fun doing hard things like feed aggregation than doing easy things like changing fonts. I think this explains why people hate Drupal, then love it. To beginners doing something "easy" like trying to change fonts and put files where they want them, Drupal seems like a ridiculous thing to be excited about. To people who've just done something "hard" that they've wanted to do for years in the space of ten minutes (that's what she said), Drupal seems pretty awesome.

Thursday, December 25, 2008

A very Hulu Christmas

A white Christmas is very nice, but an extremely snowy week-before-Christmas meant my Christmas plans changed to staying in with the cats. We may order Thai food later to honor my husband's Christmas traditions. To honor mine, there must be cornflake cookies, bean dip, and television. The food is achieved, but the t.v. was harder. For starters, I have no television set. Fortunately, the Internet is almost a satisfactory video-watching alternative. Here's what I've tracked down so far.

How The Grinch Stole Christmas
A classic. I haven't watched it all the way through yet, but it was choppy. I paused it to let the whole thing load in hopes of improvement.

Rudolph the Red-Nosed Reindeer
Another classic. Might be choppy.

Bing Crosby - White Christmas
One of my favorite Christmas songs.

John Lennon - Happy Xmas (War is Over)

Trey Parker and Matt Stone - The Spirit Of Christmas
What would Brian Boitano do?

American Dad - Best Christmas Story Never Told
The "War on Christmas" hilariously embodied. On Hulu, so shouldn't be choppy.

American Dad - Most Adequate Christmas Ever
Stan learns a Christmas lesson. On Hulu, so shouldn't be choppy.

santa claus on cribs
Not for children, though they probably won't catch the double entendre.

Elmo & Patsy - Grandma Got Run Over By A Reindeer
There was nothing funnier than this song to a certain ten-year-old in December 1985.

The Simpsons - Christmas Epidsode

Alfred Hitchcock Presents - Back for Christmas
Christmas is about giving.

The Madagascar Penguins - A Christmas Caper

Santa Beats Up Guy In Mall

Tom And Jerry - The Night Before Christmas
I was never that enthusiastic about the super-violent Itchy and Scratchy style Warner Brothers cartoons, but I think this one's okay.

NewsRadio - X-Mas Story
On Hulu, so shouldn't be choppy. I haven't watched it yet, but I'd bet money this is at least 4 out of 5 stars, as all NewsRadios are.

NewsRadio - Stupid Holiday Charity Talent Show
On Hulu, so shouldn't be choppy. I haven't watched it yet, but I'd bet money this is at least 4 out of 5 stars, as all NewsRadios are.

Saturday Night Live - Two A-holes Buying a Christmas Tree

Saturday Night Live - Christmas For The Jews Song

Saturday Night Live - Hanukkah Harry

Saturday Night Live- Two A-holes In A Live Nativity Scene

The Twilight Zone - The Night Of The Meek

Alfred Hitchcock Presents - The Festive Season
Bleak, quality entertainment. On Hulu, so shouldn't be choppy.

Jay Leno - Bizarre Christmas Musicians

The Colbert Report - December 11, 2008

Bones - The Santa In The Slush
I haven't checked out this show yet. Perhaps I'll start with this one. On Hulu, so it shouldn't be choppy.

The Office - Moroccan Christmas
Haven't watched yet. On Hulu, so shouldn't be choppy.

30 Rock - Christmas Special

MadTV- Best of Christmas Sketches
Hit and miss, but worth it just for The Reinfather.

Do They Know It's Christmas?

Full Metal Christmas

Sketchy's Super-Happy Christmas Film
I haven't watched it yet, but stop-motion and Christmas do go together.

Three's Company Christmas

Space Ghost Christmas

Santa Claus Conquers The Martians, Part I
Santa Claus Conquers The Martians, Part II
Santa Claus Conquers The Martians, Part III
Santa Claus Conquers The Martians, Part IV
Santa Claus Conquers The Martians, Part V

The A-Team - Holiday In The Hills

Nestor The Long-Eared Christmas Donkey

William S. Burroughs - The Junky's Christmas

I've only included videos that interest me, but here are links to searches so you can see what I've left out:
Hulu
GUBA
StumbleVideo
YouTube
Dailymotion
FunnyorDie
CBS

Wednesday, December 17, 2008

How to write a playlist maker script

I got an email asking for tips on writing a playlist maker script.

Using PHP, my process was this:
1. Choose a playlist format. My favorite playlists are Windows Media Player WPL files, which use the SMIL subtype of XML. There are tons of other types of playlists. Songbird and Winamp both use M3U, for example. Unfortunately, most playlist file types, including M3U, are not as "smart" as WPL files, in that they want the exact path to a single song on a user's computer, rather than just an artist name or song title. WPL files will take an artist or song name and give you a playlist of everything in your library that matches. I don't understand why Songbird and Winamp don't handle WPL or SMIL files (yet?). After I figured out which playlist format I wanted, I right-clicked a WPL file I'd made, opened it in Notepad, and used it to cut and paste the top, bottom, and repeating bits of the playlist code where needed in the following steps.

2. Find a source of artists or song names you want in your playlist. The best way was to use an RSS feed, but for my iLike and last.fm tag playlist makers, I scraped the source code of some web pages, which is messy, but it works. You can also offer a way to paste in or upload a list of artists.

3. Write an HTML form (called, for example, input.html) that takes user input (like a last.fm username) to get the source you want. The "Submit" button on the form will take you to your playlist making code (playlistmaker.php, for example).

4. Write code to convert your input (such as a last.fm username) into a URL to an XML or HTML file and get that file ready to be used. For example:
$handle = fopen("http://ws.audioscrobbler.com/1.0/user/".$username."/topartists.txt?type=overall", "r");

5. Write code to make an array of only artists or song names using your source. The exact code will vary depending on the source of artists or song names. This is the trickiest part, and I'd give examples of how I've done it, but it's different nearly every time, and I'm sure my ways are not especially elegant. One thing I'd like to do better is parsing the actual XML instead of finding where the artists turn up in the array and using numeric indices to grab the artists or song names.

6. Create a variable that will contain the entire text you want in the playlist file ($wpl, for example). Paste in the top bit of the playlist text. For a WPL file:
$wpl = "<?wpl version=\"1.0\"?>
<smil>
<head>
<meta name="\" content="\">
<title>".$username."</title>
</head>
<body>
<seq>
<smartplaylist version="\">";

7. Write a loop that adds the section of the playlist that repeats for each artist or song name to your playlist variable ($wpl., for example). Concatenate in the artist or song name variable. Make sure you convert HTML characters, as ampersands will render your playlist utterly worthless. For example, where the artist names are in $data[2]:
while ($data = fgetcsv($handle, 1000, ",")) {
$wpl.="<querySet>
<sourceFilter id=\"{4202947A-A563-4B05-A754-A1B4B5989849}\" name=\"Music in my library\">
<fragment name=\"Album Artist\">
<argument name=\"condition\"<Contains>/argument>
<argument name=\"value\">" . htmlspecialchars($data[2]) . "</argument>
</fragment>
</sourceFilter>
</querySet>";
}

8. Finish off your playlist text variable by pasting in the end text of the playlist variable (again, $wpl.). For a WPL file:
$wpl.="
</smartPlaylist>
</seq>
</body>
</smil>";

9. Create a new file containing your playlist variable text as follows:
$handle = fopen("filename.wpl","w");

10. Offer a link to download the new file.

11. Try it out!

Optional tweaks:
12. WPL playlist files offer you the option of finding an artist name that "Contains" the word "Bell" (for example), or finding an artist that "Is" the word "Bell." After the band "Bell" made Belle and Sebastian turn up in a festival playlist I made (oh, the brief crushing excitement), I added a conditional so that if the artist name is 5 characters or shorter, I use "Is", and if it's longer, I use "Contains". It's still inexact, and it's an area I'd like to improve. Handling "The" (Pixies, Beatles, Raveonettes) is another thing I'd like to work out at some point. Here's an example of one of my conditionals where the artist names are in $data[2]:
while ($data = fgetcsv($handle, 1000, ",")) {
$limit=6;
$num=count($data[2]);
for ($i=0;$i<$num;$i++) {
$len[$i]=strlen($data[2]);
if ($len[$i]<$limit) {
$wpl.="<querySet>
<sourceFilter id=\"{4202947A-A563-4B05-A754-A1B4B5989849}\" name=\"Music in my library\">
<fragment name=\"Album Artist\">
<argument name=\"condition\">Is</argument>
<argument name=\"value\">" . htmlspecialchars($data[2]) . "</argument>
</fragment>
</sourceFilter>
</querySet>";
}
else {
$wpl.="<querySet>
<sourceFilter id=\"{4202947A-A563-4B05-A754-A1B4B5989849}\" name=\"Music in my library\">
<fragment name=\"Album Artist\">
<argument name=\"condition\"<Contains>/argument>
<argument name=\"value\">" . htmlspecialchars($data[2]) . "</argument>
</fragment>
</sourceFilter>
</querySet>";
}
}
}

13. Greasemonkey! Using a tiny bit of Javascript, you can put a link to your playlist making code on relevant source pages. Clicking this link will give you the option to look at one of my Greasemonkey scripts. You'll especially want to change:
  • @include to reference the page you'd like to put a link on.
  • The link to the script that makes your playlist.
  • @name
  • @namespace
  • Colors (I'm using last.fm grey. Meh.)

You can grab the username for the last.fm URL they came from by putting this at the top of your playlist maker script (playlistmaker.php, for example):
$url = getenv("HTTP_REFERER");
$elements=explode("/", $url);
unset($url);
$username=$elements[4];
unset($elements);

Here's a zip folder with code for the input form and playlist maker, as well as a Greasemonkey playlist maker for a last.fm listener's most-played artists. This was one of the first things I did when I was learning PHP, so it's far, far, far from perfect. But feel free to use any bits of it you like. I'm not litigious.


I am crawling up a learning curve (Drupal) myself right now, but if you have questions or suggestions, comments are open.

For anyone more interested in making playlists than playlist-maker scripts, my playlist makers are here.

Tuesday, November 11, 2008

Fantasy Cabinet tool

The Onion recently suggested that people who'd been obsessed with the election were now going to realize our lives are devoid of any meaning.

Well, perhaps, but that doesn't mean we've stopped caring about politics.

For example, I'm working on a Fantasy Cabinet tool. Right now, it's ugly, but it works. Enjoy, America nerds.

Tuesday, November 4, 2008

Election Day resources online

NPR Election Map
Jumping the gun like ABC, but not quite as much.

ABC Election Map
First place I saw the number of counted votes for Obama and McCain, when it was down around 13,000. Cool.

MSNBC Decision '08 Dashboard
NBC has said they'll only call the race when the chance of getting it wrong is less than 1 in 200 according to statisticians. Their maps also show key Congressional races. You can tweak the page so it shows the information you want and leaves off the junk about what Cindy McCain wore to the polls. I had a link to their video stream, but I clicked it and it was goddamn Pat Buchanan. So that's out.

Twitter Vote Report Map
Maps of people's voting experiences as reported to Twitter.


Twitter Election
A lot of nonsense, but really the absolutest fastest way to get interesting new information when it isn't nonsense.

Video the Vote
Shows real people voting, or rather, waiting in ridiculous seven hour lines to vote. With two kids. On the one hand, those people are awesome. On the other hand, I hope more states switch to voting by mail like we do in Oregon.

Huffington Post Roundup
A collection of widgets and geegaws I've not yet mined, but am looking forward to investigating.

Is Obama President?
Simple.

CNN Live Stream
Watch CNN online.

TwitVote
Completely unscientific, but if you like Obama, totally gratifying.

CNN Election Tracker
A summary of polls. I'm not sure if they'll update it with exit polls when those come in after 5 p.m., but I'll be checking this to see if they do.

Sunday, November 2, 2008

American Bubbly for Election Night

Here are just a few suggestions for American sparkling wines to celebrate (or drown your sorrows) on Election Night.

1998 Argyle Brut Extended Tirage, Argyle Winery, Oregon, United States, WS 95, $25, $59

1997 Argyle Extended Tirage, Argyle Winery, Oregon, United States, WS 94, $24, $37, $40, CellarTracker, COLA

2000 Blanc de Blancs, Argyle Winery, Oregon, United States, WS 92, $40

2001 Schramsberg Vineyards Reserve, Schramsberg Vineyards, California, WS 91, 90, $76, $85, $100, COLA

2000 Knudsen Vineyard Brut, Argyle Winery, Oregon, United States, WS 91, $30, $40

Roederer Estate Brut, California, WS 90, $22

2002 Argyle Brut Sparkling Wine, Argyle Winery, Oregon, United States, WS 90, 91.5, 87, $24

2006 Argyle Brut Rosé, Argyle Winery, Oregon, United States, WS 90, $45

1996 Argyle Extended Tirage Brut, Argyle Winery, Oregon, United States, WS 90, $34, $37, $40, The Wine Camp Blog, COLA

Chateau Frank Celebre, Dr. Konstantin Frank Vinifera Wine Cellars, New York, WS 82, $19, 85, $20, COLA

Schramsberg Mirabelle Brut, Schramsberg Vineyards, California, 92, Good Wine Under $20, $18, $20, COLA

1998 Schramsberg Cremant, Schramsberg Vineyards, California, 92, $45, COLA

2001 Schramsberg Brut Rosé, Schramsberg Vineyards, California, A-, $23, $27, COLA


Glenora Peach Spumante, New York, 85, $9, $10, $11, Dowd's Tasting Notes, COLA

Glenora Raspberry Spumante, New York, 85, $9, $10, $11, COLA

Sofia Blanc de Blancs, Niebaum-Coppola Winery, California, $4, $13, $16, msnbc, winewaves, Tastes Of Life, yumsugar


Schulze Cuvee Rose, New York, $14, COLA

Domaine Ste. Michelle Cuvee Brut, Chateau Ste Michelle, Washington, $14, COLA

Schulze Blanc de Blanc Sec, Schulze Vineyards & Winery, New York, $16, COLA

Schulze Blanc de Blanc Brut, Schulze Vineyards & Winery, New York, $16, COLA

2005 McWilliam's Mount Pleasant Sparkling Pinot Noir, Mount Pleasant, Missouri, $18


2006 Cuvee Brut, Atwater Estate Vineyards, New York, $25, COLA

1998 Schramsberg Brut Rose, Schramsberg Vineyards, California, $30, $97, $120, COLA

1996 Schramberg J. Schram, Schramsberg Vineyards, California, $52, COLA

Thursday, October 30, 2008

Yes We Can (Hold Babies)


I just heard about the adorable Yes We Can (Hold Babies) web site. You should check it out, and remember to vote, vote, vote! Find out where and what ID to bring.

Monday, October 27, 2008

25 Wedding songs



Jonathan Coulton


Ben Gibbard of Death Cab for Cutie- Sasquatch Music Festival, The Gorge, WAspacehindu
The Pipettes
DSC_0095caloomba
Avett Brothers - Matrimony

Blitzen Trapper - Crazy On You [Buy mp3!!!]

Jonathan Coulton - Skullcrusher Mountain [ Buy mp3!!!]

The Boy Least Likely To - Rock Upon A Porch With You
Nada Surf - Always Love [Buy mp3!!!]

Elvis Perkins - While You Were Sleeping [YouTube][Buy mp3!!!]
The Brunettes - If You Were Alien [Buy mp3!!!]

Death Cab For Cutie - All Is Full Of Love

The Brunettes - Mars Loves Venus

Sufjan Stevens - To Be Alone With You

Feist - I Feel It All
Feist - It's Cool To Love Your Family [last.fm]

The Bees - I Love You [last.fm]

Wendy O. Williams and Lemmy Kilmister - Stand By Your Man

Matt Costa - Sunshine
Matt Costa - Sweet Rose [Lyrics]

Foo Fighters - Everlong

Of Montreal - Spoonful Of Sugar

The Pipettes - I Love You [Live][Live][Buy]

Cowboy Junkies - Sweet Jane [Live][Buy Album]

Crosby, Stills & Nash - Teach Your Children

The Velvet Underground - I'm Sticking With You

Gothic Archies - Shipwrecked

Holly Golightly - Your Love Is Mine

The Cure - Love Song

Friday, October 3, 2008

Google Chrome: I'll pass

My Firefox browser crept up to using 200 megs of system resources today, so I decided to try out the new Google Chrome browser, which treats every window and tab as a different process. Close one tab, use fewer system resources. Awesome!

While Chrome installed (it took a long time!), I started looking for del.icio.us, StumbleUpon, and download manager tools for Chrome. I found del.icio.us and StumbleUpon bookmarklets, hooray! But while I was deciding if no wonderful DownThemAll download manager would be a dealbreaker (I use DownThemAll in conjunction with my blog reader to feed my podcast addiction), I noticed the blog post "Why I Uninstalled Google Chrome." It's about Google's weird privacy situation. It's bad enough that every time any one of the kajillion random people we let use our wifi does a search, that gets logged in Google's database under our IP address. Google anonymizes that, but not really.

With Chrome, Google would keep a database of not just my searches, but absolutely everything I do online. Though I am not a terrorist or a pornographer or a promising young politician susceptible to Roveian use of spying agencies, having everything I do online in someone else's database is still creepy to me, and I don't think Firefox does that (it seems like phoning home to Google every time you load a web page would slow you down a bit).

Additionally, it occurs to me that Chrome would probably not allow anything like the NoScript and AdBlockPlus Firefox extensions that currently make my web browsing experience so downright pleasant. Nearly every page you visit wants you to be running some google-analytics script, presumably to harvest information about you and show you ads. NoScript means I don't have to have my information collected and used against me in annoying video ad form, so only under the severest page malfunction circumstances do I even temporarily allow google-analytics. And AdBlockPlus means I'm puzzled when I end up on a web page where people are complaining about the annoying video ad. What annoying video ad?

I think I'll just hope that Firefox's next version incorporates the cool individual-process feature* instead of switching to Chrome and hoping that Google will suddenly care more about my privacy than its ad revenue.

*Firefox has shown a weird combination of hard work and denial on the memory problem. It's clear they're trying to fix it. But they also suggest you're a weirdo for having the problem and you really ought to use fewer windows and restart Firefox more often.

Update: Google plans to open Chrome up for extensions.

Monday, September 29, 2008

Republicans: Waaa-tastic

Top Republicans in the House of Representatives say Republicans decided not to try to shore up the U.S. economy because Nancy Pelosi hurt their feelings.

"We could have gotten there today had it not been for the partisan speech that the speaker gave on the floor of the House."

House minority leader John Boehner (R) said Pelosi's speech, which criticized the last eight years of deregulation that got us into this mess, "poisoned our conference (and) caused a number of members that we thought we could get to go south."

Pathetic.

Speaking of going south, the Dow is down almost 7% on the news that Republican feelings are so delicate.

Monday, September 22, 2008

VIVA OBAMA 2008 video

My mom sent me this video of a demographic I hadn't previously been aware of: Mariachis for Obama. Smiled the whole way through.

Monday, September 15, 2008

I shoulda learned Java

Alas, my bank account has little more than tumbleweeds in it, so my year or so of un-/self-employment is coming to an end. I must job search in earnest and stop turning up my liberal elite nose at corporations looking for automated pollutant emitters and chicken torturers.

The question now is what programming skills such corporations want me to use to design their new improved Humvee fan sites, and since I've sent out my quota of three resumes today, I get to blog those skills.

As I've opened various job postings, hoping the single handful of programming languages I'm truly comfortable with are just what they're looking for (FORTRAN anyone? Anyone?), I've been keeping track of what they are, in fact, looking for. This is completely non-scientific, of course. One glaring flaw, for example: every third company wants a straight-up Java programmer. I want to know Java (that's how the awesome, awesome, awesome Legend of Zelda for your phone! was written), but I don't honestly know Java, so I don't open those ones.

Here are the programming languages/skills companies are looking for in order of popularity in my unscientific survey:

Javascript - 8 companies
Green Ventures, Inc.
Mystery Company
Auction company
Smarsh
Mystery Company
Dealerpeak
Inspiration
ConceroTechnology

HTML - 6 companies
Sharepoint
Smarsh
Intersoft
Mystery Company
Auction company
ConceroTechnology

Java - 6 companies
Amazon
Sharepoint
Axiom
Mystery Company
Dealerpeak
DB Professionals

Linux - 4 companies
Amazon
Mystery Company
Intersoft
VxWorks

PHP - 3 companies
Green Ventures, Inc.
Mystery Company
Intersoft

MySQL - 3 companies
Green Ventures, Inc.
Mystery Company
Auction company

Visual Basic - 3 companies
Smarsh
Axiom
Selectron

Visual Basic.NET - 3 companies
Lifeport
Sharepoint
ConceroTechnology

XML - 2 companies
Intersoft
Dealerpeak

Perl - 2 companies
Amazon
Intersoft

C++ - 2 companies
Amazon
Axiom

C# - 2 companies
Selectron
ConceroTechnology

C - 2 companies
VxWorks
Mystery Company

Coldfusion - 2 companies
Mystery Company
Dealerpeak

.NET - 2 companies
Sharepoint
Intersoft

CGI - 1 company
Intersoft

CSS - 2 companies
Smarsh
Mystery Company

ASP - 2 companies
Sharepoint
Smarsh

Flash - 2 companies
Auction company
Inspiration

SQL - 1 company
Dealerpeak

AJAX - 1 company
Green Ventures, Inc.

Joomla - 1 company
Green Ventures, Inc.

Drupal - 1 company
Inspiration

SQL Server - 1 company
Smarsh

ActiveX - 1 company
Smarsh

Sunday, July 27, 2008

Barack Obama - "Yes We Can" audio mp3

I was adding new podcasts to my Podcast Finder, and I saw that Barack Obama's most-listened-to track is his "Yes We Can" speech from New Hampshire. There's video of that all over the place, but I couldn't find an mp3 of the speech. So I made one using the Free Video to MP3 Converter.

Here you go:
Barack Obama - Yes We Can

And here's the original video, which only took a couple months to post to my blog from YouTube.


You'd think I'd know by now that the Internet doesn't work better if you keep clicking until it does what you want. Sorry if I Obama-spammed your feed reader.

Monday, June 16, 2008

1999 Eaton Hill Cabernet Sauvignon - 100

I wished I could buy all of it. Complex, smoky, but delicious and not harsh. I'd never liked a Cabernet Sauvignon before this one.

Konnowac Vineyards, Silver Foil
$42 a bottle, drank at Eaton Hill winery

Sunday, June 15, 2008

2006 Marshal's Barbera Port - 95

Sweet!! The vintner said he'd have dialed it back to 11% sugar rather than 13%, but another gal who'd flown in from Iowa to taste wine (with her dude, who seemed like the more expert of the two) and I loved it.

$20 per bottle, drunk 10/4/07 at Marshal's Winery tasting room.

Saturday, May 31, 2008

Why no Sasquatch next year*

I went to the Sasquatch music festival this weekend. As usual, the location is beautiful and the music ranged from good to mind-blowing (another post on the music later). But unless the organizers manage to resurrect John Lennon, I don't plan to go next year. At one point, waiting in some annoying line or other, I said, "I can't wait until next year, when we're NOT going to Sasquatch."

First of all, the price is too high. Usually for festivals, I do a little calculation of how much I'd pay to see each band individually and that decides whether I go. This year, I was so excited about The Cure that I'd bought two (non-refundable Ticketbastard) tickets for all three days before I did the calculation and realized that I wouldn't have paid $75 for any of the days. So again Sasquatch, next year it'd better be zombie Lennon. And if you're messing with necromancy, why not Cobain, too.

The ongoing frat-guy-ization of Sasquatch reached fever pitch this year with some annoying morning-zoo types blaring music and trying to get people to humiliate themselves for free ad t-shirts next to a pitching cage, a corporate SUV (hott!), and a semi truck parked on the lawn where only two years ago, a guy dressed as a banana had done quiet interpretive dance. I missed Banana Man.

And holy shit is the alcohol situation bad. Of course you can't bring your own, and they charge through the nose. PBR was $11. For those prices, I decided to keep my self-respect and stay sober. But having been wildly envious of people who stayed dry in the bar during the hailstorm a few years back, I decided to go into the bar as soon as the crowd started cheering on the rain.

Sure enough, rain started to fall, the crowd started to cheer, and we rushed over to the bar. I was surprised by how short the line to get in was. And yet, we were in line for ten minutes while one gal looked at every ID as though it were an Israeli checkpoint. Then she spent two minutes each putting on a wristband just so.

When I got inside, the gal at the bar carded me again for my $9 mini-Sutter Home. So the hard-won wristband was useless. At that point, I was okay with it. She was nice, and it's a little flattering to be carded when you're 33 years old**. That is, it's flattering every now and then.

We left the tent ASAP (they had the concert showing on little tiny TVs, but no sound on), wherein I got yelled at for carrying out my empty mini-wine for later label use in my wine journal. The Fiance said he understood -- I might get wild and start smashing people over the head with my empty plastic miniature wine bottle.

We came back to the bar when the skies got threatening again. Longer line, even with two additional people on ID duty. One guy waved his bracelet and zipped through. I waved my bracelet at ID Dude #1, he spied my myriad gray hairs, and waved me through. But as I tried to move forward, ID Dude #2 said, in full authoritarian mode, "Your ID! Where's your ID!"

Now, nothing pulls my trigger faster than a mean person.

"This is ridiculous!" I said. "I've been checked!" I said, waving my wristband. "YOU checked me!" I said to the gal who was studiously ignoring the scene I was making. By this time, I'd pulled out my ID (after 12 years, I've no doubt I can do this in my sleep) and been waved through by ID Dude #2. "I'm 33!" I said as I stalked into the bar. "Then act like it," I heard the sheepy obviously-old fattened multitudes who haven't been carded since they were 15 behind me think. Still, I swear to God my tantrum (or probably dozens like it) had an effect. The next day, ID Dudes were circulating in the crowd, giving out wristbands at people's leisure. That'd be fantastic, if the wristbands weren't utterly useless to anyone under forty and 200 pounds.

I decided it'd take a Biblical flood to get me back in the bar, so we just stuck out the brief little rain showers for the rest of the festival. Much more pleasant than the Kafka-esque bar. But more beverage-related hassle awaited! In addition to either cheap or high-quality beer, I enjoy a good cup of coffee. That is, an afternoon without any coffee is an afternoon with a bad headache. On Sunday, they were out of coffee. On Monday, they were out of coffee cups. How do they not want the all-profit $4 they were charging badly enough to ensure they have coffee and cups to serve it in? Market forces. Pfff.

How the Gorge management treats its guests was embodied perfectly in signs on various beverage vendors. "As requested by the artists, all bottle caps must be removed and confiscated upon purchase." Now, people who throw bottle caps should be banned from attending any concert ever, but I am fucking certain Chris Walla did not request that all of his fans be treated like criminal infants (with giant trust funds). But that's exactly the way the Gorge did treat us, every step of the way.

Though nothing, not even the jaw-dropping Battles, was "too loud," I guess this all amounts to: I'm too old to be treated this way (though apparently I don't look it).


*Barring zombie Lennon.

**Thanks for the youthfulness, fat Irish cheeks! I've seen what gravity will do to you come age 50 though. Must mentally prepare.

Server problems, episode III

If you've tried to use my playlist makers in the last week, I apologize that they didn't work. I went over my server quota and, as I was mostly way off-grid last week, I didn't realize things weren't working until yesterday. The problem should have been fixed yesterday, but it just got worse and worse. I deleted everything I could to free up space. But it still wouldn't let me create new files. Worse, trying to save changes to existing files resulted in those files getting emptied of all code.

Ultimately, my desperate attempts to regain control of my files resulted in my entire web folder turning inaccessible to me. Grr.

So once again I'm trying to move everything (oh yes I have backups) to a more reliable server (Freehostia doesn't pull this baffling crap) and I'm dreaming of turning my elderly Toshiba into my very own Linux server. And again, I'll get two things moved, the crappy server will start working again, and I'll want to write new code instead of tweaking old code for a new server or figuring out how to get Linux to authenticate to a shared wireless router...

Sunday, May 18, 2008

The Brunettes at Crystal Ballroom 5/25


the brunettes
Originally uploaded by mr. mammoth
The Brunettes will play at the Crystal Ballroom May 25. I'll be at Sasquatch, but if you like a sweet bubblegum duet, check 'em out!

The Brunettes - If You Were Alien [Buy mp3!!!]
The Brunettes - Loopy Loopy Love
The Brunettes - Small Town Crew
The Brunettes - These Things Take Time
The Brunettes - Cotton Candy

Saturday, May 10, 2008

Native Oregon purple flowers, August blooms

In my on-going quest to make my wedding as complicated as possible (and my blog as random), I'm looking into potted plants native to Oregon for centerpieces. Here's my attempt to track down purple flowers native to Oregon that bloom in August. They don't have these at Freddy's or Walgreen's, and at the nurseries I've visited, you're not gonna find someone who knows what's native, when something blooms, and what color it is. So again I turn to The Internet for my over-specific, long-tail demands.

It's possible some of these are not Oregon natives -- I haven't systematically double-checked my assumptions.

Downingia elegans
Elegant calicoflower
[Oregon Plant Atlas]
[USDA]
[Paul Slichter]
[Flickr]

Gentiana sceptrum
King's scepter gentian

photo by foliosus
[USDA]
[Flickr]

Pedicularis attolens
Elephant Heads

photo by molas
[Native Plant Society]
[Flickr]

Gentianopsis simplex
[Native Plant Society]
[Flickr]
[Flickr]
[Flickr]

Penstemon davidsonii var. menziesii

photo by msanseve
[Buy plant!]
[Portland Nursery]
[Washington Native Plant Society]
[Flickr]
[Flickr]
[Flickr]

Calochortus macrocarpus
Sagebrush mariposa lily

[photo by brewbooks]
[USDA]
[Flickr]
[Flickr]
[Flickr]

Lupinus macrophyllum
Lupine

photo by dleroy
[Portland Nursery]
[Wikipedia]
[Native Plant Society]
[Flickr]

Penstemon richardsonii
[USDA]
[Native Plant Society]
[Flickr]

Hoary aster

photo by delayedneutron
[Paul Slichter]

Rosy owl clover
[USDA]
[Paul Slichter]
[Flickr]

Larger Western Mountain Aster
[Paul Slichter]
[Flickr]

Collomia larsenii
Talus Collomia

photo by brewbooks
[USDA]
[Paul Slichter]

Eurybia radulina
Rough-leaf aster
[USDA]
[Wikipedia]
[Paul Slichter]
[Flickr]

Wednesday, May 7, 2008

Useful last.fm tools

Last.fm is doing right what Facebook did right -- letting developers use its data to make new applications as they see fit.

I've blogged, ad nauseam, my last.fm Podcast Finder and last.fm Windows Media Player playlist makers (by most-played artists, calendar, and tag).

In the last few days, I've come across a couple cool last.fm tools made by other folks (each causing me brief bouts of crushing envy and despair). One tool improves the mp3 recommendation process, allowing you to subscribe to last.fm mp3 recommendations like they were a blog. And now there's lasttube, which finds videos from artists you play most on last.fm.

These new tools have me curious what other useful gems are hidden in the graphs-and-pretty-pictures mess at build.last.fm.

I'll let you know what I find.

Tuesday, May 6, 2008

Taverns shown thus

I'm working in a coffee shop, and I just noticed a cycling map of Portland from 1896 on the wall.

First thing I noticed was an ad for a fabulous olde timey women's cycling sweater. Do want!

Then I noticed that practically everything was marked orange, like it was a great road for cycling (like, say, Foster). So I checked the map key to make sure I was reading it right.

The map key said:
Good roads shown thus. ===
Fair roads shown thus. - -
Rail roads shown thus. ---
Taverns shown thus. []

Portland cycling culture is much older than I thought.

Friday, May 2, 2008

Last.fm Podcast Finder

I wrote some code I'm pretty excited about yesterday.

I've already blogged about my Podcast Finder, for podcast listeners in the market for recommendations.

This new bit of code makes podcast finding easier for last.fm users. Just put your last.fm username in here, and you'll get some podcast recommendations based on what you've "scrobbled" the most.

If you're a podcast listener who uses last.fm and Firefox with Greasemonkey installed (anyone left?), there's a Greasemonkey script that puts a link at the top of last.fm most-played artists pages, so you can just click to get podcast recommendations.

photo by Beard Papa

Monday, April 28, 2008

John McCain thinks women deserve lower pay

Republicans, including John McCain, came right out and called women stupid and incapable last week, blocking a bill to allow women to sue employers for sex-based pay discrimination. Congress had to write this seemingly-obvious law because the Republican Supreme Court put an arbitrary 6-month time limit on such lawsuits.

Now, I love it when the Republicans' true colors shine on through. Like when one of them spoke at a Hitler birthday party recently. Just as they believe whites are a superior race (listen to them talk about immigrants and foreign middle names and black people), Republicans really do believe women are less-than creatures only capable of looking pretty and wiping shit off baby-ass.

And they, John McCain in particular, came right out and said so last week.

While skipping the vote allowing women to get justice, John McCain said women deserve lower pay because women who got and performed the same jobs as their male colleagues are just too stupid to (wait for it) get and perform the same jobs as their male colleagues. "They need the education and training," McCain said, explaining why he opposes equal pay for women who get and perform the same jobs as their male colleagues.

Got that? If you're being underpaid for a job you earned and perform by a boss who disrespects women, you deserve that. Because you're stupid, according to John McCain and the Republican party.

If you see how that's wrong, lady, you're not the stupid one. Republicans are. Let's use our votes against them, shall we?

Saturday, April 19, 2008

My obsession with WMP playlists

For programming practice, I've been writing PHP scripts that will turn various lists of musicians into playlists for Windows Media Player.* Basically, you find a list of musicians that you'd like to listen to as a set, put that list in the appropriate script (see below), and out comes a playlist you can open with Windows Media Player to listen to your list of artists. For long lists of artists, this saves a lot of time over the usual method of putting them in one at a time.

The musician lists you can use for this purpose so far with my little tools are:
  • Last.fm Tagged Artists
    *Playlist maker
    *Example data source
    *Example playlist (rock.wpl)
    *Greasemonkey script (for users of Firefox with Greasemonkey installed)
  • Last.fm Calendar
    *Playlist maker
    *Example data source
    *Example playlist (portland408to808.wpl)
    *Greasemonkey script (for users of Firefox with Greasemonkey installed)
  • Last.fm User's Most-Listened Artists
    *Playlist maker
    *Example data source
    *Example playlist (jamidwyer.wpl)
    *Greasemonkey script (for users of Firefox with Greasemonkey installed)
  • iLike User Most-Played Artists
    *Playlist maker
    *Example data source
    *Example playlist (jami.wpl)
    *Greasemonkey script (for users of Firefox with Greasemonkey installed)
  • Eventful Calendar
    *Playlist maker
    *Example data source
  • Comma-Separated Values File
    *Playlist maker
    *Data source is a list of artists only saved as a CSV in Excel or OpenOffice Calc.
    *Example playlist (sasquatch.wpl)

    *I know Windows Media Player is not hip. But unbeknownst to even the tech-savviest, music-lovingest people I talk to, Windows Media Player's playlists will dynamically add and sort music by criteria you set. Instant mix tape! This was far more powerful than the playlists iTunes had back in 2004, when I took my first faltering steps to quit stealing the mp3 files I wanted, I discovered that iTunes had indeed sold me intentionally-crippled aac files that indeed wouldn't play on my phone's mp3 player, and I quit using iTunes in fury.

    So no, I will not be writing anything, ever, for intentionally over-priced, intentionally under-compatible Mac software. I would, however, like to write playlist makers for Songbird or Amarok, when I feel a little more bored of learning more PHP and MySQL and want to learn whatever it is I need to learn to write real programs.


    (Updated to fix links. Check for new playlist makers and updates on my code page.)
  • Wednesday, April 16, 2008

    Good political songs

    Inspired by this cry for help, here are some political songs I've been enjoying lately.

    Apples in Stereo - Stephen, Stephen [YouTube][Buy mp3!!!]
    Don't tell me you've forgotten how brave Stephen Colbert is already.

    Elvis Perkins - While You Were Sleeping [YouTube][Buy mp3!!!]
    Cursory Googling didn't yield a clear answer on whether this song means to Elvis Perkins what it does to me. The song I hear when I listen to this is indeed partly about Perkins' mother's death on 9/11. It's also about the sleeping country awakened that day. Sad, but hopeful, I think.

    But what do I know. It could be about his girlfriend taking a long nap.

    Winterpills - Broken Arm [Buy mp3!!!]
    The lyrics are all over the map, but there's politics in 'em.

    The Chemical Brothers - The Salmon Dance [Buy mp3!!!]
    This is just a fun song about salmon, but up here in the PNW, that's political, innit?

    Nellie McKay - Mother of Pearl [Buy mp3!!!]
    According to Ms. McKay, I'm doubly blessed with no sense of humor, as both a feminist and a vegetarian. Heh heh heh heh heh heh.

    Cocorosie - Rainbowarriors [YouTube][Buy mp3!!!]
    This makes me hippy-dippy freak-folk happy.

    Smog - I Feel Like the Mother of the World [YouTube][Buy mp3!!!]
    This song always reminds me of how my mom used to make us warring sisters sit in the same chair and hold hands as punishment. I think Bush could benefit from closer exposure to Middle Eastern people who are not outlandishly rich sheiks.

    The Thermals - Here's Your Future [Buy mp3!!!]
    More about religion than politics, but then in the "God Bless America (or else)" Bush years, they're not so different.

    Ted Leo - Loyal to My Sorrowful Country [Buy mp3!!!]
    No explanation needed.

    Tokyo Police Club - Your English is Good [YouTube][Buy mp3!!!][Lyrics]
    One this is clear: this song pertains to the future. Because the shocking youthfulness of Tokyo Police Club freaked me the hell out when I first discovered it a couple years ago, I always thought this song was about young people taking over with their kinder, gentler values. Reading the lyrics, it seems like it's more of an indictment of the current people in power.

    Photo strip made by Bordr.

    Tuesday, April 15, 2008

    Programming server problems

    The web server I'm using to do programming practice is giving me server errors when I load my PHP pages. This is the second time my site has been obliterated for at least a day by the server with no warning, and with lots of lecturing instead of trying to get my page running again. I don't write the tightest code yet, and I'm grateful for advice, but when three months' work is gone without warning, with no hint at when it will return, it might not be the best time for a lesson.

    Basically, nothing I've written for the past three months works right now. It will -- I'm moving everything to a new server (and trying to install my own Linux server at home). But if you're having trouble using any of my playlist makers or Podcast Finder, it's because I'm moving everything to a place where it'll work. Sorry for the inconvenience.

    Thursday, April 3, 2008

    Dr. L Riesling - 91

    Mm. This is what oak is supposed to be. Cold. Always disconcerting and reminiscent of soda pop. Really interesting almost all wood taste.

    Harshens up with warmth.

    $40 a bottle, Wine Down on 28th, drank June 6, 2003.

    Sunday, March 9, 2008

    Podcast Finder

    I've been making decent progress learning PHP and MySQL since I finally got started last month. My proudest achievement thus far is a podcast finder, called "Podcast Finder", that recommends podcasts based on a couple of podcasts you know you like.

    I'm a total podcast junkie (try doing PCR in a dead-silent lab for two years, then winning an iPod shuffle, and see if you don't turn addict). But finding new podcasts when you've exhausted an archive or ten is not as simple as giving your favorites five stars on Amazon or Netflix and seeing what they recommend. My old "system" to find new podcasts basically added up to Googling combinations of my favorites to see what else came up (zip), combing through all the most-dugg podcasts on Digg, and scouring the last.fm artists of other big NPR listeners.

    The last.fm method gives pretty good recommendations, but it's slow. Podcast Finder speeds it up by using a database (fairly small right now) of last.fm favorites. As with all my little projects, there's room for improvement, but if you're a podcast fan, I'd love for you to give it a try. If I'm missing your favorite (or you have any other feedback), feel free to leave me a comment here.