Archive for February, 2008

Music 1.0 is Dead

28 Feb

Music exec: “Music 1.0 is dead.”

Five hundred top members of the music business gathered today in New York to hear that “music 1.0 is dead.” Ted Cohen, a former EMI exec who used the phrase, opened the Digital Music Forum East by pleading with the industry to be wildly creative with new business models but not to “be desperate” during this transitional period.

Consider the statements that were made today without controversy:

  • DRM on purchased music is dead
  • A utility pricing model or flat-rate fee for music might be the way to go
  • Ad-supported streaming music sites like iMeem are legitimate players
  • Indie music accounts for upwards of 30 percent of music sales
  • Napster isn’t losing $70 million per quarter (and is breaking even)
  • The music business is a bastion of creativity and experimentation

Just within the last year, we’ve seen an array of experiments that include ad-supported streaming, “album cards” from labels like Sony BMG, and allowing Amazon to offer MP3s from all four majors. Some labels even allow user-generated content to make use of their music in return for a revenue share from sites like YouTube—unthinkable a few years ago to a business wedded to control over its music and marketing.

All of this bodes very, very well for Grooveshark, aside from the fact that we weren’t used as an example. We’ll soon be getting much more attention in that vein, but hopefully not until we’ve had a chance to improve the site in these areas:

  1. Differentiating between files and songs properly
  2. Faster loading times
  3. Better searching
  4. More user friendly interface
  5. Eliminate silent failure

So clearly, we have a lot of work cut out for us in a market that is on the verge of exploding, but if we can focus our resources I think we can be mostly there within a few weeks. Now to get management on board.


Spam control

26 Feb

If you are using WordPress and you are not using Askimet, you are missing out on some really sweet spam control.

Askimet works well because it’s a centralized database of spam that learns from every blog that uses it. Since blog spammers generally post the same message to a zillion different blogs, and since many of those blogs are using WordPress and Askimet, chances are the spam will be caught before it ever gets to you, or your blog.

I have been using it for a while now and it has caught all but a few spam messages. It’s almost effective enough to consider turning off manual comment approval without relying on some annoying CAPTCHA solution. If comment volume increases I will consider turning off comment review.


How not to keep your users happy

26 Feb

Tonight a new version of sharkbyte was released.
If you have not restarted sharkbyte/your computer, you do not have the new version.
If you do not have the new version, any file you try to play will appear offline, and you won’t be told why. Hopefully by the time you read this that issue will be fixed.

But in case it’s not, now you know.

This is not a good way to keep users happy, or keep users period.

Appropriate ways to handle these issues in the future:

  1. Do not break backwards compatibility every time there is a new release.
  2. Notify about and/or automatically update to new versions when they come out, like Firefox does.
  3. Notify users when they come to the website if they are using an outdated version.

Obviously these are general solutions that apply to any web desktop app, but it’s especially important if your entire site relies on that app to be working on a user’s machine. Imagine going to Google and getting no results for every search because you aren’t running the latest version of Google desktop. That would never happen, because it should never happen.


Grooveshark + Local Music

24 Feb

Grooveshark + Local Music = match made in heaven?

Grooveshark has the potential to serve as a real boon to local music. Yeah, we’re based out of Gainesville and small enough that right now the majority of the benefit will be seen here, but as users start using it more intensely elsewhere (which is already starting to happen), it will help local music everywhere (or at least everywhere with internet access).

Two examples:
1. I went to a show last Sunday and saw Christabel and the Jons (playlist). They are not actually local; they were just passing through, but their music was delicious. I include them as local music because they came through and played at a very small local joint on a Sunday. Their music was not available on Grooveshark previously, so I bought their CD and ripped it to my computer. Now their music is on Grooveshark, and they are making money in two ways:

  1. Royalties are now paid every time someone listens to their music on Grooveshark
  2. They get paid if someone buys their music from Grooveshark

They also get the additional benefit that I have easily been able to share their sounds with other people in Gainesville thanks to Grooveshark, so next time they come through they will get an even better turnout.

2. The Barnacles (playlist). I saw them tonight (Saturday) for the second time. Both times they have not had a CD available for purchase, presumably because they ran out and CDs are expensive to produce, leaving me as a new fan with no way to support them by purchasing a CD. Fortunately for me and for them, when I went home I saw that their music was available on Grooveshark, so I was able to purchase it anyway. Now they will get the revenue from the sale, and I get to listen to their music some more (and share it with all of you).

No Comments

Posted in music


MP3 Tag & File Name Editing

21 Feb

If you’re anything like me, you like to have your MP3s organized with a consistent naming scheme *and* with correct ID3 info. It just so happens that if you scan your music in to Grooveshark, it really helps to have correct ID3 info and barring that, a useful file name. If the file information is incorrect or inconsistent, Grooveshark may get confused and create a new artist, album or song even though it actually already exists in the system. This also, of course, affects your chances of getting paid/having others download from you. Chances are if your info is wrong nobody is going to buy your music.

Therefore it’s a good idea to update your song info especially if you downloaded it from, ahem, less reputable sources. Fortunately, you can do this with minimal effort with the right tools. Or rather, with the right tool. All you really need is a free program called ID3-TagIT. It hasn’t been under development for quite some time and it shows, the interface is not slick, shiny or new feeling, but it works. I walked through the process of using file names to create ID3 tags and vice-versa via photo-journal on Flickr, go check it out.

ID3-TagIT Screenshot

No Comments

Posted in music


Bypassing SSL errors in Thunderbird 2.x

20 Feb

I use Thunderbird 2.x to check my office mail at home, and one of the so-called security improvements is that it is much more strict about SSL errors than Thunderbird 1.x or Outlook. That is to say, if it hits an SSL error, it just won’t connect. At all.
Over this past weekend, an update to our mail server clobbered the SSL certs, making them invalid. Encryption works as normal, but the certificate is not valid. So Thunderbird stopped working. That’s all well and good guys, but I still need my email.
I found out that you can set up exceptions by going to:
Tools | Options | Advanced | Certificates | View Certificates | Servers | Add Exception
(yeah, that’s easy to find)
Once there you have to enter the path to the mail server. Except that it only takes https:// addresses (as far as I could tell), and the exceptions are made on a port-by-port basis, so you can’t actually make an IMAP exception this way. But that’s ok, we’ll figure it out. Go ahead and make an exception for the https:// address (assuming your mail server has webmail and that it is using the same certificate).

Now here’s the trick, click ok to the 50 dialog boxes you opened up to get to this point, and close out of Thunderbird. Go to your Thunderbird profile, on windows that would be %appdata%\Thunderbird\profiles\[some random characters].default
Locate the file cert_override.txt and open it in a file editor that understands linux style linebreaks (i.e. not notepad; wordpad is a worthy consideration).
Ignore this line:

# This is a generated file! Do not edit.

The next line down should be your mail server followed by a bunch of certificate information. It should start like this:
You need to change the 443 to the port your mail server uses, in my case, 993. If you want it to work for 443 and 993, just duplicate the line, leave the old one at 443 and make the new one 993.

Save the file and start Thunderbird. Voila!


Quick and Easy MySQL Benchmarking

19 Feb

When trying to tweak a query in MySQL it’s often difficult to tell if the changes you’ve made are actually making a difference, and if so by how much.
You may have noticed that using SQL_NO_CACHE still gives a very poor picture of what the performance is going to be like. Even with SQL_NO_CACHE, the first execution of the query might take 5 seconds, and the next execution might take 0.0 seconds. What gives? Well, even if you bypass MySQL’s caches, Linux is doing its own file system caches.

I’ve seen explanations of how to get around this issue before and none of them are particularly nice. Some say restarting MySQL is the way to go, others say you have to reboot the system. Travis’s original solution was to cat a huge file to /dev/null. All of these solutions are slow and somewhat annoying to do when you’re trying to make a bunch of tweaks to a query and test the effects.

A few days ago Travis found a solution that makes life easy again.

Effectively, the solution is this:

  1. Use SQL_NO_CACHE in your query each time.
  2. From the command line logged in as root, execute: echo 3 > /proc/sys/vm/drop_caches after each execution

That’s it! You must have kernel version 2.6.16 or greater, but that’s the only caveat.

Armed with this new technique to easily benchmark queries, I was able to tweak an intensive query running on his box to bring the execution time down from about 33 seconds to around 8 seconds, approximately 75% faster. To be perfectly honest if I didn’t have this easy instant feedback I probably would have quit with the optimization that brought execution time down to 25 seconds, because I would have known that it was faster but not by how much and I wouldn’t have been able to tell if any subsequent tweaks were really making much of a difference.

No Comments

Posted in SQL


No Room for Ego

18 Feb

There’s no room for ego in software development, and especially if you are a small startup setting out to change the world, there’s no room for ego on any team.

Here at Grooveshark, we have the smartest bunch of people I’ve ever worked with (and they’re not paying me to say that), but we all make mistakes, have a bad brain day and make less than optimal decisions sometimes. When there is no ego involved, we can all point out to each other when one of us is being stupid, and we can easily own up to our own mistakes and learn from them (and make the site better), and we can ask questions when we don’t know something.

If ego is involved, it’s no longer easy to tell someone they are doing something wrong or question their decisions, because you might hurt their feelings. Conversely, if you are maintaining an ego, you’re going to have a hard time admitting that you don’t know things that you need to.

Either way, precious time and resources end up being wasted, either fixing bugs, redesigning architecture or spinning your wheels trying to figure out something that someone else probably already has the answer to.

I ask my co-workers probably hundreds of questions a day. I’m not an expert on the way every single piece of our site works and it doesn’t hurt my ego to admit that. So when I find a bug in, say, the recommendation engine, I can go over to Travis who seems to know that system inside and out, and ask him exactly what is happening. I don’t think Travis has any less respect for me for it, but now I know more about how that part works and I fixed the bug, so now we have a better product, and it only took me a few minutes because I didn’t have to analyze each line of code tracing through the object hierarchies, etc.

When we have to design an important new feature or revamp the way part of our architecture works, we have a meeting about it and everyone provides their input. We usually start out with a few different ideas and everyone argues and makes a case for their idea. In the process of doing that we change our minds and come to a consensus. Because there’s no ego involved, we’re each prepared to give up our idea if a better one is presented, and we usually end up coming up with a solution that is better than what any of us would have designed on our own.

This concept applies to other teams/departments as well. In my experience, those teams open to constructive criticism from outside the group are the most effective, and those that are least receptive to feedback tend to have lower quality solutions.


Why sign your email?

13 Feb

A while ago some people at Grooveshark were discussing why anyone would bother signing their emails — after all, the sender is listed in the From: field!

One could make the same case for not signing snail mail, after all, the sender is listed on the return address!
In addition to the formality and convention arguments, signing an email, to me indicates that you have finished writing the email. If I get a signed email then I can be confident that you did not accidentally hit send before you finished.

Signing is also helpful when sending forwards or replying to messages where you include the original message. When your recipient reaches your signature, they can assume that anything following was not part of your original message. This can be a real time saver because then they do not have to scroll through the entire email to make sure that you are not also dissecting/commenting on portions of it that appear later.

Of course if you have your email client set to automatically sign all of your messages with your name rather than just your contact information, you aren’t helping things at all.


What to do when Intel SpeedStep is really, really broken

09 Feb

I don’t know how it happened, but for the longest time SpeedStep has not been working on my home machine.
Intel’s utilities said it was enabled, but Windows XP was keeping it running full-throttle at all times. I did some searching before and could never find anything helpful. The only advice I saw all over the place was to make sure that your power profile in Control Panel | Power Options is set to anything other than Home Office/Desk. I set mine to Portable/Laptop and the CPU would just not throttle down. Just for kicks I went through all of the power options and none of them would make the CPU throttle. I checked the BIOS, everything was how it should be.

For a while I blamed the BIOS, thinking that even though I had it enabled in the BIOS something was getting messed up at that level. Today I updated my BIOS and installed a new CPU (3.0GHz, 6MB cache C2D FTW), and it was still not SpeedStepping when it should have. So I did some more digging and found this page all about Intel SpeedStep.

There’s an explanation about using powercfg.exe from the command line to check and modify your power profile settings, so I dove in:

C:\Documents and Settings\Jay>powercfg /query

Field Description Value
----------------- -----
Name Portable/Laptop
Numerical ID 1
Turn off monitor (AC) After 20 mins
Turn off monitor (DC) After 5 mins
Turn off hard disks (AC) After 15 mins
Turn off hard disks (DC) After 10 mins
System standby (AC) Never
System standby (DC) After 5 mins
System hibernates (AC) Never
System hibernates (DC) Never
Processor Throttle (AC) CONSTANT
Processor Throttle (DC) CONSTANT

According to that site, CONSTANT means “CPU(s) run in lowest performance state.” Yikes, that’s certainly not what I want it to do all the time! But it’s also certainly not what it’s actually doing, either. Supposedly Intel calls Microsoft’s CONSTANT mode “Lowest Frequency Mode” — no mention of SpeedStep there. Hmm. Looks like Adaptive means SpeedStep in Intel lingo.

A little more reading and it becomes clear that if I want to try out Adaptive I just have to run the following:
C:\Documents and Settings\Jay>powercfg /change Portable/Laptop /processor-throttle-ac ADAPTIVE
As soon as I ran that I checked my CPU speed and what do you know, it’s sitting at 1.98GHz when idle. Beautiful!

Well I’m sure I’m not the only one who has had this problem, I wish I knew what caused it but at least I have a solution. My Google-fu is pretty lousy so someone else may have even detailed this solution already, but hopefully this will help others who also suck at the Google.