<?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>developer-tools on S Anand</title>
    <link>https://www.s-anand.net/blog/tag/developer-tools/</link>
    <description>Recent content in developer-tools on S Anand</description>
    <generator>Hugo -- 0.164.0</generator>
    <language>en-us</language>
    <lastBuildDate>Sun, 30 Aug 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://www.s-anand.net/blog/tag/developer-tools/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Things I Learned - 30 Aug 2026</title>
      <link>https://www.s-anand.net/blog/things-i-learned-30-aug-2026/</link>
      <pubDate>Sun, 30 Aug 2026 00:00:00 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/things-i-learned-30-aug-2026/</guid>
      <description>&lt;p&gt;This week, I learned:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I know that fact-checking 2000 page PDFs is error-prone, so&amp;rsquo;d do it manually for a few pages, then refine. Agents would know this if they&amp;rsquo;ve tried and failed and added it to their memory systems. So I intervene when agents don&amp;rsquo;t remember well (increasingly rare) or I think they haven&amp;rsquo;t seen it before (again, increasingly rare). My prompts guard against these - but I shouldn&amp;rsquo;t habitualize these - they&amp;rsquo;ll be needed less in future.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/davatorium/rofi&#34;&gt;rofi&lt;/a&gt; - a Linux menu app I use for all kinds of things - makes it hard to take screenshots because it takes over focus and I can&amp;rsquo;t send the &lt;code&gt;PrtSc&lt;/code&gt; or other keys to the screenshot apps. So I use &lt;a href=&#34;https://flameshot.org/&#34;&gt;&lt;code&gt;flameshot full --delay 3000 --path ~/Downloads/screenshot.png&lt;/code&gt;&lt;/a&gt; to take a screenshot (of the last region it used) 3 seconds later, and quickly activate &lt;code&gt;rofi&lt;/code&gt; in-between. (The &lt;a href=&#34;https://flameshot.org/docs/advanced/commandline-options/&#34;&gt;docs&lt;/a&gt; say &lt;code&gt;flameshot full&lt;/code&gt; captures the full screen. For me, it captured my last region.)&lt;/li&gt;
&lt;li&gt;ChatGPT can now connect to multiple GMail accounts in paid plans. &lt;a href=&#34;https://x.com/jxnlco/status/2093223754054922685?s=20&#34;&gt;X&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://ducklabs.com/news/2026/08/26/ducklabs-to-join-aws&#34;&gt;AWS to acquire DuckDB&lt;/a&gt;. DuckDB is one of my favorite tools today and is improving at a rapid pace. I guess that will continue in the short run - hope it lasts long enough for a worthy successor.&lt;/li&gt;
&lt;li&gt;I use &lt;a href=&#34;https://goatcounter.com/&#34;&gt;GoatCounter&lt;/a&gt; to track my website traffic. It doesn&amp;rsquo;t capture domains (only paths), so I just use a &lt;a href=&#34;https://github.com/sanand0/imdb/commit/9c235b25d80c92ec23d0939689ced889a0a8b142&#34;&gt;code snippet&lt;/a&gt; to log &lt;code&gt;https://sanand0.github.io/SITE/...&lt;/code&gt; as &lt;code&gt;/@SITE/...&lt;/code&gt; - the &lt;code&gt;@&lt;/code&gt; makes it easy for me to see that it&amp;rsquo;s from a GitHub page.&lt;/li&gt;
&lt;li&gt;I switched from &lt;a href=&#34;https://github.com/firecrawl/anydoc&#34;&gt;anydoc&lt;/a&gt; to &lt;a href=&#34;https://github.com/chronicle/docling&#34;&gt;docling&lt;/a&gt; as my default PDF to Markdown converter. Docling is even better than AnyDoc #ForNow.&lt;/li&gt;
&lt;li&gt;Based on my Codex usage, &lt;a href=&#34;https://chatgpt.com/share/6a8bfcf3-57f8-83ee-b29d-87fb3a07a996&#34;&gt;ChatGPT recommended&lt;/a&gt; that I not create custom subagents (my setup already used subagents a fair bit last month), but rather, just use &lt;code&gt;default_subagent_model = &amp;quot;gpt-5.6-luna&amp;quot;&lt;/code&gt; (which is a remarkably good model for its price #ForNow). &lt;!-- https://chatgpt.com/c/6a8bf959-df54-83e8-ab71-9aa72f3d2150 --&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://artificialanalysis.ai/&#34;&gt;Artificial Analysis&lt;/a&gt; hosts &lt;a href=&#34;https://artificialanalysis.ai/evaluations/&#34;&gt;several useful task-based evaluations&lt;/a&gt;. Here are some the fronter leaders #ForNow: &lt;!-- https://chatgpt.com/c/6a8bb008-c394-83ee-aa9b-439546f8cb1d --&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://artificialanalysis.ai/evaluations/gdpval-aa#:~:text=v2%3A%20Elo%20vs.-,Cost%20per%20Task,-GDPval%2DAA%20v2&#34;&gt;GDPVal&lt;/a&gt; is good for realistic tasks. Again, GPT 5.6 Luna models have captured most of the low-cost fronter.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://artificialanalysis.ai/evaluations/enterprise-ops-gym-aa?eval-cost=score-vs-cost-per-task#:~:text=AA%3A%20Score%20vs.-,Cost%20per%20Task,-EnterpriseOps%2DGym%2DAA&#34;&gt;EnterpriseOps Gym&lt;/a&gt; is good for office tasks like emails, calendars, Teams/Drive, support tasks, etc. Interestingly, none of the OpenAI models are on the frontier. Claude Fable 5 and Gemini 3.5 Flash are at the high-end, but Kimi K3 (Max), Qwen3.7 (Max), GLM-5.2 (Max) lead the mid-end and DeepSeek V4 Pro / Flash lead the low-end frontier.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://artificialanalysis.ai/evaluations/terminalbench-v2-1?eval-cost=score-vs-cost-per-task#:~:text=v2.1%3A%20Score%20vs.-,Cost%20per%20Task,-Terminal%2DBench%20v2.1&#34;&gt;TerminalBench 2.1&lt;/a&gt; is good for coding tasks. The OpenAI models completely rule this frontier.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://artificialanalysis.ai/evaluations/aa-analyst-agent?eval-cost=score-vs-cost-per-task#:~:text=AnalystAgent%3A%20Score%20vs.-,Cost%20per%20Task,-AA%2DAnalystAgent%20score&#34;&gt;Analyst Agent&lt;/a&gt; is good for spreadsheet tasks (&lt;a href=&#34;https://artificialanalysis.ai/methodology/intelligence-benchmarking#aa-analyst-agent&#34;&gt;using Python&lt;/a&gt;). Gemini 3.7 Flash seems to be a &lt;em&gt;strong&lt;/em&gt; outlier on this frontier.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://artificialanalysis.ai/evaluations/tau3-banking?eval-cost=score-vs-cost-per-task#:~:text=Banking%3A%20Score%20vs.-,Cost%20per%20Task,-%F0%9D%9C%8F%C2%B3%2DBanking%20score%20vs&#34;&gt;Tau3&lt;/a&gt; is good for navigating unstructured data. GPT 5.6 Luna wins the bottom, DeepSeek V4 the middle, and Qwen 3.8 / GLM 5.3 take the top. Anthropic and Google are not even in the race.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://artificialanalysis.ai/evaluations/aa-briefcase?cost=elo-vs-cost-per-task#:~:text=Briefcase%20Elo%20vs.-,Cost%20per%20Task,-AA%2DBriefcase%20Elo&#34;&gt;Briefcase&lt;/a&gt; is good for building useful things from diverse messy data. Grok completely wins the mid-end with Anthropic dominating the high-cost frontier.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://artificialanalysis.ai/evaluations/apex-agents-aa?eval-cost=score-vs-cost-per-task#:~:text=AA%3A%20Score%20vs.-,Cost%20per%20Task,-APEX%2DAgents%2DAA&#34;&gt;APEX Agents&lt;/a&gt; is good for deeper knowledge work. GPT 5.6 Luna (Max) is a strong frontier outlier here.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Task-based benchmarks seem more practical than token-based benchmarks. &lt;!-- https://chatgpt.com/c/6a8bb2fa-e08c-83ee-91c5-852149476f44 --&gt;
&lt;ul&gt;
&lt;li&gt;For example, rather than the &lt;a href=&#34;https://sanand0.github.io/llmpricing/&#34;&gt;LM Arena ELO vs Cost&lt;/a&gt;, I would use &lt;a href=&#34;https://www.frontierbench.ai/?view=pareto&#34;&gt;Terminal Bench 3.0&lt;/a&gt; which clearly tells me to use Codex with GPT-5.6 Sol over Claude Code with Opus 5 / Fable 5; that GLM 5.3 with Claude Code might be excellent value for money as well when using APIs. #ForNow&lt;/li&gt;
&lt;li&gt;I also did a rough calculation to see if the &lt;em&gt;$18 GLM subscription&lt;/em&gt; offers more than $20 ChatGPT Plus. Short answer: No, for my usage, Codex offers ~1.8x more value #ForNow. &lt;a href=&#34;https://chatgpt.com/share/6a8bbfde-4a3c-83ee-ac80-c31630021fbf&#34;&gt;ChatGPT&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Anthropic&amp;rsquo;s Skill Creator Skill &lt;a href=&#34;https://claude.com/blog/improving-skill-creator-test-measure-and-refine-agent-skills&#34;&gt;now includes evals and A/B testing&lt;/a&gt; #ForNow to check if a skill actually does better. I&amp;rsquo;ve been doing this the hard way, e.g. with &lt;a href=&#34;https://github.com/sanand0/research/tree/main/simplification-prompt&#34;&gt;impact of simple writing on thinking&lt;/a&gt;, &lt;a href=&#34;https://github.com/sanand0/research/tree/main/ideation-protocol-optimization&#34;&gt;optimizing my ideation prompt&lt;/a&gt;, &lt;a href=&#34;https://github.com/sanand0/scripts/commit/7b1c11fd56c726cb796abfababfe31f9a9a2ec9f&#34;&gt;optimizing my summarization prompt&lt;/a&gt;, etc.&lt;/li&gt;
&lt;li&gt;I switched from &lt;a href=&#34;https://github.com/microsoft/markitdown&#34;&gt;markitdown&lt;/a&gt; to &lt;a href=&#34;https://github.com/firecrawl/anydoc&#34;&gt;anydoc&lt;/a&gt; as my default PDF to Markdown converter. AnyDoc handles tables and other kinds of structures in PDF &lt;em&gt;much&lt;/em&gt; better #ForNow.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;questions-i-was-asked&#34;&gt;Questions I was asked&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://www.s-anand.net/blog/questions-i-am-asked/#week-ending-2026-08-30&#34;&gt;Week ending 30 Aug 2026&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Question&lt;/strong&gt;: How hard was it to adapt your personal AI workflow to work?&lt;br&gt;
&lt;strong&gt;Answer&lt;/strong&gt;: I didn&amp;rsquo;t try solving work problems. Rather, I took what I was solving personally with agents and tried finding where at work I can apply it. &amp;ldquo;I have a hammer, let me find all the nails.&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Question&lt;/strong&gt;: If agents can do the coding, how do we teach the foundational blocks?&lt;br&gt;
&lt;strong&gt;Answer&lt;/strong&gt;: We don&amp;rsquo;t care if they learn FastAPI, etc. Routing, authentication, interfaces, &amp;hellip; - THAT is more useful. So give them tasks that forces them to learn FUTURE foundational blocks FROM agents.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Question&lt;/strong&gt;: How do you monitor whether people are actually using reusable AI skills?&lt;br&gt;
&lt;strong&gt;Answer&lt;/strong&gt;: Read the agent session logs. A small script over Claude, Codex and Copilot histories can tell you which skills were actually used and how often.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Question&lt;/strong&gt;: How are you determining which AI spend is dumb?&lt;br&gt;
&lt;strong&gt;Answer&lt;/strong&gt;: Start with the highest-cost users and inspect the obvious outliers. Give the raw logs to an agent, ask why someone spent that much, tell users to make obvious optimizations, etc. before attempting sophisticated optimization.&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    <item>
      <title>Things I Learned - 16 Aug 2026</title>
      <link>https://www.s-anand.net/blog/things-i-learned-16-aug-2026/</link>
      <pubDate>Sun, 16 Aug 2026 00:00:00 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/things-i-learned-16-aug-2026/</guid>
      <description>&lt;p&gt;This week, I learned:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://fishshell.com/docs/current/cmds/psub.html&#34;&gt;psub&lt;/a&gt; is a neat &lt;code&gt;fish&lt;/code&gt; option to treat command outputs like file inputs. E.g. &lt;code&gt;diff (sort a.txt | psub) (sort b.txt | psub)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;More anchor points on how much text to ask AI for: &lt;!-- https://chatgpt.com/c/6a7ee0c5-75d8-83ee-aede-388d8f14a2eb --&gt;
&lt;ul&gt;
&lt;li&gt;&amp;hellip; in 200-300 words (about 1 book page)&lt;/li&gt;
&lt;li&gt;&amp;hellip; in ~1 A4 sheet (~500 words)&lt;/li&gt;
&lt;li&gt;&amp;hellip; in ~3 minute of conversational Grade 8 reading (~500 words)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;I usually log things in a single file rather than split things into yearly, monthly, etc. A single file is more portable, scannable, and, for human logs, gives a feeling of accomplishment. I split when the file gets so unwieldy that it actually hurts - which is a good thing because it means I&amp;rsquo;m actually using it (maybe?) - and splitting beforehand may be good planning but is also premature optimization, adding friction to a nascent, fragile process. (This idea is pretty generalizable.)&lt;/li&gt;
&lt;li&gt;Claude models launched after 2 Aug 2026 &amp;ldquo;weaves an imperceptible watermark directly into the text itself. You won’t see it, and it doesn’t change the meaning, quality, or readability of Claude’s response.&amp;rdquo; &lt;a href=&#34;https://support.claude.com/en/articles/16266773-how-claude-marks-ai-generated-content&#34;&gt;How Claude marks AI-generated content&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://code.visualstudio.com/docs/configure/accessibility/voice#_dictate-in-an-editor&#34;&gt;VS Code has built-in dictation&lt;/a&gt;. It uses &lt;code&gt;nemotron-3.5-asr-streaming-0.6b&lt;/code&gt; by default #ForNow, and it&amp;rsquo;s pretty good. I expect I&amp;rsquo;ll use it a lot more, since most of my typing is in VS Code anyway. &lt;kbd&gt;Ctrl + Alt + V&lt;/kbd&gt; toggles dictation. Dictation is also supported in the terminal and is trained to recogni&lt;/li&gt;
&lt;li&gt;I had an interesting moment today when I asked ChatGPT to identify which of my ChatGPT conversations were the most effective. I gave it access to my computer and it started using the browser to scrape itself so aggressively that I stopped it from it banned itself! &lt;!-- https://chatgpt.com/c/6a794e02-1eb0-83ec-bbbb-00406cc1d56d --&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://web.geolibre.app/&#34;&gt;GeoLibre&lt;/a&gt; looks like a full-fledged GIS. It&amp;rsquo;s &lt;a href=&#34;https://github.com/opengeos/GeoLibre&#34;&gt;open source&lt;/a&gt; and runs directly in the browser.&lt;/li&gt;
&lt;li&gt;When installing tools with &lt;code&gt;mise&lt;/code&gt;, if it messes up the platform, you can explicitly specify it. For example: &lt;code&gt;mise use -g &#39;github:pranshuparmar/witr[asset_pattern=witr-linux-amd64,bin=witr]@latest&#39;&lt;/code&gt;. &lt;a href=&#34;https://mise.jdx.dev/dev-tools/backends/github.html#asset-pattern&#34;&gt;Mise Docs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;I saw this snippet from Claude Code: &lt;code&gt;await Promise.race([document.fonts.ready, new Promise((r) =&amp;gt; setTimeout(r, 3000))]);&lt;/code&gt; That waits for up to 3 seconds for the fonts to load. Didn&amp;rsquo;t know about &lt;a href=&#34;https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/race&#34;&gt;Promise.race()&lt;/a&gt; before. It&amp;rsquo;s different from &lt;code&gt;Promise.any()&lt;/code&gt; in that &lt;code&gt;.race()&lt;/code&gt; will return the first &lt;em&gt;result&lt;/em&gt; while &lt;code&gt;.any()&lt;/code&gt; will return the first &lt;em&gt;success&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;Measure the verification / follow-up tax in your AI work. AI does things fast. &lt;em&gt;You&lt;/em&gt; have to take the next step. It helps to tag items with how long they&amp;rsquo;d take to verify or action. We do for specification, because we have to do that &lt;em&gt;now&lt;/em&gt;, &lt;em&gt;before&lt;/em&gt; telling AI. But I typically ignore the deferred tax.  &lt;!-- https://chatgpt.com/c/6a78a9e7-f6a4-83ec-834a-feaca6ea088b --&gt;&lt;/li&gt;
&lt;li&gt;A theme is emerging: &amp;ldquo;Human attention needs reciprocity. If you ask for someone&amp;rsquo;s attention, first demonstrate your own effort.&amp;rdquo; Example: &amp;ldquo;people really don&amp;rsquo;t like when a coworker&amp;rsquo;s chatgpt contacts them asking for help with a task, even when they&amp;rsquo;d be perfectly happy doing that same work if asked by that coworker.&amp;rdquo; &lt;a href=&#34;https://x.com/gdb/status/2083435180392673714&#34;&gt;Greg Brockman&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;questions-i-was-asked&#34;&gt;Questions I was asked&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://www.s-anand.net/blog/questions-i-am-asked/#week-ending-2026-08-16&#34;&gt;Week ending 16 Aug 2026&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Question&lt;/strong&gt;: What should a strong data scientist actually build in an AI-native delivery model?&lt;br&gt;
&lt;strong&gt;Answer&lt;/strong&gt;: Assume he is training an AI to replace him. He should not build the thing himself; he should direct the agent, apply his judgment over a few iterations, and leave behind a portable system you can benchmark and rebuild simpler, better and faster.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Question&lt;/strong&gt;: If two people are iterating on an AI-native delivery workflow, what collaboration setup do they need?&lt;br&gt;
&lt;strong&gt;Answer&lt;/strong&gt;: Shared files solve most of it. Keep data, code, skills/prompts and notes in folders with the right permissions; Google Drive or OneDrive is enough for now.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Question&lt;/strong&gt;: If we&amp;rsquo;re debating whether a course is even necessary anymore, how do we transition it for AI?&lt;br&gt;
&lt;strong&gt;Answer&lt;/strong&gt;: Start with a single class that&amp;rsquo;s full AI, a single exam that&amp;rsquo;s full AI, one step at a time.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Question&lt;/strong&gt;: Instead of hiring more developers, should I take fewer people and spend the difference on premium AI seats?&lt;br&gt;
&lt;strong&gt;Answer&lt;/strong&gt;: Experiment with a few people, not everyone. Treat AI as an extra headcount slot, but radically raise the output expected; getting that productivity happens only when you need that productivity.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Question&lt;/strong&gt;: Should we self-host open models to reduce LLM costs?&lt;br&gt;
&lt;strong&gt;Answer&lt;/strong&gt;: Do the math: machine cost per hour versus useful inferences per hour and compare it with the API. Cost alone probably isn&amp;rsquo;t enough; privacy is a much better reason to self-host.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Question&lt;/strong&gt;: How do you build a QA agent that tests developers&amp;rsquo; work and reports back?&lt;br&gt;
&lt;strong&gt;Answer&lt;/strong&gt;: Don&amp;rsquo;t build the agent first. Tell a coding harness the outcome—find requirements, create tests, run them and report—and do it manually 5–10 times; automate only after you know what you actually want.&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    <item>
      <title>Software Naming Has Power</title>
      <link>https://www.s-anand.net/blog/software-naming-has-power/</link>
      <pubDate>Tue, 17 Mar 2026 09:08:54 +0530</pubDate>
      <guid>https://www.s-anand.net/blog/software-naming-has-power/</guid>
      <description>&lt;p&gt;Software naming has power.&lt;/p&gt;
&lt;p&gt;I first became aware of this when a friend commented how much he enjoyed starting Windows 3.&lt;/p&gt;
&lt;p&gt;&amp;ldquo;Win,&amp;rdquo; he said. &amp;ldquo;I just love typing that!&amp;rdquo;&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://files.s-anand.net/images/2026-03-17-software-naming-is-power.avif&#34;&gt; &lt;!-- https://gemini.google.com/u/2/app/df12e01429787d55 --&gt;&lt;/p&gt;
&lt;p&gt;I felt this this again recently with &lt;a href=&#34;https://github.com/casey/just&#34;&gt;&lt;code&gt;just&lt;/code&gt;&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;just lint
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Can you feel it?&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;just build
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Actually, I just like to &lt;strong&gt;say&lt;/strong&gt; &amp;ldquo;Just&amp;hellip;&amp;rdquo;&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;just &lt;span class=&#34;nb&#34;&gt;test&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img alt=&#34;Just like Hobbes loves saying &amp;ldquo;Smock&amp;rdquo;&#34; loading=&#34;lazy&#34; src=&#34;https://picayune.uclick.com/comics/ch/1992/ch920623.gif&#34;&gt;&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Things I Learned - 22 Feb 2026</title>
      <link>https://www.s-anand.net/blog/things-i-learned-22-feb-2026/</link>
      <pubDate>Sun, 22 Feb 2026 00:00:00 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/things-i-learned-22-feb-2026/</guid>
      <description>&lt;p&gt;This week, I learned:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/tree-sitter/tree-sitter&#34;&gt;tree-sitter&lt;/a&gt; is a fast incremental parser generator. That means you can use it to create a parser for &lt;em&gt;any&lt;/em&gt; language that works even if there are errors, e.g. malformed JSON, Python, etc. It&amp;rsquo;s used by most editors. For example, &lt;a href=&#34;https://github.com/tree-sitter/tree-sitter-python&#34;&gt;tree-sitter-python&lt;/a&gt; is a fast forgiving Python parser. There are &lt;a href=&#34;https://github.com/tree-sitter/tree-sitter/wiki/List-of-parsers&#34;&gt;official parsers&lt;/a&gt; and &lt;a href=&#34;https://github.com/tree-sitter-grammars&#34;&gt;community parsers&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Programming Languages:&lt;/strong&gt; All popular ones, less popular ones like Ada, Fortran, Lua, Zig, &amp;hellip; and even niche / domain-specific languages (Gleam, TLA⁺).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Markup &amp;amp; Data Formats:&lt;/strong&gt; HTML, XML, Markdown, JSON, YAML, TOML, CSV, &amp;hellip;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Query, Scripting &amp;amp; Config:&lt;/strong&gt; SQL, GraphQL, Bash, Dockerfile, Regex, Terraform (HCL), &amp;hellip;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Ligature fonts are nice, but it might not be worth forming a habit out of. &lt;a href=&#34;https://claude.ai/share/3cb9d834-b85a-4aa6-bf9f-e7051101d5c6&#34;&gt;Claude&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Cloudflare introduced &lt;a href=&#34;https://blog.cloudflare.com/markdown-for-agents/&#34;&gt;Markdown for Agents&lt;/a&gt;. This converts websites from HTML to Markdown via &lt;code&gt;Accept: text/markdown&lt;/code&gt; for any Cloudflare endpoint which has enabled this feature. This requires a Pro account.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/nayafia/microgrants&#34;&gt;Microgrants&lt;/a&gt; is a list of microgrants programs - where you can give small amounts of money, e.g. $50 - $1K as well as large fellowships over $100K. This includes student grants, creative &amp;amp; community grants, tech grants, social &amp;amp; policy grants, etc.&lt;/li&gt;
&lt;li&gt;&amp;ldquo;Animated web formats are simply video codecs &amp;hellip; stripped of their most powerful feature.&amp;rdquo; A &lt;code&gt;.webm&lt;/code&gt; file is likely to compress &lt;em&gt;much&lt;/em&gt; better than an animated &lt;code&gt;.webp&lt;/code&gt;, etc. &lt;a href=&#34;https://gemini.google.com/share/a83f37623107&#34;&gt;Gemini&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;esbuild can compile CSS files to support old browsers, e.g. nested rules, custom properties, etc. Usage: &lt;code&gt;esbuild input.css --target=chrome90 --outfile=output.css&lt;/code&gt;. &lt;a href=&#34;https://jvns.ca/til/esbuild-can-build-css/&#34;&gt;Julia Evans&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;New jargon I learnt: &lt;a href=&#34;https://tools.s-anand.net/askai/?q=What+is+Human+On+The+Loop+vs+Human+In+The+Loop%3F+Give+it+to+me+in+a+sentence.&#34;&gt;Human-On-The-Loop&lt;/a&gt;. &lt;a href=&#34;https://tools.s-anand.net/askai/?q=What%27s+Treasure+In+Treasure+Out+-+as+opposed+to+Garbage+In+Garbage+Out%3F+Give+it+to+me+in+a+sentence.&#34;&gt;Treasure In Treasure Out&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;VS Code&amp;rsquo;s GitHub Copilot extension supports a &lt;code&gt;github.copilot.chat.commitMessageGeneration.instructions&lt;/code&gt; setting that lets you add a &lt;code&gt;[{&amp;quot;text&amp;quot;: ...}]&lt;/code&gt; or &lt;code&gt;[{&amp;quot;file&amp;quot;: &amp;quot;path/to/file.ext&amp;quot;}]&lt;/code&gt; prompt to the commit message generation. I&amp;rsquo;ve pointed this to my &lt;a href=&#34;https://github.com/sanand0/scripts/blob/main/agents/custom-prompts/git-commit.md&#34;&gt;&lt;code&gt;git-commit.md&lt;/code&gt;&lt;/a&gt; custom prompt.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;questions-i-was-asked&#34;&gt;Questions I was asked&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://www.s-anand.net/blog/questions-i-am-asked/#week-ending-2026-02-22&#34;&gt;Week ending 22 Feb 2026&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Question&lt;/strong&gt;: I&amp;rsquo;m thinking of a Digital Board Member - an AI who participates in board meetings. What do you think?&lt;br&gt;
&lt;strong&gt;Answer&lt;/strong&gt;: Great idea in 3-4 years; today LLM latency makes live participation very hard.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Question&lt;/strong&gt;: How do you build taste?&lt;br&gt;
&lt;strong&gt;Answer&lt;/strong&gt;: &amp;ldquo;I can&amp;rsquo;t tell you.&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Question&lt;/strong&gt;: Where will all these people get absorbed when AI takes over their work?&lt;br&gt;
&lt;strong&gt;Answer&lt;/strong&gt;: Three paths - some go down the economic ladder, some switch to adjacent roles, some move into new roles that didn&amp;rsquo;t exist before.&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    <item>
      <title>Things I Learned - 15 Feb 2026</title>
      <link>https://www.s-anand.net/blog/things-i-learned-15-feb-2026/</link>
      <pubDate>Sun, 15 Feb 2026 00:00:00 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/things-i-learned-15-feb-2026/</guid>
      <description>&lt;p&gt;This week, I learned:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;ffmpeg&lt;/code&gt; lets you concatenate files without needing a separate input file. &lt;code&gt;ffmpeg -i &amp;quot;concat:input1.ext|input2.ext|input3.ext&amp;quot; -c copy output.ext&lt;/code&gt; works as long as the files use the same codecs and parameters.&lt;/li&gt;
&lt;li&gt;There is a psychological phenomenon where we &amp;ldquo;overlay&amp;rdquo; old images of people we haven&amp;rsquo;t seen in decades onto their current selves, making it hard to distinguish between someone who is 30 and someone who is 70. &lt;a href=&#34;https://gemini.google.com/share/1348ea514d1e&#34;&gt;Gemini&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Most modern &lt;code&gt;ls&lt;/code&gt; tools like &lt;a href=&#34;https://github.com/eza-community/eza&#34;&gt;&lt;code&gt;eza --icons&lt;/code&gt;&lt;/a&gt; or &lt;a href=&#34;https://github.com/lsd-rs/lsd&#34;&gt;&lt;code&gt;lsd&lt;/code&gt;&lt;/a&gt; support icons if the terminal font supports icons, like &lt;a href=&#34;https://www.nerdfonts.com/&#34;&gt;Nerd Fonts&lt;/a&gt;. For example, this: &lt;code&gt;&lt;/code&gt; shows up as a GitHub icon and &lt;code&gt;󰌻&lt;/code&gt; as a LinkedIn icon. The &lt;a href=&#34;https://www.nerdfonts.com/cheat-sheet&#34;&gt;Nerd Fonts Cheat Sheet&lt;/a&gt; is a good place to search for these. You may need to download a &lt;a href=&#34;https://www.nerdfonts.com/font-downloads&#34;&gt;supporting font&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;I just replaced &lt;a href=&#34;https://github.com/tonsky/FiraCode&#34;&gt;Fira Code&lt;/a&gt; with &lt;a href=&#34;https://font.subf.dev/en/&#34;&gt;Maple Mono&lt;/a&gt; as my default font on VS Code. Like Fira Code, the ligatures are great, but there are extra ligatures like [TODO] or [ERROR], &lt;em&gt;connected italics&lt;/em&gt;, nerd font support, variable font weights, and more. Via &lt;a href=&#34;https://lobste.rs/s/ahca9t/maple_mono_open_source_monospace_font&#34;&gt;lobste.rs&lt;/a&gt;. (&lt;strong&gt;Update&lt;/strong&gt;: Maple Mono is &lt;em&gt;much&lt;/em&gt; harder to read than Fira Code, so I switched back. But it&amp;rsquo;s a nice idea.)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;questions-i-was-asked&#34;&gt;Questions I was asked&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://www.s-anand.net/blog/questions-i-am-asked/#week-ending-2026-02-15&#34;&gt;Week ending 15 Feb 2026&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Question&lt;/strong&gt;: You found it easy to make the shift from coding to management and back - but was it?&lt;br&gt;
&lt;strong&gt;Answer&lt;/strong&gt;: Yes, had expected it; coding was his love but couldn&amp;rsquo;t say no to IIM or BCG when offers came.&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    <item>
      <title>Google AI Tools List</title>
      <link>https://www.s-anand.net/blog/google-ai-tools-list/</link>
      <pubDate>Sun, 25 Jan 2026 10:35:32 +0530</pubDate>
      <guid>https://www.s-anand.net/blog/google-ai-tools-list/</guid>
      <description>&lt;p&gt;Google has released a huge number of AI tools. Not all are useful, but some are quite powerful. Here&amp;rsquo;s a list of the tools &lt;a href=&#34;https://chatgpt.com/share/6975a939-0398-8003-beea-2bc4c32f8ba8&#34;&gt;ChatGPT&lt;/a&gt; could find.&lt;/p&gt;
&lt;!-- https://chatgpt.com/c/6975a48b-edec-8320-b452-6731c9aed916 --&gt;
&lt;p&gt;🟢 = I find it good. 🟡 = Not too impressive. 🔴 = Avoid.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Assistants, research, and knowledge work
&lt;ul&gt;
&lt;li&gt;🟢 &lt;a href=&#34;https://gemini.google.com/&#34;&gt;Gemini&lt;/a&gt; is Google&amp;rsquo;s main AI assistant app. Use it as a &lt;em&gt;meeting-prep copilot&lt;/em&gt;: paste the agenda + last email thread, ask for &amp;ldquo;3 likely objections + crisp rebuttals + 5 questions that sound like I did my homework.&amp;rdquo;
&lt;ul&gt;
&lt;li&gt;🟢 &lt;a href=&#34;https://gemini.google/overview/deep-research/&#34;&gt;Gemini Deep Research&lt;/a&gt; is Gemini&amp;rsquo;s agentic research mode that browses many sources (optionally your Gmail/Drive/Chat) and produces multi-page reports. Use it to build a &lt;em&gt;client brief with citations&lt;/em&gt; (market, competitors, risks), then reuse it for outreach or a deck outline.&lt;/li&gt;
&lt;li&gt;🟢 &lt;a href=&#34;https://gemini.google/overview/canvas/&#34;&gt;Gemini Canvas&lt;/a&gt; turns ideas (and Deep Research reports) into shareable artifacts like web pages, quizzes, and simple apps. Use it to convert a research report into an &lt;em&gt;interactive explainer page&lt;/em&gt; your team can share internally.&lt;/li&gt;
&lt;li&gt;🟢 &lt;a href=&#34;https://gemini.google/overview/agent/&#34;&gt;Gemini Agent&lt;/a&gt; is an experimental &amp;ldquo;do multi-step tasks for me&amp;rdquo; feature that can use connected apps (Gmail/Calendar/Drive/Keep/Tasks, plus Maps/YouTube). Use it to &lt;em&gt;plan a week of customer check-ins&lt;/em&gt;: &amp;ldquo;find stalled deals, draft follow-ups, propose times, and create calendar holds-show me before sending.&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;🟢 &lt;a href=&#34;https://notebooklm.google.com/&#34;&gt;NotebookLM&lt;/a&gt; is a source-grounded research notebook: it answers from your uploaded sources and can generate Audio Overviews. Use it to turn a messy folder of PDFs into a &lt;em&gt;decision memo&lt;/em&gt; + an &amp;ldquo;AI podcast&amp;rdquo; you can listen to while walking.&lt;/li&gt;
&lt;li&gt;🟡 &lt;a href=&#34;https://pinpoint.google.com/&#34;&gt;Pinpoint&lt;/a&gt; (Journalist Studio) helps explore huge collections of docs/audio/images with entity extraction and search. Use it for &lt;em&gt;internal investigations / audit trails&lt;/em&gt;: upload contracts + emails, then trace every mention of a vendor and its linked people/locations.&lt;/li&gt;
&lt;li&gt;🟢 &lt;a href=&#34;https://www.google.com/search?udm=50&#34;&gt;Google AI Mode&lt;/a&gt; exposes experimental Search experiences (including AI Mode where available). Use it for &lt;em&gt;rapid competitive scans&lt;/em&gt;: run the same query set weekly and track what changed in the AI-generated summaries vs links.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://blog.google/technology/google-labs/project-mariner/&#34;&gt;Project Mariner&lt;/a&gt; is a Google Labs &amp;ldquo;agentic&amp;rdquo; prototype aimed at taking actions on your behalf in a supervised way. Use it to &lt;em&gt;prototype a real workflow&lt;/em&gt; (e.g., &amp;ldquo;collect pricing from 20 vendor pages into a table&amp;rdquo;) before you invest in automating it properly.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Workspace and &amp;ldquo;AI inside Google apps&amp;rdquo;
&lt;ul&gt;
&lt;li&gt;🟢 &lt;a href=&#34;https://workspace.google.com/&#34;&gt;Google Workspace with Gemini&lt;/a&gt; brings Gemini into Gmail/Docs/Sheets/Drive, etc. Use it to &lt;em&gt;turn a weekly leadership email&lt;/em&gt; into: (1) action items per owner, (2) a draft reply, and (3) a one-slide summary for your staff meeting.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://workspace.google.com/products/vids/&#34;&gt;Google Vids&lt;/a&gt; is Workspace&amp;rsquo;s AI-assisted video creation tool. Use it to convert a project update doc into a &lt;em&gt;2-3 minute narrated update video&lt;/em&gt; for stakeholders who don&amp;rsquo;t read long emails.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://edu.google.com/intl/ALL_in/ai/gemini-for-education/&#34;&gt;Gemini for Education&lt;/a&gt; packages Gemini for teaching/learning contexts. Use it to generate &lt;em&gt;differentiated practice&lt;/em&gt;: same concept, three difficulty levels + a rubric + common misconceptions.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Build: developer + agent platforms
&lt;ul&gt;
&lt;li&gt;🟢 &lt;a href=&#34;https://aistudio.google.com/&#34;&gt;Google AI Studio&lt;/a&gt; is the fast path to prototyping with Gemini models and tools. Use it to build a &lt;em&gt;&amp;ldquo;contract red-flagger&amp;rdquo;&lt;/em&gt;: upload a contract, extract clauses into structured JSON, and generate a risk report you can paste into your workflow.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://firebase.studio/&#34;&gt;Firebase Studio&lt;/a&gt; is a browser-based &amp;ldquo;full-stack AI workspace&amp;rdquo; with agents, unifying Project IDX into Firebase. Use it to ship a &lt;em&gt;real internal tool&lt;/em&gt; (auth + UI + backend) without local setup, then deploy with Firebase/Cloud Run.&lt;/li&gt;
&lt;li&gt;🟢 &lt;a href=&#34;https://jules.google/&#34;&gt;Jules&lt;/a&gt; is an autonomous coding agent that connects to your GitHub repo and works through larger tasks on its own. E.g. give it “upgrade dependencies, fix the failing tests, and open a PR with a clear changelog,” then review it like a teammate’s PR instead of doing the grind yourself.
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://jules.google/docs/cli/reference/&#34;&gt;Jules Tools (CLI)&lt;/a&gt; is a command-line interface for running and monitoring Jules from your terminal or CI. E.g. pipe a TODO list into “one task per session,” auto-run nightly maintenance (lint/format/test fixes), and have it open PRs you can batch-review in the morning&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://developers.google.com/jules/api&#34;&gt;Jules API&lt;/a&gt; lets you programmatically trigger Jules from other systems. E.g. when a build fails, your pipeline can call the API with logs + stack trace, have Jules propose a fix + tests, and post a PR link back into Slack/Linear for human approval&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://idx.dev/&#34;&gt;Project IDX &amp;gt; Firebase Studio&lt;/a&gt; is the transition site if you used IDX. Use it to keep your existing workspaces but move to the newer Studio flows (agents + Gemini assistance).&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://genkit.dev/&#34;&gt;Genkit&lt;/a&gt; is an open-source framework for building AI-powered apps (workflows, tool use, structured output) across providers. Use it to productionize an &lt;em&gt;agentic workflow&lt;/em&gt; (RAG + tools + eval) with a local debugging UI before deployment.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://stax.withgoogle.com/&#34;&gt;Stax&lt;/a&gt; is Google’s evaluation platform for LLM apps (prompts, models, and end-to-end behaviors), built to replace “vibe testing” with repeatable scoring. E.g. codify your product’s rubric (tone, factuality, refusal correctness, latency), run it against every prompt/model change, and block releases when key metrics regress&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://deepmind.google/models/synthid/&#34;&gt;SynthID&lt;/a&gt; is DeepMind’s watermarking approach for identifying AI-generated/altered content. E.g. in an org that publishes lots of content, watermark what your tools generate and use detection as part of provenance checks before external release
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://ai.google.dev/responsible/docs/safeguards/synthid&#34;&gt;SynthID Text&lt;/a&gt; is the developer-facing tooling/docs for watermarking and detecting LLM-generated text. E.g. watermark outbound “AI-assisted” customer emails and automatically route them for review if they’re about regulated topics&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://ai.google.dev/responsible&#34;&gt;Responsible Generative AI Toolkit&lt;/a&gt; is Google’s “safeguards” hub: watermarking, safety classifiers, and guidance to reduce abuse and failure modes. E.g. wrap your app with layered defenses (input filtering + output moderation + policy tests) so one jailbreak prompt doesn’t become a security incident&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://cloud.google.com/products/agent-builder&#34;&gt;Vertex AI Agent Builder&lt;/a&gt; is Google Cloud&amp;rsquo;s platform to build, deploy, and govern enterprise agents grounded in enterprise data. Use it to build a &lt;em&gt;customer-support agent&lt;/em&gt; that can read policy docs, query BigQuery, and write safe responses with guardrails.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://codeassist.google/&#34;&gt;Gemini Code Assist&lt;/a&gt; is Gemini in your IDE (and beyond) with chat, completions, and agentic help. Use it for &lt;em&gt;large refactors&lt;/em&gt;: ask it to migrate a module, generate tests, and propose PR-ready diffs with explanations.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://pair.withgoogle.com/tools/&#34;&gt;PAIR Tools&lt;/a&gt; is Google’s hub of practical tools for understanding/debugging ML behavior (especially interpretability and fairness). E.g. before launch, run “slice analysis + counterfactual edits + feature sensitivity” to find where the model breaks on real user subgroups&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://pair-code.github.io/lit/&#34;&gt;LIT (Learning Interpretability Tool)&lt;/a&gt; is an interactive UI for probing models on text/image/tabular data. E.g. debug prompt brittleness by comparing outputs across controlled perturbations (tense, style, sensitive attributes) and visualizing salience/attribution to see what the model is actually using&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://pair-code.github.io/what-if-tool/&#34;&gt;What-If Tool&lt;/a&gt; is a minimal-coding tool to probe model predictions and fairness. E.g. manually edit a single example into multiple “what-if” counterfactuals and see which feature flips the decision, then turn that into a targeted data collection plan&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://pair-code.github.io/facets/&#34;&gt;Facets&lt;/a&gt; helps you explore and visualize datasets to catch skew, outliers, and leakage early. E.g. audit a training set for missingness and subgroup imbalance, then fix data before you waste time “tuning your way out” of a data problem&lt;/li&gt;
&lt;li&gt;🟡 &lt;a href=&#34;https://github.com/google-gemini/gemini-cli&#34;&gt;Gemini CLI&lt;/a&gt; brings Gemini into the terminal with file ops, shell commands, and search grounding. Use it as a &lt;em&gt;repo-native &amp;ldquo;ops copilot&amp;rdquo;&lt;/em&gt;: &amp;ldquo;scan logs, find the regression, propose the patch, run tests, and summarize.&amp;rdquo;&lt;/li&gt;
&lt;li&gt;🟡 &lt;a href=&#34;https://deepmind.google/products/antigravity/&#34;&gt;Antigravity&lt;/a&gt; (DeepMind) is positioned as an agentic development environment. Use it when you want &lt;em&gt;multiple agents running tasks in parallel&lt;/em&gt; (debugging, refactoring, writing tests) while you supervise.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.cloud.google.com/gemini/docs/overview&#34;&gt;Gemini for Google Cloud&lt;/a&gt; is Gemini embedded across many Google Cloud products. Use it for &lt;em&gt;cloud incident triage&lt;/em&gt;: summarize logs, hypothesize root cause, and generate the Terraform/IaC fix.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Create: media, design, marketing, and &amp;ldquo;labs&amp;rdquo; tools
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://labs.google/&#34;&gt;Google Labs&lt;/a&gt; is the hub for many experiments (Mixboard, Opal, CC, Learn Your Way, Doppl, etc.). Use it as your &amp;ldquo;what&amp;rsquo;s new&amp;rdquo; page-many tools show up here before they become mainstream.&lt;/li&gt;
&lt;li&gt;🟡 &lt;a href=&#34;https://opal.google/&#34;&gt;Opal&lt;/a&gt; builds, edits, and shares AI mini-apps from natural language (with a workflow editor). Use it to create a &lt;em&gt;repeatable analyst tool&lt;/em&gt; (e.g., &amp;ldquo;take a company name &amp;gt; pull recent news &amp;gt; summarize risks &amp;gt; draft outreach&amp;rdquo;).&lt;/li&gt;
&lt;li&gt;🟡 &lt;a href=&#34;https://mixboard.google.com/projects&#34;&gt;Mixboard&lt;/a&gt; is an AI concepting canvas/board for exploring and refining ideas. Use it to run a &lt;em&gt;structured ideation sprint&lt;/em&gt;: generate 20 variants, cluster them, then turn the top 3 into crisp one-pagers.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://labs.google.com/pomelli/about/&#34;&gt;Pomelli&lt;/a&gt; is a Labs marketing/brand tool that can infer brand identity and generate on-brand campaign assets. Use it to produce a &lt;em&gt;month of consistent social posts&lt;/em&gt; from your website + a few product photos.&lt;/li&gt;
&lt;li&gt;🟡 &lt;a href=&#34;https://stitch.withgoogle.com/&#34;&gt;Stitch&lt;/a&gt; turns prompts/sketches into UI designs and code. Use it to go from a rough wireframe to &lt;em&gt;React/Tailwind starter code&lt;/em&gt; you can hand to an engineer the same day.&lt;/li&gt;
&lt;li&gt;🟡 &lt;a href=&#34;https://labs.google/fx/tools/flow/&#34;&gt;Flow&lt;/a&gt; is a Labs tool aimed at AI video/story production workflows (built around Google&amp;rsquo;s gen-media stack). Use it to create a &lt;em&gt;pitch sizzle reel&lt;/em&gt; quickly: consistent characters + scenes + a simple timeline.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://labs.google/fx/tools/whisk/&#34;&gt;Whisk&lt;/a&gt; is a Labs image tool focused on controllable remixing (subject/scene/style style workflows). Use it for &lt;em&gt;fast, art-directable moodboards&lt;/em&gt; when text prompting is too loose.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://labs.google/fx/tools/image-fx/&#34;&gt;ImageFX&lt;/a&gt; is Google Labs&amp;rsquo; image-generation playground. Use it to iterate &lt;em&gt;brand-safe visual directions&lt;/em&gt; quickly (e.g., generate 30 &amp;ldquo;hero image&amp;rdquo; variants, pick 3, then refine).&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://labs.google/fx/tools/video-fx/&#34;&gt;VideoFX&lt;/a&gt; is the Labs surface for generative video (Veo-powered). Use it to prototype &lt;em&gt;short looping video backgrounds&lt;/em&gt; for product pages or events.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://labs.google/fx/tools/music-fx/&#34;&gt;MusicFX&lt;/a&gt; is the Labs music generation tool. Use it to generate &lt;em&gt;royalty-free stems&lt;/em&gt; (intro/outro/ambient) for podcasts or product videos.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://labs.google/doppl&#34;&gt;Doppl&lt;/a&gt; is a Labs try-on style experiment/app. Use it to sanity-check &lt;em&gt;creative wardrobe ideas&lt;/em&gt; before you buy, or to mock up &amp;ldquo;virtual merch&amp;rdquo; looks for a campaign.&lt;/li&gt;
&lt;li&gt;🟢 &lt;a href=&#34;https://gemini.google/overview/storybook/&#34;&gt;Gemini Storybook&lt;/a&gt; creates illustrated stories. Use it to generate &lt;em&gt;custom reading material&lt;/em&gt; for a specific learner&amp;rsquo;s interests (and adjust reading level/style).&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://textfx.withgoogle.com/&#34;&gt;TextFX&lt;/a&gt; is a Labs-style writing creativity tool (wordplay, transformations, constraints). Use it to generate &lt;em&gt;10 distinct &amp;ldquo;hooks&amp;rdquo;&lt;/em&gt; for the same idea before you write the real piece.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://labs.google/gentype&#34;&gt;GenType&lt;/a&gt; is a Labs experiment for AI-generated alphabets/type. Use it to create &lt;em&gt;a distinctive event identity&lt;/em&gt; (custom letterforms) without hiring a type designer for a one-off.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Science, security, and &amp;ldquo;serious AI&amp;rdquo;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://alphafoldserver.com/&#34;&gt;AlphaFold Server&lt;/a&gt; provides AlphaFold structure prediction as a web service. Use it to test &lt;em&gt;protein/ligand interaction hypotheses&lt;/em&gt; before spending lab time or compute on deeper simulations.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://cloud.google.com/security/products/threat-intelligence&#34;&gt;Google Threat Intelligence&lt;/a&gt; uses Gemini to help analyze threats and triage signals. Use it to turn a noisy alert stream into a &lt;em&gt;prioritized, explainable threat narrative&lt;/em&gt; your SOC can act on.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Models
&lt;ul&gt;
&lt;li&gt;🟡 &lt;a href=&#34;https://deepmind.google/models/gemma/&#34;&gt;Gemma&lt;/a&gt; is DeepMind’s family of lightweight open models built from the same tech lineage as Gemini. E.g. run a small, controlled model inside your VPC for narrow tasks (classification, extraction, safety filtering) when sending data to hosted LLMs is undesirable&lt;/li&gt;
&lt;li&gt;🟡 &lt;a href=&#34;https://cloud.google.com/model-garden&#34;&gt;Model Garden&lt;/a&gt; is Vertex AI’s catalog to discover, test, customize, and deploy models from Google and partners. E.g. shortlist 3 candidate models, run the same eval set, then deploy the winner behind one standardized platform with enterprise controls&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://cloud.google.com/generative-ai-studio&#34;&gt;Vertex AI Studio&lt;/a&gt; is the Google Cloud console surface for prototyping and testing genAI (prompts, model customization) in a governed environment. E.g. keep “prompt versions + test sets + pass/fail criteria” together so experiments become auditable artifacts, not scattered chats&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://ai.google.dev/edge/model-explorer&#34;&gt;Model Explorer&lt;/a&gt; helps you visually inspect model graphs so you can debug conversion/quantization and performance issues. E.g. compare two quantization strategies and pinpoint exactly which ops caused a latency spike or accuracy drop before you deploy&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://ai.google.dev/edge&#34;&gt;Google AI Edge&lt;/a&gt; is the umbrella for building on-device AI (mobile/web) with ready-to-use APIs across vision, audio, text, and genAI. E.g. ship an offline, privacy-preserving feature (document classification or on-device summarization) so latency and data exposure don’t depend on the network
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://ai.google.dev/edge/ai-edge-portal&#34;&gt;Google AI Edge Portal&lt;/a&gt; benchmarks LiteRT models across many real devices so you don’t guess performance from one phone. E.g. test the same model on a spread of target devices and pick the smallest model/config that consistently hits your FPS/latency target&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://playground.tensorflow.org/&#34;&gt;TensorFlow Playground&lt;/a&gt; is an interactive sandbox for understanding neural networks. E.g. use it to teach or debug intuitions—show how regularization, feature interactions, or class imbalance changes decision boundaries in minutes&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://teachablemachine.withgoogle.com/&#34;&gt;Teachable Machine&lt;/a&gt; lets anyone train simple image/sound/pose models in the browser and export them. E.g. prototype an accessibility feature (custom gesture or sound trigger) fast, then export the model to a small web demo your stakeholders can try&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Directories (&amp;ldquo;where to discover the rest&amp;rdquo;)
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://deepmind.google/&#34;&gt;Google DeepMind Products &amp;amp; Models&lt;/a&gt; (Gemini, Veo, Astra, Genie, etc.)-best &amp;ldquo;canonical list&amp;rdquo; of what exists.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://labs.google/experiments?category=develop&#34;&gt;Google Labs Experiments directory&lt;/a&gt;-browse by category (develop/create/learn) to catch smaller experiments you didn&amp;rsquo;t know to search for.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://experiments.withgoogle.com/&#34;&gt;Experiments with Google&lt;/a&gt; is a gallery of interactive demos (many AI) that’s great for prompt/data literacy and workshop “aha” moments. E.g. curate 5 experiments as a hands-on “AI intuition lab” for your team so they learn failure modes by playing, not by reading docs&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    <item>
      <title></title>
      <link>https://www.s-anand.net/blog/qwen-coder-and-code/</link>
      <pubDate>Fri, 15 Aug 2025 00:00:00 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/qwen-coder-and-code/</guid>
      <description>&lt;p&gt;Alibaba released an open-source coding model (qwen-coder) and tool (qwen-code).&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;qwen-code + qwen-coder cost 8 cents and made 3 mistakes. &lt;a href=&#34;https://lnkd.in/gguSGdv6&#34;&gt;https://lnkd.in/gguSGdv6&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;qwen-code + claude-sonnet-4 cost 104 cents and made no mistakes. &lt;a href=&#34;https://lnkd.in/gEPnVS-F&#34;&gt;https://lnkd.in/gEPnVS-F&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;claude-code cost 29 cents and made no mistakes. &lt;a href=&#34;https://lnkd.in/gyCVeAr4&#34;&gt;https://lnkd.in/gyCVeAr4&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There&amp;rsquo;s no reason to shift yet, but it&amp;rsquo;s a good step in the development of open code models &amp;amp; tools.&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://files.s-anand.net/images/2025-08-15-qwen-coder-and-code-linkedin.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.linkedin.com/posts/sanand0_alibaba-released-an-open-source-coding-model-activity-7355586584324304897-G18D&#34;&gt;LinkedIn&lt;/a&gt;&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Things I Learned - 16 Feb 2025</title>
      <link>https://www.s-anand.net/blog/things-i-learned-16-feb-2025/</link>
      <pubDate>Sun, 16 Feb 2025 00:00:00 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/things-i-learned-16-feb-2025/</guid>
      <description>&lt;p&gt;This week, I learned:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.connectedpapers.com/&#34;&gt;Connected Papers&lt;/a&gt; shows papers similar to each other based on co-citation and bibliographic coupling for ~50,000 papers.&lt;/li&gt;
&lt;li&gt;Notes from a fireside chat with &lt;a href=&#34;https://www.linkedin.com/in/pchandrasekar/&#34;&gt;Prashanth Chandrasekar&lt;/a&gt;, CEO, StackOverflow, and the StackOverflow team
&lt;ul&gt;
&lt;li&gt;There&amp;rsquo;s a signal that software demand is growing in 2024. Many more students took the StackOverflow survey in 2024. So more students (or other professionals) are shifting into / starting to learn software development.&lt;/li&gt;
&lt;li&gt;The &lt;a href=&#34;https://aiindex.stanford.edu/report/&#34;&gt;AI Index&lt;/a&gt; is a good resource for AI trends.&lt;/li&gt;
&lt;li&gt;Experts are better able to use AI for writing code. Less experienced developers are more likely to use AI for code reviews, project planning, etc.&lt;/li&gt;
&lt;li&gt;There&amp;rsquo;s a 5% &lt;em&gt;decline&lt;/em&gt; in favorability for AI tools compared to 2023, maybe due to disappointing results.&lt;/li&gt;
&lt;li&gt;Pilot groups working on AI are 25-30% more productive. They&amp;rsquo;re the most enthusiastic. For the rest of the company, it drops off to 5-10%
&lt;ul&gt;
&lt;li&gt;#LEARNING Benefit comes from NEW people becoming programmers, not existing ones getting more effective?&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;StackOverflow wants to be where the developer is.
&lt;ul&gt;
&lt;li&gt;The programmer workflow was: Google -&amp;gt; StackOverflow -&amp;gt; GitHub.&lt;/li&gt;
&lt;li&gt;Now it&amp;rsquo;s changing to ChatGPT / Cursor -&amp;gt; GitHub.&lt;/li&gt;
&lt;li&gt;StackOverflow has a partnership with OpenAI and working on a plugin. Same with Google&amp;rsquo;s Duet AI, GitHub Copilot, many others. They&amp;rsquo;ll link to StackOverflow.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;StackOverflow is driving integration actively through an enterprise Overflow API&lt;/li&gt;
&lt;li&gt;Q: What tech have you seen blaze through the ranks?
&lt;ul&gt;
&lt;li&gt;Prashanth: Abstraction wins. Stuff that abstracts away things well and more wins. This includes Gen AI.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://stackoverflow.blog/author/eyepis/&#34;&gt;Erin Yepis&lt;/a&gt;: Rust (from 3% to 12%). AWS has steady growth.&lt;/li&gt;
&lt;li&gt;Erin Yapis: I have a time series spreadsheet that I&amp;rsquo;ll publish.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Q: What technologies are unusually tightly coupled?
&lt;ul&gt;
&lt;li&gt;Prashanth: AWS &amp;amp; Google Cloud are tightly coupled.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Q: We have an engagement problem. Might be India-specific. What are low-effort high-return mechanisms to increase engagement.
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.linkedin.com/in/eric-woodring-1823bb84/&#34;&gt;Eric Woodring&lt;/a&gt;: Rather than a static web page, integrate it using the API. #TODO&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.linkedin.com/in/benjaminmarconi/&#34;&gt;Ben Marconi&lt;/a&gt;: Use LLMs to write post mortems and push to StackOverflow. #TODO&lt;/li&gt;
&lt;li&gt;Eric Woodring: &amp;ldquo;Hydrating&amp;rdquo; the community helps.
&lt;ul&gt;
&lt;li&gt;We take repeat questions on Teams / Slack and seed them using LLMs.&lt;/li&gt;
&lt;li&gt;We integrate with the API to auto-add Q&amp;amp;A.&lt;/li&gt;
&lt;li&gt;Transform documentation into Q&amp;amp;A. Potentially &lt;strong&gt;UPDATE&lt;/strong&gt; existing Q&amp;amp;A if it&amp;rsquo;s wrong.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Q: What unexpected lessons about developer behavior have you learned while running StackOverflow?
&lt;ul&gt;
&lt;li&gt;Prashanth: We didn&amp;rsquo;t expect developers moving away from Google. Now it moved to the IDE.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Q: What are you learning about developer learning behavior?
&lt;ul&gt;
&lt;li&gt;Ben Marconi: Generating LLM-based onboarding documents.&lt;/li&gt;
&lt;li&gt;Using StackOverflow for Teams to identify who the experts are to contact for specific topics.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Q: Are you thinking about leveraging Stack Overflow&amp;rsquo;s knowledge base for personalized or interactive learning experiences? How?
&lt;ul&gt;
&lt;li&gt;Prashanth: Traditionally, people use StackOveflow for productivity, learning, and flexibility (i.e. to ask/answer questions asynchronously without breaking their flow). So yeah, learning is important for us. (Duh!)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Q: Could Stack Overflow’s interactions help evaluate the accuracy and relevance of LLM-generated code? Or provide potential metrics on quality?
&lt;ul&gt;
&lt;li&gt;Prashanth: LLM accuracy improves by ~30%. Upvotes / downvotes are reinforcement learning (RL) in steroids, so that helps.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Q: What are your thoughts on reliance on LLMs potentially deskill-ing developers?
&lt;ul&gt;
&lt;li&gt;Prashanth: A real issue for &lt;em&gt;junior&lt;/em&gt; developers, not for senior ones.&lt;/li&gt;
&lt;li&gt;They&amp;rsquo;ll &lt;em&gt;come across&lt;/em&gt; as knowledgeable.&lt;/li&gt;
&lt;li&gt;Make internal evaluations and interviews more rigorous.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Anand&amp;rsquo;s requests for action:
&lt;ul&gt;
&lt;li&gt;Could I get a copy of Erin&amp;rsquo;s spreadsheet? Vivek Narayanan will follow-up.&lt;/li&gt;
&lt;li&gt;Could you help me learn more about hydration? Nick Madison will set up a meeting with customer success group.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;I switched to &lt;a href=&#34;https://fishshell.com/&#34;&gt;fish shell&lt;/a&gt; mainly because:
&lt;ul&gt;
&lt;li&gt;Autocomplete and tab completion works perfectly, out-of-box.&lt;/li&gt;
&lt;li&gt;Syntax highlighting is beautiful&lt;/li&gt;
&lt;li&gt;Great multi-line editing&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;To format with &lt;a href=&#34;https://marketplace.visualstudio.com/items?itemName=charliermarsh.ruff&#34;&gt;VS Code Ruff&lt;/a&gt;, you need to point the &lt;code&gt;ruff.interpreter&lt;/code&gt; setting to a Python interpreter. You can&amp;rsquo;t run the ruff server without Python, even though ruff itself doesn&amp;rsquo;t need Python.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;cd&lt;/code&gt; checks all paths specified in &lt;a href=&#34;https://pubs.opengroup.org/onlinepubs/9699919799/utilities/cd.html&#34;&gt;&lt;code&gt;CDPATH&lt;/code&gt;&lt;/a&gt; for the directory name and changes to the first match. That&amp;rsquo;s pretty convenient!&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://flipperzero.one/&#34;&gt;Flipper Zero&lt;/a&gt; is now on my list of &amp;ldquo;To Buy&amp;rdquo; tools. It has a variety of hardware devices including NFC, RFID, Bluetooth, Infrared, etc. and is great to reverse engineer or hack devices.&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    <item>
      <title>Why don&#39;t students hack exams when they can?</title>
      <link>https://www.s-anand.net/blog/why-dont-students-hack-exams-when-they-can/</link>
      <pubDate>Fri, 22 Nov 2024 10:38:09 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/why-dont-students-hack-exams-when-they-can/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;Why don&amp;rsquo;t students hack exams when they can?&#34; loading=&#34;lazy&#34; src=&#34;https://www.s-anand.net/blog/assets/calvin-tries-to-cheat-an-exam.webp&#34;&gt;&lt;/p&gt;
&lt;p&gt;This year, I created a series of tests for &lt;a href=&#34;https://study.iitm.ac.in/ds/course_pages/BSSE2002.html&#34;&gt;my course at IITM&lt;/a&gt; and to recruit for &lt;a href=&#34;https://gramener.com/&#34;&gt;Gramener&lt;/a&gt;. &lt;/p&gt;
&lt;p&gt;The tests had 2 interesting features.&lt;/p&gt;
&lt;h3 class=&#34;wp-block-heading&#34;&gt;&lt;strong&gt;One question required them to hack the page&lt;/strong&gt;&lt;/h3&gt;
&lt;blockquote class=&#34;wp-block-quote&#34;&gt;
&lt;p&gt;Write the body of the request to an &lt;a href=&#34;https://platform.openai.com/docs/api-reference/chat&#34;&gt;OpenAI chat completion call&lt;/a&gt; that:&lt;/p&gt;
&lt;ul class=&#34;wp-block-list&#34;&gt;
&lt;li&gt;Uses model &lt;code&gt;gpt-4o-mini&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Has a &lt;code&gt;system&lt;/code&gt; message: &lt;code&gt;Respond in JSON&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Has a user message: &lt;code&gt;Generate 10 random addresses in the US&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Uses &lt;a href=&#34;https://platform.openai.com/docs/guides/structured-outputs/&#34;&gt;structured outputs&lt;/a&gt; to respond with an object &lt;code&gt;addresses&lt;/code&gt; which is an array of objects with &lt;strong&gt;required&lt;/strong&gt; fields: &lt;code&gt;street&lt;/code&gt; (string) &lt;code&gt;city&lt;/code&gt; (string) &lt;code&gt;apartment&lt;/code&gt; (string) .&lt;/li&gt;
&lt;li&gt;Sets &lt;code&gt;additionalProperties&lt;/code&gt; to &lt;code&gt;false&lt;/code&gt; to prevent additional properties.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;What is the JSON body we should send to &lt;code&gt;https://api.openai.com/v1/chat/completions&lt;/code&gt; for this? (No need to run it or to use an API key. Just write the body of the request below.)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;There&#39;s no answer box above. Figure out how to enable it. That&#39;s part of the test.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The only way to even &lt;em&gt;attempt&lt;/em&gt; this question is to inspect the page, find the hidden input and make it visible. (This requires removing a class, an attribute, and a style - from different places.)&lt;/p&gt;
&lt;p&gt;Here&#39;s the number of people who managed to enable the text box and answer it.&lt;/p&gt;
&lt;figure class=&#34;wp-block-table&#34;&gt;&lt;table class=&#34;has-fixed-layout&#34;&gt;&lt;thead&gt;&lt;tr&gt;&lt;th class=&#34;has-text-align-left&#34; data-align=&#34;left&#34;&gt;College&lt;/th&gt;&lt;th class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;# students&lt;/th&gt;&lt;th class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;Enabled&lt;/th&gt;&lt;th class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;Answered&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&#34;has-text-align-left&#34; data-align=&#34;left&#34;&gt;NIT Bhopal&lt;/td&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;144&lt;/td&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;4 (2.8%)&lt;/td&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;0 (0.0%)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&#34;has-text-align-left&#34; data-align=&#34;left&#34;&gt;CBIT&lt;/td&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;277&lt;/td&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;16 (5.8%)&lt;/td&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;0 (0.0%)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&#34;has-text-align-left&#34; data-align=&#34;left&#34;&gt;IIT Madras&lt;/td&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;693&lt;/td&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;74 (10.7%)&lt;/td&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;4 (0.6%)&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;A few things surprised me.&lt;/p&gt;
&lt;p&gt;First, I think &lt;strong&gt;students don&#39;t inspect HTML&lt;/strong&gt;. Less than 10% of students managed to modify the HTML page, &lt;em&gt;even after being told they need to&lt;/em&gt;. &lt;strong&gt;But they know web programming&lt;/strong&gt;. 49 students at CBIT scored full marks on the rest of the questions, which includes CSS selectors and complex JS code. Maybe editing in a browser instead of an editor is a big mental leap?&lt;/p&gt;
&lt;p&gt;Second, almost &lt;strong&gt;no one could solve this problem&lt;/strong&gt;. There are 3 ways to easily solve it.&lt;/p&gt;
&lt;ol class=&#34;wp-block-list&#34;&gt;
&lt;li&gt;Copy the question and relevant test cases from my exam page&#39;s JavaScript into ChatGPT and ask for an answer. (I test it and it works.)&lt;/li&gt;
&lt;li&gt;Copy the question and &lt;a href=&#34;https://platform.openai.com/docs/guides/structured-outputs&#34;&gt;structured output documentation&lt;/a&gt; to ChatGPT and ask for an answer. (I tested it and it works.)&lt;/li&gt;
&lt;li&gt;Create a random JSON and just keep fixing the errors manually until it passes. (The exam gives detailed error messages like &#34;The system message must be &#39;Respond in JSON&#39;&#34;, &#34;addresses items must be an object&#34;, etc.)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Maybe questions from a curriculum are easier to solve than questions not in a curriculum? Or is JSON schema too hard?&lt;/p&gt;
&lt;h3 class=&#34;wp-block-heading&#34;&gt;The exam was officially hackable&lt;/h3&gt;
&lt;p&gt;All validation was on the client side. The JS code was minified and answers are dynamically generated. But a student can set a breakpoint, see the answers, and modify their responses.&lt;/p&gt;
&lt;p&gt;The students at NIT Bhopal and CBIT were not explicitly told that. The students at IITM were &lt;em&gt;explicitly told&lt;/em&gt; that they could (and are welcome to) hack it.&lt;/p&gt;
&lt;p&gt;Out of the 1,114 students who took these tests, &lt;strong&gt;only one student actually hacked it&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;(How do I know that? No other student got full marks. This student got full marks with empty answers.)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;It&#39;s probably not that difficult&lt;/strong&gt;. My &lt;a href=&#34;https://github.com/sanand0/tools-in-data-science-public/blob/4f42624aadf58aca21b46d3a4b6e856c2ae85adf/2-data-sourcing.md#scraping-the-imdb-with-browser-javascript&#34;&gt;course content&lt;/a&gt; covers scraping pages using JavaScript using DevTools. Inspecting JS is just a step away.&lt;/p&gt;
&lt;p&gt;I did chat with the student who hacked it, asking:&lt;/p&gt;
&lt;blockquote class=&#34;wp-block-quote&#34;&gt;
&lt;p&gt;&lt;strong&gt;Anand&lt;/strong&gt;: How come you didn&#39;t share the details of the hack with others?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Student&lt;/strong&gt;: I did with a few but I am not sure whether or not they were able to figure it out still.&lt;br/&gt;Most students in the program still require a lot of handholding even with basic things.&lt;br/&gt;Experience from being a TA [Teaching Assistant] past term.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 class=&#34;wp-block-heading&#34;&gt;Why didn&#39;t they hack?&lt;/h3&gt;
&lt;p&gt;Maybe...&lt;/p&gt;
&lt;ol class=&#34;wp-block-list&#34;&gt;
&lt;li&gt;&lt;strong&gt;They don&#39;t believe me&lt;/strong&gt;. What if hacking the exam page is considered cheating, even if explicitly allowed?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The time pressure is too much&lt;/strong&gt;. They&#39;d rather solve what they know than risk wasting time hacking.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;It feels wrong&lt;/strong&gt;. They&#39;d rather answer based on their knowledge than take a shortcut.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;They don&#39;t know how&lt;/strong&gt;. Using DevTools is more sophisticated than web programming.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Issue #1 - the trust issue - is solveable. We can issue multiple official notices.&lt;/p&gt;
&lt;p&gt;Issue #4 - capability - is not worth solving. My aim is to get students to do stuff they weren&#39;t taught.&lt;/p&gt;
&lt;p&gt;Issue #2 &amp;amp; #3 - &lt;strong&gt;a risk-taking culture&lt;/strong&gt; - is what I want to encourage. It might teach them to blur ethical lines and neglect fundamentals (which are bad), but it might also build adaptability, creativity, and prepare them for real-world scenarios.&lt;/p&gt;
&lt;p&gt;Personally, I need more team members that get the job done even if they&#39;ve never done it before.&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Things I Learned - 10 Mar 2024</title>
      <link>https://www.s-anand.net/blog/things-i-learned-10-mar-2024/</link>
      <pubDate>Sun, 10 Mar 2024 00:00:00 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/things-i-learned-10-mar-2024/</guid>
      <description>&lt;p&gt;This week, I learned:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Mughals just replaced the top of most temples with Mosque domes as part of the conquer or die policy&lt;/li&gt;
&lt;li&gt;&amp;ldquo;Math is racist&amp;rdquo;. Because people who can&amp;rsquo;t solve it can&amp;rsquo;t because of their underprivileged background!&lt;/li&gt;
&lt;li&gt;Winners: commodity businesses, companies that own lots of data like Reddit and Stackoverflow, profitable bootstrapped businesses&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://twitter.com/karpathy/status/1760388761349927356&#34;&gt;Making a tool more usable, e.g. a video, can have a 10-100X impact&lt;/a&gt;. Yet every developer thinks it&amp;rsquo;s redundant&lt;/li&gt;
&lt;li&gt;All in one podcast. Can Google save itself?
&lt;ul&gt;
&lt;li&gt;the success of a developer platform is the number of people using it. But not everyone uses it equally. Some people create winning products which drives attention to the platform. Use llm proxy like that to measure weekly average users and cost saving through caching&lt;/li&gt;
&lt;li&gt;one week ago, if someone at Google stood up and said we have too many black people in our images, the responsible AI team would have shut them down calling them racist. They had too much power and it was a one-way conversation. With the backlash now, there is a lot more awareness and acceptance of the balance. Security is like that. It&amp;rsquo;s too easy to empower and shut things down until there is a backlash&lt;/li&gt;
&lt;li&gt;the lawyer&amp;rsquo;s job is to tell you what&amp;rsquo;s not possible. But like Travis, your job is to decide whether it&amp;rsquo;s worth the risk of running a taxi company without a license or not&lt;/li&gt;
&lt;li&gt;Americans pronounce Sundar pichai&amp;rsquo;s name as Sun Daar!&lt;/li&gt;
&lt;li&gt;data licensing has become a business model. Reddit, Accel springer, stack overflow and many others are licensing their content to Google and open AI for several million dollars.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    <item>
      <title>Things I Learned - 03 Mar 2024</title>
      <link>https://www.s-anand.net/blog/things-i-learned-03-mar-2024/</link>
      <pubDate>Sun, 03 Mar 2024 00:00:00 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/things-i-learned-03-mar-2024/</guid>
      <description>&lt;p&gt;This week, I learned:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://lamplightdev.com/blog/2024/01/10/streaming-html-out-of-order-without-javascript/&#34;&gt;You can use slots to stream HTML out of order&lt;/a&gt;!&lt;/li&gt;
&lt;li&gt;Shane Parrish. Short-term patience podcast
&lt;ul&gt;
&lt;li&gt;have a frame of reference to relate EVERY experience to. That helps you evaluate (measure) and learn. That&amp;rsquo;s part of what Charlie Munger&amp;rsquo;s lattice of frameworks is about&lt;/li&gt;
&lt;li&gt;when there is a very high or very low interest scenario, low interest scenario then go ultra long term. Issued hundred years when the interest rate regime was very low&lt;/li&gt;
&lt;li&gt;short term optimal is rally long term optimal. So you need to learn to take a loss and look like an idiot to play the long-term game&lt;/li&gt;
&lt;li&gt;grit is a behavior that enables long-term thinking. Short term success gives you the luxury to think about long term&lt;/li&gt;
&lt;li&gt;#IMP power is about optionality. It&amp;rsquo;s about being in a position where you have the options that can affect the positive change rather than circumstances controlling you. Read Robert greene&amp;rsquo;s book on the 48 laws of Power&lt;/li&gt;
&lt;li&gt;low leverage enables that&lt;/li&gt;
&lt;li&gt;begin with the end in mind. Always&lt;/li&gt;
&lt;li&gt;how do you think about risk? Well, things do happen. It&amp;rsquo;s as simple as that&lt;/li&gt;
&lt;li&gt;autonomy and decentralization helps derisk&lt;/li&gt;
&lt;li&gt;do more and more of what works. That&amp;rsquo;s a powerful way of compounding&lt;/li&gt;
&lt;li&gt;long-term investments are better than frequent trading because you get to reinvest the tax you otherwise would have paid. So unless the alternative is super compelling, stay invested&lt;/li&gt;
&lt;li&gt;if you need to be the person who DOES the thing, you delegate less, leverage list, compound less, because you have to DO. BE A PERSON WHO SETS THE FIELD INSTEAD. The coach, the chess master, the director, patient strategist who Waits for the good hit&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Being in Control motivates #Lesson. my cycle tires were flat. I thought it was someone pulling out the air and felt very demotivated. But once I carried my cycle pump, I felt so much more in control and power and felt a whole lot better&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://sourcegraph.com/&#34;&gt;SourceGraph&lt;/a&gt; is the default platform for private code completion &amp;amp; search&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.geeky-gadgets.com/ai-voice-cloning-and-creation/&#34;&gt;MetaVoice 1B&lt;/a&gt; offers voice cloning on American &amp;amp; British accents with 30s training&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://qwenlm.github.io/blog/qwen1.5/&#34;&gt;Qwen 1.5 72B&lt;/a&gt; appears to outperform Mistral Medium, making it one of the top non-proprietary models&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://llava-vl.github.io/blog/2024-01-30-llava-1-6/&#34;&gt;Llava 1.6&lt;/a&gt; is a substantial improvement over Llava 1.5 and slightly better than CogVLM, Qwen-VL&lt;/li&gt;
&lt;li&gt;AI scams are growing. &lt;a href=&#34;https://www.straitstimes.com/asia/east-asia/hk-firm-scammed-of-34-million-after-employee-is-duped-by-video-call-with-deepfake-of-cfo&#34;&gt;Deepfakes scammed $34m&lt;/a&gt;. But &lt;a href=&#34;https://www.sfchronicle.com/bayarea/article/ai-phone-scam-18561537.php?sid=64ffe30738148943ca040a9b&amp;amp;ss=A&amp;amp;st_rid=40d8ca22-ad29-44d1-bcfa-45dcd33455f0&#34;&gt;voice fake for kidnapping&lt;/a&gt; is scarier.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://youtu.be/u9dZd4jIxL0&#34;&gt;Buildspace&amp;rsquo;s demo&lt;/a&gt; is a great demo of how voice and actions can be used effectively.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/adefossez/demucs&#34;&gt;demucs&lt;/a&gt; does an EXCELLENT job of splitting songs into drums, bass, vocals and others&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    <item>
      <title>Things I Learned - 24 Dec 2023</title>
      <link>https://www.s-anand.net/blog/things-i-learned-24-dec-2023/</link>
      <pubDate>Sun, 24 Dec 2023 00:00:00 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/things-i-learned-24-dec-2023/</guid>
      <description>&lt;p&gt;This week, I learned:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://arxiv.org/abs/2305.18290&#34;&gt;DPO&lt;/a&gt; is a simpler alternative to RLHF for fine-tuning. Several &lt;a href=&#34;https://huggingface.co/search/full-text?q=DPO&amp;amp;type=model&#34;&gt;HuggingFace models use DPO for training&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/foxcroftjn/CanAI-Name2Vec/&#34;&gt;Name2Vec&lt;/a&gt; is a potential embedding for names.&lt;/li&gt;
&lt;li&gt;Google Knowledge Graph ID powers the Knowledge Graph. If it begins with /m/ it&amp;rsquo;s the same as the FreeBase ID. This is now available as WikiData. e.g &lt;a href=&#34;https://www.wikidata.org/wiki/Property:P2671&#34;&gt;https://www.wikidata.org/wiki/Property:P2671&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;I tried running Mixtral-8x7b locally (via Llamafile) and on &lt;a href=&#34;https://api.together.xyz/playground/chat/mistralai/Mixtral-8x7B-Instruct-v0.1&#34;&gt;together.ai&lt;/a&gt;. It&amp;rsquo;s good, but far from GPT 4.&lt;/li&gt;
&lt;li&gt;Generic computate-intensive algorithms eventually beat domain-specific tuning, because of Moore&amp;rsquo;s law. &lt;a href=&#34;http://www.incompleteideas.net/IncIdeas/BitterLesson.html&#34;&gt;Ref&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;The hidden brain podcast. the mystery of beauty
&lt;ul&gt;
&lt;li&gt;Evolution drove us to beauty as an efficient survival mechanism. Understanding the world is one such mechanism. Hence we enjoy maths and chess&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;⭐ &lt;a href=&#34;https://huggingface.co/spaces/lmsys/chatbot-arena-leaderboard&#34;&gt;This leaderboard&lt;/a&gt; included paid models like GPT4 and Claude and compared them with open models on HUMAN + system benchmarks&lt;/li&gt;
&lt;li&gt;Lez Friedman Podcast: Jeff Bezos
&lt;ul&gt;
&lt;li&gt;Build stuff that is is ubiquitous that other people take it for granted. The initial idea needs to be that obvious and easy. Like one click purchase or customer reviews&lt;/li&gt;
&lt;li&gt;Build stuff that other people can build on. Internet makes startups possible. Infrastructure is about enabling others at scale&lt;/li&gt;
&lt;li&gt;Decision making approaches: single person decides on two way doors. Deliberate as a team on one way doors&lt;/li&gt;
&lt;li&gt;Conflict resolution: disagree and COMMIT. NO sniping, I told you so, malicious compliance. Avoid compromise. Avoid decision by attrition (most persistent wins).&lt;/li&gt;
&lt;li&gt;People are inherently biased towards hierarchy. So the senior most person should speak last&lt;/li&gt;
&lt;li&gt;We have a happiness bias. Contracted by choosing the unhappier options first&lt;/li&gt;
&lt;li&gt;The map is not the territory. The metric is not the objective. We need metrics. But make sure you know why&lt;/li&gt;
&lt;li&gt;See the world through the eyes of the customer. Use your own product. It&amp;rsquo;s living their lives that makes customer obsession real. Jeff Bezos called their own customer care to see how long the actual wait time was. It was much longer than the metric reported&lt;/li&gt;
&lt;li&gt;How to prioritize. whatever problems customers will still face in 10 years are the big problems. These are worth putting time into because they are stable in time&lt;/li&gt;
&lt;li&gt;People working on big problems will never get down to the small problems. So have a dedicated team that works only on the paper cuts. It should be a dedicated team&lt;/li&gt;
&lt;li&gt;We co evolve with our tools. We build tools and then our tools change us. It reprograms our brains&lt;/li&gt;
&lt;li&gt;Cut out 10 minutes to the beginning of each meeting for people to read the material. They never reread anyway. This makes the meetings more productive&lt;/li&gt;
&lt;li&gt;Powerpoint is designed for persuasion, not truth seeking. It is also easier for the author than for the reader. Prefer narratives that are focused on finding the truth and are easier for the audience though tougher for the author&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;⭐ &lt;a href=&#34;https://github.com/Purfview/whisper-standalone-win&#34;&gt;whisper-standalone-win&lt;/a&gt; provides a Windows binary for Faster-Whisper. It just needs &lt;a href=&#34;https://developer.nvidia.com/cuda-downloads&#34;&gt;CUDA&lt;/a&gt; and &lt;a href=&#34;https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html&#34;&gt;cuDNN&lt;/a&gt; installed. Then &lt;code&gt;whisper-faster.exe video.mkv --language=English --model=medium&lt;/code&gt; generates the transcript.&lt;/li&gt;
&lt;li&gt;LLM use cases by Benedict Evans
&lt;ul&gt;
&lt;li&gt;&amp;ldquo;Every text box on the internet will get an LLM&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&amp;ldquo;Infinite interns&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&amp;ldquo;Every UNIX function has become a company.&amp;rdquo; &amp;ldquo;Every ChatGPT suggestion&amp;hellip;&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.llm360.ai/&#34;&gt;llm360&lt;/a&gt; publishes models along with training datasets.&lt;/li&gt;
&lt;li&gt;In &lt;a href=&#34;https://www.gatesnotes.com/The-Age-of-AI-Has-Begun&#34;&gt;The Age of AI has begun, Mar 2023&lt;/a&gt;, Bill Gates says, &amp;ldquo;In my lifetime, I&amp;rsquo;ve seen two demonstrations of technology that struck me as revolutionary.&amp;rdquo; The GUI (1980) and ChatGPT (2022).&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/portkey-ai/rubeus&#34;&gt;Rubeus&lt;/a&gt; is a HTTP proxy for multiple LLMs with load-balancing, fallbacks and retries.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/Writesonic/GPTRouter&#34;&gt;GPTRouter&lt;/a&gt; is a Python interface for multiple LLMs with fallbacks and retries.&lt;/li&gt;
&lt;li&gt;⭐ &lt;a href=&#34;https://tokentally.streamlit.app/&#34;&gt;Token Tally&lt;/a&gt; has an LLM Cost Tool that estimates GPU memory required and token cost across cloud providers.&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    <item>
      <title>Colour spaces</title>
      <link>https://www.s-anand.net/blog/colour-spaces/</link>
      <pubDate>Mon, 27 Aug 2012 14:04:23 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/colour-spaces/</guid>
      <description>&lt;p&gt;In reality, a colour is a combination of light waves with frequencies between 400-700THz, just like sound is a combination of sound waves with frequencies from 20-20000Hz. Just like mixing various pure notes produces a new sound, mixing various pure colours (like from a rainbow) produces new colours (like white, which isn’t on the rainbow.)&lt;/p&gt;
&lt;p&gt;Our eyes aren’t like our ears, though. They have 3 sensors that are triggered differently by different frequencies. The sensors roughly peak around red, green and blue. Roughly.&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://upload.wikimedia.org/wikipedia/commons/thumb/1/1e/Cones_SMJ2_E.svg/300px-Cones_SMJ2_E.svg.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;It turns out that it’s possible to recreate &lt;strong&gt;most&lt;/strong&gt; (not all) colours using a combination of just red, green and blue by mimicking these three sensors to the right level. That’s why TVs and monitors have red, blue and green cells, and we represent colours using &lt;a href=&#34;http://en.wikipedia.org/wiki/Web_colors#Hex_triplet&#34;&gt;hex triplets&lt;/a&gt; for RRGGBB – like #00ff00 (green).&lt;/p&gt;
&lt;p&gt;There are a number of problems with this from a computational perspective. Conceptually, we think of (R, G, B) as a 3-dimensional cube. That’d mean that 100% red is about as bright as 100% green or blue. Unfortunately, green is a lot brighter than red, which is a lot brighter than blue. Our 3 sensors are not equally sensitive.&lt;/p&gt;
&lt;p&gt;You’d also think that a colour that’s numerically mid-way between 2 colours should &lt;strong&gt;appear&lt;/strong&gt; to be mid-way. Far from it.&lt;/p&gt;
&lt;p&gt;This means that if you’re picking colours using the RGB model, you’re using something very far from the intuitive human way of perceiving colours.&lt;/p&gt;
&lt;p&gt;Which is all very nice, but I’m usually in a rush. So what do I do?&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;I go to the Microsoft Office &lt;a href=&#34;http://office.microsoft.com/en-us/infopath-help/apply-a-color-scheme-HP001230316.aspx?CTT=1&#34;&gt;colour themes&lt;/a&gt; and use a colour picker to pick one. (I &lt;a href=&#34;https://github.com/sanand0/less/blob/master/color_themes.less&#34;&gt;extracted them&lt;/a&gt; to make life easier.) These are generally good on the eye.&lt;/li&gt;
&lt;li&gt;Failing that, I pick something from &lt;a href=&#34;http://kuler.adobe.com/&#34;&gt;http://kuler.adobe.com/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Or I go to &lt;a href=&#34;http://colorbrewer2.org/&#34;&gt;http://colorbrewer2.org/&lt;/a&gt; and pick a set of colours&lt;/li&gt;
&lt;li&gt;If I absolutely have to do things programmatically, I use the &lt;a href=&#34;http://tristen.ca/hcl-picker/&#34;&gt;HCL&lt;/a&gt; &lt;a href=&#34;http://vis4.net/blog/posts/avoid-equidistant-hsv-colors/&#34;&gt;colour scheme&lt;/a&gt;. The good part is it’s perceptually uniform. The bad part is: not every interpolation is a valid colour.&lt;/li&gt;
&lt;/ol&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;http://isomorphismes.tumblr.com&#34;&gt;isomorphismes&lt;/a&gt;&lt;/strong&gt; &lt;em&gt;13 Mar 2013 5:20 pm&lt;/em&gt;:
What colours can&amp;rsquo;t be created by convex combinations of {R, G, B}? I mean within the visible spectrum.&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- wp-comments-end --&gt;
</description>
    </item>
    <item>
      <title>Short notes</title>
      <link>https://www.s-anand.net/blog/short-notes/</link>
      <pubDate>Wed, 20 May 2009 05:15:32 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/short-notes/</guid>
      <description>&lt;p&gt;I&amp;rsquo;m quite busy on a project right now, and don&amp;rsquo;t get time to write long articles. So for a while, I&amp;rsquo;m going to stick to short notes on interesting stuff.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Peter Bregman has a very interesting piece on &lt;a href=&#34;http://blogs.harvardbusiness.org/bregman/2009/05/why-you-should-encourage-weakn.html&#34;&gt;Why You Should Encourage Weakness&lt;/a&gt;. It boils down to a choice: &lt;strong&gt;do you focus on on improving strengths or minimising weaknesses?&lt;/strong&gt; Conventional performance evaluations focus on the latter. I very strongly support Bregman’s view on this. &lt;strong&gt;The weakness isn’t why you hired the person!&lt;/strong&gt; Unless it’s killing the organisation, just leave them to focus on their strengths.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.google.com/analytics/&#34;&gt;Google Analytics&lt;/a&gt; has a fairly interesting &lt;a href=&#34;http://code.google.com/apis/analytics/docs/&#34;&gt;API&lt;/a&gt; that I hadn’t explored until recently. Picked up [Advanced Web Metrics with Google Analytics](&lt;a href=&#34;http://www.s-anand.net/amazon-browser.html#advanced&#34;&gt;http://www.s-anand.net/amazon-browser.html#advanced&lt;/a&gt; web metrics with google analytics) and learnt that you can track outbound clicks, page load times, Javascript events and error logs, almost anything at all using Google Analytics. You can also mirror the logging on your local server using pageTracker._setLocalRemoteServerMode()&lt;/li&gt;
&lt;li&gt;The whole concept of a Sandbox environment seems to be picking up within Google. There’s a &lt;a href=&#34;https://sandbox.google.com/checkout/&#34;&gt;Checkout sandbox&lt;/a&gt;, an &lt;a href=&#34;http://code.google.com/apis/ajax/playground/&#34;&gt;AJAX API playground&lt;/a&gt;, an &lt;a href=&#34;http://adwordsapi.blogspot.com/2009/05/adwords-api-on-app-engine-python.html&#34;&gt;AdWords sandbox&lt;/a&gt;, an &lt;a href=&#34;http://code.google.com/apis/adsense/developer/adsense_api_sandbox.html&#34;&gt;AdSense API sandbox&lt;/a&gt;, the &lt;a href=&#34;http://mapstraction.appspot.com/&#34;&gt;Mapstraction API sandbox&lt;/a&gt;, even an event called &lt;a href=&#34;http://code.google.com/events/io/sandbox.html&#34;&gt;Developer Sandbox&lt;/a&gt;. (After saying Sandbox 6 times, I feel a bit like Hobbes.)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://picayune.uclick.com/comics/ch/1992/ch920623.gif&#34;&gt;&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Google Chrome screenshots</title>
      <link>https://www.s-anand.net/blog/google-chrome-screenshots/</link>
      <pubDate>Tue, 02 Sep 2008 12:00:00 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/google-chrome-screenshots/</guid>
      <description>&lt;p&gt;I went to the &lt;a href=&#34;http://www.google.com/chrome&#34;&gt;Google Chrome&lt;/a&gt; site.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.s-anand.net/blog/assets/flickr-google-chrome-1_2822929746_o-png.webp&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://www.s-anand.net/blog/assets/flickr-google-chrome-1_2822929746_o-png.webp&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Clicking on the &amp;ldquo;Accept and Install&amp;rdquo; button&amp;hellip;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.s-anand.net/blog/assets/flickr-google-chrome-2_2822094501_o-png.webp&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://www.s-anand.net/blog/assets/flickr-google-chrome-2_2822094501_o-png.webp&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;hellip; automatically launched the downloader in Firefox&amp;hellip;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.s-anand.net/blog/assets/flickr-google-chrome-3_2822930042_o-png.webp&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://www.s-anand.net/blog/assets/flickr-google-chrome-3_2822930042_o-png.webp&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;hellip; and (after a fairly short while) started installing the application directly. This may be the most painless install I&amp;rsquo;ve done in a while.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.s-anand.net/blog/assets/flickr-google-chrome-4_2822094883_o-png.webp&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://www.s-anand.net/blog/assets/flickr-google-chrome-4_2822094883_o-png.webp&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I clicked on &amp;ldquo;Customise the settings&amp;rdquo;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.s-anand.net/blog/assets/flickr-google-chrome-5_2822930598_o-png.webp&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://www.s-anand.net/blog/assets/flickr-google-chrome-5_2822930598_o-png.webp&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This is what it looks like.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.s-anand.net/blog/assets/flickr-google-chrome-6_2822095325_o-png.webp&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://www.s-anand.net/blog/assets/flickr-google-chrome-6_2822095325_o-png.webp&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;And that&amp;rsquo;s it! It installs, and launches in just a few seconds. First impressions: the startup and rendering are really fast.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.s-anand.net/blog/assets/flickr-google-chrome-7_2822095593_o-png.webp&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://www.s-anand.net/blog/assets/flickr-google-chrome-7_2822095593_o-png.webp&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The address bar doubles up as a search bar. Very sensible.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.s-anand.net/blog/assets/flickr-google-chrome-8_2822931146_o-png.webp&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://www.s-anand.net/blog/assets/flickr-google-chrome-8_2822931146_o-png.webp&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Several nice &lt;a href=&#34;http://tools.google.com/chrome/intl/en-GB/features.html&#34;&gt;features&lt;/a&gt;: incognito mode, application shortcuts, and developer tools.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.s-anand.net/blog/assets/flickr-google-chrome-9_2822095935_o-png.webp&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://www.s-anand.net/blog/assets/flickr-google-chrome-9_2822095935_o-png.webp&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The Javascript console has Javascript autocompletion! Watch out, Firebug.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.s-anand.net/blog/assets/flickr-google-chrome-10_2822096083_o-png.webp&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://www.s-anand.net/blog/assets/flickr-google-chrome-10_2822096083_o-png.webp&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.s-anand.net/blog/assets/flickr-google-chrome-11_2822931444_o-png.webp&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://www.s-anand.net/blog/assets/flickr-google-chrome-11_2822931444_o-png.webp&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.s-anand.net/blog/assets/flickr-google-chrome-12_2822096215_o-png.webp&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://www.s-anand.net/blog/assets/flickr-google-chrome-12_2822096215_o-png.webp&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The &amp;ldquo;Use DNS pre-fetching&amp;rdquo; looks interesting. My browsing certainly seems faster. Might be faster than Opera, even.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.s-anand.net/blog/assets/flickr-google-chrome-13_2822096303_o-png.webp&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://www.s-anand.net/blog/assets/flickr-google-chrome-13_2822096303_o-png.webp&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The &amp;ldquo;Show suggestions for navigation errors&amp;rdquo; feature.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.s-anand.net/blog/assets/flickr-google-chrome-14_2822931820_o-png.webp&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://www.s-anand.net/blog/assets/flickr-google-chrome-14_2822931820_o-png.webp&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;There&amp;rsquo;s a task manager&amp;hellip;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.s-anand.net/blog/assets/flickr-google-chrome-16_2822096869_o-png.webp&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://www.s-anand.net/blog/assets/flickr-google-chrome-16_2822096869_o-png.webp&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;hellip; that shows how much memory each site uses.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.s-anand.net/blog/assets/flickr-google-chrome-17_2822096977_o-png.webp&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://www.s-anand.net/blog/assets/flickr-google-chrome-17_2822096977_o-png.webp&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;But not all is good. This jQuery animation on my site leaves trails behind.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.s-anand.net/blog/assets/flickr-google-chrome-15_2822096585_o-png.webp&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://www.s-anand.net/blog/assets/flickr-google-chrome-15_2822096585_o-png.webp&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;And the text box resizing is good, but feels a bit&amp;hellip; wrong, somehow.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.s-anand.net/blog/assets/flickr-google-chrome-18_2822097085_o-png.webp&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://www.s-anand.net/blog/assets/flickr-google-chrome-18_2822097085_o-png.webp&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Plus: I can re-import history, bookmarks, etc. from Firefox at any point, so I don&amp;rsquo;t have to worry about using this as a secondary browser.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update (8am UK, 3rd Sep)&lt;/strong&gt;: Chrome.exe isn&amp;rsquo;t installed in your &amp;ldquo;Program Files&amp;rdquo; folder. It&amp;rsquo;s in your &amp;ldquo;Documents and Settings&amp;rdquo; folder, under &amp;ldquo;Local Settings\Application Data\Google\Chrome\Application&amp;rdquo;. (That&amp;rsquo;s on Windows XP. Not sure about Vista.)&lt;/p&gt;
&lt;p&gt;There&amp;rsquo;s a Themes folder, so I imagine more themes should be on their way.&lt;/p&gt;
&lt;p&gt;There doesn&amp;rsquo;t seem to be an about:config option. But there are a whole lot of others:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;about:cache&lt;/li&gt;
&lt;li&gt;about:dns&lt;/li&gt;
&lt;li&gt;about:histograms&lt;/li&gt;
&lt;li&gt;about:memory&lt;/li&gt;
&lt;li&gt;about:plugins&lt;/li&gt;
&lt;li&gt;about:stats&lt;/li&gt;
&lt;li&gt;about:version&lt;/li&gt;
&lt;li&gt;about:crash&lt;/li&gt;
&lt;li&gt;about:internets&lt;/li&gt;
&lt;li&gt;about:network&lt;/li&gt;
&lt;li&gt;about:blank&lt;/li&gt;
&lt;li&gt;about:shorthang&lt;/li&gt;
&lt;li&gt;about:hang&lt;/li&gt;
&lt;li&gt;about:objects&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I&amp;rsquo;m not entirely sure if the last two work. Based on &lt;a href=&#34;http://ejohn.org/blog/google-chrome-process-manager/&#34;&gt;comments at John Resig&amp;rsquo;s blog&lt;/a&gt;. Go through the &lt;a href=&#34;http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/&#34;&gt;code&lt;/a&gt; to see if you can find more.&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;Sumit Dhar&lt;/strong&gt; &lt;em&gt;11 Sep 2008 1:47 am&lt;/em&gt;:
Have found an interesting use for &amp;ldquo;Incognito&amp;rdquo; mode. Both my wife and I use the same laptop to access Gmail. Not wanting to use a second browser, invariably one has to logout to allow the other to access mail.&lt;br&gt;
&lt;br&gt;
With Chrome&amp;rsquo;s Incognito mode, it uses a different directory to store the cookies. This allows two or more people to login to their Gmail accounts in different tabs.&lt;br&gt;
&lt;br&gt;
Cheers,&lt;br&gt;
D.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;S Anand&lt;/strong&gt; &lt;em&gt;12 Sep 2008 1:19 am&lt;/em&gt;:
But do sessions persist? I thought that once you switch to incognito mode, your cookies would no longer be sent to the server, and that you would need to at least log in. So while one person can stay logged in, the other would still need to log in. Is that right?&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- wp-comments-end --&gt;
</description>
    </item>
    <item>
      <title>Krugle</title>
      <link>https://www.s-anand.net/blog/krugle/</link>
      <pubDate>Wed, 12 Jul 2006 12:00:00 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/krugle/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://krugle.com/&#34;&gt;Krugle&lt;/a&gt; is a code search engine.&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;sheikh&lt;/strong&gt; &lt;em&gt;14 Dec 2006 3:08 pm&lt;/em&gt;:
Thank you anand, It was very useful&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- wp-comments-end --&gt;
</description>
    </item>
    <item>
      <title>BBC Backstage</title>
      <link>https://www.s-anand.net/blog/bbc-backstage/</link>
      <pubDate>Sun, 04 Sep 2005 12:00:00 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/bbc-backstage/</guid>
      <description>&lt;p&gt;BBC seems to be doing good work for developers at &lt;a href=&#34;http://backstage.bbc.co.uk/&#34;&gt;BBC Backstage&lt;/a&gt;. &lt;a href=&#34;http://www.plasticbag.org/&#34;&gt;Tom Coates&lt;/a&gt; and &lt;a href=&#34;http://www.hackdiary.com/&#34;&gt;Matt Biddulph&lt;/a&gt; are among those involved.&lt;/p&gt;
</description>
    </item>
    <item>
      <title>code.google.com</title>
      <link>https://www.s-anand.net/blog/code-google-com/</link>
      <pubDate>Tue, 22 Mar 2005 12:00:00 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/code-google-com/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://code.google.com/&#34;&gt;code.google.com&lt;/a&gt;&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;ritzkini&lt;/strong&gt; &lt;em&gt;24 Mar 2005 5:18 am&lt;/em&gt;:
google rocks !!&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- wp-comments-end --&gt;
</description>
    </item>
    <item>
      <title>BookWatch</title>
      <link>https://www.s-anand.net/blog/bookwatch/</link>
      <pubDate>Wed, 24 Jul 2002 12:00:00 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/bookwatch/</guid>
      <description>&lt;p&gt;A cool combination of the Amazon and Google APIs to &lt;a href=&#34;http://mockerybird.com/index.cgi?node=book+watch&#34;&gt;BookWatch&lt;/a&gt;. (Incidentally, I downloaded the &lt;a href=&#34;http://associates.amazon.com/exec/panama/associates/join/developer/resources.html&#34;&gt;Amazon&lt;/a&gt; and &lt;a href=&#34;http://code.google.com/&#34;&gt;Google&lt;/a&gt; APIs.)&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Google API</title>
      <link>https://www.s-anand.net/blog/google-api/</link>
      <pubDate>Sat, 13 Apr 2002 12:00:00 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/google-api/</guid>
      <description>&lt;p&gt;Google has released a &lt;a href=&#34;http://www.google.com/apis/&#34;&gt;Beta API&lt;/a&gt;. Programmers, please do something with it. I honestly wish I had the time to use it, too!&lt;/p&gt;
</description>
    </item>
  </channel>
</rss>
