<?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>ai-workflows on S Anand</title>
    <link>https://www.s-anand.net/blog/tag/ai-workflows/</link>
    <description>Recent content in ai-workflows on S Anand</description>
    <generator>Hugo -- 0.156.0</generator>
    <language>en-us</language>
    <lastBuildDate>Mon, 23 Mar 2026 16:03:18 +0530</lastBuildDate>
    <atom:link href="https://www.s-anand.net/blog/tag/ai-workflows/index.xml" rel="self" type="application/rss+xml" />
    <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>AI video compression</title>
      <link>https://www.s-anand.net/blog/ai-video-compression/</link>
      <pubDate>Sat, 28 Feb 2026 09:18:56 +0800</pubDate>
      <guid>https://www.s-anand.net/blog/ai-video-compression/</guid>
      <description>&lt;p&gt;I recorded a short screen cast of a demo I built. It was ~900KB - way too large to publish as a thumbnail. So I asked ChatGPT:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;What&amp;rsquo;s the best equivalent of squoosh.app for WEBM compression? I&amp;rsquo;m looking for a free modern high-quality online video compressor.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;There are a few, and they compressed it to a third of its size, but 300KB is still too large. So I attached the original and asked:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I am compressing screenshots like this. They&amp;rsquo;re often not large. I don&amp;rsquo;t mind cropping the edges by a few pixels to make it a multiple 2, 4, or 8 if that&amp;rsquo;ll help. I certainly am OK with a lower frame rate. I&amp;rsquo;d like an image quality that a human eye can just SLIGHTLY detect as worse than the original, but only VERY SLIGHTLY.&lt;/p&gt;
&lt;p&gt;What&amp;rsquo;s the best way of using ffmpeg or similar tools to compress such a file?&lt;/p&gt;
&lt;p&gt;Think like an expert:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;What would an expert in this field check that beginners would miss?&lt;/li&gt;
&lt;li&gt;What patterns would an expert in this field recognize that beginners would miss?&lt;/li&gt;
&lt;li&gt;In this context, what questions would an expert ask that a beginner would not know to?&lt;/li&gt;
&lt;li&gt;If this goes wrong, what are the most likely reasons?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;hellip; and list the best (diverse, testing different hypotheses) compression command options.&lt;/p&gt;
&lt;p&gt;Run them on this video and let me download the resulting videos for visual comparison. Interview me. Give me a list of questions that I can easily answer by looking at the videos and I&amp;rsquo;ll share those with you to help you decide the best compression command for me.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This leverages 3 tricks.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;These are online coding agents. So they can write &lt;em&gt;and&lt;/em&gt; run code.&lt;/li&gt;
&lt;li&gt;The &amp;ldquo;Think like an expert&amp;rdquo; prompt is my new &amp;ldquo;Think step by step&amp;rdquo; prompt and works quite well.&lt;/li&gt;
&lt;li&gt;The &amp;ldquo;Interview me&amp;rdquo; prompt is another powerful one that helps me apply preferences &amp;ndash; and &lt;a href=&#34;https://www.s-anand.net/blog/how-to-develop-taste/&#34;&gt;develop taste&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;a href=&#34;https://claude.ai/share/73d1caae-4e4e-4c1b-8984-44ac3e86f7cf&#34;&gt;Claude&lt;/a&gt; did a good job of showing different versions and compressing it, but as expected, &lt;a href=&#34;https://chatgpt.com/share/69a24385-87b8-8003-8f41-cb3757a62d13&#34;&gt;ChatGPT&lt;/a&gt; was the obsessive perfectionist. It gave me a huge set of variations of:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Files sizes&lt;/li&gt;
&lt;li&gt;Compression formats (VP9: more compatible vs AV1: better compression)&lt;/li&gt;
&lt;li&gt;Quality settings (CRF)&lt;/li&gt;
&lt;li&gt;Frame rates (FPS)&lt;/li&gt;
&lt;li&gt;Color formats (YUV420p vs YUV444p)&lt;/li&gt;
&lt;li&gt;Compression effort (presets)&lt;/li&gt;
&lt;li&gt;etc.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;hellip; and asked me to compare between them, like these:&lt;/p&gt;
&lt;div style=&#34;display:flex; gap:12px; flex-wrap:nowrap; align-items:flex-start;&#34;&gt;
  &lt;figure style=&#34;margin:0; text-align:center;&#34;&gt;
    &lt;video src=&#34;https://files.s-anand.net/images/2026-02-28-sql-screencast-crf45-fps15.webm&#34; autoplay loop muted playsinline preload=&#34;metadata&#34; width=&#34;230&#34;&gt;&lt;/video&gt;
    &lt;figcaption&gt;crf: 45 fps: 15 (93K)&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;figure style=&#34;margin:0; text-align:center;&#34;&gt;
    &lt;video src=&#34;https://files.s-anand.net/images/2026-02-28-sql-screencast-crf50-fps15.webm&#34; autoplay loop muted playsinline preload=&#34;metadata&#34; width=&#34;230&#34;&gt;&lt;/video&gt;
    &lt;figcaption&gt;crf: 50 fps: 15 (69K)&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;figure style=&#34;margin:0; text-align:center;&#34;&gt;
    &lt;video src=&#34;https://files.s-anand.net/images/2026-02-28-sql-screencast-crf55-fps5.webm&#34; autoplay loop muted playsinline preload=&#34;metadata&#34; width=&#34;230&#34;&gt;&lt;/video&gt;
    &lt;figcaption&gt;crf: 55 fps: 5 (23K)&lt;/figcaption&gt;
  &lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;The final result is this script:&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;ffmpeg -hide_banner -stats -v warning -i &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$input&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&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;  -vf &lt;span class=&#34;s2&#34;&gt;&amp;#34;crop=iw-mod(iw\,2):ih-mod(ih\,2),fps=&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$fps&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&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;  -c:v libsvtav1 -preset &lt;span class=&#34;m&#34;&gt;8&lt;/span&gt; -crf &lt;span class=&#34;nv&#34;&gt;$crf&lt;/span&gt; -pix_fmt yuv420p &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;  -an &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$output&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&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 does the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Crops the video to a multiple of 2 (which is required for some compression formats)&lt;/li&gt;
&lt;li&gt;Sets the frame rate to a lower value (which reduces file size)&lt;/li&gt;
&lt;li&gt;Uses the AV1 codec (which has better compression than VP9)&lt;/li&gt;
&lt;li&gt;Sets the CRF (Constant Rate Factor) to a value that balances quality and file size&lt;/li&gt;
&lt;li&gt;Sets the pixel format to YUV420p (which is more compatible with players)&lt;/li&gt;
&lt;li&gt;Disables audio (which is not needed for a screencast)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I realized that for the resolution I&amp;rsquo;ll likely see this at, very low frame rates (5 fps) and poor compressions (CRF 55) are good enough.&lt;/p&gt;
&lt;p&gt;My original video was 912KB. The smallest video that looks good enough for me is 23 KB. That&amp;rsquo;s almost a &lt;strong&gt;40x compression&lt;/strong&gt; - small enough to &lt;a href=&#34;https://sanand0.github.io/datastories/sql-migration/&#34;&gt;publish in my data story&lt;/a&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Things I&amp;rsquo;m taking away:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Use AI to discover the best configurations for your tool&lt;/li&gt;
&lt;li&gt;Interview yourself to apply preferences and develop taste&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    <item>
      <title>When to use which Gemini mode</title>
      <link>https://www.s-anand.net/blog/when-to-use-which-gemini-mode/</link>
      <pubDate>Mon, 02 Feb 2026 08:15:16 +0800</pubDate>
      <guid>https://www.s-anand.net/blog/when-to-use-which-gemini-mode/</guid>
      <description>&lt;p&gt;I continue to be impressed by Gemini 3 and it&amp;rsquo;s become my default agent. It writes in simpler language than ChatGPT (almost as eloquent as Claude), has much larger limits, and, of course, is &lt;a href=&#34;https://www.s-anand.net/blog/gemini-copies-images-almost-perfectly/&#34;&gt;unbeaten at generating images&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The Gemini app has 3 modes: Fast, Thinking, and Pro. Here&amp;rsquo;s when to use each:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Simple task&lt;/strong&gt;, e.g., grammar check, translate, summarize, or basic question? Use &lt;strong&gt;Fast&lt;/strong&gt;. Pro overthinks.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Multi-step logic&lt;/strong&gt;, e.g., planning a trip with constraints, checking 15 emails, or identifying a subtle error in code? Use &lt;strong&gt;Thinking&lt;/strong&gt;. Flash-based thinking beats Pro.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Large input&lt;/strong&gt;, e.g. 300-page PDF, 2 hours of video, etc.? Use &lt;strong&gt;Pro&lt;/strong&gt;. It uses the 1M+ token window well.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Complex problem&lt;/strong&gt;, e.g. PhD-level science or a legal contract review, with high stakes? Use &lt;strong&gt;Pro&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;If you hit your Pro limit (which is pretty high!), just switch to &lt;strong&gt;Thinking&lt;/strong&gt;, which is smart enough for most jobs anyway.&lt;/p&gt;
&lt;p&gt;Source: &lt;a href=&#34;https://gemini.google.com/share/bdf6152e772d&#34;&gt;Gemini&lt;/a&gt;&lt;/p&gt;
&lt;!-- https://gemini.google.com/app/6ef55d7f7b2d0c57 --&gt;
</description>
    </item>
    <item>
      <title>How to Organize Browser Workspaces with LLMs and Data</title>
      <link>https://www.s-anand.net/blog/how-to-organize-browser-workspaces-with-llms-and-data/</link>
      <pubDate>Mon, 07 Apr 2025 04:44:36 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/how-to-organize-browser-workspaces-with-llms-and-data/</guid>
      <description>&lt;p&gt;Here&amp;rsquo;s an example of how I am using LLMs to solve a day-to-day workflow problem.&lt;/p&gt;
&lt;p&gt;Every day, I interact with a barrage of websites: emails, news, social media, and work tools across multiple devices. &lt;a href=&#34;https://learn.microsoft.com/en-us/deployedge/microsoft-edge-workspaces&#34;&gt;Microsoft Edge’s workspaces&lt;/a&gt; syncs groups of websites across devices. I&amp;rsquo;ve never tried it, started today, and wondered: &lt;strong&gt;how should I organize my workspaces?&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;video-embed&#34;&gt;&lt;iframe src=&#34;https://www.youtube.com/embed/1kJ59DzjNOU&#34; title=&#34;YouTube video&#34; loading=&#34;lazy&#34; allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture&#34; allowfullscreen&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;p&gt;Rather than think (thinking is outdated), I used LLMs.&lt;/p&gt;
&lt;h3 id=&#34;extract-browsing-history&#34;&gt;Extract Browsing History&lt;/h3&gt;
&lt;p&gt;Edge stores website history in a &lt;a href=&#34;https://www.google.com/search?q=Where+is+the+Edge+browser+history+stored+on+Windows+and+Linux%3F&#34;&gt;SQLite database&lt;/a&gt;. But the file is locked by the browser by default. So I spent a fair bit of time figure out how to read it despite it being unlocked. Here are some options:&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;datasette .config/microsoft-edge/Default/History --nolock
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sqlite3 &lt;span class=&#34;s1&#34;&gt;&amp;#39;file:.config/microsoft-edge/Default/History?mode=ro&amp;amp;nolock=1&amp;#39;&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;SELECT url FROM urls&amp;#39;&lt;/span&gt; &amp;gt; urls.txt
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;(&lt;a href=&#34;https://duckdb.org/&#34;&gt;DuckDB&lt;/a&gt; cannot read locked SQLite files - else I&amp;rsquo;d use that.)&lt;/p&gt;
&lt;p&gt;Then comes extracting the hostnames from the URLs. I used &lt;a href=&#34;https://github.com/simonw/llm-cmd&#34;&gt;&lt;code&gt;llm cmd&lt;/code&gt;&lt;/a&gt; to ask Gemini 2.5 Pro:&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;llm cmd &lt;span class=&#34;s1&#34;&gt;&amp;#39;Extract just the hostnames from urls.txt which has a list of URLs, one per line. Only pick the https:// URLs. Save into hostnames.txt&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;I expanded the response &lt;code&gt;awk -F/ &#39;/^https:\/\//{print $3}&#39; urls.txt&lt;/code&gt; into:&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;awk -F/ &lt;span class=&#34;s1&#34;&gt;&amp;#39;/^https:\/\//{print $3}&amp;#39;&lt;/span&gt; urls.txt &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sort &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; uniq -c &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sort -k 1n &amp;gt; hostnames.txt
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;That gave me ~1,400 hostnames.&lt;/p&gt;
&lt;h2 id=&#34;cluster-with-llms&#34;&gt;Cluster with LLMs&lt;/h2&gt;
&lt;p&gt;I passed these to O1 Pro and Gemini 2.5 Pro:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Here are the sites I visit, with rough frequency. On Microsoft Edge, I can create workspaces. Based on this browsing behavior, what kinds of workspaces might I create? Give me multiple options.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Both gave a similar set of strategies, which I&amp;rsquo;ve implemented as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Main&lt;/strong&gt;: email, calendar, tasks, etc.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Work&lt;/strong&gt;: work related sites (drive, expenses, HR platform, etc.)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Chill&lt;/strong&gt;: YouTube, Minesweeper, Netflix, etc.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Read&lt;/strong&gt;: blogs, articles, stuff I need to catch-up on&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Code&lt;/strong&gt;: GitHub, StackOverflow, CodePen, etc.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Chores&lt;/strong&gt;: government services, shopping, etc.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AI&lt;/strong&gt;: ChatGPT, Gemini, Perplexity, etc.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I was surprised how &lt;strong&gt;similar&lt;/strong&gt; a strategy both models converted to. Either these models &lt;strong&gt;really&lt;/strong&gt; think alike, or my browsing pattern is a fairly common one. (My guess is the latter.)&lt;/p&gt;
&lt;h3 id=&#34;write-with-llms&#34;&gt;Write with LLMs&lt;/h3&gt;
&lt;p&gt;After setting up my groups, I needed to write this post. Instead of slow typing, I stepped out and &lt;a href=&#34;https://chatgpt.com/share/67f36093-e810-800c-a9d0-de9bfb7ecf86&#34;&gt;talked with ChatGPT&lt;/a&gt;. (Talking to a machine in the office felt strange, so I changed my space.) I explained my whole process, and in about eight minutes, the first draft was done. Normally, writing takes much longer, but the voice chat made it quick and smooth.&lt;/p&gt;
&lt;p&gt;The editing after that was manual and took 20 minutes.&lt;/p&gt;
&lt;h3 id=&#34;things-i-learnt&#34;&gt;Things I learnt&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Simple Patterns&lt;/strong&gt;: My browsing history shows clear patterns. AI helped me find groups I couldn&amp;rsquo;t see before&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Small Fixes - Big Wins&lt;/strong&gt;: A small challenge (opening a locked file) taught me a bunch of new useful stuff&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Voice Made It Easy&lt;/strong&gt;: Talking with ChatGPT made writing fast and easy. It shows that speaking to a machine can save time&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    <item>
      <title>Things I Learned - 10 Nov 2024</title>
      <link>https://www.s-anand.net/blog/things-i-learned-10-nov-2024/</link>
      <pubDate>Sun, 10 Nov 2024 00:00:00 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/things-i-learned-10-nov-2024/</guid>
      <description>&lt;p&gt;This week, I learned:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://openfreemap.org/&#34;&gt;OpenFreeMap&lt;/a&gt; is a free embeddable OpenStreetMap tile server. You can use &lt;a href=&#34;https://maplibre.org/&#34;&gt;MapLibre GL&lt;/a&gt; (more features) or Leaflet (simpler) to render it. It offers styling and self-hosting.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://actions.zapier.com/&#34;&gt;Zapier Actions&lt;/a&gt; are an easy way to set up custom actions like GMail / Google Calendar APIs for GPTs, since &lt;a href=&#34;https://community.openai.com/t/gpt-oauth-callback-url-keeps-changing/493236&#34;&gt;GPTs&amp;rsquo; callback URLs keep changing&lt;/a&gt;. But they fail often, and don&amp;rsquo;t work on mobile. At least for me.&lt;/li&gt;
&lt;li&gt;LLM Vision Use Cases in manufacturing and earth sciences (via Shivku)
&lt;ul&gt;
&lt;li&gt;Automated geoscience image descriptions &lt;a href=&#34;https://www.linkedin.com/posts/paulhcleverley_geosciences-earthscience-geology-activity-7254037937674240000-pQab/&#34;&gt;Ref&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Interpret Wind Turbine photos and charts, construction monitoring, equipment maintenance &amp;amp; charts &lt;a href=&#34;https://www.linkedin.com/pulse/vision-ai-energy-use-cases-copilot-wind-siting-impact-kalyanaraman-wqe7c/&#34;&gt;Ref&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Forecast weather based on cloud photos! &lt;a href=&#34;https://www.linkedin.com/pulse/cloud-typing-local-weather-forecasting-using-chatgpt-cam-shivkumar-1hhkc/&#34;&gt;Ref&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Analyze thermal image of solar panels, electroluminescence images for warranty claims, ROI estimates from Google Sunroof rooftop images &lt;a href=&#34;https://www.linkedin.com/pulse/vision-ai-energy-use-cases-part-1-copilot-solar-pv-kalyanaraman-ccszc/&#34;&gt;Ref&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Corrosion detection in electricity towers, turbines, storage tanks, penstock. Interpret non-destructive test images &lt;a href=&#34;https://www.linkedin.com/pulse/vision-ai-energy-use-cases-copilot-corrosion-shivkumar-kalyanaraman-onuic/&#34;&gt;Ref&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Google counts auto-completion when saying &amp;ldquo;25% of all the code is written by AI at Google&amp;rdquo;. &amp;ldquo;It&amp;rsquo;s a helpful productivity tool but it&amp;rsquo;s not doing any engineering at all. It&amp;rsquo;s probably about as good, maybe slightly worse, than Copilot.&amp;rdquo; &lt;a href=&#34;https://news.ycombinator.com/item?id=42002212&#34;&gt;YCombinator&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Workflow for AI video creation: Use Meshcapade (meshcapade.com) to generate body movement of a 3D-rendered character. Pass that video to Runway&amp;rsquo;s video-to-video model to generate any visual. Add music from Suno &lt;a href=&#34;https://www.linkedin.com/posts/peter-gostev_i-discovered-a-really-cool-new-workflow-for-activity-7260003053771141120-DJpS&#34;&gt;Ref&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Someone sorted the X and Y columns independently for regression. &lt;a href=&#34;https://stats.stackexchange.com/q/185507&#34;&gt;Ref&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Android keyboard learning only sends model changes back to server and not local keywords. Model changes are aggregated! &lt;a href=&#34;https://chatgpt.com/share/672d6d6d-46a0-800c-a130-c689f5ebc0b7&#34;&gt;Ref&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Here is a prompt for audio transcription using Gemini. &lt;a href=&#34;https://gist.github.com/rajivsinclair/8fb0371f6eda25f9e5cc515cd77abd62&#34;&gt;Ref&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;Transcription: Accurately transcribe the audio clip in the original language. Include all spoken words, fillers, slang, colloquialisms, and any code-switching instances. Pay attention to dialects and regional variations common among immigrant communities. Do your best to capture the speech accurately, and flag any unintelligible portions with &lt;code&gt;[inaudible]&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Translation: Translate the transcription into English. Preserve the original meaning, context, idiomatic expressions, and cultural references. Ensure that nuances and subtleties are accurately conveyed.&lt;/li&gt;
&lt;li&gt;Capture Vocal Nuances: Note vocal cues such as tone, pitch, pacing, emphasis, and emotional expressions that may influence the message. These cues are critical for understanding intent and potential impact.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Here are some approaches to large-scale classification of medical codes. &lt;a href=&#34;https://chatgpt.com/share/672dd476-7694-800c-a150-f3de912788ef&#34;&gt;ChatGPT&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;Fine-Tuning LLMs on Medical Data: Enhance LLMs by training them on medical datasets, such as clinical notes and discharge summaries, to improve their understanding of medical terminology and context.&lt;/li&gt;
&lt;li&gt;Multi-Agent Frameworks: Implement a multi-agent system that simulates real-world coding processes with distinct roles (e.g., patient, physician, coder, reviewer, adjuster). Each agent utilizes an LLM to perform specific functions, enhancing interpretability and reliability. &lt;a href=&#34;https://arxiv.org/abs/2406.15363&#34;&gt;ArXiv&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Retrieve-Rank Systems: Develop a two-stage system where the LLM first retrieves potential ICD-10 codes and then ranks them based on relevance, improving precision in code assignment. &lt;a href=&#34;https://arxiv.org/abs/2407.12849&#34;&gt;ArXiv&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Embedding-Based Approaches: Use LLMs to generate embeddings for ICD-10 codes and medical texts, facilitating the matching of texts to appropriate codes through similarity measures. &lt;a href=&#34;https://github.com/kaneplusplus/icd-10-cm-embedding&#34;&gt;GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Hierarchical Classification: Leverage the hierarchical structure of ICD-10 codes by first classifying texts into broader categories before assigning specific codes, reducing complexity and improving accuracy. &lt;a href=&#34;https://arxiv.org/abs/2310.06552&#34;&gt;ArXiv&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Two-Stage Verification Models: Combine LLMs with verification models, such as Long Short-Term Memory (LSTM) networks, to validate and refine the codes suggested by the LLM, balancing recall and precision. &lt;a href=&#34;https://arxiv.org/abs/2311.13735&#34;&gt;ArXiv&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Also, a mixture of models approach might work. Feed any existing NLP model / rules as a second opinion.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;GraphRAG is better if data is naturally graph-structured. Else, it&amp;rsquo;s slow and fills up the context window with even vaguely related stuff. Vigneshbabu, AMAT.&lt;/li&gt;
&lt;li&gt;ChatGPT for Windows desktop supports real-time voice and a global shortcut (Alt Space).&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://uithub.com&#34;&gt;uithub&lt;/a&gt; converts GitHub repos to Markdown. Just replace &amp;ldquo;g&amp;rdquo; in &amp;ldquo;github.com/&amp;hellip;&amp;rdquo; with &amp;ldquo;u&amp;rdquo;. &lt;a href=&#34;https://uithub.com/gramener/asyncllm&#34;&gt;Example&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;WebContainers are a thing and Bolt.new uses them!&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/DS4SD/docling&#34;&gt;Docling&lt;/a&gt; by IBM converts PDF, DOCX, etc. to Markdown. Like &lt;a href=&#34;https://pymupdf.readthedocs.io/en/latest/pymupdf4llm/&#34;&gt;PyMuPDF4LLM&lt;/a&gt; but better.&lt;/li&gt;
&lt;li&gt;Check out &lt;a href=&#34;https://www.loom.com/&#34;&gt;Loom&lt;/a&gt; and &lt;a href=&#34;https://cleanshot.com/&#34;&gt;Cleanshot&lt;/a&gt; are the recommended tools for screen recording and screenshotting. But Loom is paid and Cleanshot is Mac only.&lt;/li&gt;
&lt;li&gt;The Rubik&amp;rsquo;s cube has a Hamiltonian cycle through every one of its 43 quintillion states. &lt;a href=&#34;https://bruce.cubing.net/ham333/rubikhamiltonexplanation.html&#34;&gt;Ref&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://microsoft.github.io/OmniParser/&#34;&gt;OmniParser&lt;/a&gt; is great at parsing screenshots and identifying bounding boxes.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.recraft.ai/&#34;&gt;Recraft.ai&lt;/a&gt; is currently SOTA in text to image. It&amp;rsquo;s fairly impressive and could be a good alternative to Figma.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://zed.dev/&#34;&gt;Zed.dev&lt;/a&gt; is an AI code editor by the creators of Atom. It&amp;rsquo;s written in Rust and is blazing fast. It has native AI integration.&lt;/li&gt;
&lt;li&gt;Artificial Analysis has a bunch of new leaderboards and arenas.
&lt;ul&gt;
&lt;li&gt;Open AI TTS leads the &lt;a href=&#34;https://artificialanalysis.ai/text-to-speech/arena?tab=Leaderboard&#34;&gt;TTS Leaderboard&lt;/a&gt;. ElevenLabs is a bit behind.&lt;/li&gt;
&lt;li&gt;Recraft V3 &amp;gt; Flux 1.1 leads &lt;a href=&#34;https://artificialanalysis.ai/text-to-image/arena?tab=Leaderboard&#34;&gt;Text to Image Leaderboard&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/Standard-Intelligence/hertz-dev&#34;&gt;Hertz-Dev&lt;/a&gt; is an open source realtime voice chat model. But it doesn&amp;rsquo;t fit in Google Colab T4&amp;rsquo;s RAM&lt;/li&gt;
&lt;li&gt;Chain of Thought reduces performance where thinking makes humans worse. &lt;a href=&#34;https://arxiv.org/abs/2410.21333&#34;&gt;Ref&lt;/a&gt;. Specifically:
&lt;ul&gt;
&lt;li&gt;Artificial grammar learning&lt;/li&gt;
&lt;li&gt;Facial recognition&lt;/li&gt;
&lt;li&gt;Classifying data that has exceptions&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://hamel.dev/blog/posts/llm-judge/&#34;&gt;Creating a LLM-as-a-Judge That Drives Business Results&lt;/a&gt; by Hamel Husain.
&lt;ul&gt;
&lt;li&gt;Get THE domain expert (or approver) as the tester.&lt;/li&gt;
&lt;li&gt;Create a dataset that is DIVERSE.&lt;/li&gt;
&lt;li&gt;Covers EACH combination of:
&lt;ul&gt;
&lt;li&gt;Features&lt;/li&gt;
&lt;li&gt;Scenarios: e.g. multiple matches, no match, ambiguous request, invalid/incomplete input, unsupported feature, system error&lt;/li&gt;
&lt;li&gt;Persona: e.g. new user, expert user, non-native speaker, busy professional, technophobe, elderly user&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Generate data using existing data + synthetic data for each SPECIFIC combination of the above&lt;/li&gt;
&lt;li&gt;Evaluate based only on PASS/FAIL with a CRITIQUE detailed enough for a new employee. Include:
&lt;ul&gt;
&lt;li&gt;Nuances: Something a failed response did well or a passed response didn&amp;rsquo;t quite do well&lt;/li&gt;
&lt;li&gt;Improvements: Suggest how model can improve&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Build an SPA to make it easy for the domain expert to review&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;LLMs can be made to unlearn (copyright material) better by identifying components related to the knowledge to unlearn and applying a larger learning rate to these while leaving other parts unchanged. As opposed to low learning rates for all components. &lt;a href=&#34;https://arxiv.org/abs/2410.16454&#34;&gt;Ref&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
  </channel>
</rss>
