The Best Way for a Programming Language to Do Variables (so far): The ML WayThe design space for variables in programming languages is large, but so far (afaik) only one good solution has been found, and many bad…Mar 19, 2023Mar 19, 2023
JavaScript does not have a “pass by reference vs.I’ll show why the folklore that “JS objects are passed by reference, primitives are passed by value” has nothing to do with passing…Mar 18, 2023Mar 18, 2023
Function intersection types sound simple, but get less intuitive the deeper one looks.Each of the following surprised me, and has its own section in this post:Jan 23, 2021Jan 23, 2021
Subtyping Loses Information, Row Polymorphism Does NotBrian McKenna’s “Row Polymorphism Isn’t Subtyping” is about the distinction between row polymorphism and subtyping. Several re-readings…Dec 11, 2020Dec 11, 2020
exThe Principle of Explosion in Ordinary Computer ProgramsThere’s normally a tight connection between programming and proving: this is known as “Propositions as Types.” I found one aspect of the…Dec 5, 2020Dec 5, 2020
What Makes a DSL Bad? Make, CSS, and how we can do better.There are many places where you can find arguments that DSLs (domain-specific languages) or “language oriented programming” are good. But…Nov 28, 2020Nov 28, 2020
The Type of a Type in TypeScriptI’ll present four puzzles and two solutions about classes and types.Mar 15, 2020Mar 15, 2020
Alternatives to TypeScript enumsTypeScript, like many programming languages provides enums, which enable you to enumerate the values a type may have.Feb 2, 20204Feb 2, 20204
Published inHackerNoon.comMobX Observable is not Rx ObservableHere are two tables that show the similarities and differences between MobX Observables and Rx Observables:Feb 10, 20182Feb 10, 20182
Published inHackerNoon.comRedux Funk—Simple, Testable Async EffectsThere are a ton of libraries for doing asynchronous effects in Redux apps. Some see this as a bad thing, but I love the intellectual…Oct 1, 2016Oct 1, 2016