This is sort of a continuation from yesterday, but I think it’s separate…
I’ve seen a lot of talk about what stack people use lately. I think people get caught up with this too much. Obviously, the Rails stack is the one to rule them all - I jest, stack does not matter.
That being said, I love the Rails stack. As DHH said in his Rails Conf keynote, Ruby was designed by Matz for developer happiness, what a wonderful thing. Rails is a beautiful language. I’ve tried other stacks, including PHP, Java, C - nothing compares for me. I sometimes wish I was more of a polyglot, but then I remember one key principle.
Stack does not matter.
Whatever you choose, the goal is service. A user doesn’t care about your stack. When you’re starting out, you don’t need to worry about scaling to a million users - you might never get a single one.
My problem with trying a new stack is that I always think I can do this better with my old stack. Then there is more overhead when it comes to DevOps, deploying and maintenance. I might have already solves these problems in my existing stack, what would I gain from using a new stack and learning this all again?
Is that short sighted?
The purpose of writing about my stack is to hopefully indoctrinate, er… show the simplicity of Rails, maybe give some people some ideas on what they can use and to eventually document how I go from zero to deployed (that won’t happen in this entry).
Ruby/Rails: From their own website: Ruby is a dynamic, open source programming language with a focus on simplicity and productivity. It has an elegant syntax that is natural to read and easy to write.
The focus on simplicity and productivity and the fact it is easy to read and write is why I love it so much. The Rails Doctrine is a gold mine, but fundamentally follows Ruby’s ethos, but I like the particular segment about being a basic toolbox that provides you with sharp knives.
PostgreSQL: Usually my database of choice. It’s simple to set up and I’ve never needed to worry too much about this. Rails default is sqlite3, but this comes with deployment complications, because this is effectively a file, so you have to deal with symlinks and shared locations.
Puma: The default server for Rails. It’s simple, fast, built for concurrency and has great documentation. Plus, includes Nate Berkopec as one if it’s maintainers - dreamland.
Capistrano: Used for automated deployment. Takes very little setup and deploys my code in under 60 seconds. It’s very simple.