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, 202310Mar 19, 202310
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, 202355Mar 18, 202355
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, 202171Jan 23, 202171
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, 202059Dec 11, 202059
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, 202045Dec 5, 202045
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, 202066Nov 28, 202066
The Type of a Type in TypeScriptI’ll present four puzzles and two solutions about classes and types.Mar 15, 202087Mar 15, 202087
Alternatives to TypeScript enumsTypeScript, like many programming languages provides enums, which enable you to enumerate the values a type may have.Feb 2, 20202354Feb 2, 20202354
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, 2018812Feb 10, 2018812
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, 201626Oct 1, 201626
Published inHackerNoon.comA Finite State Machine Helper for ReduxI’ve noticed that Redux apps often embed ad-hoc finite state machines, with information about the current status spread out throughout…Sep 3, 20165Sep 3, 20165
No Need for Dependency Injection in React ComponentsDependency Injection (DI) is a big part of the way things are done in Angular, so it’s natural to look at whether/how it’s needed in…Aug 20, 201614Aug 20, 201614
Problems with sending SQL Strings to Databases (and partial solutions)Suppose you want to ask a relational database a question, then do something with the result. Most relational DBs make this complicated…Aug 13, 2016Aug 13, 2016
How I Messed Up Our Repo and Ideas for Improving Git UXI just found out that I was accidentally responsible for removing features from our development branch.Aug 6, 20162Aug 6, 20162
JavaScript and JSON: Comments, Security, Pretty-PrintingThis post is about some tricks for working with JSON in JavaScript projects. Hopefully at least one will be new and useful.Jul 29, 20161Jul 29, 20161
Published inSocial Tables TechUsing JavaScriptCore in a Production iOS AppThis post is about why we chose to use JavaScriptCore and what we learned. The biggest challenges to using JavaScriptCore in a production…Jul 22, 20163Jul 22, 20163
ES2015 `let` is for Persistent IdentityTLDR: For readable code, let should be used to communicate that the object referred to has “persistent identity.” Otherwise, const is best.Feb 22, 2016Feb 22, 2016