2026 5

Beating AI detectors by reading aloud

Ranjeeta asked me for an article for Built In. I went straight to ChatGPT and said: Write an article for Built In. Read the section below for context on Built In's audience, style, and content preferences. Read the pitch that explains what the article should be about. Then use my blog posts, talk content, transcripts, TIL, etc. Write an article using my writing style. … and gave it all related information. ...

IIM Alumni AI Workflows Workshop

The theme of yesterday’s workshop for the IIM Alumni at Singapore was Tools and Workflows was: Agents are getting smarter, so they know what to do. Tools agents can use are growing and are more powerful. This combinatorial explosion creates explosive possibilites. This workshop covered the following six workflows: Leverage transcripts. Use Google AI Studio to transcribe non-sensitive recordings with a reusable “don’t miss anything” prompt. AI Studio’s record button is a ready-to-use transcriber. Simplify dense text as a comic, an infographic, a story. Image generation is now a tool call an agent runs for you. Then compress it as AVIF on Squoosh before you email it to a thousand people. Verify - cheaply. Paste one suffix: “Break this into key claims, mark certainty, flag the five highest-risk ones, and tell me how to verify or falsify each.” Convert to a skill to automate. Cross-checking with multiple models took error from 14% to 0.7%. Skills are assets. A skill tells the agent “here’s how I do stuff.” Build them slowly, edit them weekly, and they compound for years. No skills support in your tool? Keep them as copy-pasteable prompts. Brainstorm by forcing range. Ban the five obvious ideas; borrow from unrelated domains; smash two random concepts together with the Ideator. Hallucination is a feature when you’re being creative. Schedule tasks. Weekly regulatory scans, daily meeting prep, market briefings - and even an “unreasonable gesture” nudge. As AI hides the tech, human relationships gain value. Here’s the talk video and full story + transcript. ...

MGR via ElevenLabs

I was watching Vaa Vaathiyar which has a short clip of MGR speaking. It’s either AI-generated or mimic-ed and it wasn’t bad. I used ffmpeg to record the audio from the film, transcribed it via Gemini 3 Pro on AI Studio with the prompt: Transcribe this into Tamil … which gave me: ராமு… என்ன செய்திருக்கிறாய் நீ… வாத்தியார் கேட்கிறேன் சொல் நிமிர்ந்து பார்க்க கூட தைரியம் இல்லையா… ஓடாதே… நில்… Translation: Ramu… What have you done… Vaathiyar (MGR) is asking, tell me Don’t you have the courage to stand up and look at me… Don’t run… stop… ...

AI for film dialogues

I was watching Vasu while Codex-ing and came across this dialogue: Here’s the dialogue, recorded via ffmpeg, transcribed via AI Studio: మీ నాన్న మిమ్మల్ని పోలీస్ ఆఫీసర్ అవ్వమని అడిగితే అయ్యారా? మీకు ఇష్టం కాబట్టి అయ్యారు. సచిన్ టెండూల్కర్ ని ఇంజనీర్ ని చేయాలని వాళ్ళ నాన్న అనుకుని ఉంటే, ఇండియా ఒక గొప్ప క్రికెటర్ ని మిస్ అయ్యేది. విశ్వనాథ్ ఆనంద్ ని డాక్టర్ ని చేయాలని వాళ్ళ అమ్మ కోరుకుని ఉంటే, ఇండియాకి ఓ గ్రాండ్ మాస్టర్ ఉండేవాడు కాదు. ...

Gemini 3 Flash OCRs Dilbert accurately

Scott Adams, the author of Dilbert, passed away last month. While his work will live on, I was curious about the best way to build a Dilbert search engine. The first step is to extract the text. Pavan tested over half a dozen LLMs on ~30 Dilbert strips to see which one transcribed them best. Here are the results. Summary: Gemini 3 Flash does the best, and would cost ~$20 to process the entire Dilbert archive. But if you want a local solution, Qwen 3 VL 32b is the best. ...

2025 4

Voice coding is the new live coding

In Feb 2025 at PyConf Hyderabad, I tried a new slide format: command-line slideshows in bash. I’ve used this format in more talks since then: LLMs in the CLI, PyCon Singapore, Jun 2025 Agents in the CLI, Singapore Python User Group, Jul 2025 DuckDB is the new Pandas, PyCon India, Sep 2025 It’s my favorite format. I can demo code without breaking the presentation flow. It also draws interest. My setup was the top question in my PyCon talk. ...

Transcribe call recording

Transcribe call recordings guessing speaker names using the latest Gemini Pro model on Google AI Studio. Append all speakers, and who spoke when, for context. Transcribe this call recording with Anand (LLM expert, Straive/Gramener). DO NOT MISS ANY PART OF THE CONVERSATION. Drop verbal tics and fillers (um, uh, etc). Correct spelling and grammar but otherwise don't modify the original words. Add English translations to any non-English parts. Mark inaudible or unclear segments as "[inaudible]". Mark uncertain words with like "[word?]" or ambiguous possibilities like "[word1? word2?]". Break it into LOGICAL paragraphs, each paragraph with a **Speaker**: [Timestamp] content ...., e.g. **Anand**: [00:13] When did ... Guess speaker names. If unsure, use **Unsure**: ... **Make key points / takeaways / memorable statements bold**. **I repeat: Transcribe EVERY part of the conversation. Don't miss any turns.**

Transcribe talk

Transcribe talk recordings with Q&A. Transcribe this talk. DO NOT MISS ANY PART OF THE TALK. Drop verbal tics and fillers (um, uh, etc). Correct spelling and grammar but otherwise don't modify the original words. Add English translations to any non-English parts. Mark inaudible or unclear segments as "[inaudible]". Mark uncertain words with like "[word?]" or ambiguous possibilities like "[word1? word2?]". Break it into LOGICAL paragraphs beginning with timestamps, e.g. "[00:13] When did ..." For audience questions, prefix with "**Question**: ..." and answers with "**Answer**: ..." **Make key points / takeaways / memorable statements bold**. <!-- #TODO List details of talk or share slides, for context --> If video is provided, add this line: ...

Things I Learned - 03 Aug 2025

This week, I learned: From A.I. Is About to Solve Loneliness. That’s a Problem: “Blindly stifling every flicker of boredom with enjoyable but empty distractions precludes deeper engagement with the messages boredom sends us about meaning, values, and goals.” Maybe the best thing about boredom is what it forces us to do next. Here’s when be candid vs polite. #beliefs ChatGPT If there’s high trust (i.e. the other person trusts you): Important topic/decision: Be candid Unimportant: Follow culture (e.g. in Japan, you’d be polite; in The Netherlands, you’d be candid) Low trust: Important: Earn trust first Unimportant: Be polite I didn’t realize that it was Luis Alvarez (whom I know from his work on the bubble chamber) is the same person who figured out that an asteroid killed dinosaurs. He also used muon tomography to search pyramids for hidden chambers and figured out Kennedy was shot from behind. Added his biography, Collisions to my to-read list. Ref Benjamin Green suggests that OpenAI Study mode is sycophantic. E.g. in this conversation, ChatGPT carefully balances truth and politeness. A reader might misinterpret that as agreement. But sometimes, we need candor. Politeness trades clarity for harmony. People who trust AI should tell it to be more candid. ⭐ Here’s my current response when asked, “How should I use LLMs better”: Use the best models, consciously. O3 (via $20 ChatGPT), Gemini 2.5 Pro (free on Gemini app), or Claude 4 Opus (via $20 Claude). The older models are the default and far worse. Speak & listen, don’t just type & read. I had to resist the temptation to ignore ChatGPT response when a colleague read it out. We are patient with and have respect for humans but not for AI. The value we derive requires both. Suggestion: Speak and listen rather than type and read. It’s hard to skip and easier to stay in the present. It’s also easier to ramble than type. Keep an impossibility list. There is a jagged edge that moves. When you note down what’s impossibile today and retry every month, you can see how that edge shifts. Wait for better models. Many problems can be solved just by waiting a few months for a new model. You don’t need to find or build your own app. Make context easily available. Context is one of the biggest enablers for LLMs. Use search, copy-pasteable files, previous chats, connectors, APIs/tools, or any other way to give LLMs examples and context. Have LLMs write code. LLMs are bad at math. They’re good at languages, including code. Running the code gives output with low hallucinations. This combination can solve a WIDE variety of problems that need creativity and reliability. Learn AI coding. 1. Build a game with ChatGPT/Claude/Gemini. 2. Improve it. 3. Create a tool useful to you. 4. Publish it on GitHub. APIs are cheaper than self hosting. Avoid self-hosting. Datasets are more important than fine-tuning. You can always fine-tune a newer model as long as you have the datasets. Most CDNs use package.json "exports" for the default URL of npm packages. jsDelivr uses jsDelivr > browser > main (does not use exports - a notable exception) unpkg.com uses exports.default > browser > main skypack.dev uses exports.default > module > main esm.sh uses esm.sh.bundle > exports.default jspm.dev uses jspm > exports.default > main A quick way to transcribe audio recordings is via: llm --system "Transcribe" --attachment recording.mp3 --model gemini-2.5-flash "This recording is about (context)". Providing context improves transcription, e.g. by spelling names and technical terms correctly. Since Gemini has a 1M input context, using Gemini CLI as a sub-agent from Claude Code using the -p or --prompt flag lets it crunch large code bases and pass relevant responses back to Claude Code. #ai-coding While ChatGPT Codex aligns with my minimalistic style and follows instructions very well, it also tends to remove comments in my code and oversimplifies. Jules is better than that regard. #ai-coding Teaching vibe coding is satisfying, too. I guided a developer to write a Python workflow by providing 2 prompts. Both of these were one-shotted by Claude 4 Sonnet. The entire process took 20 min with me guiding them over the phone. #ai-coding “Write a Python script to extract a page from a PDF file and save it.” Followed by “Write minimal code. Drop error handling.” “Write a Python script to pass a PDF file to an LLM for OCR and print the result. Use this code sample… [PASTED CODE].” Followed by “Write minimal code. Drop error handling.” LLM users are maturing quickly. Early adopters who are open to understand the generic capabilities of LLMs through demos are somewhat saturated. The early majority have come in. They aren’t interested in generic capabilities. They’re looking for solutions that solve their specific problem. Soon the late majority will come in asking for existing solutions that have already solved their problem for many others. How can a generic industry-agnostic technology team create demos or solutions for this early majority when we don’t yet know their use cases? ChatGPT Maintain a living “pain wiki” that teams updates daily. Create thin-slice demos that solve ONE pain-point. Re-configure with an industry skin. Result: ten demos that feel bespoke. Publish ROI, client list. Run as one-day POCs with client data. Open toolkit to partners. Track popularity of tools. Archive unused ones. Consolidate popular ones into solutions. AI closes the gap between junior & senior devs – even when both use AI. Quality doesn’t suffer much. So onboarding can be faster, compensation ladder may shorten. When using AI, developers code more and “project manage” less. Collaboration need reduces and hierarchies are likely to flatten. Generative AI and the Nature of Work #ai-coding FFmpeg in plain english lets you run ffmpeg in the browser with plain English commands. It converts the task using an LLM into an ffmpeg command, runs it in browser via WASM (without uploading the file) and saves the output locally. This is very useful, since ffmpeg has one of the most complex command line options. I use an llm template defined via: llm --save ffmpeg --model gpt-4.1-mini --extract --system 'Write an ffmpeg command' which I can use like this: llm -t ffmpeg 'Crossfade a.mkv (1:00-1:30) with b.mkv (2:10-2:20), 3s duration' OpenAI’s prompt engineering guide recommends an interesting tactic that includes this prompt snippet, which I think is very powerful. ask clarifying questions when needed ...

2024 1

Loved this Rocky Aur Rani Kii Prem Kahaani scene where Ranveer asks, “Chinese ko Chinese bol sakte hai?” हम बहनदी भी नहीं बोल सकते? आंटी, मैं दिल्ली से हूँ। मैं कैसे नहीं बहनदी बोलूं बहनदी!? कैसा जमाना आ गया है? फैट-ों को फैट नहीं बोल सकते, ब्लैक-ों को ब्लैक नहीं बोल सकते, ओल्ड-ों को ओल्ड नहीं बोल सकते, मुँह खोलने से डर लगता है मुझे! आप मुझे बताओ, चाइनीज़ को चाइनीज़ बोल सकते हैं? ...

2010 2

The Calvin and Hobbes search Takedown

Eight years ago, I started typing out each of the Calvin and Hobbes strips by hand. Four years ago, I set up a site that let people search for strips. Early this month, I was asked to take it down. This is the story. I can’t quite remember when I started reading Calvin & Hobbes. The earliest reference I can find in my blogs is in July 1999. I remember it didn’t take me long to become a fan. I’d read every strip on the newspaper; hunt them out at bookshops; and spend a fair bit of time searching for archives online. ...

Calvin, speechless

Comments Vinu 28 Apr 2010 11:25 pm: Nice ! what did you do? Manually erase the text? Knowing you, i suspect there is some automation at work here :) S Anand 29 Apr 2010 7:17 am: Oh, not quite. By 2006, I’d typed out all the Calvin and Hobbes (by hand, spending 6 years at it). This was just filtering all the strips that didn’t have any text on them :-) Vinu 30 Apr 2010 5:52 pm: Ouch. That’s a lot of typing. Surprised you did not crowdsource it… Perhaps for the next assignment? Asterix comics anybody?

2008 2

Dilbert search statistics

It’s been three weeks since I initiated the effort to type in the Dilbert strips and the results are encouraging. About 2 years worth of strips have been typed out. So this Dilbert viewer now has a reasonably sized index for searching. Many thanks are in order here. The first is due to geek.nl, whose images I have taken the liberty of hotlinking. Thanks also to those who’ve taken the time out to type strips: ...

Dilbert search engine

UPDATE: 13 Jan 2026: Scott Adams passed away. RIP. UPDATE: Mar 2023: Dilbert.com was closed but archives are accessible via the Wayback Machine (slow). Search does not work well. Dilbert viewer is an alternate interface via Reddit. UPDATE: 2012: dilbert-search.appspot.com died, likely of old age. – Wouldn’t it be cool to be able to search through the Dilbert archives using text? This used to be possible at Dilbert.com some years ago, as a paid service. In late 2003, I needed to find some Dilbert strips for a client, so I’d subscribed for a year. I could then search for the quotes (I happened to be looking for “outsourcing”, so you can guess the context). ...

2005 2

Calvin and Hobbes index - 900602

My Calvin and Hobbes index is current up to June 1990. Comments Sathya 28 Dec 2005 3:23 am: Are you manually typing all these stuff ? Ammadiyov … why dont u outsource such stuff :-) S Anand 28 Dec 2005 8:04 am: Whom to? :-) ritzkini 28 Dec 2005 8:32 am: !!! :O all by yourself !!?? crazy about C&H,eh ? S Anand 28 Dec 2005 10:55 am: Completely. And I’m not the only one I know either! vikram 29 Dec 2005 12:03 am: wow awesome man! i’m crazy about C&H too. great work man. :) Sathya 30 Dec 2005 3:25 am: Now you know whom to outsource to ;-P S Anand 30 Dec 2005 10:43 am: Hey, my index vanished! S Anand 30 Dec 2005 10:24 pm: It’s back. Madhu 5 Jan 2006 7:57 am: Did you try the Calvin Hobbes entire collection for their 20th Anniversary. Its about 5k in India. S Anand 5 Jan 2006 6:00 pm: Very tempting! Anonymous 9 Jan 2006 8:07 am: i have an internet link to the complete c&h, let me know if you would like iy S Anand 10 Jan 2006 9:08 am: Is it in text? I’d really like the complete Calvin in TEXT. S Anand 11 Jan 2006 11:16 am: Calvin theme subjects. Madhu 18 Jan 2006 9:53 am: Let me help you with this. I will work on Calvin and Hobbes backwards from 31-12-95 and see where I can reach S Anand 18 Jan 2006 10:52 am: Thanks, Madhu! That’ll be wonderful. Someone else I know in Germany working backwards from 31-12-95. How about if you take it forward from 01-01-93? JustSomebody 3 Apr 2010 5:17 am: Excuse me, but I think this strip search is broken. For some reason, it only has comics up to July 31, 1988. All the other comics aren’t showing and the text is replaced with jibberish. S Anand 3 Apr 2010 8:02 am: Yes – thanks for pointing this out. Fixed it now. The Calvin and Hobbes search Takedown | s-anand.net 21 May 2010 12:02 pm (pingback): […] bit puzzled, but just added it to my list of eccentricities and carried on. I was halfway there in 2005, pushed further in 2006, and with some help, I managed to finally complete […]

Calvin quotes

I’ve typed up a some Calvin and Hobbes quotations Comments FrogsIntoPrinces 1 Aug 2005 2:05 pm: By the way I have the entire C S Anand 1 Aug 2005 7:26 pm: As text? Or the images? Dhar 2 Aug 2005 2:44 pm: Unfortunately images… Dhar 2 Aug 2005 2:45 pm: And for links, check out http://digg.com/spy They use Ajax, which is a Good Thing (TM). Ravi 2 Aug 2005 7:14 pm: There is a searchable text-index at http://users.rcn.com/dtweed/calvin/index.htm S Anand 2 Aug 2005 7:38 pm: I know. I wrote to David in Feb. He could not share his database with me. So I am recreating it.

2004 1

How DNA gets converted to proteins

An animated description of how DNA gets converted to proteins.

2002 1

Calvin and Hobbes transcription

My current project: transcribing every Calvin and Hobbes into text. Because I’d like to search, using text, for the strip in which Tracer Bullet has “six slugs, one of lead and five of bourbon” or where Dad explains why the Sun rises. Comments The Calvin and Hobbes search Takedown | s-anand.net 21 May 2010 11:55 am (pingback): […] So I set out to build one. I can’t remember when, exactly, but it was before Sep 11, 2002. […]