Composability is the only game in town – Roam, shipping containers, Lego and Twitter.

Lego Blocks, Shipping Containers, Roam Research, Open Source, and any other unreasonably successful endeavor follows the fractal design of composability.

Epistemic confidence: 3/5. I intend to return to this post in the future.

Shipping containers

The current iteration of global capitalism is built on the backbone of a shipping container. Not the car nor the plane. As much as I do think the washing machine is transformative (and do check out this TED talk by Hans Rosling), it didn’t have an impact as huge as the shipping container.

From vgr’s “The Epic Story of Container Shipping”:

At the beginning of the story, total port costs ate up a whopping 48% (or $1163 of $2386) of an illustrative shipment of one truckload of medicine from Chicago to Nancy, France, in 1960. In more comprehensible terms, an expert quoted in the book explains: “a four thousand mile shipment might consume 50 percent of its costs in covering just the two ten-mile movements through two ports.” For many goods then, shipping accounted for nearly 25% of total cost for a product sold beyond its local market. Fast forward to today: the book quotes economists Edward Glaeser and Janet Kohlhase: “It is better to assume that moving goods is essentially costless than to assume that moving goods is an important component of the production process.”

Shipping containers are standardized and composable. Much like the most successful software.

Open Source, and UNIX philosophy

As much as the container is the backbone of the current economy, the software will be the backbone of a new one that we all help to build. If we take the “evolutionary” definition of success, the most successful piece of software will be some obscure low-level library or a Unix tool running on every modern device. Here are the first two Unix principles according to Wikipedia:

  • Make each program do one thing well. To do a new job, build afresh rather than complicate old programs by adding new “features”.
  • Expect the output of every program to become the input to another, as yet unknown, program. Don’t clutter output with extraneous information. Avoid stringently columnar or binary input formats. Don’t insist on interactive input.

As you can see, these are interlocking – do one thing well, and build “higher” when connecting more things that do one thing well. In my mind, Unix philosophy, Open Source, and building an information economy go hand in hand. Each next iteration can stand on the shoulders of giants, using the abstractions built by previous developers. We don’t have to sync time anymore, allocate memory, or deal with disk I/O operations. We can use ready tools to do just that, to focus on building something more complex.

Roam Research

You may have heard about Roam Research – a Note-Taking app that has gained a cult-like following, and a $200 million investment at a $900 million valuation. If you have not heard about Roam before – Anne-Laure has a good introduction. If you feel like note-taking is suddenly hip without any reason, I have an explainer here.

How has Roam gained this popularity? Is it all a scam? After trying it out – I’ve noticed two aha moments:

The first Roam AHA moment

You discover, that the expected value of your notes grows exponentially. If I have a 1:1 (a 2-person Team-Lead <-> Team member meeting) with David, I can type [[1:1]] with [[David]] and I create notes simultaneously:

  • As my TODO in the daily note
  • On the page called 1:1
  • On the page called David

During the day – to the day I can also create a note [[David]] posted a good post here: (link).. When I later visit [[David]] page, I can see the history of our 1:1s and all data I meant to include in the formal feedback when the time comes.

Even though I have never visited or even created “David” page before.

This “higher expected value of each line of notes” is like crack – gets the thoughts out of my brain faster than any other tool, since it’s rewarding bringing concepts together.

The second AHA moment is all about composability

The real kicker is the second AHA moment. In Roam, not only EVERYTHING is a block, but also the blocks interact with each other sensibly while nested

Table

No interface, I just nest bullets and table appears

KANBAN

I create a Kanban the same way I create a table – since everything is an interplay of nesting, I immediately know how to create this Kanban. Gutenberg is already pretty good at this – we are trying to follow similar patterns across our blocks, but there are a lot of custom interfaces.

How about table in a Kanban?

EVERYTHING is composable

Ok, enough about Roam Research. The message is that composability let’s you be way more creative by knowing a few basic principles. But to call something “composable”, we have to have:

  • A canonical unit of “thought”
  • Multiple nesting levels
  • Lists of things behave differently than things themselves

What about functional programming?

I do realize, that composability is an aspect of functional programming, and nothing new to the fans of closure, lisp, or even a functional approach to writing plain old JavaScript.

  • Roam Research is written in closure, and transpiled to JavaScript
  • Paul Graham (a startup demigod and a very clear thinker) is continuously playing with Bel – a variation of LISP

I do appreciate the elegance of a purely functional language and after realizing the closure-roam-research link I can see how that mindset translates. But nevertheless – relying on the language to translate into a better product is ignoring the messy complexity of the real world.

In the real world (unlike the comfortable world of the algorithms), the program has to interact with the vast spectrum of inputs and outputs – thus npm with its library of packages may be better representing composability than any functional language. In the end, composability’s goal is to achieve real-world results with simple, easy-to-reason blocks. And yes, I credit React’s success to the composability of JSX.

Writing on the Internet

Publishing on the Internet at its core is composable too. We can argue if the sentence, a paragraph, or a blog post is the canonical unit of clear thought, but blogging lets you organize the uneasy mess of “stuff” into coherent blocks you can compose into more and more clear reasoning. The linear structure of the page lets you examine each and every paragraph for doing what they are supposed to be doing. The list of paragraphs is just like a row of containers organized in a higher-order unit (a ship) that makes it easy to move.

Twitter

Twitter is similar to Roam in more ways than one. To the casual user, it’s a hellhole of political arguments and fabricated urgency, but for those who know how to use it, it has almost infinite expression power based on simple rules.

Twitter Threads are composable.

Remember the requirements for composability I have outlined above? Twitter satisfies them all.

  • A tweet is a self-contained complete thought
  • Threads let you organize these thoughts into more complex narratives
  • You can nest and recombine them at will

Sidenote: Follow Visakan (a master of threads) if you want a kinder, more productive Twitter.

WordPress

WordPress has introduced a new, block-based editor for your posts and pages. The underlying premise is that everything will be a block, unlocking new mental models for users of the CMS powering close to 40% of the Internet. I am proud to help make this vision a reality.

Composability succeeds because it enables cooperation

When evaluating a product or endeavor we tend to focus on metrics, features, and shiny checklists:

  • This has more bloblybums,
  • That is soo shiny,
  • The other thing succeeded because it’s just faster,

But over the long term, the thing that succeeds tends to do so, because it makes it easier for people to work together. Composability is a framework for putting new layers of abstraction in a predictable manner.

An average human can hold about seven items in short-term memory and successfully cooperate in a team of seven people. Composability reduces the cognitive load by organizing things into higher-order sets, which in turn – can be reasoned about or reduced further.

Notable mentions

Other, successful composable things include:

  • Lego blocks,
  • Written word (letters -> sentences -> paragraphs -> pages),
  • World Wide Web and HTML
  • Matter in the Universe (The Elements are comprised of the same 3 building blocks)
  • Memes (TikTok in particular)

Notable exceptions

Despite my clickbaity title, there are successful endeavors that are NOT composable:

  • App Stores / App economy – apps usually don’t mix with each other

Anything else?

Technically Correct is Wrong

Even though something can be technically correct, it’s quite often an unhelpful or even a wrong thing to say. Not because of social norms, but because reality is more complicated than the one-dimensional model representing adolescent morality.

At any point, there are multiple ‘true’ statements.

Over 2400 years ago, Platon introduced a notion of duality. He drew a rigid distinction between mind and body, good and evil, or truth and lies.

This notion is very appealing because it makes the world easy to understand, less confusing, and less scary.

If only I follow a comprehensive set of rules, I can be confident or even self-righteous in my choices. Furthermore – everybody who opposes me is wrong! What a brave new world!

This line of logic suggests that there is only one truth, and the only reasonable thing to do is to share it.

In reality, we are faced with multiple non-false statements – all of them plausible. The concept of ambiguity is a fundamental feature of physics, not only social interactions.

But scared apes that we are, we feel compelled to make sense of the world and simplify indiscriminately. When faced with inconsistent statements, we want to choose „the truest one.” We accept the one that fits our worldview the most (at this time), discard the rest, and deem them lies.

Human communication is inefficient, and things have context.

“In theory, there is no difference between theory and practice. In practice, there is.”

The correct attribution of this statement is not helpful.

Logical axioms are an artificial construct that is rarely encountered in the real world. When I say „it is warm outside” on the first day of spring, is the temperature the same as when I said it while vacationing in Dubai?

Of course not.

We refer to reality, hoping that we have a similar context, but that is never true.

If we were to converse, there would be four sides to the exchange:

  • Me
  • My perception of you and your context
  • You
  • Your perception of me and my context

This is all very confusing.

Since we have no way of perfectly synchronizing each other hidden contexts, how can we be sure that the components of our exchange are entirely similar?

During millennia this was aided by non-verbal methods. The tone of voice, gestures, and body language are meant to communicate precisely that – the context of my emotions associated with the statement.

„Technically Correct” is valid only in the first order.

Let’s say I ate three croissants. This is, of course, purely theoretical since I would never, ever do such a thing, but let’s say I did.

Croissants that I made and have not even tried them, of course.

Now, chocolate-filled croissants are good. This is a true statement (there will be NO discussion over this).

  • The first-order consequence of eating a croissant is that I feel good.
  • But the second-order consequence is that my glucose level rises, and my body produces an insulin response.
  • The third-order consequence of a croissant-full diet is that my body gains fat, and
  • the fourth-order result is that I get diabetes or cardiovascular disease, or both.

Is the statement about “croissants being good” a false one? No, it is still technically correct while neglecting higher-order consequences.

These first-order-good and higher-order-bad consequences of the same behavior land us in trouble regularly:

  • Driving a car to work may be more comfortable, but it’s leading to an ecological apocalypse,
  • Scrolling Facebook makes you feel like you are connecting with friends, but it’s eroding your ability to keep these relationships off-line.
  • Praising your kid for good grades now will make him feel better, but if he did not deserve them, he would have real trouble with self-esteem once those straight A’s are harder to come by.

Focusing on higher-order consequences of our choices may be the key to success, and being stuck in first-order thinking can lead to disastrous outcomes.

People don’t appreciate correcting.

They don’t appreciate unsolicited advice either – that is a lesson I am still trying to internalize.

People don’t always remember what you said, but they sure as hell remember how you made them feel. And how do they feel when you interrupt them to point out the dubious nature of a minor detail in the story they’re telling?

„Oh my, how good that Artur just pointed out I was wrong. Thanks to him, I will not be wrong anymore. He is so smart!

HELL NO.

They will remember that you are a prick that cannot sit still for a few minutes without stealing attention back for yourself even if you are right.

Correct is not the goal.

At the end of your life, there is no medal for the # of correct statements you have stated.

Truth matters profoundly, especially in this day and age, but mostly because of the outcome.

Let’s say you’re helping your diabetic grandpa with his groceries, and you witness him replacing cake with oranges. Both of these reactions would be correct:

  • “Grandpa, oranges have a lot of fructose and will spike your blood sugar as well. You should stay away from any fruit.”
  • “Grandpa, this is a smart choice. Keep it up.”

I would say that even though the former one is very technically correct, it is also less helpful. I can imagine my grandpa throwing a tantrum: “to hell with all that, am I only allowed to eat salad like a rabbit?”

Croissants that I made and have not even tried them, of course.

If my goal is to help him, he needs encouragement towards a healthier lifestyle more than my smartass comments. Oranges are still better than cookies and help to build a habit of consuming less processed food.

Also, sorry for my fixation with blood sugar examples.

Is postmodernism the answer?

„Ok, Artur, you made some case against technical correctness. But should we then decide for ourselves what is correct and what is false? Focus only on subjective reality, as postmodernists suggest?”

NEVER!

Instead of focusing on yourself and proving how smart you are, try focusing on being helpful to others.

When you free yourself from the burden of “the one truth,” you can acknowledge many possible interpretations of the same set of facts. Choosing the most helpful one is the only sane option.

The core of the scientific method is the predictive value of a theory. If said theory can predict the outcome of an experiment, it is true. In other words – it is helpful. Ensuring helpfulness will not let you stray away from objective reality.

If you try to be helpful, you have to get rid of your self-righteousness and do the humble work.

Above all, helpful truth will help you make the right choices. Technical correctness can only be used to judge choices. Let’s make some good choices and stop judging.

No one really means to be mean

This post has been previously published on Maria’s blog

When was the last time you spoke to customer support? Bet you didn’t reach out to them to speak about how awesome they are?

Most people, myself included, only contact support if there’s absolutely no other way to get something done. I’d much rather fill ten online forms than call my bank, phone carrier, or accountant. If, and only if, I run out of other options, I may consider jumping on a call–and by that time I’m already tired, confused, and grumpy.

Knowing this, I can’t help but empathise with customers who reach out to us. Given how upset and frustrated I must be to even consider speaking to someone, I’m impressed how most of them are very polite and friendly. It’s a pleasure to assist them with whatever problem they have, and seeing their gratefulness is my biggest reward.

Still, for every few dozen polite customers, there’s always the one way past their boiling point.

Photo by Icons8 team on Unsplash

Sometimes it’s due to a bug, other times it’s due to a misunderstanding. In most cases they’ve had a pretty bad day.

I know how it’s like to be too upset to hear any rational arguments. This doesn’t make it any easier to be on the receiving end of sarcasm, accusations, shouting, or foul language. After all these years, these things still do push my buttons sometimes, especially if I’m having a difficult day myself.

Once I feel the adrenaline rushing through my veins, it’s tempting to defend myself and the company I work for.

“If you followed our guidelines on how to test new updates, you wouldn’t have this problem now”. “You completely misunderstood the document that we’ve sent”.

It might be perfectly true. This doesn’t make it helpful, as it will only set the stage for the rest of the conversation in terms of whose blame it is.

Another strategy is to ignore the emotional content entirely and focus only on the technical part of the problem. This might sometimes work, if I’m able to solve it all on the spot. In most cases however, I can’t do a thing if the customer doesn’t cooperate. And the one thing that guarantees they’ll ignore my instructions completely is saying

“Hi there! My name is Maria and I’m happy to help you with this :-)”.

Good for you that you’re happy. You know what I am? I AM BEYOND UPSET with this unbelievable mess that you guys created. Now go and clean it up.

The only way out is all the way in

Photo by Tadeusz Lakota on Unsplash

When someone’s shouting and swearing, it’s tempting to reject their entire message as violent and untrue. But deep below the anger there’s often a call for help. I get to choose whether to address the words themselves, or the pain that lies beneath.

When someone says “your product is a fucking piece of shit”, they don’t actually mean it. What they often mean is there’s a deadline tomorrow, their client is impatiently lurking over the shoulder, and no matter what they do, the credit card form just wouldn’t show up, the whole store is non-functional, and everything is heading towards a disaster.

Hearing the first sentence, I would be justified to take offence, say I will not tolerate verbal abuse, or tell them they’re more than welcome to choose someone else’s product that is not shit. I’ve been tempted to do this, multiple times. But if my job taught me something, it’s that no one really means to be mean. They are doing whatever they can, from whatever tough place they found themselves in, hoping this will help alleviate their pain. I’m quite familiar with how it’s like to be in such state.

It’s not easy to acknowledge the pain that someone’s going through. My high empathy often turns me into an emotional sponge, for better or worse. Opening up to other people’s emotions means I might get flooded and overwhelmed, especially if I have no tools to help them. I have seriously no idea how nurses, doctors, social care workers, or therapists can deal with life and death problems they face in their work. Seriously, big kudos to y’all.

It’s not easy to acknowledge the pain, but it’s the only way out. Unless you think I’m on your team, there’s little chance you’ll follow my requests, without which, we’re both stuck. We can spend all the time in the world talking about policies, recommended processes, things that should have been done, or words that shouldn’t have been said. Or I can see through the clumsy words you used to describe your problem and say

“I hear you. I can only imagine how stressful it must be to hear the clock ticking before the great launch tomorrow and still be unable to accept any payments. I would be terrified myself! Let’s see how we can fix this together.”

Wouldn’t it be great to do the same when talking to family and friends?

Photo by Zach Reiner on Unsplash

It’s ironic, but in my personal life, I am often that person who screams and panics a lot. I spend all day managing emotions of strangers and have little space left for other emotional challenges. When these inevitably come, I tend to get overwhelmed.

My partner often wonders if customer support is the best career choice for someone as empathetic as me. From time to time, I wonder about this as well.

But no matter what I do for a living, I can’t run away from people and from the pain that they carry. I tried shutting down to it, and believe me, it’s not a great option either. Ignoring the feelings of others only leads to hurt, resentment, and misunderstanding that can live on for years.

Perhaps I should view my work as a practice ground. If I practice this emotional alchemy when it’s not live or death, doing this will come easier when it matters most. It’s easier to see through the anger of someone I don’t know at all, than through my partner upset about the things I hadn’t done, or a political discussion over family dinner. But with time and patience, I’ll eventually get there.

For deep under every angry statement about immigrants, white men in red hats, or mess on the kitchen counter, there lies fear and hurt that has nothing to do with the issue at hand. And if you address it directly, people will put their guard down, knowing you’re on their side.