Yes, feature flags are conflated with remote configs (or its more useful variety: "dynamic configs"). The difference is subtle, hence why people are talking past each other.
Feature flags are gates for whether a piece of code runs; basically, an if-condition. Remote configs are a mechanism for changing runtime values without redeploying[1].
For example:
# Feature flag — variant gate for rollout
flag = sdk.check_gate(user, "checkout_flow")
if flag == 'open':
render_new_checkout()
elif flag == 'warning':
render_warning_checkout()
else:
render_old_checkout()
# Raw remote config pulled — structured values for tuning behavior
config = sdk.get_config(user, "checkout_settings") # if the config changes based on user or context, this "remote" config is considered "dynamic"
timeout_ms = config.get("timeout_ms", 5000)
max_items = config.get("max_items", 50)
allowed_tlds = config.get("allowed_tlds", [".com", ".org"])
In practice, feature flags are implemented on top of dynamic configs[2] to manage the temporary lifecycle of a feature — aka, ship a new block of code, ramp its execution up to 100%, then delete the flag. Whereas dynamic configs are a deeper primitive meant for semi-permanent/safer operations like tuning rate limits or changing text copy on a marketing website.
As I've seen it: the forcing function that separates the concepts are experimentation platforms: when human-control of feature flags is shared (via dynamic configs) with automated & randomized assignments. That's how Statsig built their system and, in part, why they could sell for a billion. Whereas companies that ignored the difference, like LaunchDarkly, struggled outside of feature flags.
I think feature flags, remote configs, and experiments are all the same thing. Semantically they differ in how you're applying the config and interpreting the outcomes.
Humane, as a secular and universally applied sentiment, is a bit of a modern idea, once backed by common goods; shared institutions, third places, extended families, good economy, religion, etc. With those common goods fading, I see people more and more lashing out against each other; particularly in a frictionless environ that incites/outlets fantasy desires. The war of all against all from the safety of our screens; at least for the growing numbers who live their lives on the upper-case Internet.
Lower-case internet is ok as a tool for making spaces. But I reckon humane-ness, or really, virtue, is a habit built from within. And the habits the Internet rewards are generally the wrong ones.
One small edit: many also look to the Internet to meet their needs, beyond just fantasy or desire. Their lashing out comes after the disappointment: when the internet simply cannot fill the hole in them the way the common goods once did.
Statsig's core value is their experimentation platform— the automation of Data Science.
Big Tech teams want to ship features fast, but measuring impact is messy. It usually requires experiments and traditionally every experiment needed one Data Scientist (DS) to ensure statistical validity, i.e., "can we trust these numbers?". Ensuring validity means DS has to perform multiple repetitive but specialized tasks throughout the experiment process: debugging bad experiment setups, navigating legacy infra, generating & emailing graphs, compensating for errors and biases in post-analysis, etc. It's a slog for folks involved. Even then, cases still arise where Team A reports wonderful results & ships their feature while unknowingly tanking Team B's revenue— a situation discovered only months later when a DS is tasked to trace the cause.
Experimentation platforms like Statsig exist to lower the high cost of experimenting. To show a feature's potential impact before shipping, while reducing frustrations along the way. Most platforms will eliminate common statistical errors or issues at each stage of the experiment process, with appropriate controls for each user role. Engs setup experiments via SDK/UI with nudges and warnings for misconfigurations. DS can focus on higher-value work like metric design. PMs view shared dashboards and get automatic coordination emails with other teams if their feature is seen as breaking. People still fight but earlier on and in the same "room" with fewer questions about what's real versus what's noise.
Separating real results from random noise is the meaning of "statsig" / "statistically significant". I think it's similar to how companies define their own metrics (their sense of reality) while the platform manages the underlying statistical and data complexity. The ideal outcome is less DS needed, less crufty tooling to work around, less statistics learning, and crucially, more trust & shared oversight. But it comes at considerable, unsaid cost as well.
Is Statsig worth $1B to OpenAI? Maybe. There's an art & science to product development, and Facebook's experimentation platform was central to their science. But it could be premature. I personally think experimentation as an ideology best fits optimization spaces that previously achieved strong product-market fit ages ago. However, it's been years since I've worked in the "Experimentation" domain. I've glossed over a few key details in my answer and anyone is welcome to correct me.
Hats off to Statsig. They built a stellar product. Superior to many of their industry competitors like Optimizely. Back when I was on an internal Experimentation platform, we were impressed how they balanced dev velocity & stat rigor https://www.statsig.com/updates These guys ship.
Business-wise, I think getting acquired was the right choice. Experimentation is too small & treacherous to build a great business, and the broader Product Analytics space is also overcrowded. Amplitude (YC 2012), to date, only has a 1.4B market cap.
Joining the hottest name next door gives Statsig a lot more room to explore. I look forward to their evolution.
Off-topic, irrelevant question: does anyone need a local first version of Airtable? That uses SQLite under-the-hood and plugs into files and data with syncing across computers.
I’m curious (as a solo dev) if there’s a market for such a product.
Weirdly I’ve been building something along those lines for the last year. Not SQLite backed, but fully local and native (and also does non-local integrations, which you can also script yourself). Should be ready in a month or so if you’re interested!
When you were younger and learned about history did you form a mental image of what kind of people the famous financiers, capitalists, and robber barons were?
These are those people. Oil and railroads were high technology too.
They want you to think they’re Lazlo Hollyfield, but they’re Daniel Plainview.
My read was that Garry Tan implied "you sacrificed a lot of money in order to grandstand". I felt that was a knee-jerk dismissal of a founding employee's legitimate concern.
I'm not sure, but my interpretation is that Gary is implying that Prem Qu Nair received $20 million from the deal, and that by posting this tweet, he has violated the terms of the agreement, which generally have non disparagement clauses, and Gary will see to it that he won't receive anything.
I believe Tan's words were mis-represented. I believe he is saying that it cost Prim $20M and he then wrote that post. I don't think he is insinuating anything else.
He's misrepresenting his own words when he writes a vague tweet like that. Tan is a serial shitposter and is known for blocking thousands of people that even slightly disagree with him.
If the OP consulted with Turso on this blogpost, then Turso probably believes the reported behavior is indeed a failure or a flaw, which they think a local db should be responsible for.
The confusion is that Limbo, their solution to this presumed problem, is not mentioned in the article which means that everyone has to figure out where this post is coming from.
I think you're right. I'll add on: there's a lot of thinking that does not need writing, and there's a lot of writing that needs no thinking. Deng Xiaoping and other greats wrote pretty minimally for their own thinking, if at all. Whereas many of us not-so-greats seem to knee-jerk comment without a single thought.
It makes sense for our age. Amid a thousand distractions, typing on the keyboard gives the illusion of getting a grip. Note-taking on my computer gives the illusion of a second brain. Ululating on the internet gives the illusion of sharing thoughts.
Instead of "writing is thinking", I prefer "thought precedes speech" https://inframethodology.cbs.dk/?p=1127; it fits the small human mind better though I've yet to learn it properly.
You should look up the term "zero cost abstractions".
It's the organizing principle of the second generation of Rust's leadership[1]. Formally, it means "zero runtime cost"[2], but the now-former maintainers operated as though it meant Rust could get rid of all cost. The belief was that they can have a language that's faster than C, safer than Ada, more ergonomic than Java, more memory safe than Go, by either making the compiler do more work, or working more on the compiler. In practice, I think this belief caused massive complexity in the compiler, trade-off dishonesty in the community, and bad evangelism in domains unsuited for memory safety (e.g. games programming)
[1] Graydon, the original author of Rust, was against this idea.
[2] The term originates from C++ as "zero overhead" which was smaller in scope, and not a governing principle of the C++ language.
Feature flags are gates for whether a piece of code runs; basically, an if-condition. Remote configs are a mechanism for changing runtime values without redeploying[1].
For example:
In practice, feature flags are implemented on top of dynamic configs[2] to manage the temporary lifecycle of a feature — aka, ship a new block of code, ramp its execution up to 100%, then delete the flag. Whereas dynamic configs are a deeper primitive meant for semi-permanent/safer operations like tuning rate limits or changing text copy on a marketing website.As I've seen it: the forcing function that separates the concepts are experimentation platforms: when human-control of feature flags is shared (via dynamic configs) with automated & randomized assignments. That's how Statsig built their system and, in part, why they could sell for a billion. Whereas companies that ignored the difference, like LaunchDarkly, struggled outside of feature flags.
[1] https://engineering.atspotify.com/2020/10/spotifys-new-exper...
[2] https://docs.statsig.com/dynamic-config/overview https://blog.x.com/engineering/en_us/topics/infrastructure/2...