ljloisnflwef
The initial adopter/FOMO/hype phase is over.
* Valve going full cosmetics
* Half Life 3 never being released
* Biannual Call of Duty titles
* The end of community hosted servers & server browsers
* The rise of Early Access & DLCs
* John Carmack leaving id software
I don't know what went wrong but the ecosystem prefers software presented as a black box and shrouded with mystery.
If you contrast this with Envoy, it has stellar documentation -- Envoy wants you to know how it works!
Envoy is used and abused by Istio (k8s wrapper) which has terrible documentation, history of horrific upgrade/update story, (& software quality).
So it doesn't feel like "my life", rather on a ride I can't get off or interface with.
For me to find value in something, it should grant at minimal autonomy.
if (!(node instanceof DomNode.Element)) {
return new RenderNode.Noop(/* ... */);
}
Layout layout = node.layout;
return new RenderNode.Styled(layout, /* ... */);Consider predicate types, or first-class null safety through unions.
If statements introduce propositions, which type systems could take advantage.
example:
let idx = randomInt();
if (0 <= idx && idx < arr.length) { // proposition introduced
// idx now has type: int where 0 <= idx && idx < arr.length
// irrefutable proof of safe indexing by type propositions
let value = arr[idx];
}The truth will set you free.
* Algebraic data types
* Pattern matching (with exhaustiveness)
* Lambdas / Closures
* Type inference
* Use linear / affine / session types / move semantics
* Describe an interface, then weave side effects through it, such as the State Monad.
* Use lenses