Simple building blocks
ft lambda calculus and power walking
Here’s a crucial concept that we developers take for granted: functions are data.
This idea originates from Lambda calculus, a mathematical system developed by Alonzo Church in the 1930s. Its impact didn’t extend beyond formal math until the late 1950s, when John McCarthy created Lisp, which treated functions as first-class objects. Soon after, linguistics applied lambda calculus to the semantics of natural language.
Now that functions are inextricable in programming, we rarely have to consider their origins. But think about it, whatever programming language you use treats functions as entities with the same status as other data types like integers, strings, or arrays. Treating functions as first-class citizens is what allows us to
Assign them to variables
Pass them as arguments
Return other functions (func-ception)
Store them in objects, lists, or tables
Without the ability to treat functions as data, we couldn’t have:
Higher-order functions (
.map,.filter,.reduce)Callbacks that run when an event (like a button click) occurs
Asynchronous programming (
async/await)Closures
TypeScript
Programming at its best is building complex systems by combining simpler building blocks in a disciplined manner. It’s easy to glorify the builder or complain about the system’s complexity. But let’s also appreciate the simple building blocks that our predecessors gave us. Without them, modern software would be unthinkable.
BTW - Isn’t it amazing that we’re still coming up with new math concepts? Your great-grandpa lived in a world that couldn’t reason about functions and integers at the same level of abstraction.
AFK primitives
If “treat functions as data” is a simple building block that empowers programmers to tackle computer problems, what are some simple ideas that could empower programmers to tackle problems AFK?
Here are a few.
Move in a way that you enjoy. Box, run, lift, power walk, swim — as long as you’re moving, you’ll avoid the traps of this sedentary profession. Hunched posture, processed food, sleepless nights, chronic distraction, and social anxiety are enemies of movement.
Do something you believe in. Main characters have points of view and fight for them. NPCs believe whatever they’re told and accept submissive positions. Changing your character doesn’t require you to quit, relocate, buzz your head, or get another degree, though. You already possess one of the highest-leverage skills available (building robots), anyway. If you apply your skills to your beliefs, your aura will grow. As your aura grows, so does your ability to handle hardship.
Think with simple tools. You don’t need an LLM, a second brain, or Spotify Premium to clarify your thinking. A pocket notebook is enough. Take a walk to organize your thoughts, then write down the important stuff. The more you outsource your higher-order thinking to artificial tools, the less competitive your ideas. If you combine your unique perspective, experiences, and voice, then your thoughts become more singular. Thinking differently is differentiating in a world where everyone is asking the same two apps the same questions.
Got a building block you swear by? Reply here to LMK.
More
Lambda Calculus (wikipedia.org)
Ergo: a case study in approachable invention (keepsoftwaresimple.com)
minimal bullet journal setup guide (youtube.com)
Brian Beckman: Don’t fear the Monad (youtube.com)



