551 karma · joined June 15, 2013
Yes, because otherwise what you propose requires modifying the binary in-place and that's too big of a security hole for lots of (production) environments. Some variants of that could work with an out-of-process method like Dtrace or eBPF, but that means mutating the kernel, even more of a no-no.
Wrong.
You should stop thinking by analogy.
The article was showing the difference between mathematicians and engineers. For the mathematicians that created Computation Science, the only interesting solutions are complete solutions to general questions, whereas for engineers it's perfectly acceptable to eliminate some corner cases, thereby solving a reduced and simplified version of the general problem.
"Have lost count of the number of CEOs I’ve talked to this week that are planning to be moved off OAI and Anthropic entirely by years end."
Perhaps. I consider that a very narrow view that's detrimental on the long term.
> But they must've had a reason to try it.
They were obsessed with using a general-purpose language, and Python was the thing they knew.
> SREs weren't just arguing about which is better, they were asserting X is deprecated in favor of Y.
This is a kind of dishonesty I saw a lot at Google.
> TF has seemingly stuck outside. I'm still not a fan of that being a DSL, but at least it's one tons of people use and now Claude can easily handle.
Unfortunately Terraform still has significant flaws that prevent it from being used in a reliable fashion.
The usefulness of not being a general-purpose language it that it makes static analysis very good; that's what made the BCL-based tooling so useful: being able to easily diff two versions of the same module (a tool called UBdiff), compute the transitive closure of a module's dependencies, trace the execution of BCL code and correlate it with the AST, to point out where an error comes from.
All these features were either unavailable or took years to develop for Piccolo, because Piccolo was based on Python.
> I'm still not seeing why a DSL was necessary or helpful.
BCL has distinct evaluation rules and a notation that encodes many patterns that SREs used for defining services, and that made BCL code much more compact and easy to ready than all the alternatives.
BCL was designed to be unidirectional: a module was evaluated locally, and the result sent to the Borgmaster. Compare that to Terraform, whose execution model consists of an execution tree where some nodes come from RPCs, meaning that it's not generally possible to statically analyse a TF module, because some errors can come from from feeding RPC results into new RPCs, and execution often fails after tens of minutes. All very janky.