Link Blog
The speech begins with:
I am so tired of hearing about AI. Unfortunately, this is a talk about AI. I’m trying to figure out how to use generative AI as a designer without feeling like shit. I am fascinated with what it can do, impressed and repulsed by what it makes, and distrustful of its owners. I am deeply ambivalent about it all. The believers demand devotion, the critics demand abstinence, and to see AI as just another technology is to be a heretic twice over.
and I was hooked to read this long speech, and so I did.
There are four ideas discussed in regard of "humans using machines" with analogy to "artists using instruments" with focus on AI:
1. Under the Machine. It depicts when the machine pours more knowledge than the user, and has been portrayed with analogy to the artist Rick Rubin with reference to his work on The Way of Code:
Rubin obviously has skills and knowledge, but we get two Rick Rubins. There’s the one in the studio, unable to play guitar, but gifted at guiding artists and clarifying what they want. And then there’s the cartoon Rubin, who leans into his lack of ability in interviews, writes bad poems, and poses as the guru. Maybe that split is what happens when the work becomes too abstract from execution.
2. Beside the Machine. It depicts, how we can use AI, not under but besides it, and create great art. The author also questions why can't our prompts be ambiguous?
That, to me, feels like a better model for prompting in creative work, whether the first act of execution belongs to a person or a machine. A good prompt doesn’t need to function like a blueprint. They can also behave like a horoscope or a fortune.
3. Into the Machine.
One of the things you notice when encountering Herndon and Dryhurst’s work is that they are just as concerned with the administrative structures needed to serve artists as they are with the creative potentials of new technology. They say that all media is training data, so their work wrestles with the implications of what media generation at scale means for artists. The AI model and the economic model don’t need to come packaged together. Both can be areas for innovation, and severing the implied connection may be a requirement for ethical AI.
4. Beyond the Machine. The reference of Gibhli art generation using AI is shown, how it completely ate years of work Hayao Miyazaki.
The lesson for AI might be similar. Its danger comes because it operates inside systems with no sense of “enough.” AI needs boundaries, and so do we. The question isn’t just “what can this machine do?” but “what should it serve?” and, most importantly, “when should we stop?”
And finally I can really relate to this quote by Simone Weil:
We have to endure the discordance between imagination and fact. It is better to say, ‘I am suffering,’ than to say, ‘This landscape is ugly.
This speech was a wonderful read, although I think I would've been able to enjoy it more if I had been familiar with the artists and their work.
What is an AI Agent and how is it different from a LLM?
In simple terms, an AI agent uses a LLM to reason, iterates using tool calls to validate or use knowledge in the form of files/docs and system prompt to take an autonomous decision.
LLM : Takes an input (prompt) and produces an output. It’s reactive and does not act autonomously beyond generating text.
AI Agent: Uses an LLM as a reasoning engine, but goes further. It can:
- Take autonomous decisions based on goals.
- Iterate over multiple steps, using tools, files, or APIs to gather or verify information.
- Update its “context” (working memory) with new information after each step.
Why context engineering over prompt engineering?
We know :
- AI agents take autonomous decision, use tool calls in loops for knowledge and information.
- The decision is based on context, which might update/change in every iteration.
- Prompt engineering fails because it's not iterative.
So how should we provide relevant and useful info to agent in minimal set of tokens as its "working memory" for making next decision in every iteration?

This figure from the article shows that a system prompt remains static during course of iterations of the agent before making a decision, whereas with context-window, we keep the essential information/tool-calls, files and APIs that can effectively answer the following questions for the agent in any iteration:
- What do I need more to make a decision?
- Which resources that I have in my context window will help me reach the goal?
- Given that I have used a resource from window, now do I need to update the window with newer results and evict any previously stored context?
What is context?
A window which holds relevant docs/files, instructions, results of tools, message history that in minimum set of tokens are enough for the agent to:
- Use some knowledge from this window.
- Determine what to do next (take a decision)
- This is such that the agent produces desired results.
How is context different from system prompt?
- A system prompt is static, it doesn't change in every iteration of the agent.
- It doesn't utilize say the results of 3rd iteration in 7th iteration, which can be done using context.
How to do context engineering effectively?
My advice: Think like teaching a kid how to take better decisions using the resources he have, without being explicitly forced to go in certain direction or being so ridiculed that he can't determine what to do next even with so many resources.
So ask yourselves:
- How to use the resources?
- When to use which resources?
- Which knowledge to preserve and which to let go?
- What should be ideal behaviour? (don't go disruptive)
- structure your instructions
- tell the kid its expected behaviour; rather than hard-coded instructions (because kids can THINK and so do agents!)
The article covers this in detail with examples on how Anthropic uses context engineering in Claude Code to perform better. My goal here is to simplify it without any technical jargon, just common sense.
How to solve problems that require too much context?
- Compaction : Summarise the current context window, re-initalize next window with this summary (ideally saving only summary of historic events).
- Structured note-taking: Write notes to a persisted memory outside of context window, then use this if context window is insufficient at some point.
- Multi-agent architecture: Run many agents simulataneously with their own context windows, offload tasks and using a leader keep the processes running with combining outputs.
What's Next?
- Find where context engineering is being applied and how? Probably any open-source project?
- If suppose I use effective context engineering methods from the article, how can I assess the performance of the agent, and iterative reach to have the effective context?
Pinker takes the idea of the “bystander effect” (when people don’t help someone in distress) and reframes it through game-theory: he shows how the Volunteer’s Dilemma occurs when multiple bystanders each hope someone else will intervene — and as the number of potential helpers grows, the chance any one helps drops.
- The core insight: when someone needs help, each individual faces a trade-off — help and bear a cost, or wait and risk no one helping. Pinker shows that rational reasoning about what others might be thinking leads to diffusion of responsibility.
- I was particularly struck by how Pinker emphasizes common knowledge — not just “everyone knows there’s someone in trouble”, but “everyone knows that everyone knows” and so on. That recursive awareness (or lack thereof) really changes behaviour.
- The experiment he reports on: when knowledge of the need to act is broadcast publicly (common knowledge) vs privately (just one person knows) — volunteering declines as group size increases under common knowledge.
- This is quite commonly observed as the number of members in an organization grows, the productivity declines, and most of the time is spent on information transfer at different levels.
So, now that I've read it, I believe the best action to take in such situation is to self-volunteer and not wait for others to make the sacrifice. It might come at a cost - be it financial, emotional or physical, but what I think one should do is help anyone in need, because there are only three possibilities for any bystander:
- Best Case: Someone else will volunteer for the task.
- Worst Case: No one will volunteer.
- Average Case: self-volunteer.
And thus for the sake of humanity, please be the self-volunteer.
What is Caching?
For a given budget, you can either get a large amount of slower data storage, or a small amount of faster storage. Engineers get around this by combining the two: Pair a large amount of cheaper slow storage with a small amount of expensive fast storage. Data that is accessed more frequently can go in the fast storage, and the other data that we use less often goes in the slow storage.
- Cache hit: The requested data is present in cache.
- Cache miss: The requested data is not present in cache.
- ** Hit rate**: The percentage of time we get cache hits.
How is Caching used in our computers?
- RAM is used as a cache (fast and volatile storage), to get the frequently used in instructions than fetching it from hard disks(slow and non-volatile).
- L1, L2 and L3 caches are used within CPU, as a layer before hitting the RAM.
What are the types of Caches?
-
Temporal Locality: When frequently requested data is time-bound. For example, twitter caches tweets within last 48 hrs, as those would be frequently requested than tweets made 2 years before.
-
Spatial Locality: When the request of "before" and "after" data is highly probable, prefetch and cache the results of each request.
-
Geospatial: CDNs are used to cache images, static files, etc in multiple locations around the world.
What happens when cache is full? We use replacement policies, to evict data and replace with most recently accessed:
- FIFO: First-In-First-Out, the data that was accessed least-recently gets evicted.
- LRU: Least-recently used, the data was least recently used is evicted. Most widely used in industry.
- Time-aware LRU: use time-sensitive strategies to evict least recently used data. For example, automatically evicting posts from cache after 48 hrs in a social network.
How PostgreSQL provides built-in cache?
PostgreSQL uses a two layer caching strategy:
shared_buffers: an internal cache for data pages that store table information. This keeps frequently read row data in memory while less-frequently accessed data stays on disk.- Operating system's filesystem page cache: Heavily relies, on OS's internal filesystem page cache, which caches disks pages at kernel level.
The ratio of 25%:75% for shared_buffers to OS's filesystem page cache is used in many deployments. It also ensures ACID compliance in caching strategy.
What's Next?
- Read on specific tech used for caching - Redis, Memcached, etc.
- Consistency issues in caching
- Sharded caches
P.S: The most fun part of this article is the interactive demos that you can play with and visualize how caches work.
Dr. A.P.J Abdul Kalam, discuss on the topic "How can India innovate better?". He begins by explaining the difference between Discovery, Invention and Innovation with examples.
He says:
History has proven that those who dared to imagine the impossible are the ones who break all the human limitations.
He gives examples of great minds to prove his point, that those who can imagine and put in the effort are capable of achieving the impossible.
I don't think anyone would've thought when Alexander Graham Bell discovered the telephone in 1876, it would've been possible that one could connect with anyone over the world using the internet. But here you are reading this, essentially exchanging knowledge.
Dr. Kalam, gives example of C.V. Raman who won the nobel prize for Raman effect in the field of scattering of light :
When sir C.V. Raman was travelling overseas from U.K to Kolkata, he saw the sea was blue and the sky was blue when the sun was shining in the evening he asked "why" and he got a nobel prize.
Curiosity, Imagination and Hardwork are the characteristics of great people.
Dr. Kalam makes the audience recite the following lines, and it's one of the poems I would always come back to!
Imagination leads to creativity,
creativity blossoms thinking,
thinking provides knowledge,
knowledge results innovation,
innovation makes the nation great
Last week I implemented one of the most commonly used CLI utility in Linux- head(1) inspired by John Crickett's Build Your Own Head coding challenge.
As head supports only two options, parsing arguments was easier to handle using if-else (although I don't like it at all). I could've used any library to parse arguments and options, but I really want to implement my own library (I don't know how yet!).
Writing tests in shell scripts is very helpful (especially for CLI tools). The real power of tests comes into play at the time of refactoring. When I abstracted code related to reading files into FileReader class, I was afraid that I might've broken some previous feature, but to my surprise I ran the test suite and all passed.
It helped me in two ways:
- I didn't had to test the working of all the combinations options and arguments by manually running the code every time I made a change.
- Running test suite after every refactor, suggested exactly which tests failed, that I needed to take care of.
The challenge was fun, took me around 2-3 hours, revised some constructs of C++ like file handling(text and binary mode), classes and class methods, build system using Makefiles and shell scripting.
Aaron wonderfully summarizes Carol Dweck's study in which she gives kids to solve challenging puzzles. The kids who failed to solve the puzzles change their state from struggle and self-doubt:
“I never did have a good rememory”
to disappointment and frustration:
"This isn't fun anymore"
to accepting defeat and resignation:
"I give up"
and finally ignorance:
They started talking about other things, trying to take their mind off the onslaught of tricky puzzles. “There is a talent show this weekend, and I am going to be Shirley Temple,” one girl said.
As I kept reading, I could really see myself in same stages when I faced difficult challenges from my past experiences.
But the response of successful kids were completely opposite - they showed determination and persistence:
"The harder it gets the harder I need to try"
I believe that's the difference between those who stand out and achieve their goals and those who don't. It's the "growth mindset" that leads. I always revisit to this essay when I feel that I am having the "fixed mindset".
And I always remind myself that :
It took a seventh-grader to explain it to her: “I think intelligence is something you have to work for...it isn't just given to you... Most kids, if they're not sure of an answer, will not raise their hand...But what I usually do is raise my hand, because if I'm wrong, then my mistake will be corrected. Or I will raise my hand and say..."I don't get this. Can you help me?" Just by doing that I'm increasing my intelligence.”
So believe that you can get better and focus on growth.