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.
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.
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.
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.
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.
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!
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.
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.
Insert your app’s bootstrapping into CI to ensure that setting up a new developer is one script invocation.
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.
Fixtures are great tools that have been sadly overlooked for a long time in the Rails world. Lets start using them again.
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.
MongoDB makes it really easy to selectively restore deleted or lost data from a backup dump without doing a full restore.
The latest version of SimpleCov has a bug that ignores test exit statuses.
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.
When strange failures are plaguing Firefox during Travis CI test runs, get a hold of Travis Support, they’ll help you out!
Rack::Cache + custom user content + multiple releases + time == dead servers.
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.
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.
How Google’s perftools led me to add a single line of code that cut test suite run times in half.
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.
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.