Archive for the ‘Uncategorized’ Category


26 Mar

As you can see, I’m too busy to write down everything that’s floating in my head this week. Hidden on this blog somewhere is a cryptic clue as to why that is.

In the meantime, keep busy with this great rant from Chanel: I Want My Music.


grooveshark peer offline

24 Mar

I noticed that someone found my blog by searching for “grooveshark peer offline” recently. Apparently that error message is not clear enough, so I’ll try to explain some of the causes of that message. This may not be an all-inclusive list because I’m not directly involved with a lot of the things that cause this problem, but common causes for that message include:

We showed the file as being online even though it wasn’t really (that shouldn’t be happening anymore; it’s the only part I have control over).
The peer said it had the file, but when we tried to access it, the peer said it didn’t have the file.
The peer was flagged as being online, but when we tried to connect to it via the supernode it’s supposed to be connected to, the supernode said that the peer was not connected.
The peer refused the connection (usually happens when people have firewalls and such turned on).
The NAT type of the peer was not compatible with your NAT type. Unfortunately because of the style of communication used by the clients, it’s possible for two peers to both be online but unable to communicate with each other due to incompatible NAT types. There’s no easy fix for this, but eventually we will enhance the site so that users with incompatible NAT types show up as being offline.

If you are getting lots of “peer offline” error messages, then there might be a more serious problem. Contact me and I will get you in touch with the people who can diagnose and solve your problem.


Use Grooveshark faster: Firefox 3.0b4

21 Mar

Right now, Grooveshark is slow. There’s no getting around it; pages take a while to start loading, and then take a while to render. We are in the middle of overhauling the backend which should make a huge difference in the time it takes for a page to start loading, but we PHP/SQL devs can’t do much about render times.

Fortunately, crossover Javascript/PHP developer Chanel has been up to the task and has made major improvements to page rendering times. I can’t even begin to explain why the site can be slow to render, but I know that much of it is Javascript related, and it has to do with the number of elements on the page. But even with Chanel’s genius tricks making the site render 4-5x faster, it still feels sluggish to me.

Well, it happens that the front-end is under an overhaul as well, but I recently discovered something else that makes the site much more pleasant to use: Firefox 3.0b4. One of the improvements listed in the release notes was faster Javascript execution. They certainly weren’t kidding! It makes it hard to go back to using Firefox 2.

So far I have not been terribly impressed with the much-touted memory management improvements. Firefox still uses an amazing amount of memory, 122MB (+104MB of virtual memory) with my Grooveshark library page, Chanel’s blog and this wordpress edit window open. The good news is that Firefox seems to be much more aggressive about wiping out unneeded memory usage, but the bad news is that sometimes Firefox seems to hang while it’s frantically deallocating memory (i.e. when closing a tab).

All in all it’s shaping up to be a nice improvement over Firefox 2, and if they can polish up the memory management to give a consistently smooth user experience, it’s going to be an unbeatable browser.


Listen to SXSW 2008

17 Mar

Want to listen to one song of every artist featured at SXSW 2008, but don’t want to bother downloading the torrent?
It’s all on grooveshark in one convenient location for you.
Enjoy! Or, you know, don’t, if the music happens to suck. I haven’t actually given it a listen yet. It’s 741 songs long.


In honor of pi day

14 Mar


Pi day

14 Mar

Happy pi day everyone!


It’s all about branding

10 Mar

Nearly every successful company, certainly every incredibly successful company, has a branding strategy. Each of these companies tries very hard to associate themselves with one product, one idea, one message. Everything else they do is extra.

For Starbucks, it’s quality coffee, and the feeling of belonging (being the ‘third place’ as they call it). Baristas are supposed to make an effort to learn your name, know your drink, and even chat you up. They also build that sense of belonging by having their own lingo. If you go to a ‘real’ coffee shop after patronizing Starbucks for a while, you will probably be ostracized by the employees there; they’ll recognize you as a Starbucks person as soon as you place your order, and they might even correct you so that you understand that “what Starbucks calls a macchiato isn’t a real macchiato.” Are you going to go back there next time, or are you going to return to Starbucks, where they understand you and are nice to you? Starbucks wants so much to be associated with quality coffee that they closed all of their stores for two hours nationwide, to re-train all of their employees. If you think that was anything other than a PR stunt, think again. It would have been not only easier but certainly less expensive in terms of lost business for them to offer a rotation of training sessions so some employees could always be working while others were receiving training, but the press and image that Starbucks gained from that stunt more than paid for itself.

For Apple, they try hard to associate themselves with being hip, smart and having intuitive user interfaces. Their tactics are, in my opinion, more obvious than Starbucks’ because you can tell that they are trying hard to be hip and look smart just by watching their commercials — but it still works. By making their gadgets sleek and not clunky, some would even say ‘sexy,’ and repeating the word intuitive enough times, users have bought the idea that Apple’s user interface designs are intuitive to use, even when they are not. The interface may have a shallow learning curve, but that’s not the same thing as being intuitive — but it doesn’t matter.

For YouTube, they have obviously become synonymous with online video sharing. They aren’t even completely legal, but they make video sharing incredibly easy, and it’s obvious that that’s where they focus most of their energy, because the rest of YouTube is pretty crappy, but it doesn’t matter because when people think of online video, they think of YouTube, and that’s exactly where they need to be. The same applies for Google and search, Flickr and photo sharing, etc.

At Grooveshark, we obviously need to become synonymous with online music. We want to be your one-stop-shop for everything music related, and when you think music we want you to think of Grooveshark. The first hurdle we face is the name: it’s not very memorable. When I first heard of Grooveshark, I later tried to look it up as “Media shark” and then when that didn’t work, I tried “Music shark.” The next hurdle is the competition: there are dozens of other sites with more resources than us trying very hard to become synonymous with music, too. I believe we still have a chance, because we have a stellar team and a growing resource pool, but we need to stay on track and focus on the music before we get carried away with the “extras” such as the really social-networking heavy stuff. We have to remember our brand and concentrate our effort on that part of the site first and foremost. If we do that, we’ll make it.

This long lecture is my roundabout way of announcing that I have changed the url of my blog from to This is of little consequence to most of you because I have my server set up to automatically 301 redirect requests from the old URL to the new one for the foreseeable future. As you should be able to guess by now, I’m doing this for the sake of branding. The insights and ramblings that I share here are more for the Jay Paroline:developer brand than the Grooveshark:online music brand. I started with in the hopes that I could coerce my colleagues to all use that as a blogging platform, but of course we are all too independently minded for that, so we all have our own blogs. I think that actually works out better because now we can compete to see who gets the most blog hits. Right now I’m in 2nd place because Travis has been blogging much longer and he writes about Vim, one of the least intuitive tools ever created (too bad it’s so darn useful!), so there’s plenty to write about and plenty of people searching for help with the thing, and quite honestly his blog is a valuable resource in that regard. Nevertheless, I am catching up!

In closing: Now would be a great time to update your bookmarks. The longer you wait, the more likely you are to forget; Especially if you are as forgetful as I am. Losing your memory is not a fun experience, trust me.


Real-time HTML Editor

07 Mar

Have you ever wanted to try out a little piece of HTML without having to go through all the trouble of creating a file, saving it, and then opening that file?

Way back in the day certain browsers used to allow you to type in HTML in the URL field like about:this text should be bold, but I don’t think that works with any modern browsers.

Fortunately there is something that works even better: the Real-time HTML Editor. As you type HTML into the top pane, it displays in the lower pane.

I found a great use for it when showing Katy an embeddable widget from another site. We couldn’t see what the embeddable widget actually looked like without embedding it somewhere, but we didn’t actually want to embed it anywhere, so I went to the real-time editor and pasted in the code. Very handy.


Airborne Settles Lawsuit

07 Mar

PSA: Airborne has settled a $23 million class-action lawsuit. If you have bought Airborne any time before 2008 you qualify. You don’t have to have receipts, just a general idea of when you bought it and which version of the product you purchased. If you purchased more than 6 and wish to be reimbursed for each of them, you’ll have to provide receipts.

It just so happens that Grooveshark has stocked the cupboards with Airborne several times when we were all getting sick. It’s probably enough to be worth someone’s time here to file the claim.


Search is better

04 Mar

We at Grooveshark are right in the middle of a major overhaul of the backend. As such we are all pretty loathe to work on the current trunk right now. But when things need fixing, things need fixing. That’s why Travis and I recently spent a couple of days getting search working better.

As it stands now, search results make a lot more sense than they used to, and they return more results. There was a bug relating to how insanely complicated it is to tell whether a song is actually online (more about that tomorrow), and we weren’t performing all of the checks correctly, so sometimes we were hiding a song that was not actually offline.

We had also apparently temporarily forgotten that ORDER BY field orders ascending, as in lowest to highest, so when we ordered by score, we were taking the worst results, rather than the best. No wonder our results were just downright silly sometimes.

Finally, we have completely eliminated stopwords from our fulltext indexes, and we have set our minimum word length to 1, so if you search for U2, that won’t be too short, and if you search for A Static Lullaby, the A will not be ignored.

Things are still not remotely perfect; those extra checks we weren’t doing make search slower, as do the bigger fulltext indexes; sometimes it takes 30 seconds to come back with anything, and sometimes results still don’t make the most sense ever because of the way we build our search tables. These things will all be fixed too, I promise. In the meantime, be patient and enjoy your more-correct results.

P.S. Priority #1 after file/song is done, is overhauling search completely so that it is both fast and accurate. Stay tuned.