Free Music on the Web

Back in the early 90s, Jeff Duntemann published a book called something like Free Stuff from the Internet. I don’t remember all of what it described, but it opened my eyes to a whole new world of stuff that I could get free–for the price of a download. The treasure trove of the Internet made Compuserve look like a pauper’s purse.

We take a lot of free stuff online for granted these days, but often we don’t take advantage of it. Until recently, I had absolutely no idea how much free music is available online. For years I ignored Napster and other music sharing sites, figuring that the “free music” available online was either pirated copies of copyrighted works, or 1-minute song samples. I couldn’t have been more wrong.

Sure, there’s plenty of pirated music out there, but there’s also an incredible amount of legally available music, free for the download or just point your favorite music player at it and stream it down. For example, a few months ago I discovered GaragePunk.com, which creates weekly podcasts consisting mostly of old-fashioned garage band rock and roll. They have a half dozen or more DJs who create 30- or 60-minute podcasts covering many different sub-genres.

Not into garage punk? How about the Woodsongs Old Time Radio Hour, whose stated purpose is to to encourage grassroots, Americana music. You like bluegrass? Try World Wide Bluegrass or the Bluegrass Preservation Society. More into reggae? Try Allspice Reggae.

That’s just a small sample of what’s available. Whatever kind of music you’re interested in, there’s probably at least one site out there that features it and allows you to download stuff or listen to a stream. It can be difficult to find some things, but blogs like Indie Surfer and Vague Space make it much easier.

I’ll provide updates here periodically as I continue to explore the free music space. If you’re looking for new music (which I was, having become bored with my current collection), look for yourself. You’ll be amazed at the selection you’ll find online.

Improper Use of Exceptions

The .NET Framework’s ReaderWriterLock class API is broken. How? It uses exceptions where it should use return values. Consider the AcquireReaderLock method, which you call with a timeout value. If the timeout expires before the lock is acquired, the method throws an exception. This is nuts. The use of exceptions here makes for some very ugly code. Consider, for example, code that waits five seconds for a reader lock:

try
{
    MyLock.AcquireReaderLock(5000);
    // do processing here
}
catch (ApplicationException)
{
    // unable to acquire lock.
}

A temporarily unavailable resource is not an exceptional condition. It’s quite common for a resource to be locked a little longer than normal. Whoever designed the Monitor class understood that. Monitor has a TryEnter method that accepts a timeout value and returns a Boolean value: True means that it acquired the lock, and False means that the timeout expired and it didn’t acquire the lock. If whoever designed the ReaderWriterLock interface had studied Monitor, perhaps we would have a TryAcquireReaderLock method that would make for much more reasonable code:

if (!MyLock.TryAcquireReaderLock(5000))
{
    // do processing here
}
else
{
    // unable to acquire lock.
}

Exceptions are meant for exceptional conditions. Using an exception to indicate a normal failure is totally inappropriate. I can think of no rational reason why AcquireReaderLock or AcquireWriterLock should ever throw an exception.

Helpful (not) error message

I’m installing Windows 2000 on a machine here at home to do some testing. Windows 2000 is great for this kind of thing, although I’m finding that certain things aren’t supported on it anymore. New versions of DirectX, for example, don’t support Windows 2000. Nor, then will .NET 3.0 be supported on Windows 2000 because Windows Presentation Foundation requires the latest DirectX. (At least, I think it does.)

In any case, I was installing DirectX 8 earlier and it came up with a very helpful error message: “DirectX setup could not locate a required directory.” Yep, that’s all. No telling what directory it couldn’t locate. That’d make too much sense. Of course the user should be able to figure out what directory the setup program is looking for.

It turns that I had deleted my Temp directory (\Documents and Settings\User Name\Local Settings\Temp) because some other install vomited all over the directory and I thought it’d be easier to just delete the directory. Other software creates Temp if it doesn’t exist, right? Wrong. And then they don’t tell you where the problem lies.

I love this stuff.

Categories

A sample text widget

Etiam pulvinar consectetur dolor sed malesuada. Ut convallis euismod dolor nec pretium. Nunc ut tristique massa.

Nam sodales mi vitae dolor ullamcorper et vulputate enim accumsan. Morbi orci magna, tincidunt vitae molestie nec, molestie at mi. Nulla nulla lorem, suscipit in posuere in, interdum non magna.