How we use continuous improvement to minimize maintenance and maximize repeatability.
How and why we converted our Chef Cookbook testing to the kitchen-dokken plugin.
A dive in to how to use command line tooling to manage records alone or in teams.
A retrospective of the last two years where we adopted --squash as our default merge strategy for git branches.
In our new Elixir project we needed to orchestrate various sequential processing steps. But does GenStage work for low-volume processing too?
An exploration of the usage and limitations of ENV (environment variables) in configurations.
Let's dive deep into the OpenAPI v3 definition of the DNSimple API and see what lies within.
In this post we discuss how to measure basic performance metrics with Elixir Phoenix and display them in the browsers developer tools using the Server-Timing API.
We're adopting OpenAPI as a way to define and document the DNSimple API. Read on to find out how and why.
We ran a little experiment and we are excited to improve your user experience with Vue.js
Systems grow and evolve over time, accruing technical debt at varying speeds. Here's what we are doing about our technical debt at DNSimple.
Shipping code is the most crucial moment in building things. That post outlines how we imporved the engineering experience in shipping code tough Hubot.
L is nothing more than a letter but it can also be the source of bugs.
An overview about how to write unit, and integration tests for Go HTTPS Services.
How we did the simplest thing that could possibly work to track usage in the DNSimple Slack app.
This is what we learned when we rewrote our open source PowerDNS cookbook using the latest techniques.
We scratch our own itch by scripting a small thing that let's us know if our freshly created DNS records are ready for us to access.
One of the goals of the API v2 was to develop a maintainable solution without sacrificing performance; this is how we use Hanami at DNSimple to achieve that goal.
So you have troubleshooting theory down, but how do you fix what isn't actually broken?
How to use shared_examples and shared_context in ChefSpec.
Make your software deployments with Chef a lot simpler by packaging all the things!
In this post I explain our decision to migrate from Clockwork to Sidekiq Enterprise, and how we used our application metrics to determine the success of the project.
A story of a bug, what we did to fix it and how we prevent it from happening again.
Learn how to write faster Ruby gems with Rust and Helix.
Data bags are a useful, but sometimes dangerous feature of Chef.
A step by step guide to successfully register a domain name using the Elixir language.
Lessons learned about attributes from years of working with Chef.
Lessons we've learned by organizing our cookbooks including proper naming and maintenance tasks.
How to check if a domain name is available to be registered using Elixir and the DNSimple API.
After a few years of running our previous API in production, it no longer fit our domain management automation vision. This is the story of how we evolved the API to support our product vision.
In this talk transcript you'll discover why Go was so important to us and why it was used to guide the development design decisions.
We use Stunnel to provide secure encryption to our redis instances. Recently we embarked on a voyage deep down the rabbit hole in order to fix an elusive error. This is the story of how fixed it.
A step by step guide to successfully make your first DNSimple API call from Elixir.
How to escape the anti-pattern of building packages from source in Chef Cookbooks.
What's the difference between `#to_i` and `#to_int`? How to sum two value objects? Let's learn Ruby Coercion Protocols in depth.
The steps that we are taking to simplify and ship faster projects with less CSS.
As part of the development of the DNSimple API v2 we introduced HTTP fixtures as a way of testing behavior across multiple clients. Here is how it works.
Ruby has powerful protocols to coerce a type into another one. We'll learn how to take advantage of this mechanism to make our code open for extension.
A few months ago we released the DNSimple Slack app. This is how we built it and the challenges we faced.
How to use basic troubleshooting theory to debug your code, your infrastructure, or your malfunctioning computer or router at home.
What is and what makes a good Value Object? Learn how to implement their fundamental purposes and properties.
Ruby primitives are so powerful that we use them everywhere in our code, even when we shouldn't. Learn how to overcome this kind of maintenance problems.
Effective monitoring and alerting can be difficult; here is how we handle it at DNSimple.
Ready to automate your domain management? This post will walk you through connecting to the DNSimple API and performing basic domain operations with the official DNSimple Go API Client.
Lessons learned from a recent bug in our code, caused by nil not being handled as proper value.
David shows off some examples of the newly updated DNSimple cookbook.
Instructions to deploy a static-generated site (Jekyll, Nanoc, ...) to Amazon CloudFront or S3 using Travis.
We operate DNSimple across 5 data centers, this post covers some of the challenges we face, how we handle them today, and what the future may hold.
In this article I will try to explain the technical reason behind the ALIAS record and important limitations of the CNAME record you need to know.
An overview of how we switched the implementation of our redirector from Ruby to Go.