TIL
Things I've learned
-
Conversational affordances
Listening to JSParty introduced me to an excellent article Good conversations have lots of doorknobs.
The most exciting bits was the concept of conversational affordances and how they they're the key to conversations that click. This comes on the tails of recently reading How to Win Friends and Influence People and The Fine Art of Small Talk. I find the concept of conversational affordances a more refined and realistic take on the general takeaway of those two books: Listening is an essential part of conversations; Pummel your ego out of the way as much as you can.
Three bits that really stuck with me were
Conversational affordances are things like digressions and confessions and bold claims that beg for a rejoinder.
What matters most, then, is not how much we give or take, but whether we offer and accept affordances
Conversational affordances often require saying something at least a little bit intimate about yourself, so even the faintest fear of rejection on either side can prevent conversations from taking off
This was one of those articles that felt like I came across it at exactly the right moment, primed by doing Improve, interest in improving my conversational skills, and having spoken 2 hours earlier with friends about it.
-
Presence and Souls
Listened to two fantastic podcasts today Rick Glassman and The Fundamentalists
The most interesting tidbits being
Harry Mack stating
Being true to your self is about being present
And from the Myth of Hustle Culture
To be human is to desire knowing what the other wants
The soul is that which turns events into experiences
-
Rap Theory & Practice
YouTube's algorithm recommended a fascinating lecture from MIT by Lupe Fiasco Lupe Fiasco presents “Rap Theory & Practice: an Introduction”
Of which the most compelling aspects I found were:
- Pondering things in terms of themselves. In the video, Lupe uses forming an acronym from RAP as the example but urges the audience to consider the same for their roles and passions in life.
- Being intentional about the balance between shape and detail when thinking.
- A sub-detail of that that seems valuable is practicing being more aware of when a context is focusing on the shape or the detail of a given artifact or topic.
- Being intentional about learning, because it will happen whether you consciously choose to or not. And in fact makes it more enjoyable.
Some other carry aways I'll be pondering:
- How can I utilize surprise, or schema deviance, to make conversations, speeches, presentations, and other forms of information distribution stick better?
-
The 1975 Interview
The YouTube algorithm recommended The 1975: ‘Being Funny In a Foreign Language’ Interview | Apple Music of which I've developed a great deal of respect for Matt Healy, his outlook on life, and his ability to articulate it.
The part that stuck out was a word he made up and defined: sceneius
Someone of exceptional capacity to recognize an environment and create new something from it
This is a paraphrase of the actual quote but I think it is quite accurate. It really opened my eyes to the commonalities between music and starting a business/disruption in general.
A person with vision for a successful disruption not only needs to:
- have a good idea
- the capacity to execute on it
- be capable of explaining to others their idea
- understand how this idea differs from what's come before
But they also need to be able to read the scene or environment to know if this is the right moment to introduce a disruption. It's not uncommon to hear of failed startups because it "wasn't the right time"
-
Deriving Deserialize on Structs as Arrays
Was watching Decrusted: Serde and found out when you derive
#[serde(Deserialize, Serialize)]
it can be to an array as opposed to a mapping of some key:value.This is especially helpful as I've got some little automations which query Fastmail via jmap which heavily utilizes arrays for defining what query to run.
i.e.
#[derive(serde::Deserialize, serde::Serialize)] struct RGB { r: u64, g: u64, b: u64 }
can correctly deserialize
[12,222,55]
into a Rust struct with named fields! -
impl anyhow Errors into Axum Responses
Been playing around with reimplementing this site using axum and maud, using incremental static generation.
Took my eyes awhile to see the axum example of how to convert anyhow errors into axum Responses.
Quite simply, it is.
struct AppError(anyhow::Error); impl IntoResponse for AppError { fn into_response(self) -> Response { ( StatusCode::INTERNAL_SERVER_ERROR, format!("Something went wrong: {}", self.0), ) .into_response() } } // This enables using `?` on functions that return `Result<_, anyhow::Error>` to turn them into // `Result<_, AppError>`. That way you don't need to do that manually. impl<E> From<E> for AppError where E: Into<anyhow::Error>, { fn from(err: E) -> Self { Self(err.into()) } }
-
Sympathy vs Empathy
Today's debate was about the difference between sympathy and empathy. The best explanation we reached was the following:
You're sad because you lost your chocolate.
Sympathy is that I'm also sad because I know how it;s like to lose chocolate and it makes me sad that you lost your chocolate.
Empathy is that i know how much you like chocolate and because you lost it, I know how sad that can be. I don't even have to be a chocolate lover to understand that.
-
Iterator Chaining
Trying out Simon Willison's suggestion about what to blog about.
TIL, chaining iterators in rust doesn't mean that each operation happens on the entire list in each step, but all of them occur on the current element in an iteration.