We firmly believe in using the right tool for the job, and this attitude has seen us collect (and discard) some exciting toys over the years. This is a small collection of our favourites.

We know when to use them, and when not to.

At the project level

Ruby (Programming language)

Ruby is elegant and powerful. There’s a wealth of information online that will compare and contrast Ruby (and Rails) against Python (and Django), or Javascript (and Node.js). These are all excellent choices, and we encourage you to read into the discussions further.

Unsurprisingly, in our opinion, Ruby (and Rails) is the best way to build web applications. Your project will go further, faster. The ruby community has an extreme focus on around best practices, testing and object oriented design, constantly evolving and pushing the state of the art forward.

If you don’t already know Ruby, we’d like to invite you to try it out. Then..

Rails (Web framework)

Ruby on Rails is an open-source web application framework for the Ruby programming language. The growing demand for Ruby on Rails has been driven by successful companies who benefit from the speed and agility of building applications in Rails, which results in increased productivity and company growth. Many of the companies you all know and love use Ruby in some capacity: Amazon, BBC, Cisco, CNET, IBM, JP Morgan, NASA, and Yahoo!. Many of the fastest-growing web-based companies have been built using Ruby on Rails: Scribd (over 70 million readers each month), Groupon (over 38.5 million subscribers in North America), Basecamp (millions of users). All in all, more than 200,000 web sites are using Ruby on Rails.

RSpec + Capybara (Test frameworks)

RSpec is a Behaviour-Driven Development tool for Ruby programmers. BDD is an approach to software development that combines Test-Driven Development, Domain Driven Design, and Acceptance Test-Driven Planning. RSpec helps you do the TDD part of that equation, focusing on the documentation and design aspects of TDD.

Capybara is a library written in the Ruby programming language which makes it easy to simulate how a user interacts with your application. Capybara can talk with many different drivers which execute your tests through the same clean and simple interface. You can seamlessly choose between Selenium, Webkit or pure Ruby drivers.

Git (Version control)

Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency.

Git is easy to learn and has a tiny footprint with lightning fast performance. It outclasses SCM tools like Subversion, CVS, Perforce, and ClearCase with features like cheap local branching, convenient staging areas, and multiple workflows.

Should someone suggest anything else, run. http://try.github.com/

Github (Source code hosting)

Build software better, together.

Powerful collaboration, review, and code management for open source and private development projects.

Stripe (Payment gateway)

An online payment gateway is software that allows you to process credit card payments from your website and/or application. Stripe is used by many of the fastest growing and most respected businesses in the world.

Javascript (Programming language)

JavaScript® (often shortened to JS) is a lightweight, interpreted, object-oriented language with first-class functions, most known as the scripting language for Web pages, but used in many non-browser environments as well such as node.js or Apache CouchDB. It is a prototype-based, multi-paradigm scripting language that is dynamic, and supports object-oriented, imperative, and functional programming styles.

ReactJS (Javascript Library)

Lots of people use React as the V in MVC. Since React makes no assumptions about the rest of your technology stack, it's easy to try it out on a small feature in an existing project.

ReactJS (Web Framework)

HTML is great for declaring static documents, but it falters when we try to use it for declaring dynamic views in web-applications. ReactJS lets you extend HTML vocabulary for your application. The resulting environment is extraordinarily expressive, readable, and quick to develop.

Amazon Web Services (hosting)

Amazon Web Services offers a complete set of infrastructure and application services that enable you to run virtually everything in the cloud: from enterprise applications and big data projects to social games and mobile apps.

One of the key benefits of cloud computing is the opportunity to replace up-front capital infrastructure expenses with low variable costs that scale with your business.

We are a standard consulting partner, and work closely with their Australian team.

Trigger (Project management)

Trigger is a project management app that combines collaboration, client management, accounting and invoicing into one easy to use, yet incredibly powerful, cloud-based app.

We built Trigger because we were sick of having to use multiple pieces of software for our project, client & team management, time tracking, invoicing and accounting.

New Relic (Monitoring)

Complete visibility with application monitoring. View the health and availability of your production app so you can be sure it’s tuned, optimized and running at peak performance – see where your app can be fixed right down to the line of code.

Bugsnag (Error tracing)

Real-time bug intelligence. Bugsnag captures errors from your web and mobile applications, helping you to understand and resolve them as fast as possible.

Sendgrid (Email deliverability)

Sendgrid is how we send transactional email. It is simple to implement and extremely reliable and effective.

Faye (Real-time updates)

Faye is a publish-subscribe messaging system based on the Bayeux protocol. It provides message servers for Node.js and Ruby, and clients for use on the server and in all major web browsers.

Mixpanel (Analytics)

Actions speak louder than page views. The most advanced analytics platform ever for mobile and the web. Tracks application actions, and people.

At the system level

Linux (Server operating system)

Anything else is madness.

Oracle Linux or Ubuntu

PostgreSQL (Database)

Our relational database of choice. A case could be made for MySQL under very specific circumstances (you need Amazon RDS, for example), but in almost all cases, we believe PostgreSQL to be the superior choice.

MongoDB (Database)

Our document database of choice. MongoDB (from 'humongous') is a scalable, high-performance, open source NoSQL database.

Redis (Key-value store)

Redis is an open source, advanced key-value store. It is often referred to as a data structure server since keys can contain strings, hashes, lists, sets and sorted sets. Redis acts as a store for our background jobs, and other temporary stores for your application. It’s very fast, and very useful.

Monit (Watchdog)

Monit is a free open source utility for managing and monitoring, processes, programs, files, directories and filesystems on a UNIX system. Monit conducts automatic maintenance and repair and can execute meaningful causal actions in error situations.

Nginx (Web server)

Nginx (pronounced engine-x) is a free, open-source, high-performance HTTP server and reverse proxy, as well as an IMAP/POP3 proxy server.

Unicorn (Application server)

Unicorn is an HTTP server for Rack applications designed to only serve fast clients on low-latency, high-bandwidth connections and take advantage of features in Unix/Unix-like kernels. Slow clients should only be served by placing a reverse proxy capable of fully buffering both the the request and response in between Unicorn and slow clients.

Whenever (Job scheduler)

Whenever is a Ruby gem that provides a clear syntax for writing and deploying cron jobs.

Backup (performs database and asset backups)

Backup is a RubyGem, written for UNIX-like operating systems, that allows you to easily perform backup operations on both your remote, as well as your local environment.

Bundler (Dependency management)

Bundler maintains a consistent environment for ruby applications. It tracks an application's code and the rubygems it needs to run, so that an application will always have the exact gems (and versions) that it needs to run.

npm (Dependency management)

npm makes it easy for Javascript developers to share the code that they've created to solve particular problems, and for other developers to reuse that code in their own applications.

At the application level

One of the biggest efficiency-gains to developing applications in Ruby is the vibrant community, sharing best-practices, and sharing open source tools.

There’s a wheel out there for everything, and we have no intention of re-inventing any of them.

Provided here is a list of the top-level ruby dependencies from our most recent two projects. Many relate purely to development or test environments, but they all help us do things better and faster.

You can learn more about them, and others, at The Ruby Toolbox (https://www.ruby-toolbox.com/), or by searching for them on Github.

Ruby

  • active_model_serializers

    • JSON serialization for APIs.
  • awesome_print

  • bugsnag

  • cancan

    • Authorization done well
    • who can see this? who can change it?

  • capistrano

    • Industry standard deployment tool.

  • carmen-rails

  • coffee-rails

    • CoffeeScript is a little language that compiles into JavaScript
    • The modern, more human readable javascript syntax.

  • colorize

  • compass-rails

    • An open-source CSS Authoring Framework

  • database_cleaner

  • debugger

  • devise

    • Flexible authentication solution

  • factory_girl_rails

  • faker

  • fakeredis

  • geocoder

    • Complete Ruby geocoding solution
    • [latitude, longitude] to/from street or IP address

  • grit

  • guard-rspec

  • haml-rails

    • Markup should be beautiful
    • html5shiv-rails

  • jquery-rails

    • The write less, do more JavaScript library
  • launchy

  • mongoid

    • Object-Document-Mapper (ODM) for MongoDB

  • mongoid-rspec

  • newrelic_rpm

  • pry

  • pry-rescue

  • rails

  • rb-fsevent

  • redis-rails

  • rspec-rails

  • sass-rails

    • Sass makes CSS fun again

  • sextant

  • sidekiq

    • Highly efficient background worker

  • simplecov

    • SimpleCov is a code coverage analysis tool for Ruby 1.9

  • state_machine

    • State machines make it dead-simple to manage the behavior of a class

  • strong_parameters

    • mass assignment protection, ready for rails 4.0

  • uglifier