HN user

chambers

535 karma
Posts3
Comments97
View on HN
Cloudflare Flagship 2 months ago

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.

[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...

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.

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.

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.

Yeah, this tracks.

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.

Writing is thinking 12 months ago

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.

I was in Beijing last year. Many, many EVs on the road, far more than the Bay Area. About half of China's Market is EV's now[1]

The Chinese Government backed up their mandate with money. Lots of money, allocated well, over a long period of time. In the absence of that sustained political will, I think this initiative would have succumbed the infighting and finger-pointing that the article above describes.

[1] https://en.wikipedia.org/wiki/Electric_vehicle_industry_in_C...

I was also raised by a loving catholic mother, who let me go my way, out of the church. I eventually found my way back in, and feel similar to you as you do now.

IMHO, the GP has a right to share his experience here as we do ours. A thread on the election of a pope, with a subthread on the beauty of church, is a fair venue for sharing. There's no need for prejudice, disguised as policing, on either side.

^ This is the real advice. Approach a conflict as a choice the child needs to make, and the options the parents need to give. Be flexible but hard where it counts.

Children need grounding. "I need to win arguments with my own kids" is a vanity, that gives up a lot of the ground kids need for growing up.

I dug into this out of curiosity a few years ago. I thought 2.8 UI redesign was all thanks to Ton, but it turned out it wasn’t.

Ton was actually against a UI overhaul for decades. There’s a video where power-users and Ton were vocally dismissing the need for a better UI, using GIMP-like arguments. There was at least one failed UI redesign in the early 2010s which I think Ton was quite involved with.

But something happened, the nature of which I don’t know. Then, Ton became hands-off and allowed the UI overhaul to take place, which I recalled made actual UX designers work with engineers.

My memory is foggy and I don’t have sources readily available. But I’m hoping someone will fill in the gaps or correct my understanding of events long past.

"No sides in science" is a silly idea. Of course, scholars have biases. They're human. Humans like to group up and gang up against other.

Specific to Bible Scholarship, I wager the two big sides are scholars who have faith (i.e., Nicene Creed) and scholars who have little. Bruce Metzger who had some faith, and Bart Ehrman who has none. RSV/ESV which says Jesus is the "Son of God" in Mark 1, and NRSVue which deletes "Son of God" from Mark 1.

It's quite a fault line.

SQLite is really a terrible example of anything other than what you can accomplish when you pour enormous resources into a single C library.

That's quite a sweeping, even caustic, indictment.

Can you explain this statement more?

The author edited his post with a follow-up.

  [Update (2025-02-12): This post, which I thought of as a hasty update to the handful of people who followed my links, was posted to Hacker News for some reason. Yes, I should have provided evidence for the above judgment had I thought more people would read it. As ever, use your own judgment for these things.]
It covers the author's pre-judgement; he admits he didn't put in the work and he tells us to use our judgement and not his.

The part that's not addressed is "I want to reluctantly recommend even less services(/people?)." An eagerness to detract may not be hate but we're right to be wary of it.

Yup, I've tested and seen WASM SQlite's slowness myself. But I don't think it's a SQLite problem per se.

I heard WebSQL, which used SQLite, was at least 10x faster than WASM SQLite. Probably even more.

I found WASM slower than expected. I wrote some WASM logic functions recently which I thought would perform better than their native JS equivalent. For example, take a large array and "pivot" it in 10ms instead of a 100ms.

What I found was the JS version was a bit faster than the compiled WAT. Yikes.

EDIT: I think I'll try debugging it more

Converts do tend to romanticize their new side over the old one. But I think Larry's view has specific alignment with history: at the time, the most outspoken on the websites he visited were strongly Atheistic or Anti-Religious. That sentiment prevailed in websites like Reddit which, for example, had /r/atheism and its "euphoria".

StarSlateCodex describes this phenomena in detail, as well as what happened to the more drama-prone Atheists who Larry probably tussled with: https://slatestarcodex.com/2019/10/30/new-atheism-the-godles...

  “They’re cheering for you,” she said with a smile. 
  “But I could never have done it,” [Milo] objected, “without everyone else’s help.”
  “That may be true,” said Reason gravely, “but you had the courage to try; 
     and what you can do is often simply a matter of what you will do.”
  “That’s why,” said King Azaz, “there was one very important thing about your quest 
     that we couldn’t discuss until you returned.”
  “I remember,” said Milo eagerly. “Tell me now.”
  “It was impossible,” said the king, looking at the Mathemagician.
  “Completely impossible,” said the Mathemagician, looking at the king.
  “Do you mean … ,” said the bug, who suddenly felt a bit faint.
  “Yes, indeed,” they repeated together, “but if we’d told you then, you might not have gone … 
    and, as you’ve discovered, so many things are possible just as long as you don’t know they’re impossible.”
- The Phantom Tollbooth (1961)

This decisions looks well-reasoned. It acknowledges the strengths of their current implementation, and explains why another language may serve their goals even better. I can follow along as someone interested in general software decision-making, even though I'm not particularly invested in either language.

One specific thing I like is that the motivation for this rewrite is organic, i.e., not driven by an external pressure campaign. It's refreshing to see a drama-free rewrite.

This reporting feels a bit slanted. The author implies the big blockers are human beings; specific people & interactions he's called out for seemingly stalling the project.

Personally, I'm curious if there's hard technical blockers. Like, if there's features that Linux (or Rust) needs which could incur a serious burden that no team can sustainably maintain. That kind of reporting— deep insights into technical trade-offs— would be much more interesting than a play-by-play of drama.

On a side note, there's one paper on Rust in Linux that's been recommended but I've not seen it deeply discussed yet https://www.usenix.org/conference/atc24/presentation/li-hong...

It's not that the skin is thin, but that the muscle is tired. Our muscle (or sense) of guilt has been overused and abused. Now it's prone to inflammation when we hear people who intentionally or unintentionally trigger it.

I think the irritation towards guilt may look like rage but I think it's a weary hopelessness. No matter what is done, history cannot be undone. It cannot be forgotten and many people feel it can't even be made right anymore. All the guilt of recent history did not lead to a new Civil Rights Act, it did not change the Constitution. And any of the good that was done to right history in the 20th century-- many claim it only belongs to yesterday's victims.

Those with the wrong ancestors are stuck in their sin waiting for history to be twisted & jabbed into them by their neighbors, who wish to ease or to glorify their own individual conscience.

IMO, the cycle breaks only when there's hope of true, genuine forgiveness that MLK preached and LBJ effected. But that forgiveness is beyond human power.