Blog Posts

Article featured image
DNS-over-HTTPS: Privacy and Security Concerns

September 04, 2019 — New DNS privacy standards (DoH and DoT) have been published by the IETF. DNS also has had backwards-compatible security extensions added via DNSSEC, for several years. This post examines the browser-supported DoH and compares it to DoT, and examines privacy, security, and risks. Read More »

Article featured image
Kubernetes Gated Deployments

August 13, 2019 — Kubernetes Gated Deployments is a Kubernetes controller that facilitates automatic regression testing and canary analysis on Kubernetes deployments. It is designed to augment existing deployment processes by analyzing key functionality and performance metrics associated with the application, and can detect and roll back changes if they cause undesirable behavior. Read More »

Article featured image
Using Deep Learning for Domain Name Valuation

July 26, 2019 — How we built GoDaddy Domain Appraisals (GoValue) with deep neural networks and achieved accuracy better than a human expert. Read More »

Article featured image
Secrets, GPG, BlackBox, and Docker - an Experimental Approach

July 19, 2019 — This article describes an experimental approach on how Blackbox and Docker can be used in combination to manage secrets. Read More »

Article featured image
A Simple CNN Classifier for Domain Name Industrial Market Segmentation

July 16, 2019 — A real-world example that develops a multi-class Convolutional Neural Network (CNN) Classifier that works well on very short texts -- domain names. Read more to see how we dealt with the noisiness in the data, clarified the project goal and improved the model iteratively. Read More »

Article featured image
Asherah: An Application Encryption SDK

July 09, 2019 — Enterprise data encryption is difficult, error-prone and problematic to scale. In particular, managing key rotation and limiting the blast radius of a leaked private key are difficult problems. GoDaddy is releasing its proposed solution to this problem as open source. It's an Application Encryption SDK called Asherah. Asherah's foundational principle is that you plug in your choice of key management services and then use it to manage your hierarchical key set and encrypt data using a method known as envelope encryption. We're an incubator project and currently in a request-for-feedback phase as we test the implementation internally. Read More »

Article featured image
React Native Community contribution

June 17, 2019 — GoDaddy contributed to the lean-core initiative by extracting and merging the DatePicker and TimePicker components so that we could us them in our mobile app. The new Component has fewer platform-specific implementations and is easier to maintain and use. Read More »

Article featured image
Testing React-Native using ekke

May 22, 2019 — Introducing `ekke`, a new, unique test runner for React-Native. It allows you to execute your test code directly on the device, eliminating the need for imperfect mocks and enabling you to test in the same environment as your production users. Read More »

Article featured image
Creating the Domain Connect Standard

April 25, 2019 — Domain Connect is an open standard that makes it easier for users of services like Squarespace or O365 to configure DNS without having to understand the details. The protocol involves two parties. The first is the Service Provider whose user wants to configure DNS to enable the service, and the other is the DNS Provider. The most immediate reaction to it is usually 'This is a no-brainer'. But how did it get created and evolve? How can it help others? Read More »

Article featured image
Kubernetes External Secrets

April 16, 2019 — Engineering teams at GoDaddy use Kubernetes with secret management systems, like AWS Secrets Manager. "External" secret management systems often provide useful features, such as rotation, that the native Kubernetes Secret object does not support. Kubernetes External Secrets is a new open source project that introduces the ExternalSecret object type. With an ExternalSecret object, an engineering team can manage its secret data in an external system and access that data in the same way they would if they were using a Secret object. Read More »

Article featured image
Creating better examples with @exemplar/storybook

April 09, 2019 — We're announcing the release of @exemplar/storybook! Exemplar is a way to write examples for your React components with less boilerplate storybook config. Do more by writing less. Read More »

Article featured image
Making React HOC functions the easy way with addhoc

April 02, 2019 — As defined in the React documentation, a higher-order component, or HOC, is a function that returns a React component that wraps a specified child component and often provides augmented functionality. Implementing HOCs can be hard when considering hoisting statics, managing ref forwarding, and handling display name. addhoc is a newly released open-source package that aims to handle these challenges for you. Read More »

Article featured image
Dynamic Configuration for Node.js Applications

March 06, 2019 — Dynamic configuration is a powerful tool for software applications. Use it to solve problems like authorization, feature flags, and A/B tests, in addition to normal application configuration. See how GoDaddy uses a library called flipr to achieve this for some of its Node.js applications. Read More »

Article featured image
Connecting an On-Premises Data Center to AWS with HA Software VPN Tunnels

February 26, 2019 — When our team started to deploy our services to Amazon cloud, there was a demand to connect from Amazon VPC back to our On-Premises data center. This post describes how we build HA software VPN tunnels. Read More »

Article featured image
Interfaces and Metaclasses in Python

December 20, 2018 — Python's metaclasses are an obscure and often misunderstood feature of the language. This post introduces readers to metaclasses hands-on by implementing interfaces, motivated by Python's abstract base class, or ABC. Read More »

Article featured image
require-suffix - Testing Without Custom Loaders

December 14, 2018 — require-suffix is an opensource package to shim Node.js's require to optionally load different files based on platform and file extensions. It ships with custom presets for handling ios, android, and native files targeting react-native. Read More »

Article featured image
Data pipeline job scheduling in GoDaddy: Developer’s point of view on Oozie vs Airflow

November 15, 2018 — This blog discusses the pros and cons of Oozie and Airflow to help you choose which scheduler to use for your data pipeline jobs. It also contains a sample plugin which implements the Airflow operator. Read More »

Article featured image
Engaging Daily Scrum Meetings

November 13, 2018 — When team members become disengaged in a daily scrum meeting, it can be easy to question the value of the ceremony. By committing to decrease siloing and help each other with blockers, a team can achieve a more healthy culture and become more engaged in each others' progress. Read More »

Article featured image
Move over Selenium - UI Testing with Cypress

November 06, 2018 — Cypress is a relatively new front end testing tool that can be used for your UI testing needs. Selenium brings some challenges to UI testing that Cypress aims to solve through a better developer experience. Read More »

Article featured image
Reduxful: Manage RESTful data with Redux

November 05, 2018 — Introducing Reduxful, an open source project which aims to reduce the boilerplate for managing RESTful data with Redux by generating actions, reducers, and selectors for you. Read More »

Article featured image
Lighthouse4u - A Google Lighthouse as a service production

October 28, 2018 — Lighthouse4u is an opensource API for running Google Lighthouse tests at any scale, backed by Elasticsearch and Kibana for your search and visualization needs. Read More »

Article featured image
Distributed cron for Rails apps with Sidekiq Scheduler

October 15, 2018 — In some of our Ruby on Rails applications, we have migrated from using OS based cron to distributed cron using Sidekiq Scheduler. We will discuss the motivation for this change and the benefits from it. Read More »

Article featured image
Mocking SOAP APIs in functional tests using Nock

October 02, 2018 — This post explains why and how to mock the external REST and SOAP APIs in the functional tests of a service written in NodeJS to have a more robust CICD. In this post, We will write a simple functional tests and mock the external API using `nock` node module. Read More »

Article featured image
Implementing a custom Redis and in-memory bloom filter

September 11, 2018 — In our email marketing products, we changed our bloom filter implementation by using a custom Redis and an in-memory bloom filter written in Ruby. We will go through iterations at solving a real problem and writing a custom bloom filter from scratch. Read More »

Article featured image
Making mocking mistakes in Python

September 04, 2018 — Python mocking is tricky. See if you can diagnose and correct four example mocking mistakes, all of which I've made while learning the mock library in the past few months. Read More »

Article featured image
Eliminating Boilerplate and Increasing Reusability with Higher-Order Reducers

August 24, 2018 — My team has changed the way we write our redux reducers, choosing a more dynamic approach than the common switch statement. Creating reducers with higher-order factory functions gives us some great benefits. They can make the process of writing reducers faster and they're also flexible functions that can be used to generalize patterns and reduce repetition. Read More »

Article featured image
Real User Performance Measuring for Next.js

August 21, 2018 — With the introduction of navigation timing in browsers it has become a lot easier to measure performance of your front-end application. With the introduction of the `next-rum` component you will be able to gather the same metrics for your Next.js based application as well. Read More »

Article featured image
React Native Application UI testing using WebDriverIO and Appium

July 09, 2018 — We recently adopted WebDriverIO based UI testing for our React Native application. Benefits of using WebDriverIO include allowing us to write UI tests just as we wrote tests for the web. WebDriverIO configuration allows us to plugin Sauce Labs Emulators or Real Devices for cloud-based testing. Read More »

Article featured image
GoDaddy and Amazon EKS

June 28, 2018 — GoDaddy's engineering teams need a robust solution for running container-based workloads. Amazon EKS gives us a shared responsibility service model that minimizes operational complexity and delivers the powerful benefits of running on Kubernetes. Read More »

Article featured image
A build monitoring plugin for Jenkins

June 19, 2018 — We recently built a plugin to automatically monitor the health of our Jenkins builds. This article talks about how and why the plugin was built, and describes how it works at a high level. Read More »

Article featured image
Announcing winston@3.0.0!

June 12, 2018 — After several years the winston team is happy to announce the latest version – 3.0.0! Learn more about the latest version of the most popular logging library for Node.js along with what Node.js LTS means to maintainers of popular npm packages. Read More »

Article featured image
Jenkins Best Practices - Practical Continuous Deployment in the Real World

June 05, 2018 — This post describes how we use best practices for CICD pipelines using Jenkins. Read More »

Article featured image
jiractl: A command-line tool for managing Jira

May 15, 2018 — This post introduces jiractl, a command-line tool for managing Jira. We provide some instructions on how to set up and use jiractl. Read More »

Article featured image
UI Testing: moving from WebdriverIO and Selenium to Puppeteer

May 07, 2018 — When our team was losing engineering hours to Selenium-related test flakiness, we switched to Puppeteer for some of our UI tests. Given our constraints, we found that Puppeteer had a better developer experience and that the similar syntaxes of the two frameworks made the switch easy. We recommend Puppeteer for projects that do not need cross-browser compatibility. Read More »

Article featured image
Kubernetes - A Practical Introduction for Application Developers

May 02, 2018 — A collection of resources / best practices that help you become a more productive developer working with Kubernetes. Read More »

Article featured image
An Intuitive Node.js Client for the Kubernetes API

April 10, 2018 — This post explains the motivation for and design of kubernetes-client. We provide an short example on how to write your custom Kubernetes extentions using Node.js and kubernetes-client. Read More »

Article featured image
Isomorphic Asset System for React and React-Native

April 04, 2018 — Introducing Asset System a cross platform asset rendering system for React and React-Native using SVG's. Read More »

Article featured image
Introducing a fully extendable eslint plugin for JSON i18n translation files

April 02, 2018 — Many web apps harness internationalization through frameworks such as React-Intl. This is awesome for the web and helps web apps obtain a global reach. Read More »

Article featured image
Health Checks and Graceful Shutdown for Node.js Applications

February 22, 2018 — Your application is serving requests constantly for your users. You and your team want to ship features and fixes as soon as they are ready, so you do continuous delivery. But what happens to your users who used your product at the time of the deployment? Chances are, the requests they have in progress are going to fail. This post helps you fix that. Read More »