Finding and Addressing Causes of Recent DNS Incidents
Explaining what caused the recent DNS incidents at DNSimple and how we've addressed those issues.
How to Automate SSL Certificate Installation using Chef and the DNSimple Cookbook
Stephen shows an example of how to configure a simple web server secured with SSL.
Script what you don't automate (so you can automate it later)
How we use continuous improvement to minimize maintenance and maximize repeatability.
Rockin' With Dokken
How and why we converted our Chef Cookbook testing to the kitchen-dokken plugin.
Controlling DNSimple with DNSControl
A dive in to how to use command line tooling to manage records alone or in teams.
Using GenStage with low volume data source
In our new Elixir project we needed to orchestrate various sequential processing steps. But does GenStage work for low-volume processing too?
Put down that ENV; what you should know about ENV configuration
An exploration of the usage and limitations of ENV (environment variables) in configurations.
DNSimple API v2 OpenAPI definition in depth
Let's dive deep into the OpenAPI v3 definition of the DNSimple API and see what lies within.
Phoenix performance metrics within the browser developer tools
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.
Adopting OpenAPI to describe DNSimple API v2
We're adopting OpenAPI as a way to define and document the DNSimple API. Read on to find out how and why.
Why we are starting with Vue.js now
We ran a little experiment and we are excited to improve your user experience with Vue.js
Paying Back Technical Debt
Systems grow and evolve over time, accruing technical debt at varying speeds. Here's what we are doing about our technical debt at DNSimple.
Automated green/blue deploys with Hubot
Shipping code is the most crucial moment in building things. That post outlines how we imporved the engineering experience in shipping code tough Hubot.
Bug Tales: An L that matters
L is nothing more than a letter but it can also be the source of bugs.
How to test Go HTTPS Services
An overview about how to write unit, and integration tests for Go HTTPS Services.
Slack App Usage Tracking
How we did the simplest thing that could possibly work to track usage in the DNSimple Slack app.
Writing composable community Chef cookbooks: learning the new cookbook DSL
This is what we learned when we rewrote our open source PowerDNS cookbook using the latest techniques.
Create the tools that you need
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.
API v2 Architecture and Hanami
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.
Pushing Performance with Tuning
So you have troubleshooting theory down, but how do you fix what isn't actually broken?
Using shared examples and shared context in infrastructure testing
How to use shared_examples and shared_context in ChefSpec.
Package all the things!
Make your software deployments with Chef a lot simpler by packaging all the things!
Migrating scheduled tasks from Clockwork to Sidekiq Enterprise
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.
Bug Tales: Trust nothing but the real thing
A story of a bug, what we did to fix it and how we prevent it from happening again.
Writing Ruby gems with Rust and Helix
Learn how to write faster Ruby gems with Rust and Helix.
Tales of a Chef Workflow: Data Bags
Data bags are a useful, but sometimes dangerous feature of Chef.
Registering a domain from Elixir
A step by step guide to successfully register a domain name using the Elixir language.
Tales of a Chef Workflow: Attribute Layering
Lessons learned about attributes from years of working with Chef.
Tales of a Chef Workflow: Cookbook Organization and Maintenance
Lessons we've learned by organizing our cookbooks including proper naming and maintenance tasks.
Checking domain availability in Elixir with the DNSimple API
How to check if a domain name is available to be registered using Elixir and the DNSimple API.
Why we ended up not using Rails for our new JSON 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.
Using the Go language to guide development design decisions
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.
The mystery of Stunnel, ulimits, and maximum open clients
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.
Getting started with the DNSimple API in Elixir
A step by step guide to successfully make your first DNSimple API call from Elixir.
Tales of a Chef Workflow: Packaging
How to escape the anti-pattern of building packages from source in Chef Cookbooks.
Ruby Coercion Protocols Part 2
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 journey of simplifying our CSS
The steps that we are taking to simplify and ship faster projects with less CSS.
API Client Testing with HTTP Fixtures
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 Coercion Protocols Part 1
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.
Building the DNSimple Slack app
A few months ago we released the DNSimple Slack app. This is how we built it and the challenges we faced.
Improve your Dev and Ops skills with Troubleshooting Theory
How to use basic troubleshooting theory to debug your code, your infrastructure, or your malfunctioning computer or router at home.
Purposes & Properties of Value Objects
What is and what makes a good Value Object? Learn how to implement their fundamental purposes and properties.
Overcoming Primitive Obsession
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.
Alerting at DNSimple
Effective monitoring and alerting can be difficult; here is how we handle it at DNSimple.
Learn the DNSimple API by Bulding a CLI in Golang
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.
Nil is a value
Lessons learned from a recent bug in our code, caused by nil not being handled as proper value.
How I use the DNSimple Chef Cookbook
Amelia shows off some examples of the newly updated DNSimple cookbook.
Auto-publishing a static site to CloudFront using Travis
Instructions to deploy a static-generated site (Jekyll, Nanoc, ...) to Amazon CloudFront or S3 using Travis.
Operating Distributed Systems at DNSimple
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.