Fighting the Desire to Quit Rdio

by mlaccetti on May 15, 2013

I had originally signed up for Rdio in August of 2010 – I had my free trial for a month but didn’t consider it compelling enough for me to sign up for a paid account. In January of 2011 I signed up for a month of the unlimited service, but again cancelled it – while their product was great, their catalogue wasn’t really up to par. In December of 2012 I re-visited that decision and signed up for an unlimited subscription. At the end of January 2013 I upgraded to the family plan and added Ana to my account. A few days later, since it worked out to be something like $30, I added Jamie to the family plan for a year. For a few months, it was great – I created a playlist for my crunk needs, and had fun collaborating with Jamie on adding music to it. Now that I’ve been using the service for six months, I feel I can voice my feelings on the downsides to Rdio and why I’m considering nuking my plan. I’m not sure what I’d replace it with – I refuse to use iTunes because it’s a 150mb virus (also made by Apple) and Spotify isn’t available in Canada. I want to pay for my music, but record labels sure don’t seem to want to make it easy for me to give money to the artists. However, that’s a completely separate rant, for now I’ll focus on Rdio.

My first issue with Rdio is how I can “discover” music – I’m forced to do it the way Rdio wants me to. I can see what the most recent releases are, but I cannot organize them in any way. I just get a huge lump of “this week”, “last week” and “two weeks ago.” I can see what is “heavy rotation” according to the people I follow and I can see what the “top charts” are. I can then search by artist and find related music. However, the one thing I REALLY WANT is to be able to organize and search by genre. Hell, I’d just like to view things in a list and group/sort by different fields. How about I search for things in EDM released in the last year? Or EDM by artist? It’s incredibly frustrating to be given access to what may be a huge pool of music but only get to see what the last few weeks has released or whatever mind numbing crap is currently listed as the top of the chart.

The other issue is the concept of previews – I’m not sure if this is a feature Rdio introduced to get labels on board, or labels forced on Rdio to sign a deal, but it is incredibly frustrating. I find that Dim Mak is a huge abuser of this “feature”. Rather than putting the music up for streaming, they put snippets of it and let me choose to buy full albums through Rdio, for the typically extortionate pricing. I don’t want to buy the album; I’m paying $24/mo for my streaming plan for a reason. If I wanted media, I’m sure I’d find another way to get it (*cough*torrent*cough), one that was more economically viable. The most recent straw that has come close to breaking the camel’s back is the fact that Warner/Interscope released The Great Gatsby soundtrack, which I was digging. After a few days they went in and made a whole bunch of tracks previews – what the hell is that?! As Pete Lada wrote:

Pete Lada
New record release strategy:
1) release full tracks for a few days
2) album rockets to top of top charts
3) limit songs to preview
4) ????
5) Profit

I just don’t understand what the hell record labels are even thinking these days – how did #3-5 even occur to these wankers? Were they busy playing “how can I best shoot myself in the foot” followed up by “let’s see how we can make everybody love us less, a day at a time”? I understand this may not be Rdio’s fault, but they are complicit in it, and I’m really questioning the value of giving them my money.

{ 2 comments }

Python for a Java Developer – The End

by mlaccetti on May 6, 2013

So, I have a draft of part two sitting in WP, and I’m not sure it’ll ever get finished. You see, we had a pivot! Due to said pivot, we evaluated where we are, what our technical skills are, and realized that switching from PHP to Python would take more time than switching from PHP to Java, especially given that we already have the entire stack ready in Java. So, migrating to Java for a Java developer isn’t really a big deal and doesn’t really inspire any new blog posts. However, when we start utilizing Scala, then we can talk!

A few notes that I found while I was working on part two of my switch to Python:

  • PyPy and virtualenv/virtualenv-wrapper do not play nicely together
  • PyPy and Windows aren’t really the greatest combination – stick to Linux

The latter issue seems to crop up for Ruby and node.js as well – lots of hackers apparently utilize OS X or Linux, which leads to complications for folks working on Windows. I ended up dealing with this by firing up a Linux VM, but that is not an optimal fix, simply a workaround. So, beware.

{ Comments on this entry are closed }

Python for a Java Developer – Part One

by mlaccetti on April 12, 2013

Preface

I still love Java; I think that the language, while it has idiosyncrasies and can be verbose, still has a lot of life left and is continuously undergoing improvements. Project Lombok goes a long way towards making Java less verbose (I’ll trade annotations for boilerplate accessors any day) and I’m hoping that Java 8 continues the trend of adding useful features.

That said, I feel it is time to put a bit more effort into (re)learning Python – amusingly, it is older than Java, yet people still seem to think it is newer and hipper. I try to ignore that stuff – I want to use Python to connect to a different group of people and force myself to think in a different pattern. So, this post focuses on me trying to find my footing in this strange new land and attempt to be productive.

The Beginning

The first task is to get Python installed – there are a variety of different options – the traditional/official CPython implementation, IronPython, Jython… I am using PyPy – I won’t bother with the installation instructions, as they are platform specific. Once you have PyPy installed, you also need to install Distribute and Pip:

1
2
3
4
wget http://python-distribute.org/distribute_setup.py
wget https://raw.github.com/pypa/pip/master/contrib/get-pip.py
pypy distribute_setup.py
pypy get-pip.py

Please note that I’m assuming that you’ve added PyPy to your PATH somehow – I suggest creating a PYPY_HOME=/path/to/pypy environment variable and then adding $PYPY_HOME, $PYPY_HOME/bin and $PYPY_HOME/Scripts to your path.

Once you have Distribute and pip installed, it is time to install virtualenv!

1
pip install virtualenv

virtualenv is the piece of magic that allows us to have discrete application installs for Python – unlike Java which has a classpath, Python libraries are installed globally. Apparently I’m not the only person who was rubbed the wrong way by this, or virtualenv would not exist!

So, you have PyPy, Distribute, pip and virtualenv installed – now we get to create our first environment!

1
virtualenv --no-site-packages --distribute project_name_here

You can also add the --python=/path/to/pypy if PyPy isn’t your default Python interpreter. Once your project is created you can simply type project_name_here/bin/activate to enter the project sandbox. Note: If you are using CPython and *nix, you might want to install virtualenvwrapper as it provides some shortcuts for working with virtual environments.

I’ll follow up in Part Two with information on setting up your development environment and getting started with actually writing some Python code.

Update(s)

2013-04-19 17:58 – Just a quick note that I use the gnuwin32 utilities to provide curl and wget under windows; you might consider doing the same. If you have an alternate solution, please let me know!

2013-04-19 18:14 – I wanted to use virtualenvwrapper-win instead of manually fiddling with virtualenvwrapper, so I went to PYPY_HOME and created a symlink that allows pypy to pretend to be python: mklink /s /h python.exe pypy.exe. You can then pip install virtualenvwrapper-win and create WORKON_HOME.

{ Comments on this entry are closed }

Thoughts on Google

by mlaccetti on March 21, 2013

Two things have happened recently that have gotten me thinking about Google – shutting down Reader, releasing Keep and Andy Rubin stepping down as the head of Android.

Shutting down Reader was one of those decisions that has been coming for a while, given the lack of attention that Reader has been retrieving. Unfortunately for Google, they didn’t seem to realize that the people most likely to use Reader were also the people most likely to be vocal about it being shut down. I’m lucky (for now), as I’ve been using netvibes as my content aggregation service for years, so the shut down doesn’t impact me. For those that used it, though – after investing years into a product, it’s always unpleasant to see it go. It’s a weird decision for Google, as if they had one or two employees dedicated to it, they would be spending 100-200k on it a year, a drop in their bucket, and would engender goodwill. At least they allow you to export your data and have given a large window to find a replacement – much better than other systems that basically just shut down one day, leaving you high and dry.

Of course, this feeds directly into the new Feed product – another tool that Google has thrown out to the wild with no apparent vision. The biggest problem is that Google seems to churn out a project and see what happens, THEN decide whether or not to support it. In the majority of cases, it would seem to be “not” – this may just be the case of tools that pre-dated G+, as it seems that Google is trying to build a platform now, rather than products. All of the preceding projects that have been shut down were standalone – Buzz, Wave, Reader, Fast Flip, even the Labs – were not related to extending or enhancing Google’s platform of G+/Drive. Newer products that build on these foundations should, theoretically, be supported. Of course, as with any company, there are no guarantees – you just have to decide whether Google’s track record of shutting projects down will impact your decision to use their new stuff.

The final piece of news that I find interesting is related to Andy Rubin leaving the Android team. At this point, Android is a relatively mature product which apparently no longer interests Rubin. The focus right now should be on trying to de-fragment the insanity that are Android releases; while most people run the latest iOS months after release many Android manufacturers only release upgrades six months to years after the latest version has been released, if they even bother. Google really need to deal with this, as it hinders development of new apps and growth of the OS. With Rubin out of the picture, the new head of Android is also the head of Chrome and Chrome OS. My initial reaction was positive and that the two separate OSs should merge; in fact, I’d suggest that Chrome OS should be put in the trashbin of failed projects (hi Wave) and replaced with a useful OS, a-la Android. This hope was dashed, at least publicly, when Eric Schmidt stated that the two would stay separate, though there would be some overlap. That makes me sad – I think the Chromebook Pixel was a pretty solid attempt at hardware, just running the most useless excuse of an OS ever imagined. At this point, I’d buy the hardware (if I could get 8GB RAM) just to throw Windows on it, so it would at least be functionally useful. I have no clue why one would need such powerful hardware to run a web browser that pretends to be an OS.

{ Comments on this entry are closed }

Why I hate OAuth 2

March 8, 2013

Tweet I’ve been fiddling with OAuth 2, and I’ve really learned to hate the need for a refresh token. The flow: User authenticates app, app gets access token and refresh token Time passes, access token expires User clicks some button, request is sent to first party server for action, first party server contacts remote server [...]

Read the full article →

Exception Anti-Pattern

March 1, 2013

Tweet This one is baked right into Java, which goes to show that the language is in dire need of an overhaul – time to go and pretend to understand scala? Basically, there is this wonderful class called XMLDecoder – used to read a Stream of some sort and convert it from XML to an [...]

Read the full article →

Chromebook Pixel Review

February 25, 2013

Tweet Great screen Mediocre specs – need an iFixit teardown to find out if that is fixable Dumbest OS for any sort of “power user”, no matter what Engadget seems to think Back to thinking about an XPS 13 Developer Edition, or a MacBook Pro 15.

Read the full article →

Generic DAO Implementation of JPA2 Criteria Queries

February 19, 2013

Tweet Is the title long enough? Good god. Here’s some sample code: 1234567891011  @Override   public <T , U> T criteriaQuerySingle(Class<T> entityClass, SingularAttribute<T , U> metaModelAttribute, U matchCondition) {     final CriteriaBuilder qb = em.getCriteriaBuilder();     CriteriaQuery<T< c = qb.createQuery(entityClass);     Root<T> p = c.from(entityClass);         Predicate condition = [...]

Read the full article →

Removing OVH/Kimsufi’s Terrible Kernel

January 31, 2013

Tweet So, I use kimsufi/OVH as a provider of dedicated servers and love what they offer. The only problem is that their Ubuntu distro always seems to come with a non-standard kernel. They say it is more secure, but it causes some serious compatibility issues. Today, I finally got rid of it, which took a [...]

Read the full article →

pfSense, MLPPP and Realtek 8111F

January 30, 2013

Tweet When Ana and I moved to our new house in October, I took the time to get rid of our cable internet – while it was relatively fast (up to 150mb/s), it wasn’t reliably fast, and the uplink was terrible at 10mb/s. Rogers, our cable provider, also had the handy QoS/throttling features, along with [...]

Read the full article →