Hey there,
Hope you are in good health.
This week we are dealing with Abstractions.
In fact, a Series of Abstractions.
I)
First, what’s an abstraction?
An abstraction is a simplification, a packaging of a complex system, process, or thing achieved by deliberately hiding or suppressing some details in order to make it easier to use and/or reason about. [0]
For instance, a car has many layers of abstraction. You could not know or care about how exactly the engine works, or what’s going on under the hood, and still be able to drive.
Your computer is a bundle of abstractions—both in terms of hardware and software—all the way down to the transistors, the bits and bytes.
And if you start thinking about it, the world is full of abstractions!
The plumbing in your building, the electricity grid, the Internet (we don’t need to know how it works [1]), the delivery network e-commerce companies use (the click and the pickup at the door are our only interfaces as users), and so on.
This will just keep increasing as we develop more sophisticated technologies and systems, and as our cumulative knowledge grows.
One interesting—if somewhat thought-provoking—idea is that we, as people, are also abstractions…
Ep 1: The person on the other side of the crowd
Vicki Boykis | 10 mins
Great essay on how the online world has made abstractions out of us too.
Some excerpts (highlights my own):
Abstractions are neither bad nor good in and of themselves. They’re just ways we humans make sense of the immensely complex worlds around us. But you have to understand the tradeoffs of what you’re abstracting away.
It’s here that I think we’re in a pretty dangerous spot these days, because there are some abstractions that we deal with, without really thinking about the fact that they’re abstractions, at all. I think something the online world does, often, not only with celebrities, but with all of us, is flatten us into abstractions.
This got me thinking about how my mental pictures of a lot of the people I see (quite regularly) and maybe even interact with on the internet are limited to their profile pictures and/or a string of letters—their names, or usernames, etc.
It’s possible to think of all the complex lives they have but in my default setting that can slip my mind.
In fact, I suspect, for many of you, I might be “that guy who sends out a letter each week”. Or rather every 7.5 days by how this is going, haha. And well, that’s okay! (the first part I mean).
We don’t need to show all of ourselves online. In fact, it might be better to keep it as an abstraction. [2] But one downside is that it’s easy to direct the dark sides of our humanity (outrage, envy, etc) at an abstraction vs a real higher resolution+dimension person.
The internet has always made us flat abstractions: text bubbles, DMs, Slack chats, blog posts, Buzzfeed articles, without any context around what we are, who we are, what we believe. We are all large, we all contain multitudes, but the more I live and work online, the more I realize that, what we gain in being able to communicate across time and space, en masse, the more we lose in context, in gesture, in understanding a single person in the sea of humanity. It’s this, combined with the global scope of outrage, that’s a dangerous form of abstraction today.
Ep 2: The Map is not the Territory
Farnam Street | 13 mins
This a good mental model related to Abstraction—in a modeling sense.
The map of reality is not reality. Even the best maps are imperfect. That’s because they are reductions of what they represent. If a map were to represent the territory with perfect fidelity, it would no longer be a reduction and thus would no longer be useful to us.
…
Maps are necessary, but flawed. (By maps, we mean any abstraction of reality, including descriptions, theories, models, etc.)
Abstractions help us reason about the world. But we need to keep in mind that they are not exactly whatever they are abstracting. They are flawed, simplified representations. In fact, they derive their usefulness from that property.
Coming back to the people-as-abstractions idea: let’s say you stumble on to someone’s profile on social media and she has a lot of updates related to literature (the books she is reading, quotes, etc). It could be a decent abstraction to assume… she reads a lot. But that picture would only be a map. It’s not the territory. We don’t know about all the other interests she might have. Maybe she is also a sports fanatic, or a master checkers player. Maybe literature is just one aspect she shares online. Again, the map isn’t necessary wrong. It’s okay to have the “she is a reader” abstraction and might even be useful (say, to start a conversation).
But the key is to take the map for what it is: an abstraction of a reality with a surprising amount of detail.
The salient point then is that in our march to simplify reality with useful models… we confuse the models with reality. For many people, the model creates its own reality. It is as if the spreadsheet comes to life. We forget that reality is a lot messier. The map isn’t the territory. The theory isn’t what it describes, it’s simply a way we choose to interpret a certain set of information. Maps can also be wrong, but even if they are essentially correct, they are an abstraction, and abstraction means that information is lost to save space.
Also, the model is self-referential!
Ep 3: Seek Ideas at the Right Level of Abstraction
Cedric Chin | 18 mins
The world is full of many levels of abstraction.
When thinking about the economy, you could go from the level of countries, to corporations, down to the level of individuals. From Macro to Micro and vice-versa.
When thinking about Tech, you could think at the global level (say shifts toward IoT, VR/AR, 5G, AI, etc). Here, the minute details of each of those areas of tech are abstracted away. You could think at the intermediate level; say, you are mostly concerned with AI, the trends in there. Or maybe local level—the application domain you are currently working in. These levels are arbitrary but hopefully it’s clear that we can think at different levels of abstraction.
What Cedric contends in the essay is that we tend to over-dedicate our efforts thinking and operating at the wrong level of abstraction.
What’s the wrong level?
Primarily one irrelevant—or less relevant—to you, one that cannot help you make decisions.
E.g. Say the consumer market for enterprise software is growing in Asia. That is not that useful to me. What am I gonna do about it? It may be useful for say a CEO of a company who can target that market. But not so much for me as an Individual Contributor.
But why aren’t ideas at those higher level abstraction useful?
macro-economic shifts trickle a long way down, through a complex system, before they become local trends. These shifts may or may not result in the outcomes you expect. So if you operate at a much lower level in the system, and you want to make a decision about your career, you should probably pay attention to the local trends first, without thinking about the macro-economic shifts that may or may not have led to them.
…proximate causes (the cause immediately preceding an event) are easier to reason about than remote causes (causes that are further away from the event at question, but that contribute through the chain of causality).
It stands for the other way to—lower to higher abstractions. A successful business owner may not be good at forming economic policies. They are not adept at operating at that level of abstraction.
the core idea is to focus your attention on things that are closer to your level, depending on where you are in the system
Also, it isn’t to say only think at levels of abstraction closer to you. It’s to say give more weight to those than levels of abstractions farther out.
The key isn’t to say “seek ideas at the right level of abstraction … and discard everything that’s potentially remote or low level”; the key is to recognise that “only looking at remote levels to calculate optimal action” is itself a failure mode, and you don’t want to go to either extreme.
Ep 4: The Law of Leaky Abstractions
Joel Spolsky | 10 mins
All non-trivial abstractions, to some degree, are leaky.
Abstractions are supposed to be something that protects us from having to think or know about the details underneath.
But, in reality, if the thing being abstracted is complex, the abstraction tends to leak, which is to say, we end up having to know some details of what’s underneath. We have to peek in.
E.g. 1. When you are recording audio on your smartphone, it might be good to know where exactly the mic is located (usually on the bottom) and make sure you are not obstructing it. The phone is supposed to abstract away the detail of where the mic is but it leaks out.
E.g. 2. Say an e-commerce site’s delivery charge is based on how many vendors they have to pick up the stuff from. In this case, you might consider reducing the number of vendors (order from the same ones when possible). Here, the delivery mechanism is supposed to be abstracted away but it leaks.
Note: Joel actually places this law more in the realm of programming and software. This wiki might also be worth checking out.
Ep 5: A Detailed Guide to Abstraction in Software with Examples
The Valuable Dev | 25 mins
A great guide to abstraction in software.
In a way, software development is primarily about building abstractions, or as Raymond Hettinger says: “a programmer makes new words that makes computers easier to use”.
Here are some other great writings on the topic (also included at the end of the above guide):
Oh, and do share with me any resources related to Abstraction (for Software Development or generally). Will be grateful.
II)
The Pixel Painter
Short Movie About Hal Lasko | 9 mins
Beautiful. And inspiring.
Trees
Poem by Joyce Kilmer
I think that I shall never see
A poem lovely as a tree.
A tree whose hungry mouth is prest
Against the earth’s sweet flowing breast;
A tree that looks at God all day,
And lifts her leafy arms to pray;
A tree that may in Summer wear
A nest of robins in her hair;
Upon whose bosom snow has lain;
Who intimately lives with rain.
Poems are made by fools like me,
But only God can make a tree.
🎵 Music
Classic. Great for instilling a bit of energy on a listless day :)
Currently listening… close to midnight. Perfecto.
// Wholesome
Closing Thoughts
I have been reading Steppenwolf. Has been a pretty trippy read.
His life oscillates, as everyone's does, not merely between two poles, such as the body and the spirit, the saint and the sinner, but between thousands and thousands.
You should not take old people who are already dead seriously. It does them injustice. We immortals do not like things to be taken seriously. We like joking. Seriousness, young man, is an accident of time. It consists, I don't mind telling you in confidence, in putting too high a value on time. I, too, once put too high a value on time. For that reason I wished to be a hundred years old. In eternity, however, there is no time, you see. Eternity is a mere moment, just long enough for a joke.
With Love and a little bit of laughter,
Bijay
Notes
[0] I cobbled together this definition from various sources. One such is David Malan’s intro to Abstraction in CS50. His energy is incredible!
[1] I used to think it was mostly satellites… It wasn’t until maybe my first year in college when I learned that it was actually mostly transoceanic cables. Blew my mind. Somehow that seemed even more incredible than satellites.
[2] This I feel relates to our multitude of identities. Even offline. I am a son, a friend, a coworker, and so on. Who is the “true” me? This (the question of identity) is of course a big question, haha. Something for some other day.
Few things I'd like to recommend:
François Chollet: Measures of Intelligence | Lex Fridman Podcast 120
(https://www.youtube.com/watch?v=PUAdj3w3wO4)
This touches upon abstraction and generalizations (System-centric and Developer-aware)
Pointing To A flower
https://www.lesswrong.com/posts/3xotPYdAs7GfT9a9r/pointing-to-a-flower
This also, in a way, touches upon representing objects, especially with flowers consisting of particles (say pixels). Probably it's also in the "abstract-o-meter" territory.
Abstraction = Information at a distance
https://www.lesswrong.com/posts/TTNS3tk5McHqrJCbR/abstraction-information-at-a-distance
This was actually very thought-provoking the first time I read it. Also goes with the probability domain.
Few other things I "relate to" whenever I think about it (I am a strange loop by Hofstadter
(Also, some great reads. Thanks for sharing)