I interrupt the silence of this blog to bring you a brief announcement of a new site I’m launching with Adam Darowski: Liiikes
Liiikes is a little web app to see who is posting the highest quality content to Dribbble. There’s also a scouts view that lets you see who is drafting the best talent into Dribbble. There’s some detailed info about how this works on the Liiikes about page.
Liiikes uses Swish to scrape the Dribbble API for the necessary data. We do some simple calculations and then serve our data up via a Rails 3 app running on Heroku. We’re using HAML, SASS, jQuery, and all the other expected goodness.
Many thanks to Adam for his hard work on Liiikes and his contagious excitement about the project. I’ve worked with Adam at PatientsLikeMe since the beginning of March. He’s a super talented guy and also a good friend. Anything pretty or awesome on Liiikes is his doing. I just threw the data in the right places.1 I should mention that if you’re an exceptional designer or software engineer, PatientsLikeMe is hiring – so you could work with awesome people too.
For a small project, Rails 3 wasn’t nearly as big of a transition as I expected. That’s a mixed blessing, though, as many of the problems I experienced were caused by my Rails 2 background. An easy example is that :requirements in routes is now :constraints. I would have hit the docs a lot sooner if I wasn’t lulled into a false sense of security by my previous experience and the fact that the error I was receiving was less than helpful.2 Beyond that oddity, though, I find routes in Rails 3 to be a big improvement.
Bundler worked flawlessly on Liiikes.
The setup of the app on Heroku was pretty straightforward except for a small hiccup with SASS being compiled for Heroku/Rails 3. This problem was quickly solved by finding a helpful blog post and using the provided fork of hassle. One of the nicest things about Heroku was being able to db:push and db:pull to share the database early in development.
Unfortunately it doesn’t look like Heroku is going to be able to handle the scrape job that needs to run nightly.3 My only other gripe about the otherwise awesome Heroku is that their docs aren’t up to date for Rails 3 (thus the SASS difficulty and the memcache instructions being a little stale). No biggie.
Anyway, enjoy Liiikes and I’ll try to update this more than twice a year.
1 Quite frankly, throwing functionality into well-designed templates is often my favorite method of working on a web app. Specialization isn’t a bad thing.
2 I was calling player_path(player), nothing related to destroy, but the message was:
No route matches {:controller=>"players", :action=>"destroy", :requirements=>{:id=>/[^\/;,?]+/}, :id=>#<Player …>}
3 I can only speculate that this is because it is a rather long-running task that sleeps a lot to play nicely with API throttling rules.