AmieStreet removes ability to re-download your music

I just recieved the email below from AmieStreet, an online music store that charges increasing amounts for songs as they become more popular. You can often pick up a great album for next to nothing, recommend it to others and actually make money back as the songs grow in popularity. It’s a great website and a very novel way of distributing DRM-free digital music.


In several weeks we’re going to be making a change to how Amie Street handles downloads, and we want to be certain you are fully informed in advance about this change. In brief, starting on August 5th we’ll only be able to offer a single download of your purchased music unless you’ve encountered a technical problem.

Although most people only download their music one time, we’ve noticed that you have done so more than once on occasion. We realize that the ability to re-download files has been important to you, so it’s understandable that you might be disappointed to see this no longer available. Unfortunately a number of factors beyond our control, including legal and royalty concerns, have made this impossible going forward.

We’re very happy to say, however, that you can continue to stream all of the music you’ve purchased on Amie Street. That means wherever you have access to the internet, you also have immediate and unrestricted access to stream the entirety of your Amie Street music collection from your library.

To make sure that downloading music continues to be as easy as possible, we’ll be keeping a close eye on the user experience and making updates to the site as needed. The primary voice that directs any such changes will be yours, so if you have suggestions based on your experiences using the site, we’d love to hear from you at feedback@amiestreet.com. Tell us exactly what you like and don’t like, and we can make Amie Street even better!


The truth is, that I have only re-downloaded music on a couple of occasions, most likely because I purchased the music while at work, forgot to take it home with me and then re-downloaded it when I got home.  The other re-downloads have been due to technical issues involving pop-up blockers and an old design of the AmieStreet website, that was fixed long ago. In other words, this is not a service that I use a great deal. Once I have downloaded my music, I know where it is and I do not (generally) need to download it again.

However, I can’t help but feel a little irritated by this move.  It’s not that I want or even need to download my music multiple times – it’s that it feels like a step backwards.  The days of purchasing a physical medium are drawing to an end and more and more services are provided as digital downloads. I haven’t purchased a physical CD for months, probably years, and yet I bought two digital albums from Amazon a copule of weeks ago.

I have dozens of old CD’s that are scratched and no longer play without skipping. To obtain new copies of these albums requires that I buy them again, either digitally or as physical items. This is a constraint of the media, and one that I was perfectly happy with when there was no other alternative. If you break something, you have to buy a new one – it works the same way with all physical property.

On the other hand, AmieStreet (and all other digital media vendors) already know that I purchased the music. Or at least, they know that I purchased a license to listen to the music, which is something entirely different and yet completely meaningless to most people. If my computer bursts into flames or something, why can I not re-download music that I have already paid for? It isn’t going to cost any more to throw a few megabytes acrosss the internet to my new computer, as it would cost to create a new product then package and ship it to me.

Perhaps the idea is that I bought a license to listen to only the version that I downloaded, and no other digital copy of the same song? So by copying it to my iPod or another computer, I’m breaking the license agreement? I would like to think that this line of reasoning is nonsense, but by allowing customers to download a song only once, this is the model that is being applied. AmieStreet (or more likely, a team of lawyers barking at their heels) is trying to apply a physical model to a virtual world which is not constrained by the laws of physics.

Whatever the reasoning behind this move, it is an utterly pointless restriction and ultimately self-destructive. People that actually pay for their music are once again being hampered for doing the right thing.  Why add artificial barriers for people that actually want to give you their money? When there are unlimited free downloads of almost everything you can imagine, why make the paid version worse?

Those people that do not want to pay for their music will continue to recieve high-quality, DRM-free, re-downloadable media whenever they want it. Those of us who choose to do the right thing and buy their music, will end up with an inferior service and in many cases DRM-encumbered music that treats the customer like a thief .

It doesn’t matter who you are, or how powerful you think you are – like King Canute, you cannot stop the digital tide.

sudo for Windows

I recently had the pleasure of re-installing my sons XP gaming machine after he infested it with viruses, worms, rootkits and everything else he could find on the internet. It’s my own fault really, as I let him run with administrator priveleges because I couldn’t be bothered to set up his games to work properly under a limited user account.

So, now that he’s back up and running (with very limited access), a handful of his games don’t quite work properly and still require administrator access. The “RunAs” command in Windows is practically useless because you still need to enter the administrator password – and then the game launches with the administrator profile, including the registry and documents and settings, and not the profile of the logged on user.

What’s really needed is an equivalent to the Linux sudo command, so that the game can be run with admin priveleges, but with the correct user profile. Enter the greatest utility that I’ve found so far this year – surun.

Surun implements privelege elevation in a safe, secure, and trivially easy way. It makes the “RunAs” command look as useless as it really is. And best of all, my sons games all work flawlessly and he can only elevate those applications that, as the system administrator, I specifically add to a list of known programs. This means that he can’t start an elevated command prompt or anything like that and wreak havoc on the system again.

If you need to run programs that require administrator access on a limited user account, do yourself a favor and get this program. It is completely free and it makes Windows security work in a sensible and painless way. Get It!

Embed URL’s directly into your C# code

Ok, so this isn’t strictly a language feature and it’s not terribly useful either, but it did cause me to do a double-take when it compiled with no errors.

I had cut and pasted a URL into the block of code I was currently working on, so I could refer to it more easily. However, I accidentally left it there when I compiled the program, and to my dismay it compiled without complaint! Take the following contrived code block for example: 

public int Add( int x, int y )
{
    int result = x + y;
    http://windowscheerleader.com/
    return result;
}

The URL just dumped into the middle of a block of code should certainly have caused some kind of compiler error, right? Or should it…?

In C# (and C++), everything after the “//” is treated as a comment and is therefore ignored. So the compiler will never see “windowscheerleader.com/”. But that still leaves us with “http:” in the middle of the code.

However, it turns out that the compiler thinks the “http:” is a label – the destination for a goto command! In other words, we could write another silly function like the one below, and the compiler would be perfectly happy with it!

public int GetSmallerValue( int x, int y )
{
    if ( x < y )
        goto http;
    return y;
    http://windowscheerleader.com/
    return x;
}

As far as the compiler is concerned, we have a label followed by a comment, which is perfectly valid. As I said earlier, this isn’t terribly useful (unless you want to embed uncommented URL’s into your code for some reason), but I did find it interesting. One word of warning though – since the “http:” is a label, you can only use this “technique” once in each scoped block or the complier will get upset with you!

StreamRipper on Vista

StreamRipper is an excellent open-source plugin for Winamp that allows you to record streaming mp3 directly to your hard drive. It’s very similar to recording songs off the radio onto audio cassette tapes, which is a technology that some younger readers my be unfamiliar with, but it worked well enough at the time.

StreamRipper has a very nice feature where it creates a “relay stream” that you can listen to. Instead of creating two separate streams (one for Winamp for you to listen to, and another for StreamRipper to record from), you can have StreamRipper create a “relay Stream”, which his cuts down on the required bandwidth and allows you to listen to the same stream that you are recording.

I’ve always had a problem getting StreamRipper to create the relay stream properly on Vista, and like everyone else, I was all too keen to blame Vista for Winamp’s inability to connect to the relay stream. However, it turns out that everything is working exactly as it should, and there is a very easy way to get a working relay stream in Vista…

Instead of connecting Winamp to http://localhost:8000, which is the default host and port for the relay, you have to use the local loopback IP address of your local machine instead. In other words, connect Winamp to http://127.0.0.1:8000 and it will work perfectly!

The reason for this, is that localhost under Vista resolves to an IPv6 address and not IPv4 address that previous versions of Windows used. StreamRipper only understands IPv4, and Winamp is apparently trying to connect to it using IPv6. By specifiying the local loopback IP address of your machine explicity, rather than referring to it by name, you are forcing the use of IPv4, which means everything works as it should.

Happy ripping!

Move or Copy?

Yesterday I was unzipping a large (1.7Gb) file on my computer, when the following message box appeared:

Apart from the fact that the responses don’t actually make any sense with regard to the question, I wasn’t even using Internet Explorer to copy the files! I had IE open, but the zip file was being extracted from Windows Explorer…

Anyway, the archive was extracted just fine and everything seems to be working normally again, so I guess there’s nothing really to see here. I just thought it was curious.