Tim Joseph Dumol
TimDumol
Lead Software Architect | Kalibrr
Recent Tech Decisions
109 points

Companies
Following

  • PostgreSQL

    #<User:0x00007ff536bedd58> Kalibrr


    PostgreSQL is our main datastore, and we make judicious use of its fantastic features: JSON columns, recursive CTEs, streaming binary replication, triggers, and constraints, among others.

  • Prerender

    #<User:0x00007ff536bec1d8> Kalibrr


    We make sure that our site is indexable by bots and spiders (such as GoogleBot and Facebook's fetcher) using Prerender, which runs our JS and render and serves the final page to bots that typically don't have JS capabilities.

  • Python

    #<User:0x00007ff536beab58> Kalibrr


    Most of our backend code is in Python. We use TypeScript for frontend code, and we use Ruby for our build system (Guard).

  • NGINX

    #<User:0x00007ff536be9618> Kalibrr


    We use nginx to serve all of our static files, and to load balance our multiple backends. Our nginx frontend servers are themselves load-balanced using a Linode NodeBalancer.

  • Jenkins

    #<User:0x00007ff536be7f98> Kalibrr


    All of our pull requests are automatically tested using Jenkins' integration with GitHub, and we provision and deploy our servers using Jenkins' interface. This is integrated with HipChat, immediately notifying us if anything goes wrong with a deployment.

  • Elasticsearch

    #<User:0x00007ff536be6058> Kalibrr


    We use ElasticSearch to index and query items that need to be searched full-text (such as jobs and candidates). We mirror changes to our main datastore (PostgreSQL) onto ElasticSearch using SQLAlchemy's events, denormalizing as needed.

  • Bootstrap

    #<User:0x00007ff536be5018> Kalibrr


    We cherry-pick the parts of Bootstrap that we want to use using SCSS. We mainly use the typographical and layout-related parts of Bootstrap.

  • Pug

    #<User:0x00007ff536be3c18> Kalibrr


    We use Jade when writing HTML, which is much easier to read and maintain. We compile it to HTML before deploying it though, and don't use Jade's client-side rendering features.

  • Sass

    #<User:0x00007ff536be2958> Kalibrr


    All of our CSS is written in SCSS, Sass's CSS-like syntax. Variables, functions, mixins, and nesting are simply heaven compared to plain CSS.

  • Celery

    #<User:0x00007ff536be1698> Kalibrr


    All of our background jobs (e.g., image resizing, file uploading, email and SMS sending) are done through Celery (using Redis as its broker). Celery's scheduling and retrying features are especially useful for error-prone tasks, such as email and SMS sending.

  • Google Maps

    #<User:0x00007ff536be0158> Kalibrr


    We use Google's geocoding and place services to figure out the geographical location of jobs and candidates, to best match them.

  • Hubot

    #<User:0x00007ff536bfe4c8> Kalibrr


    We have our own special Hubot instance named kbot, that does everything from reminding us what to do, showing cat and corgi images, and notifying us of system errors.

  • New Relic

    #<User:0x00007ff536bcfdd0> Kalibrr


    We monitor and troubleshoot our app's performance using New Relic, which gives us a great view into each type of request that hits our servers. It also gives us a nice weekly summary of error rates and response times so that we know how well we've done in the past week.

  • Git

    #<User:0x00007ff536bce750> Kalibrr


    Source control. 'nuff said.

  • Stripe

    #<User:0x00007ff536bcd490> Kalibrr


    We use Stripe to process our credit card payments.

  • Apache Spark

    #<User:0x00007ff536bcc090> Kalibrr


    We use Apache Spark in computing our recommendations.

  • Twilio SendGrid

    #<User:0x00007ff536bca650> Kalibrr


    All of our external emails are sent using SendGrid. SendGrid's statistics dashboards help us figure out whether our emails are reaching people, and how much attention is paid to them.

  • Amazon S3

    #<User:0x00007ff536bc8d50> Kalibrr


    All file uploads go straight to Amazon S3 (with maybe some preprocessing). Amazon S3's cheap and easy-to-use, with no need to worry about disk space limits.

  • Amazon SES

    #<User:0x00007ff536bc7090> Kalibrr


    Our internal emails (such as exception notifications) are sent via Amazon SES, since it's cheaper than using Sendgrid. We also use Amazon SES as a fallback in case we have deliverability issues with Sendgrid.

  • PostGIS

    #<User:0x00007ff536bc5650> Kalibrr


    PostGIS makes it easy (and fast) to do geographic queries, such as nearest-neighbor and bounding box queries.

  • Redis

    #<User:0x00007ff536bc4110> Kalibrr


    We use Redis as a key-value store, a cache, and a message queue. It's a ridiculously fast and simple-to-maintain jack-of-all-trades.

  • Google Analytics

    #<User:0x00007ff536bc2310> Kalibrr


    We mainly use Google Analytics and our own internal analytics tools for our analytics.

  • jQuery

    #<User:0x00007ff536bc1410> Kalibrr


    jQuery's pretty useful for DOM manipulations within Angular directives. We're considering switching to a lighter-weight alternative though, such as Zepto.

  • Nexmo

    #<User:0x00007ff53023f640> Kalibrr


    We fall back to Nexmo when Chikka (https://api.chikka.com) and Semaphore (http://semaphore.co) have downtime or deliverability problems. Chikka and Semaphore are local (Philippine) SMS APIs handled by SMART and Globe, respectively, and report higher deliverability rates than Nexmo (at lower cost).