Read Tamil on TV with Gemini

I’ve been reading books using AI. Today, I used Gemini while watching a TV show. (Not to watch TV - just while watching TV.) There’s this scene in Iru Dhuruvam Season 2 with a sheet of paper with Tamil text on it. The script was small and I couldn’t read it clearly. (I’m pretty slow at reading Tamil anyway.) So I took a screenshot (Linux is great that way - you can record screenshots from any video player) and asked Gemini: ...

Sonnet 4.6 vs MiniMax M2.7

Based on several (i.e. two) recommendations, I subscribed to MiniMax. At $10/month, you get 1,500 requests every 5 hours and 15,000 every week. That’s a LOT! Using the same prompt I had Claude Code generate two data stories: The first paragraph, by Claude Sonnet 4.6 The first paragraph, by MiniMax M2.7 Here’s my comparison of the two. It’s partly based on Claude Opus 4.6’s comparison but I felt the same way. ...

Coding agents ARE the new software

Increasingly, I use coding agents instead of writing software. For example, I built a Blog UMAP. Then, I built Calvin UMAP. And more. But instead of building re-usable software, I just ran Claude with prior context. Increasingly, I use coding agents to run software. For example, I use Codex to classify my expense receipts. It writes re-usable code, but I run it using Codex, and it updates the code with new/edge cases. ...

The Nov 2025 Vibe Coding Ghost Revolution

I kept hearing that with the Nov 2025 release of Opus 4.5 and GPT 5.2 Codex, ex-coders were sprinting back to coding. On a sample of ~1,700 developers on GitHub, exactly ten fit the “dormant returner” profile. Here are a couple of examples: But they’re the exception. I could find only TEN out of 1,700 developers who returned. I also found a few who exited: To be fair, the vibe coding revolution is real, but maybe we are (I am) mis-interpreting it. ...

Things I Learned - 22 Mar 2026

This week, I learned: Psychological operations in design by Narendra Ghate When lights are dimmed people speak softer. So, dimming lights reduces sound levels in noisy offices. Rather than reduce the size of shampoo sachets (which customers and business both hate), include 2 shampoos in one sachet, tearable in the middle. Price saches at 95p with a 5p deposit for the sachet - which rag-pickers can collect and return to the retailer. People think of stains like wounds on cloth. So a “stain band-aid” where you stick a strip, and remove it after 5 min to remove the stain, is catchy. A mechanical wind-up fish that stirs the water in the bucket while clothes are soaking speeds up the process. Senthil & Amutha, founders of Payir demonstrated a re-usable fabric calendar that converts into a bag for re-use. Pretty clever! Their message at the Chennai Design Festival was that good design can be for the masses and by the masses to reclaim their time, energy, and joy. The urinary bladder works based on involuntary muscular contractions towards the end, to clear out the last bits of fluid. It’s not fluid flow, it’s muscle contractions. (Oh, the things I learn!) Gemini Indigo bans ghee in cabin baggage. Also coconuts, pickles, oily foods, gooey cakes, spices (masala, powders), strong-smelling food. ChatGPT New skill unlocked: how to demo without knowing what you’re demo-ing. STEP 1: Copy-paste all demo pages as Markdown. STEP 2: Tell AI “Here is a demo I’ll be showing. (Add context.) Tell me how I should explain this and what I should point out as specific examples. Use concise bullets.” We’ve learnt not to do things we don’t know how to (until we learn it). When AI is doing things, this is a bottleneck. Get out of the way. Stop filtering for what YOU can do. Stop learning what IT can do. Ask for it. That’s faster. Learning can come later. I keep forgetting that QR codes need a white border for them to work. TerraDraw provides a unified API across multiple mapping libraries. (In the vibe-coding era, this is not as useful.) To create desktop apps declaratively on Linux, Slint, Flutter, QML(Qt) and GTK4 are options. Slint and Flutter seem to be cross platform. Slint is newer, less mature but compiles to small fast binaries and might be a good option to explore. Flutter seems more mature and fairly popular. Claude PyTorch Tracing watches one forward pass and freezes the path into a portable recipe. But it silently ignores branches your example didn’t take. Claude The Internet is forking into a human internet vs an agent web LinkedIn SamGeo is a Python Package for geospatial image processing. While OlmoEarth provides geospatial embeddings, SamGeo can convert geospatial data to vector data! So you can do things like: Create the outer boundary of all apartments with swimming pools in a city Extract the shape of all lakes across the years to find out how they’re changing. Terence started Foundation for Science and AI Research (SAIR) to use AI in science research. Verifiable proofs (e.g. LEAN) are a big part of this. Since AI needs to run on phones and that needs GPUs, a lot of phones might need replacement in the next few years.

Live Vibe Coding using Others' Ideas

I spoke today on Design in the Age of Infinite Generativity at the Chennai Design Festival. You can read about the talk in the link about. This post is about my preparation. Tue 10 Mar 2026. Damn! Palani’s asked for the topic. Claude, what should I talk about!? Fri 20 Mar 2026. ChatGPT, tell me who the other speaker are. Fri 20 Mar 2026. Oh, I’ll just pull a bunch of links, use browser tabs as slides, create some slide dividers, and I’m ready! Sat 21 Mar 2026 1:00 pm. I’m NOT ready! The story doesn’t flow. It’s rubbish. Sat 21 Mar 2026 3:00 pm. Let me drop some of the boring ones. I just have 15 minutes. Sat 22 Mar 2026 3:30 pm. Oh, maybe I should listen to what the others are saying, just… you know… … and that proved the best decision ever, because Senthil of Payir showed a re-usable fabric calendar that converts into a bag. It was a fantastic idea, so I got curious. ...

Calvin UMAP

Similar to the embedding map of my blog posts, I created an embedding map of Calvin & Hobbes. It uses the same process as before. Video

How I use AI to teach

I’ve been using AI in my Tools in Data Science course for over two years - to teach AI, and using AI to teach. I told GitHub Copilot (prompt) to go through my transcripts, blog posts, code, and things I learned since 2024 to list my every experiment in AI education, rating it on importance and novelty. Here is the full list of my experiments. 1. Teach using exams and prompts, not content ⭐ Use exams to teach. The typical student is busy. They want grades, not learning. They’ll write the exams, but not read the content. So, I moved the course material into the questions. If they can answer the question, great. Skip the content. Use AI to generate the content. I used to write content. Then I linked to the best content online – it’s better than mine. Now, AI drafts comics, interactive explainers, and simulators. My job is to pick good topics and generate in good formats. Give them prompts directly. Skip the content! I generated them with prompts anyway. Give students the prompts directly. They can use better AI models, revise the prompts, and learn how to learn with AI. ⭐ Add an “Ask AI” button. Make it easy for students to use ChatGPT. Stop pretending that real-world problem solving is closed-book and solo. ⭐ Make test cases teach, not just grade. Automate the testing (with code or AI). Good test cases show students the kind of mistake they may - teaching them, not just grading them. That’s great for teachers to analyze, too. Test first, then teach from the mistakes. Let them solve problems first. Then teach them, focusing on what failed. AI does the work; humans handle what AI can’t. This lets us teach really useful skills based on real mistakes. 2. Make cheating pointless through design, not detection ...

Local context repositories for AI

When people ask me for connections, I share my LinkedIn data and ask them to pick. This week, three people asked for AI ideas. I shared my local content with AI coding agents and asked them to pick. STEP 1: Give access to content. I use a Dockerfile and script to isolate coding agents. To give access, I run: dev.sh -v /home/sanand/code/blog/:/home/sanand/code/blog/:ro \ -v /home/sanand/code/til:/home/sanand/code/til:ro \ -v /home/sanand/Dropbox/notes/transcripts:/home/sanand/Dropbox/notes/transcripts:ro This gives read-only access to my blog, things I learned, transcripts, and I can add more. (My transcripts are private, the rest are public.) ...

SearXNG and Vane

While exploring resonant computing tools, I discovered SearXNG, a self-hostable metasearch engine, which aggregates results from multiple search engines. It lets you search using APIs without needing to buy API keys and without being tracked. Pretty useful for research, people discovery, etc. when combined with LLMs. Setting it up for API use seems easy (thought Gemini got it wrong twice): cat <<EOF > settings.yml use_default_settings: true server: secret_key: "local_dummy_secret_key_987654321" search: formats: - html - json EOF docker run -d \ -p 8080:8080 \ --name searxng \ -v "$(pwd)/settings.yml:/etc/searxng/settings.yml" \ -e "SEARXNG_BASE_URL=http://localhost:8080/" \ -e "SEARXNG_SERVER_LIMITER=false" \ searxng/searxng Now, you can run: ...

AI in SDLC at PyConf

I was at a panel on AI in SDLC at PyConf. Here’s the summary of my advice: Process Make AI your entire SDLC loop. Record client calls, feed them to a coding agent to directly build & deploy the solution. Record your prompts, run post-mortems, and distill them into SKILLS.md files for reuse. Prompting Ask AI to make output more reviewable. Don’t waste time reviewing unclear output. Prefer directional feedback (feeling, emotion, intent) over implementational. Also give AI freedom to do things its way. Learn from that - you’ll be surprised. Learning ...

Interactive Explainers

Given how easy it is to create interactive explainers with LLMs, we should totally do more of these! For example, I read about “Adversarial Validation” in my Kaggle Notebooks exploration. It’s the first time I heard of it and I couldn’t understand it. So, I asked Gemini to create an interactive explainer: Create an interactive animated explainer to teach what adversarial validation is. Provide sample code only at the end. Keep the bulk of the explainer focused on explaining the concept in simple language. ELI15 ...

Human as an Interface

People often email me questions they could have answered with ChatGPT. I just copy-paste the question, copy-paste the answer. This isn’t new. From 1998-2005, I used to do this Google searches. Even people who have Google Maps on their phone ask me for directions. I pull out my Google Maps and tell them. They don’t even get the sarcasm. Effectively, I’m the Human-as-an-Interface (HAAI everyone!) But I learnt today that this has historical precedent. Doormen, lift operators, doormen, the waiter who recites the menu, the secretary we used to dictate to, … ...

Software Naming Has Power

Software naming has power. I first became aware of this when a friend commented how much he enjoyed starting Windows 3. “Win,” he said. “I just love typing that!” I felt this this again recently with just. just lint Can you feel it? just build Actually, I just like to say “Just…” just test

Kick-starting a PyConf Panelist Interview

I was a panelist at the PyConf Hyderabad AI in SDLC - Panel Discussion. After that, one of the volunteers asked for a video interview. “How was the panel discussion?” he asked. Ever since I started using AI actively, my brain doesn’t work without it. So, instead of an eloquent answer, I said, “Good.” He tried again. “Um… how did you feel about it?” he asked. I searched for my feelings. Again, fairly empty in the absence of AI. “Good,” I said again. ...

IIM Bangalore PGP Interview Panel

Yesterday, I was part of an IIM Bangalore interview panel at Hyderabad, along with Professor Subhabrata Das and Debajyoti. Panels typically comprise of two faculty and an alumni, and handle 8 interviews in the morning and eight in the evening, though in our case, we had 9 each. As we arrived, we were given a USB drive with the student’s resume, statement of purpose, and other documents that they had submitted, which included employment contracts, declarations, letters of recommendation, etc., depending on the student. Each interview was approximately 20 minutes. Luckily, Dr Das set a timer for 18, so we didn’t go too far beyond. ...

Blog embeddings map

I created an embedding map of my blog posts. Each point is a blog post. Similar posts are closer to each other. They’re colored by category. I’ve been blogging since 1999 and over time, my posts have evolved. 1999-2005: mostly links. I started by link-blogging 2005-2007: mostly quizzes, how I do things, Excel tips, etc. 2008-2014: mostly coding, how I do things and business realities 2015-2019: mostly nothing 2019-2023: mostly LinkedIn with some data and how I do things 2024-2026: mostly LLMs … and this transition is entirely visible in the embedding space. ...

AI Palmistry

I shared a photo of my right hand with popular AI agents and asked for a detailed palmistry reading. Apply all the principles of palmistry and read my hand. Be exhaustive and cross-check against the different schools of palmistry. Tell me what they consistently agree on and what they are differing on. I was more interested in how much they agree with each other than with reality. So I shared all three readings and asked Claude: ...

Things I Learned - 15 Mar 2026

This week, I learned: Timsort is one of the fastest sorting algorithms. Switching from bat to moor as a pager, since bat doesn’t support wrapping via keyboard shortcuts. Gemini “Use (some-command) --help to …” is an efficient prompt prefix that tells agents to read the docs and use a CLI tool to solve a problem. For example, “Use uvx rodney --help and ffmpeg for a demo video of GitHub PRs”. As agents improve, we’ll have more mediorce output (e.g. dashboards) since people won’t know to ask for better, or validate the result. They’ll hire experts who know to ask better and verify better. Claude Opus 4.6 solved a problem Knuth was working on! Knuth Cognitive debt is what Simon Willison calls it when we build (or, in my case, say/write) stuff we don’t understand. The debt framing is apt. One solution is to generate a version intended for AI to read, and another for us. # How can an innovator learn accountability? “I’m wired to start fires. Should I learn to also run the fire department, hire someone who does, or just stay a fire-starter and let others deal with the mess?” ANS: First, accountability is high value, so do it! Second, prefer a partner over building muscle. Build muscle only if output is checkable, has value, and customers will pay. Claude | ChatGPT | Gemini Commit publicly. Put your name on the output. Commit to process (or narrowly defined output) rather than outcome. Optimize with data, code, checklists, workflows, culture, etc. OpenAI released gpt-realtime-1.5 and gpt-audio-1.5. Buth are ~20% cheaper than the 4o versions, but 6.7x more expensive than gpt-realtime-mini. 1 second is about 10 tokens, so an hour of audio input at $32/MTok is about $1.15. The “Effort” setting for AVIF files on Squoosh doesn’t reduce file size - it increases quality slightly (for a tiny increase in file size). So, set the quality to whatever file size you need and increase the effort for a slightly better quality. Polya believed in teaching problem-solving rather than solutions, i.e. teach How to Solve It, not just what you get at the end. To me, this includes: Understand the problem (from different perspectives) Plan (with different mental models) Execute (the easy bit) Look back (post-mortem, retrospectives, etc.) Browserless lets you run browsers via an API. Useful when you don’t want the overhead of setting up a browser infrastructure, or for multiple browsers in parallel. Scraping, testing, web app automation, PDF/screenshot/video generation, etc. are all possible. Gemini OpenAI has a Websocket mode GitHub Agentic Workflows lets you “compile” a Markdown file into an agentic GitHub action. Useful as a sceptical reviewer, issue-to-prototype builder, data to story generator, automated code migrator, etc. Gemini Claude

Hardening my Dev Container Setup

I run AI coding agents inside a Docker container for safety. The setup is dev.dockerfile: builds the image dev.sh: launches the container with the right mounts and env vars dev.test.sh: verifies everything works. I wrote them semi-manually and it had bugs. I had GitHub Copilot + GPT-5.4 High update tests and actually run the commands to verify the setup. Here’s what I learned from the process. 1. Make it easier to review. The first run took long. I pressed Ctrl+C, told Copilot to “add colored output, timing, and a live status line”. Then I re-ran. Instead of a bunch of ERROR: lines, I now got a color-coded output with timing + a live status line showing what’s running. ...