Skip to main content
Ben Nadel at cf.Objective() 2009 (Minneapolis, MN) with: Kurt Wiersma and Peter Farrell
Ben Nadel at cf.Objective() 2009 (Minneapolis, MN) with: Kurt Wiersma Peter Farrell

Feature Flags Book Playground, Videos, And Code

By
Published in Comments (2)

As a companion piece to my Feature Flags Book, I've created a feature flags playground to provide my readers with some lightweight hands-on experience. It's great to read about a concept in a book. But, some concepts don't become tangible until you can roll your sleeves up and get little bit dirty. This feature flags playground gives people an opportunity to define feature flags, add rules, target cohorts, and incrementally release new features to a demo user-base. The primary goal of this playground is to add dimension to the content of the book; but, if you want to see the underlying code, I've made it all available on GitHub—it's built in ColdFusion, Parcel.js, Alpine.js, and Less CSS and runs on Docker.

Read the Book

Log into the Playground

View the Code on GitHub

As the person who wrote the feature flags book and built the feature flags playground, the user interfaces seem very intuitive. But, I know that I 100% suffer from a knowledge bias. And that many people who log into the app for the first time will have no idea what to do. As such, I've created video commentary that attempts to add color to each of the primary interfaces within the app.

This video commentary is available within the app; but, I'm reproducing it here in an effort entice people to go check it out.

Features: Product Development Walk-Through

This page illustrates the way in which feature flags can be woven into a team's product development workflow. By separating the concept of deployment from the concept of release, it gives the engineering, product, and design teams a way to safely iterate on a feature in production. And then, gradually release the feature to an increasingly wider audience.

Features: List

This page provides a high-level overview of the current feature flags, including the relative distribution of each feature flag variant across the demo users and environments. Additionally, any feature flags that are serving the same variant in all environments are highlighted for removal.

Features: Create New Feature Flag

This page provides a way to create a new feature flag with a default selection resolution. Any additional targeting can be defined after the feature flag is created.

Features: Remove All Rules

This page provides a way to remove all of the rules from all of the feature flags; and resets each feature flag back to using its default selection resolution.

Features: Reset Demo Configuration

This page provides a way to reset all of their feature flags playground data. This, essentially, deletes and then re-creates your demo data.

Feature: Targeting

This page showcases the current configuration for the given feature flag across all environments. It also provides a high-level view into how the current configuration affects the variant allocation across the demo users.

Feature: Default Resolution

This page provides a way to change the default resolution for the given feature flag in the given environment. The default resolution determines how feature variants are allocated before any subsequent rules are evaluated.

Feature: Rules Enabled

This page provides a way to enable or disable the rules for the given feature flag in the given environment. When rules are disabled, only the default resolution will be used when allocating feature flag variants.

Feature: Rule

This page provides a way to configure a rule for the given feature flag in the given environment. The rule will only be evaluated during feature flag variant allocation if rules are enabled in the given environment.

Feature: Clear Rules

This page provides a way to remove all the rules from a given feature flag; and reset the feature back to using the default selection resolution.

Feature: Delete Rule

This page provides a way to delete the given rule from the given feature flag's evaluation pipeline.

Staging: Feature Matrix

This page provides a high-level overview of the feature flag variant allocation across all features, environments, and demo users.

Staging: User

This page provides a high-level overview of the feature flag variant allocation for the given demo users.

Staging: Variant Explanation

This page provides a detailed explanation as to why a given variant was ultimately selected for the given feature flag, environment, and demo user.

Demo Users

This page lists all of the demo users that can be targeted in the feature flags playground. In addition to the core set of demo users, the authenticated user is also given a team consisting of several users that all share the same email address domain.

I believe that feature flags are one of the most valuable tools in my developer toolbox. When I learned about them, it fundamentally changed the way that I approach product developer; and filled with a sense of confidence and security like nothing had previously. My goal with the book and with this playground is to pique your curiosity; and hopefully inspire you to start bring feature flags into your own product development teams.

If you made it this far in the post, you rock! Here's a coupon to get 25% off the book when purchased through GumRoad: DEMO25.

Reader Comments

44 Comments

Just WOW! This is so in-depth and honestly, should have its own website, not just a blog entry. I wish more authors/developers/creators built sites like this to truly explain things. (Think Traefik, etc.)

Great job, Ben!

15,902 Comments

@Will, thank you for the very kind words 😊 This started out as something small, and then just kind of ballooned into a multi-month effort. I feel pretty good about how it came out, and I think some of the stuff that I added in the last month or so really rounded it out nicely (the product-development walk-through and the videos, especially).

Post A Comment — I'd Love To Hear From You!

Post a Comment

I believe in love. I believe in compassion. I believe in human rights. I believe that we can afford to give more of these gifts to the world around us because it costs us nothing to be decent and kind and understanding. And, I want you to know that when you land on this site, you are accepted for who you are, no matter how you identify, what truths you live, or whatever kind of goofy shit makes you feel alive! Rock on with your bad self!
Ben Nadel