<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>S Anand</title>
    <link>https://www.s-anand.net/blog/</link>
    <description>Recent content on S Anand</description>
    <generator>Hugo -- 0.156.0</generator>
    <language>en-us</language>
    <lastBuildDate>Thu, 09 Apr 2026 07:56:28 +0530</lastBuildDate>
    <atom:link href="https://www.s-anand.net/blog/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Singing a Vote of Thanks</title>
      <link>https://www.s-anand.net/blog/singing-a-vote-of-thanks/</link>
      <pubDate>Thu, 09 Apr 2026 07:56:28 +0530</pubDate>
      <guid>https://www.s-anand.net/blog/singing-a-vote-of-thanks/</guid>
      <description>&lt;p&gt;Lyria (Gemini&amp;rsquo;s new &amp;ldquo;Create Song&amp;rdquo; feature) is helping me in new ways. Earlier this week, it &lt;a href=&#34;https://www.s-anand.net/blog/speaking-unprepared/&#34;&gt;created a jingle for my talk&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Yesterday I ran an &lt;a href=&#34;https://sanand0.github.io/talks/2026-04-08-ai-workshop-lbsnaa/&#34;&gt;AI Workshop for IAS officers&lt;/a&gt;. As part of that, I asked &lt;a href=&#34;https://gemini.google.com/share/7a8f5e3c8ca9&#34;&gt;Gemini&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Create a soulful vote of thanks (with patriotic Indian music playing in the background) naming each of these people.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;hellip; and listed each person in the workshop.&lt;/p&gt;
&lt;p&gt;The song began&amp;hellip;&lt;/p&gt;
&lt;audio controls=&#34;&#34; src=&#34;https://github.com/sanand0/talks/releases/download/talks/2026-04-08-ai-workshop-lbsnaa-vote-of-thanks-song.opus&#34;&gt;
  &lt;a href=&#34;https://github.com/sanand0/talks/releases/download/talks/2026-04-08-ai-workshop-lbsnaa-vote-of-thanks-song.opus&#34;&gt;(Listen to the song)&lt;/a&gt;
&lt;/audio&gt;
&lt;p&gt;&amp;hellip; with these lyrics:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The morning sun rises over the secretariat corridors,&lt;br&gt;
illumining the echoes of long nights spent in duty.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;hellip; it began. Then, it went on to their names.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;To Ms. Vatsala Vasudeva, for steady hands in every storm.&lt;br&gt;
To Shri Shyamal Misra, for the silent strength of leadership.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It was in a western accent, but by now, the audience were looking at each other, pointing out as names were mentioned - with surprise and &lt;em&gt;delight&lt;/em&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;To Shri Amit Rathore, for the vision that breaks through the haze.&lt;br&gt;
To Shri V. Shashank Shekhar, for the quiet pursuit of excellence.&lt;br&gt;
To Shri Pankaj Kumar, for building bridges of progress.&lt;br&gt;
To Shri Robert L. Chongthu, for the pulse of the hills in the heart of the city.&lt;br&gt;
To Shri Sanjeev Hans, for the clarity of purpose in complex paths.&lt;br&gt;
To Shri Subodh Kumar Singh, for the resolve that never falters.&lt;br&gt;
To Shri Asheesh Sharma, for the foundation laid with integrity.&lt;br&gt;
To Shri Ramesh Kumar Sudhanshu, for the spark that inspires the team.&lt;br&gt;
To Shri Kaling Tayeng, for the voice of the frontier in our council.&lt;br&gt;
To Shri Manish Thakur, for the wisdom that informs every decision.&lt;br&gt;
&lt;br&gt;
We stand as one, guided by the compass of our republic.&lt;br&gt;
Each name a pillar, each service a prayer for the nation.&lt;br&gt;
For the republic we serve, for the people we honor.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;For a minute, I thought it was done, but we were only mid-way through.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;To Shri Devesh Kumar, for the dedication beyond the call.&lt;br&gt;
To Ms. Aradhana Patnaik, for the grace of leadership under fire.&lt;br&gt;
To Ms. Himani Pande, for the brilliance of thought and action.&lt;br&gt;
To Shri Rahul Sharma, for the steady hand on the rudder.&lt;br&gt;
To Shri Rajeev K. Mital, for the legacy of selfless work.&lt;br&gt;
To Shri Ranjit Singh Deol, for the grit that transforms challenges into victories.&lt;br&gt;
To Dr. Sirra Karuna Raju, for the healing touch of administration.&lt;br&gt;
To Shri Anandrao Vishnu Patil, for the roots that hold us to the soil.&lt;br&gt;
To Shri Sudhir Kumar, for the light that guides through the complexity.&lt;br&gt;
To Shri Subodh Yadav, for the courage of conviction in every file.&lt;br&gt;
To Dr. Richa Bagla, for the wisdom that creates space for growth.&lt;br&gt;
To Ms. Indra Mallo, for the spirit of the Northeast in our hearts.&lt;br&gt;
To Shri Nilkanth S. Avhad, for the depth of knowledge that serves the many.&lt;br&gt;
And to Ms. Mugdha Sinha, for the innovation that shapes the future of our service.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It had covered them all. In well under three minutes.&lt;/p&gt;
&lt;p&gt;The comments were personalized and felt &lt;em&gt;accurate&lt;/em&gt;, somehow. Not sure if it&amp;rsquo;s real - it might be like fortune-telling, where &lt;em&gt;we&lt;/em&gt; find non-existent patterms, and totally enjoy it!&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Thank you for the years of service.
May the path forward be as bright as the morning sun.&lt;/p&gt;
&lt;p&gt;Jai Hind.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;At &amp;ldquo;Jai Hind&amp;rdquo;, I had goosebumps. And the audience broke into an applause.&lt;/p&gt;
&lt;p&gt;We should all do this sort of thing more often. 🙂&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://files.s-anand.net/images/2026-04-09-singing-a-vote-of-thanks.avif&#34;&gt;&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Speaking unprepared</title>
      <link>https://www.s-anand.net/blog/speaking-unprepared/</link>
      <pubDate>Tue, 07 Apr 2026 13:14:13 +0800</pubDate>
      <guid>https://www.s-anand.net/blog/speaking-unprepared/</guid>
      <description>&lt;p&gt;I deliver about &lt;a href=&#34;https://sanand0.github.io/talks/&#34;&gt;3-5 talks a month&lt;/a&gt; and usually prepare for them.&lt;/p&gt;
&lt;p&gt;Thanks to AI (but even otherwise), I have a steady stream of new content. So, I just to assemble the story.&lt;/p&gt;
&lt;p&gt;For example, in my &lt;a href=&#34;https://youtu.be/ew5_-7cwSm0&#34;&gt;TEDx Whitefield talk&lt;/a&gt; &amp;ldquo;Prisoners of Birth&amp;rdquo;, I shared the impact of name, gender, lineage, place, and time of birth. I didn&amp;rsquo;t execute any new analysis. I just cherry-picked disparate analyses into a theme. (Took me three days to plan, though.)&lt;/p&gt;
&lt;p&gt;But repetition bores me. I&amp;rsquo;ve known this since 2002 when I tried coaching CAT students. Conventional teaching isn&amp;rsquo;t for me. And talks get boring too.&lt;/p&gt;
&lt;p&gt;So, often, I ad-lib. Impromptu. Deliberately under-prepared. (Panels are good practice for this. I must try improv next.)&lt;/p&gt;
&lt;p&gt;This has a surprising benefit. In the pressure of the moment, inspiration can strike.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;Like it strikes Calvin&#34; loading=&#34;lazy&#34; src=&#34;https://sanand0.github.io/talks/2026-04-06-innovation-as-a-frontier-straive/calvin-last-minute-panic.webp&#34;&gt;&lt;/p&gt;
&lt;p&gt;For example, yesterday, at an &lt;a href=&#34;https://sanand0.github.io/talks/2026-04-06-innovation-as-a-frontier-straive/&#34;&gt;internal Straive fireside chat&lt;/a&gt;, I went completely off-script and answered a question on the chat about the benefits of &lt;a href=&#34;https://gemini.google.com/&#34;&gt;Gemini&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The sort of things that you can do with Gemini is amazing. And what I do &amp;hellip; is to poke &amp;hellip; what can I do here? What&amp;rsquo;s in here? What&amp;rsquo;s in here? Recently, I saw that it can create music. And some of this music is stunning!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Now, I had to think of something interesting to do with the music. Despite &lt;em&gt;weeks&lt;/em&gt; of exploring Lyria, I never found a use for it, let alone &amp;ldquo;stunning&amp;rdquo;. Now I had 3 seconds.&lt;/p&gt;
&lt;p&gt;Then, inspiration struck!&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Now, we had music at the beginning of this Zoom call. Why does that need to be something that is unpersonalized?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I went to ChatGPT and asked it to create a &lt;em&gt;personalized&lt;/em&gt; jingle for the talk I was delivering, providing it my name, title, talk topic, etc. - something the L&amp;amp;D team could replace their stock jingle with. And it was pretty good, actually.&lt;/p&gt;
&lt;audio controls preload=&#34;metadata&#34;&gt;
  &lt;source src=&#34;https://sanand0.github.io/talks/2026-04-06-innovation-as-a-frontier-straive/where-the-paths-thrive.opus&#34; type=&#34;audio/ogg; codecs=opus&#34;&gt;
&lt;/audio&gt;
&lt;p&gt;That&amp;rsquo;s a novel &lt;em&gt;and&lt;/em&gt; a useful idea - something &lt;em&gt;many&lt;/em&gt; people can use!&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s times like this that I &lt;em&gt;really&lt;/em&gt; enjoy delivering talks. This is why I live-code. This is why I pause for questions. This is why I&amp;rsquo;m thrilled when I have no clue of the answer. Pretending to be know is fun and all that, but the kick of &lt;em&gt;discovery&lt;/em&gt; on stage &amp;ndash; that&amp;rsquo;s something else!&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Flight Mode Emotions</title>
      <link>https://www.s-anand.net/blog/flight-mode-emotions/</link>
      <pubDate>Tue, 07 Apr 2026 11:03:05 +0800</pubDate>
      <guid>https://www.s-anand.net/blog/flight-mode-emotions/</guid>
      <description>&lt;p&gt;At Changi Airport, I arrived 2.5 hours early and was &lt;strong&gt;worried&lt;/strong&gt; 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.&lt;/p&gt;
&lt;p&gt;I was also &lt;strong&gt;sad&lt;/strong&gt; that it was only a 6-hour flight Delhi - it won&amp;rsquo;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.&lt;/p&gt;
&lt;p&gt;Except that Air India offered free WiFi on this flight. Which made me &lt;strong&gt;happier&lt;/strong&gt; than &lt;em&gt;anything&lt;/em&gt;! Free WiFi! That&amp;rsquo;s like&amp;hellip; free pizza? I bubblingly sent WhatsApp messages to family.&lt;/p&gt;
&lt;p&gt;But - will I be able to read? I&amp;rsquo;ll probably start vibe coding again. &lt;strong&gt;Sad&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;However, I can turn off WiFi with Flight Mode. Which I did - and battery consumption feel from 1% to 0.3%, so it&amp;rsquo;ll last 9 hours - well beyond the whole flight. &lt;strong&gt;Happy&lt;/strong&gt;!&lt;/p&gt;
&lt;p&gt;Which led to another incredible discovery. I can do this &lt;em&gt;any time&lt;/em&gt; - turn on Flight Mode and catch up on reading! I don&amp;rsquo;t know if I have will power, but I hereby resolve to spend 2 hours a week in Flight Mode. &lt;strong&gt;Elated&lt;/strong&gt;!&lt;/p&gt;
&lt;p&gt;PS: Skipping the featured image I generate with Gemini for this post. I&amp;rsquo;m on Flight Mode!&lt;/p&gt;
</description>
    </item>
    <item>
      <title>TDS Jan 2026 ROE</title>
      <link>https://www.s-anand.net/blog/tds-jan-2026-roe/</link>
      <pubDate>Sun, 05 Apr 2026 19:04:37 +0800</pubDate>
      <guid>https://www.s-anand.net/blog/tds-jan-2026-roe/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://tds.s-anand.net/&#34;&gt;Tools in Data Science&lt;/a&gt; has a remote online exam (ROE). It has a tough reputation. We conducted one today.&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s how today&amp;rsquo;s &lt;a href=&#34;https://exam.sanand.workers.dev/tds-2026-01-roe&#34;&gt;ROE&lt;/a&gt; unfolded.&lt;/p&gt;
&lt;p&gt;The TAs had created 13 questions and shared it with me yesterday. This morning, I tried solving them.&lt;/p&gt;
&lt;p&gt;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 &amp;ldquo;Ask AI&amp;rdquo; button to copy the question into ChatGPT and it gave me the answer.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;🟢 &lt;a href=&#34;https://exam.sanand.workers.dev/tds-2026-01-roe#hq-decode-layered-server&#34;&gt;06. Layered Encoding Challenge&lt;/a&gt; (2.0) is one-shot: &lt;a href=&#34;https://chatgpt.com/share/69d22d83-0228-83a0-87ec-20f6fe3cc3d9&#34;&gt;ChatGPT&lt;/a&gt; &lt;!-- https://chatgpt.com/c/69d1b323-0858-839f-87c0-11923dbb2e6c --&gt;&lt;/li&gt;
&lt;li&gt;🟢 &lt;a href=&#34;https://exam.sanand.workers.dev/tds-2026-01-roe#hq-region-containing-point-server&#34;&gt;07. Region Containing Point&lt;/a&gt; (1.0) is one-shot: &lt;a href=&#34;https://chatgpt.com/share/69d22d83-0228-83a0-87ec-20f6fe3cc3d9&#34;&gt;ChatGPT - see second chat&lt;/a&gt; &lt;!-- https://chatgpt.com/c/69d1b323-0858-839f-87c0-11923dbb2e6c --&gt;&lt;/li&gt;
&lt;li&gt;🟢 &lt;a href=&#34;https://exam.sanand.workers.dev/tds-2026-01-roe#hq-broken-json-server&#34;&gt;10. Fix Broken JSON File&lt;/a&gt; (1.0) is one-shot: &lt;a href=&#34;https://chatgpt.com/share/69d22d85-5f70-8399-b517-25704905575e&#34;&gt;ChatGPT&lt;/a&gt; &lt;!-- https://chatgpt.com/c/69d1bbd1-ab04-839e-80cb-5d3241e19d05 --&gt;&lt;/li&gt;
&lt;li&gt;🟢 &lt;a href=&#34;https://exam.sanand.workers.dev/tds-2026-01-roe#hq-cross-lingual-entity-disambiguation-server&#34;&gt;11. Cross-entity disambiguation&lt;/a&gt; (1.0) is one-shot: &lt;a href=&#34;https://chatgpt.com/share/69d22d86-f74c-83a1-856a-5a61489cf959&#34;&gt;ChatGPT&lt;/a&gt; &lt;!-- https://chatgpt.com/c/69d1bc1c-c7d8-839e-b7f3-2b37aa28dd71 --&gt;&lt;/li&gt;
&lt;li&gt;🟢 &lt;a href=&#34;https://exam.sanand.workers.dev/tds-2026-01-roe#hq-asciirec-server&#34;&gt;13. Record Terminal Session with asciinema&lt;/a&gt; (0.5) is one-shot: &lt;a href=&#34;https://chatgpt.com/share/69d22d89-82a0-83a0-83cd-845e053a02a8&#34;&gt;ChatGPT&lt;/a&gt; &lt;!-- https://chatgpt.com/c/69d1bff0-1d88-8399-95da-393a2f489210 --&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For another four, I needed to just make sure I uploaded the files or HTML:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;🟡 &lt;a href=&#34;https://exam.sanand.workers.dev/tds-2026-01-roe#hq-regex-golf-server&#34;&gt;03. Regex Golf Challenge&lt;/a&gt; (2.0) is one-shot but it&amp;rsquo;s better to download and upload the text files, maybe, than copy-paste: &lt;a href=&#34;https://chatgpt.com/share/69d22e6a-0808-839f-a4f5-ae514a0a94d5&#34;&gt;ChatGPT&lt;/a&gt; &lt;!-- https://chatgpt.com/c/69d1c08f-b764-839a-8027-34fe23658f5a --&gt;&lt;/li&gt;
&lt;li&gt;🟡 &lt;a href=&#34;https://exam.sanand.workers.dev/tds-2026-01-roe#hq-maze-solver-server&#34;&gt;04. Maze Solver with Constraints&lt;/a&gt; (2.0) is one-shot but needs you to upload the image and a good vision model: &lt;a href=&#34;https://chatgpt.com/share/69d1c1c6-1b08-839e-af47-9b2cbab60985&#34;&gt;ChatGPT&lt;/a&gt; &lt;!-- https://chatgpt.com/c/69d1c013-75c4-83a0-ada4-22b68f89d79b --&gt;&lt;/li&gt;
&lt;li&gt;🟡 &lt;a href=&#34;https://exam.sanand.workers.dev/tds-2026-01-roe#hq-cipher-trail-server&#34;&gt;05. Cipher Trail&lt;/a&gt; (2.0) is one-shot but needs you to provide the secret HTML: &lt;a href=&#34;https://chatgpt.com/share/69d22e6c-26f4-83a0-bb21-a3bcee77e163&#34;&gt;ChatGPT&lt;/a&gt; &lt;!-- https://chatgpt.com/c/69d1bd55-6b80-839d-9dfd-dc1de798fc69 --&gt;&lt;/li&gt;
&lt;li&gt;🟡 &lt;a href=&#34;https://exam.sanand.workers.dev/tds-2026-01-roe#hq-trick-question-server&#34;&gt;12. Simple Question&lt;/a&gt; (0.5) needs you to provide the secret HTML: &lt;a href=&#34;https://chatgpt.com/share/69d22e6c-efd0-8398-8823-49f1130defd2&#34;&gt;ChatGPT&lt;/a&gt; &lt;!-- https://chatgpt.com/c/69d1bed0-717c-8398-8498-c467b03a5ef1 --&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Two questions confused ChatGPT a bit, and it needed some nudges. There is real learning here.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;🟠 &lt;a href=&#34;https://exam.sanand.workers.dev/tds-2026-01-roe#hq-rename-files-server&#34;&gt;08. Reorganize Files with Shell Commands&lt;/a&gt; (1.0) is hard because of Unicode issues and the extra README.md students should delete. &lt;strong&gt;Asking for variations&lt;/strong&gt; is the learning: &lt;a href=&#34;https://chatgpt.com/share/69d22ed6-331c-8399-8848-9cb3cec90e96&#34;&gt;ChatGPT&lt;/a&gt; &lt;!-- https://chatgpt.com/c/69d1b9ab-980c-8398-846c-c3357793b8ee --&gt;&lt;/li&gt;
&lt;li&gt;🟠 &lt;a href=&#34;https://exam.sanand.workers.dev/tds-2026-01-roe#hq-python-refactor-server&#34;&gt;09. Refactor Python Code with VS Code&lt;/a&gt; (1.0) takes few attempts (question is imperfect, intentionally) but error messages are excellent, so &lt;strong&gt;iterative feedback&lt;/strong&gt; is the learning: &lt;a href=&#34;https://chatgpt.com/share/69d22ed9-9438-839a-860c-4109398ea612&#34;&gt;ChatGPT&lt;/a&gt; &lt;!-- https://chatgpt.com/c/69d1b9c2-de34-8398-b01d-4542b1db43ef --&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;One was pretty hard and ChatGPT struggled with it.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;🔴 &lt;a href=&#34;https://exam.sanand.workers.dev/tds-2026-01-roe#hq-korean-audio-dataset-server&#34;&gt;02. Korean Speech Dataset API Validation&lt;/a&gt; (5.0) actually requires work.
At first, &lt;a href=&#34;https://chatgpt.com/share/69d22f18-02fc-839b-965a-6621554f0ab9&#34;&gt;ChatGPT refused ethically&lt;/a&gt;. &lt;!-- https://chatgpt.com/c/69d1c379-31f4-839b-89d0-f318e68bae38 --&gt;
When reframed, &lt;a href=&#34;https://chatgpt.com/share/69d22f1a-7850-83a0-a586-0f05e46dabeb&#34;&gt;it tried&lt;/a&gt;, but the human-in-the-loop (me) was too slow. &lt;!-- https://chatgpt.com/c/69d1c40c-b834-839e-a253-4430a77418e9 --&gt;
So I used &lt;a href=&#34;https://files.s-anand.net/blog/2026-04-05-tds-2026-01-roe/q-korean-audio-dataset-server-codex-session.md&#34;&gt;Codex&lt;/a&gt;, which &lt;em&gt;literally hacks&lt;/em&gt; towards the solution! It searched online for existing solutions, read the GitHub discussions for this topic, found my browser tab and started testing itself, &amp;hellip; and solved it in 10.5 min!&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This leaves the one question that AI can&amp;rsquo;t solve:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;🔴 01. &lt;a href=&#34;https://exam.sanand.workers.dev/tds-2026-01-roe#hq-share-token-server&#34;&gt;Collaborative Token Exchange&lt;/a&gt; (5.0) asks you to collect &amp;ldquo;tokens&amp;rdquo; from other people and share it. I asked Codex to hack it, but after an hour (of logging into my personal account, my IITM account, even my father&amp;rsquo;s account, exhausting my token limits, and totally psyching me), it declared the question unhackable.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;Based on this, the instructors, teaching assistants and I decided that:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;This exam is too easy with AI help. Combined with collaboration, it&amp;rsquo;s &lt;strong&gt;ultra-easy&lt;/strong&gt;. Therefore, let&amp;rsquo;s add some old questions:
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://exam.sanand.workers.dev/tds-2026-01-roe#hq-fastapi-timeseries-cache&#34;&gt;14. FastAPI Time Series Caching&lt;/a&gt; (0.5)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://exam.sanand.workers.dev/tds-2026-01-roe#hq-video-attendee-extraction&#34;&gt;15. AI Video Attendee Extraction&lt;/a&gt; (0.5)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Thanks to &lt;a href=&#34;https://exam.sanand.workers.dev/tds-2026-01-p1#hq-share-secret-server&#34;&gt;Project 1&lt;/a&gt;, people already collaborate at scale. So let&amp;rsquo;s ask for 500 tokens instead of 100.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We deployed the exam at 12:00 pm IST, an hour before the scheduled time.&lt;/p&gt;
&lt;p&gt;The hackers (e.g. who scan the source code, or change their system clocks) could see the questions earliy and started sharing and solving them.&lt;/p&gt;
&lt;p&gt;The TAs said, &amp;ldquo;Anand, shall we add more questions to make it tougher?&amp;rdquo;&lt;/p&gt;
&lt;p&gt;I said, &amp;ldquo;No, it&amp;rsquo;s OK. The ROE has built a reputation for difficulty. Let that change. &lt;em&gt;Let them have an easy exam&lt;/em&gt;.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;&amp;ldquo;If they&amp;rsquo;re going to split this in groups and have coding agents solve it, they&amp;rsquo;ll score full marks in 10-15 minutes,&amp;rdquo; I said to myself.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;When the exam ended, this was the score distribution.&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://files.s-anand.net/images/2026-04-05-tds-roe-score-distribution.webp&#34;&gt;&lt;/p&gt;
&lt;p&gt;There were several surprises here. Firstly, 9 questions were repeats. Yet, barring &lt;em&gt;one&lt;/em&gt; question, they scored lower, though they appeared in equally tough ROEs in the past.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;#&lt;/th&gt;
          &lt;th&gt;Question&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;%&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;Previous %&lt;/th&gt;
          &lt;th&gt;Previous exam&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;14&lt;/td&gt;
          &lt;td&gt;⚪ &lt;a href=&#34;https://exam.sanand.workers.dev/tds-2026-01-roe#hq-fastapi-timeseries-cache&#34;&gt;FastAPI Time Series Caching&lt;/a&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;8%&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;39%&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://exam.sanand.workers.dev/tds-2025-09-roe#hq-fastapi-timeseries-cache&#34;&gt;2025 Sep ROE&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;15&lt;/td&gt;
          &lt;td&gt;⚪ &lt;a href=&#34;https://exam.sanand.workers.dev/tds-2026-01-roe#hq-video-attendee-extraction&#34;&gt;AI Video Attendee Extraction&lt;/a&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;12%&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;64%&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://exam.sanand.workers.dev/tds-2026-01-ga3#hq-video-attendee-extraction&#34;&gt;2026 Jan GA3&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;11&lt;/td&gt;
          &lt;td&gt;🟢 &lt;a href=&#34;https://exam.sanand.workers.dev/tds-2026-01-roe#hq-cross-lingual-entity-disambiguation-server&#34;&gt;Cross-entity disambiguation&lt;/a&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;13%&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;64%&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://exam.sanand.workers.dev/tds-2026-01-ga4#hq-cross-lingual-entity-disambiguation-server&#34;&gt;2026 Jan GA4&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;7&lt;/td&gt;
          &lt;td&gt;🟢 &lt;a href=&#34;https://exam.sanand.workers.dev/tds-2026-01-roe#hq-region-containing-point-server&#34;&gt;Region Containing Point&lt;/a&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;15%&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;38%&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://exam.sanand.workers.dev/tds-2025-09-roe#hq-region-containing-point-server&#34;&gt;2025 Sep ROE&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;9&lt;/td&gt;
          &lt;td&gt;🟠 &lt;a href=&#34;https://exam.sanand.workers.dev/tds-2026-01-roe#hq-python-refactor-server&#34;&gt;Refactor Python Code with VS Code&lt;/a&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;17%&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;57%&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://exam.sanand.workers.dev/tds-2026-01-ga1#hq-python-refactor-server&#34;&gt;2026 Jan GA1&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;13&lt;/td&gt;
          &lt;td&gt;🟢 &lt;a href=&#34;https://exam.sanand.workers.dev/tds-2026-01-roe#hq-asciirec-server&#34;&gt;Record Terminal Session with asciinema&lt;/a&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;21%&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;66%&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://exam.sanand.workers.dev/tds-2026-01-ga1#hq-asciirec-server&#34;&gt;2026 Jan GA1&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;10&lt;/td&gt;
          &lt;td&gt;🟢 &lt;a href=&#34;https://exam.sanand.workers.dev/tds-2026-01-roe#hq-broken-json-server&#34;&gt;Fix Broken JSON File&lt;/a&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;30%&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;64%&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://exam.sanand.workers.dev/tds-2026-01-ga1#hq-broken-json-server&#34;&gt;2026 Jan GA1&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;12&lt;/td&gt;
          &lt;td&gt;🟡 &lt;a href=&#34;https://exam.sanand.workers.dev/tds-2026-01-roe#hq-trick-question-server&#34;&gt;Simple Question&lt;/a&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;41%&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;64%&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://exam.sanand.workers.dev/tds-2026-01-ga1#hq-trick-question-server&#34;&gt;2026 Jan GA1&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;8&lt;/td&gt;
          &lt;td&gt;🟠 &lt;a href=&#34;https://exam.sanand.workers.dev/tds-2026-01-roe#hq-rename-files-server&#34;&gt;Reorganize Files with Shell Commands&lt;/a&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;53%&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;38%&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://exam.sanand.workers.dev/tds-2026-01-ga1#hq-rename-files-server&#34;&gt;2026 Jan GA1&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Just as surprisingly, they scored &lt;em&gt;higher than these&lt;/em&gt; on 3 of the 5 new questions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;59%: 🟡 &lt;a href=&#34;https://exam.sanand.workers.dev/tds-2026-01-roe#hq-regex-golf-server&#34;&gt;03. Regex Golf Challenge&lt;/a&gt; (2.0) (253 / 430)&lt;/li&gt;
&lt;li&gt;59%: 🟡 &lt;a href=&#34;https://exam.sanand.workers.dev/tds-2026-01-roe#hq-maze-solver-server&#34;&gt;04. Maze Solver with Constraints&lt;/a&gt; (2.0) (252 / 430)&lt;/li&gt;
&lt;li&gt;54%: 🟡 &lt;a href=&#34;https://exam.sanand.workers.dev/tds-2026-01-roe#hq-cipher-trail-server&#34;&gt;05. Cipher Trail&lt;/a&gt; (2.0) (233 / 430)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;One new question ended up being almost the &lt;strong&gt;hardest&lt;/strong&gt; question - despite it being one-shot-table for ChatGPT (GPT 5.4, extended thinking).&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;2%: 🟢 &lt;a href=&#34;https://exam.sanand.workers.dev/tds-2026-01-roe#hq-decode-layered-server&#34;&gt;06. Layered Encoding Challenge&lt;/a&gt; (2.0) (9 / 430)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The toughest, though, had a 1% success rate. Though Codex could solve it in 10 min, it&amp;rsquo;s a genuinely hard question.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1%: 🔴 &lt;a href=&#34;https://exam.sanand.workers.dev/tds-2026-01-roe#hq-korean-audio-dataset-server&#34;&gt;02. Korean Speech Dataset API Validation&lt;/a&gt; (5.0) (4 / 430)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Which leaves us with the collaboration question - the one that AI can&amp;rsquo;t solve.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;31%: 🔴 01. &lt;a href=&#34;https://exam.sanand.workers.dev/tds-2026-01-roe#hq-share-token-server&#34;&gt;Collaborative Token Exchange&lt;/a&gt; (5.0) (132 / 430)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This question is a whole new dynamic altogether. There were about 5 clear clusters of students, ranging from 5 - 35 students, who were collaborating. They were trading bundles of tokens between themselves. There were a few &amp;ldquo;super-collaborators&amp;rdquo; who were doing the bulk lifting. But even with this, the largest correct submission had 84 tokens. The strongest submission was a 51-token submission that 6 students submitted.&lt;/p&gt;
&lt;p&gt;(I need to study this far more!)&lt;/p&gt;
&lt;p&gt;Yet, far smaller than even the original 100 token target I had set. Clearly, &lt;strong&gt;they aren&amp;rsquo;t collaborating enough&lt;/strong&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;It&amp;rsquo;s surprising how little students were using the &amp;ldquo;Ask AI&amp;rdquo; button.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;🔴 ~100 students didn&amp;rsquo;t use it &lt;strong&gt;at all&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;🟠 ~100 students clicked on it &lt;em&gt;JUST once&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;🟡 ~100 students used it just 2-5 times. For 15 questions, that&amp;rsquo;s clearly low.&lt;/li&gt;
&lt;li&gt;🟢 ~100 students used it 6-20 times. That&amp;rsquo;s OK&lt;/li&gt;
&lt;li&gt;🔵 ~15 students used it 20+ times. (1 clicked on it 45 times. Clearly &lt;em&gt;loves&lt;/em&gt; AI.)&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;Finally, most students saved their results for the first time &lt;em&gt;just&lt;/em&gt; before the deadline.&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://files.s-anand.net/images/2026-04-05-tds-roe-submission-timeline.webp&#34;&gt;&lt;/p&gt;
&lt;p&gt;The problem is that their system clocks were off, so they got a &amp;ldquo;late submission&amp;rdquo; error.&lt;/p&gt;
&lt;p&gt;BTW, some students used a timing trick for hacking. By setting their system clock late, they can see the exam questions before release. But the submissions are checked only against the server clock. So, waiting until the last minute to save is a terrible idea. That hurt some students.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Based on this, here&amp;rsquo;s what I learnt:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Pressure makes a difference&lt;/strong&gt;. In past exams, with similar time pressure, students solved the &lt;em&gt;same&lt;/em&gt; questions &lt;em&gt;much&lt;/em&gt; better. I think they panic-ed on the first two questions. To be fair, so did I, when I saw them. That&amp;rsquo;s why I started solving from the bottom.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;LESSON 1&lt;/strong&gt;: Scan end-to-end. Solve quick-wins (high impact, low effort) problems first.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;We have no clue what&amp;rsquo;s easy or tough&lt;/strong&gt;. When different students are using different tools, what&amp;rsquo;s easy for ChatGPT might be hard for Claude and vice versa. Without knowing tool capabilities and usage, this is hard to assess.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;LESSON 2&lt;/strong&gt;: With AI, no one knows what&amp;rsquo;s easy or hard. Try for yourself.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;They aren&amp;rsquo;t using AI enough&lt;/strong&gt;. Our advice is to use the &amp;ldquo;Ask AI&amp;rdquo; button every time. Half the students barely used it once.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;LESSON 3&lt;/strong&gt;: Use AI first. Focus on what AI &lt;em&gt;can&amp;rsquo;t&lt;/em&gt; do well&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;They aren&amp;rsquo;t collaborating enough&lt;/strong&gt;. The collaboration question was designed to encourage collaboration. Yet, the largest bundle of tokens shared was 84, far smaller than the 500 token target.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;LESSON 4&lt;/strong&gt;: Make friends with classmates. Work together. It helps: now, and in the future.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;That&amp;rsquo;s worth repeating:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Scan end-to-end. Solve quick-wins (high impact, low effort) problems first.&lt;/li&gt;
&lt;li&gt;With AI, no one knows what&amp;rsquo;s easy or hard. Try for yourself.&lt;/li&gt;
&lt;li&gt;Use AI first. Focus on what AI &lt;em&gt;can&amp;rsquo;t&lt;/em&gt; do well.&lt;/li&gt;
&lt;li&gt;Make friends with classmates. Work together. It helps: now, and in the future.&lt;/li&gt;
&lt;/ol&gt;
</description>
    </item>
    <item>
      <title>How to use AI for research</title>
      <link>https://www.s-anand.net/blog/how-to-use-ai-for-research/</link>
      <pubDate>Sat, 04 Apr 2026 23:30:53 +0800</pubDate>
      <guid>https://www.s-anand.net/blog/how-to-use-ai-for-research/</guid>
      <description>&lt;!-- https://chatgpt.com/c/69cf42a9-ed04-839b-bdf1-e010677d81c7 --&gt;
&lt;p&gt;I asked ChatGPT to research universities&amp;rsquo; AI policies. &lt;a href=&#34;https://sanand0.github.io/datastories/ai-policies/&#34;&gt;Here is the report&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Here are the four lessons I learned from that - about how to use AI for research.&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://files.s-anand.net/images/2026-04-03-how-to-use-ai-for-research.avif&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. Show examples of failures to avoid&lt;/strong&gt;. &lt;a href=&#34;https://jivraj-18.github.io/university_ai_usage/output/&#34;&gt;Jivraj&amp;rsquo;s earlier research&lt;/a&gt; kept surfacing AI policies universities had &lt;em&gt;researched&lt;/em&gt;, not written for themselves!. So I told ChatGPT to:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;hellip; double-check that they ARE, in fact, about their own use of AI - not policies they&amp;rsquo;re proposing for others or are researching.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This is called &lt;strong&gt;pre-specifying exclusions&lt;/strong&gt;. Giving negative examples help. &lt;a href=&#34;https://arxiv.org/abs/2201.11903&#34;&gt;Wei (2022)&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2a. &amp;ldquo;Double-check&amp;rdquo; doesn&amp;rsquo;t always work&lt;/strong&gt;. Though I told ChatGPT to &amp;ldquo;double-check&amp;rdquo;, it still got things wrong. For example, it cited MIT&amp;rsquo;s &lt;a href=&#34;https://ist.mit.edu/ai-guidance&#34;&gt;AI policy home page&lt;/a&gt; as evidence that the policy covers students and faculty, just because the words were present. That&amp;rsquo;s not right!&lt;/p&gt;
&lt;p&gt;Models get over-confident - and that&amp;rsquo;s exactly when they &lt;em&gt;don&amp;rsquo;t&lt;/em&gt; double-check. Asking them to double-check is a good habit, but not fail-safe. &lt;a href=&#34;https://arxiv.org/abs/2207.05221&#34;&gt;Kadavath (2022)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2b. Expicitly tell it to find mistakes&lt;/strong&gt;. I told it to:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Find mistakes in as many claims as you can.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This is stronger than &amp;ldquo;double-check&amp;rdquo;. It turns the model against itself, and it worked &lt;em&gt;quite&lt;/em&gt; well.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. Show examples of failures to avoid&lt;/strong&gt;. (Repeat.) When asking it to find mistakes, I gave it the same example.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;hellip; MIT, &amp;ldquo;covers_faculty_or_staff&amp;rdquo; cites &amp;ldquo;quote&amp;rdquo;: &amp;ldquo;Students • Faculty and Staff • Visitors and Guests • Generative AI use at MIT&amp;rdquo;. But that&amp;rsquo;s actually a set of links to Students, Faculty and Staff, etc. It&amp;rsquo;s not evidence that the POLICY covers them - and I&amp;rsquo;m quite sure the policy isn&amp;rsquo;t for guests!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;That&amp;rsquo;s &lt;a href=&#34;https://arxiv.org/abs/2005.14165&#34;&gt;few-shot prompting&lt;/a&gt;. Concrete examples beat abstract instructions.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. Ask it to list failures explicitly&lt;/strong&gt;. I told it:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I am also interested in universities that conspicuously lack a policy &amp;hellip;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Without that, it might have returned &lt;em&gt;only&lt;/em&gt; positive hits. Missing evidence and failures are important data, too!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4. Break large tasks into batches&lt;/strong&gt;. When I asked it to research 20 universities, it made several mistakes. Instead:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;This may be a complex task, so let&amp;rsquo;s just do this for the first four Universities.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Now, it didn&amp;rsquo;t make any mistakes! Sometimes, it gets &lt;a href=&#34;https://arxiv.org/abs/2307.03172&#34;&gt;lost in the middle&lt;/a&gt; for long tasks.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;So there it is - the four rules of AI research I learned from this exercise:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Show examples of failures to avoid&lt;/li&gt;
&lt;li&gt;&amp;ldquo;Double-check&amp;rdquo; doesn&amp;rsquo;t always work. Expicitly tell it to find mistakes&lt;/li&gt;
&lt;li&gt;Ask it to list failures explicitly.&lt;/li&gt;
&lt;li&gt;Break large tasks into batches.&lt;/li&gt;
&lt;/ol&gt;
</description>
    </item>
    <item>
      <title>AI policies across universities</title>
      <link>https://www.s-anand.net/blog/ai-policies-across-universities/</link>
      <pubDate>Fri, 03 Apr 2026 23:35:09 +0800</pubDate>
      <guid>https://www.s-anand.net/blog/ai-policies-across-universities/</guid>
      <description>&lt;p&gt;I researched the &lt;a href=&#34;https://sanand0.github.io/datastories/ai-policies/&#34;&gt;AI policies across 25 universities&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://sanand0.github.io/datastories/ai-policies/screenshot.webp&#34;&gt;&lt;img alt=&#34;Based on the data, Ashoka, IIT Madras, and SUTD are the lowest on my list of 25&#34; loading=&#34;lazy&#34; src=&#34;https://sanand0.github.io/datastories/ai-policies/screenshot.webp&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;In the last 6 months, I conducted sessions at three of these Universities:
&lt;a href=&#34;https://www.iitm.ac.in/&#34;&gt;IIT Madras&lt;/a&gt;,
&lt;a href=&#34;https://www.sutd.edu.sg/&#34;&gt;Singapore University of Technology and Design&lt;/a&gt;, and
&lt;a href=&#34;https://www.ashoka.edu.in/&#34;&gt;Ashoka University&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Interestingly, these are the three lowest ranked universities in my analysis of AI policies.&lt;/p&gt;
&lt;p&gt;This is where I&amp;rsquo;m glad that &lt;a href=&#34;https://en.wikipedia.org/wiki/Correlation_does_not_imply_causation&#34;&gt;correlation does not imply causation&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    <item>
      <title>TDS Project 1 was an experiment</title>
      <link>https://www.s-anand.net/blog/tds-project-1-was-an-experiment/</link>
      <pubDate>Fri, 03 Apr 2026 16:05:24 +0800</pubDate>
      <guid>https://www.s-anand.net/blog/tds-project-1-was-an-experiment/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://sanand0.github.io/datastories/tds-2026-01-p1/&#34;&gt;TDS Project 1&lt;/a&gt; wasn&amp;rsquo;t just a student project. It was a research and social experiment, too.&lt;/p&gt;
&lt;p&gt;We tested &lt;a href=&#34;https://sanand0.github.io/datastories/tds-2026-01-p1/stories/two-exams.html&#34;&gt;two skills&lt;/a&gt; - analytics and design. The design tests were diverse &amp;ndash; and students fared worse there.&lt;/p&gt;
&lt;p&gt;Design may matter more in the AI era, and I&amp;rsquo;m glad some &lt;a href=&#34;https://sanand0.github.io/datastories/tds-2026-01-p1/gallery/index.html&#34;&gt;designs&lt;/a&gt; are brilliant. (But not diverse/creative enough.) &lt;a href=&#34;https://sanand0.github.io/datastories/tds-2026-01-p1/stories/model-playbook.html&#34;&gt;I also learnt&lt;/a&gt; that Gemini beats Midjourney, which beats ChatGPT for image generation.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://sanand0.github.io/datastories/tds-2026-01-p1/gallery/&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://sanand0.github.io/datastories/tds-2026-01-p1/screenshot.webp&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I asked them to contribute to open source. Most &lt;a href=&#34;https://sanand0.github.io/datastories/tds-2026-01-p1/stories/two-labor-markets.html&#34;&gt;PRs were trivial&lt;/a&gt;. But five students made a real difference. For example, this &lt;a href=&#34;https://github.com/marimo-team/marimo/pull/8520&#34;&gt;PR&lt;/a&gt; to Marimo is excellent!&lt;/p&gt;
&lt;p&gt;Most importantly, &lt;a href=&#34;https://sanand0.github.io/datastories/tds-2026-01-p1/stories/social-infrastructure.html&#34;&gt;they&amp;rsquo;re actively collaborating now&lt;/a&gt; - a critical skill in the AI era. One student WhatsApp-ed me:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Before this i was not interacting with anyone&lt;br&gt;
Because of the online nature of this degree&lt;br&gt;
&lt;br&gt;
But TDS helped me to connect with everyone&lt;br&gt;
We are having meet regularly&lt;br&gt;
We divide questions with each other&lt;br&gt;
And then we solve and discuss&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;em&gt;THIS&lt;/em&gt; is what I&amp;rsquo;ve been trying to teach for 5 years now!&lt;/p&gt;
</description>
    </item>
    <item>
      <title>MGR via ElevenLabs</title>
      <link>https://www.s-anand.net/blog/mgr-via-elevenlabs/</link>
      <pubDate>Sun, 29 Mar 2026 22:31:33 +0800</pubDate>
      <guid>https://www.s-anand.net/blog/mgr-via-elevenlabs/</guid>
      <description>&lt;p&gt;I was watching &lt;a href=&#34;https://en.wikipedia.org/wiki/Vaa_Vaathiyaar&#34;&gt;Vaa Vaathiyar&lt;/a&gt; which has a short clip of &lt;a href=&#34;https://en.wikipedia.org/wiki/M._G._Ramachandran&#34;&gt;MGR&lt;/a&gt; speaking. It&amp;rsquo;s either AI-generated or mimic-ed and it wasn&amp;rsquo;t bad.&lt;/p&gt;
&lt;p&gt;&lt;audio controls src=&#34;https://files.s-anand.net/images/2026-03-29-mgr-in-film.opus&#34;&gt;&lt;/audio&gt;&lt;/p&gt;
&lt;p&gt;I used &lt;code&gt;ffmpeg&lt;/code&gt; to record the audio from the film, transcribed it via &lt;a href=&#34;https://aistudio.google.com/prompts/new_chat?model=gemini-3.1-pro-preview&#34;&gt;Gemini 3 Pro on AI Studio&lt;/a&gt; with the prompt:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Transcribe this into Tamil&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;hellip; which gave me:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;ராமு&amp;hellip;
என்ன செய்திருக்கிறாய் நீ&amp;hellip;
வாத்தியார் கேட்கிறேன் சொல்
நிமிர்ந்து பார்க்க கூட தைரியம் இல்லையா&amp;hellip;
ஓடாதே&amp;hellip; நில்&amp;hellip;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Translation:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Ramu&amp;hellip;
What have you done&amp;hellip;
Vaathiyar (MGR) is asking, tell me
Don&amp;rsquo;t you have the courage to stand up and look at me&amp;hellip;
Don&amp;rsquo;t run&amp;hellip; stop&amp;hellip;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;(GitHub Copilot&amp;rsquo;s auto-complete translated the above for me as I typed - flawlessly. It&amp;rsquo;s getting better by the day!)&lt;/p&gt;
&lt;p&gt;Then, I used &lt;a href=&#34;https://github.com/yt-dlp/yt-dlp&#34;&gt;yt-dlp&lt;/a&gt; to download the audio from this &lt;a href=&#34;https://www.youtube.com/shorts/1jQqKds2z7g&#34;&gt;MGR Short Clip&lt;/a&gt;.&lt;/p&gt;
&lt;iframe width=&#34;560&#34; height=&#34;315&#34; src=&#34;https://www.youtube.com/embed/1jQqKds2z7g?si=8GUnT7IvcsQZpwDb&#34; title=&#34;YouTube video player&#34; frameborder=&#34;0&#34; allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; allowfullscreen&gt;&lt;/iframe&gt;
&lt;p&gt;Here&amp;rsquo;s the sample:&lt;/p&gt;
&lt;p&gt;&lt;audio controls src=&#34;https://files.s-anand.net/images/2026-03-29-mgr-sample.opus&#34;&gt;&lt;/audio&gt;&lt;/p&gt;
&lt;p&gt;I fed this into ElevenLabs&amp;rsquo; &lt;a href=&#34;https://elevenlabs.io/app/voice-library&#34;&gt;Instant Voice Clone&lt;/a&gt; that needs just 10 seconds of audio and created an &amp;ldquo;MGR&amp;rdquo; voice.&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s the same dialogue in the cloned voice:&lt;/p&gt;
&lt;p&gt;&lt;audio controls src=&#34;https://files.s-anand.net/images/2026-03-29-mgr-generated.opus&#34;&gt;&lt;/audio&gt;&lt;/p&gt;
&lt;p&gt;Personally, I think the ElevenLabs version is &lt;em&gt;slightly&lt;/em&gt; better. Of course, given the pace of AI improvement, this might just be the impact of a new model release.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;2 Apr 2026&lt;/strong&gt;: Here&amp;rsquo;s the non-cloned generation from &lt;a href=&#34;https://dashboard.sarvam.ai/text-to-speech&#34;&gt;Sarvam&amp;rsquo;s text to speech&lt;/a&gt; with Bulbul v3 standard quality. It feels pretty weak.&lt;/p&gt;
&lt;p&gt;&lt;audio controls src=&#34;https://files.s-anand.net/images/2026-03-29-mgr-sarvam.opus&#34;&gt;&lt;/audio&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://aistudio.google.com/u/2/generate-speech?model=gemini-2.5-pro-preview-tts&#34;&gt;Gemini 2.5 Pro Preview TTS&lt;/a&gt; gave me this, which feels &lt;em&gt;much&lt;/em&gt; better.&lt;/p&gt;
&lt;p&gt;&lt;audio controls src=&#34;https://files.s-anand.net/images/2026-03-29-mgr-gemini.opus&#34;&gt;&lt;/audio&gt;&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Testing Pólya heuristics on AI Math</title>
      <link>https://www.s-anand.net/blog/testing-polya-heuristics-on-ai-math/</link>
      <pubDate>Fri, 27 Mar 2026 13:20:25 +0800</pubDate>
      <guid>https://www.s-anand.net/blog/testing-polya-heuristics-on-ai-math/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://www.dwarkesh.com/p/terence-tao&#34;&gt;Terence Tao said&lt;/a&gt;, &amp;ldquo;We haven&amp;rsquo;t done many experiments &amp;hellip; large-scale studies where we take a thousand problems and just test them.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;So I &lt;a href=&#34;https://claude.ai/share/9cd20830-a385-4e38-8151-ff3c9916f468&#34;&gt;told Claude&lt;/a&gt;: &lt;em&gt;You know my style. Suggest some innovative experiments I could run.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The first suggestion was &lt;em&gt;cool&lt;/em&gt;! &lt;strong&gt;The Polya Audit&lt;/strong&gt;. Polya&amp;rsquo;s &lt;a href=&#34;https://en.wikipedia.org/wiki/How_to_Solve_It&#34;&gt;How to Solve It&lt;/a&gt; lists 20 heuristics (work backwards, induction, analogy, etc.). Mathematicians treat these as wisdom. Nobody has ever measured which ones actually work, and on what problem types.&lt;/p&gt;
&lt;p&gt;So &lt;a href=&#34;https://github.com/sanand0/research/blob/8dc54b81698a8e9c7b088cef4064016c616032a8/lean/prompts.md#the-polya-audit-26-mar-2026-copilot-yolo---sonnet-46-high&#34;&gt;I prompted Copilot running Claude Sonnet 4.6&lt;/a&gt; to run the &lt;a href=&#34;https://github.com/lean-dojo/LeanDojo&#34;&gt;LeanDojo Benchmark&lt;/a&gt; through an LLM &lt;code&gt;n&lt;/code&gt; times, with different Polya heuristic system prompts and compare success rates.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://sanand0.github.io/datastories/polya-for-ai/&#34;&gt;&lt;img alt=&#34;Polya heuristics have varying effectiveness across problem types&#34; loading=&#34;lazy&#34; src=&#34;https://files.s-anand.net/images/2026-03-27-polya-heuristic-vs-problem.avif&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Not-surprisingly &lt;em&gt;different heuristics help different problems&lt;/em&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Almost every heuristic helps Prealgebra - except &amp;ldquo;Start from the desired answer and reason step by step back toward the given information.&amp;rdquo;.&lt;/li&gt;
&lt;li&gt;Almost no heuristics helps Number Theory - except &amp;ldquo;Focus on the largest, smallest, or boundary element. Extremal elements often have special properties.&amp;rdquo;.&lt;/li&gt;
&lt;li&gt;Geometry has an &lt;em&gt;enormous&lt;/em&gt; swing. &amp;ldquo;First strip away complexity and solve an easier version. Observe the pattern, then generalize&amp;rdquo; helps a lot. But &amp;ldquo;Find a quantity that can be counted in two different ways. Set up both expressions and equate them&amp;rdquo; hurts a lot.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The impact of each heuristic is also quite varied.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The most reliable heuristic is segmentation: &amp;ldquo;Identify the key condition that splits the problem. List all possible cases exhaustively. Handle each with a complete argument.&amp;rdquo;&lt;/li&gt;
&lt;li&gt;The worst heuristic on average is pattern recognition: &amp;ldquo;Compute several specific instances. Tabulate results. Identify a pattern. State the conjecture. Then prove or use it.&amp;rdquo; Induction and pigeonhole do pretty bad, too.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Also not-surprisingly, different models respond differently to the same heuristic.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://sanand0.github.io/datastories/polya-for-ai/&#34;&gt;&lt;img alt=&#34;Polya heuristics have varying effectiveness across models&#34; loading=&#34;lazy&#34; src=&#34;https://sanand0.github.io/datastories/polya-for-ai/screenshot.webp&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;GPT-5.4-nano: Heuristics disurpt it&lt;/strong&gt;. Its built-in problem-solving strategy is already good. Heuristic just make things worse, almost &lt;em&gt;always&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gemini 2.5 Flash Lite: More coachable&lt;/strong&gt;. Like a student who benefits from advice: it gains up to 6 percentage points from the right heuristic.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Claude Haiku: Nearly immune&lt;/strong&gt;. It seems to just ignore the heuristic. Its performance barely moves regardless of what you tell it.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The same heuristic on the same problem affects models quite differently, too. For example &amp;ldquo;Introduce Auxiliary Elements&amp;rdquo; hurts GPT -25% but helps Claude +14%!&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://sanand0.github.io/datastories/polya-for-ai/&#34;&gt;&lt;img alt=&#34;Impact of Introduce Auxiliary Elements on different models for Geometry problems varies&#34; loading=&#34;lazy&#34; src=&#34;https://files.s-anand.net/images/2026-03-27-polya-heuristic-auxiliary-elements.webp&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;So yes, different heuristics work for different problems, and different models respond differently to the same heuristic.&lt;/p&gt;
&lt;p&gt;But finally, at least for LLMs, we can measure. We can find out &lt;em&gt;which&lt;/em&gt; heuristics work for &lt;em&gt;which&lt;/em&gt; problems, and &lt;em&gt;which&lt;/em&gt; heuristics get varied responses vs which ones are more universally helpful / harmful. And maybe teach humans.&lt;/p&gt;
&lt;p&gt;Or maybe not.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;As Calvin says, &amp;ldquo;&amp;ldquo;Given the pace of technology, I propose we leave the math to the machines and go play outside.&amp;rdquo;&#34; loading=&#34;lazy&#34; src=&#34;https://sanand0.github.io/talks/2026-03-21-design-in-the-age-of-infinite-generativity/calvin-play-outside.avif&#34;&gt;&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Hack of the Day on Times of India</title>
      <link>https://www.s-anand.net/blog/hack-of-the-day-on-times-of-india/</link>
      <pubDate>Fri, 27 Mar 2026 11:29:35 +0800</pubDate>
      <guid>https://www.s-anand.net/blog/hack-of-the-day-on-times-of-india/</guid>
      <description>&lt;p&gt;Last Friday, 20 Mar 2026, this &lt;a href=&#34;https://x.com/timesofindia/status/2034925416444829727&#34;&gt;&amp;ldquo;Hack of the Day&amp;rdquo;&lt;/a&gt; was published by &lt;a href=&#34;http://toi.in/l3xRob&#34;&gt;The Times of India&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;My agents generated it entirely automatically. Here&amp;rsquo;s how that happened.&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://files.s-anand.net/images/2026-03-27-hack-of-the-day-on-times-of-india.avif&#34;&gt;&lt;/p&gt;
&lt;p&gt;On &lt;strong&gt;12 Feb 2026&lt;/strong&gt;, I met &lt;a href=&#34;https://www.linkedin.com/in/rohitsaran/&#34;&gt;Rohit Saran&lt;/a&gt;, Managing Editor at The Times of India.&lt;/p&gt;
&lt;p&gt;&amp;ldquo;Our biggest challenge is the starting challenge. What story to do?&amp;rdquo; he said. &amp;ldquo;We waste a lot of time and we starve stories because of this.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;What if AI could help with that? We talked for nearly two hours - and left asking: &amp;ldquo;Should we do just a daily visual newspaper?&amp;rdquo;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Rohit connected &lt;a href=&#34;https://x.com/bansaurabh&#34;&gt;Saurabh&lt;/a&gt;, &lt;a href=&#34;https://www.linkedin.com/in/saikat-dasgupta-1180b797/&#34;&gt;Saikat&lt;/a&gt;, and &lt;a href=&#34;https://www.linkedin.com/in/sajeev-kumarapuram-205ba933/&#34;&gt;Sajeev&lt;/a&gt;, so we could explore what&amp;rsquo;s possible.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;FIND PROMISING CANDIDATES&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;The Times of India already had recurring formats they wanted to drive with AI.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Statoistics&lt;/strong&gt; (data-driven visual explainers of statistics and trends) was one.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hack of the Day&lt;/strong&gt; (small tech tips for non-tech-savvy readers) was another.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;We weren&amp;rsquo;t beginning from scratch&lt;/em&gt;. There was rich material &lt;em&gt;and&lt;/em&gt; a realization that recurring newsroom formats are ideal for AI because they are structured, frequent, and feedback-rich.&lt;/p&gt;
&lt;p&gt;Hack of the Day stood out: small, recurring, text-only, needing little research, with a clear purpose — useful tech tips for everyday readers. Saikat defined 3 concrete goals for this:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Generate about &lt;strong&gt;90 new hacks&lt;/strong&gt; to extend the feature for around three more months.&lt;/li&gt;
&lt;li&gt;Generate those in the &lt;strong&gt;existing format&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Explore &lt;strong&gt;alternative visual formats&lt;/strong&gt; for future replacement or redesign.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;STUDY THE ARTIFACT&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;So, on &lt;strong&gt;6 Mar 2026&lt;/strong&gt;, Saikat sent me 10 samples of Hack of the Day to understand the format, layout, variety, etc.
By &lt;strong&gt;10 Mar 2026&lt;/strong&gt;, I had a few prototypes ready. I &lt;a href=&#34;https://chatgpt.com/share/69c6231b-b89c-83a1-bf0b-41b03d8ccc3e&#34;&gt;asked ChatGPT&lt;/a&gt; a series of questions:&lt;/p&gt;
&lt;!-- https://chatgpt.com/c/69aef234-93f8-839b-932d-cb41c0ed8f2f --&gt;
&lt;p&gt;&lt;a href=&#34;https://chatgpt.com/share/69c6231b-b89c-83a1-bf0b-41b03d8ccc3e&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://files.s-anand.net/images/2026-03-27-hack-of-the-day-thumbnails.avif&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Analyze these 10 &amp;ldquo;Hack of the Day&amp;rdquo; images carried in The Times of India. If I had to ask an intern (or an AI agent) to create several such, then what prompt will give me this kind of content in exactly this format?&lt;/li&gt;
&lt;li&gt;List all past hacks from &lt;a href=&#34;https://timesofindia.indiatimes.com/technology/hack-of-day&#34;&gt;https://timesofindia.indiatimes.com/technology/hack-of-day&lt;/a&gt; - it has 2 pages, read from both&lt;/li&gt;
&lt;li&gt;Find and list 10 high impact non obvious widely useful hacks similar to these&lt;/li&gt;
&lt;li&gt;Write these hacks in the format of the cards below. Mimic the structure, style, and verbosity of the cards. (Schema attached)&lt;/li&gt;
&lt;li&gt;Nice! Continue the search extensively and give me 10 more. Make sure these are ULTRA useful to a LARGE number of people and yet many people are probably not aware of these hacks.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;hellip; to create a &lt;a href=&#34;https://github.com/sanand0/journalists/blob/bd06aa4c643cf7f2c96ff9c91d61449daf0b610c/hackoftheday/cards.json&#34;&gt;&lt;code&gt;cards.json&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Then I &lt;a href=&#34;https://github.com/sanand0/journalists/blob/bd06aa4c643cf7f2c96ff9c91d61449daf0b610c/prompts.md#hack-of-the-day-10-mar-2026-claude-code---sonnet-46---manually-edited&#34;&gt;asked Claude Code&lt;/a&gt; to &amp;ldquo;Create a template.html that can be combined (e.g. via mustache) with a JSON that, when run, produces the EXACT visual output as the cards in *.avif.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Saikat reviewed these and noted that some had already been done by TOI, but some looked new and usable. So the first batch served as a &lt;strong&gt;proof of possibility&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;DO MORE OF WHAT AI DOES WELL&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;To get the output fast and to make iterations easier, I did a few things that are easy for AI and not natural for humans:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Generate code, not images&lt;/strong&gt;. The TOI team had experimented with image generation. That didn&amp;rsquo;t work well - and I know that. I proposed generating HTML/SVG instead. It does that well. It&amp;rsquo;s editable by humans and AI. That makes the workflow practical.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Use JSON, not English&lt;/strong&gt;. I used ChatGPT to research and generate structured JSON, then Claude to render it visually. Each tool did what it does best. Specifically, I had &lt;a href=&#34;https://github.com/sanand0/journalists/blob/bd06aa4c643cf7f2c96ff9c91d61449daf0b610c/hackoftheday/cards.json&#34;&gt;ChatGPT generate structured JSON&lt;/a&gt; that can be easily read and programmatically processed by coding agents.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Generate many variations&lt;/strong&gt;. Generation is cheap. I had ChatGPT generate &lt;em&gt;dozens&lt;/em&gt; of hacks in one go. I had Claude &lt;a href=&#34;https://github.com/sanand0/journalists/blob/bd06aa4c643cf7f2c96ff9c91d61449daf0b610c/prompts.md#hack-of-the-day-redesign-10-mar-2026-github-copilot---claude-sonnet-46-high&#34;&gt;generate design variations&lt;/a&gt; like &lt;a href=&#34;https://sanand0.github.io/journalists/hackoftheday/&#34;&gt;Classic Blue&lt;/a&gt;, &lt;a href=&#34;https://sanand0.github.io/journalists/hackoftheday/?template=broadsheet&#34;&gt;Broadsheet Heritage&lt;/a&gt;, &lt;a href=&#34;https://sanand0.github.io/journalists/hackoftheday/?template=saffron&#34;&gt;Saffron Signal&lt;/a&gt;, etc.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Publish a gallery&lt;/strong&gt;. Creating a &lt;a href=&#34;https://github.com/sanand0/journalists/blob/bd06aa4c643cf7f2c96ff9c91d61449daf0b610c/prompts.md#hack-of-the-day-gallery-10-mar-2026-github-copilot---claude-sonnet-46-high&#34;&gt;gallery of generated outputs&lt;/a&gt; is a simple enhancement that allows for easier review, comparison, and selection. &lt;a href=&#34;https://sanand0.github.io/journalists/hackoftheday/&#34;&gt;The Gallery&lt;/a&gt; made reviews and feedback &lt;em&gt;much&lt;/em&gt; easier.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These make iterations faster, richer, more reliable and reviewable.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ITERATE FEEDBACK FAST&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;During the session on 10 Mar, I spoke with ChatGPT and told it (verbally) what Saikat said:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Look, all of this is nice, but some of these have already been covered by the Times of India&amp;rsquo;s previous hack of the days.&lt;/p&gt;
&lt;p&gt;Also, I get a feeling that it&amp;rsquo;s getting a little repetitive. Let&amp;rsquo;s go a little global, doesn&amp;rsquo;t have to be only about Indian government sites.&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s talk about things that people use on a practical, day-to-day basis and see what is really useful and not always obvious to them, even though there is a widespread adoption of some of these.&lt;/p&gt;
&lt;p&gt;It doesn&amp;rsquo;t have to be technological hacks either. It could be social hacks, educational hacks, cultural hacks.&lt;/p&gt;
&lt;p&gt;The point is that it should be from some primary source. Now, keeping this in mind, give me about a dozen of these and give it in the JSON format that you&amp;rsquo;ve done so far.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Feedback is the critical loop. The system improved not because the model changed, but because the &lt;strong&gt;editorial feedback got sharper&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;I explicitly asked for &lt;strong&gt;voice-note feedback&lt;/strong&gt; on WhatsApp to speed up the review cycles. Just one line explaining what&amp;rsquo;s rejected and why. By &lt;strong&gt;17 Mar 2026&lt;/strong&gt;, we had &lt;strong&gt;64 hacks&lt;/strong&gt;, of which 32 were rejected for these reasons:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;15: &amp;ldquo;Published earlier&amp;rdquo;&lt;/li&gt;
&lt;li&gt;1: &amp;ldquo;Duplicate of a similar one&amp;rdquo;&lt;/li&gt;
&lt;li&gt;15: &amp;ldquo;Hacks must be platform agnostic&amp;rdquo; (not Android / iPhone specific)&lt;/li&gt;
&lt;li&gt;1: &amp;ldquo;Not a tech hack&amp;rdquo; (e.g. health)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;RETAIN EXISTING VISUAL FORMATS&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;People are used to seeing things in a certain way. That inertia has value (brand recognition, reader familiarity, workflow compatibility, etc.) That was reflected in the &lt;em&gt;granular&lt;/em&gt; feedback Sajeev shared about the design (which I translated directly into prompts):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The fonts are much smaller&lt;/li&gt;
&lt;li&gt;The steps are supposed to look like folders, overlapping / stacked. Right now, they look like rounded cards with a gap between them.&lt;/li&gt;
&lt;li&gt;Hack of the day is not horizontally / vertically centered.&lt;/li&gt;
&lt;li&gt;The QR code formatting is off.&lt;/li&gt;
&lt;li&gt;The name in the email ID should be in bold, and the domain in regular font.&lt;/li&gt;
&lt;li&gt;The number in the steps must be larger, and in a different font - look carefully.&lt;/li&gt;
&lt;li&gt;The text in the steps must be closer to the number - look carefully.&lt;/li&gt;
&lt;li&gt;Vertically center the step elements.&lt;/li&gt;
&lt;li&gt;Replace fonts with the closest Google Fonts.&lt;/li&gt;
&lt;li&gt;The hacks are typically taller. Increase the size of the cards.&lt;/li&gt;
&lt;li&gt;The color contrast (blue on blue) makes a lot of content barely visible. Review the foreground-background color contrast across elements and ensure contrast while preserving aesthetics.&lt;/li&gt;
&lt;li&gt;STEPS: is too small and too close to the &amp;ldquo;What to do&amp;rdquo; section&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We &lt;em&gt;still&lt;/em&gt; haven&amp;rsquo;t nailed it perfectly. This is a &lt;em&gt;long tail&lt;/em&gt;. The big win is getting it to the point where manual edits are minor.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ALIGN WITH EXISTING WORKFLOWS&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;TOI needed outputs designers could adjust in their workflow. The team uses InDesign / Illustrator, so we needed to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Align with tools&lt;/strong&gt;. I &lt;a href=&#34;https://github.com/sanand0/journalists/blob/bd06aa4c643cf7f2c96ff9c91d61449daf0b610c/prompts.md#hack-of-the-day-svg-fixes-12-mar-2026-github-copilot---claude-sonnet-46-high&#34;&gt;prompted&lt;/a&gt;: &amp;ldquo;I could not load the generated SVGs on Gnome nor on VS Code&amp;rsquo;s image viewer. But they render on Chrome. Get them to work on these as well. Keep in mind that they&amp;rsquo;ll finally be opened by Adobe Illustrator and similar tools - so tool compatibility is important. Update SVG templates accordingly and test if you can.&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Align with fonts&lt;/strong&gt;. I &lt;a href=&#34;https://github.com/sanand0/journalists/blob/bd06aa4c643cf7f2c96ff9c91d61449daf0b610c/prompts.md#hack-of-the-day-svg-alignment-github-copilot---claude-sonnet-46-high&#34;&gt;prompted&lt;/a&gt;: &amp;ldquo;Modify the hackoftheday/ HTML and SVG to use the Poynter Agate One font from assets/*.otf. Use the bold condensed / condensed versions.&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Work around tool quirks&lt;/strong&gt;. I &lt;a href=&#34;https://github.com/sanand0/journalists/blob/bd06aa4c643cf7f2c96ff9c91d61449daf0b610c/prompts.md#hack-of-the-day-svg-alignment-github-copilot---claude-sonnet-46-high&#34;&gt;prompted&lt;/a&gt;: &amp;ldquo;Modify the SVG rendering to native SVG elements: text and tspan (not foreignObject, div), rect, clipPath, defs &amp;gt; style, named fonts, styles scoped via CSS classes on SVG elements, static pre-positioned elements. No JavaScript, div, @import, QR code library, etc. Use robust libraries for conversion if required.&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;PUSH FOR PRODUCTION&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;New workflows take time to stick. 6 Mar to 20 Mar (two weeks) is probably record time. The actual generation took a few hours. Reviews took a few days. Most of the time was just the gap between meetings, where ideas sink in. The impetus came from the meetings where I kept asking: &amp;ldquo;What&amp;rsquo;s stopping us from publishing?&amp;rdquo; and then fixing that.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;On &lt;strong&gt;20 Mar 2026&lt;/strong&gt;, the first AI-assisted &lt;a href=&#34;https://x.com/timesofindia/status/2034925416444829727&#34;&gt;Hack of the Day&lt;/a&gt; was published. More followed.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://x.com/timesofindia/status/2034925416444829727&#34;&gt;&lt;img alt=&#34;Show Gemini your screen or camera for live help&#34; loading=&#34;lazy&#34; src=&#34;https://files.s-anand.net/images/2026-03-20-hack-of-the-day.webp&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;My agents are an integral part of a newsroom.&lt;/p&gt;
&lt;p&gt;This is so cool!&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Read Tamil on TV with Gemini</title>
      <link>https://www.s-anand.net/blog/read-tamil-on-tv-with-gemini/</link>
      <pubDate>Wed, 25 Mar 2026 21:32:50 +0800</pubDate>
      <guid>https://www.s-anand.net/blog/read-tamil-on-tv-with-gemini/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve been &lt;a href=&#34;https://www.s-anand.net/blog/new-ways-of-reading-books/&#34;&gt;reading books using AI&lt;/a&gt;. Today, I used Gemini while watching a TV show. (Not &lt;em&gt;to&lt;/em&gt; watch TV - just &lt;em&gt;while&lt;/em&gt; watching TV.)&lt;/p&gt;
&lt;p&gt;There&amp;rsquo;s &lt;a href=&#34;https://youtu.be/1jsvEEaZ5Zc?si=nMhaCZUjS1QLF1ta&amp;amp;t=146&#34;&gt;this scene&lt;/a&gt; in &lt;a href=&#34;https://en.wikipedia.org/wiki/Iru_Dhuruvam_season_2&#34;&gt;Iru Dhuruvam Season 2&lt;/a&gt; with a sheet of paper with Tamil text on it.&lt;/p&gt;
&lt;iframe width=&#34;560&#34; height=&#34;315&#34; src=&#34;https://www.youtube.com/embed/1jsvEEaZ5Zc?si=IltVeFCbroyuJEN4&amp;amp;start=147&#34; title=&#34;YouTube video player&#34; frameborder=&#34;0&#34; allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; allowfullscreen&gt;&lt;/iframe&gt;
&lt;p&gt;The script was small and I couldn&amp;rsquo;t read it clearly. (I&amp;rsquo;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 &lt;a href=&#34;https://gemini.google.com/share/44bef43fad8a&#34;&gt;asked Gemini&lt;/a&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-markdown&#34; data-lang=&#34;markdown&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;OCR and translate
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;(I was eating dinner and had just one hand to type - minimally.)&lt;/p&gt;
&lt;p&gt;It said:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Original Tamil Text&lt;/strong&gt;: வினைபகை என்றிரண்டின் எச்சம் நினையுங்கால் தீயெச்சம் போலத் தெறும்&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;English Translation&lt;/strong&gt;: When you consider the remnants of an incomplete action or an unconquered enemy, they will destroy you like the unextinguished remnant of a fire.&lt;/p&gt;
&lt;p&gt;This is &lt;strong&gt;Thirukkural 674&lt;/strong&gt;, written by the ancient poet Thiruvalluvar. It serves as a stark warning against leaving tasks or conflicts half-finished. Given the gloves and the torn paper, this looks like a classic cinematic trope—a cryptic, high-stakes warning left behind in a thriller, signaling that the job (or the revenge) is far from over.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Spot on. The rest of the scene made perfect sense!&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://files.s-anand.net/images/2026-03-25-read-tamil-on-tv-with-gemini.avif&#34;&gt;&lt;/p&gt;
&lt;p&gt;This is not the first time I&amp;rsquo;ve used AI while watching TV. I&amp;rsquo;ve passed screenshots to identify cities, transcribe newspapers, and more. But this is the first time I&amp;rsquo;ve used it to read Tamil.&lt;/p&gt;
&lt;p&gt;(BTW, the image in the screenshot above is a Gemini-upscaled with the prompt &amp;ldquo;Draw the same image, upscaled and sharper&amp;rdquo;.)&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Sonnet 4.6 vs MiniMax M2.7</title>
      <link>https://www.s-anand.net/blog/sonnet-4-6-vs-minimax-m2-7/</link>
      <pubDate>Tue, 24 Mar 2026 17:06:02 +0800</pubDate>
      <guid>https://www.s-anand.net/blog/sonnet-4-6-vs-minimax-m2-7/</guid>
      <description>&lt;p&gt;Based on several (i.e. two) recommendations, I subscribed to &lt;a href=&#34;https://platform.minimax.io/&#34;&gt;MiniMax&lt;/a&gt;. At $10/month, you get 1,500 requests every 5 hours and 15,000 every week. That&amp;rsquo;s a LOT!&lt;/p&gt;
&lt;p&gt;Using the &lt;a href=&#34;https://sanand0.github.io/talks/2025-07-18-tug-true-but-irrelevant-rob-schrauwen/prompts.md&#34;&gt;same prompt&lt;/a&gt; I had &lt;a href=&#34;https://platform.minimax.io/docs/token-plan/claude-code&#34;&gt;Claude Code&lt;/a&gt; generate two data stories:&lt;/p&gt;
&lt;a href=&#34;https://sanand0.github.io/talks/2025-07-18-tug-true-but-irrelevant-rob-schrauwen/index.html&#34;&gt;
  &lt;figure&gt;
    &lt;img src=&#34;https://files.s-anand.net/images/2026-03-24-rob-data-story-claude.avif&#34; alt=&#34;In July 2025, in the heavy morning warmth of Thiruvananthapuram, the opening talk at the TeX User Group annual conference began with a crayon drawing. Not a polished diagram. Not a carefully curated slide. A hand-drawn family tree on crumpled paper, made by a six-year-old girl named Emily, who had a problem to solve. She had told her teacher she had seven grandmothers. The teacher declared it impossible. Emily went home and built a proof.&#34; /&gt;
    &lt;figcaption&gt;The first paragraph, by Claude Sonnet 4.6&lt;/figcaption&gt;
  &lt;/figure&gt;
&lt;/a&gt;
&lt;a href=&#34;https://sanand0.github.io/talks/2025-07-18-tug-true-but-irrelevant-rob-schrauwen/minimax.html&#34;&gt;
  &lt;figure&gt;
    &lt;img src=&#34;https://files.s-anand.net/images/2026-03-24-rob-data-story-minimax.avif&#34; alt=&#34;There is a drawing by a six-year-old girl in Amsterdam that contains more wisdom about data quality than three decades of enterprise content architecture. In it, seven figures stand in a family tree — each grandmother numbered with a circle, each grandfather conspicuously absent. The girl is Rob Schrauwen&#39;s granddaughter. She was asked to prove she had seven grandmothers; she drew them all, labeled them carefully, and in doing so invented continuous data quality, unique identifiers, and a knowledge graph — all before she learned to spell &amp;quot;Hetty.&amp;quot;&#34; /&gt;
    &lt;figcaption&gt;The first paragraph, by MiniMax M2.7&lt;/figcaption&gt;
  &lt;/figure&gt;
&lt;/a&gt;
&lt;p&gt;Here&amp;rsquo;s my comparison of the two. It&amp;rsquo;s partly based on &lt;a href=&#34;https://sanand0.github.io/talks/2025-07-18-tug-true-but-irrelevant-rob-schrauwen/comparison.md&#34;&gt;Claude Opus 4.6&amp;rsquo;s comparison&lt;/a&gt; but I felt the same way.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Dimension&lt;/th&gt;
          &lt;th&gt;Sonnet 4.6&lt;/th&gt;
          &lt;th&gt;MiniMax M2.7&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Narrative quality&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;Immersive&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Content coverage&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;Comprehensive&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Visual design&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;More varied, ambitious bands, no errors&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;CSS&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;Better use of CSS variables&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Tooltips&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;Richer, comprehensive, &lt;code&gt;data-tip&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Modals/popups&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;Richer, more types, more details&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Animated SVGs&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;Richer, visually distinctive, sophisticated&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Slides&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;Larger readable grid&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Code samples&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;XML vs JSON-LD side-by-side&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;External references&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;Far more authoritative links&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Accessibility&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;ARIA, keyboard, alt text&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Generation quality&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;Clean, no Chinese character artifacts&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;In other words, Sonnet 4.6 is a &lt;em&gt;clear&lt;/em&gt; winner on nearly every dimension.&lt;/p&gt;
&lt;p&gt;But the cost factor is &lt;em&gt;too&lt;/em&gt; big a difference to ignore. It feels like a 10x difference. So the question probably is: what can I do with a &lt;em&gt;reasonably&lt;/em&gt; good model that can generate 10X the quantity at the same price?&lt;/p&gt;
&lt;p&gt;(To be fair, &lt;a href=&#34;https://openrouter.ai/openai/gpt-5.4-mini&#34;&gt;GPT 5.4 Mini at 75c/MTok&lt;/a&gt; and &lt;a href=&#34;https://openrouter.ai/google/gemini-3-flash-preview&#34;&gt;Gemini 3 Flash at 50c/MTok&lt;/a&gt; are not far from &lt;a href=&#34;https://openrouter.ai/minimax/minimax-m2.7&#34;&gt;MiniMax M2.7 at 30c/MTok&lt;/a&gt; - but their &lt;a href=&#34;https://arena.ai/leaderboard/code&#34;&gt;code quality&lt;/a&gt; seems lower. I generated a &lt;a href=&#34;https://sanand0.github.io/talks/2025-07-18-tug-true-but-irrelevant-rob-schrauwen/gpt-5.4-mini-xhigh.html&#34;&gt;Codex - GPT 5.4 Mini version&lt;/a&gt; and while it has fewer errors it has even less visual style and narrative quality.)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Computer use&lt;/strong&gt; feels like a candidate. I used &lt;a href=&#34;https://github.com/simonw/rodney&#34;&gt;Rodney&lt;/a&gt; to research what drives my LinkedIn reach &amp;amp; engagement, and update my &lt;a href=&#34;https://github.com/sanand0/scripts/blob/f08ffd11e221c5a9ef58d5da814aaad9985bd422/agents/linkedin-cdp/SKILL.md&#34;&gt;SKILL.md&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I could try experimenting with sub-agents, doing bulk analysis (e.g. of code, transcripts, images), data discovery, etc. The crux of these is parallelization - something I have not explored much.&lt;/p&gt;
&lt;p&gt;It looks like twe&amp;rsquo;re entering an era where there are two kinds of use cases: high-quality for the best models, large-scale for the cheap models. The question is: how do I make the most of both?&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/sanand0/talks/tree/52ad2aa775cd4e0f1e0ad8e6199ce7754a2663ac/2025-07-18-tug-true-but-irrelevant-rob-schrauwen&#34;&gt;Source Code&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;UPDATE&lt;/strong&gt;: Cheap models (or at least MiniMax M2.7) may be far less useful than I thought. I used MiniMax M2.7 with Claude Code for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;24 Mar 2026: Email analysis. I had it review my 15-year Gramener email archive for key events for a book. But it fetched too few results, so I switched to Codex (GPT 5.4 xhigh). &lt;!-- claude --resume 1c3edc84-5781-4684-bd0d-565fafc5b2b9 --&gt;&lt;/li&gt;
&lt;li&gt;25 Mar 2026: &lt;a href=&#34;https://play.picoctf.org/practice&#34;&gt;Capture The Flag&lt;/a&gt;. But it couldn&amp;rsquo;t solve problems, so I switched to Codex (GPT 5.4 xhigh). &lt;!-- claude --resume 525d2631-cf8b-4665-bfdc-e55b70cb7340 --&gt;&lt;/li&gt;
&lt;li&gt;25 Mar 2026: Songs download. I had it find popular Tamil songs and download them from YouTube. But the metadata was poor, so I switched to my own song collection. &lt;!-- claude --resume f4d3a74b-0bc8-4431-8084-f56be44a4a53 --&gt;&lt;/li&gt;
&lt;li&gt;26 Mar 2026: LEAN proofs. It started making too many basic mistakes (spelling errors in code!) I switched to Copilot (GPT 5.4 xhigh). &lt;!-- claude --resume a0836a15-6b82-45ef-8174-bcd10272a62e --&gt;&lt;/li&gt;
&lt;li&gt;29 Mar 2026: Calvin &amp;amp; Hobbes image analysis. It couldn&amp;rsquo;t even read the images and confidently saw &amp;ldquo;Hobbes stuck to a baseball bat with Mom &amp;amp; Dad&amp;rdquo; in a strip that only featured Calvin &amp;amp; Susie. &lt;!-- claude --resume 9dd15966-0c65-49bf-af3b-506f4bab5d39 --&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The main problems are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;It errs confidently&lt;/strong&gt;. It doesn&amp;rsquo;t do ROT13 well. It can&amp;rsquo;t see images. It mis-understands error messages. It assigned my earlier company&amp;rsquo;s incorporation date (NGIMAGE) as Gramener&amp;rsquo;s. It made Vijay Sethupathi a lyricist. When a process failed with just 12% coverage, it just continued. It just &lt;em&gt;reported what&amp;rsquo;s done, not what&amp;rsquo;s missing&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;It&amp;rsquo;s a slow learner&lt;/strong&gt;. For &lt;a href=&#34;https://picoctf.org/&#34;&gt;picoCTF&lt;/a&gt;, it had the pieces but couldn&amp;rsquo;t assemble them. Claude Code resets the cwd, but it never switched to absolute paths. It mixed &lt;code&gt;uv run&lt;/code&gt; with &lt;code&gt;python3&lt;/code&gt;. It rewrites, resets or waits instead of diagnosing.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It&amp;rsquo;s best for simple, single-step tasks. Not where knowledge, accuracy, research matters. When using it, keep tasks small and verify correctness, completeness.&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Coding agents ARE the new software</title>
      <link>https://www.s-anand.net/blog/coding-agents-are-the-new-software/</link>
      <pubDate>Mon, 23 Mar 2026 16:03:18 +0530</pubDate>
      <guid>https://www.s-anand.net/blog/coding-agents-are-the-new-software/</guid>
      <description>&lt;p&gt;Increasingly, &lt;strong&gt;I use coding agents instead of writing software&lt;/strong&gt;. For example, I built a &lt;a href=&#34;https://files.s-anand.net/blog/blogmap/&#34;&gt;Blog UMAP&lt;/a&gt;. Then, I built &lt;a href=&#34;https://files.s-anand.net/blog/calvinmap/&#34;&gt;Calvin UMAP&lt;/a&gt;. And more. But instead of building re-usable software, I just ran Claude with prior context.&lt;/p&gt;
&lt;p&gt;Increasingly, &lt;strong&gt;I use coding agents to run software&lt;/strong&gt;. 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.&lt;/p&gt;
&lt;p&gt;I see a future where coding agents are the wrapper around &lt;em&gt;all&lt;/em&gt; software. (Lots of people have spoken about this. I am &lt;em&gt;feeling&lt;/em&gt; it now.)&lt;/p&gt;
&lt;p&gt;If that&amp;rsquo;s so, then:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Agents are the new users&lt;/strong&gt; of software. We need &lt;a href=&#34;https://github.com/sanand0/scripts/blob/main/agents/agent-friendly-cli/SKILL.md&#34;&gt;agent-friendly CLI&lt;/a&gt;, agentic web accessibility, and stuff like that.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Agents &lt;em&gt;ARE&lt;/em&gt; the new software&lt;/strong&gt;. I mean, &lt;em&gt;all&lt;/em&gt; sofware is just one coding agent. &amp;ldquo;Tell the agent to do it&amp;rdquo;. It&amp;rsquo;ll find &amp;amp; install what&amp;rsquo;s required or write it - to get the job done.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;If agents are a genie we can&amp;rsquo;t push back into the bottle, I guess we&amp;rsquo;ll see more (naive) usage, meaning:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;More one-off uses, e.g. personal use tools &amp;amp; projects (which is great! That&amp;rsquo;s like Excel templates and macros.)&lt;/li&gt;
&lt;li&gt;More prototypes that are NOT production-ready, leading to &lt;a href=&#34;https://www.linkedin.com/search/results/people/?keywords=%22vibe%20code%20fixer%22&#34;&gt;Vibe Code Fixer&lt;/a&gt; and &lt;a href=&#34;https://www.linkedin.com/search/results/people/?keywords=%22ai%20slop%20fixer%22&#34;&gt;AI Slop Fixer&lt;/a&gt; roles. Also:
&lt;ul&gt;
&lt;li&gt;AI Policy Architects (project managers)&lt;/li&gt;
&lt;li&gt;AI Architects&lt;/li&gt;
&lt;li&gt;AI Designers&lt;/li&gt;
&lt;li&gt;AI PromptOps Engineers (developers)&lt;/li&gt;
&lt;li&gt;AI Auditors (testers)&lt;/li&gt;
&lt;li&gt;AI Security Experts&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Wait-a-sec&amp;hellip; that&amp;rsquo;s just the usual software roles, but with &amp;ldquo;AI&amp;rdquo; in the title, doing slightly different things.&lt;/p&gt;
&lt;p&gt;Huh.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;Words fail me.&#34; loading=&#34;lazy&#34; src=&#34;https://files.s-anand.net/images/2026-03-25-words-fail-me.avif&#34;&gt;&lt;/p&gt;
</description>
    </item>
    <item>
      <title>The Nov 2025 Vibe Coding Ghost Revolution</title>
      <link>https://www.s-anand.net/blog/the-nov-2025-vibe-coding-ghost-revolution/</link>
      <pubDate>Mon, 23 Mar 2026 11:21:42 +0530</pubDate>
      <guid>https://www.s-anand.net/blog/the-nov-2025-vibe-coding-ghost-revolution/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://sanand0.github.io/datastories/github-usage-increase/sketchnote.avif&#34;&gt;&lt;/p&gt;
&lt;p&gt;I kept hearing that with the &lt;a href=&#34;https://simonwillison.net/2026/Jan/4/inflection/&#34;&gt;Nov 2025 release&lt;/a&gt; of Opus 4.5 and GPT 5.2 Codex, &lt;a href=&#34;https://www.entrepreneur.com/business-news/this-ai-tool-is-helping-disempowered-ceos-with-a-major-problem-finally-feel-unleashed&#34;&gt;ex-coders&lt;/a&gt; &lt;a href=&#34;https://aimagazine.com/news/google-and-klarnas-ceos-are-vibe-coding-should-you-be&#34;&gt;were&lt;/a&gt; &lt;a href=&#34;https://technologymagazine.com/news/google-ceo-why-vibe-coding-makes-software-exciting-again&#34;&gt;sprinting&lt;/a&gt; &lt;a href=&#34;https://www.jpmorgan.com/insights/technology/artificial-intelligence/vibe-coding-a-guide-for-startups-and-founders&#34;&gt;back to coding&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;On a sample of ~1,700 developers on GitHub, exactly &lt;em&gt;ten&lt;/em&gt; fit the &amp;ldquo;dormant returner&amp;rdquo; profile.&lt;/p&gt;
&lt;p&gt;Here are a couple of examples:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/tlwolsten&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://files.s-anand.net/images/2026-03-23-github-tlwolsten.webp&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/rjwalters&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://files.s-anand.net/images/2026-03-23-github-rjwalters.webp&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;But they&amp;rsquo;re the exception. I could find only &lt;strong&gt;TEN&lt;/strong&gt; out of 1,700 developers who returned. I also found a few who exited:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/bocaletto-luca&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://files.s-anand.net/images/2026-03-23-github-bocaletto-luca.webp&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;To be fair, the vibe coding revolution &lt;em&gt;is&lt;/em&gt; real, but maybe we are (I am) mis-interpreting it.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;There are lots of new non-developers joining GitHub. Anecdotally, &lt;a href=&#34;https://github.com/gattun-git&#34;&gt;Naveen Gattu&lt;/a&gt; (finally!!) and Ankor Rai&lt;/li&gt;
&lt;li&gt;A few high-profile ex-developers are returning and are very active. Anecdotally, &lt;a href=&#34;https://en.wikipedia.org/wiki/Sebastian_Siemiatkowski&#34;&gt;Sebastian Siemiatkowski&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;But the majority of the developers who were less active last year remain less active.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;a href=&#34;https://sanand0.github.io/datastories/github-usage-increase/&#34;&gt;Read the full analysis&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Live Vibe Coding using Others&#39; Ideas</title>
      <link>https://www.s-anand.net/blog/live-vibe-coding-using-others-ideas/</link>
      <pubDate>Sat, 21 Mar 2026 22:51:50 +0530</pubDate>
      <guid>https://www.s-anand.net/blog/live-vibe-coding-using-others-ideas/</guid>
      <description>&lt;p&gt;I spoke today on &lt;a href=&#34;https://sanand0.github.io/talks/2026-03-21-design-in-the-age-of-infinite-generativity/&#34;&gt;Design in the Age of Infinite Generativity&lt;/a&gt; at the &lt;a href=&#34;https://www.chennaidesignfestival.com/&#34;&gt;Chennai Design Festival&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;You can read about the talk in the link about. This post is about my preparation.&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://files.s-anand.net/images/2026-03-21-live-vibe-coding-using-others-ideas.avif&#34;&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tue 10 Mar 2026. Damn! &lt;a href=&#34;https://www.linkedin.com/in/palramu/&#34;&gt;Palani&lt;/a&gt;&amp;rsquo;s asked for the topic. &lt;a href=&#34;https://claude.ai/share/46ef75be-6e38-4ea6-ab73-49f7e46e1ec0&#34;&gt;Claude, what should I talk about!?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Fri 20 Mar 2026. &lt;a href=&#34;https://chatgpt.com/share/69bed4d0-14ac-8003-8750-2648b81d9366&#34;&gt;ChatGPT, tell me who the other speaker are&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Fri 20 Mar 2026. Oh, I&amp;rsquo;ll just pull a bunch of links, &lt;a href=&#34;https://www.s-anand.net/blog/using-browser-tabs-as-slides/&#34;&gt;use browser tabs as slides&lt;/a&gt;, create some &lt;a href=&#34;https://tools.s-anand.net/slide/&#34;&gt;slide dividers&lt;/a&gt;, and I&amp;rsquo;m ready!&lt;/li&gt;
&lt;li&gt;Sat 21 Mar 2026 1:00 pm. I&amp;rsquo;m &lt;strong&gt;NOT&lt;/strong&gt; ready! The story doesn&amp;rsquo;t flow. It&amp;rsquo;s rubbish.&lt;/li&gt;
&lt;li&gt;Sat 21 Mar 2026 3:00 pm. Let me drop some of the boring ones. I just have 15 minutes.&lt;/li&gt;
&lt;li&gt;Sat 22 Mar 2026 3:30 pm. Oh, maybe I should listen to what the others are saying, just&amp;hellip; you know&amp;hellip;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;hellip; and that proved the &lt;em&gt;best&lt;/em&gt; decision ever, because &lt;a href=&#34;https://www.linkedin.com/in/senthil-gopalan-05935719/&#34;&gt;Senthil&lt;/a&gt; of &lt;a href=&#34;https://www.payir.org/&#34;&gt;Payir&lt;/a&gt; showed a &lt;a href=&#34;https://thinaistore.myinstamojo.com/product/fabric-calendar-hanging-model-reusable&#34;&gt;re-usable fabric calendar&lt;/a&gt; that converts into a bag. It was a fantastic idea, so I got curious.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;3:40 pm. &lt;a href=&#34;https://claude.ai/share/f9f8bce9-bb29-4795-b5c1-8faa7eca4dfe&#34;&gt;Asked Claude for more ideas like Senthil&amp;rsquo;s&lt;/a&gt;. It looked fine and I could read it later, but what if&amp;hellip; maybe&amp;hellip; I &lt;strong&gt;presented these ideas&lt;/strong&gt;!?&lt;/li&gt;
&lt;li&gt;3:45 pm. &lt;a href=&#34;https://gemini.google.com/share/c201f58b95b3&#34;&gt;Ask Gemini to draw the first idea - a Modular Kolam Mat&lt;/a&gt;. The results look &lt;em&gt;fantastic&lt;/em&gt;!
&lt;img loading=&#34;lazy&#34; src=&#34;https://sanand0.github.io/talks/2026-03-21-design-in-the-age-of-infinite-generativity/modular-kolam-1.avif&#34;&gt;&lt;/li&gt;
&lt;li&gt;3:50 pm. Now I&amp;rsquo;m going ga-ga over the idea. I generate images for 3 more ideas: a growth chart kurta, seed library sari border, and recipe towel.&lt;/li&gt;
&lt;li&gt;4:15 pm. &lt;a href=&#34;https://www.linkedin.com/in/narendraghate/&#34;&gt;Narendra&lt;/a&gt; shares a bunch of cool PsychOps design hacks like:
&lt;ul&gt;
&lt;li&gt;When lights are dimmed people speak softer. So, dimming lights reduces sound levels in noisy offices.&lt;/li&gt;
&lt;li&gt;Rather than reduce the size of shampoo sachets (which customers and business both hate), include 2 shampoos in one sachet, tearable in the middle.&lt;/li&gt;
&lt;li&gt;Price saches at 95p with a 5p deposit for the sachet - which rag-pickers can collect and return to the retailer.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;4:20 pm. &lt;a href=&#34;https://claude.ai/share/74c27359-7710-463e-8488-60fef2df6bfc&#34;&gt;Ask Claude for more ideas like Narendra&amp;rsquo;s&lt;/a&gt;. The results are &lt;em&gt;just as fantastic&lt;/em&gt;!
&lt;img loading=&#34;lazy&#34; src=&#34;https://sanand0.github.io/talks/2026-03-21-design-in-the-age-of-infinite-generativity/expired-medication-color.avif&#34;&gt;&lt;/li&gt;
&lt;li&gt;4:30 pm. I now have images for his ideas too. Now, I start deleting my more boring links.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In fact, these ideas ended up being &lt;em&gt;so&lt;/em&gt; good that the bulk of my talk was just about ideas derived from their work. (I&amp;rsquo;m obviously a big fan of plagiarism!)&lt;/p&gt;
&lt;p&gt;Despite being one of my shortest talks (~10 min), this worked quite well because people value speed and spontaneity. I was &lt;em&gt;obviously&lt;/em&gt; demonstrating these and that felt cool.&lt;/p&gt;
&lt;p&gt;For many years, I&amp;rsquo;ve been live-coding on stage. But that requires a &lt;em&gt;lot&lt;/em&gt; of preparation.&lt;/p&gt;
&lt;p&gt;Vibe-coding makes live-coding a &lt;em&gt;lot&lt;/em&gt; faster. I can do it &lt;em&gt;during&lt;/em&gt; a client demo. I can do it &lt;em&gt;during&lt;/em&gt; a talk.&lt;/p&gt;
&lt;p&gt;So, I&amp;rsquo;m going to listen more to what others are saying (in meetings, conferences, etc.) and live-vibe-code from what they &lt;em&gt;just&lt;/em&gt; said. Great way to show-off while learning from others!&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;26 Mar 2026&lt;/strong&gt;: On a related note, &lt;a href=&#34;https://x.com/emollick/status/2036104905568452967&#34;&gt;AI has better product development ideas than humans&lt;/a&gt;. Read &lt;a href=&#34;https://arxiv.org/abs/2603.19087&#34;&gt;Serendipity by Design: Evaluating the Impact of Cross-domain Mappings on Human and LLM Creativity&lt;/a&gt;&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Calvin UMAP</title>
      <link>https://www.s-anand.net/blog/calvin-umap/</link>
      <pubDate>Fri, 20 Mar 2026 21:42:38 +0530</pubDate>
      <guid>https://www.s-anand.net/blog/calvin-umap/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://files.s-anand.net/images/2026-03-20-calvin-umap.avif&#34;&gt;&lt;/p&gt;
&lt;p&gt;Similar to the &lt;a href=&#34;https://files.s-anand.net/blog/blogmap/&#34;&gt;embedding map of my blog posts&lt;/a&gt;, I created an &lt;a href=&#34;https://files.s-anand.net/blog/calvinmap/&#34;&gt;embedding map of Calvin &amp;amp; Hobbes&lt;/a&gt;. It uses the &lt;a href=&#34;https://www.s-anand.net/blog/blog-embeddings-map/&#34;&gt;same process as before&lt;/a&gt;.&lt;/p&gt;
&lt;video width=&#34;1916&#34; height=&#34;960&#34; style=&#34;max-width: 100%; height: auto;&#34; controls autoplay loop muted&gt;
  &lt;source src=&#34;https://files.s-anand.net/images/2026-03-20-calvin-umap.webm&#34; type=&#34;video/webm&#34;&gt;
  &lt;a href=&#34;https://files.s-anand.net/images/2026-03-20-calvin-umap.webm&#34;&gt;Video&lt;/a&gt;
&lt;/video&gt;
</description>
    </item>
    <item>
      <title>How I use AI to teach</title>
      <link>https://www.s-anand.net/blog/how-i-use-ai-to-teach/</link>
      <pubDate>Fri, 20 Mar 2026 07:12:47 +0530</pubDate>
      <guid>https://www.s-anand.net/blog/how-i-use-ai-to-teach/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve been using AI in my &lt;a href=&#34;https://tds.s-anand.net/&#34;&gt;Tools in Data Science&lt;/a&gt; course for over two years - to teach AI, &lt;em&gt;and&lt;/em&gt; using AI to teach.&lt;/p&gt;
&lt;p&gt;I told GitHub Copilot (&lt;a href=&#34;https://github.com/sanand0/talks/blob/a4ccc33e6b534853ae28d7ed5584b982cfc38193/2026-03-18-iitm-academic-council/prompts.md&#34;&gt;prompt&lt;/a&gt;) to go through my transcripts, &lt;a href=&#34;https://www.s-anand.net/&#34;&gt;blog posts&lt;/a&gt;, &lt;a href=&#34;https://github.com/sanand0&#34;&gt;code&lt;/a&gt;, and &lt;a href=&#34;https://til.s-anand.net/&#34;&gt;things I learned&lt;/a&gt; since 2024 to list my &lt;em&gt;every&lt;/em&gt; experiment in AI education, rating it on importance and novelty.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://sanand0.github.io/talks/2026-03-18-iitm-academic-council/ideas/table.html&#34;&gt;Here is the full list of my experiments&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. Teach using exams and prompts, not content&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;⭐ &lt;a href=&#34;https://sanand0.github.io/talks/2026-03-18-iitm-academic-council/ideas/table.html?id=learn-by-solving&#34;&gt;&lt;strong&gt;Use exams to teach&lt;/strong&gt;&lt;/a&gt;. The typical student is busy. They want grades, not learning. They&amp;rsquo;ll write the exams, but not read the content. So, I moved the course material &lt;em&gt;into&lt;/em&gt; the questions. If they can answer the question, great. Skip the content.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://sanand0.github.io/talks/2026-03-18-iitm-academic-council/ideas/table.html?id=ai-comics&#34;&gt;&lt;strong&gt;Use AI to generate the content&lt;/strong&gt;&lt;/a&gt;. I used to write content. Then I linked to the best content online &amp;ndash; it&amp;rsquo;s better than mine. Now, AI drafts comics, interactive explainers, and simulators. My job is to pick good topics and generate in good formats.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://sanand0.github.io/talks/2026-03-18-iitm-academic-council/ideas/table.html?id=ai-explainers&#34;&gt;&lt;strong&gt;Give them prompts directly&lt;/strong&gt;&lt;/a&gt;. Skip the content! I generated them with prompts &lt;em&gt;anyway&lt;/em&gt;. Give students the prompts &lt;em&gt;directly&lt;/em&gt;. They can use better AI models, revise the prompts, and learn how to learn with AI.&lt;/li&gt;
&lt;li&gt;⭐ &lt;a href=&#34;https://sanand0.github.io/talks/2026-03-18-iitm-academic-council/ideas/table.html?id=ask-ai-button&#34;&gt;&lt;strong&gt;Add an &amp;ldquo;Ask AI&amp;rdquo; button&lt;/strong&gt;&lt;/a&gt;. Make it &lt;em&gt;easy&lt;/em&gt; for students to use ChatGPT. Stop pretending that real-world problem solving is closed-book and solo.&lt;/li&gt;
&lt;li&gt;⭐ &lt;a href=&#34;https://sanand0.github.io/talks/2026-03-18-iitm-academic-council/ideas/table.html?id=test-as-tutor&#34;&gt;&lt;strong&gt;Make test cases teach, not just grade&lt;/strong&gt;&lt;/a&gt;. Automate the testing (with code or AI). Good test cases show students the &lt;em&gt;kind&lt;/em&gt; of mistake they may - teaching them, not just grading them. That&amp;rsquo;s great for teachers to analyze, too.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://sanand0.github.io/talks/2026-03-18-iitm-academic-council/ideas/table.html?id=test-first-teach&#34;&gt;&lt;strong&gt;Test first, then teach from the mistakes&lt;/strong&gt;&lt;/a&gt;. Let them solve problems first. &lt;strong&gt;Then&lt;/strong&gt; teach them, focusing on what failed. AI does the work; humans handle what AI can&amp;rsquo;t. This lets us teach really useful skills based on real mistakes.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;2. Make cheating pointless through design, not detection&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;⭐ &lt;a href=&#34;https://sanand0.github.io/talks/2026-03-18-iitm-academic-council/ideas/table.html?id=copy-collaborate&#34;&gt;&lt;strong&gt;Allow copying, collaboration, and hacking&lt;/strong&gt;&lt;/a&gt;. In real work, nobody gets bonus points for working alone or re-inventing the wheel. Collaboration, using available resources well, verifying inputs, disclosed shortcuts &amp;ndash; all are rewarded.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://sanand0.github.io/talks/2026-03-18-iitm-academic-council/ideas/table.html?id=reward-originality&#34;&gt;&lt;strong&gt;Reward originality without punishing collaboration&lt;/strong&gt;&lt;/a&gt;. Blanket anti-copying rules assume that all similarity is bad. A more AI-native approach is to allow learning from others openly, but give extra credit for genuine variation, initiative, and novel improvement.&lt;/li&gt;
&lt;li&gt;⭐ &lt;a href=&#34;https://sanand0.github.io/talks/2026-03-18-iitm-academic-council/ideas/table.html?id=unique-variants&#34;&gt;&lt;strong&gt;Give each student a unique variant&lt;/strong&gt;&lt;/a&gt;. If everyone sees the same problem with the same visible answer path, answer-sharing becomes the dominant strategy. Deterministic but unique variants shift the game from leaking answers to actually solving the problem.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://sanand0.github.io/talks/2026-03-18-iitm-academic-council/ideas/table.html?id=process-logs&#34;&gt;&lt;strong&gt;Make process logs part of the evidence&lt;/strong&gt;&lt;/a&gt;. When outputs can be copied or AI-generated, the trace becomes more valuable than the final artifact. Logs, verification notes, session recordings, and agent traces show whether the student can actually orchestrate the work.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://sanand0.github.io/talks/2026-03-18-iitm-academic-council/ideas/table.html?id=repo-viva&#34;&gt;&lt;strong&gt;Use repo-grounded vivas for authenticity&lt;/strong&gt;&lt;/a&gt;. If you really want to know whether a student owns their project, ask them questions drawn from their own repo and make them change something live. That is much harder to fake than polished submitted output.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://sanand0.github.io/talks/2026-03-18-iitm-academic-council/ideas/table.html?id=copy-detection&#34;&gt;&lt;strong&gt;Use structural similarity, not string matching&lt;/strong&gt;&lt;/a&gt;. Strip docstrings, tokenize, MinHash. Students who rename variables are still caught; students who genuinely collaborated produce detectable clusters rather than suspicious pairs.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;3. Test skills that matter in an AI world&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;⭐ &lt;a href=&#34;https://sanand0.github.io/talks/2026-03-18-iitm-academic-council/ideas/table.html?id=teach-ai-limits&#34;&gt;&lt;strong&gt;Teach what AI still cannot do well&lt;/strong&gt;&lt;/a&gt;. Syntax and routine execution are declining in value. Judgment, debugging, orchestration, validation, integration, and taste are rising. The curriculum should move upward, not cling to the parts AI is already eating.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://sanand0.github.io/talks/2026-03-18-iitm-academic-council/ideas/table.html?id=messy-problems&#34;&gt;&lt;strong&gt;Use hard, messy problems to build real resilience&lt;/strong&gt;&lt;/a&gt;. Some questions should be intentionally tricky, partly wrong, hidden in the UI, or out of syllabus. The students who find and solve them anyway are demonstrating exactly the adaptability that real work demands. Smooth progression alone doesn&amp;rsquo;t build that.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://sanand0.github.io/talks/2026-03-18-iitm-academic-council/ideas/table.html?id=hands-on-skills&#34;&gt;&lt;strong&gt;Test live, hands-on AI skills&lt;/strong&gt;&lt;/a&gt;. Don&amp;rsquo;t just lecture about embeddings, vision, structured outputs, or hallucinations. Put students in live API-driven tasks where they have to use these things under time pressure and genuine uncertainty.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://sanand0.github.io/talks/2026-03-18-iitm-academic-council/ideas/table.html?id=ai-workflow-design&#34;&gt;&lt;strong&gt;Grade students on designing AI workflows&lt;/strong&gt;&lt;/a&gt;. In many real settings, the important skill is not &amp;ldquo;give the answer&amp;rdquo; but &amp;ldquo;design the chain of steps that gets to the answer reliably.&amp;rdquo; That includes tools, prompts, datasets, quality checks, fallbacks, and output formats.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://sanand0.github.io/talks/2026-03-18-iitm-academic-council/ideas/table.html?id=game-learning&#34;&gt;&lt;strong&gt;Use game-like tasks to teach agentic work&lt;/strong&gt;&lt;/a&gt;. Mazes, escape rooms, and API games force state tracking, exploration strategy, and backtracking — exactly the behaviors agentic systems require. They&amp;rsquo;re not gimmicks; they&amp;rsquo;re the syllabus.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://sanand0.github.io/talks/2026-03-18-iitm-academic-council/ideas/table.html?id=prompt-attacks&#34;&gt;&lt;strong&gt;Test prompt attacks and defenses&lt;/strong&gt;&lt;/a&gt;. Security and adversarial literacy should not be abstract topics. Make students jailbreak, defend, manipulate, and harden model behavior. That turns &amp;ldquo;prompt security&amp;rdquo; from a lecture topic into a measurable skill.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;4. Make assessment more like real work&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://sanand0.github.io/talks/2026-03-18-iitm-academic-council/ideas/table.html?id=rich-work-grading&#34;&gt;&lt;strong&gt;Grade richer work, not just one-line answers&lt;/strong&gt;&lt;/a&gt;. Real work is often multimodal: images, stories, APIs, analyses, and dashboards. If assessment automation cannot handle those, it will keep pushing education toward fake neatness.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://sanand0.github.io/talks/2026-03-18-iitm-academic-council/ideas/table.html?id=specs-tests-assignment&#34;&gt;&lt;strong&gt;Grade the spec, not the code&lt;/strong&gt;&lt;/a&gt;. When AI writes the code, the real artifact is the machine-readable brief: goal, constraints, done-when, counter-examples, eval suite. That is often where the actual thinking lives anyway.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://sanand0.github.io/talks/2026-03-18-iitm-academic-council/ideas/table.html?id=open-source-coursework&#34;&gt;&lt;strong&gt;Count real open-source contributions as coursework&lt;/strong&gt;&lt;/a&gt;. A merged PR to a public repo is harder, messier, and more educational than most sealed academic assignments. It teaches scoping, etiquette, usefulness, and real external standards.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://sanand0.github.io/talks/2026-03-18-iitm-academic-council/ideas/table.html?id=virtual-ta&#34;&gt;&lt;strong&gt;Let students build virtual TAs from real course material&lt;/strong&gt;&lt;/a&gt;. The project is educational, and the output becomes infrastructure for the next cohort. Good assignments should create assets, not just submissions.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://sanand0.github.io/talks/2026-03-18-iitm-academic-council/ideas/table.html?id=originality-bonus&#34;&gt;&lt;strong&gt;Reward originality structurally, not just rhetorically&lt;/strong&gt;&lt;/a&gt;. Most courses praise creativity but grade only correctness. Use embeddings to measure cohort-level similarity and explicitly reward meaningfully distinct outputs. Originality becomes real, not decorative.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;5. Use AI to build the course, not just teach inside it&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://sanand0.github.io/talks/2026-03-18-iitm-academic-council/ideas/table.html?id=ai-writes-questions&#34;&gt;&lt;strong&gt;Let AI write, test, and fix draft questions&lt;/strong&gt;&lt;/a&gt;. The interesting move is not just &amp;ldquo;AI drafts items.&amp;rdquo; It is &amp;ldquo;AI drafts, runs, breaks, revises, and improves them before any student sees them.&amp;rdquo; That dramatically changes how fast a course can evolve.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://sanand0.github.io/talks/2026-03-18-iitm-academic-council/ideas/table.html?id=agent-exam-testing&#34;&gt;&lt;strong&gt;Use coding agents to test the exam before students do&lt;/strong&gt;&lt;/a&gt;. If an agent solves a question instantly, you should ask what the question is actually measuring. Agents become both QA tools and mirrors for curricular relevance.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://sanand0.github.io/talks/2026-03-18-iitm-academic-council/ideas/table.html?id=ai-comics&#34;&gt;&lt;strong&gt;Use AI-generated comics to explain why the question exists&lt;/strong&gt;&lt;/a&gt;. Students often resist tasks they do not understand. A comic can smuggle in the pedagogical point with very low friction and high memorability.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://sanand0.github.io/talks/2026-03-18-iitm-academic-council/ideas/table.html?id=ai-explainers&#34;&gt;&lt;strong&gt;Use interactive explainers for unfamiliar concepts&lt;/strong&gt;&lt;/a&gt;. AI can generate not just text answers but visual, animated, intuitive explanations. That makes concept onboarding faster for both students and new faculty.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://sanand0.github.io/talks/2026-03-18-iitm-academic-council/ideas/table.html?id=teacher-first-ai&#34;&gt;&lt;strong&gt;Keep teacher adoption in familiar formats&lt;/strong&gt;&lt;/a&gt;. A good innovation that slots into slides, handouts, OCR flows, and short feedback loops will beat a brilliant system nobody can actually use next semester.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;6. Build the infrastructure for AI in education&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;⭐ &lt;a href=&#34;https://sanand0.github.io/talks/2026-03-18-iitm-academic-council/ideas/table.html?id=ai-grading&#34;&gt;&lt;strong&gt;Break rubrics into binary sub-criteria; reason before judging&lt;/strong&gt;&lt;/a&gt;. Open-ended project grading becomes more auditable when you decompose it into binary yes/no criteria and ask the model to explain its reasoning before delivering a verdict. High or suspicious scores get re-evaluated with stronger guardrails.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://sanand0.github.io/talks/2026-03-18-iitm-academic-council/ideas/table.html?id=shared-ai-access&#34;&gt;&lt;strong&gt;Give every student shared, budgeted AI access&lt;/strong&gt;&lt;/a&gt;. If AI access depends on personal subscriptions, the institution is quietly grading wealth, not skill. Shared governed access makes AI a course capability, not a private advantage.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://sanand0.github.io/talks/2026-03-18-iitm-academic-council/ideas/table.html?id=ai-routine-human-judgment&#34;&gt;&lt;strong&gt;Let AI handle routine support; keep humans for judgment&lt;/strong&gt;&lt;/a&gt;. AI handles repetitive, searchable, first-pass questions. Humans handle ambiguity, reassurance, escalation, and final accountability. Neither alone is the right model at scale.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://sanand0.github.io/talks/2026-03-18-iitm-academic-council/ideas/table.html?id=canonical-qa&#34;&gt;&lt;strong&gt;Turn recurring answers into canonical Q&amp;amp;A cards&lt;/strong&gt;&lt;/a&gt;. Once the same question appears three times, it should stop living in somebody&amp;rsquo;s head or an old thread. Convert it into a canonical artifact that both humans and bots can cite consistently.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://sanand0.github.io/talks/2026-03-18-iitm-academic-council/ideas/table.html?id=green-amber-red&#34;&gt;&lt;strong&gt;Govern with green/amber/red review levels&lt;/strong&gt;&lt;/a&gt;. Not every decision needs the same scrutiny. Auto-ship the low-risk, spot-check the medium-risk, always human-review the high-stakes. This is how you scale without losing trust.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://sanand0.github.io/talks/2026-03-18-iitm-academic-council/ideas/table.html?id=shadow-mode-rollout&#34;&gt;&lt;strong&gt;Roll out in shadow mode first&lt;/strong&gt;&lt;/a&gt;. High-stakes academic workflows should not be launched with fingers crossed. Run the AI system quietly in parallel with human judgment and learn before turning it loose.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://sanand0.github.io/talks/2026-03-18-iitm-academic-council/ideas/table.html?id=policy-as-code&#34;&gt;&lt;strong&gt;Turn policy into executable checks&lt;/strong&gt;&lt;/a&gt;. A policy that cannot be operationalized at scale is mostly theater. If you can translate rules and rubrics into machine-checkable form, governance becomes consistent rather than person-dependent.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://sanand0.github.io/talks/2026-03-18-iitm-academic-council/ideas/table.html?id=open-course&#34;&gt;&lt;strong&gt;Make the course publicly inspectable&lt;/strong&gt;&lt;/a&gt;. Openness raises the bar. It invites scrutiny, reuse, criticism, and improvement, and it turns the course into a visible institutional experiment rather than a sealed classroom.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://sanand0.github.io/talks/2026-03-18-iitm-academic-council/ideas/table.html?id=reasoning-verifier&#34;&gt;&lt;strong&gt;Use reasoning models only for the borderline cases&lt;/strong&gt;&lt;/a&gt;. Cheap screening first, expensive verification for the high-stakes or suspicious. Increasing reasoning effort on even a small model can flip an evaluator from sloppy to reliable — the cost curve makes this the natural operating model.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;7. Analyze and research learning exhaust&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://sanand0.github.io/talks/2026-03-18-iitm-academic-council/ideas/table.html?id=track-ai-tools&#34;&gt;&lt;strong&gt;Track which AI tools students actually use&lt;/strong&gt;&lt;/a&gt;. Once AI use is instrumented, you stop guessing. You can see which models students choose, when they ask for help, and what behavior actually correlates with success.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://sanand0.github.io/talks/2026-03-18-iitm-academic-council/ideas/table.html?id=behavior-data-exam&#34;&gt;&lt;strong&gt;Redesign exams from behavior data, not intuition&lt;/strong&gt;&lt;/a&gt;. Model choice, timing, retry patterns, and deadline behavior all reveal how students really work. That should feed back into question design, support strategy, and pacing.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://sanand0.github.io/talks/2026-03-18-iitm-academic-council/ideas/table.html?id=pre-compile-analysis&#34;&gt;&lt;strong&gt;Analyze broken code before it compiles&lt;/strong&gt;&lt;/a&gt;. Novices often fail at syntax long before you reach the real misconception. Structural parsing of broken code lets you give feedback on thought process instead of just rejecting the submission.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://sanand0.github.io/talks/2026-03-18-iitm-academic-council/ideas/table.html?id=code-trace-misconceptions&#34;&gt;&lt;strong&gt;Use code traces to surface hidden misconceptions&lt;/strong&gt;&lt;/a&gt;. Timestamped traces reveal overfitting, thrashing, structural confusion, and missing invariants — patterns that polished final submissions hide entirely.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://sanand0.github.io/talks/2026-03-18-iitm-academic-council/ideas/table.html?id=exam-replay&#34;&gt;&lt;strong&gt;Turn replay galleries into faculty-readable stories&lt;/strong&gt;&lt;/a&gt;. Raw logs do not change policy. Narrated replays and plain-language error-pattern reports do. The point is to make evidence legible to decision-makers, not just analysts.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://sanand0.github.io/talks/2026-03-18-iitm-academic-council/ideas/table.html?id=coachable-steps&#34;&gt;&lt;strong&gt;Break problem-solving into coachable steps&lt;/strong&gt;&lt;/a&gt;. &amp;ldquo;Weak student&amp;rdquo; is too vague to be useful. Better to ask: did they fail at reading the givens, choosing a strategy, surviving a multi-select trap, or knowing when to cut losses? Each is a trainable failure mode.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://sanand0.github.io/talks/2026-03-18-iitm-academic-council/ideas/table.html?id=peer-review-bias&#34;&gt;&lt;strong&gt;Study bias in peer review itself&lt;/strong&gt;&lt;/a&gt;. If peer assessment matters, reviewer quality matters too. You can detect generous, timid, extreme, and calibrated graders from the data, then moderate or train accordingly.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://sanand0.github.io/talks/2026-03-18-iitm-academic-council/ideas/table.html?id=learning-analytics&#34;&gt;&lt;strong&gt;Treat learning analytics as a reusable research programme, not a one-off dashboard&lt;/strong&gt;&lt;/a&gt;. The infrastructure for tracking misconceptions, prerequisite transfer, and course-to-course movement can be built once and reused across cohorts. That turns isolated AI experiments into institute-level knowledge and publishable educational research.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;8. Upgrade the human role&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://sanand0.github.io/talks/2026-03-18-iitm-academic-council/ideas/table.html?id=judgment-taste&#34;&gt;&lt;strong&gt;Make judgment and taste explicit learning goals&lt;/strong&gt;&lt;/a&gt;. AI makes average output cheap. The premium moves to selecting what is worth doing, recognizing quality, and knowing what to reject. That is a teachable skill, not a vague aspiration.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://sanand0.github.io/talks/2026-03-18-iitm-academic-council/ideas/table.html?id=directional-feedback&#34;&gt;&lt;strong&gt;Teach directional feedback as a skill&lt;/strong&gt;&lt;/a&gt;. You do not always need to micromanage AI with detailed corrections. The higher-order skill is to say &amp;ldquo;more concrete,&amp;rdquo; &amp;ldquo;less jargon,&amp;rdquo; &amp;ldquo;optimize for faculty adoption,&amp;rdquo; or &amp;ldquo;make this defensible.&amp;rdquo; That is learnable and more effective than micromanaging.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://sanand0.github.io/talks/2026-03-18-iitm-academic-council/ideas/table.html?id=manage-agents&#34;&gt;&lt;strong&gt;Teach faculty to manage agents, not just chat with them&lt;/strong&gt;&lt;/a&gt;. Institutional AI does not scale on prompting alone. People need to learn specs, budgets, kill switches, and escalation rules — orchestration literacy, not just chatbot familiarity.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://sanand0.github.io/talks/2026-03-18-iitm-academic-council/ideas/table.html?id=ai-coach&#34;&gt;&lt;strong&gt;Use AI as a personalized coach&lt;/strong&gt;&lt;/a&gt;. The model is not just an answer engine. It can become a research guide, curiosity amplifier, and next-step recommender tailored to the individual learner&amp;rsquo;s gaps and goals.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://sanand0.github.io/talks/2026-03-18-iitm-academic-council/ideas/table.html?id=no-code-tools&#34;&gt;&lt;strong&gt;Let non-coders build interactive learning tools&lt;/strong&gt;&lt;/a&gt;. AI lowers the cost of making timelines, maps, biographies, and interactive explainers. That opens AI-native pedagogy far beyond computer science into humanities and social sciences.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://sanand0.github.io/talks/2026-03-18-iitm-academic-council/ideas/table.html?id=parallel-ai&#34;&gt;&lt;strong&gt;Teach students to run many AI attempts in parallel&lt;/strong&gt;&lt;/a&gt;. One of the biggest AI-native workflow shifts is from single-path effort to portfolio thinking — run several attempts, compare them, and converge faster. That is a teachable habit, not an obvious default.&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    <item>
      <title>Local context repositories for AI</title>
      <link>https://www.s-anand.net/blog/local-context-repositories-for-ai/</link>
      <pubDate>Fri, 20 Mar 2026 07:12:47 +0530</pubDate>
      <guid>https://www.s-anand.net/blog/local-context-repositories-for-ai/</guid>
      <description>&lt;p&gt;When people ask me for connections, I share my &lt;a href=&#34;https://www.linkedin.com/mypreferences/d/download-my-data&#34;&gt;LinkedIn data&lt;/a&gt; and ask them to pick.&lt;/p&gt;
&lt;p&gt;This week, three people asked for AI ideas. I shared my local content with AI coding agents and asked them to pick.&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://files.s-anand.net/images/2026-03-20-local-context-repositories-for-ai.avif&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;STEP 1: Give access to content&lt;/strong&gt;. I use a &lt;a href=&#34;https://github.com/sanand0/scripts/blob/7e1dc00d7e1fa36a9949a1e061c1b529928cc175/dev.dockerfile&#34;&gt;Dockerfile&lt;/a&gt; and &lt;a href=&#34;https://github.com/sanand0/scripts/blob/7e1dc00d7e1fa36a9949a1e061c1b529928cc175/dev.sh&#34;&gt;script&lt;/a&gt; to isolate coding agents. To give access, I run:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;dev.sh -v /home/sanand/code/blog/:/home/sanand/code/blog/:ro &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       -v /home/sanand/code/til:/home/sanand/code/til:ro &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       -v /home/sanand/Dropbox/notes/transcripts:/home/sanand/Dropbox/notes/transcripts:ro
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;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.)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;STEP 2: Ask agents to scan content&lt;/strong&gt;. For &lt;a href=&#34;https://github.com/sanand0/talks/blob/c45b0e272708f82be50a1c48f10791bd0fee8e46/2026-03-18-iitm-office-of-institutional-advancement/prompts.md&#34;&gt;example&lt;/a&gt;, I ask it to read:&lt;/p&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Required blog posts related to LLMs &lt;code&gt;/home/sanand/code/blog/&lt;/code&gt; (especially with the category &lt;code&gt;llms&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Other relevant transcripts &lt;code&gt;/home/sanand/Dropbox/notes/transcripts&lt;/code&gt; (especially extracted AI advice at &lt;code&gt;/home/sanand/Dropbox/notes/transcripts/extracts/ai/&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Things I learnt at &lt;code&gt;/home/sanand/code/til/&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;This makes it explicitly aware of the content and can use it to answer questions.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;STEP 3: Help it do better&lt;/strong&gt;. I often add &amp;ldquo;Use sub-agents as required&amp;rdquo;, which reduces the context and lets them run more in parallel. I also point them to &lt;a href=&#34;https://github.com/sanand0/talks/blob/c45b0e272708f82be50a1c48f10791bd0fee8e46/2026-03-18-iitm-academic-council/ideas-post-mortem.md&#34;&gt;post-mortems&lt;/a&gt; for tips on scanning content effectively.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;STEP 4: Output as JSON&lt;/strong&gt;. JSON lets me write programs to convert to multiple other formats (e.g. HTML, markdown). I specify the fields I want, how I want them filled, and leave the rest to the agent. &lt;a href=&#34;https://github.com/sanand0/talks/blob/c45b0e272708f82be50a1c48f10791bd0fee8e46/2026-03-18-iitm-academic-council/ideas/ideas.json&#34;&gt;Sample output&lt;/a&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;This is not a new technique. It&amp;rsquo;s just context engineering, roughly like:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Connecting ChatGPT/Claude/Gemini/ to Dropbox/Google Drive/&amp;hellip; and asking it to read the content.&lt;/li&gt;
&lt;li&gt;Enabling web search and asking them to search online.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;But I can do this (kind of) safely on my local content and I can also teach it how to scan the content - which is a useful learning.&lt;/p&gt;
&lt;p&gt;Next steps:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Add README.md to each directory on how to scan the content effectively.&lt;/li&gt;
&lt;li&gt;Think about what content repositories I should add&lt;/li&gt;
&lt;li&gt;Explore &lt;em&gt;combining&lt;/em&gt; content repositories cleverly (e.g. &amp;ldquo;Read my blog and apply lessons to my code.&amp;rdquo;)&lt;/li&gt;
&lt;/ol&gt;
</description>
    </item>
    <item>
      <title>SearXNG and Vane</title>
      <link>https://www.s-anand.net/blog/searxng-and-vane/</link>
      <pubDate>Thu, 19 Mar 2026 15:40:25 +0530</pubDate>
      <guid>https://www.s-anand.net/blog/searxng-and-vane/</guid>
      <description>&lt;p&gt;While exploring &lt;a href=&#34;https://claude.ai/share/a7ae0d69-8c56-49a2-b6f2-1e3f4cd32937&#34;&gt;resonant computing tools&lt;/a&gt;, I discovered &lt;a href=&#34;https://searxng.org/&#34;&gt;SearXNG&lt;/a&gt;, a self-hostable metasearch engine, which aggregates results from multiple search engines.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;Searching for &amp;ldquo;Wikipedia&amp;rdquo; shows a Google-like results page.&#34; loading=&#34;lazy&#34; src=&#34;https://upload.wikimedia.org/wikipedia/commons/0/0a/SearXNG_Results_Page.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;Setting it up for API use seems easy (thought &lt;a href=&#34;https://gemini.google.com/share/33e8ed8dbc40&#34;&gt;Gemini got it wrong twice&lt;/a&gt;):&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cat &lt;span class=&#34;s&#34;&gt;&amp;lt;&amp;lt;EOF &amp;gt; settings.yml
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;use_default_settings: true
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;server:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;  secret_key: &amp;#34;local_dummy_secret_key_987654321&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;search:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;  formats:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;    - html
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;    - json
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;EOF&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker run -d &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -p 8080:8080 &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --name searxng &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -v &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;pwd&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;/settings.yml:/etc/searxng/settings.yml&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -e &lt;span class=&#34;s2&#34;&gt;&amp;#34;SEARXNG_BASE_URL=http://localhost:8080/&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -e &lt;span class=&#34;s2&#34;&gt;&amp;#34;SEARXNG_SERVER_LIMITER=false&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  searxng/searxng
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Now, you can run:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -s &lt;span class=&#34;s2&#34;&gt;&amp;#34;http://localhost:8080/search?q=best+sci-fi+books&amp;amp;format=json&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&amp;hellip; which returns a JSON like this:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-jsonc&#34; data-lang=&#34;jsonc&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;query&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;best sci-fi books&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;number_of_results&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;results&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nt&#34;&gt;&amp;#34;template&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;default.html&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nt&#34;&gt;&amp;#34;url&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;https://www.goodreads.com/list/show/19341.Best_Science_Fiction&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nt&#34;&gt;&amp;#34;title&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Best Science Fiction (3733 books) - Goodreads&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nt&#34;&gt;&amp;#34;content&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Other SF Lists of Note: ...&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nt&#34;&gt;&amp;#34;publishedDate&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;null&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nt&#34;&gt;&amp;#34;thumbnail&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;https://imgs.search.brave.com/...&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nt&#34;&gt;&amp;#34;engine&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;brave&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nt&#34;&gt;&amp;#34;parsed_url&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;https&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;www.goodreads.com&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;/list/show/19341.Best_Science_Fiction&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nt&#34;&gt;&amp;#34;img_src&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;https://imgs.search.brave.com/...&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nt&#34;&gt;&amp;#34;priority&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nt&#34;&gt;&amp;#34;engines&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;startpage&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;duckduckgo&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;brave&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nt&#34;&gt;&amp;#34;positions&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nt&#34;&gt;&amp;#34;score&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;7.5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nt&#34;&gt;&amp;#34;category&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;general&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;/// ...
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;suggestions&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;top 10 best sci-fi books of all time&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;// ...
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;unresponsive_engines&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;google&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;access denied&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;wikidata&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;timeout&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;There are many &lt;a href=&#34;https://searx.space/&#34;&gt;public SearXNG instances&lt;/a&gt;. Google seems to be blocked on many of these, but Brave, DuckDuckGo, and others seem to work fine.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;That leads me to &lt;a href=&#34;https://github.com/ItzCrazyKns/Vane&#34;&gt;Vane&lt;/a&gt; which is a self-hostable Perplexity clone! A hosted version is available at &lt;a href=&#34;https://perplexica.io/&#34;&gt;Perplexica.io&lt;/a&gt;.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-docker&#34; data-lang=&#34;docker&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker run -d -p 3000:3000 -v vane-data:/home/vane/data --name vane itzcrazykns1337/vane:latest&lt;span class=&#34;err&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;I tried a few questions and compared with Perplexity / Gemini using &lt;a href=&#34;https://developers.openai.com/api/docs/models/gpt-5-nano&#34;&gt;GPT-5 nano&lt;/a&gt; &amp;ndash; a &lt;em&gt;really&lt;/em&gt; cheap model.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;🟢 &lt;strong&gt;It solves multi-hop queries&lt;/strong&gt;. Which company acquired the data visualization firm Gramener in late 2023, and what is the current public stock ticker and market capitalization of that acquiring company?
&lt;ul&gt;
&lt;li&gt;A: The data-visualization firm Gramener was acquired in November 2023 by Straive. Straive is a private company owned by BPEA EQT, part of the EQT group. Because Straive is privately held, it does not have a public stock ticker, and its market capitalization is not publicly disclosed.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;🟢 &lt;strong&gt;It catches wrong questions&lt;/strong&gt;. Summarize the findings of the April 2025 paper &amp;lsquo;Agile Methodologies in High-Latency LLM Architectures&amp;rsquo; by Dr. Aris Thorne.
&lt;ul&gt;
&lt;li&gt;A: Hmm, sorry I could not find any relevant information on this topic. Would you like me to search again or ask something else?&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;🔴 &lt;strong&gt;It doesn&amp;rsquo;t get the latest data&lt;/strong&gt;. Summarize the latest blog post on my website s-anand.net.
&lt;ul&gt;
&lt;li&gt;A: I can do that. To ensure accuracy, I’ll need to fetch the latest post from s-anand.net and summarize it with key takeaways and insights. Would you like me to fetch the latest post directly from the site now, or you provide the post URL or paste the content here?&lt;/li&gt;
&lt;li&gt;Q: Fetch the latest post directly and give me a 1 para summary&lt;/li&gt;
&lt;li&gt;A: The latest post on s-anand.net is &amp;ldquo;Education Blog embeddings map,&amp;rdquo; published on Tue, 17 Mar 2026&amp;hellip;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Though Vane got the last question wrong, Perplexity and Gemini got it wrong as well! So I guess it&amp;rsquo;s a good, comparable alternative.&lt;/p&gt;
</description>
    </item>
    <item>
      <title>AI in SDLC at PyConf</title>
      <link>https://www.s-anand.net/blog/ai-in-sdlc-at-pyconf/</link>
      <pubDate>Thu, 19 Mar 2026 14:58:26 +0530</pubDate>
      <guid>https://www.s-anand.net/blog/ai-in-sdlc-at-pyconf/</guid>
      <description>&lt;p&gt;I was at a panel on &lt;a href=&#34;https://2026.pyconfhyd.org/&#34;&gt;AI in SDLC&lt;/a&gt; at PyConf. Here&amp;rsquo;s the summary of my advice:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Process&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Make AI your &lt;em&gt;entire&lt;/em&gt; SDLC loop. Record client calls, feed them to a coding agent to directly build &amp;amp; deploy the solution.&lt;/li&gt;
&lt;li&gt;Record your prompts, run post-mortems, and distill them into &lt;code&gt;SKILLS.md&lt;/code&gt; files for reuse.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Prompting&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ask AI to make output &lt;em&gt;more reviewable&lt;/em&gt;. Don&amp;rsquo;t waste time reviewing unclear output.&lt;/li&gt;
&lt;li&gt;Prefer &lt;em&gt;directional&lt;/em&gt; feedback (feeling, emotion, intent) over implementational.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Also&lt;/em&gt; give AI freedom to do things its way. Learn from that - you&amp;rsquo;ll be surprised.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Learning&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Prefer interns / outsiders over experts. They don&amp;rsquo;t slow the process with preconceptions and leverage AI better.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Stop&lt;/em&gt; learning what AI does well. Learn what AI fails at - using AI. Keep re-assessing these.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Adoption&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Developer using AI are &lt;em&gt;still&lt;/em&gt; accountable for their code. (Agents might become accountable in the future.)&lt;/li&gt;
&lt;li&gt;Start with new projects: less competition, fewer preconceptions, lower risk.&lt;/li&gt;
&lt;li&gt;Start in domains where failure is OK, rather than making AI safe enough for high-risk domains.&lt;/li&gt;
&lt;li&gt;Create safe spaces where hallucinations don&amp;rsquo;t matter and run experiments there to learn what AI can do.&lt;/li&gt;
&lt;li&gt;Plan for where AI&amp;rsquo;ll be a year later. It&amp;rsquo;s growing &lt;em&gt;very&lt;/em&gt; rapidly.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The full details of the panel discussion are at &lt;a href=&#34;https://sanand0.github.io/talks/2026-03-15-pyconf-ai-in-sdlc/&#34;&gt;Who Owns the Commit?&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://sanand0.github.io/talks/2026-03-15-pyconf-ai-in-sdlc/sketchnote.avif&#34;&gt;&lt;/p&gt;
</description>
    </item>
  </channel>
</rss>
