What's in a Templating Language, Part 2

By Jason Roelofs

In this post we take a deep dive into how Late implements parsing and evaluating a Late template. In what is often considered black magic, I’ll show that compilers are nothing more than lots of simple, easier-to-graps parts combined into larger complex systems.

What's in a Templating Language, Part 1

By Jason Roelofs

Templating languages are ubiquitous across software languages and ecosystems. There are so many to choose from, covering many different use cases and requirements, but have you ever wondered what it takes to build one? Using Shopify’s Liquid as a comparison case, I’m starting a new learning experiment to understand how these tools work and what it takes to implement them. This journey will see us diving into lexers, parsers, compilers, and evaluation, combining data with a template to produce a final document.

Securing the root user on macOS High Sierra

By Jason Roelofs

A developer in Turkey recently discovered that the High Sierra version of macOS has a serious vulnerability concerning the “root” user. Here’s what’s up and how to protect yourself.

Building Better Test Suites

By Jason Roelofs

Test suites are important tools to help ensure the correctness of your application, but the suites need to be architected, designed, and maintained to ensure the test suite itself doesn’t rot and become a burden. This post covers some high level concepts and architecture decisions that keep test suites maintainable.

Containers, Docker, and Kubernetes Part 3

By Jason Roelofs

You want to try out this Kubernetes thing but aren’t sure how to start? Great! In this post I go over how I structure my Kubernetes configs, how I apply them to clusters, how to deploy changes, and how to manage secret values.

Containers, Docker, and Kubernetes Part 2

By Jason Roelofs

You want to take the next step and move to containers, but still have some questions that Docker doesn’t answer? Take a look at Kubernetes, the container orchestration tool from Google!

Containers, Docker, and Kubernetes Part 1

By Jason Roelofs

You’ve heard of Docker and containers but are still not sure if they’re a good fit for your requirements. We take a look at the benefits and concerns of switching to containerized infrastructure.

Solutions to Potential Upgrade Problems in Rails 5

By Jason Roelofs

The Rails 5 upgrade has a few changes that may cause confusion. We look at how to get around the disabling of autoloading and look at the new deprecation warnings.

Modern Javascript and Rails

By Jason Roelofs

Want to write ES6 and/or use JSX or any of a vast array of modern Javascript tools in your Rails app? What about also writing your Javascript tests with the same tools? It’s easy with Browserify-rails and Teaspoon!

Bootstrap Your App

By Jason Roelofs

Insert your app’s bootstrapping into CI to ensure that setting up a new developer is one script invocation.

Encrypting Secrets with Chef Vault

By Jason Roelofs

Tools like Chef and Puppet make configuring servers repeatable and reliable. However, handling the private data, like server passwords and API access keys is still a difficult problem. Today we take a look at one solution available to the Chef community: Chef Vault.

Time to Bring Back Fixtures

By Jason Roelofs

Fixtures are great tools that have been sadly overlooked for a long time in the Rails world. Lets start using them again.

Recommended Security Setup for AWS

By Jason Roelofs

Amazon Web Services runs an every growing percentage of the Internet, which means AWS accounts are more so a target of those-we-will-not-name. This post outlines the recommended minimal setup we at Collective Idea now apply to every Amazon account to ensure sufficient security.

Selective Restore in MongoDB

By Jason Roelofs

MongoDB makes it really easy to selectively restore deleted or lost data from a backup dump without doing a full restore.

False positives on Travis CI with CodeClimate / SimpleCov

By Jason Roelofs

The latest version of SimpleCov has a bug that ignores test exit statuses.

Ruby 2 SSL Verification Failed?

By Jason Roelofs

Many users are having OpenSSL validation issues with Ruby 2.0 across various platforms. Turns out there are multiple issues at hand, each requiring different fixes.

Debugging Firefox Failures on Travis

By Jason Roelofs

When strange failures are plaguing Firefox during Travis CI test runs, get a hold of Travis Support, they’ll help you out!

Rack::Cache, tmp/cache, and running out of inodes

By Jason Roelofs

Rack::Cache + custom user content + multiple releases + time == dead servers.

Running HAProxy behind Amazon's ELB

By Jason Roelofs

You can run HAProxy behind Amazon’s ELB for increased control over traffic to your web servers. The following tweaks will help with stable, sustainable performance in such a setup.

Playing with Go: Embarrassingly Parallel Scripts

By Jason Roelofs

We can write parallel execution scripts in any language, but some work much better than others. Google’s Go makes embarrassingly parallel tasks almost trivial to write.

Tests Still Slow? Might be bcrypt!

By Jason Roelofs

How Google’s perftools led me to add a single line of code that cut test suite run times in half.

Keep your AWS environments separate with IAM users and groups.

By Jason Roelofs

Amazon’s IAM service lets you restrict and secure access to your AWS data and services to individual users or groups allowing you to have multiple environments (staging, production, etc) under the same AWS account without worry.

Where's Your Business Logic?

By Jason Roelofs

Can you point to a single place in your application and say “here is where we implement our business rules and use cases”, or are your use cases spread out across controllers, models, libs and elsewhere? Do you have fat models, fat controllers, and/or a massive lib directory? Is adding new features quick and easy or painful and time consuming? I have a solution to your pain.