As a developer that likes to make things for fun, I've really fallen out of love with Heroku. A lot of this can be summarised by saying "it's not super-cheap to run hundreds of projects anymore" and I'm not denying that Heroku used to give you a lot for free if you abused it. But indulge me:

1. They have got more expensive...

Heroku have a new free tier which means you can have 2x free dynos (e.g. one web worker, one background task worker) but they can't run 24/7. If you want dynos that run 24/7, you need to pay $7 per dyno.

This is a pretty reasonable trade-off, but it makes it expensive to run any kind of project that needs to run 24/7 (e.g. they consume data from Twitter, or webhooks, or perform realtime analysis). That's a surprising number.

2. ...but performance hasn't got better

By default each dyno gets 512MB RAM. Like the base model iPhone, this is totally out of place in 2015. It's much easier to hit this limit than it used to be, and then you have to spend a lot of time performing memory optimisations. Not useful if you're just doing this for fun!

The price for more memory? $50/month for 1GB or $250/month for 2.5GB. This is insane! As a hobbyist I could buy a 4GB Linode for the price of a 1GB Heroku dyno. And I'd get 4 CPU cores.

3. Their cheap PostgreSQL is terrible

Even if you pay $7 per dyno for 24/7 dynos, prepare to be crippled by the cheap Heroku PSQL servers. Expect aborted connections (bouncing you between servers) and random slow requests. The price to get rid of these issues? $50/month. Again, as a hobbyist, this would pay for a dedicated 4GB Linode to run a DB server that I could power all my apps off, instead of just the 1 app I could run on Heroku.

4. git push heroku master isn't so impressive any more

There are so many options for home-grown application deployments nowadays. Roll something in Docker, use Capistrano (my personal choice), Chef, Puppet, Ansible. DevOps tools have matured a lot, some of them even use Heroku buildpacks so they build your project in the same way. And as a hobbyist, you're going to learn some valuable skills along the way.

5. Charging $20/month for SSL is criminal

Update: Heroku now support free SNI-based SSL for all paid dynos (the cheapest of which is $7/month). Well done Heroku!

It is ridiculous in this day and age that Heroku expects you to pay $20/month for proper SSL. In contrast, Cloudflare provide SSL for all their customers (in fact, that's a way of circumventing Heroku's ridiculous price). Whether your project is a hobby or not, security and privacy should always be taken seriously.

It's clear that Heroku is shifting its focus, and I don't deny that they used to be a ridiculously good deal for free. But I think it's a shame that it's now cheaper and faster to run small-scale projects on real servers, because when the time comes to scale those projects those potential customers might stick to their existing platform, and Heroku will miss out.

I still have a few 'completely free' apps on Heroku, because they are absolutely tiny (Heroku barely ever spins them up, so they're just code repositories really). But I shifted two of my larger personal projects costing over $100/month (2xSSL, 2xDB, 1xSolr, some dynos) to a Linode costing $40/month (+$10/month for rolling backups) and I have plenty of room to spare. And they now perform better. I'll put up with having to run sudo apt-get dist-upgrade every now and then.