Home is where the feeling of home resides

5 minutes read reflections

For most of my past two decades, I’ve had great difficulty in answering the simple question: “Where are you from?” — Should it be the place I was born? or the place I lived longest? the place where my parents were from? Or the place I live now? or the place I feel the greatest attachment and separation from?

I was born and brought up in Coimbatore, in Tamil Nadu, which comes in the southern part of India, while my parents were from Kerala with my mother tongue Malayalam. Tamil Nadu and Kerala are neighboring states, and because I was surrounded by my Tamil neighbours, I ended up speaking more of Tamil with my classmates, and became more strongly accentuated with Tamil, much to the embarassment of my family circles who noticed my slippage from purist Malayalam, to a more varied one with occasional Tamil words thrown in.

My Malayalam ended up having a Tamil accent, and my Tamil ended up having a Malayalam accent.

English, strangely enough, was the only language that escaped this confusion, and it was neutral enough that whenever I spoke in English first, it was difficult to place me “where I was from?”. The neutrality in a way, helped provide me a comfy zone, helping me avoid the situation of having the explain myself and my complicated origins for the nth time.

I was also a by-product of tamil-malayalam bullying by my classmates, so I came up with an escape-mechanism in my eighth/ninth grade by self-accepting English as my mother tongue. No more identity crisis, problem solved. I could think and dream in English, and even the grass in my dreams grow in English, so why not?

English gave me this feeling of belonging, when both Tamil and Malayalam, whereas the languages didn’t. You might also note how I’m denoting the languages as personalities, because they were quite powerful forces that shaped my identity in different ways.

“Where are you from?” was really a linguistic nuisance, while masquerading the actual question of “where do you call home?”.

If I said I was from Kerala, some of them would probe further, “No, no, where are you really from?”. “Kerala” was not a clean answer, too. I had to be more specific here, was it my father’s side? or the place my mother came from?

Whenever I think of why I’ve struggled the most with the “Where are you from?” question, I now think that it doesn’t have anything to do with any proximity to a geographical location at all.

For a long time, Coimbatore was the easiest approximation I had for home. I was born there, I grew up there, my school friends were there, my parents and my sister too. So that was definitely capital H, Home. But ever since moving out from Coimbatore to take up my undergraduate studies, and eventually being more distant with my shift to Delft, and then London, the definition of home, Coimbatore remained the same.

It was only when I lost my dad, that the whole constituents of the definition of home started disintegrating. When I went back to Coimbatore after losing my dad, I found myself wondering whether Coimbatore was still my home at all. The city had not changed in any fundamental way, and some of my friends, people I had studied with all the way until twelfth standard, were still there. The place remained unchanged, but the meaning attached to it had changed.

You have people often quoting ‘home is where the heart is’, and as annoyingly cliched it sounds, it’s true. Home is an essence, that’s the sum of a large number of experiences, and in my case, it was spread across different places.

When I think of home, I now think of the overnight train journeys I used to take with my parents to Kannur from Coimbatore, where the egg biryani was served for dinner by the railway caterers, and in the evenings, the chai (sweet, milky tea) and the onion pakoda (crispy onion fritters). I think of the traditional festivals such as Onam, Kerala’s harvest festival, and Vishu, the Malayalam New Year, where a ridiculous variety of dishes were served on a banana leaf, as is customary during festive meals in Kerala. I think of waking up to the peacocks in the morning; an important constituent of the Coimbatore soundscape. I think of the velaatams in Kerala, ritual performances associated with local temple traditions, where we used to meet Muthappan, a folk deity worshipped widely in northern Kerala, and seek his blessings.

None of these things by themselves can be called home, and they do not even belong to the same geographical location, but together they seem to produce something closer to what I would call, “home” If home was not a pincode, then what was it?

And increasingly, when I think about this, I realise that the memories I had with my dad himself, was one of the things I had understood as home without ever naming it that way.

During Onam and other celebrations, when I was staying outside Kerala for work, mom and dad would send things to me and my sister. We could be living somewhere completely different, including London, and these things would arrive from him and mom, carrying a small part of what we associated with being back home. Metaphorically, I thought of this in a way that “home” was brought to us. Even while we were situated in London, even though we were not with mom and dad.

It took losing my dad to realise that Dad was home to me. The yearly parcels shipped from India to London, would never be touched and wrapped by his hands.

And I miss home. And I would continue to live with this unbearable suffering of continuing to miss him. And through the suffering, I remember him and remember home.

The Fight between Carnival and Lent, Pieter Brugel (a metaphor for the complex ecology of altruism)

I was intending the earlier draft to be a long-winded diatribe against EA (in short, for Effective Altruism), and half-way through writing this draft had realised how I was right, and wrong in some places. I softened my stance afterwards, after this chat I had with an hardcore effective altruist, who has been donating 10% of his salary every month for 10 years. I changed my viewpoint, and realised that no ideology is perfect, and SOME altruism, is better than no altruism at all. After all, who was I to judge them in my high-horses to tell that they are wrong? But I also came to a conclusion that SOME altruism is better than MOST altruism, which is not a popular perspective people have. And I am going to use this essay as a vehicle to propogate this meme.

And to articulate this opinion, I’ve ended up with pure, raw notes around fundamentally three variants within altruism: effective altruism, obligatory altruism, and excited altruism. These bulleted notes would be in a similar fashion of Wittgenstein’s Philosophical Investigations, I will be meandering around the topic of altruism, forming a haunting constellation, if at all anything. I will criss-cross the terrain, rather than take a singular express highway. This, I felt was the best way to describe my complicated opinion on altruism: on what it means to live good, do good, do some good, or do most good1

  1. EA at best is a flawed philosophy with GOOD intentions. Now that this has been converted into a form of pseudo-religion in the Bay area of SF, points to the fact that it’s working at scale, and helping convert the masses to practise altruism. I appreciate this in the same way I appreciate charitable education conducted by the Catholic churches — flawed philosophy with good intentions, and occasionally conducting benevolent practises. Religions, whatever else they do, are behavioural technologies, they make people actually do things. If a pseudo-religion convinces a software engineer earning $250k to donate 10% of their salary every year to malaria prevention, this is already considerably more altruism than a philosophy which produces excellent dinner-table conversations and zero mosquito nets (we will come back to mosquito nets in some time)

  2. Say if you had 5000ascashathand,EAwouldtellyouthatthebestuseofthatmoneyforaltruisticpurposeswouldbethendistributeroughly900netsataround5000 as cash at hand, EA would tell you that the best use of that money for altruistic purposes would be then distribute roughly 900 nets at around 6 each, so that you could effectively prevent ~1 expected death. The actual GiveWell model is much more detailed than that, but you get the point. Saving a malaria-related death might be the best use of that $5000 to save a person’s life. To me, this does sit strangely in my mind, it’s rational, but counter-intuitive? So, I just stop giving tips to the homeless person on the street close by?

  3. And if I do give that homeless person £10, why would I do that? That £10 could have gone somewhere else. The £5 coffee, or the €20 donation to the local friends charity, could have gone somewhere else. Once morality is phrased as an optimisation problem, everything acquires an opportunity cost. In this framing, genuine generosity starts producing guilt.

  4. I did mention earlier that EA is a flawed philosophy, but one thing which it does well is to make altruism “legible” by being measurable. Putting mathematical effectiveness into altruism itself is a different mode of thinking. And it gives legibility on various levels. First, it has a crystal clear vision to “do good as much as possible”, without much ifs and buts. Clear success metrics, clear everything. Illegibility for EA folks, is viewed rather as something to be conquered and minimized. The bureaucrat’s war cry becomes: okay, this thing is difficult to measure? let’s figure out how to measure it! Whereas, most organisations are very “fuzzy” in terms of legibility, think of Amazon and think of Google, how coherent are they with their marketese, and what they do internally? But not with EA..

  5. The fact that EA is not “illegible” also brings forth a lot more side effects. Just like how agrarian societies had foundational inventions in the storage of grains through agriculture etc making it “easy to store”, it also became easy to tax as a side effect. These were all side effects despite the larger benefit of being able to “feed as much grains to as much people as possible”, sounds pretty EA-esque doesn’t it? Morality becoming legible leads it to be: countable, comparable, fundable, rankable. These are all good things, but certainly there are side effects?

  6. James C. Scott (famous for his central idea around legibility) has this recurring suspicion towards systems that improve legibility. Making something legible is not itself bad, governments and organisations need legibility to function. The problem comes when the map slowly starts replacing the territory. If a forest is measured only in terms of timber yield, then bushes, mushrooms, insects, decomposing wood, villagers gathering firewood, children playing, all start looking like irrelevant noise. Morality can undergo the same flattening. The person who spots something nobody else spotted, the friendship which keeps somebody going, or the art which changes somebody’s life without producing a measurable DALY are all examples of things whose value becomes easy to ignore merely because they remain illegible.

  7. To illustrate the “harmful” side effects of legibility: let’s say, you’re reading your favourite book because you love reading it, versus reading the exact same book because there is an exam tomorrow and you need an A+. Externally, the activity might look identical. Internally, these are completely different experiences. In one case the book is an end, in the other it is purely a means. I have a suspicion that a lot of maximised altruism turns life into the second kind of reading.

  8. By trying to argue against EA with reason and scientific temper, is in a way endorsing the view which EA poses. To use critique and reason to do “most good”. Disagreement over which activity does the most good, does nothing to touch EA. This is something like EA-judo. You say “maybe AI safety isn’t the most important cause”, they say great, let’s investigate which cause actually is. You say “maybe animal suffering is undervalued”, they say great, let’s update the model. You say “your measurements are bad”, they say great, let’s improve the measurements. EA happily eats most criticisms for breakfast. And I’m not telling you to NOT cultivate reason or critique, but…

  9. What might probably put an inkling of doubt on the premise of EA is the question on whether doing “most good” is indeed the right way to do things. My spicy take here is that this doesn’t make sense at all. To me, “some good” is better than “most good”, as the moment you tend to look at maximising the “most good”, you tend to look less at doing less of the “living good”. You could be this evil power hungry boss, who is making your employees work like slaves, but still donate 90% of your income to the most noble causes that do the “most good”. There is something deeply strange about a philosophy under which this “evil boss” could theoretically become a moral superstar without becoming a nicer person. He could shout at everyone in the office, destroy people’s self esteem, never call his mother, exploit the cleaner, and then calculate that his £2 million annual donation to malaria prevention outweighs every other shit-show he is culpable of. Under the calculator, maybe he comes out net-positive.

  10. “Living good” does seem to be more important than “most good”, as your life is synchronous. If your inner life, and your outer life is not synchronous to the altruistic values you stand for, you feel like shit (which also explains why many hardcore EAs have a crash after practising for 7-10 years and become epistemically lonely). By delegating your morality to an external organisation, you’re also getting dictated by an external compass. When this happens, your internal moral compass gets weakened, diluted, and watered down.

  11. EA is rightly suspicious of altruism which exists purely because it makes the donor feel warm inside. Fair enough. Donating £100 to something useless because the website has a cute puppy photograph is not necessarily better than donating £100 to something boring but useful. But does feeling become morally irrelevant? Especially when the head usually rationalises what the heart had already pointed towards? Reason often comes as a retrospective justification for what emotion has already selected, so there IS a difference here when it comes to “feeling good” and “doing good”. And you cannot just completely dismiss this stance.

  12. The utilitarian calculus sitting behind the EA worldview also starts generating increasingly strange outputs the more seriously you take it. Why give 5toyourlocaloperawhenthesame5 to your local opera when the same 5 could contribute towards saving a child in Bengal? Okay. Why give money to museums? Why spend government money restoring old buildings? Why maintain a library? Why spend money on flowers in public parks? Why spend £200 on your own wedding?

  13. I know the standard response here: no serious EA actually behaves like this, there are weak-EAs, strong-EAs, hardcore-EAs, integrated-EAs etc etc. Strong-EA treats “do the most good you can do” extremely seriously. Weak-EA says maybe donate 1%, or 10%, think carefully about where the money goes, don’t ruin your life. All excellent advice!

  14. Say you had to choose between preventing one person from being slowly eaten by sharks, or preventing a googolplex number of people from experiencing a hiccup. If a hiccup has any negative utility whatsoever, there must theoretically be some sufficiently enormous number of hiccups whose summed disutility becomes greater than the shark attack. Another case of repugnance. So many of these edge cases when we apply EA ideology, that I don’t think they’re edge cases anymore..

  15. But perhaps good and evil do not form a single well-ordered set in the first place. Some goods are comparable, while others are not, and can’t be put under the same set. £10 versus £100 given to the same intervention, fine. Saving ten lives versus saving twelve comparable lives, perhaps fine. But warm socks, beautiful music, friendship, hiccups? If somebody stood above a shark tank holding both the cure for all future hiccups in one hand and a little girl in the other, and shouted to the planet “I can only save one”, I suspect the planetary vote would be close to 100% for the girl. The utilitarian might complain that our intuitions are biased. Maybe. But when a moral philosophy repeatedly concludes that ordinary moral intuition is malfunctioning, at some point I begin wondering whether the philosophy is the thing malfunctioning.

  16. Consider also the decision to have a child. You can make a spreadsheet. Less disposable income, less sleep, less free time, more stress, nappies, school fees, childcare, climate impact, one more human consuming resources. Why would you then even go for a child? Before becoming a parent, the costs placed on this spreadsheet are absurdly legible. But the actual stuff for which you become a parent is bizarrely illegible. “Meaning”, “love”, “becoming a different person”, “having this particular human being exist”, all these are not legible, and cannot be placed even, on Excel columns..

  17. This is what the book by Russ Roberts titled Wild Problems gets at. Some decisions cannot be evaluated merely by asking whether they are “worth it”, because choosing them changes the person doing the choosing. Before becoming a parent, you cannot fully know what it is like to be the future version of yourself who is a parent. Marriage, friendship, art, migration, religion, vocation, parenthood, perhaps altruism itself, all contain this property.

  18. Which brings another axis missing from the utilitarian ruler: meaning. Meaning lets us voluntarily absorb enormous amounts of short-term suffering. Someone trains for a marathon and willingly suffers. Someone spends five years doing a PhD on an obscure fungus. If pleasure minus pain was the operating system of human life, half of civilisation shouldn’t exist.

  19. There could be meaning even in cleaning and washing dishes. If washing dishes is purely instrumental — dirty dishes → clean dishes — it is annoying. If you somehow start enjoying the warm water, the small act of restoring order, noticing stains others would have missed, suddenly some part of the activity becomes an end in itself. What I’m trying to get at is that if you take enormous care of a single specific person and do that for the rest of your life, you would still “feel” good about it, and also make this conclusion that what you’ve done is right..

  20. The head can’t even do head stuff without the heart. We’re narrative creatures, and it doesn’t feel right when we try outsourcing judgement to a game of numbers (eg. the EA leaderboard). Narratives go a long way. In Charles Stross’ Singularity Sky, you have civilisations so technologically advanced that once space, matter and energy are solved, narrative becomes one of the remaining games worth playing. Even the Hindu God, Krishna, depicted as omnipotent and omniscient, is weirdly left with leela (narrative play), relationships, and rasa as there is nothing else to do (apart from spinning stories) once you’ve conquered everything. So is the answer then that we should strive not for “most good for most people”, instead strive for “most effective story of good” ?

  21. Take Rachel Carson’s Silent Spring. The raw scientific evidence around DDT mattered enormously, of course, but the thing which escaped the laboratory and entered public consciousness was a story about a spring without birdsong. Nobody remembers a pesticide-effectiveness leaderboard. They remember the framing, the image. This is an example of “most effective story of good” in this marketplace of ideas, which worked. 

  22. This is another reason why the “altruism leaderboard” feels morally repugnant to me. Not because ranking interventions is always useless, ranking is obviously useful when allocating constrained resources, but because the ranking starts pretending to have fundamental moral status. Who knows what could topple this board? Is it AI-safety related p-doom risk? Should we all just put more money into AI safety to save more people’s lives?

  23. Imagine if the universal gravitational constant kept changing depending on whether you were in Manchester, Bangalore or Alpha Centauri. You wouldn’t preserve the theory by adding increasingly elaborate footnotes: “gravity is universal except Tuesdays in Manchester, where use equation B”. At some point, you probably need a different theory. So if effective altruism is dicey philosophy which still works mostly, we need to replace the philosophy with a better one. Ideology should also be subjected to falsification, like science.

  24. I think the maximalism in EA — the phrase “as much as possible” — is where much of the trouble originates. I’m much more interested in two other questions: what ought I do, irrespective of whether I am excited by it? And what altruistic things am I unusually excited to do, such that I might happily carry them for 10 years?

  25. Obligatory altruism is the boring one, and therefore perhaps deserves more respect. You do something because you ought to do it. You take care of your parents because they are your parents. You show up for a friend because they are your friend. You help the person who collapsed beside you because they collapsed beside you.

  26. There is something like an essence to friendship. There is something like an essence to art, to paintings, museums, music, taking care of children, keeping promises, feeding guests. I know “essence” is a dangerous word and philosophers will arrive at my doorstep with pitchforks, but I do believe that there is this Aristotelian essence in the good things we see in this world. You do not read Dostoevsky because RCTs demonstrate that Russian novels produce 0.03 additional units of moral enlightenment per hour. Beyond a certain point, you don’t give two shits about whether there is any peer-reviewed published science that corroborates your actions..

  27. Excited altruism is the other direction. Perhaps the most personal is also the most altruistic, precisely because you carry it with your heart. Someone obsessed with blindness might spend their life designing tactile maps. Someone who cannot stop thinking about abandoned dogs might build the world’s best shelter software etc, where the excitement itself becomes the fuel for your engine.

  28. This is obviously dangerous if taken alone. “I am excited about helping rich people buy nicer yachts” is not redeemed merely because I’m excited. Personal preference itself can be morally stupid. Which is why I’m not proposing we replace one universal theory with another universal theory called Excited Altruism™, create an EA Forum competitor and start ranking excitement-adjusted charitable interventions.

  29. Maybe the correct architecture looks more like a barbell. Keep one part deliberately boring, legible and effective. Donate 1%, 5%, 10%, whatever amount you can sustain, to highly effective organisations. Let GiveWell do spreadsheet things. Let somebody calculate mosquito-net coverage, vaccination effectiveness, cash-transfer multipliers etc. This is useful machinery and we should probably use it. And then keep another part deliberately illegible. Help your neighbour. Teach somebody something. Volunteer locally. Support an artist you love. Spend ridiculous amounts of time on a cause which you have no RCT proving will work, but which you cannot stop thinking about.

  30. Nassim Taleb’s barbell strategy was originally about surviving prediction errors: be extremely conservative in one part and extremely aggressive in another rather than mediocre everywhere. Something analogous might work here. Keep a portion of altruism extremely evidence-driven, boring, repeatable and legible. Let another portion remain high-variance, personal, local, experimental, excited and gloriously difficult to quantify.

  31. A world in which nobody ever donated to a museum because mosquito nets always rank higher would eventually become a very strange world. A world without useless mathematics, experimental poetry, cathedrals, obscure archives, weird instruments, regional dances, philosophy departments, restoration projects, public gardens, old libraries etc would ALSO be a strange world.

  32. There is also something suspicious about EA’s hostility towards proximity. The child in front of you matters more than a statistically identical child 5,000 miles away. We live inside families, streets, neighbourhoods and cities and it’s a struggle NOT to have our morality embodied in it..

  33. Perhaps the topic of proximity when it comes to morality is not that it should be a local versus global argument..seems to resemble more of a fractal looping pattern. There is this lovely framing in politics which explains how our ideology shifts with scale: “With my family, I’m a communist. With my close friends, I’m a socialist. At the state level of politics, I’m a Democrat. At higher levels, I’m a Republican, and at the federal levels, I’m a Libertarian.” The exact politics isn’t the point. The point is that different scales may legitimately even require different moral systems. With your child, impartial utilitarianism would be psychopathic. If your daughter needs £20 for school shoes, you don’t open GiveWell to check whether another child somewhere else has a higher marginal utility for the same £20. You buy the shoes. This is your daughter. Nobody would do that..

  34. Expand one circle outward. Perhaps moral concern can expand outward without erasing the special significance of what’s near you. Expanding the blast radius of altruism doesn’t require us to flatten the landscape. Some of the more interesting EA off-shoots have independently ended up somewhere near this idea under names like “integral altruism”, where global scope-sensitive impact is deliberately balanced against intrinsically valuable local things such as friendship, love, beauty, family and the sacred. Which is funny, because after travelling through several thousand words of utility calculations, we seem to have rediscovered the original definition of grandmother morality.

  35. Which makes me think morality is perhaps less like an optimisation algorithm and more like an ecology. It has multiple species in it. Obligation. Love. Excitement. Effectiveness. Loyalty. Beauty. Justice. Mercy. Meaning. Proximity. Impartiality. Try converting the entire ecology into a 1D-map and you may get phenomenal short-term yields, but you’ve also made the soil extremely fragile. Just like what high-modernism did to German forestry, they turned them into a monoculture.

  36. This is probably where I have moved the most while writing this. My initial instinct was: EA is wrong, therefore reject EA. My current instinct is almost the opposite: EA contains a tool which is so useful that it becomes dangerous when promoted into a complete philosophy of life. Cost-effectiveness analysis is excellent. Evidence is excellent. Reason is excellent. Mosquito nets are excellent. But “most good” is perhaps better treated as one instrument inside morality rather than morality itself.

  37. So perhaps some good > most good, but only in the strange sense that some good sustainably woven into your life may be better than permanently trying and failing to optimise every moral decision. A person donating 10% for forty years, helping neighbours, caring for family, making art and being a decent colleague might do considerably more good than someone who spends three years trying to become morally optimal, burns out, becomes a husk, and never wants to hear the word altruism again.

  38. Obligatory altruism gives us the things we must do even when we are not excited. Effective altruism gives us tools for asking whether our actions actually work. Excited altruism gives us the energy to attempt things which no spreadsheet could have instructed us to care about in the first place. If we go with our earlier direction that morality is an ecology, this line of thinking makes sense. These are not competing religions. The trouble begins when one organ decides it is the entire organism.

Notes on London

10 minutes read travel
  • Lévi-Strauss, the anthropologist who studied how early human groups revered animals and plants, noticed how tribal totems kept manifesting in every culture he studied. One clan had the black cockatoo, and the other clan had the white cockatoo. The choice of the cockatoo was not entirely arbitrary, they were inherited from the local flora and fauna. Whenever I take a walk through London, I’m observing similar totems similar such as cockatoos that are revered, as described by Strauss. You have the Daunt or the Notting Hill tote bag, the bright orange Penguin paperback, the MUBI beige cap, the Fortum and Mason bag, the Brompton folded beneath a pub table, all these are totems demarcating the London social world.

  • The Cities and Ambition essay by Paul Graham talks about the true unique gestalt captured in the air, in the city. The main thesis is that every city is whispering a different message into your ear — New York is telling you to make money, Boston or Cambridge is telling you to be smarter etc. London as a person has constantly been screeching into my ears “high-culture”. What I mean by “high culture” is not the high-fashion kind, but it’s just that culture itself is held in high esteem. Posh, sophisticated, and suave. And high-culture is everywhere, the V&A, the Wallace Collection, the National Gallery, the Royal Academy, the Tate Britain, the Barbican, the Royal Opera House, the Kenwood House, the Liberty, the Fortnum & Mason etc..

  • There is also a restaurant for every nationality in this world here in London. I’d run this claim with ChatGPT and Reddit to see the veracity of this claim, and surprisingly I found this map which contains exactly that! All the countries and the restaurants listed here (contains roughly 195 of them). “Diversity is our strength” is the selling point that brought a lot of diverse ethnic groups across the world here in to London in the first place.

  • Talking about books, everyone around you is reading books everywhere. With Londoners, approaching a stranger and making contextual inquiries fascinated by the book someone is reading is also socially acceptable. Performative reading exists, and in a way, it’s quite okay, and that’s good?

  • London also has a surprising range of weird and wonderful potatoes. At M&S, You have the Maris Piper, the King Edward, the Charlotte, the Jersey Royals, the freshly born, baby, new potatoes, red varieties, the baking potatoes, the salad potatoes, and so on. There is something distinctly British about this. Potatoes here are treated almost like a small taxonomy of ingredients: one for roasting, another for mash, another for boiling, another for salads. The taxonomy of potatoes you find here, are likened to how you have a similar such taxonomy when it comes to rice in India — like how you have the jeeraga sambha rice for biryani, matta for morsel soups in Kerala, idli rice for fermentation, etc.

  • I once sat in front of a quadragenarian British white male at a Local Pret store. He despised me for sitting in front of him and wanted to avoid gazing at me directly. He then asked if I could sit somewhere else. I was surprised by his request and mentioned that I’m comfortable sitting here, as long as he is not expecting someone else to be seated in the place I’d taken. He then shouted at me for being too ugly, and said that I was disturbing his line of sight. I froze in a state of shock. This was not subtle at all; this was on-the-face, and about-the-face. In this frenzied state, I just obeyed, and took another seat, and felt, perhaps for the first time, how power worked and how being victimized felt. As an immigrant at that time, still looking for a job at that time, and with nothing permanent, I’d chosen not to fight back. Despite encountering similar such incidents on buses, trains, and in cafes, I prefer not to put the blanket of racism over a selective few profiles in a stereotypical format, but racism exists in London, and it’s not an illusionary black swan.

  • As I commute in and around Kings Cross, London, I’ve also noticed a particular dialect in the surrounding regions of central London. Initially I was thinking if this is how London spoke. Apparently, this is the ‘regional accent’ of the young working-class, an almost hybrid dialect by the name of Multi-cultural London (MLE), and Kate Fox in her book, Watching the English talks about how MLE incorporates various elements of the Carribean, South Asian, and African American speech patterns and vocabulary. In MLE, the ‘like’ becomes ‘lahke’, ‘that’ becomes ‘dat’, and virtually every sentence ends in ‘innit?’ or ‘y’get me?’ It sometimes even sounds a bit like fast pidgin, or a London version of a blasphemous creole.

  • Patriotism or any form of flag-cheering jingoism is virtually absent to non-existent here. Londoners do come out of their self-imposed exile of closet patriotism when there is especially a football game. The recent England games as a part of the FIFA was a spectacle, as the pubs nearby only started serving beer in plastic cups instead of glass. Any glass held by a Londoner has a high chance of being smashed and thrown at. Waving the national flag, cheering and dancing in the streets is a rare Pokémon to spot (I’ve never seen one as such)

  • What I observed about London, and UK in general is the care and undue attention they give for the design of everyday government software. This is a breath of fresh air compared to the Indian government’s official railway website (IRCTC). As a contrast, the IRCTC site has way too many buttons congested, sadly replicating the same in-person general compartment experience in a crowded Indian local train. Too much options presented simultaneously etc, so much so that it’s an epitome of broken UX principles. Whereas, the websites and the apps of NHS, and GOV.UK are extremely well-detailed.

  • By well designed, I’m not just talking about designerly visuals, layouts and pixels, crispy typography etc (that’s good too), What I mean by “well designed” is the importance given to second order, third order effects and the consideration given in the UX, UI and all that to even handle them. Even for a simple name input of a person, an ordinary service might be like, ok, we need first name, last name, so let’s capture that. GOV.UK is more like, ok, we need to identify the name of the person? why do we actually need their name in the first place? do we need it’s constituent parts? first name? last name? what happens when someone’s name doesn’t fit in to this? does failure in creating a name prevent someone from a legal entitlement? this is the level at which this has been thought through. The impression I’m getting from using the gov.uk site is that they’ve housed a philosopher-in-residence to ask such key grandiose questions..(they even have established principles on their website, and what a good ‘form’ should be designed as)

  • Talking about crispy typography which I left off expanding in the previous bullet point, the public display of fonts are quite tasteful too. One day, I spent almost 45 minutes immersed in a poster, which was printed on the side-panel of a bus stop. I was in love with the shape of ‘U’ (sorry Ed Sheeran). The way the shape of C was curving, and how the letter, ‘f’ stood elegantly on the invisible line without being toppled by its own weight. The dot above the letter i, the tittle. I was so much in awe, that I missed a couple of buses that were headed to my destination. I really don’t care. For the curious, I’m talking about the Johnston 100 Typeface commonly used across TfL (Transport for London)

  • Even the public services are well thought through. London Underground map is arranged in the layout of a circuit diagram, ensuring that it serves the objective, even at the cost of compromising on the geographic accuracy.

  • A friend of mine who visited me in London, and as my favourite past-time is with any such visit would be to go on a long rational-flanêur type walk across the streets. When encountered with this question on “what makes you stay in London? convince me to settle here..” I immediately exclaimed, “fresh air” immediately. Probably the easiest way not to die is with better air quality. Compared to 150-400+ across Delhi/Lahore, London is at 25+ in the US AQI scale. Obviously every place has it’s own charm, but if you’re preferring the side of environment, park conservation, air quality etc, London has that charm.

  • London is not exactly the birthplace of the age of reason, Enlightenment. Enlightement has indeed been polycentric with various such pockets where innovators and freethinkers thrived, and the London coffeehouses were a key part of how this culture became much more mimetic. You had the usual suspects such as Locke, Descartes, Hume, Kant, Montesquieu, Voltaire etc visiting such coffee houses. The British Museum has a great collection of Enlightenment related antiques.

  • The London metropolis grew around something that retained the morphology of common land. This claim is quite evident when we look at places like Hamstead Heath, or Hyde Park. The city grew around the forest, and visiting these places make this claim evident.

Parliament Hill, Hampstead, London, with the skyline in summer.

  • Not just these bigger parks, but you had had 100s of garden squares, of which several hundred were laid out in residential areas from seventeenth to nineteenth centuries. Instead of putting houses along a road and giving each house a large private garden, developers could concentrate the greenery into one substantial shared interior landscape and surround it with relatively dense terraces. This, I could see more of, especially in Elephant and Castle, and surrounding regions.

  • Healthcare service does a great job of triaging the most important and urgent, and giving them the utmost care, and the least important and least urgent, not giving them a flying duck. I had a headache once, and as it was a sudden one while waking up early, the NHS triaging system flagged this off as a red alert, and as such, because their conventional ambulance would have taken 15 minutes extra, they arranged a dedicated Uber (yes a private call taxi arranged by the government to expedite the process). They took me in, and checked my vitals at the hospital only to realise that it’s not “life threatening”. When that happened, they made me wait for 6 hours for a normal consultation, and in a span of a couple of hours, I experienced the full spectrum, from the high-importance, high-urgency care, to the low-importance, low-urgency care.

  • Homelessness is a real problem, and you see a lot of folks out there, on the streets, sleeping rough. Despite the shortcomings in their plight, I’ve usually observed them to be quite polite and courteous while asking for alms. I’ve seen more sentences started with “Could you please..”..

  • Drivers also strike great conversations, and I’ve enjoyed the Uber rides I’ve had. Weather and geography are great conversation starters. Commuters are expected to have a good grip of the railway lines, major commute connections etc. Conversations usually start with how bad the weather is, and then it goes into ‘Where do you live’.. and ‘How easy is the commute’ etc, and all these are just prep work getting us acclimatised enough to then talk about how hard life is, and what are our common struggles here..At the end of the ride, we reach the destination, and we’ve also moved from strangers to acquaintances.

I read Henrik Karlsson ‘s Looking for Alice essay recently. In fact, I loved it so, so much that I wanted to make both the message, and the medium beautiful. So I compiled his Substack series of essays into a joyous medium of an EPUB file, to read it on my Kindle.

The end of each essay, felt more like a stop at the railway station, a brief interlude to pause and reflect on the ideas that were being articulated. I then started scribbling down the ideas, at each of these station stops, and by the end of reading through it, I had a mind-map of how all these beautiful, juicy ideas connected with each other.

Of course, it’s hard to describe ALL the ideas that have been captured, I will only talk about those that have “impinged by neurons”, and have left a long lasting lingering effect, these are ideas that have left a residue after being seated in my mind for a while, not wanting to go..

1 Teaching in classrooms is an unnatural way to educate a child. The right way of children to learn is best described by Fiske, in what is called as “culture seeking”, where children need not be helped along with adults, they can sniff out and learn what’s useful and valuable in culture, and devour it, too.

2 The challenge with learning the ways of most bleeding-edge-of-tech is that most knowledge involves a tacit understanding, which can only be learnt while observing a master doing this craft. This reminded me of Auditya Venkatesh, a famous Indian landscape photographer, who had mentioned about serving as an apprentice to another eminent photographer, helping him out for 2 years, before establishing his own photography studio. Karlsson, also describes the method followed by Twitter’s Jack Dorsey, who claims to owe their programming skills by observing how experienced coders solve problems in open source repositories.Tacit knowledge is also anti-mimetic, it’s costly to spread the ideas, and in some cases, this knowledge could also be lost with time: for eg. the Polar inuit of northwest greenland who lost the ability to make kayaks.

3 Innovation takes time to diffuse onto the ether. QWERTY keyboards still exist as the convention, even though we have far superior options such as DVORAK etc. QWERTY was designed not to jam typewriters, and in some way, they’re purposefully made to make typing words slower.

4 Free market dynamics on education might not be that great an idea, as there are still important learnings any educated child should have. The best way to probably balance top-down, and bottom-up decentralised education is by providing adequate incentives for learners to clear the exams. Incentive design could be one way this problem could be solved.

5 Regarding the ideal form of curriculum, Karlsson aligns with what Christopher Alexander mentions in terms of “city as a school”, where he imagines the process of learning enriched by people all over the city: through contact with workshops, through teachers at home, or walking through the city, where you spot professionals willing to take students as their helpers/apprentices, learning, in that sense, is everywhere.

6 Thinking and writing are two separate processes. I used to mix them together in my writing, when I used to think a bit, write a bit, think a bit more, and so on. Now, I clearly demarcate these two territories, and provide ample time and space, for feeding and nourishing these two highly demanding tasks: writing, and thinking. For Karlsson, writing is “turning a net into a line”.

7 I didn’t realise that Christopher Alexander was a precursor to so many software principles, and best practises: Wikis, agile, object-oriented programming, etc. His key idea has been that architecture can unlock learning in a society. He proposed a new form-factor for schools, a series of architectural patterns that would weave those functions into the very fabric of society. We all know that “form follows function”, but the opposite of it, that “function is also influenced heavily by form” is undersold heavily as an idea. His two companion pieces, “The Timeless Way of Building”, and The Oregon experiment, 1912 pages with 253 architectural patterns, describes over and over again this concept.

8 One of the titles of his blog is that “A blog post is a very long and complex search query to find fascinating people and make them route interesting stuff to your inbox”, and this has stuck with me quite deeply. Not just to find individuals, but we have also found communities emerging this way, with examples that include Scott Alexander, or LessWrong which was summoned into existence by Eliezer Yudkowsky and Robin Hanson writing a series of “exceptionally powerful search queries (on overcoming bias)..”

9 The conventional mental model of learning is to be educated with a curriculum that best fits the average gaussian mean of the students learning the concepts. However, the other way to learn something is by being guided by those who have peaked in that domain — Finding the most talented person one can spot in the domain, and figuring out whom they are studying. Karlsson describes this method when it comes to scientific fields, where if you iterate enough, you will be able to find the top apex of the citation tree, who sit on the pinnacle of that domain. And he suggests to study them deeply and widely. For example, instead of a shallow read of a large number of papers from a domain, instead, if one really grokked the key papers well (for eg. the AlphaGo paper for reinforcement learning), the results are far more powerful. In this way, one imbibes the “healthiest norms” and internalize the good questions one can ask in the field. After all, good research also requires good taste in the art of asking novel, and interesting questions..

10 Karlsson describes how his one-year-old is in complete rapture when he first noticed a hen. And after a while, the hens do not surprise him anymore (as expected). Novelty is something that wears off over time, and to make hens interesting, one would start approaching this subject from various other topics: for instance — why did hens originally live in the jungle? what’s the biology of egg production? etc. in this way, the natural end game of any curiously motivated creature is to gravitate towards the ceiling of complexity. Simple things don’t surprise one anymore. Which is why, even the most prolific, seriously talented writers face a writers block faced with a blank piece of paper. As whatever they write, they’re surrounded by stellar complex pieces, and they’re faced with an insurmountable challenge of producing something which is far more “complex” and far more interesting than anything they’ve produced so far. This, as Karlsson describes, only leads to loneliness and sobbing. We’re shaken, and put down by the grandiose of our complex ideas.

11 Borrows and extends Vishakan Veerasamy’s idea of “good reply game”. This is considered as good etiquette to cultivate, for establishing oneself in the game of finding interesting individuals online.

12 Karlsson also describes his rather painful journey reading through autobiographical works of various prominent personalities such as Virginia Woolf, Thoreau, Descartes etc, and a pattern which he could find was the ability to be immersed in boredom for prolonged periods of time. Woolf in her works has lamented “I have to delve from books, painfully and alone, what you get every evening sitting over fire and smoking your pipe with Strachey etc”.. he claims that they get into a state of wild hallucination induced by overdosing on boredom.. (which I personally found very fascinating, and realised how less I indulged in this boredom-induced-psychedelic)

13 Talks about the ‘practise meant for the internet’, Karlsson has found it useful to use the internet when he’s sitting in his study, almost as if he were going to gym. He likes the ritual around “climbing the stairs, walking past the bookshelves, and sitting down at the desk”, helping shape his expectations with the hope that reading and writing with the aid of internet continues to be a salient practise.

14 His note taking system mainly consists of three pillars: list of projects, list of problems, and list of questions he is working on. This reminds me also of what Feynman used to cultivate as a practise which is to think of, the “12 key problems”. FIXME

15 Goal-driven attention provides a push to ‘chase your reading’. He cites this example of the experience while looking for a friend in the crowd, and suddenly, you start noticing the faces that otherwise would have just been a background blur. For Karlsson, if we have to get more value out of the books we read, we need to have a goal with the reading. A question which we’re curious to answer for ourselves. And if we’re always being pushed by the algorithms, then our mind will treat information in the same way it treats faces in a crowd.

16 An unconventional writing advice from Karlsson here is to not “optimize” for shipping more drafts as fast as possible to the public. Instead, there is a much bigger ROI if one where to optimize the blog which is already performing well..”If you have the taste and skill necessary to figure out how to improve an already written piece, doing so means you are starting from a place where the rate of change is higher than if you start a new piece. So why waste that and pull a new sample?”. He suggests, instead of pushing for quantity, to rather aim for quality that matches one’s taste ceiling when it comes to writing..

17 For learning new topics fast, a technique which Karlsson describes on how Michael Nielson does it, interested me. The trick here is to internalise the core fundamental lessons through spaced-repetition techniques, making it easier and easier to work those concepts in our head. This helps subconscious draw parallels. Nielson describes this process: “When you go deep, probing the assumptions, looking from multiple angles, and reformulating things in your own words, the ideas become part of you. This is one of the reasons why I write. When I unpack things fully, the ideas become objects that I can rotate in my mind.”. He had been so immersed in mathematics, contemplating it nearly every waking hour for decades—so his mind sprouted the most surprising and revolutionary affordances. Through spaced repetition based flaschards, Nielson is able to rotate the etymologies concerning the topic in interesting ways, so that he could get to creative resolution in any easy way, sparking newer ideas..

18 We spoke about the need for “overdosing on boredom”, without any stimulants, for cultivating intellectual thought and creativity. And Karlsson also notes the opposite of this barbell, which is to forcing yourself to produce more throughput. In fact, Knausgaard, the famous Norwegian writer describes how he used to force himself to write five pages a day to overcome his own tendency to freeze up in shame. Every time Knausgaard got acclimated to the pace of writing, he increased his quota so he would always be overwhelmed. At one point, he forced himself to write 25,000 words in 24 hours, about a third of a normal-sized novel. What I could sense here is that both ends of the barbell, the intense boredom, and intense throughput, are both useful, and can be adapted to specific situations, as and when..

I remember being a big fan of Venn diagrams while studying set theory from mathematics, back in high school. I never touched any of this set theory, and all that jazz after that brief encounter.

It was only recently while trying to navigate some complex decision making, that I realised how useful set theory is, as a mental model for visual reasoning:

All it takes is a bunch of circles, that’s all there is here to help reason complex decisions. I’ll start with the most simplest decisions, and visualise them through sets, and slowly turn up the notch, progressively increase the complexity of the decisions, to show how this could also be visualised.

Throughout, let: U = Universal set (all possible work, opportunities, artefacts or problems), A = User Outcomes, B = Business Outcomes, T = technology feasibility.

I’ll take you through a couple of examples, starting with the “sweet spot”:

ABTA \cap B \cap T

In this case, the feature that’s being planned to be built is aligning with the expected user outcomes, expected business outcomes, and is also feasible with the current technology. For eg. faster checkout performance, better for the business (more monies), better for the users who make payments, and also technically possible.

As someone doing product work, a term that’s usually thrown around quite a lot is alignment. If we look at this purely on a rational basis, without looking at the emotional component at all, alignment is ultimately about reaching an unified understanding of the collection of sets, and their relationships. In case of the “sweet spot” category, every set is aligned (user outcomes, business outcomes, and the delivery/tech team involed)


Everyone agrees, but impossible to build:

(AB)T(A \cap B) \setminus T

Helps users, but pathetic business case:

(AT)B(A \cap T) \setminus B

Could be a dream for users to have on the product, but very weak business case: for eg. accessibility concerns that are usually ignored, unless it becomes a part of compliance


Helps business, but users really don’t care:

(BT)A(B \cap T) \setminus A

Audit logs, account balance reporting etc, come under this category.

Now, what I’ve shown so far are the simple cases, which can also be explained verbally in a succinct line. However, we also see other more twisted cases:


Misaligned incentives:

(AB)(BA)(A \setminus B) \cup (B \setminus A)

Category of use cases that either only benefit just the user, or just the business. There are no overlaps, at all.


Valuable, but blocked:

(AB)T(A \cup B) \setminus T

For eg: user wants offline mode for their favourite app, but building that capability requires larger architectural changes which wouldn’t be possible


Most problems are nested within larger problems:

A1A2A3UA_1 \subset A_2 \subset A_3 \subset U

There is often a hierarchy of problems which gets missed accounting for. While discussing with others, this visualisation helps us know at which level of hierarchy we’re discussing the problem. Often we mistake one hierarchy for the other.


Requests (R) don’t match with Business goals (B):

RB=,R,BUR \cap B = \emptyset,\quad R,B \subseteq U

Let’s take an example of a CEO requesting for a dark mode to be added to the app, but then, adding dark mode doesn’t serve any user problem. It’s just a useless request coming in from an influential person, and the game becomes more political..


The balanced roadmap:

(AB)(U(AB))(A \cap B) \cup \bigl(U \setminus (A \cup B)\bigr)

Sometimes, some features dont fall into the intersection of user <> business outcomes, but still worth doing as a strategic technical investment, helping strike the ideal balance of today, and tomorrow


Ship obvious wins, while investing in platform health:

(ABT)(U(AB))(A \cap B \cap T) \cup \bigl(U \setminus (A \cup B)\bigr)

Mixing strategic bets with easy user wins:

(AB)((AB)T)(A \cap B) \cup \bigl((A \setminus B) \cap T\bigr)

Every disagreement is, at its core, a disagreement about boundaries. Alignment problems are usually about where one thing ends, where another begins, what belongs together, what doesn’t, what overlaps, what has been mistaken entirely, etc. All this is made super clear with the language of set theory. It gives a good technique to make these boundaries visible..

Everything around us is a relationship between sets, sets of sets, and sets of sets of sets:

Needless to say, that it just makes me want to stop arguing less, and just open up an Excalidraw instance, and start drawing colorful circles together. Alignment is then, lot less of an hassle..

#todo for https://substack.com/@christophestoll/note/c-292995087?r=1cfkf&utm_medium=ios&utm_source=notes-share-action

When we see two events, A and B, our natural tendency is to place a succinct left-to-right arrow —>, in between two events A and B. It hardly crossed my mind sometimes that A and B could be feedback loops. A could effect B, and B could effect A, and the effect of B effecting A, could effect the effect of A effecting B…. . Why complicate things isn’t it? We will just leave it as it is, after all simplicity is the ultimate sophistication..

Okay, enough of abstractions, let’s talk specifics:

  • I see a thing called a “problem”, and another thing called a “solution”, and I imagine the problem leading to the solution, or so the thinking goes.

  • I see a person being “religious”, and a set of rituals called “practice”, and I imagine the belief came first and the practice merely expressed it.

  • I see “aging” and “disease”, and I imagine aging as the background condition, while diseases are the foreground enemies we are meant to defeat.

As you could notice from the above examples, I kept mistaking the loop, for a A —> B type line.

Most of what we see around the world don’t work in a capital “L” linear way. by the end of this essay, I hope I’ve driven the point around self reinforcing feedback loops strong enough..

And even August Kekule, the German chemist famous for the discovery of the Benzene ring, had made the same mistake (but he did learn from his mistake, and was able to unearth the chemical structure of Benzene). He thought the benzene was a linear chain of carbon atoms, but the mathematics of the chemistry didn’t just add up if it were to be a linear chain.

To him, this was an unsolved enigma, a ghost in the molecular machine. So he was taking a sweet nap on a rocking chair in front of the Victorian fireplace, when inspiration struck him:

And in that sudden hallucinogenic drift, he noticed the benzene atoms dancing, whirling like a molecular conga line, before cooling into a ring and biting its own tail. The mythical ouroboros appeared.

How many of us are making a similar such mistake? Are we all mistaking the loop for a line? Could this visual of a snake eating its own tail, serve as metaphysical guide for us to think through reality and how everything is connected? Let’s look at these patterns in more detail:

problem  solution

In my first career arc of being an “fresher”, an inexperienced product newbie, I used to think of the problem and the solution as a traditional waterfall. You think of the problem, define the constraints, check. Head to explore solutions. Check. Finalise the solution. Check. And then pass it on, and move on to the next problem <> solution. It was supposed to always point right —>, from the problem and into the solution..

Jumping into “solutions” prematurely, before understanding the problem was also considered to be offensive in some circles.. as we have not thought through the problem completely, and that we’re not qualified to take such a serious move so early. This was the designerly equivalent of the cardinal sin.

It took me that entire decade and a Masters education in design methodology to help me realise that it seldom works that way, in reality. Problem and solution pairs are having a kekulean dance with each other, eating each others tail, biting and pouncing at each other until they end up with a better problem and solution pair. There is a co evolution which we miss noticing. In retrospect, it felt fairly obvious and I was scrutinising myself as to why I needed a masters education in design theory for me to be educated enough to know this..

Timing through solutions can help us think through the problems which can also help us think through better solutions.. while working on a recent creative experiment, I spent much more time cooking up multiple variations of the concepts through prototypes. I could have also gone the problem definition route first, doing informational interviews first, and assess which pain points are more important, and after all that, I could have then considered possible solutions. But the reality was quite zigzaggy. Those prototypes then served as better tools for enquiry helping me reach traction and momentum through them, the image of the double-diamond which is flashed left, right, and centre as a part of the designers indoctrination program across various universities seldom withstands contact with reality, this theory wrinkles and perishes with usage, as like other processes, this is also not a linear conveyor belt style causality..

belief  practise

I also then realised that I make the same mistake in other aspects too — bidirectional pairs, unidirectional pairs. This topic keeps coming up again and again..

Let’s talk about belief and practise. Tanya Luhmann, the American professor explores the relationship between belief and practise in her book—How God becomes real. She describes herself as “anthropologist of mind”. In her quest to understand the way people represent thought itself, and the way those culturally varied representations shape the most intimate experience of life itself.

This is Nielsen describing his own experience reading this book:

Tanya M. Luhrmann has written a beautiful book exploring this question, “How God Becomes Real: Kindling the Presence of Invisible Others”. The book explores the idea that much of the purpose of religious practice is to help practitioners believe. This inverts conventional wisdom, with Luhrmann taking seriously the possibility that sometimes people aren’t worshipping because they believe, but rather believing because they worship. More generally: Luhrmann makes a compelling case that there is a much more complex relationship between belief and religious practice than you might naively suppose, and she explores some of that relationship.

I used to think that people who are “religious” by spirit, also do practise a lot of rituals because they’re religious. Atleast that was the notion I was used to hearing. However, Tanya explores a different dynamic where she suggests that practise itself by virtue of practise — practise instils belief.

Personally, I come from the other side of the spectrum where I want to be religious for some reason, and I lack embedding some rituals in my day to day. This thought that religion and practise are a co-evolutionary loop gives me great hope. I’ve envied my mom, and my sister in the way they have cultivated their faith through practise: which involves chanting Hanuman chalisa, Vishnu sahasranaamam, Lalitha sahasranaamam etc and various other Hindu japa mantras in the evenings as a part of their daily/weekly/occasional puja rituals.

Right now, It’s 6:15 PM at dusk, an auspicious time usually meant for evening prayers, and here I am talking about the process of Bhakti (practise of worship), rather than doing the practise itself. How ironic, but I will get there.

Religious belief isn’t something that’s easily attained or endowed with, and it’s hard to tilt towards a religious worshipper from a somewhat-agnostic mode, unless cultivated with practise:

Let me review a few of the moves Luhrmann makes in setting up her project. She points out, convincingly, that religious belief usually isn’t something easily attained, despite the fact that many theories of religion “presume that belief is direct and unproblematic – that in most cultures, people simply take spirit and the supernatural to be there. That doesn’t make sense. Gods and spirits cannot be seen. You cannot shake their hands, look them in the eye, or hear their voice when they speak. It seems odd to assume that people just take for granted that they are present.”

I find it weird when I say this, but knowing this theory has actually makes me more religious. It has given me more meaning to what’s interpreted as practise. From the day I read this book review article on the co-evolutionary loop phenomenon exhibited by religion and practise, I am not able to unsee these patterns applied across everywhere. And there are more..

aging  disease

Now, the thinking here is Ageing → Disease, that as we age:

  • DNA damage accumulates.

  • Cells become senescent (they stop dividing but release inflammatory molecules).

  • Mitochondria become less efficient.

  • Stem cells lose their ability to repair tissues.

  • Chronic low-grade inflammation (“inflammaging”) increases, leading to more diseases, and ultimately death.

But now, increasingly, scientists are thinking that it is rather: Ageing ↔ Disease, instead of merely, Disease → Ageing.

With this U-turn in the direction of arrows, we have this bet that ‘aging itself is a disease’ which can be treated. And that part just blew my mind. We now have scientists trying to reverse the age of human cells, and we now have clinical trials trying to prove this in full swing. Newlimit is one such company, working in this bleeding edge of longevity with this same thesis.

“And by combating ageing itself as a disease, they want to combat all diseases.”

NewLimit uses RNA to switch on the combinations that make an old cell start acting young again. They already have a prototype that does this to human liver cells, healing the liver faster after injury and speeding up recovery from alcohol damage. the first human trial is set for 2027. Brian Armstrong’s company just raised $435M to do this.

What excites me from all this latest development in tech is not the fact that the age 120 stops being a fixed ceiling, or the fact that cellular reprogramming gives potential pathways to 150 years on average, but the fact that this all started with a smart framing of a statement that got flipped on its own head: “that ageing is a disease”.. who would have thought?

Most of us are primed to think linearly with “X causes Y” logic, but we have to adopt a systems thinking lens, and I’m trying to train myself here with the notion that everything is a system (X causes Y, which feedback’s into X again..), and it’s not easy..

To me, most of the smartest ideas out there starts with a unique counter-positioned framing, a view that shakes the world view, this creates a literal tear in the space-time continuum and leads to innovation, as a side effect..

I will keep hunting for more such co-creative systemic loops. And I hope to find more. After all, the whole world is just the snake eating its own tail…

Life lessons and hot takes from my 30s

17 minutes read rough-notes

I recently read Kevin Kelly’s Excellent Life Advice for Living. And immediately after that, on Substack, I also came across Nabeel Qureshi’s Substack post which is in this similar genre of being a listicle. I felt a genuine urge to articulate my own life lessons in this wonderful format and share it across to the world. So here goes:

  1. I’m angry not because someone else did something wrong, and I’m venting it out by being angry. That’s not true. I am angry because I’m trying to prove that I’m better than the other person who made that blunder. If someone spilled tea on my shirt, I get angry to show the supremacy of my ego more than anything else. Anger is not serving the function to solve the problem of “tea being spilled on my T-shirt”. As there is no utility of anger, there is no need to get angry (I keep telling this myself every time I get angry that it’s my ego playing supremacy games). If this seems illogical and absurd, read Courage to be Disliked.

  2. While handling difficult conversations, bend the voice and modulate it in such a way that there is this parabolic tilt. It’s called the Late night FM DJ voice. Even if you’re dealing with a terrorist kidnapping or a hostage situation, bending your voice like Beckham, making it slope downward, calms and eases up any person who is listening to it. End it in a descendo, and not a crescendo.

  3. While taking risks, I ask myself “what’s the worst thing that could happen?”. Nothing is as worse as one imagines.

  4. If given a task, I get to the 5% done state as fast as possible. It doesn’t matter if this is accurate. It would be hardly perfect, but I’ve already reached critical velocity to make sure I accomplish the task sooner. It saves a lot of back and forth and contemplation whether it’s a task worth doing or not. Often we spend more time thinking about what to do, rather than doing. This reduces the gap even further. And if something takes less than 2 mins to do, I do it right away, why think? One of my favourite writers of all time, Derek Sivers talks about the same in this essay titled “take the first step immediately”

  5. While trying to grasp a complex subject, see if you can find a “philosophy explainer” of the same. For example, for doing software design I chanced upon the book, The Philosophy of Software Design by John Ousterhout which primes the reader with various cognitive pumps and thinking tools to help structure one’s chain-of-thought in a better way while building software. Nowadays as we hardly “write” code but rather instruct the coding agents instead, the grounding with this philosophy primer has stayed with me even more.

  6. Best advantage would lie in mastering three-word niches. If you are trying to master “product management”, not much of an advantage. But if you’re doing “Healthcare product management” then there is some benefit, but not truly an undetectable advantage. But if you’re really wanting to double down then probably “Healthcare product management with AI tooling enabled” could be three-word niche which has benefits if one masters. Three word niches are also easier to discover both to search engines, as well as ChatGPT and various other generative tools. It could be anything ranging from medieval-snail-enthusiasts, to espresso-drinking-airport-lounge-nomads

  7. Read one chapter at a time for non-fiction, and spend atleast a significant period waltzing around thinking out loud the ideas. The thinking should be more in terms of cultivating intuition and less towards rote comprehension. Only proceed to the next chapter when understanding is satisfactory, and use ChatGPT to steelman and strawman the ideas. Also make sure you’re walking around, so the exploratory mode of thinking is ON.

  8. Best way to freshen yourself up is to take a double-espresso shot (or a lungo) and then couple it with a 25-min nap. Works like a charm. I call it the “nappucinno”

  9. When you smell BS whataboutery in a conversation, do a “two degree probe”. Probe once, and then probe one level deeper. Those who are good at BS might have subterfuge tactics to circumvent one degree probe, but not for the second degree probes. Three-level probe is dangerous, don’t do that ⚠️. Nobody likes to be asked why, why, why (I suspect this is because of the MBA-ization of english language, especially the “5 Whys” technique, along with the 3Ps of success, and 4Ps of management)

  10. Contrary to what people otherwise think, solution can also influence the problem, your practise can also influence more “belief”.. most of these are kekulean co-creative loops that feed into each other. I try not to think in a linear fashion. Once you see it, you start seeing it everywhere: ageing, and disease. Or even: problem, and solution. This is also a classic example of a systems thinking perspective and what’s categorised as a”reinforcing loop”.

  11. If non-fiction is for the mind, fiction is for the heart. There should actually be more bibliotherapists out there. In some situations, all you need is a good book to feed your soul. I read Courage to dislike yourself by Ichiro Kishimi, at a cathartic phase in my life, and it helped me recover better.

  12. Keep a notebook with a Uniball 0.7 mm always nearby your laptop desk. Typing is faster, more efficient and all that, but writing with hand activates much more parts of our neural circuitry. Whereas typing decomposes into a single act, triggering neurons in only a selective part of the brain. I did remember seeing this research, but now I’m not able to quote/hyperlink it as I’m not able to find it.

  1. Listening to bird songs, especially the cackling melodies in the rainy forest types are so great for calming you down. I also listen to the Slack’s elevator music on repeat for these reasons, and more recently I’ve come to a conclusion that the bird songs are more soothing, and there ought to be an evolutionary biology that explains this behind the scenes.

  2. When I’m listening to someone on a call, I keep speaking and exhaust all possibilities of unanswered questions they might have. I keep probing, “and then?”.. “and then..” or “Is there anything more?” Etc etc until the tap is dry. Whatever needs to be shared should be shared, and is to be listened in to.

  3. Internet is not always noisy, it’s just unevenly distributed. People who use X for politics, might have a different notion of X consumption as compared to those who use it for AI researchers alpha. For X, I block the politics, block the finance bros, block also the crypto bros etc and etc. eventually I only have one specific focussed feed for X that gives me what I want. Also mute words like “politics, crypto, sports” etc forever.

  4. Best way now to network with interesting minds is to submit a PR intro. You find a project the creator has published on github and then contribute to that project by pushing a PR. When the PR gets accepted, it becomes a badge of accolade, and could be a precursor to something even bigger (maybe you collaborate with the creator next as you’ve already proved your value through proof of work?)

  5. Happiness is a skill. The framing that this is a “skill” and not just a turbulent river which ebbs and flows as happiness/sadness/melancholy etc is important to keep aware.

  6. There is an art associated to accepting praise gracefully. And denying a compliment is not the best strategy. As La Rouchefoucauld puts it “the ability to deny praise is a tendency to accept praise twice”. When someone compliments you, just take it. That’s the best way

  7. I try my best to write to creators whose creations resonate with me. If I liked a particular thought or an idea from your essay which I read, then I want to write to you to explain why. I DM’d Vishan Veerasamy on his YouTube vlog series, and he replied back with a thumbs up. That’s all I want, folks

  8. I think Poker is the best game ever and everyone should learn how to play it (Mafia comes as a close second if there are 12+ players). Poker is crafty in the way it mixes skill and luck, and it’s a simulacra of how it would play out in a real world scenario. You always have an ungodly balance of skill and luck. Chess is interesting but boring because it’s all so heavily deterministic. But not Poker. I didn’t say this BTW, John Neumann described this about Poker. For learning the mathematics of Poker, this is a fascinating lecture series on YouTube.

  9. Every city has a vibe. And it’s a gross injustice to the human product (yes, you) if we don’t do enough aura farming to harvest this energy. Paul Graham talks about this in his essay where he says London reeks of “culture appreciation”, New York about money, Boston about being smart etc. I want the city to wear off its aura on me.

  10. If you’re tired of social media feeds, use an RSS feed instead. Maintain a list of important writers, and read regular essays from them via RSS (I recommend Netnewswire, as a RSS reader app). This is a list that Karpathy maintains to keep abreast of AI engineering.

  11. When I decide to write, often the best ones are when the emotions attached to the storyline are so overwhelming, the pot is brimming with excitement to share it out loud.. it’s as if your thoughts are passing through various stages of matter: from its fuzzy gaseous state, then into a liquidy jelly like state, and then into a highly emotive solid state where your internal molecules are all buzzing and vibrating. That’s when the best drafts are written, I think. For instance, I wrote this after a medical appointment while sitting in the Starbucks cafe and waiting. I wrote this all on my smartphone as I couldn’t wait anymore.

  12. Language is a powerful technology. Everyone around you is forging it for their own best interests, like it or not. It took me a long time to realise why “global warming” was more useful to use than “climate change”. Please read more George Lakoff.

  13. If you are on a long-winded conversation with your friend filled with a lot of non-sequitors sprawling multiple topics, do your friend a favour and drop links on WhatsApp after the convo has ended. This is the WhatsApp equivalent of the literary “footnote” for books.

  14. Write down the goals you want to achieve this year and speak them out loud in your own voice, record and save it on your phone. If you have an iPhone, trigger an Apple shortcut which launches every night at 10:30 PM, forcing you to listen to this message. I’ve been doing this for 2 months and feel pumped up for the days to come..

  15. Talking to my wife, I naturally end up in a problem-deconstruction-solving mode, and it took me a long-long-long time to realise that I don’t have to always be in this mood, and the adage “men are from Mars, women from Venus” is a cliche that exists for a reason. So now, I ask beforehand ‘Should I help solve or should I listen’. You might mostly get an answer right away, and for even more difficult situations, you would need a bit more fine tuning your antennas for accentuated sense making of whether it’s a “solve it” mode, or “listen deeply” mode.

  16. Use your phone in black and white mode. Every app, every colour chosen is designed to keep you spinning the wheel, and scrolling the feed. Engineer your digital environment to work in your favour..

  17. If you’re 18, read Ayn Rand’s Fountainhead. Your youth needs a strong sense of unrealistic idealism. Resist the urge to read Ayn Rand after 20.

  18. Never ask “How can I help you?”. That puts too much of burden on the other person to tactically calculate the right favour which fits. Instead ask “When should I think of reaching out to you?”.. that’s more subtler. And if you have time, also ask this bonus question: “who else should I talk to? Any reccos?”.. you’re spinning the wheel for some organic discovery here.

  19. Don’t use AI to “clean” your humane writing prose. It’s good as it is, and don’t prune the edges. Embrace your quirky style (except the typos, of course). Let it not drift into becoming the “average Gaussian mean” of the written word.

  20. Best way to start the opening line with a friendly stranger is to just give them a peak into your mind voice. Yes, “hey, hi, how are you” is the worst opening line ever. If I have an interesting thought or observation, I just prevent myself from repressing the thought and just blurt it out. Recently I noticed someone reading Watching the English book which I was also coincidentally reading on the Kindle and mentioned the same to that person.

  21. In this world where optionality is everywhere, hugging the X axis gives meaning to life. It doesn’t matter what hugging the X life means, as long as it’s something. For Victor Frankl, reuniting with his wife gave him meaning to survive the Auschwitz holocaust.

  22. If I had to get the most high-signal alpha information on a particular topic in the least amount of time, I would start with 10 informational interviews first. I would let this guide me to wherever it would take me. I tried this for my job hunting process, helping me pivot from service design to product management as a career

  23. There is an interesting sub niche of vintage lectures by professors on esoteric topics on YouTube. You would just land into it someday by merely manifesting it. A good entry point for flourishing your YouTube feed with such suggestions is this one: Introduction to Writing by Brandon Sanderson

  24. Always read raw transcripts, feel the granular ebbs and flows of emotions. Reading the AI-generated summary is yuck. Stay away from it if the purpose is to gain insight. Imagine what a blasphemous travesty it would be if you were to feel complete by reading an AI-generated summary of Marcel Proust’s In Search Of Lost Time. “An aging narrator rediscovers his life through memory and realizes that art can redeem the time that seemed lost”.. yikes!

  25. If you like someone on X, read their posts in reverse chronological order to see how their thought process has evolved over time. There are some Chrome extensions which could let you do that on the browser. I have done this for Pieter Levels and Anne Laure le Cunff

  26. If a trend is coming out as a full length McKinsey report, then the alpha is already over, 6 months ago. Alpha on the Internet moves bottom-up across multiple layers: Polymarket/TikTok → Twitter → YouTube/Linkedin threads → Consultancy reports. Conversational intelligence predates financial intelligence. People think first, and then pay with their wallets.

  27. I changed my mind thrice on the relationship between theory and practise. I first thought theory comes first and then practise. But then entrepreneurship taught me that practise is needed to give colour to the theory and allow it to resonate. Then I changed my mind again when I read Kevin Simler’s blog on how ads work, and I started looking at ads in a very different way (which then proved that theory informs practise too, therefore the answer here is that theory and practise are in a kekulean reinforcing loop)

  28. Do become good at a particular thing, do 100 of it first. This avoids the intellectual trap to overthinkingmaxx and make “perfect” things. Visakan Veerasamy suggest to cook 100 tamagoyaki egg omelettes, 100 YouTube videos, whatever. Taste is only through iteration. I recently finished my 100 essays project, and am 10/100 into my 100 YouTube videos project.

  29. Have an opinion over everything, instead of being in a “not having any opinion” state. To start somewhere, establish your minimum viable opinion and in a Popperian way try to strawman it as much as possible. If the opinion is still standing strong despite your best criticism, then it should be a valid, well-formed opinion.

  30. Morning pages provides a burst of much needed creativity especially when you’re hungry for fresh new ideas. There is something about dedicated writing/thinking time at a zero-cache state in the morning right before you pick up your phone.

  31. Try placing some 2.5 second pauses in the middle of your conversations. Dont overdo it, and such contrast in terms of silences and voice modulations make it easier for the audience to remember what we are speaking about.

  32. A request for a podcast is just an excuse to talk to a high profile person who might otherwise not accept the offer to “let’s grab a coffee and touch base on various topics”.

  33. I usually soften the assertiveness in a statement to make the recipient sway. Instead of saying “X needs to be done because of Y”, I say, “I think X needs to be done as Y…” this works all the time and is easier to persuade/influence others..

  34. The third spaces are now running clubs, brunch events, weekend trials etc, and have replaced the hanging-out-in-the-pub-for-drinks situation. This is a win for teetotallers.

  35. Great minds discuss ideas, mediocre minds discuss people. The moment an idea receives an ad-hominem attack it’s a subterfuge technique to shift the playing field to the realm-of-people, and not the realm-of-ideas, be wary..

  36. People say that as you age, your sense of time gets shrunk dramatically, making you remember your childhood events much more vividly than your Middle Ages. Turns out that it’s possible to thwart this effect by getting bored and doing nothing. I try to do nothing instead of scrolling on my phone when I have a few spare minutes. I am getting more bored, and I feel like I’m living a longer life. This is a form of life-extension where you’re changing the perception of time, rather than extending your life biologically..

  37. ChatGPT provides the worst possible cooking advice as the suggestions are diluted to water down any specific technique which is helpful. Especially for cooking, rely on grandmothers wisdom instead of generic LLMs. For Indian cooking, I have got premium mediocre results by loading the PDF of Krish Ashok’s Masala Lab as a ChatGPT project to ask specific questions, and the responses were not watered down compared to a generic ChatGPT response. Could still improve, but not bad.

  38. Your personal website is your pincode on the internet. Dont let it die, maintain it as your canonical source, and if possible do POSSE (Publish originally, syndicate elsewhere)

  39. It’s better to read books that are “niche but loved”, rather than the ones which are recommended by everyone (case in point: The Monk who sold his Ferrari, Atomic Habits etc). Kremlin school of negotiation is an example of a book in the “niche but loved” category while, Start with a No is famous but cliched, so definitely not worth going for. I don’t believe in the wisdom of crowds, but I believe in the Lindy

I’ve always been fascinated by the aesthetic of the scientific illustrations commonly found in academic research papers, especially journals like Nature and Cell. So I recently developed a Codex skill that can replicate that kind of visual language. This is the github repo if you’d like to try it out.

Here are a few examples:

Generate one clean scientific illustration suitable for a research paper or review article. Purpose: Conceptual microbiology mechanism schematic. Scientific subject: Bacterial biofilm formation on a surface and antibiotic tolerance. Core message: Biofilm structure creates protected microenvironments that reduce antibiotic access and support tolerant bacterial subpopulations.

Create a clean physics/engineering concept figure: A photonic chip routes light through tunable waveguides, allowing optical signals to be switched between output channels.

Create a research-paper-style geology schematic: Fractured basalt improves subsurface fluid circulation by increasing connected flow pathways while exposing more reactive mineral surfaces for water-rock interaction. Show a two-panel comparison: massive basalt vs fractured basalt. Use simplified rock cross-sections, blue arrows for fluid flow, highlighted reactive surfaces along fractures, and a plain text outcome callout: Enhanced fluid circulation. Keep the style clean, journal-like, white background, muted gray/blue/orange palette, Arial/Helvetica-like labels, and avoid fake maps, seismic sections, microscope images, spectra, mineral formulas, or numerical permeability claims. Labels to include: A Massive basalt B Fractured basalt limited flow path connected flow path

Generate one clean scientific illustration suitable for a research paper or review article. Purpose: Conceptual microbiology mechanism schematic. Scientific subject: Gut epithelial barrier interaction with commensal and pathogenic bacteria. Core message: A healthy mucus and epithelial barrier spatially separates most microbes from host tissue, while barrier disruption allows closer bacterial contact and inflammatory signaling.

The objective was to create the specific style of scientific illustration commonly found in high-prestige journals like Nature, Cell, and others.

I wanted the outputs to be coherent and consistent across different examples, without introducing confusion or scientific errors. Consistency is key, right?

I drew inspiration from a design skill created by a Chinese creator named Xiaohei. He demonstrated a well-structured approach to creating a skill for image generation using Codex. Since Codex has native image generation capabilities, the skill can generate images on the fly.

While exploring Xiaohei’s skill, I noticed a few useful formats. First, he has a markdown file for DNA that outlines the essential elements that need to be captured and preserved during image generation. It also provides a prompt template that asks for any gaps or details that need further elaboration, enabling the skill to generate more accurate and comprehensive images.

I just fed this skill skeleton to ensure that I could adapt these best practises to make this happen.

My agentic engineering workflow (step by step)

32 minutes read agentic-coding

My agentic engineering workflow has changed in the recent past. The models are better, and there is much more freedom in choosing the harness, abilities, and actions you provide.

Table of contents:

I’ll walk you through each of the phases in this workflow which I follow to build my side projects (as of June 1, 2026). It has evolved from IDE chat, to CLI coding agents, to now “slice-driven product development”.. so let’s get right into it..

Pre-planning, pre-idea, pre-everything

To curate the list of ideas I have in the pipeline, I use Trello for a simple kanban board. There are many other tools you could use for a simple, organized list of items, even a TODO list app would suffice. However, I’ve particularly liked Trello for this purpose because it also allows you to add a nice little thumbnail for each idea. Usually, an idea comes to me all of a sudden, out of nowhere. In this fleeting moment, I try my best to capture it as accurately as possible, as if I were feeling it in my veins. So, a picture along with a one-line description helps me capture this fleeting thought..

Trello mobile experience is also nice, and I mostly capture them while on-the-go.

My only heuristic for picking my next side project here would be to go with something I’m most excited with. I have a crematory of 100s of abandoned side projects, and I don’t want to add another one to this ever growing list of dead projects that don’t bite. I would at least want to ship what I start, and for that, the fuel here is motivation. You feel it in the gut, and you want it to guide what you should do next.

The first chat with the agents

Usually, when you capture an idea or thought, it might be in a very urgent mode and you wouldn’t go into the weeds of how this might be envisioned. So to explore what this could mean, I start having a chat with the agents. I usually feel more comfortable doing this on mobile, so I pick this up on ChatGPT. One other reason I’ve been tied into the OpenAI ecosystem is the additional benefit I get from the $20/month subscription package. I get to also use this for leveraging GPT-Codex via Opencode. More on the agentic coding setup later, but I just wanted to mention this right away, as I see great benefits in tying into the ecosystem offered by OpenAI.

Another reason I use ChatGPT is, interestingly, its default typographic choices. Look at Claude, and the mess they’ve made with their default choices. Anthropic folks have used and abused the serif fonts, and their defaults have slowly trickled down to the way everyone vibe codes and makes their half-cooked apps. It’s a mess, and I want to stay away from it.

Another important reason for going with ChatGPT is in its ability to do OAuth with any of the self-learning, persistent memory agents such as Openclaw or Hermes. This allows any user already with a ChatGPT subscription to connect directly with Openclaw, instead of having to buy additional API credits.

While having this on-the-go chat with the agents, I might also end up in a deep-research rabbit hole. An example from the recent past was when I tried to find open source repositories on GitHub for creating music karaoke tracks for my father-in-law, who is practicing to be a singer more recently. I was itching to build a custom solution for his needs, but then, I wanted to double-confirm if there are any ready-made solutions available right off-the-shelf on GitHub which I could fork. (and it just turns out that there was an off-the-shelf solution, so I didn’t have to reinvent the wheel)

So I ask ChatGPT on the Deep Research mode to provide me a list of well-maintained repositories which do the whole thing, or a ‘part’ of the pipeline, really well.

^^ Early explorative conversations done on ChatGPT.

I have noticed that I get better results this way, rather than just trying to piece together a curated list of repos by searching through GitHub manually. While doing forking and modifying, I also try to ensure I have the right licenses to do so.

Having more Socratic dialogues

I have also noticed that this type of search works better than a mere LLM search. I also instruct the agents to “steelman” or “strawman” the concept to identify the fault-lines, or even to cultivate an opinion sometimes.

All software engineering is ultimately tradeoffs, and there exists no perfect solution without tradeoffs, so this line of reasoning helps shape an opinion on what the product should do (without having to do everything under the sun)

Once, GPT presented this list in a table format. (Make sure to provide custom instructions to always use comparison tables wherever necessary.) I began visualizing the concept in my mind, keeping the architecture in mind. Sometimes, I say, “Help me visualize the end-to-end pipeline in ASCII, including the components and libraries we’re using.” At this stage, it’s crucial to hold the complete concept in our minds without drifting away. All these conversations and visualizations help shape our vision. And with these simple ASCII diagrams, the simple act of arrows pointing to each other can help us conceptualize better.

At this stage, all of the chat threads are still on ChatGPT, and I haven’t even opened my laptop yet. All this is on mobile. And when I finally find satisfaction with the chat outputs, I would then do a ‘handoff’ to do some serious work with the foundation already set by my chat. For this handoff, I would try to synthesize the conversation into either a spec .md file, just to see if what I understood and what the agents have understood are the same. I’m looking here for mind-AI convergence here, nothing else. And in case there is some drift, I still have a way to make sure there aren’t any gaps.

The first chat on the terminal

Now that we have something to work with, we start our first chat on the terminal. I primarily use Ghostty as my default terminal application. Surprisingly Ghostty is faster than the native terminal offered on Mac, and I haven’t looked back.

Why use the CLI over a code editor? Because, the job becomes more of pointing the agents at the right location in the codebase, rather than writing code. We’re in the era of CHOP - Chat-oriented programming.

Apart from the speed benefits, it also provides a similar interface as that of Google Chrome: Just like you open multiple tabs on Google Chrome, you can also open multiple chats with agents on Ghostty, and the interface helps a lot to have multiple conversations with the agents. Just to maintain sanity, I keep one project for each tab, and open multiple panes/agents under that tab for that specific project. In that way, I could streamline my chats with multiple agents working, across multiple projects. I’ve tried going this route and have got a dopamine hit from the code throughput, but have realized that it’s much more important to hold an ‘entire problem in your head’ from start to finish. So I’ve let go of context switching, and have embraced FOCUS.

^^ I’m usually opening multiple Opencode conversations via Ghostty.

With Ghostty as the terminal application, I use Opencode as the TUI app for chatting with the agents directly. Think of it as a more hackable, model-agnostic alternative to tools like Claude Code, Codex CLI, Cursor Agent, or Gemini CLI.

I’ve also heard that Pi agent is even more hackable than Opencode, but Opencode strikes a good balance in my view. Pi can even manipulate its own installation, and emits events for everything, making it easier to build reactive UIs on top of it. (With Opencode, you could still do various customizations by means of Opencode plugins).

Setting up the Opencode environment

The default Opencode application itself helps you do most of what you need. These are the skills I use with Opencode:

SkillPurpose
build-cliDesign or improve agent-friendly and human-friendly CLIs.
copy-adsCreate paid ad copy variants for channels like Google, Meta, LinkedIn, X, and TikTok.
copy-marketingWrite persuasive website, landing page, headline, CTA, and value prop copy.
copy-release-notesGenerate user-facing release notes and changelogs from shipped work.
customize-opencodeEdit or create opencode configuration, agents, skills, plugins, MCP servers, or permissions.
frontend-advancedBuild technically ambitious frontend experiences such as shaders, virtual tables, spring physics, and scroll effects.
frontend-performanceImprove frontend loading speed, rendering, animation, images, and bundle performance.
frontend-remotionApply best practices for Remotion video creation in React.
frontend-slidesBuild animated HTML presentations or convert PowerPoint decks into web slides.
meta-design-setupSet up persistent design context and guidelines for a project.
meta-find-skillsHelp discover and install additional agent skills.
meta-thinkingAct as a structured thinking partner for decisions, tradeoffs, mental models, and stress testing ideas.
product-breadboard-reviewReview an existing breadboard against implementation and surface wiring/design drift.
product-breadboardingMap workflows into product affordances, code affordances, stores, and wiring.
product-framingTurn transcripts or interview notes into structured product framing documents.
product-kickoffConvert kickoff transcripts into builder-facing implementation reference docs.
product-namingBrainstorm five memorable product names with rationale.
product-shapingCollaboratively shape a product or feature before implementation.
product-visionCreate inspiring product vision statements and alignment narratives.
research-blueskyDeep research using docs, web, and codebase before planning.
research-deepThorough evidence-backed research across code, docs, and web.
research-last30Recency-focused research across many sources from the last 30 days.
research-lightTargeted lightweight research before planning or implementation.
tool-browserAutomate browser tasks like navigation, screenshots, forms, scraping, and web app testing.
ux-clarityImprove interface microcopy such as labels, buttons, helper text, errors, and empty states.
ux-onboardingDesign or improve onboarding, activation, setup, and first-run flows.
ux-resilienceMake interfaces robust against errors, edge cases, i18n, overflow, and production issues.

You could download my total list of skills here: https://github.com/shreyas-makes/agent-skills

As you can see here, more broadly the list of skills are more focused on UX, research, copywriting, performance and browser-automation testing. I see skills being created and updated as a dynamic ongoing process that needs to be reflected upon every now and then. It would look something like this diagram here: if it’s a process that has been repeated more than 5 times, then definitely create this as a skill.

In the first wave of adoption to agentic coding, we saw a lot of impetus given to designing the right prompt.

In the old era, this would have been quite a useful technique to get a lot more sauce from the models, but in the new way, where the agents have caught up with intelligence, we don’t require any such sorcery.

Prompt engineering is just English grammar in my view, and even if you’re rambling incoherently (making sense sometimes), they are still OK.

Doing light research, deep research

For complex tasks, you might want to research, walk through the planned sequence of steps, and then execute. Sometimes you might need to do all three, and might straightaway jump to execute too, that’s fine too. Especially on the “research” step, I might do a light-research that’s not too rigorous, and a more extensive “deep research” that scrapes every last bit of information arbitrage from the internet..

If I have to do more ‘light-research’ inline while using the terminal, I use the light-research skill popularized by Josh Pigford..

If I’m looking for more “hot” research, especially the word-of-mouth from the zeitgeist, especially since every day is a year in the AI age, I use the /last-30-days skill.

The /last30days skill popularized by Matt vhorn is an ‘AI agent skill that researches any topic across Reddit, X, YouTube, HN, Polymarket, and the web - then synthesizes a grounded summary’.

Reddit upvotes. X likes. YouTube transcripts. TikTok engagement. Polymarket odds backed by real money and insider information. That’s millions of people voting with their attention and their wallets every day. /last30days searches all of it in parallel, scores it by what real people actually engage with, and an AI agent judge synthesizes it into one brief.

Google aggregates editors. /last30days searches people.

You can’t get this search anywhere else because no single AI has access to all of it. Google search doesn’t touch Reddit comments or X posts. ChatGPT has a deal with Reddit but can’t search X or TikTok. Gemini has YouTube but not Reddit. Claude has none of them natively. Each platform is a walled garden with its own API, its own tokens, its own auth. But you can bring your own keys and browser sessions, and suddenly an AI agent can search all of them at once, score them against each other, and tell you what actually matters.

That’s the unlock. Not one better search engine. A dozen disconnected platforms, bridged by an agent.

In their own words, I was baited by the description here where they mention how their search offers conversational intelligence by pulling in info from pretty much all the biggie social platforms):

SourceWhat the people tell you
RedditThe unfiltered take. Top comments with upvote counts, free via public JSON. The real opinions that Google buries.
X / TwitterThe hot take, the expert thread, the breaking reaction. First to know, first to argue.
YouTubeThe 45-minute deep dive. Full transcripts searched for the 5 quotable sentences that matter.
TikTokThe creator reaching 3.6M people with a take you’ll never find on Google.
Instagram ReelsThe influencer perspective with spoken-word transcripts. The visual culture signal.
Hacker NewsThe developer consensus. 825 points, 899 comments. Where technical people actually argue.
PolymarketNot opinions. Odds. Backed by real money. 96% confidence on album sales. 4% on an acquisition.
GitHubFor people: PR velocity, top repos by stars, release notes. For topics: issues and discussions.
DiggCurated story clusters from Digg’s AI 1000 leaderboard (~1000 high-signal AI accounts on X), with attributable inline quotes (no X auth required). Auto-enabled when digg-pp-cli is on PATH.
ThreadsThe post-Twitter text layer. Conversations from creators and brands.
PinterestVisual discovery. Pins, saves, and comments on products and ideas.
BlueskyThe decentralized social layer. AT Protocol posts from the post-Twitter migration.
PerplexityGrounded web search with citations via Sonar Pro.
WebThe editorial coverage, the blog comparisons. One signal of many, not the only one.
/last30days can be used for person research, competitor analysis, feature A versus feature B, etc.

Model choices while working with coding

I mostly have subscribed completely to Peter Steinberger with the obsessive use of the Codex agents. And this is before him joining OpenAI, so I know that the initial take was unbiased.

Sometimes it just silently reads files for 10, 15 minutes before starting to write any code. On the one hand that’s annoying, on the other hand that’s amazing because it greatly increases the chance that it fixes the right thing. Opus on the other hand is much more eager - great for smaller edits - not so good for larger features or refactors, it often doesn’t read the whole file or misses parts and then delivers inefficient outcomes or misses sth. I noticed that even tho codex sometimes takes 4x longer than Opus for comparable tasks, I’m often faster because I don’t have to go back and fix the fix, sth that felt quite normal when I was still using Claude Code. — Peter Steinberger

I also don’t use the “plan mode”, when I need the agent to do a set of instructions, I say “let’s discuss”.. My approach here with building is very iterative. I am not a big fan of taking a complete spec, and putting it in a ralph loop, if that’s so easy, then that should not be a software then.

This is my current stack of model choices:

  1. Codex GPT series
  2. MiniMax or Kimi series (for fallbacks in case I run out of Codex credits)

The design process: sequence of steps while building apps

I follow this sequence of steps in my conversations with the agents while building 0 to 1. I’d outlined this in my previous essay (breadboarding and shaping with AI agents), and have it here handy:

This is how my current process looks like:

StepTermWhat happensWhy it existsOutput artifact
1VisionDescribe the future state of the productAligns all work to a long-term directionVision statement
2ProblemIdentify the concrete obstacle preventing the visionPrevents building random featuresProblem statement
3Requirements (R)Extract constraints and must-have behaviorsCreates a contract to evaluate solutionsRequirement list
4Shaping (Solutions A/B)Propose high-level solution approachesMoves from problem → possible architecturesShape document
5Fit Check (R × A)Verify if the solution actually satisfies requirementsReveals gaps, over-engineering, or missing piecesFit matrix
6SpikesResearch unknown technical areasReduce uncertainty before architecture solidifiesSpike notes
7Fat Marker SketchSketch user interaction and visible stateClarifies product behavior and UI affordancesSimple UX diagram
8BreadboardingMap system wiring (UI + code + data + services)Convert ideas into architectureBreadboard diagram
9Slicing (Scopes)Divide architecture into demoable piecesEnables incremental deliveryVertical slice plan
10Steel ThreadBuild the minimal end-to-end pathProve the architecture integrates correctlyWorking skeleton
11Iterative Slice BuildExpand slices into complete featuresGradually complete the productProduction system

You might be looking at this 11 point list, and questioning why do all this?? Why can’t we just prompt in one line and be okay with whatever AI agents generate? This was my initial line of exploration, and I failed badly after encountering various bugs in the process.

Why vision first? This gives a sense of direction, especially when agents could take you anywhere, and be sycophantic when they say “you’re absolutely right!”. You need a strong, opinionated product vision.

How I start the chat:

Ask me one question at a time so we can define and shape a strong product vision for this idea. Each question should build on my previous answers, helping clarify the user, the problem, the unique insight, the product’s point of view, and the future it is trying to create. Let’s do this iteratively and focus on asking the right questions before jumping into features or implementation. Remember, only one question at a time.

Here’s the idea:

Once you get to the end of the dialogue, you then say:

use your shaping skill to capture the requirements and tease apart the key parts of solution A that I have specified here

More often than not, we give lengthy jumbled up argumentation mixing up the problem and the solution together. By doing it this way, we separate out the problem and the solution neatly.

Alongside the conventional software development lifecycle, what has changed here is me incorporating Ryan Singer’s workflow in terms of building shapes, and slices. Long story short, you don’t constrain yourself too much by finalising a “spec.md” and then telling our AI overlords to “go build it!”. That kind of stuff seldom works. Instead what I do is to come up with a few requirements/constraints, and spend more time ‘shaping’ multiple approaches. Let’s say, if you have shape A, shape B and shape C (with some unknowns on how they tie together to create a complete solution), you then spike the unknowns, resolve (or not resolve them) in the process, and come up with the right “shape”.

Once you have a shape, based on the complexity of the shape, which could be as complex as “rewrite Linux in Rust” or as simple as “build a HTML presentation deck”. If things get way way too complex, then you might also have to slice the shape into multiple pieces. Each “slice” is a demoable piece, which means it’s possible for us to feel something and feed useful information back to the agents instead of just ‘TAB, TAB, TAB, CONTINUE, ENTER, TAB, TAB, TAB…’

This is a remix, or a fork of the conventional agile development lifecycle, adapted to work better with AI agents, and I have found great results so far, especially since this is more universal go-to process that could work for the entire spectrum of simple to complex/heavy-duty stuff.

Another benefit of breaking them into such slices is to reinforce the need to split a giant agent output into reviewable pieces. You would certainly not be able to review a 15,000 line PR.

To incorporate the Shape Up methodology of Ryan Singer, here is the GitHub repo

If slicing doesn’t work, try steelthreading it..

Imagine standing at the edge of a canyon, needing to cross to the opposite cliff. One option is to construct a bridge, starting with logs, ropes, and foundations—carefully assembling each piece until a complete, safe crossing exists. This is similar to how MVPs are often built: you fully develop a core feature or component (like building an engine) before moving on to other parts, ensuring that the piece you create is robust and ready for future scaling.

In product development, a concept known as the steel thread has gained attention for its focus on creating the most direct yet robust path from concept to functionality. Unlike traditional methods such as building a Minimum Viable Product (MVP), which often prioritize incremental construction and polishing a single component before moving to the full system, the steel thread approach prioritizes end-to-end integration early on, even with minimal implementation.

The steel thread approach, however, takes a different perspective. Instead of starting with a full bridge, you imagine a thin steel thread stretched across the canyon. It represents the simplest, lightest, and most minimal path to achieve an end-to-end connection. The steel thread is strong enough to support essential functionality and demonstrates that all critical integrations work together. Even if the overall experience is barebones, the team can traverse the complete journey from point A to point B, proving that the product can function holistically.

From a product development perspective, this method focuses on building the smallest possible version of the full flow. Rather than fully developing isolated components, the goal is to establish a working skeleton that spans the entire product experience. This allows teams to quickly identify integration challenges, potential bottlenecks, and areas of risk. Once the steel thread is in place, subsequent iterations can enhance, reinforce, and expand it—eventually turning the thread into a fully realized product structure.

By prioritizing end-to-end connectivity over depth in one area, the steel thread approach offers several advantages:

  • Rapid validation of system feasibility
  • Early identification of integration issues
  • Efficient feedback collection on the full user journey

In contrast to building a polished engine first (the MVP approach), the steel thread demonstrates the viability of the whole vehicle—even if, at first, it is only a bare-metal prototype. Teams practicing this method move faster toward functional products and discover critical insights earlier in the development lifecycle.

In short, the steel thread method is about achieving the simplest full journey before committing to deep, complex builds. It highlights the importance of robust integration early, providing a strategic pathway to scale confidently and efficiently.

Ensuring that the design in the design process is coherent and consistent..

My mantra here is to first make it work, then, make it fast, and then, make it delightful.. Form should follow the function. And when I reach this stage where I’m happy with the functionality, and there aren’t much glitchiness to the way it achieves its core function, I move on to the design bit.

Hardik Pandya, in his essay — Expose your design system to LLMs, talks about how LLMs undergo design drift, and why it’s important to feed the design system to the AI coding agents, to make it stop guessing.

To achieve a consistent and coherent way of presenting the interface for my app, I set up a design system if I haven’t already. In case of brownfield apps, I use /design-audit skill, inspired by this essay, to comb through all the patterns it could find and translate it into the right theming. This then becomes a ‘DRY’, where I wouldn’t have to repeat myself to the agents for the 100th time.

You could place this at the root of your project:

Audit this project and make the design system LLM-readable.

Step 1: Audit
Scan every CSS/SCSS file. List every hardcoded visual value:
hex colors, rgb/rgba colors, pixel spacing, raw font sizes,
font weights, border radii, z-index values, box shadows,
and transition durations. Group them by category. Count totals.
Report which files have the most hardcoded values.

Step 2: Token layer
Create a tokens.css file with three layers:
- Layer 1: upstream design system tokens (use existing ones
 if the project already uses a design system, otherwise
 derive sensible primitives from the audit)
- Layer 2: project aliases that reference Layer 1 with
 fallbacks, e.g. --color-text: var(--ds-text, #292A2E)
- Layer 3 is the components themselves — they only ever
 reference Layer 2 aliases, never raw values

Include tokens for: colors (text, background, link, border,
interactive states), spacing (at least 8 steps), typography
(font families, sizes, weights, line heights), border radius,
elevation/shadow, z-index, and motion/transitions.

Step 3: Spec files
Create a specs/ directory. Write structured markdown specs:
- specs/foundations/ — color.md, spacing.md, typography.md,
 radius.md, elevation.md, motion.md
- specs/tokens/ — token-reference.md (master map of every
 CSS variable, its value, and when to use it)
- specs/components/ — one file per major component in the
 project. Each spec follows this template:
 1. Metadata (name, category, status)
 2. Overview (when to use, when not to use)
 3. Anatomy (parts of the component)
 4. Tokens used (which CSS variables it references)
 5. Props/API (if applicable)
 6. States (default, hover, active, focus, disabled, error)
 7. Code example
 8. Cross-references (related components)

Only spec components that actually exist in this project.

Step 4: Audit script
Create scripts/token-audit.js (or .sh) that:
- Scans all CSS files for hardcoded values
- Suggests the correct token for each violation
- Prints file, line number, violation, and suggestion
- Returns exit code 1 if any errors found (CI-ready)
- Distinguishes errors (hardcoded colors, spacing) from
 warnings (raw durations, uncommon values)

Step 5: Replace hardcoded values
Go through every CSS file and replace hardcoded values with
the tokens from Step 2. Every color:, background:, padding:,
margin:, gap:, border-radius:, font-size:, font-weight:,
box-shadow:, z-index:, and transition: should reference a
var(--token). No raw values should remain.

Step 6: Project instructions
Add a section to the project's AI instruction file (CLAUDE.md,
.cursorrules, or equivalent) that says:
"Before writing or modifying any UI code, read the relevant
spec file in specs/. Use only tokens from tokens.css. Run the
token audit script before committing. Zero errors required."

Run the audit script at the end and confirm zero violations.

It also happens that AI still makes a lot of common mistakes on spacing, typography, hierarchy, etc., which a very keen design engineer who is trained for that eye can spot, I use /design-type for such tweaks that get repeated.

This is the current list of design specific skills I use, and you could remix or fork them by clicking here.

design-auditProduce a comprehensive UI audit across accessibility, performance, responsiveness, theming, and UX quality.
design-boldMake safe or boring designs more visually striking.
design-colorAdd strategic color to monochromatic or visually flat interfaces.
design-critiqueEvaluate a design’s product and UX effectiveness.
design-delightAdd personality, joy, micro-moments, and memorable touches to interfaces.
design-distillSimplify designs by removing unnecessary complexity.
design-extractExtract reusable components, tokens, and design patterns into a system.
design-layoutImprove spacing, rhythm, composition, and hierarchy.
design-minimalCreate clean editorial minimalism with restrained warm monochrome styling.
design-motionAdd purposeful animations and micro-interactions.
design-normalizeAlign a feature with an existing design system and component language.
design-polishPerform final pre-ship UI refinement.
design-premiumCreate expensive, cinematic, agency-crafted interfaces.
design-quietTone down overly aggressive or loud visual designs.
design-responsiveAdapt designs across screen sizes, devices, and contexts.
design-systematicBuild stricter frontend design systems and measurable UI implementation rules.
design-typeImprove typography, font hierarchy, sizing, weight, and readability.
design-uiCreate distinctive production-grade frontend interfaces from scratch or through major redesign.
You could download my total list of skills here: https://github.com/shreyas-makes/agent-skills

Ensuring the code generated is clear, and reviewed

If you have read the theory of constraints, you would know that a bottleneck is never completely eliminated, it just shifts from one place to the other. Previously we had the bottleneck in terms of generating or writing code, that was a bottleneck. But then once the coding agents were able to like solve that bottleneck, the bottleneck just shifted to code review. Which makes the need for having better tools to support code review, even more important.

There is even an argument floating around in the internet that there is a cost to accelerating the code throughput without reviewing the code properly, leading to complex failures which are harder to resolve, by AI agents, as well as by human engineers. But for which I would say that the only metric that matters are the number of decisions that could be taken per day. At normal velocity, a team might make one or two decisions per week, but at 10x velocity, you see them making multiple a day. The usual bottlenecks where you’re waiting for a slack response, or for scheduling a quick sync later, no longer exist.

I’ve previously used the /review tool available in most coding agents, and yet, the fundamental question which I still don’t have answer to is: if the language models need a separate tool for code review, why can’t it just stitch the review loop onto the code generation? Currently, I’m a bit skeptical about code review, and think this would eventually be a part of the code-generation loop.

Right now, after a major feature update, I try to ask the agent its plan before it writes any code (so that I could perform some pre-emptive strikes), and ask it in plain English what it has written. In a previous note on this topic, I write about how the top layer and bottom layer should still be done by humans, leaving the middle layer for the AI agents:

The AI sandwich technique outlines a structured approach where humans and AI agents collaborate effectively.

In this model, the top layer involves human input, where goals and instructions are clearly defined by humans. This ensures that the desired outcomes are aligned with human intentions. The middle layer is where AI agents take over, handling the orchestration, execution, and processing tasks. This allows for efficient and automated handling of complex operations. Finally, the bottom layer involves human evaluation, where the output is assessed based on subjective human taste and feedback. This ensures that the final result meets human standards and expectations.

Think of the end game polishing done by humans, akin to how pilots and co-pilots still have the final call on the airliner they’re operating in, despite all the automations at place that could technically automate the role of the pilot, but not in principle.

A concept which I recently became aware of is that of a backpressure. It’s described as a pressure which arises from failed builds/tests that pushes the model loop to improve output.

Templatize everything that needs templatizing

If I have already built the feature successfully somewhere else in a different project, I cross-reference that successful implementation to the AI agents for helping diagnose what’s wrong.

I’ve already mentioned my way of planning a feature. I cross-reference projects all the time, esp if I know that I already solved sth somewhere else, I ask codex to look in../project-folder and that’s usually enough for it to infer from context where to look. This is extremely useful to save on prompts. I can just write “look at../vibetunnel and do the same for Sparkle changelogs”, because it’s already solved there and with a 99% guarantee it’ll correctly copy things over and adapt to the new project. That’s how I scaffold new projects as well.

I started templatizing patterns across projects because I was spending too much energy repeating setup decisions in every new repo: how to plan work, how to enforce coding preferences, how to deploy etc. The core idea is simple: separate reusable workflow rules from project-specific code. That gives me a stable operating layer across all work in ~/Projects, while still letting each project keep its own context.

Instead of reinventing process every time, I reuse a consistent scaffold and only customize where the stack or business logic actually differs.

The agent-scripts model came from studying Peter Steinberger’s setup and adapting the parts that matched my own way of working. I kept the structure but changed the intent: a global rules file for hard constraints, stack-specific profiles for Rails Inertia vs Next.js vs Tauri behavior, and command-like prompts for recurring actions such as build, review, research, and ship.

1) Folder/System View
/Users/shreyas/Desktop/Projects/
|
+-- agent-scripts/                    <-- YOUR canonical workflow system
|   |
|   +-- AGENTS.md                     <-- global rules (always-on behavior)
|   +-- stack-profiles/
|   |   +-- rails-inertia.md          <-- stack-specific rules
|   |   +-- nextjs.md
|   |   `-- tauri.md
|   +-- prompts/
|   |   +-- build-feature.md          <-- reusable command templates
|   |   +-- review.md
|   |   +-- research.md
|   |   +-- ship.md
|   |   `-- inspire.md
|   `-- skills/
|       +-- build-feature/SKILL.md    <-- execution workflow skills
|       +-- review/SKILL.md
|       +-- ship/SKILL.md
|       `-- inspiration/SKILL.md
|
+-- my-saas-app/                      <-- your real project
+-- next-app/                         <-- your real project
+-- tauri-tool/                       <-- your real project
`-- others/                           <-- external repos, reference only
    +-- cool-ui-repo/
    `-- random-oss/

In my day-to-day workflow, it looks like this: I open a repo, trigger /build-feature, get a short plan, and then let the agent execute within the detected stack profile. If I get stuck, I run /inspire, which inspects relevant repos under ~/Projects/others and returns transferable patterns without copying code. Once implementation is stable, I run /review for risk-first feedback, and only invoke /ship when I explicitly want release actions.

While inspiration-seeking, I also identify some starred GitHub repos that can hold some clues and examples that could be applied to the current problem at hand.. when that happens, I clone that repo into the Projects/others/ folder and then chat with the repo with a prompt that looks somewhat like this:

read the code for this repo and write a markdown doc telling me everything you can infer or know with certainty about the high-level intent and idea behind this repo ask me questions for anything that isn't clear then pop open the doc for me to review and answer the goal here is to make sure my intent is obvious to any agent reading this code

Closing thoughts

I just want to close by saying that purely spec-driven development, where you make a “perfect” spec to send it to the agents on a ralph loop is not going to work. These are for the same reasons why we have moved away from waterfall to agile, they are still the same reasons. We sometimes revert our earlier decisions, cross over or even contradict what we might have said earlier, as every new iteration of the product is a learning for us, and new facts could evolve.

One thing that’s clear from this exercise of writing this essay is that software has started transitioning from a software development lifecycle, to a “context development lifecycle”, aka CDLC. SDLC, is now being offloaded to agents, with utmost trust, where engineers are now involved in maintenance of context, which constantly gets updated over time, and needs a human owner for its reliability.

Hammock driven development

5 minutes read agentic-coding

You’ve heard of TDD, and more recently also SDD (spec driven development)… but have you heard of HDD — aka Hammock driven development?

I recently came across a video gifted to me by the YouTube algorithmic gods with a catchy enough title that sounded more like a “honest bait” than a clickbait, it was titled: “Hammock driven development”, talking about an alternate approach to software development. I’ve currently been thinking a lot about various new processes that could improve software development, and this lecture from Rich Hickey from 13 years ago seems like one of those older ideas that need a new revival story. Especially now.

So I jumped right in.

I try here to write in my own words what I understood from the lecture and not refer to any of the supporting transcripts or Youtube timestamps (it’s now ‘fresh’ in my mind and want to make use of this moment in time)


We have two types of minds: the waking mind, and the background mind. Historically we’re quite used to the system 1 and system 2 framing by Daniel Kahnemann, but this is far more encompassing than I’d expected, the background mind here, the OP refers to being generally good at strategic, holistic thinking.

You would normally want to leverage such strategic tasks for the background mind. Not that the waking mind doesn’t do strategy, but it’s more focussed on the input <> output processing. And as such its results are much more strategic and immediate output oriented. The OP then suggests to leverage this partisanship to our interests.

While writing code, we are thinking through problems and we should first know how to draft a problem, and this could be in terms of scope, constraints, framing etc, we need to get that right first, and then when we have to start solving problems, at times we might encounter harder problems which were not used to encountering before (not the usual fetch from a dB and display it on the CRUD UI types).

When this happens, we then need to think and segregate such problems into the known types which can be easily done by the ‘waking mind’, and the harder subset which needs to be delegated to the background mind. The background mind works in interesting ways, you would not know in advance what the solution might be, you just need to assign it to this background mind and see what the ‘eye of the mind’ unravels.

But you will get there nevertheless, and to let this slow burn process happen without any stress it needs. In fact stress environments make you go into the ‘waking mind’ mode, and you would not be able to do the slow burn. That’s also one of the reasons why this should be done through a shower thought.

OP also recommends Michael Poyalyi’s How to solve problems book as it gives a much more mathematical rigour to the varied approaches to solve problems. There is another book I was able to find on the YT comments called ‘How to solve with computer’ that gives an algorithmic perspective to solve problems. This is another one on my Umberto Eco’s antilibrary style to-read list.

This time when I listened to the lecture, it hit me in a different way especially since I’ve also been fascinated about the AFK (away from keyboard) and HITL (human in the loop) segregation of work by Matt Pocock, an AI tutor who recently shared this in his talk at the AI engineers forum.

The AFK mode is usually for known solved problems, it’s similar to the waking mind for the agents, where they could run autonomously and completely solve the problem/s without causing much tech debt.

The HITL mode is usually for problems that require a feedback-loop type dynamic with humans to provide the right inputs for it to solve the problems better. This works well for human guidance aided by the right ontology. In the HITL mode, for example in case of 1 and 2:

1:

“I have a deep pimple only on my chin is it more likely from diet or hormones”

2:

“sudden cystic acne isolated to chin, is the more likely etiology hormonal fluctuation or pro-inflammatory gut disruption from dietary changes?

Both 1 and 2 are effectively the same question but 2 provides you vastly different (and better) responses. There is also a Harvard AI safety study which talks about this method, where changing ontology provides different responses.

And for AFK mode, you might not even need such thoroughly grounded ontology. It gets the aim, the objective and the steering right in one go.

Now coming back to the original topic by OP about the waking mind and background mind, and also finding similar analogies in the agentic coding world with the AFK and HITL types, I do think there is a bigger set of problem space where despite the best of agentic coding modes, both HITL and AFK, you would need to consciously use your background mind, for days, weeks or months to probably crack the code.

This process might take days, or months. A question I have for the reader here is how rare or common has it been for you to be in this background mind mode trying to solve a hard problem? Me, personally, it’s been quite rare. It’s such a terrific experience to be in this mode of problem solving, where you don’t want to be disturbed, and neither do you should be in front of the computer.

You should be lazying around, doing random chores, or as the OP suggests, if you do have a hammock in your background, then that’s all you need.