Looking for a new Elpis Leader

Are you interesting in working on Elpis? Unfortunately, in the last year my attention has had to be focused elsewhere. So I have not had the time I would like to devote to working on Elpis. If you are interested in becoming a developer for and possibly taking over this project, please email me via elpis@adamhaile.net

I would love to see Elpis live on and get the attention it deserves. So, if you would love to see Elpis continue to get new features and be updated and have the technical skills to do so, please consider diving in and lending your time to the project!


Moving On

I haven’t exactly posted much here in the past year (or more). Life has been busy with a new job, new city, new house… but probably the biggest culprit for me not writing here has been a new business venture, Maniacal Labs. Along with two friends, I have ventured into the world of electronics kits. We’re working on some pretty cool stuff and are quite excited about it, so please take some time and check out what we are working on.

Moving forward, pretty much everything I work on will be blogged about on the Maniacal Labs website, with the exception of Elpis (more news on that shortly).


Happy Birthday to Elpis

I’m a little late on this but Elpis just turned 1!
I released Elpis on December 18th of last year and what a crazy year it has been :)
Elpis has been downloaded in more than 100 countries and as of yesterday, the most recent version, has been downloaded over 9000 times!

Many thanks and Happy Holidays to all those that have helped spread the word and support Elpis in the last year!


Other Things

My blog has pretty much been about Elpis and nothing else up until now. I’m going to, however, try to start chronicling some of my other projects.

Here’s a little demo of something I’ve been working on:

Check out more details on the (yet unfinished) project page: http://www.adamhaile.net/projects/raspberrypi-led-strip-control/


More to come

So… I’ve been a bit quiet lately and for good reason. I’m in the middle of buying a new home and dealing with all of the logistics of loans, moving, etc. Fun stuff :P

Because of this, I’ll admit, I haven’t exactly had much time to work on features in Elpis. Though, for once, I don’t actually have to in order to keep Elpis working. It’s been 3 months since I first released v1.0.3 with the new Pandora API and it’s been wonderful not having to hope every day that Pandora would not change something again that would break my application. (Please excuse me while I knock on every piece of wood in site…)

However, once things settle down, there will be a new version on it’s way. Nothing huge to be honest (there’s not really much else I can add). But there will be some nice improvements like the ability to map your own hotkeys, tighter Last.FM integration and a host of other usability tweaks and bug fixes.

One last thing… as of tonight, the current version of Elpis has had more than 4000 downloads! Sure, compared to some, that is not many. But I’m quite pleased that there are that many people enjoying my work. Many thanks for all the support!

Stay tuned…


Sharing the Love

Last.FM scrobbling was the #1 request I had since nearly the beginning of Elpis and in the latest release (v1.4.5) I was finally able to add it. Unlike the large majority of the code in Elpis which was written by myself, I was happy to be able to just use another open source library and not have to implement the Last.FM API from scratch. That library is LPFM. One of the things I liked best about it, and main reasons I chose it, was that it did not even bother to implement the whole Last.FM API, but just the scrobbling part. This was absolutely perfect as it was nearly all I needed.

While it wasn’t a requirement, I thought it would be nice to make it so that rating a track in Elpis propagated that status to Last.FM as well. This was the one thing that LPFM was missing. But LPFM was so simply and beautifully written that it took me only a couple of hours to implement the Love and Ban API methods to the code. This is one of the many reasons I love open source… I would not have been able to do this so easily otherwise.

Along the way though, I added a few more things that were needed to work completely with Elpis.
In total, those were:

  • Love / Unlove
  • Ban / Unban
  • Proxy Support
  • Removed the dependency on System.Web.HttpUtility so that it would work with .NET 4.0 Client Profile (what Elpis uses to insure the quickest install times).

So, in the interest of sharing the open source love I, of course, contacted the developer of LPFM about submitting my changes. He was more than accommodating and even added me as a developer on the codeplex project. That was several weeks ago and I hadn’t really thought about it since but I woke up to a nice email this morning; The changes had been accepted and a new release version is available for download including all of the changes made for Elpis! It’s great to be able to give back to such an awesome project and hopefully help out anyone else who wants the same features :)

Because, at the time of the release of Elpis 1.4.5, my version of LPFM was different than that official project, I included the modified source in the Elpis trunk. However, at this point, since the code that Elpis uses is exactly what is in the official release build of LPFM, I will be including only the pre-compiled DLL and simply include a document pointing to the LPFM Codeplex project. Hopefully this should help avoid confusion and I would rather be using the “official” version wherever possible.

Speaking of sharing the love, if you really love having the Last.FM features in Elpis, consider donating to the orignal developer DanielLarsenNZ. He doesn’t currently have a donate link that I can find, but I’m sure if you contacted him (also @DanielLarsenNZ on twitter) I’m sure he wouldn’t complain.


Shameless Plug

I’ll try to keep this short and to the point…
Elpis is, and always will be, free and open for anyone. But that doesn’t mean that it’s free for me to keep it going.
I’ve had the donations link up since the beginning and greatly appreciate all that has been donated. It has definitely helped keep things going.

Just recently, however, an email from my web host notifying me that my hosting was up for renewal soon made me realize that there was another way you could donate and get even more in return.

Just visit Dreamhost and sign up for a new hosting account (sorry, doesn’t apply to current customers) and use the coupon code ELPIS at checkout. You’ll receive $50 off your hosting, making it either $70 for one year or $165 for two. If you are not familiar with Dreamhost, they are a fantastic company whom I have used for years. You get unlimited everything, one free domain with signup, automatic google integration (you@yourdomain.com emails, etc.), easy one click installs of the greatest free software (my blog install took 2 minutes) and much more.

By using that code and signing up, not only do you get a huge discount on your hosting, but it will help me pay for my hosting in the future and keep Elpis alive. This is not money that I can ever withdraw and use for something else, it will absolutely be used to keep the website going (and most likely make it so that a dedicated website, as opposed to my personal blog, for Elpis will be happening very soon).

Just remember to use the code ELPIS !


Being Open

Anyone who has used Elpis since before June 2012 probably knows all too well the pains that it has gone through in regards to Pandora’s very much closed API. Most people probably saw it as little more than the regular (once or twice a month) times when Elpis would suddenly stop working. My view, however, was that of many, many debug logs pouring in from dedicated users with who-knows-what errors telling me that, of course, Pandora has changed something. Again.

For almost the last 2 months, however, not a single change has been because it had to be done in order to make it work again. Large enhancements have even been made, with the release of version 1.4.5 last week. As I mentioned in earlier posts, this is all because that pesky API was completely rewritten to use a different protocol that shouldn’t break as often, if at all. Don’t get me wrong, this is a fantastic thing. But there is still something fundamentally wrong with the way in which all of those changes had to be done. Something that I don’t think I fully appreciated until I spent a lot of time working on implementing the new Last.FM features of the latest version.

To fully explain, you must first understand that the API code used for Elpis is a completely reverse-engineered implementation of what Pandora and their partners use in their products. Not just the old API that I threw away but the new one as well. A great deal of time was spent by dedicated community and myself, sniffing network traffic, pouring over code disassembly, cracking encryptions and generally trying to figure out how the whole system works from very little detail and absolutely no documentation.

My experience with Last.FM, however, was entirely different. It took me two months to complete the first API code for Elpis and that was mostly just porting python code from Pithos and doing a little reverse-engineering. Getting Last.FM to work, however, took less than a week. I admit, that part of that was because I found the a great library called LPFM. But I got more than halfway through a from-scratch implementation of the code I needed before abandoning it and just updating LPFM for my requirements instead. All of this was made possible by the fact that Last.FM has a free and open API.

Granted, the scope of the Last.FM code in Elpis is far from that of the code needed to communicate with Pandora. But for Last.FM, if I had a question of how something worked I could just look it up on their documentation. I could even email someone there and get a swift answer! What was interesting here was how vastly different approaches that Pandora and Last.FM have taken with accessing their systems.

Now, obviously, I understand that both services are of the commercial variety and their ultimate intent is to make a profit. I don’t fault either company for that. But I feel that Pandora’s stance of absolutely no official integration with their service unless you are one of their partners (like XBox, Roku, etc.) is doing them a great disservice. Last.FM, on the other hand, came up with a extremely simple solution to the problem. The API is open and available for all to use and you can get at any data except actually play music when accessing it from a free account. Log in with a paid account, however, and you can do anything you could do with the official clients. This means that anyone can take the documentation and write their own API, in the programming language of their choice and even make their own client, should they choose.

Those fans of Elpis who love it mainly for the hours and hours of Ad-Free listening with only a free account are probably screaming right now. But remember that my stance has always been that if you enjoy listening to Pandora via Elpis you should buy a Pandora One subscription. I would actually rather you do that than donate to me. My intent has never been to detract from Pandora’s revenue, only to free it from the confines of the web.

Also, I understand that Last.FM is setup to be much more of a social service than Pandora. So, only having access to track data and being able to scrobble is not really so much of a problem… if it was, there wouldn’t be over 600 products that support it. I know I’m proud to now count Elpis as one of them. But the sentiment still stands. If Pandora decided tomorrow to open up an API with similar restrictions to Last.FM’s, I would support it in a heartbeat. That’s not to say that the current version of Elpis wouldn’t keep working ;)

Speaking of which; Pandora, my offer still stands… contact me and I’m more than happy to help you make a better desktop client.

In the mean-time at least consider doing what Last.FM does and freeing your data from it’s shackles. I’m sure that if someone really wanted to, they could make Last.FM’s API stream music with a free account but, because they are open about it all, no one seems to have ever felt that need. And because of that, Last.FM has more control over their open system that Pandora has over their closed one.


As promised, there’s a new version of Elpis available for download.

For the impatient types, head right over to the project page and download the installer.

One quick note, however – Users coming from the last version (1.0.3), if you get the update notification within the client and tell it to update, there is a bug in that version that may cause it to crash after launching the download. Don’t worry, just install the new version when it downloads and the bug will be fixed.

Aside from a great deal of bug fixes and little tweaks there have been a number of enhancements added, including:

  • Last.FM Scrobbler support
  • UI for Proxy configuration
  • Beginnings of plugin interface
  • Pause on System Lock
  • In-client update downloads
  • Close to tray option

After all of the API craziness, it was great to finally be able to do something other than just fix what Pandora broke. So I really hope that all the users enjoy all the new features.

One of the other major reasons that all these changes have been made is that I’ve had some help this time around from Ben Kloester. It has been great to see what started as a tiny personal project turn into something with a wide user base and a number of dedicated fans, kind enough to want to lend a hand. So, if you are one of the many people who have been looking for LastFM support in Elpis, you have Ben to thank as he is the one that pushed Elpis down that path and has done a great deal to get it working.

So, go ahead, grab the download and get back to listening… and now Scrobbling, if that’s your thing.


Request for a New Icon

If you use Elpis, then I’m sure you are familiar with its main icon:

This icon was, at best, meant to be temporary. I am, in no way, a graphic designer and my fairly uninspired icon probably shows that.
So I’m throwing a request out to the fans of Elpis to help design a new logo and icon.

I’d call this a contest but, well, I can’t really offer up a prize. Not other than the eternal glory of having your work included in an open source project with a fairly large user base. I will however, post several of the best submissions here and get a public consensus.

In terms of rules, there’s just a few;

  • Icons should try to stay within the theme of Elpis. Aside from obviously music, that being Pandora and the surrounding Greek mythos of that story. Elpis itself means hope, that which remained in the box after Pandora closed it.
  • Please save submissions as either SVG or PNG at a resolution of at least 512×512. SVG is highly preferred, if possible.
  • Submissions should be attached to this google code thread: http://code.google.com/p/elpis-pandora-client/issues/detail?id=89
  • Please do not provide external links. Instead, add a new comment and attach the file(s) to that comment at the link above.
  • Be mindful of the fact that they will be included with a GPL project. Though, I am happy to include copyright documents alongside the files.

One last item… The rest of the icons in Elpis were honestly meant to be temporary as well. If anyone felt up to tackling a new set of control icons, it would be more than welcome.

Stay tuned for a new release of Elpis, later this week. Obviously there won’t be enough time to get the new icons in this upcoming version but they will go in ASAP.