wed, 17-may-2006, 19:53

I had the pleasure of living in Portland for a year in the early 90's, when the alternative music scene was focused on the Northwest and there was good live music playing all the time in local bars and music halls. Most weekend nights were spent at Satyricon or La Luna listening to local and up and coming acts like Everclear, Heatmiser, Hazel, Pond and many others. Since moving to Alaska, it's been a lot harder to keep track of new music and I was mostly stuck with newer releases of the artists I was already familiar with.

iTunes has been a good way to discover new artists and download songs, but I think eMusic and last.fm are even better. eMusic focuses on independent labels and is a subscription service, which means individual tracks are inexpensive enough that I've been downloading entire albums rather than just buying the "best of" tracks from iTunes. Downloads are unprotected MP3 files, encoded at 192 kbps so they're of higher quality than iTunes downloads, and you don't have to burn and rip purchased files to do what you want with them (like convert them to a truly free audio codec like OGG, for example).

last.fm is a free service that keeps track of what music you're listening to (there are plug-ins for most music players, including iTunes), and recommends other artists that other people with similar tastes listen to. What's different than the "people who bought X also bought Y" sort of connections (although it does this too) is that it has a media player (open source!) that plays full length tracks of the music it thinks you will like. This is much better than trying to decide if you like a new artist by listening to a 30-second sample on iTunes or eMusic. And the data is freely available through a well specified web API. You can see what music I'm listening to right now by looking at the 'music' section on the right sidebar of this page.

So now I've discovered a whole range of new artists that I never would have heard without these services. No thanks to the Recording Industry Association of America (RIAA), their old-style business model, and strongarm tactics, I'm finding and funding the artists I want to listen to.

tags: music 
mon, 01-may-2006, 17:08

Last week I wrote a Python script to import my Unix calendar event files into Google calendar. Today I wanted to put the 2006 Alaska Goldpanners schedule into my Google calendar. I suppose I could have entered all the games in manually, but instead I came up with an event file format, and a script to translate these files into iCal files that can be imported into Google calendar.

The format looks like this:

2006-Jun-14 1900 2200 Goldpanners vs. Fairbanks Adult All-Stars

with one event per line. The start and end times are in military time, and events have to start and finish on the same day.

To convert a file of these events to iCal format, download mycal_to_ics.py, and run it like this:

cat mycal | ./mycal_to_ics.py > mycal.ics

Then you can import it into your Google calendar using the Manage Calendars | Import Calendar tab. I'd recommend creating a new temporary calendar and importing into that so that if there are any errors, you won't have disturbed your existing calendars.

tags: linux  sysadmin 
sun, 30-apr-2006, 20:53

A couple months ago I got my first Apple since the Mac Classic I had in college. It's a MacBook Pro and so far I really like it. I've managed to get it to do almost everything my Linux laptop could do, but now I've got access to iTunes and Adobe's Creative Suite (although it's slow under Rosetta). If Apple would allow me to change the focus behavior, and implement the X11 cut and paste, it'd be the perfect system for a laptop.

On campus I have access to the iTunes playlists of all the people on the wireless network that are sharing their music library. And I have mine shared so other people can check out the artists I enjoy. Unfortunately, iTunes doesn't tell you what songs connected users are listening to or who is actually connected.

Since OS X is Unix, it's easy enough to examine the process tree and discover what network and filesystem connections iTunes is making. Running:

ps -axo 'pid command' | grep -v grep | grep 'iTunes ' | awk '{print $1}'

will show the process ID for iTunes. Once you have this number, you can use lsof -p [pid] to show all the files (and network connections, which are treated like files in Unix) that iTunes is using. Filtering the results by your iTunes library (grep /Users/$USER/Music/iTunes/iTunes Music/) yields the songs that are being played, both locally and over the network. And searching for ESTABLISHED shows the network connections. The last part of these lines show the IP addresses of the computers connected to you, and if there are two lines with the same destination IP address, that means they are actually playing from your music library.

To automate this, I wrote a Python script watch_itunes.py that automates this process. Note that this is a command-line tool, running from a terminal window. There are Dashboard widgets that are supposed to do this, but the one I tried didn't work, perhaps because I have an Intel mac.

To use the script: ./watch_itunes.py

By default, it will examine the process tree every 15 seconds, showing what's playing and who is connected or playing from your music library. Run it with -h to see a list of command line options.

Here's what it shows right now:

192.168.1.101 is connected but not listening to music
Portastatic                Bright Ideas               05 Little Fern.m4a

192.168.1.101 is listening to music
Arcade Fire                Funeral                    09 Rebellion (Lies).m4a
Portastatic                Bright Ideas               05 Little Fern.m4a

In the first two lines, I'm listening to Little Fern, and another computer is connected to my library, but isn't playing anything. In the second set of lines, they started listeing to Rebellion (Lies). The program will keep printing lines like these until you exit the program with Control-C.

tags: music  OS X  sysadmin 
tue, 25-apr-2006, 06:30

For many years I've used the Unix calendar program to send me an email reminder of upcoming events and holidays. Unix calendar files are very simple text files with one event per line like this:

Apr 22  We bring Koidern home, 2006

Google recently added a calendar to their set of web programs, and like most things Google does, it offers a clean and elegant implementation. Best of all, it's on the web, so you can access the same calendar information from anywhere there's an Internet connection.

These days, calendar files are typically in iCal format. I wanted to convert my Unix calendar file over to iCal so I could import the data into Google calendar. Python to the rescue!

Download the script: calendar_to_ics.py

To use it: cat ~/.calendar/calendar | ./calendar_to_ics.py > /tmp/calendar.ics

Import the file you created into your Google calendar by clicking on the Manage Calendars link, and going to the Import Calendar tab. The script is only designed to handle simple events that take place once a year, on the same day, and it only accepts dates in MMM DD format. But Python is easy to read and hack, so if you have improvements, please email them to me and I'll incorporate them into the script.

tags: linux  sysadmin 
sat, 22-apr-2006, 18:37
six dogs

We got a new dog named Koidern today. She had problems with other dogs in her previous kennel, so we're hoping that she does better here. So far so good, but we're still in the early phases of the introduction. From left to right in the photo, there's Kiva, Nika, Buddy, Deuce, Koidern and Piper. Andrea is on the couch petting as many as she can get her hands on.

Koidern will be four in June and she's one-quarter saluki.

tags: Buddy  dogs  house  Kiva  Koidern  Nika  Piper 

Meta Photolog Archives