My next favorite gadget is my Squeezebox radio, or radios, as it were. (I bought one, then bought two more since the first one worked out so well.) They don't take up much space, they sound pretty good, they deliver whole-house audio at a fraction of the cost of competing systems, and they work well with Linux.
Without any sort of home server, you can stream all kinds of stuff off the Internet. I don't know how many different streams are available, and the number changes all the time I'm sure, but it seems every genre I want to hear is represented, even freestyle. (My favorite online streaming site, since before I had a squeezebox, is SomaFM. They cater more toward dance music so if you're into that you should definitely check it out.)
If you set up a server on your home computer, such as I did on my SheevaPlug, you can stream your MP3 collection to any Squeezebox client, hardware or software. (A hardware client would be, for example, the Squeezebox radio. More on software clients below.) The server software runs on all the major operating systems, including Linux. The Linux Debian package was plug and play; I'm so accustomed to having to tinker to get things working and it was refreshing to just have it work right off the bat; and months later, no problems.
The software client lets you stream anything a Squeezebox radio would play to another computer. If that computer is connected to a stereo, e.g. a home theater PC, you can make a hi-fi squeezebox. This is exactly what I did; my living room HTPC runs Squeezebox Slave, a client software with no user interface (no need for a U.I. if you control it with a laptop or iPeng, below). Since the HTPC feeds audio via a digital coax connection, the sound quality is exceptional.
If you have an iOS device (iPhone, iPod touch, or iPad), don't bother with the very expensive Logitech Squeezebox touch screen remote; just buy iPeng, a $10 app from the iTunes store which can do the same stuff.
I can sync all of these units together quite easily, either through the user interface on each radio, or by using the Web interface to the server software. (Just connect to a certain port on the server with a Web browser to have complete control over your Squeezeboxes, even to turn each on or off and adjust volume.) The Squeezebox radios are always perfectly synchronized, but I had to tinker with the delay values for the Squeezebox slave to get it to sync up properly. (You do this through the server Web interface, in the settings for the device.) Once I did that, I had true whole-house audio at a fraction of the cost of having it installed into the house, or buying a Sonos system.
I also use my Squeezebox radio as an alarm clock. You can set the volume, which is a nice feature all by itself. Even better, you can set up schedules by day of week; that way you don't have to remember to turn the alarm on or off before you go to bed, you can get up at a different time each day if you want, and not have to change the alarm clock settings all the time. For instance, I get up a half-hour later on Fridays, and no alarm on the weekends. So I have alarm 1 set to go off at 5 AM Monday through Thursday, and alarm 2 set to go off at 5:30 AM on Friday, and that's it. I only have to touch it if I'm going to take a day off.
My kids love to play with the Squeezebox radios. The younger one figured out that he can press the shiny buttons next to the display, which I had configured as presets, to immediately turn on the radio and start streaming. He somehow seems happier when there's music in the air. Sometimes they'll even dance to the music which is extremely cute.