-
Bicameral Syntax
by Shriram Krishnamurthi
Show notesWhen working on a new programming language, start with a tree-like abstract syntax (ala Lisp). That lets you immediately get to work on the interesting semantics of your language. Only after that have you earned the right to layer on syntax.
Syntax is a view.
You can even add multiple syntaxes as “views” on top your abstract syntax.
-
Why Concatenative Programming Matters
by Jon Purdy
-
Functional Core, Imperative Shell
by Scott Wlaschin
-
The Grugbrained Developer
by Carson Gross
Show notescomplexity bad
say again:
complexity very bad
you say now:
complexity very, very bad
-
How to Speak
by Patrick Winston
-
Lambda Calculus from the Ground Up
by David Beazley
-
Maybe Not
by Rich Hickey
Show notesThe right place to talk about optionality is not where the types are defined, but where they are used.
Different functions will have different requirements for what parts of a type they need and which parts they don’t.
-
Propositions as Types
by Philip Wadler
-
Rethinking Design Practices
by Mark Dalgleish
-
Railway Oriented Programming
by Scott Wlaschin
Show notesKeep the happy path front-and-center without sacrificing error handling.
-
Shape Up
by Ryan Singer
Show notesFixed deadline, flexible scope.
Commit to an idea for a couple weeks, then course correct.
-
Stop Writing Classes
by Jack Diedrich
-
CSS Utility Classes and "Separation of Concerns"
by Adam Wathan
Show notesNaming things creates abstractions. Do you really want to create an abstraction every single time you want to style an element?
Instead, use the same approach for avoiding abstraction in code: inline it!
-
The Life of a File
by Evan Czaplicki
-
The Value of Values
by Rich Hickey
-
The Wet Codebase
by Dan Abramov
Show notesCode duplication isn’t inherently bad. Sometimes its more likely for code to diverge later, so don’t force it to be the same.
-
You Can't Not Have a Framework
by Ryan Florence
-
Simplicity Matters
by Rich Hickey