Tim Lucas
toolmantim
Co-Founder, Designer | Tim Lucas
Recent Tech Decisions
76 points

Companies
Following

  • Papertrail

    toolmantim Learn Brush Lettering


    Papertrail is sent logs via Heroku log drains, and provides centralised logging of both the web and background workers for debugging errors and spelunking into logs.

  • Docker

    toolmantim Learn Brush Lettering


    Docker is used to containerise the application for testing via Buildkite.

  • GitHub

    toolmantim Learn Brush Lettering


    GitHub was where both technical and non-technical people collaborated on the source code, and was used with Buildkite and Heroku’s integrations for testing and deployment. Non-tecnical people on the project used GitHub’s web UI to update markdown files, replace images, and help edit typos and copy.

  • DigitalOcean

    toolmantim Learn Brush Lettering


    A small droplet using the one-click Ubuntu+Docker supported the Buildkite agent for CI testing via Docker Compose.

  • PostCSS

    toolmantim Learn Brush Lettering


    PostCSS handles compiling node-based CSS libraries, including BassCSS (the whole site is only ~85 lines of custom CSS). It also does auto-vendor-prefixing and support for CSS variables.

  • Wistia

    toolmantim Learn Brush Lettering


    Wistia provides absolutely pro video embedding. We could have multiple people uploading and managing videos, total player customization, built-in Google Analytics video event tracking, a Javascript API for posting our own Intercom events, and tools to protect the videos for paying customers only.

  • Sidekiq

    toolmantim Learn Brush Lettering


    Background processing of Pushover push notifications to admins when sales occur, payments processing via Pin Payments, Campaign Monitor transaction email sending, and Intercom event API posting.

  • Heroku Redis

    toolmantim Learn Brush Lettering


    Storage backend for background processing via Sidekiq

  • Heroku Postgres

    toolmantim Learn Brush Lettering


    Rock solid transactional storage of user, purchase and course activity data. During development database dumps were easy to create and download locally for testing.

  • Heroku

    toolmantim Learn Brush Lettering


    Heroku runs the web and background worker processes. Auto-deployments are triggered via GitHub commits and wait for the Buildkite test build to pass. Heroku pipelines with beta release phase execution (for automatically running database migrations) allowed for easy manual testing of big new releases. Web and worker logs are sent to Papertrail.

  • Campaign Monitor

    toolmantim Learn Brush Lettering


    Campaign Monitor handles the subscriber lists as well as all the transactional emails (the signup welcome email, and the course purchase thank you email). Emails are tracked and edited directly in Campaign Monitor without needing to modify the Rails application, and allow non-tech admins to check email deliveries and reattempt emails.

  • Intercom

    toolmantim Learn Brush Lettering


    Intercom powers both the email support, and support via the inline message window on the web. Custom events are sent from both the browser via click and Wistia video events, as well as from the Rails application, to give a complete view of user activity from within Intercom. Intercom let us segment the users based on trialling, purchased, and levels of engagement.

  • Buildkite

    toolmantim Learn Brush Lettering


    Buildkite provides testing of the Rails application via a Docker container with Docker Compose. The Buildkite Agent runs on a small Digital Ocean droplet, runs the integration and model tests, and marks the GitHub commit for Heroku to perform their auto-deployments once the build is green.

  • Ruby

    toolmantim Learn Brush Lettering


    Because happiness. Testing via RSpec (mostly model and request specs), Factory Girl for fixtures, VCR for testing API responses, timecop, Redcarpet for Markdown rendering, Intercom gem for posting events.

  • Rails

    toolmantim Learn Brush Lettering


    Rails 5 (beta 3) provided a nice structure for rendering responses, linking to front-end assets (compiled previously via Webpack), handling sessions w/ tailor made login links via an email button/token, background jobs, and creating an admin behind basic auth to allow managing of users and purchases.

  • CloudFlare

    toolmantim Learn Brush Lettering


    Cloudflare sits in front of the entire site providing HTTP2 and HTTPS, which is particularly important due the large number of SVG images for the headings that need to be send down to the browser in parallel. Cloudflare also manages the DNS for DKIM TXT records, a dynamic root ALIAS record to the Heroku application, and GeoIP country headers.

  • Google Analytics

    toolmantim Learn Brush Lettering


    Google Analytic is setup with user id tracking, allowing to view traffic for logged in users only, as well as custom events based on video watching and conversion goals for purchases. The Google’s autotrack plugin provides additional tracking of click events.

  • Bugsnag

    toolmantim Learn Brush Lettering


    Bugsnag provides Rails and Sidekiq error tracking with email notifications on exceptions.