<?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>presentations on S Anand</title>
    <link>https://www.s-anand.net/blog/tag/presentations/</link>
    <description>Recent content in presentations on S Anand</description>
    <generator>Hugo -- 0.156.0</generator>
    <language>en-us</language>
    <lastBuildDate>Sat, 11 Jul 2026 11:56:37 +0530</lastBuildDate>
    <atom:link href="https://www.s-anand.net/blog/tag/presentations/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>The Curator&#39;s Dilemma - VizChitra 2026</title>
      <link>https://www.s-anand.net/blog/the-curator-s-dilemma-vizchitra-2026/</link>
      <pubDate>Sat, 11 Jul 2026 11:56:37 +0530</pubDate>
      <guid>https://www.s-anand.net/blog/the-curator-s-dilemma-vizchitra-2026/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://sanand0.github.io/talks/2026-07-04-vizchitra-dialog-curators-dilemma/summary.avif&#34;&gt;&lt;/p&gt;
&lt;p&gt;Last week at VizChitra, I ran a &amp;ldquo;Dialogue&amp;rdquo; session. A new format for me.&lt;br&gt;
I usually speak 80% in my workshops.&lt;br&gt;
In this dialog, I spoke 20%.&lt;br&gt;
The group discussed.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;PART A&lt;/strong&gt;&lt;br&gt;
I showed 6 charts and said, &amp;ldquo;Pick the best.&amp;rdquo;&lt;br&gt;
Then I shared the audience &amp;amp; purpose and asked:&lt;br&gt;
&amp;ldquo;For THIS audience and purpose, will you publish, fix, or kill it?&amp;rdquo;&lt;br&gt;
INSIGHT: almost no one said, &amp;ldquo;Ship&amp;rdquo;. That&amp;rsquo;s good &amp;ndash; these were all drafts.&lt;/p&gt;
&lt;p&gt;I also asked, &amp;ldquo;How will you verify it?&amp;rdquo;&lt;br&gt;
No one knew.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;PART B&lt;/strong&gt;&lt;br&gt;
I rotated the groups and asked them to critique the other groups&amp;rsquo; critique.&lt;br&gt;
That&amp;rsquo;s when I learnt that even internally, groups were divided.&lt;br&gt;
It didn&amp;rsquo;t come out when they could only share ONE verdict.&lt;br&gt;
It DID come out when discussing across two groups.&lt;br&gt;
That was my biggest surprise - AHA moment.&lt;br&gt;
Independent verification matters!&lt;/p&gt;
&lt;p&gt;I asked them to share their final verdict:&lt;br&gt;
&amp;ldquo;Which chart will you put your name against?&amp;rdquo;&lt;/p&gt;
&lt;p&gt;The top-voted chart chart was 100% AI generated.&lt;br&gt;
It was, also, something the Times of India &lt;em&gt;literally&lt;/em&gt; published.&lt;/p&gt;
&lt;p&gt;My takeaways:&lt;/p&gt;
&lt;p&gt;We don&amp;rsquo;t really know how to verify charts.&lt;br&gt;
We don&amp;rsquo;t agree on whether a given chart fits a given purpose.&lt;br&gt;
We don&amp;rsquo;t often see disagreement, especially since we often ask for ONE opinion.&lt;/p&gt;
&lt;p&gt;Full story: &lt;a href=&#34;https://sanand0.github.io/talks/2026-07-04-vizchitra-dialog-curators-dilemma/&#34;&gt;https://sanand0.github.io/talks/2026-07-04-vizchitra-dialog-curators-dilemma/&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;PS: This post is 100% human generated. I mean, I wrote every word, without even consulting an LLM. &lt;a href=&#34;https://www.pangram.com/&#34;&gt;Pangram&lt;/a&gt; declared it 100% human-generated. Still, I can&amp;rsquo;t shake that feeling&amp;hellip; that it smells AI-generated. Does this have a name?&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>Using browser tabs as slides</title>
      <link>https://www.s-anand.net/blog/using-browser-tabs-as-slides/</link>
      <pubDate>Sat, 14 Feb 2026 17:12:20 +0800</pubDate>
      <guid>https://www.s-anand.net/blog/using-browser-tabs-as-slides/</guid>
      <description>&lt;p&gt;My last two presentations used browser tabs as slides.&lt;/p&gt;
&lt;p&gt;For my talk last week titled &lt;a href=&#34;https://sanand0.github.io/talks/2026-02-11-amat-dt-day/&#34;&gt;Your &lt;em&gt;Chotu&lt;/em&gt; Is Smarter Than You Think&lt;/a&gt;, I planned to show a series of examples. I loaded them all in a browser window as tabs like this:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&#34;https://www.s-anand.net/blog/llm-escapades-in-a-toilet/&#34;&gt;How I use AI to navigate toilets&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://chatgpt.com/share/698c125b-c4b0-800c-8006-9c92a24c4e9e&#34;&gt;How I use AI for food recommendation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://chatgpt.com/share/698c1290-dc08-800c-8011-88c021e25c3c&#34;&gt;How I use AI for book suggestions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://sanand0.github.io/datastories/gdpval/&#34;&gt;What else I can use AI for&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&amp;hellip;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Once loaded, I can press Ctrl+PgDn to move to the next - just like I&amp;rsquo;d press the right arrow key in a slide deck. I can also use the mouse to click on the tab if I want to jump around.&lt;/p&gt;
&lt;p&gt;But there&amp;rsquo;s &lt;em&gt;one&lt;/em&gt; advantage I missed from slides. I can add title slides, section dividers, etc.&lt;/p&gt;
&lt;p&gt;Since web pages are so versatile, I vibe-coded a &lt;a href=&#34;https://tools.s-anand.net/slide/&#34;&gt;slide tool&lt;/a&gt; by &lt;a href=&#34;https://github.com/sanand0/tools/pull/97&#34;&gt;roughly saying&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Give me a single page &amp;ldquo;slide&amp;rdquo; tool&lt;/li&gt;
&lt;li&gt;Let me edit the title, subtitle, fonts, colors, backgrounds, etc. via a (barely visible) button on the top right&lt;/li&gt;
&lt;li&gt;Store this in the URL so I can bookmark and share it&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;(&lt;strong&gt;Note&lt;/strong&gt;: I had 5 min on 4% battery and my laptop couldn&amp;rsquo;t connect to the Internet. This was voice vibe-coded on the web and the PR accepted without review.)&lt;/p&gt;
&lt;p&gt;That let me create a &lt;em&gt;far&lt;/em&gt; richer presentation.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&#34;https://tools.s-anand.net/slide/#title=I+use+AI+like+an+intern&amp;amp;subtitle=A+%22chotu%22.+Plumber.+Waiter.+Secretary.+Banker.&amp;amp;font=Montserrat&amp;amp;scale=6.3&amp;amp;fgColor=%23ffffff&amp;amp;bgColor=%231a1a2e&amp;amp;bgSearch=https%3A%2F%2Fimages.unsplash.com%2Fphoto-1760978632114-0939f0d60045%3Fq%3D80%26w%3D1528%26auto%3Dformat%26fit%3Dcrop%26ixlib%3Drb-4.1.0%26ixid%3DM3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%253D%253D&#34;&gt;🟢 &lt;strong&gt;SLIDE&lt;/strong&gt; I use AI like an intern&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.s-anand.net/blog/llm-escapades-in-a-toilet/&#34;&gt;Like a plumber, to navigate toilets&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://chatgpt.com/share/698c125b-c4b0-800c-8006-9c92a24c4e9e&#34;&gt;Like a waiter, for food recommendation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://chatgpt.com/share/698c1290-dc08-800c-8011-88c021e25c3c&#34;&gt;Like a secretary, for book suggestions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://tools.s-anand.net/slide/#title=Use+_paid_+AI&amp;amp;subtitle=Buy+_any_+PAID+subscription+to+ChatGPT%2C+Gemini%2C+or+Claude+and+keep+it+in+your+phone.&amp;amp;font=Montserrat&amp;amp;scale=6.3&amp;amp;fgColor=%23ffffff&amp;amp;bgColor=%231a1a2e&amp;amp;bgSearch=https%3A%2F%2Fimages.pexels.com%2Fphotos%2F2387819%2Fpexels-photo-2387819.jpeg&#34;&gt;🟢 &lt;strong&gt;SLIDE&lt;/strong&gt; Use Paid AI. ANY Paid AI is the best ROI you get&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://sanand0.github.io/datastories/gdpval/&#34;&gt;You can hire AI for many services&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://tools.s-anand.net/slide/#title=Over-use+it.%5C%0AUnder-use+is+riskier%21&amp;amp;subtitle=You+_will_+lose+skills.+Like+long+division+and+hunting.%5C%0ALearn+new+ones.+Have+50+chats+%2F+day.&amp;amp;font=Montserrat&amp;amp;scale=6.3&amp;amp;fgColor=%23ffffff&amp;amp;bgColor=%231a1a2e&amp;amp;bgSearch=https%3A%2F%2Fimages.unsplash.com%2Fphoto-1760978632114-0939f0d60045%3Fq%3D80%26w%3D1528%26auto%3Dformat%26fit%3Dcrop%26ixlib%3Drb-4.1.0%26ixid%3DM3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%253D%253D&#34;&gt;🟢 &lt;strong&gt;SLIDE&lt;/strong&gt; Under-using AI is more dangerous than over-using&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&amp;hellip; and so on.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img alt=&#34;Here&amp;rsquo;s what the full presentation looked like&#34; loading=&#34;lazy&#34; src=&#34;https://files.s-anand.net/images/2026-02-14-slide-tool.webp&#34;&gt;&lt;/p&gt;
&lt;p&gt;The &amp;ldquo;slides&amp;rdquo; allow me to add structure and remind the audience and me about the key points.&lt;/p&gt;
&lt;p&gt;For all the bad press PowerPoint receives, I don&amp;rsquo;t think presentations are a bad format. But today, there are so many more ways of presenting that using slideshow software seems a bit outdated.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;UPDATE 18 Jun 2026&lt;/strong&gt;: My talks in the last few months use this technique almost without exception.&lt;/p&gt;
</description>
    </item>
    <item>
      <title>AfterSlides: Write Slides After Talks</title>
      <link>https://www.s-anand.net/blog/afterslides-write-slides-after-talks/</link>
      <pubDate>Sat, 20 Sep 2025 10:47:56 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/afterslides-write-slides-after-talks/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;AfterSlides: Write Slides After Talks&#34; loading=&#34;lazy&#34; src=&#34;https://www.s-anand.net/blog/assets/image-10.webp&#34;&gt;&lt;/p&gt;
&lt;p&gt;25 years ago, Mr. Krishnan (IAS) amused us with anecdotes of bureaucrats writing meeting minutes &lt;strong&gt;before&lt;/strong&gt; the meeting.&lt;/p&gt;
&lt;p&gt;This week, I flipped that. I wrote slides &lt;strong&gt;after&lt;/strong&gt; the talk. I call them &lt;strong&gt;AfterSlides&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Why.&lt;/strong&gt; I ran a couple of Ask-Me-Anything (AMA) sessions where the audience set the agenda. I learned their interests. They got answers. No slides prepared.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;How.&lt;/strong&gt; I okayed recording with the organizers, recorded on my phone, transcribed with Gemini, and asked ChatGPT to generate the AfterSlides.&lt;/p&gt;
&lt;p&gt;Here are a few AfterSlides from AMAs at:&lt;/p&gt;
&lt;p&gt;GALE: &lt;a href=&#34;https://sanand0.github.io/talks/2025-09-15-llm-ama-gale/&#34;&gt;https://sanand0.github.io/talks/2025-09-15-llm-ama-gale/&lt;/a&gt;&lt;br&gt;
BI Worldwide: &lt;a href=&#34;https://sanand0.github.io/talks/2025-09-18-llm-ama-bi-worldwide/&#34;&gt;https://sanand0.github.io/talks/2025-09-18-llm-ama-bi-worldwide/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I see potential for this in:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Education.&lt;/strong&gt; Turn teacher lectures into AfterSlides students can revise. Add a quiz.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Management.&lt;/strong&gt; Turn reviews into AfterSlides for reference and action.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sales.&lt;/strong&gt; Turn pitches into Afterslides for clients to revisit&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Research.&lt;/strong&gt; Turn interviews into evidence AfterSlides with citations.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Support.&lt;/strong&gt; Turn calls into policy/FAQ slides your team can search.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;There&amp;rsquo;s &lt;strong&gt;derived&lt;/strong&gt; content that LLMs can generate.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Quizzes.&lt;/strong&gt; Non-trivial questions to test understanding.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Errata.&lt;/strong&gt; Fact-check, cite sources, add confidence.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Counterpoints.&lt;/strong&gt; Add credible alternative views with references.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Feedback.&lt;/strong&gt; What worked, what to improve.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Prompts I used.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Transcription: &lt;a href=&#34;https://github.com/sanand0/prompts/blob/main/transcribe-talk.md&#34;&gt;https://github.com/sanand0/prompts/blob/main/transcribe-talk.md&lt;/a&gt;&lt;br&gt;
AfterSlides: &lt;a href=&#34;https://github.com/sanand0/prompts/blob/main/afterslides.md&#34;&gt;https://github.com/sanand0/prompts/blob/main/afterslides.md&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;If you try this and find new uses for AfterSlides, please share!&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.linkedin.com/posts/sanand0_25-years-ago-mr-krishnan-ias-amused-us-activity-7375385816971268096-UnfR&#34;&gt;LinkedIn&lt;/a&gt;&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Command Line Slideshows in Bash</title>
      <link>https://www.s-anand.net/blog/command-line-slideshows-in-bash/</link>
      <pubDate>Wed, 26 Feb 2025 02:29:42 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/command-line-slideshows-in-bash/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;Command Line Slideshows in Bash&#34; loading=&#34;lazy&#34; src=&#34;https://www.s-anand.net/blog/assets/C__Downloads_7Xp8rR2uJjXtGXHKSwylyPkja.webp&#34;&gt;&lt;/p&gt;
&lt;p&gt;At &lt;a href=&#34;https://2025.pyconfhyd.org/&#34;&gt;PyConf Hyderabad&lt;/a&gt;, I spoke about &lt;a href=&#34;https://2025.pyconfhyd.org/speakers/s-anand&#34;&gt;uv&lt;/a&gt;. It&#39;s a package manager for Python.&lt;/p&gt;
&lt;p&gt;I usually &lt;em&gt;mix live demos&lt;/em&gt; into my narrative. So, rather than present with something static like PowerPoint (or Google Slides), I usually use:&lt;/p&gt;
&lt;ul class=&#34;wp-block-list&#34;&gt;
&lt;li&gt;&lt;strong&gt;Front-end&lt;/strong&gt;: Custom HTML mixed with &lt;a href=&#34;https://revealjs.com/&#34;&gt;RevealJS&lt;/a&gt; and &lt;a href=&#34;https://codepen.io/&#34;&gt;CodePen&lt;/a&gt;. &lt;a href=&#34;https://observablehq.com/&#34;&gt;Observable&lt;/a&gt; is a good, too.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Python&lt;/strong&gt;: &lt;a href=&#34;https://jupyter.org/&#34;&gt;Jupyter Notebooks&lt;/a&gt;. &lt;a href=&#34;https://marimo.com/&#34;&gt;Marimo&lt;/a&gt; is good, too.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Others&lt;/strong&gt;: &lt;a href=&#34;https://www.markdownguide.org/&#34;&gt;Markdown&lt;/a&gt; and &lt;a href=&#34;https://code.visualstudio.com/&#34;&gt;VS Code&lt;/a&gt; for most other things, e.g. SQL.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For this talk, I needed to run commands on the shell. I evaluated:&lt;/p&gt;
&lt;ul class=&#34;wp-block-list&#34;&gt;
&lt;li&gt;&lt;strong&gt;VS Code + Terminal&lt;/strong&gt;. Split screen is good. But slides in VS code were not obvious.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Web App&lt;/strong&gt;. Write a web shell with &lt;a href=&#34;https://xtermjs.org/&#34;&gt;xterm.js&lt;/a&gt; and &lt;a href=&#34;https://www.npmjs.com/package/node-pty&#34;&gt;node-pty&lt;/a&gt; and embed it in RevealJS. But it&#39;s too much work.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Web terminals&lt;/strong&gt;: &lt;a href=&#34;https://github.com/butlerx/wetty&#34;&gt;WeTTY&lt;/a&gt;, &lt;a href=&#34;https://github.com/tsl0922/ttyd&#34;&gt;ttyd&lt;/a&gt;, &lt;a href=&#34;https://github.com/yudai/gotty&#34;&gt;GoTTY&lt;/a&gt;, etc. But they struggle on Windows. I&#39;d need WSL or Docker.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;https://asciinema.org/&#34;&gt;Asciinema&lt;/a&gt;&lt;/strong&gt;. But it&#39;s not interactive.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So I &lt;a href=&#34;https://chatgpt.com/share/67b83b6f-30d8-800c-9ea2-549bffc645e0&#34;&gt;got ChatGPT to write me an app&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;Write a modern, compact Python program that parses a Markdown file and renders it section-by-section colorfully on the terminal.
&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;A &amp;#34;section&amp;#34; is any text beginning with a heading until the next heading.
&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;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; uv run talk.py script.md should parse script.md and render the first section.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; Running uv run talk.py should render the next section. And so on.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; If no further sections are found, it should say so and end.
&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;When rendering on the terminal,
&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;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; Headings should be very prominent. Highlight H1, H2 and H3 in decreasing order of prominence. Rest can be rendered normally
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; **Bold** should be prominent. &lt;span class=&#34;ge&#34;&gt;_Italics_&lt;/span&gt; should be mildly emphasized.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; Code blocks and
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  code fences
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  should be colored distinctly.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; [&lt;span class=&#34;nt&#34;&gt;Links&lt;/span&gt;](&lt;span class=&#34;na&#34;&gt;...&lt;/span&gt;) should be colored distinctly but the URLs can be ignored.
&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;Use inline script dependencies. I think using rich and markdown2 would apt but you can decide.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;blockquote class=&#34;wp-block-quote&#34;&gt;
&lt;p&gt;&lt;strong&gt;An aside&lt;/strong&gt;. These days, it&#39;s easier to &lt;em&gt;create&lt;/em&gt; small tools than &lt;em&gt;search&lt;/em&gt; for something that exists.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The &lt;a href=&#34;https://github.com/sanand0/uv-mega/blob/523a08bb8fae3246a35b55d39ffc5f93b1a7bf37/slide.py&#34;&gt;code it wrote&lt;/a&gt; works like this.&lt;/p&gt;
&lt;ol class=&#34;wp-block-list&#34;&gt;
&lt;li&gt;Write a Markdown file that has my &#34;slides&#34;. I used this &lt;a href=&#34;https://github.com/sanand0/uv-mega/blob/523a08bb8fae3246a35b55d39ffc5f93b1a7bf37/README.md&#34;&gt;README.md&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Run &lt;code&gt;slide.py README.md&lt;/code&gt;. It shows the first section (&#34;slide&#34;) in &lt;code&gt;README.md&lt;/code&gt;, colored and highlighted, and &lt;em&gt;exits&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;I can run any other commands on my shell, e.g. &lt;code&gt;uv run --with pandas,ipython ipython&lt;/code&gt;, and show how it works.&lt;/li&gt;
&lt;li&gt;Run &lt;code&gt;slide.py&lt;/code&gt; again. It clears the screen and shows the next slide.&lt;/li&gt;
&lt;/ol&gt;
&lt;script async=&#34;true&#34; id=&#34;asciicast-7Xp8rR2uJjXtGXHKSwylyPkja&#34; src=&#34;https://asciinema.org/a/7Xp8rR2uJjXtGXHKSwylyPkja.js&#34;&gt;&lt;/script&gt;
&lt;p&gt;This allowed me a new kind of workflow, where the &lt;em&gt;shell itself&lt;/em&gt; is the slides layer.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;comments&#34;&gt;Comments&lt;/h2&gt;
&lt;!-- wp-comments-start --&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;https://www.s-anand.net/blog/voice-coding-is-the-new-live-coding/&#34;&gt;Voice coding is the new live coding - S Anand&lt;/a&gt;&lt;/strong&gt; &lt;em&gt;21 Sep 2025 4:48 pm&lt;/em&gt; &lt;em&gt;(pingback)&lt;/em&gt;:
[…] In Feb 2025 at PyConf Hyderabad, I tried a new slide format: command-line slideshows in bash. […]&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- wp-comments-end --&gt;
</description>
    </item>
    <item>
      <title>Clone any voice with a 15-second sample</title>
      <link>https://www.s-anand.net/blog/clone-any-voice-with-a-15-second-sample/</link>
      <pubDate>Thu, 24 Oct 2024 01:36:21 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/clone-any-voice-with-a-15-second-sample/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;Clone any voice with a 15-second sample&#34; loading=&#34;lazy&#34; src=&#34;https://www.s-anand.net/blog/assets/calvin-voice-cloning.webp&#34;&gt;&lt;/p&gt;
&lt;p&gt;It&#39;s surprisingly easy to clone a voice using &lt;a href=&#34;https://github.com/SWivid/F5-TTS&#34;&gt;F5-TTS&lt;/a&gt;: &#34;A Fairytaler that Fakes Fluent and Faithful Speech with Flow Matching&#34;.&lt;/p&gt;
&lt;p&gt;Here&#39;s a clip of me, saying:&lt;/p&gt;
&lt;blockquote class=&#34;wp-block-quote&#34;&gt;
&lt;p&gt;I think Taylor Swift is the best singer. I&#39;ve attended every one of her concerts and in fact, I&#39;ve even proposed to her once. Don&#39;t tell anyone.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;(Which is ironic since I didn&#39;t know who she was until this year and I still haven&#39;t seen or heard her.)&lt;/p&gt;
&lt;figure class=&#34;wp-block-audio&#34;&gt;&lt;audio controls=&#34;&#34; src=&#34;https://www.s-anand.net/blog/assets/anand-proposes-to-taylor-swift.opus&#34;&gt;&lt;/audio&gt;&lt;/figure&gt;
&lt;p&gt;You&#39;ll notice that my voice is a bit monotic. That&#39;s because I trained it on a segment of my talk that&#39;s monotonic.&lt;/p&gt;
&lt;figure class=&#34;wp-block-audio&#34;&gt;&lt;audio controls=&#34;&#34; src=&#34;https://www.s-anand.net/blog/assets/anand.opus&#34;&gt;&lt;/audio&gt;&lt;/figure&gt;
&lt;p&gt;&lt;a href=&#34;https://colab.research.google.com/drive/1YEMIdby-Nr--ox2-Wl5Racb5f0ncpqRu?usp=sharing&#34;&gt;&lt;strong&gt;Here&#39;s the code&lt;/strong&gt;&lt;/a&gt;. You can run this on Google Colab for free.&lt;/p&gt;
&lt;p&gt;A few things to keep in mind when preparing the audio.&lt;/p&gt;
&lt;ol class=&#34;wp-block-list&#34;&gt;
&lt;li&gt;Keep the input to just under 15 seconds. That&#39;s the optimal length&lt;/li&gt;
&lt;li&gt;For expressive output, use an input with a broad range of voice emotions&lt;/li&gt;
&lt;li&gt;When using unusual words (e.g. LLM), including the word in your sample helps&lt;/li&gt;
&lt;li&gt;Transcribe &lt;code&gt;input.txt&lt;/code&gt; &lt;em&gt;manually&lt;/em&gt; to get it right, though &lt;a href=&#34;https://huggingface.co/openai/whisper-large-v3&#34;&gt;Whisper&lt;/a&gt; is fine to clone in bulk. (But then, who are you and &lt;em&gt;what&lt;/em&gt; are you doing?)&lt;/li&gt;
&lt;li&gt;Sometimes, each chunk of audio generated has a second of audio from the original interspersed. I don&#39;t know why. Maybe a second of silence at the end helps&lt;/li&gt;
&lt;li&gt;Keep punctuation simple in the generated text. For example, avoid hyphens like &#34;This is obvious - don&#39;t try it.&#34; Use &#34;This is obvious, don&#39;t try it.&#34; instead.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This has a number of uses I can think of (er... ChatGPT can think of), but the ones I find most interesting are:&lt;/p&gt;
&lt;ol class=&#34;wp-block-list&#34;&gt;
&lt;li&gt;&lt;strong&gt;Author-narrated audio books&lt;/strong&gt;. I&#39;m sure this is coming soon, if it&#39;s not already there.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Personalized IVR&lt;/strong&gt;. Why should &lt;em&gt;my&lt;/em&gt; IVR speak in some &lt;em&gt;other&lt;/em&gt; robot&#39;s voice? Let&#39;s use mine. (This has some prank potential.)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Annotated presentations&lt;/strong&gt;. I&#39;m too lazy to speak. Typing is easier. This lets me create, for example, slide decks with my voice, but with &lt;em&gt;editing made super-easy&lt;/em&gt;. I just change the text and the audio changes.&lt;/li&gt;
&lt;/ol&gt;
</description>
    </item>
    <item>
      <title>Things I Learned - 23 Jun 2024</title>
      <link>https://www.s-anand.net/blog/things-i-learned-23-jun-2024/</link>
      <pubDate>Sun, 23 Jun 2024 00:00:00 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/things-i-learned-23-jun-2024/</guid>
      <description>&lt;p&gt;This week, I learned:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://lumalabs.ai/dream-machine/&#34;&gt;Luma Labs Dream Machine&lt;/a&gt; generated videos. It&amp;rsquo;s free and is of reasonable quality. Update: 6 Jun 2025. Costs $10/month&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/Zjh-819/LLMDataHub&#34;&gt;LLM DataHub&lt;/a&gt; has LLM training datasets, regularly updated&lt;/li&gt;
&lt;li&gt;From Dan Becker on running a workshop
&lt;ul&gt;
&lt;li&gt;Answer questions at the end, not in parallel in a chat, to avoid distraction&lt;/li&gt;
&lt;li&gt;Have fewer words in slides when presenting. It&amp;rsquo;s less distracting&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Morgan Housel Shane Parrish podcast
&lt;ul&gt;
&lt;li&gt;Risk is what stops you from achieving YOUR goals. What&amp;rsquo;s risky for me may not be risky for you&lt;/li&gt;
&lt;li&gt;The lesson from compounding is that you want to optimize for duration, not return. That&amp;rsquo;s what does the heavy lifting. Survival, consistency, long term - these matter. The performance does NOT matter.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    <item>
      <title>Top 10 IT Google Videos</title>
      <link>https://www.s-anand.net/blog/top-10-it-google-videos/</link>
      <pubDate>Sun, 25 Dec 2005 12:00:00 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/top-10-it-google-videos/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://chir.ag/tech/?36&#34;&gt;Top 10 IT Google Videos&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
  </channel>
</rss>
