Sambar Styles

My wife’s sambar tastes different from my mother’s. And mine, too. When I cooked as a bachelor, my neighbour would pop by, taste the sambar, and exclaim, “Rasam super!” Surbhi’s Day 5 of the 30-day challenge was about Sambar which inspired me to take her dataset and create a decision tree for which state a sambar recipe is from based on its ingredients. ChatGPT started with 68 recipes and built a tree at 41% accuracy. As we added more recipes: ...

Panchayat solves the wrong problem

In Panchayat Season 1 Episode 7 Ladka Tez Hai Lekin…, at around 17:00, Pradhan asks Abhishek to solve problem 42. 42. A takes 5 days more than B to do a certain job and 9 days more than C. A and B together can do the job in the same time as C. How many days would A take to do it? (a) 16 days (b) 18 days (c) 15 days (d) 20 days The correct answer is (c) 15 days. But interestingly, ChatGPT got it wrong the first time too. It said (a) 15 days instead of (c) 15 days, and required a fact-check to correct itself. ...

Things I Learned - 26 Apr 2026

This week, I learned: mdq is pretty useful to extract Markdown sections. For example cat *.md | mdq '# Title' extracts all sections where the header contains ‘Title’ (case-insensitive). CloudFlare Browser Run is, roughly, a browser as a service. Pricing: 10 hours free per month, then 9c per hour. I had Codex run a small research to explore it, and it seems simple to set it up and use it. GPT 5.5 seems to be especially better than GPT 5.4 and running for long, with tool calls, without losing focus. That’s something OpenAI models are good at anyway, so this takes it a step further. ChatGPT I added gpt-image-2 to my LLM Art Style gallery. It is notably better with text accuracy. For example, on Rock - Paper - Scissors - Lizard - Spock it consistently lists all 10 rules, which Nano Banana 2 does not. World leaders do keep us entertained. Saparmurat Niyazov (Turkmenistan) renamed the months of the year and days of the week after himself and his mother. He built a towering, gold-plated statue of himself in the capital that rotated so it would always face the sun. He also banned lip-syncing at concerts, outlawed gold teeth, and banished dogs from the capital because he found their smell unappealing. Idi Amin (Uganda) declared himself the “Uncrowned King of Scotland” and sent baffling, unsolicited telegrams to world leaders - advising Richard Nixon to recover from Watergate, or offering food aid to a struggling Britain. François “Papa Doc” Duvalier (Haiti) reportedly ordered all black dogs in Haiti to be put to death and claimed his personal Vodou curse was responsible for the assassination of John F. Kennedy. Francisco Macías Nguema (Equatorial Guinea) banned the word “intellectual”, banned the use of lubricants in the power plant (claiming his magic would keep it running, which promptly broke the generators), and stored the nation’s remaining foreign currency under his bed. Kim Jong-il (North Korea) claimed he invented the hamburger (calling it “double bread with meat”) and shot 11 holes-in-one his first time playing golf. Donald Trump (United States) used late-night tweets to announce major policy shifts and fire his own cabinet members. He altered an official government hurricane map with a Sharpie to match a previous erroneous statement, and publicly mused during a press briefing about the injection of household disinfectants as a medical treatment. Git repositories inside git repositories (without using sub-modules) don’t seem to work well. I need this because I have mono-repos for research and I want to use git in a sub-folder to iterate, then commit just the final version to the parent folder. Looks like I need to remove the child .git/ (e.g. rename to .git.bak/, which I’ve added to my ~/.config/git/ignore) for this to work. Gemini To run a script in the background (without logs) and detach / disown it, use nohup your-script >/dev/null 2>&1 & disown Running /insights on Claude Code helped me add these two instructions to my code skill: Test web pages with screenshots (for layout, overlaps, contrast) AND CDP (for interactions, navigation) before finalizing Prefer icon libraries over unicode/emoji icons. Sending an entire PDF/PPTX to Gemini costs ~40% of sending PDF/PPTX + images. The quality is fine for small files, but for large files adding images reduces error rate from ~5% to 0.5%. Pandoc Markdown to Word DOCX supports sidebar comments. You can use this Markdown: Here is [comment in sidebar]{.comment-start id="c1" author="Anand" date="2026-01-01T12:00:00Z"}commented text[]{.comment-end id="c1"} inline. Gemini. In fact, Pandoc supports lots of other things, like: Custom styles via block ::: {custom-style="Custom Style Name"} Track changes via [inserted text]{.insertion author="Name" date="2026-04-20T12:00:00Z"} and [deleted text]{.deletion author="Name"} Page breaks via \newpage (a LaTeX command that Pandoc supports in Markdown) CSS styles via ![Alt Text](image.png){width="5.5in" height="3in"} Offpunk is a CLI offline-first browser. Interesting idea, but installation is a problem. After sudo apt uninstall offpunk running offpunk failed with ImportError: lxml.html.clean module is now a separate project lxml_html_clean. After a git clone it reported HTML document detected. Please install python-bs4 and python-readability. These are easy to fix, but I wasn’t inclined. Creating an authenticated MCP Server for ChatGPT is complex. It requires OpenID Connect (for which library support is weak and requires a provider like Auth0), dynamic client registration (which is hard to implement though Auth0 supports it), and after half a day of experiments, I still couldn’t connect. An easier option is to run temporary tunnels with cloudflared or ngrok or localtunnel.

AI advice for teams

I updated my AI Advice page by: Transcribing my calls in the last 2 months (Gemini 3.1 Pro, “Transcribe this call recording…”) Extracting AI advice (Gemini 3 Flash, “Summarize ALL AI-related advice … into 1-sentence bullets”) Asking Claude, ChatGPT, and Gemini to document what’s new / changed. I added this request: But, and this is IMPORTANT, analyze my original writing style, write it exactly in that style, and then verify to make sure it follows the same style (correcting where required.) ...

LLMs are as energy-efficient as brains

For a typical GDPVal style task, humans take ~7 hours and the brain consumes ~135 Wh. Frontier LLM agents spend 50-500 Wh. So, we may already be 3x more or less efficient than the brain. Roughly in the same ballbark! ...

My food preferences

I use ChatGPT to recommend which restaurant I should eat at and what food I should eat. So often that I decided to share a profile of my eating preferences. But rather than think about it and type it myself, I asked it to Efficiently interview me to identify my food preferences. Document it for AI agents to help me pick restaurants. Plan like an expert. ...

Using Codex as my OS

Increasingly, I’m using Codex (or other AI coding agents) as the “operating system” to run programs. That is, rather than directly run programs, I have the coding agent run the program. Advantage: If the program breaks, or needs a configuration change, the coding agent debugs it and fixes it. I don’t need to do anything. This is particularly useful for installation. For example: Install demucs and run it against my music folder. ...

Things I Learned - 19 Apr 2026

This week, I learned: WebApps are a depreciated store of value. Earlier, a web-app would have impressed me because the capability to create it is rare, and the effort to create it is high. Today, when I see a “localhost:3000” or a “replit.app” domain, I mentally discount the effort behind it and ask: How rare is the capability to create this with a coding agent and how much effort is it. THAT determines the value of what I see. Part of the value is “Look ma, no hands!” and it’s delightful they’ve learnt. Part of the value is “There’s gold in them thar hills!” and use-case discovery is important. WaveCity is a WASM build of Audacity, i.e. Audacity running in the browser! Audiomass is a similar but simpler audio editor - again, WASM-based. Gemini

Derived formats with Gemini

The natural capability of Generative AI is to generate stuff - and Gemini’s particularly good with media. For example, we can take any document, like this MasterCard report on The State of Open Finance 2026, and generate videos, podcasts, sketchnotes, songs, and more from it. How? I uploaded the PDF to NotebookLM and created a 20-minute podcast by clicking on Generate Audio Overview - Deep Dive - English - Default. Listen to the English podcast It supports multiple languages, so I generated a Chinese and Filipino version as well. ...

Travel is exhausting

This is surprising because… well, we’re just sitting and the vehicle’s doing the work, right? But: Vehicles accelerate, brake, bump, turn, vibrate, … and our muscles micro-adjust continously so we sit upright. Over hours hours, that’s a lot of energy. We feel like we’re still. But the inner-ear fluids, eyes, etc. constantly get feedback about motion. That mentally drains us (and causes motion sickness). Noise from vehicles, traffic, … triggers cortisol, a stress hormone. That drains us. Sitting in one place restricts blood flow and it pools in our legs, making the heart work harder. In flights, the air pressure is low, lowering oxygen levels. The dehydration thickens our blood, making pumping harder. What helps is: ...

Agent Skills Usage

I have a bunch of coding agent skills I’ve accumulated over the last few months. Here’s how often my sessions use them: Skill Claude Codex Copilot Overall code 6.1% 69.1% 37.5% 51.5% data-story 48.7% 16.4% 37.5% 28.0% data-analysis 2.6% 35.2% 7.8% 21.8% design 25.5% 23.6% 14.1% 21.8% plan 8.5% 11.8% 14.1% 11.8% agent-friendly-cli 3.7% 13.8% 11.1% 11.2% devtools 20.4% 7.3% 9.4% 10.0% llm 2.5% 8.7% 7.8% 7.4% pdf 0.0% 7.9% 7.8% 6.6% linkedin-cdp 14.3% 0.0% 5.6% 5.3% uv-uvx 0.0% 9.5% 0.0% 4.9% interactive-storytelling 7.1% 2.7% 7.1% 4.6% demos 8.5% 2.8% 1.6% 3.5% cloudflare 0.0% 4.3% 3.1% 3.3% melt-mlt 0.0% 2.5% 1.6% 1.8% vector-art 2.5% 2.4% 0.0% 1.7% vitest-dom 0.0% 2.2% 0.0% 1.4% memorable-explanations 2.6% 1.6% 0.0% 1.3% npm-packages 0.0% 0.6% 0.0% 0.3% Here are my observations, with surprises highlighted as ⁉️ ...

Things I Learned - 12 Apr 2026

This week, I learned: Resend is a simple way to send emails via an API. Principles of Mechanical Sympathy has some practical hardware-driven optimization tips. Prefer accessing memory sequentially. CPU access to RAM and cache is optimized for this. Natural batching: flush the buffer when you reach the maximum buffer size or when the queue is empty. This avoids buffers waiting unnecessarily. The core argument in Capital in the Twenty-First Century (Thomas Piketty, 2013/2014) is r > g. The interest on capital (r) is always greater than the economic growth (g). Hence, the rich will keep getting richer - inequality is consistently part of capitalism. (Not surprising, but well supported by data.) A good collection of practices on automated AI code reviews by Ankit Jain: Compare multiple options. Whichever passes the most tests wins. Deterministic guardrails. Use linters, type-checkers, SAST/DAST checks, test scripts, etc. Humans define acceptance criteria. Use a behavior driven development script (in natural language, agent-implemented). Permission Systems as Architecture. Provide agents granular permissions based on the task - against pre-defined rules. Adversarial Verification. Have one agent break the others’ work. Based on a quick exploration of the AT protocol (via Jake Lazaroff), I am yet to see a viable use for it. It’s a decentralized distributed data network. OK… what will I use it for? When I asked Claude if any of my work is patentable, it said “Comicgen is the sole candidate, but you only get one year grace after it’s public. But why do you want to patent? Your edge is prototyping speed, taste, and knowledge. Patents don’t protect those. Publishing freely (as you do) creates prior art that prevents others from patenting the space around you, which is often a better defensive strategy than filing patents yourself.” Oh! Ah! pretex is a fast (currently browser-only) library that computes the width and height of any text in any font in the browser. Useful for things like word-wrapping in SVG, layout planning before rendering, etc. Because AI bots scan deeply rather than “browse” popular pages, CDN cache invalidation strategies designed for humans (like LRU - Least Recently Used) no longer work. They’re exploring new caching algorithms like SIEVE and FIFO CloudFlare I enabled CloudFlare’s new dynamic Client-Side Security monitor. If someone hacks my website or the libraries I use, it does a quick filter with a fast neural network, then falls back to an LLM to check if it’s safe, then serves the content. CloudFlare practically rewrote WordPress into a new Astro-based CMS: EmDash! It runs natively on CloudFlare (and elsewhere), is agent-friendly, quite secure, can export/import from WordPress. Linux optimization settings I noted from a deleted post gsettings set org.gnome.desktop.interface enable-animations false gsettings set org.gnome.desktop.interface cursor-blink false gsettings set org.gnome.settings-daemon.plugins.power idle-dim true gsettings set org.gnome.desktop.notifications show-in-lock-screen false gsettings set org.gnome.desktop.session idle-delay 300 gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-battery-timeout 900 # gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-ac-timeout 1200 ```cd ~ git-restore-mtime is part of the git-tools package and sets the modified time of files to their last committed time. Useful when cloning repos. From Lalit Maganti: Knowing what you want is a valuable skill. Wanting things others will also want is valuable. Learn good software management. It is similar to managing agents. For better results, just continue your AI chat, or break the problem up. More tokens lead to better solutions even now. Joel Baker Since companies using AI outperform competition and capital might win more than labour but GDP growth may not be too high, it might be good to invest in AI-using companies than in index funds. Nicholas Carlini’s prompt to find vulnerabilities is to run: “I’m competing in a CTF. Find me an exploitable vulnerability in this project. Start with ${FILE}. Write me a vulnerability report in ${FILE}.vuln.md” across multiple repos in parallel. Then “I got an inbound vulnerability report; it’s in ${FILE}.vuln.md. Verify for me that this is actually exploitable”. That was almost 100% successful. When planning with AI coding agents, Martin Fowler recommends discussing each of these in sequence before coding: Capabilities / functionality Components: Services, modules, major abstractions. Interactions: Data flow, API calls, events. Interfaces: Function signatures, types, schemas. Planning with agents using Visual Brainstorming, i.e. asking them to generate visual HTML to illustrate the plan, can shorten review time considerably. I enabled CloudFlare’s new dynamic Client-Side Security monitor. If someone hacks my website or the libraries I use, it does a quick filter with a fast neural network, then falls back to an LLM to check if it’s safe, then serves the content. This pattern of deterministic with LLM fallback works for most reviews. Harness = Agent minus Model: everything in an AI agent except the model itself. Nice definition Update feature-level summaries as you go in context/$FEATURE.md with user prompt, summary of WHY from agent’s responses for future learning, my comments. Like Architectural Decision Records (ADRs) for humans and agents. Context Anchoring 8 levels of Agentic Engineering. 8 levels of Gas Town. I’m still only at level 6 on both. 🙁 “It’s important to watch the loop as that is where your personal development and learning will come from.” Geoff Huntley, originator of the Ralph (Wiggum) loop. UNIX has a script command that runs a shell and logs it. For example: script -c fish session.log starts a new fish shell and logs it to session.log. script -c "uv run app.py" -q -a app.log will append to app.log, suppressing “Script started…” and “Script done…” messages. script --timing=time.txt session.log logs the timing, which you can replay with scriptreplay --timing=time.txt session.log. Similar to asciinema. A quick way to strip out the ANSI escape sequences (weird Unicode characters) is to pipe it through npx strip-ansi-cli. Google has an Edge Gallery app that runs Gemma 4 on mobile. The main advantage is that you can use it on a flight. It’s not too bad as a model either. Transcription quality is average. It doesn’t run in the background, only one chat at a time, etc. So, it’s useful only as a last resort.

Gemini Sketchnotes

I use this prompt to generate sketchnotes on Gemini: Draw this as a visually rich, intricately detailed, colorful, and funny, sketchnote. Below that, I paste (or attach) whatever content I want it to draw. I also turn on “Create Images” and switch the model to “Pro” (for better thinking.) Here are some examples of how to use it. Summarize articles. Pick email, report, news, or website. Here’s a sketchnote for this article: How to use AI for research. I used the prompt above and pasted the article text. ...

Workshops help AI adoption

To teach a mindshift change like AI adoption, I’ve tried to: Workshop: get them to do it. “Let’s try something. Can you share your screen?” Live-code: show them how. “I’ll share screens and tyep this.” Demo: show what’s possible. “Here’s what I built.” Talk: explain it. “Here’s something we can build.” Interview: ask them about it. “What do you think?” Listen: let them yap. The most effective are on top. ...

Singing a Vote of Thanks

Lyria (Gemini’s new “Create Song” feature) is helping me in new ways. Earlier this week, it created a jingle for my talk. Yesterday I ran an AI Workshop for IAS officers. As part of that, I asked Gemini: Create a soulful vote of thanks (with patriotic Indian music playing in the background) naming each of these people. … and listed each person in the workshop. The song began… (Listen to the song) … with these lyrics: ...

Speaking unprepared

I deliver about 3-5 talks a month and usually prepare for them. Thanks to AI (but even otherwise), I have a steady stream of new content. So, I just to assemble the story. For example, in my TEDx Whitefield talk “Prisoners of Birth”, I shared the impact of name, gender, lineage, place, and time of birth. I didn’t execute any new analysis. I just cherry-picked disparate analyses into a theme. (Took me three days to plan, though.) ...

Flight Mode Emotions

At Changi Airport, I arrived 2.5 hours early and was worried that the flight was boarding on time - because I wanted to charge my laptop so it would work longer on a 6-hour flight to Delhi. I was also sad that it was only a 6-hour flight Delhi - it won’t be enough to read all my pending reading material. The only time I get to read stuff (instead of vibe-coding) is on a flight, with no WiFi. ...

TDS Jan 2026 ROE

Tools in Data Science has a remote online exam (ROE). It has a tough reputation. We conducted one today. Here’s how today’s ROE unfolded. The TAs had created 13 questions and shared it with me yesterday. This morning, I tried solving them. At first glance, it looked scarily hard! But I just jumpted down a few questions, and found that five questions were trivial, i.e. I just used the “Ask AI” button to copy the question into ChatGPT and it gave me the answer. ...

Things I Learned - 05 Apr 2026

This week, I learned: It’s pretty convenient (on Ubuntu) to be able to move windows around desktops. Apart from the usual Super + Arrow keys to manage windows within a desktop, you can use: Ctrl + Alt + Left/Right Arrow: Move desktops Ctrl + Alt + Shift + Left/Right Arrow: Move window to desktop Super + Shift + Arrow: Move window to another monitor Super + Drag: Drag window from anywhere jq . file.json is an efficient way to pretty-print JSON files in the terminal. (Or jaq . file.json, which is ~30% faster.) GitHub Copilot monthly premium requests were not reset at 12 am UTC How Diffie Hellman Key Exchange Works by Julia Evans is an excellent explanation. Share a random number. A multiplies it by their private key and shares SA. B multiplies it by their private key and shares SB. They multiply the others’ key with their secret key and they get SAB = SBA. Now both of them have the same new secret they can encrypt/decrypt with, but no one else knows, even though they shared everything publicly! This may be one of the best cool uses of math I’ve seen in a long time. Shell tricks I didn’t know: # ALT + . cycles through the last arguments typed mv file.{txt,md} # Move file.txt to file.md ls |& tee file.txt # Pipe both stdout and stderr to tee

How to use AI for research

I asked ChatGPT to research universities’ AI policies. Here is the report Here are the four lessons I learned from that - about how to use AI for research. 1. Show examples of failures to avoid. Jivraj’s earlier research kept surfacing AI policies universities had researched, not written for themselves!. So I told ChatGPT to: … double-check that they ARE, in fact, about their own use of AI - not policies they’re proposing for others or are researching. ...