Blog

Developer Diary

Notes from the process of building a git-native feature flag platform.

June 7, 2026

Developer Diary: Quonfig SDKs are 1.0.0

Every Quonfig SDK and OpenFeature provider is now 1.0.0 and semver-stable. Here's the full surface that's ready for your production workloads — nine SDKs, seven OpenFeature providers, multi-region delivery, and a local-first dev loop that needs no account.

Read post
May 24, 2026

Developer Diary: May 24, 2026

Datadir auto-reload across every backend SDK, a fully-local no-account workflow, qfg serve for browser SDKs, a clean version matrix after thirteen releases, and a pile of CLI papercuts knocked out during a live migration.

Read post
May 17, 2026

Developer Diary: May 17, 2026

A full chaos-testing pass across every SDK, the LaunchDarkly migrator landing with a real conversion report, pack-push CLI shipped end-to-end, and fit-and-finish on the eval charts. Running out of things to add — which is exactly where I want to be.

Read post
May 10, 2026

Developer Diary: May 10, 2026

First real customer migrations off Launch, a Cmd-K palette that gets you to any flag in two keystrokes, the Java SDK is back, and metered billing wired end-to-end through Stripe.

Read post
May 3, 2026

Developer Diary: May 3, 2026

Customer dress-rehearsal migrations, atomic push-conflict detection, multi-org CLI auth, restore-from-tombstone in the UI, and a hardened CI matrix on every SDK. Ready to try.

Read post
April 26, 2026

Developer Diary: April 26, 2026

A two-host delivery split, load tests holding 9k concurrent connections, self-serve workspace creation from the CLI, dev overrides, Slack, and the close-out of the Launch migrator — all aimed at letting people try Quonfig on May 1.

Read post
April 19, 2026

Developer Diary: April 19, 2026

ForceRank.it in production on Quonfig, load testing to 8k SSE, a real qfg migrate CLI, Ruby client bootstrapping, OpenFeature reasons, and one-click restore for deleted flags.

Read post
April 12, 2026

Developer Diary: April 12, 2026

A quick weekly update on observability, OpenFeature, code generation, the Python client, the React SDK, and a lot of product polish.

Read post
April 5, 2026

Why Quonfig: A Developer Diary

I spent years building a feature flag platform backed by a database. Then I tore it all down and rebuilt it on git. Here's where things stand.

Read post
September 24, 2024

Dynamic Logging in FastAPI with Python

Change python logging levels for uvicorn and FastAPI without restarting the server

Read post
September 24, 2024

Our Experience using Fastly's Streaming Miss feature For Server Sent Events (SSE)

Our Experience using Fastly's Streaming Miss feature For Server Sent Events (SSE) (push messaging)

Read post
September 6, 2024

A Faster Google Tag Manager

Google Tag Manager serves a useful purpose, but it's fundamentally not as fast as you'd like. Dynamic configuration can fix that.

Read post
April 25, 2024

Modeling Usage Based Billing with Stripe

Real example of breaking down a pricing page and modeling the prices and products in stripe for a usage based products with code examples.

Read post
April 25, 2024

Usage Based Billing with the new Stripe Meters

Stripe launches Meters for improved usage based billing. What problems does it solve and how does it work.

Read post
March 28, 2024

Dynamic Ruby Log Levels With Semantic Logger

Refactoring dynamic logging to use the excellent SemanticLogger gem so you can change ruby and rails logs without restarting.

Read post
March 21, 2024

A Ruby on Rails OOM Mystery: The Case of the Hungry Hippo

Explore the interaction of rails, puma, workers and kubernetes as we track down some 137 oomkilled kubernetes errors

Read post
February 14, 2024

LSP: What Language Should I Choose For Writing a Language Server?

If you're just starting the LSP, you might wonder what language to build your Language Server (LS) with. This article will help you pick the right language.

Read post
January 10, 2024

Change Log Levels Instantly In Node

How can you change log levels in your express app? Debugging functions is much easier if you can get debug output, but how can we enable that? Dynamic logging is the answer.

Read post
December 4, 2023

Towards Better Configuration & Environment Variables

A better way to manage environment variables for apps in local development, staging, and production. Particular for microservices or with multiple languages.

Read post
November 27, 2023

9 Things I Hate About Environment Variables

ENV Vars were great, but we can do better. A better way to manage environment variables for apps in local development, staging, and production

Read post
November 20, 2023

Before You Lograge

Better alternatives to lograge for rails logging gems in 2024. Comparing Lograge to dynamic logging and Semantic Rails Logger.

Read post
October 23, 2023

LSP: Writing a Language Server in Bash

Implementing a language server is so easy that we're going to do it in Bash.

Read post
September 19, 2023

TL;DR: Origin Response Headers In Fastly Logs

How to break down CDN usage by customer. Getting a stream or response headers from Fastly CDN logs

Read post
September 19, 2023

Structured Logging for Ruby and Rails

How to use structured logging in Ruby or Rails for logs that are easy to search and analyze

Read post
September 18, 2023

TL;DR: Targeting Datadog Slack Alerts to Different Channels By Environment

How to target different slack channels for datadog alerts from different environments

Read post
September 14, 2023

Hands-On LSP Tutorial: Configuration

Continuing in our LSP series, learn how to provide configuration to your language server from your editor.

Read post
September 12, 2023

Hands-On LSP Tutorial: Building a Custom Auto-Complete

Learn how to build a Language Server using the Language Server Protocol (LSP) with this getting started tutorial. The example will make dynamic links to our github issues. Learn how to integrate with your language server with editors like VS Code and Neovim, and dynamically link to GitHub issues and PRs.

Read post
September 11, 2023

Let's talk Tagged Logging vs Structured Logging in Ruby or Rails

Tagged Logging and Structured Logging or structlog and how to use them in Ruby or Rails

Read post
September 5, 2023

Dynamically Changing log4j or logback log levels in Java

Change log4j, log4j2 or logback log levels dynamically without restarting

Read post
August 18, 2023

Making Front End Logging Useful

How to get meaningful signal from front-end logging with transports, context, and dynamic targeting -- without paying for an avalanche of noise.

Read post
August 10, 2023

Time-traveling Ruby Logger

Build a Ruby logger that captures debug-level detail but only writes it when a request fails — by deferring the log level decision until the end.

Read post
August 10, 2023

Friends Don't Let Friends Use PostgreSQL Dialect Google Spanner

Google Spanner comes in two flavors, GoogleSQL(an ANSI-compliant SQL) and PostgreSQL. We've found that GoogleSQL is the better choice.

Read post
June 20, 2023

Gem install sassc is always going to be slow. Your Docker builds don't have to be.

An open issue has made gem install sassc slow to compile for years. Here's a trivial Dockerfile change that keeps it from wrecking your Docker layer cache and saves minutes per build.

Read post
April 24, 2023

From Debug to Panic - Comparing Log Levels Across Top Languages

A lighthearted tour of the log levels available in Java, Go, Elixir, Node, Ruby, Python, PHP, C#, Rust, Kotlin, Swift, Scala and more — comparing their quirks and similarities.

Read post
April 18, 2023

Log Levels Are Useless, Or Are They…

What should you log, and at what level? The classic answer assumes changing log levels is painful. When it isn't, the whole debate changes.

Read post
April 11, 2023

Changing Log Levels At Runtime - Rails

Change the log level of a running Rails application dynamically, with targeting, and without an SSH-and-restart dance.

Read post
February 1, 2023

Micrometer Gauges, Datadog and Kubernetes

Why a Micrometer gauge flaps between values when multiple Kubernetes pods report the same metric to Datadog — and how to fix it with per-pod common tags.

Read post