indexing music

I have a lot of music. Getting it all organized is not easy, especially since I have my own preferred way of doing things. I’m slowly getting things pretty well cleaned up though (mostly thanks to tellico, which I’ll go into much more detail on some other post).

The way I used to do things was pretty simple, though I would butcher a lot of stuff to cram it into my little realm of preferences. Most of my collection is made up of soundtracks and scores, and very few albums by individual artists / bands, so instead of sorting everything by artist / album, I would change all the CDDB entries locally (using grip, when I ripped the CDs) of the artist to whatever I was cramming it into. That worked well for a while, until my collection grew beyond the classics. It got harder and harder to “find” the stuff I listened to the most because I’d have to look through so many items. Simplicity for me means not having to look far.

Also, how I listen to my music has a lot to do with this. 95% of it is on my computer while I’m working, either at home or work. I have a lot of loaded onto my ipod nano, but I usually only use that either when I’m travelling or lying in bed and can’t sleep. When I’m driving I’m listening to XM. So to access it quickly on my computer, I setup a simple web script that is my homepage that would search my ~/music/mp3s/ and display the albums in order of artist, then titles. The page had links to the playlists in another directory, and I setup Mozilla to parse those and open them with my MP3 player (audacious). The incredible thing about this is I wrote that script years ago, when I was first looking at PHP, and nothing has changed on that thing for about three or four years.

Well, as I said, since my music collection is growing, its making it more difficult to find things quickly. The “classics” as I like to call them, which are really the ones I have listened to the most, are on equal footing with the new and weird ones. I wanted to get them all organized much better, but couldn’t really think of a good way to do it with my limited structuring. Then tellico came into the picture.

It’s a great little application that basically indexes your collections of any kind, be it movies, music, books, video games, whatever. One great feature that it comes with is that you can create your own custom tag description and values. This comes in handy, because I’ve found that I will mentally group my albums anyway. For instance, if I’m in a tense mood, I’ll pick from a handful of movie scores that are equally tense and jittery to help me calm my nerves. Tagging has already changed everything, and it provides the way to restore my indexing to a normal standard and at the same time organize and browse it however I would like to.

So that’s where I’m at right now — mostly indexing, categorizing and tagging everything with tellico. Once I’m all done with that, then I’ll use tellico to export my collection and its details to an XML file. I’ll parse that with PHP instead, and sort and browse the collection by the tag I want to use, be it artist, genre, mood, keywords, etc. I think it’s gonna work out pretty nicely, especially since there’s a lot of music I don’t get to listen to often only because I haven’t fully indexed everything.

I’ll go into more details as I clean things up, but one little tool I wanted to make mention of was fapg, a playlist generator. If you’re using Gentoo, then it’s already in portage, and I just bumped it in CVS to the latest version on their homepage. It’s a nice little app to do pretty much what I’m too lazy to write my own script to do, make simple playlists. Before I forget, that brings up another point I wanted to mention, which is directory structure.

My ipod has this cool feature that will display the album art if you have a JPEG of the album. Well, to make things simple, you can save it as “folder.jpg” in the directory of the album. That way, when you transfer your music using gtkpod, it will copy the album cover image along with your MP3s, and you’ll get to see it when you play the music. Another thing I added to that is, using fapg, I just dump the playlist in that directory now as well, instead of in a separate folder. I still like the idea of having a folder just for playlists, but for now I’m trying to keep things simple. Here’s how I generate them with fapg:

for x in `find /home/steve/music/mp3s/ -type d`; do fapg -f m3u -o “$x/playlist.m3u” “$x”; done;

If you read the man page for fapg, you’ll see what I’m doing. Basically I’m finding all the directories in my mp3s folder, and creating a playlist for each one and dumping it back in that same folder. Runs pretty fast, too.

That’s it for now, I’ll post more details as I continue to get things cleaned up. This is going to be the solution that will probably work for me for another few years, so I’m kind of excited about it. It’ll be nice to finally be able to quickly get to what I’m looking for. Plus, it will be good to sharpen my PHP and XML skills, which are pretty lacking. I’ll make a script to parse it and recreate my collection page. I’ll have to do one for the movies, too.

One last thing, I’ve been listening to the score to TRON while writing this. Great stuff. Pick it up if you like interesting ambient stuff.

first annual netflix movie rental roundup

I have had a Netflix account for a year and a week now. My brother suggested it to me, and got me a free trial, which started all the madness so long ago. I’ve been much too busy lately to watch any movies, but I have still seen my fair share this year. So, as a summary for the year, here’s the stats of pretty much everything.

Current plan: 1 a month (unlimited)

# of times I changed my plan: 8

# DVDs at home: 4

# of movies in my queue: 500, the max limit

# of movies I’ve rated: 1,543

# recommendations: 9

# of movies I’ve rented: 118

# of 5-star ratings (from rentals): 3

# of 4-star ratings (from rentals): 7

# of movies I’ve bought on DVD (because of rentals): 7

The ratios of high-rating or even buying the movie to renting is really low. But of those that I have bought, three of them (Oliver Twist, The Escape Artist, Rabbit-Proof Fence) are so good, that it was well worth the pain of every other crappy movie I’ve sat through. In fact, that’s why I’m sticking through it. I’m looking for the next 5% that are worth buying. :)

the magic bullet

Last Sunday I was a little tired after running around all weekend trying to spend my Christmas bonus as fast as humanly possible, and as I plopped down on the couch and flipped on the TV, I stumbled across an infomercial for The Magic Bullet.

Now, if you’re Americanized or watch too much TV (it has to be one of those two, since crappy thirty-minute commercials certainly don’t exist outside of the USA. Nothing cool does. At all.) you’ll know what I’m talking about. Infomercials are great things. I kind of think of them like train wrecks — they are so gruesome, that you can’t just look away. You just have to stare. And laugh.

The one for the Magic Bullet is great. I especially love how these days they weave a story into the sales pitch. It actually makes these “shows” really entertaining. It starts out in someone’s house (we never really find out whose, the director obviously didn’t think much of character depth, the film school dropout), and it’s purportedly early in the morning. By some real magic, someone has laid out a morning buffet ranging from fruit platters to lunch meats and coffee grounds. They never really get into that either (I hate film plot holes), since the setting is early morning and everyone is dragging themselves into the kitchen for some food. Fortunately, the magic bullet is here to save the day, and our happy-go-lucky hosts are here to tell us all about this food-making time-saving whiz-bang device.

This is where things get really interesting. First of all, if I had friends who would not shut the crap up about a single kitchen appliance for a whole half hour, I think I’d have to give them a different kind of magic bullet. Secondly, if they have three of them sitting in the middle of their countertop, I’d really think something weird might be going on — probably somewhere in the ballpark of “these people have no clue how to cook.” But, all that is forgotten since our hosts are fantastic people. One is a fantastic gentleman with an English accent (the producers know how we Americans are easily wooed by foreigners), and the other is a nice lady who is just a bit too exuberant for her age about a mini-blender.

Anyway, as the guests wander in, they all want something to eat. Well just hang onto your bran muffins, because the Magic Bullet is here to save the day and whip up every possible meal you could think of in an 18 ounce microwavable container with a blender motor powerful enough to stir milk. As each of the guests ask for something different, their nutritional needs are quickly met by this small culinary wonder. For instance, would you like a fruit smoothie? Well, let’s just jam four different fruits in this thing with some orange juice, and then blend it with the magic bullet. I’m sure those whipped seeds will go down well. You’ll be so impressed by the fact that it took only 3 seconds to turn them to mush that you’ll never notice that we forgot to take the leaves off the strawberries.

Next, someone wants some coffee. Where’s the coffeemaker? Ha ha, that’s funny! Why, we’ll just ground our own Columbian beans in the magic bullet. This is where the real video editing comes into play, because if you watch carefully, what they start with and what they cut to in the next scene is definately not transitional. But that’s okay too, because we don’t want to detract from the idea that you can make every freaking meal you’ll ever want in this little machine!

It goes on like this for a full half hour, with our charismatic hosts gushing at all the foods you can make with just a blender (from pasta sauce, to chocolate mousse and chicken salad sandwich mush), and the viewer slowly forgetting that there are other ways to prepare food. I’ll tell you, I really get sucked into these things. And it’s not even bigger than a coffee cup! All that saved space will be used up the 18 accessories the amazing magic bullet comes with though.

Despite the cheesy commercial / mini-drama, I gotta say I’m sold on this thing. I went out tonight to the store looking for one, because I just can’t wait for them to ship it in time, and I must have my mini-blender harmony at once! Besides, I’m all about one-step cooking, which usually consists of me taking the wrapping off my TV dinner and throwing something in the oven for 40 minutes. With this though, I could just do like they do, and throw random foods together and they’ll just naturally taste better pureed.

I didn’t find a Magic Bullet in the stores though (those local retailers are missing out bigtime), but I did find a mini-blender at Shop-Ko for only $16. That included shipping and handling. The only weird thing is that the checkout clerk stared at me like a cow in headlights when I asked if they were buy one get one free. I tried to explain that I was acting within thirty minutes or less, but that didn’t help.

Something else I just noticed, these guys have a website. That is freaking awesome. It actually looks pretty decent too. The really sad part about all of this? I still wanna buy one. I think it looks cool, and it seems like an innovative idea (blenders are too large for most tasks, I think). The only problem I’ve had with my mini-time saver so far is that the first thing I made in it kinda exploded and went all over the counter. I guess I’ll just have to get out my Orange-Glo.

pulling the plug

Well, it looks like I’m going to be pulling the plug on my vpslink account here pretty soon.  Nothing against them at all.  In fact, I love their service, but what I’m trying to do is really pushing the limits for the account level I signed up for.  I’m sure most people aren’t running apache / lighttpd, postgresql, mysql, php and trac.

I did learn a lot about running Gentoo in a low memory environment, though.  Mainly, it sucks.  Secondly, it’s a little hard.  If they had let me set my own swap space, I imagine I wouldn’t have had nearly as many problems, but oh well.  I really wanted it to work out, but everytime I optimize things, something else dies because there isn’t enough memory.  It’s just not worth the runaround.

For the record, I did try lighttpd as well.  After I slapped on half my setup from apache, it was still using about the same amount of memory.  And I couldn’t really tell a difference in speed.  Besides, I’m not really that motivated to switch.  As my good friend Jason said to me this morning when I asked for his take on it, “as soon as apache stops being absolutely amazing, I’ll start looking into something else.”  I couldn’t agree more.

So for now I’m moving things back home to my trusty little pentium4 server, which is now doubling as my mythtv box as well … I finally got that all setup.  I only have to tweak a few things on my remote and beat the keypress events into submission.  That second one is going to be fun, because once again MythTV enjoys reinventing the wheel again just to torture me — the keypress mappings are saved *in the database* instead of a handy dandy text file somewhere in ~/.mythtv.  Gosh, ripping on mythtv again … it almost feels like I’m back into full swing.

fun with random uptimes

I’m still pushg my little virtual server account to the limits, and it’s learning to push back. I’ve been playing with it all day, and the site and database have been up and down many times.

I did find one interesting thing that helped a lot, a blog post that talks about how to tell GCC not to use the 4g of RAM that the machine has, but rather the 232 mb that are allocated to me. Or something like that. It works rather well setting my ulimit and CFLAGS, but as the author notes in a later post, that doesn’t work on everything. I can confirm that. Changing the ulimit helps out a lot of stuff, but changing the CFLAGS will only help on small packages, and make stuff like PHP or MySQL come to a grinding halt with fun messages like this:

cc1: out of memory allocating 64649136 bytes after a total of 3051520 bytes

Unfortunately, distcc isn’t really an option right now anyway, since the connection at home is so spotty. Speaking of which, I called up Speakeasy today and signed up for an account. It’ll cost me around $90 a month after taxes for a nice fast connection, but I think I’m okay with that. Besides, I don’t mind paying a premium in order to not have anything to do with Qwest (our local Ma Bell conspiracy).

One thing I did change is the CFLAGS from march=i686 to mtune=pentium4.  That seems to have helped, but it could just be my imagination.

So, the moral of this story is that a virtual server is fun and all, but you’re really going to have a tough time compiling everything. I’d say it’s not worth the hassle at this point, but I already signed up for a three month haul, so I’m gonna stick it out. What’s really interesting is that while the compiles are slow, the disks and network are still incredibly fast, so serving up webpages is nice and snappy. There’s a lot of tradeoffs.

If you’re looking to get one, I’d say go with a provider that will give you a personal swap space. That might make a difference. I’m going to try and find out if there’s some way I can create one on my current filesystem (the disks come pre-partitioned). I gotta do something.

# vpsfree
VPS Memory:
total: 232 mb used: 154 mb free: 78 mb


fastcgi really is … fast

I’m still working on tweaking space paranoids so it is a bit meaner and leaner, and one thing I ran into this morning is that trac was crawling. I started looking at my options to see what I could do better.

First I tweaked apache a little bit to not use as much memory or threads on startup, which really didn’t help that much. Then I poked around with tracd, and that was incredibly faster than running it as CGI scripts through apache. The only problem was, I don’t want to run two daemons if I don’t have to, especially on port 80. Technically, I could have them both listen on different IP addresses, but I’d still have to do something funky like setup a subdomain for one of them, like Meh.

lighttpd really isn’t an option for the same reason, though I’ve heard good things about it. I’d like to try it out some day, but for now I like apache a lot, and I’ll stick with that.

The next thing I wanted to try out was fastcgi. I had played with it before, but always had funky errors I couldn’t figure out with the environment variables. This time I actually read the documentation, and now all is well.

To set it up on Gentoo, this is all you have to do. Emerge trac with the ‘fastcgi’ use flag, and then also emerge mod_fastcgi. Add “-D FASTCGI” to /etc/conf.d/apache2 so it will parse and load /etc/apache2/modules.d/20_mod_fastcgi.conf. Then, setup your stuff for trac in your config files as you normally would. Since I’m using more than one trac installation, I have /trac pointing to the fcgi script directly with this: ScriptAlias /trac /var/www/

Finally, edit that trac.fcgi file manually (so sayeth the docs), and add these lines to the top:

import os
os.environ['TRAC_ENV_PARENT_DIR'] = "/path/to/project/parent/dir"

Then I restart apache, and everything is running gloriously faster. I couldn’t be happier.

Of course, my SVN repositories still aren’t setup correctly, but I’ll fix that another day.

new host, same old boring content

I have to apologize for the spotty connection if anyone has been trying to hit my websites lately. GPNL would have been affected the most. I’ve been running my server on a Comcast connection here at home since I moved in last week, and my roommate kept saying the service was cutting out. I haven’t even had time to be on the computer, so I wasn’t really sure myself, but I’ve verified that to be true. Plus, today I moved the services over to a new host (a virtual server with vpslink), and now I’m having to deal with tweaking things for low memory environment.

In any case, things should be rolling along at a slightly better pace now. For you, at least. I’m going to switch to DSL pretty soon here, probably Speakeasy. The cable picture here is awesome, but losing my IM connections every 10 minutes isn’t that much fun.

still moving in

No, I’m not dead yet, just still kinda busy.  Everything not related to personal life has come to a complete halt recently because I’ve been moving (and still “moving in”, really).  I must say it’s a little weird having a roommate again.  Jared and I are both a couple of lost bachelors that wonder if we’ll ever get married.  Well, at least I think that way, I’m sure he’s a bit more optimistic.  We’ve been friends for a good number of years, in fact we were roommates a long time ago (back in 2001) when I went to BYU.  I think things are going to work out well, it’s just going to take me some time to get used to it again.

I’m still really tired though, which is why I haven’t started picking up on anything again.  I’ve got a lot of stuff to unpack still and setup.  Instead of doing that this weekend, Jared and I played Diablo II for about every waking moment we could find.  We fought our way to Diablo in probable record time, about 14 hours.  Sheesh.  In between breaks, I would play on my new Game Cube.  I really like the Batman Begins game.  It’s pretty cool.

The other good news is that I finally got my mythtv setup again.  Hallelujah.  I’ve missed that a little bit.  I’m hoping to get back into hacking on some Gentoo stuff again pretty soon here, after I’m more fully situated.  It’ll probably be at least another week though.

happy christmas, random kid

My little nephew had to have surgery this week (poor kid), and I felt bad for the little guy, so I decided to send him some toys from Amazon.  I found some cool little dinosaurs and bought them, and send them 2-day UPS.  Well, they were supposed to arrive this morning, so I logged onto the website to check out the delivery status, and it says “Out for delivery, Charlotte, NC.”  And I’m thinking to myself … “wait a minute, they don’t live in North Carolina anymore …”

Sure enough, I never updated my address book from when my sister’s family moved halfway across the country.  Ah well.  Merry Christmas … to someone. :)

game noob

I went and bought myself a Nintendo Game Cube yesterday. I’m pretty excited. This is about my third try at getting a gaming console in my old age, and this time I’m going to stick with it and figure it out. I haven’t been a serious console gamer since I was probably 6 years old, and back then we had an Atari, and I remember playing games like Pitfall, Missile Command and Pole Position. There’s a few more I can see in my mind’s eye, but I can’t remember the names of them anymore.

Anyway, the whole point is that I haven’t had one in a very long time, and as a result I’m not very good at these things at all. My motor and hand-eye coordination skills are almost null, so it makes even the easiest games a little frustrating for me. This time I’m determined to develop them, and have a little fun at the same time. :)

I already found about two dozen games on Amazon that look interesting. I decided that I’m going to try all my games before I buy them so I don’t get stuck with something I don’t like. That happens to me all too often with computer games, so fortunately I’ve got some options this time. I went to Blockbuster last night and signed up for an account, and it cost freaking $7 to rent a game. What a crock. I got Batman Begins and some Star Wars game. I spent about an hour playing the Batman one last night, and it was hard for me, but I think I’m getting the hang of it. Those multi-key combo attacks are really hard for me.

I like the design of the Game Cube already. There aren’t nearly as many buttons as the Xbox or the Playstation 2, so that’s going to make things much simpler on me. Plus the discs are really tiny which is cool. I guess the system is going to get phased out pretty soon here, since the Wii just came out, so I’m in a good position to get the games for a little cheaper. The selection doesn’t seem that huge, but I don’t anticipate having more than a dozen games in my library anyway. I already bought a copy of Simpsons Road Rage, which is by itself a great reason to get any gaming system. :)

Today I did some googling and found out there’s a service just like Netflix for console games. It’s called Gamefly, and while it’s a little expensive ($21.95 for two games out at a time, unlimited rentals per month), it’s still going to be a lot cheaper than going into Blockbuster. I already signed up for my trial account and put a few games in there to check out. If anyone knows of any good ones I should check out, lemme know. There look to be some cool RPGs out, which I’m really interested to see what the buzz is about.

Maybe the best thing of all is I managed to get mine really cheap. I picked it up at Game Stop for only $60, refurbished. Plus they sold me a $10 warranty so if anything happens within a year I can just take it back and get it replaced. Right on. I’m all about saving money sometimes, believe it or not. The only thing that surprised me with the system was that it only comes with one controller and no memory stick (not even a teeny one), so I can’t save my games. I already bought a memory stick on Amazon so I don’t have to wait for my Batman game to always start from the last checkpoint.

That’s another thing I forgot about console games is that in some respects they are like DVDs in forcing you to sit through corporate logos and cutscenes. It’s kind of annoying but I guess I’ll just get used to it. At least the load times are reasonably fast it seems.

I’m pretty stoked about the whole thing. I actually can’t wait to go home and try out my other games. I tell you whot. :)