How to add a radio station to iTunes

Predefined radio stations in the iTunes library

I love internet radio. And I love iTunes. So the next logical step would be for me to manage my favorite radio stations in iTunes – preferably in a special playlist only so that the radio stations don’t clutter up my iTunes library.

Now, iTunes comes out-of-the-box with some predefined radio stations. You can simply drag your favorite radio stations to your playlist. However, iTunes’ radio station list is far from complete. So it would be nice to be able to add new radio stations to iTunes.

The first thing you need is the URL to the live stream of the new radio station. Unfortunately, there is no way to add this URL to iTunes’ “Radio” section. Although there is the menu item “Open Stream…” (in the “Advanced” menu) that let’s you open any live stream, this live stream would be added to your iTunes library. Why is this a bad thing? Well, you can’t edit the meta data (eg. genre, title, artist, …) for live streams. If you stop a live stream and then play it again, the meta data will be reset to whatever the live stream tells iTunes. So you’ll end up with a lot genres in your genre list you don’t want to have.

Drag .pls file to iTunes playlist

The alternative is to add the live stream just to a playlist without adding it to your library. This is possible. Simply drag the live stream’s playlist file (with .pls file ending) to your iTunes playlist. This will add all entries in the playlist file to your iTunes playlist without adding them to your iTunes library. That’s it.

If you don’t have a playlist file but only the live stream’s URL, you can create a playlist file quite easily. Simply open your favorite plain text editor (note that Word will not work) and copy the following text:

[playlist]
File1=http://streamexample.com:80
Title1=My Favorite Online Radio
Length1=-1

NumberOfEntries=1

Version=2

Replace the values of File1 and Title1 with your live stream’s URL and name respectively and save the file as radio.pls. Now you can drag it to your iTunes playlist and you’re done.

"Repeat one" in iTunes

Hint: You may want to activate “Repeat One” (in iTunes lower left corner) for this playlist. This prevents iTunes from going to the next radio station in the list when there is a problem with the one currently playing.

BlogText – the new blog text

I’ve just finished my first WordPress plugin. It’s called BlogText and provides a nice, easy, alternative syntax (im comparison with HTML) for writing blog posts. I’ve been working on the for the past couple of months and now it’s finally finished — at least its first version. You can find it here:

http://blogtext.mayastudios.com

Give it a try. You might like it

VMWare Fusion Performance Test

Today I did some testing on the performance of VMWare Fusion 3.1 regarding whether to use a 32-bit or a 64-bit guest system on a 64-bit host system. For the test I used:

  • Machine: MacBook Pro 15” early 2010
  • CPU: Intel Cor i5 2.4 GHz (Dual Core; 64-bit CPU)
  • RAM: 4 GB 1067 MHz DDR3
  • OS: Mac OS X 10.6.5 (with all updates)
  • VMWare: VMWare Fusion 3.1.2 (332101)

For the testing I shut down all applications (that could be shut down) except for:

  • VMWare Fusion (of course)
  • Terminal
  • TextWrangler

I also disabled Spotlight indexing for the duration of the test using (in Terminal):

$ mdutil -a -i off  # use "-i on" to reenable indexing

For testing I used an Ubuntu 10.04 Server Edition Linux either in the x86 (32-bit) and in the x64 (64-bit) version. Each version got one CPU and 512 MB RAM assigned (default values). I installed all updates (as of 2010-12-17) and also installed the packages “psmisc” and “bc”. The kernel version was 2.6.32-26. The VMWare Tools were not installed.

I then started VMWare Fusion (Virtual Machine Library only for now), and then called “purge” in the Terminal to free all inactive, unused memory for more correct information on how much memory is actually free. I then ran “vm_stat” (in Terminal), started the virtual machine, and ran “vm_stat” again to get the amount of memory actually used by the virtual machine.

Inside the virtual machine (i.e. in Ubuntu) I stopped cron and rsyslog to prevent them from interrupting the test, determined the free disk space (df -h) and the free memory (free -ok), and then calculated Pi with 3000 digits:

$ time echo "scale=3000; 4*a(1)" | (bc -l >/dev/null)

The results of the comparison can be found in the table below:

32-bit 64-bit Difference on 64-bit
Time to calculate Pi: 9.585s 8.823s -7.9%
Memory consumption on the host system (MacOS): 482.3 MB 648.2 MB +34.4%
Total/Used/Free memory in the guest system (Ubuntu): 496.96 MB / 35.22 MB / 461.74 MB 493.62 MB / 126.89 MB / 366.73 MB +260.3% (used only)
Disk usage in the guest system (Ubuntu): 560 MB 581 MB +3.8%

Observations:

  • CPU speed: A 32-bit guest system on a 64-bit host system runs slower than a 64-bit guest system.
  • Memory consumption: 64-bit guest systems require significantly more memory on the host system and on the guest system. In fact on the guest system the memory consumption seem to tripple (for some unknown reasons).
  • Disk usage: As expected, disk usage is higher on a 64-bit system , but only slightly.

Conclusions: If memory consumption is an issue on your system (i.e. if you have not so much memory), then select a 32-bit guest system. It’ll be slightly slower but also consume less memory. If memory consumption is not an issue, select a 64-bit guest system.

Magic Numbers

Unter einer sog. “Magic Number” versteht man in der Informatik eine bestimmte Folge von Zeichen, die den Typ einer Datei angeben. So finden sich z.B. in jedem JPEG-Bild ganz am Anfang der Datei die Zeichen “JFIF” (JPEG File Interchange Format).

Auch Java Class Dateien haben eine solche Magic Number. Es sind die ersten 4 Byte der Datei. Aber habt ihr euch die schon mal in Hexadezimal-Schreibweise angesehen (siehe Bild)?

java-magicnumber

Quellcode-Kommentare

Ich hab beim MfG diese tolle Seite mit lustigen Quellcode-Kommentaren gefunden.

Mein Favorit ist dabei folgender Kommentar:

// 
// Dear maintainer:
// 
// Once you are done trying to 'optimize' this routine,
// and have realized what a terrible mistake that was,
// please increment the following counter as a warning
// to the next guy:
// 
// total_hours_wasted_here = 16
//