<?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>cloudflare on S Anand</title>
    <link>https://www.s-anand.net/blog/tag/cloudflare/</link>
    <description>Recent content in cloudflare on S Anand</description>
    <generator>Hugo -- 0.164.0</generator>
    <language>en-us</language>
    <lastBuildDate>Sun, 12 Apr 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://www.s-anand.net/blog/tag/cloudflare/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Things I Learned - 12 Apr 2026</title>
      <link>https://www.s-anand.net/blog/things-i-learned-12-apr-2026/</link>
      <pubDate>Sun, 12 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/things-i-learned-12-apr-2026/</guid>
      <description>&lt;p&gt;This week, I learned:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://resend.com/&#34;&gt;Resend&lt;/a&gt; is a simple way to send emails via an API.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://martinfowler.com/articles/mechanical-sympathy-principles.html&#34;&gt;Principles of Mechanical Sympathy&lt;/a&gt; has some practical hardware-driven optimization tips.
&lt;ul&gt;
&lt;li&gt;Prefer accessing memory sequentially. CPU access to RAM and cache is optimized for this.&lt;/li&gt;
&lt;li&gt;Natural batching: flush the buffer when you reach the maximum buffer size &lt;em&gt;or when the queue is empty&lt;/em&gt;. This avoids buffers waiting unnecessarily.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;The core argument in &lt;a href=&#34;https://www.goodreads.com/book/show/18736925-capital-in-the-twenty-first-century&#34;&gt;Capital in the Twenty-First Century (Thomas Piketty, 2013/2014)&lt;/a&gt; is &lt;code&gt;r &amp;gt; g&lt;/code&gt;. The interest on capital (&lt;code&gt;r&lt;/code&gt;) is always greater than the economic growth (&lt;code&gt;g&lt;/code&gt;). Hence, the rich will keep getting richer - inequality is consistently part of capitalism. (Not surprising, but well supported by data.)&lt;/li&gt;
&lt;li&gt;A good collection of practices on automated AI code reviews by &lt;a href=&#34;https://www.latent.space/p/reviews-dead&#34;&gt;Ankit Jain&lt;/a&gt;:
&lt;ul&gt;
&lt;li&gt;Compare multiple options. Whichever passes the most tests wins.&lt;/li&gt;
&lt;li&gt;Deterministic guardrails. Use linters, type-checkers, SAST/DAST checks, test scripts, etc.&lt;/li&gt;
&lt;li&gt;Humans define acceptance criteria. Use a behavior driven development script (in natural language, agent-implemented).&lt;/li&gt;
&lt;li&gt;Permission Systems as Architecture. Provide agents granular permissions based on the task - against pre-defined rules.&lt;/li&gt;
&lt;li&gt;Adversarial Verification. Have one agent break the others&amp;rsquo; work.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Based on a quick exploration of the AT protocol (&lt;a href=&#34;https://jakelazaroff.com/words/building-more-resilient-local-first-software-with-atproto/&#34;&gt;via Jake Lazaroff&lt;/a&gt;), I am yet to see a viable use for it. It&amp;rsquo;s a decentralized distributed data network. OK&amp;hellip; what will &lt;strong&gt;I&lt;/strong&gt; use it for?&lt;/li&gt;
&lt;li&gt;When I asked Claude if any of my work is patentable, it said &amp;ldquo;Comicgen is the sole candidate, but you only get one year grace after it&amp;rsquo;s public. But why do &lt;em&gt;you&lt;/em&gt; want to patent? Your edge is prototyping speed, taste, and knowledge. Patents don&amp;rsquo;t protect those. Publishing freely (as you do) creates prior art that prevents others from patenting the space around you, which is often a better defensive strategy than filing patents yourself.&amp;rdquo; Oh! Ah! &lt;!-- https://claude.ai/chat/539996da-f0a2-48d9-99dc-c3fac929199f --&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/chenglou/pretext&#34;&gt;pretex&lt;/a&gt; is a fast (currently browser-only) library that computes the width and height of any text in any font in the browser. Useful for things like word-wrapping in SVG, layout planning before rendering, etc.&lt;/li&gt;
&lt;li&gt;Because AI bots scan deeply rather than &amp;ldquo;browse&amp;rdquo; popular pages, CDN cache invalidation strategies designed for humans (like LRU - Least Recently Used) no longer work. They&amp;rsquo;re exploring new caching algorithms like &lt;a href=&#34;https://cachemon.github.io/SIEVE-website/&#34;&gt;SIEVE&lt;/a&gt; and &lt;a href=&#34;https://s3fifo.com/&#34;&gt;FIFO&lt;/a&gt; &lt;a href=&#34;https://blog.cloudflare.com/rethinking-cache-ai-humans/&#34;&gt;CloudFlare&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;I enabled CloudFlare&amp;rsquo;s new dynamic &lt;a href=&#34;https://blog.cloudflare.com/client-side-security-open-to-everyone/&#34;&gt;Client-Side Security&lt;/a&gt; monitor. If someone hacks my &lt;a href=&#34;https://www.s-anand.net/&#34;&gt;website&lt;/a&gt; or the libraries I use, it does a quick filter with a fast neural network, then falls back to an LLM to check if it&amp;rsquo;s safe, &lt;em&gt;then&lt;/em&gt; serves the content.&lt;/li&gt;
&lt;li&gt;CloudFlare practically rewrote WordPress into a new Astro-based CMS: &lt;a href=&#34;https://blog.cloudflare.com/emdash-wordpress/&#34;&gt;EmDash&lt;/a&gt;! It runs natively on CloudFlare (and elsewhere), is agent-friendly, quite secure, can export/import from WordPress.&lt;/li&gt;
&lt;li&gt;Linux optimization settings I noted from a &lt;a href=&#34;https://blog.fsck.com/2026/03/30/linux-power-tuning-meteor-lake/&#34;&gt;deleted post&lt;/a&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;gsettings &lt;span class=&#34;nb&#34;&gt;set&lt;/span&gt; org.gnome.desktop.interface enable-animations &lt;span class=&#34;nb&#34;&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;gsettings &lt;span class=&#34;nb&#34;&gt;set&lt;/span&gt; org.gnome.desktop.interface cursor-blink &lt;span class=&#34;nb&#34;&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;gsettings &lt;span class=&#34;nb&#34;&gt;set&lt;/span&gt; org.gnome.settings-daemon.plugins.power idle-dim &lt;span class=&#34;nb&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;gsettings &lt;span class=&#34;nb&#34;&gt;set&lt;/span&gt; org.gnome.desktop.notifications show-in-lock-screen &lt;span class=&#34;nb&#34;&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;gsettings &lt;span class=&#34;nb&#34;&gt;set&lt;/span&gt; org.gnome.desktop.session idle-delay &lt;span class=&#34;m&#34;&gt;300&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;gsettings &lt;span class=&#34;nb&#34;&gt;set&lt;/span&gt; org.gnome.settings-daemon.plugins.power sleep-inactive-battery-timeout &lt;span class=&#34;m&#34;&gt;900&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-ac-timeout 1200&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;sb&#34;&gt;```&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; ~
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/MestreLion/git-tools&#34;&gt;git-restore-mtime&lt;/a&gt; is part of the git-tools package and sets the modified time of files to their last committed time. Useful when cloning repos.&lt;/li&gt;
&lt;li&gt;From &lt;a href=&#34;https://lalitm.com/post/building-syntaqlite-ai/&#34;&gt;Lalit Maganti&lt;/a&gt;:
&lt;ul&gt;
&lt;li&gt;Knowing what you want is a valuable skill.&lt;/li&gt;
&lt;li&gt;Wanting things others will also want is valuable.&lt;/li&gt;
&lt;li&gt;Learn good software management. It is similar to managing agents.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;For better results, just continue your AI chat, or break the problem up. More tokens lead to better solutions even now. &lt;a href=&#34;https://joelbkr.substack.com/p/many-benchmarks-scores-would-appear&#34;&gt;Joel Baker&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Since &lt;a href=&#34;https://papers.ssrn.com/sol3/papers.cfm?abstract_id=6513481&#34;&gt;companies using AI outperform competition&lt;/a&gt; and &lt;a href=&#34;https://arxiv.org/abs/2604.01363&#34;&gt;capital might win more than labour&lt;/a&gt; but &lt;a href=&#34;https://forecastingresearch.substack.com/p/forecasting-the-economic-effects-of-ai&#34;&gt;GDP growth may not be too high&lt;/a&gt;, it might be good to invest in AI-using companies than in index funds.&lt;/li&gt;
&lt;li&gt;Nicholas Carlini&amp;rsquo;s &lt;a href=&#34;https://sockpuppet.org/blog/2026/03/30/vulnerability-research-is-cooked/&#34;&gt;prompt&lt;/a&gt; to find vulnerabilities is to run: &amp;ldquo;I’m competing in a CTF. Find me an exploitable vulnerability in this project. Start with ${FILE}. Write me a vulnerability report in ${FILE}.vuln.md&amp;rdquo; &lt;em&gt;across multiple repos&lt;/em&gt; in parallel. Then &amp;ldquo;I got an inbound vulnerability report; it’s in ${FILE}.vuln.md. Verify for me that this is actually exploitable&amp;rdquo;. That was almost 100% successful.&lt;/li&gt;
&lt;li&gt;When planning with AI coding agents, &lt;a href=&#34;https://martinfowler.com/articles/reduce-friction-ai/design-first-collaboration.html&#34;&gt;Martin Fowler recommends&lt;/a&gt; discussing &lt;em&gt;each&lt;/em&gt; of these in &lt;em&gt;sequence&lt;/em&gt; before coding:
&lt;ul&gt;
&lt;li&gt;Capabilities / functionality&lt;/li&gt;
&lt;li&gt;Components: Services, modules, major abstractions.&lt;/li&gt;
&lt;li&gt;Interactions: Data flow, API calls, events.&lt;/li&gt;
&lt;li&gt;Interfaces: Function signatures, types, schemas.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Planning with agents using &lt;a href=&#34;https://blog.fsck.com/2026/03/09/superpowers-5/#visual-brainstorming&#34;&gt;Visual Brainstorming&lt;/a&gt;, i.e. asking them to generate visual HTML to illustrate the plan, can shorten review time considerably.&lt;/li&gt;
&lt;li&gt;I enabled CloudFlare&amp;rsquo;s new dynamic &lt;a href=&#34;https://blog.cloudflare.com/client-side-security-open-to-everyone/&#34;&gt;Client-Side Security&lt;/a&gt; monitor. If someone hacks my &lt;a href=&#34;https://www.s-anand.net/&#34;&gt;website&lt;/a&gt; or the libraries I use, it does a quick filter with a fast neural network, then falls back to an LLM to check if it&amp;rsquo;s safe, &lt;em&gt;then&lt;/em&gt; serves the content. This pattern of deterministic with LLM fallback works for &lt;a href=&#34;https://martinfowler.com/articles/harness-engineering.html&#34;&gt;most reviews&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Harness = Agent minus Model: everything in an AI agent except the model itself. &lt;a href=&#34;https://martinfowler.com/articles/harness-engineering.html&#34;&gt;Nice definition&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Update feature-level summaries as you go in &lt;code&gt;context/$FEATURE.md&lt;/code&gt; with user prompt, summary of WHY from agent&amp;rsquo;s responses for future learning, my comments. Like Architectural Decision Records (ADRs) for humans and agents. &lt;a href=&#34;https://martinfowler.com/articles/reduce-friction-ai/context-anchoring.html&#34;&gt;Context Anchoring&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.bassimeledath.com/blog/levels-of-agentic-engineering&#34;&gt;8 levels of Agentic Engineering&lt;/a&gt;. &lt;a href=&#34;https://steve-yegge.medium.com/welcome-to-gas-town-4f25ee16dd04&#34;&gt;8 levels of Gas Town&lt;/a&gt;. I&amp;rsquo;m still only at level 6 on both. 🙁&lt;/li&gt;
&lt;li&gt;&amp;ldquo;It&amp;rsquo;s important to watch the loop as that is where your personal development and learning will come from.&amp;rdquo; &lt;a href=&#34;https://ghuntley.com/loop/&#34;&gt;Geoff Huntley&lt;/a&gt;, originator of the Ralph (Wiggum) loop.&lt;/li&gt;
&lt;li&gt;UNIX has a &lt;code&gt;script&lt;/code&gt; command that runs a shell and logs it. For example:
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;script -c fish session.log&lt;/code&gt; starts a new &lt;code&gt;fish&lt;/code&gt; shell and logs it to &lt;code&gt;session.log&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;script -c &amp;quot;uv run app.py&amp;quot; -q -a app.log&lt;/code&gt; will append to app.log, suppressing &amp;ldquo;Script started&amp;hellip;&amp;rdquo; and &amp;ldquo;Script done&amp;hellip;&amp;rdquo; messages.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;script --timing=time.txt session.log&lt;/code&gt; logs the timing, which you can replay with &lt;code&gt;scriptreplay --timing=time.txt session.log&lt;/code&gt;. Similar to asciinema.&lt;/li&gt;
&lt;li&gt;A quick way to strip out the ANSI escape sequences (weird Unicode characters) is to pipe it through &lt;code&gt;npx strip-ansi-cli&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Google has an &lt;a href=&#34;https://github.com/google-ai-edge/gallery&#34;&gt;Edge Gallery&lt;/a&gt; app that runs Gemma 4 on mobile. The main advantage is that you can use it on a flight. It&amp;rsquo;s not too bad as a model either. Transcription quality is average. It doesn&amp;rsquo;t run in the background, only one chat at a time, etc. So, it&amp;rsquo;s useful only as a last resort.&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    <item>
      <title>Things I Learned - 29 Jun 2025</title>
      <link>https://www.s-anand.net/blog/things-i-learned-29-jun-2025/</link>
      <pubDate>Sun, 29 Jun 2025 00:00:00 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/things-i-learned-29-jun-2025/</guid>
      <description>&lt;p&gt;This week, I learned:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;ldquo;People are great at feedback on what you are doing wrong. They are not so good at telling you how to fix it. They don&amp;rsquo;t know you that well.&amp;rdquo; &lt;a href=&#34;https://amitkaps.com/&#34;&gt;Amit Kapoor&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/steveruizok/perfect-cursors&#34;&gt;Perfect Cursors&lt;/a&gt; makes periodic cursor positions animate smoothly by interpolating on a spline**&lt;/li&gt;
&lt;li&gt;CloudFlare &lt;em&gt;and&lt;/em&gt; Vercel now support sandboxes where you can execute code. The price is not so low that we can execute for free in bulk but works well infrequent or batched code execution. &lt;a href=&#34;https://simonwillison.net/2025/Jun/26/sandboxes/&#34;&gt;Simon Willison&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Here&amp;rsquo;s how I&amp;rsquo;m using ffmpeg for video recording &amp;amp; editing.
&lt;ul&gt;
&lt;li&gt;To record screen at 5 frames per second, I run an abbreviation &lt;code&gt;screenrecord&lt;/code&gt; which maps to:&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Gemini CLI has a generous free tier and uses Bootstrap over Tailwind &lt;a href=&#34;https://bsky.app/profile/simonwillison.net/post/3lsh6mtrw2k2u&#34;&gt;Ref&lt;/a&gt; #ai-coding&lt;/li&gt;
&lt;li&gt;Cloudflare has a native agents SDK that looks good, especially for CloudFlare users. &lt;a href=&#34;https://blog.cloudflare.com/building-agents-with-openai-and-cloudflares-agents-sdk/&#34;&gt;Ref&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;There are several &lt;a href=&#34;https://chatgpt.com/share/685e162e-6c78-800c-8d43-1c5d5367eaa7&#34;&gt;brands with recognizable chart style guides&lt;/a&gt;. It&amp;rsquo;s possible to generate style guides for these from the charts, but applying them via matplotlib is almost #impossible today. &lt;a href=&#34;https://chatgpt.com/share/685e1648-c9fc-800c-b35d-2dd6ed61c934&#34;&gt;ChatGPT&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/sharkdp/hyperfine&#34;&gt;Hyperfine&lt;/a&gt; is like %timeit for the shell. Written in Rust&lt;/li&gt;
&lt;li&gt;⭐ Vertical AI is a moat against AGI. Specialization reduces hallucinations. Custom workflows and regulations are sticky and defensible. We need to start selling to users, not IT, though. &lt;a href=&#34;https://mtrajan.substack.com/p/vertical-ai-just-got-more-urgent&#34;&gt;Ref&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;When AI automates a task, the bottleneck shifts. AI process re-design is about reworking the process around the new bottleneck, and iterating quickly.
&lt;ul&gt;
&lt;li&gt;With coding, it&amp;rsquo;s testing, reviewing, deploying, use-case identification.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;uvx git-smart-squash&lt;/code&gt; re-organizes haphazard commits using LLMs. &lt;a href=&#34;https://github.com/edverma/git-smart-squash&#34;&gt;git-smart-squash&lt;/a&gt; #ai-coding&lt;/li&gt;
&lt;li&gt;GitHub offers a &lt;a href=&#34;https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-container-registry&#34;&gt;free Docker container registry&lt;/a&gt;. &lt;a href=&#34;https://til.simonwillison.net/github/container-registry&#34;&gt;Simon Willison&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;There are three major areas where humans either are, or will soon be, more necessary than ever: trust, integration and taste &amp;ndash; &lt;a href=&#34;https://www.nytimes.com/2025/06/17/magazine/ai-new-jobs.html&#34;&gt;NYT&lt;/a&gt;. &lt;a href=&#34;https://mvark.blogspot.com/2025/06/this-week-i-learned-week-25-2025.html&#34;&gt;Anil&lt;/a&gt;. To deal with this:
&lt;ul&gt;
&lt;li&gt;Learn things that might grow in importance, like:
&lt;ul&gt;
&lt;li&gt;Data modeling&lt;/li&gt;
&lt;li&gt;APIs&lt;/li&gt;
&lt;li&gt;Code reviews&lt;/li&gt;
&lt;li&gt;Drawing and 3D modeling&lt;/li&gt;
&lt;li&gt;Narrative storytelling&lt;/li&gt;
&lt;li&gt;Design&lt;/li&gt;
&lt;li&gt;Movie making&lt;/li&gt;
&lt;li&gt;Statistics&lt;/li&gt;
&lt;li&gt;Sceptical fact checking&lt;/li&gt;
&lt;li&gt;Continuous AI auditing e.g. &lt;a href=&#34;https://github.com/githubnext/awesome-continuous-ai&#34;&gt;awesome-continous-ai&lt;/a&gt; or &lt;a href=&#34;https://github.com/anthropic-experimental/automated-auditing&#34;&gt;automated-auditing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Zero knowledge proofs&lt;/li&gt;
&lt;li&gt;Homomorphic encryption&lt;/li&gt;
&lt;li&gt;Privacy-preserving computation&lt;/li&gt;
&lt;li&gt;Fingerprinting and watermarking&lt;/li&gt;
&lt;li&gt;Governance frameworks&lt;/li&gt;
&lt;li&gt;Ethics and AI dilemmas&lt;/li&gt;
&lt;li&gt;Negotiation&lt;/li&gt;
&lt;li&gt;Change management&lt;/li&gt;
&lt;li&gt;Remote working, management, hiring&lt;/li&gt;
&lt;li&gt;Creating attention scarcity&lt;/li&gt;
&lt;li&gt;Local cultures&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Work with people of growing importance
&lt;ul&gt;
&lt;li&gt;People designing products in regulated industries&lt;/li&gt;
&lt;li&gt;Cross domain experts&lt;/li&gt;
&lt;li&gt;Art developers, game makers, designers&lt;/li&gt;
&lt;li&gt;System thinkers. Economists, ecologists, system planners. People who look for second order effects.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Live in cities that might play a bigger role in the future
&lt;ul&gt;
&lt;li&gt;Cities like Singapore and learn how it builds civics trust, creates digital IDs.&lt;/li&gt;
&lt;li&gt;Cities like Bangalore and Hyderabad and learn how they grow tech talent&lt;/li&gt;
&lt;li&gt;Creative cities like Paris, Seoul, Mexico City, Berlin, etc. on sabbaticals to taste hubs&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Try to:
&lt;ul&gt;
&lt;li&gt;Build auditing credentials and IP&lt;/li&gt;
&lt;li&gt;Audit your calendar for what AI can do. Have it interview you&lt;/li&gt;
&lt;li&gt;Practice sceptical fact checking and audit&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;A clever way to test a library&amp;rsquo;s quality is to have LLMs write code from docs and test it. Failing libraries have flawed code/docs. Improve. &lt;a href=&#34;https://lucumr.pocoo.org/2025/6/17/measuring/&#34;&gt;Ref&lt;/a&gt; #ai-coding&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/r-three/common-pile/&#34;&gt;Common Pile&lt;/a&gt; is an 8TB open dataset for LLM training that includes ArXiv, PubMed, StackExchange, GitHub, IRC, Regulations.gov, Patents, UK parliament, books. Easier than scraping.&lt;/li&gt;
&lt;li&gt;A useful way to have reasoning models do deep-research-like work is to have them &amp;ldquo;First, create a plan to solve the problem, clearly listing the objective, approach, and output. Then follow the plan.&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://arxiv.org/pdf/2402.09910&#34;&gt;DE-COP&lt;/a&gt; is a method to check if LLMs were trained on private content. GPT-4o was trained on O&amp;rsquo;Reilly books, based on this method. &lt;a href=&#34;https://www.deeplearning.ai/the-batch/issue-303/&#34;&gt;Ref&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;LLMs are more persuasive than humans. But repeated exposure reduces the effect. &lt;a href=&#34;https://jack-clark.net/2025/05/26/import-ai-414-superpersuasion-openai-models-avoid-shutdown-weather-prediction-and-ai/&#34;&gt;Ref&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://phoenix.new/&#34;&gt;Phoenix.new&lt;/a&gt; uses live views to publish apps as it codes. The testing framework looks at the screen while it codes and fixes errors. It commits every change&lt;/li&gt;
&lt;li&gt;Anthropic system prompt asking Claude to pursue its goals led to self preservation behavior. &lt;a href=&#34;https://x.com/lefthanddraft/status/1937673283614441685?t=uPejOWJdiL3XR9KSNfJPYQ&#34;&gt;Ref&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;The hungrier I am the better the food tastes. A good reason to eat less quantity and frequency&lt;/li&gt;
&lt;li&gt;You can &lt;a href=&#34;https://www.jsdelivr.com/tools/purge&#34;&gt;purge the jsDelivr cache&lt;/a&gt; manually. Helps if you released a new version of a package and way to purge an alias (e.g. &lt;code&gt;https://cdn.jsdelivr.net/npm/your-package@1&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.xconvert.com/compress-webm&#34;&gt;XConvert&lt;/a&gt; is a convenient online app to compress .webm videos. Not great design but fairly good compression.&lt;/li&gt;
&lt;li&gt;You can draw a treemap of import times via &lt;code&gt;python -X importtime app.py &amp;gt; timing.txt&lt;/code&gt; and then paste them at &lt;a href=&#34;https://kmichel.github.io/python-importtime-graph/&#34;&gt;https://kmichel.github.io/python-importtime-graph/&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/eoda-dev/py-openlayers&#34;&gt;PyOpenLayers&lt;/a&gt; adds interactive mapping via OpenLayers to Marimo and Jupyter.&lt;/li&gt;
&lt;li&gt;In a &lt;a href=&#34;https://techcrunch.com/podcast/inside-anthropics-ai-ambitions-with-jared-kaplan/&#34;&gt;TechCrunch interview with Jared Kaplan&lt;/a&gt; has was asked if Anthropic is becoming less safety conscious because they released Opus 4 which blackmails. Kaplan replied that they have stronger testing and higher transparency, so they&amp;rsquo;re &lt;em&gt;more&lt;/em&gt; likely to share AI dangers early. Great positioning! Conversations are about perspective change and this nailed it.&lt;/li&gt;
&lt;li&gt;The &lt;a href=&#34;https://github.com/anthropic-experimental/agentic-misalignment/blob/main/templates/system_prompt_templates.py&#34;&gt;system prompts&lt;/a&gt; for Anthropic misalignment evals are a fascinating read.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/aavetis/ai-pr-watcher&#34;&gt;AI PR Watcher&lt;/a&gt; tracks GitHub pull requests from Codex and other LLMs. Codex is &lt;em&gt;way&lt;/em&gt; ahead of anything else on volume &lt;em&gt;and&lt;/em&gt; success rate. Devin is next on volume, Cursor is next on success rate.&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    <item>
      <title>Things I Learned - 29 Dec 2024</title>
      <link>https://www.s-anand.net/blog/things-i-learned-29-dec-2024/</link>
      <pubDate>Sun, 29 Dec 2024 00:00:00 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/things-i-learned-29-dec-2024/</guid>
      <description>&lt;p&gt;This week, I learned:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A clever idea. Give an LLM a chapter from a textbook. Ask it to generate a unique, playable game to help me learn theconcepts for an exam. &lt;a href=&#34;https://www.linkedin.com/feed/update/urn:li:activity:7278124663048695809/&#34;&gt;Page Bailey&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;What would be the cost of storing about 500GB of LLM cache logs and 5 million write requests per month?
&lt;ul&gt;
&lt;li&gt;CloudFlare KV: $250 + $25 / month &lt;a href=&#34;https://developers.cloudflare.com/kv/platform/pricing/&#34;&gt;Ref&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;MongoDB: $125 + $5 / month &lt;a href=&#34;https://www.mongodb.com/pricing&#34;&gt;Ref&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;S3: $0.0115 + $25 / month &lt;a href=&#34;https://aws.amazon.com/s3/pricing/&#34;&gt;Ref&lt;/a&gt; + ?&lt;/li&gt;
&lt;li&gt;CloudFlare R2: $0.0075 + $22.5 / month &lt;a href=&#34;https://developers.cloudflare.com/r2/pricing/&#34;&gt;Ref&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Satya Nadella prepares for meetings by asking Copilot to tell him everything he needs to know about the client from the CRM, emails, meeting transcripts etc. He shares that colleagues who annotate it further for him. That&amp;rsquo;s using AI for reasoning &lt;em&gt;and&lt;/em&gt; collaborating with colleagues. &lt;a href=&#34;https://youtu.be/9NtsnzRFJ_o?si=0oynYlHPb90TaACD&amp;amp;t=3254&#34;&gt;Satya Nadella | BG2 w/ Bill Gurley &amp;amp; Brad Gerstner&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;WOW. This is how a software agent will work alongside humans: &lt;a href=&#34;https://github.com/All-Hands-AI/OpenHands/pull/5483&#34;&gt;Fix issue #5478: Add color to the line next to &amp;ldquo;Ran a XXX Command&amp;rdquo; based on return value&lt;/a&gt; - using &lt;a href=&#34;https://github.com/openhands-agent&#34;&gt;@openhands-agent&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/andrewyng/aisuite&#34;&gt;aisuite&lt;/a&gt; by Andrew Ng is a unified interface to LLMs. Sort of like an &lt;code&gt;openai&lt;/code&gt; library across multiple providers.&lt;/li&gt;
&lt;li&gt;Learnings from &lt;a href=&#34;https://youtu.be/B6PKVZq2qqo&#34;&gt;Best of 2024 in Agents (from #1 on SWE-Bench Full, Prof. Graham Neubig of OpenHands/AllHands)&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;Passing code execution as a tool is more powerful than granular tools. You combine multiple tools and tool calls into one. You move code to the data rather than the other way around. Mostly, you need bash, Python (or Jupyter), file manager, web browser.&lt;/li&gt;
&lt;li&gt;UI: Go where the user is, instead of bringing them to you.&lt;/li&gt;
&lt;li&gt;A remote runtime is a critical component.&lt;/li&gt;
&lt;li&gt;Claude 3.5 Sonnet (20241022) and Claude 3.5 Haiku (20241022) perform best on SWE Bench, followed by Deepseek V3, then O1 2024-12-17. &lt;a href=&#34;https://x.com/xingyaow_/status/1872145835699691675&#34;&gt;X&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Browsers support SVG favicons as data URLs. So I used this SVG (generated by Claude via &lt;code&gt;Generate a simple, interesting SVG favicon. Keep the SVG size VERY small but it should be inspiring.&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Since HNSW indexing is an overhead, just use NumPy matrix multiplication to calculate cosine similarity. For 1M vectors, it takes ~0.05 seconds. A 1M vector dataset handles ~2GB of text at a chunk size of 2K chars. In short, if you&amp;rsquo;re embedding &amp;lt;2GB of text, just use NumPy.&lt;/li&gt;
&lt;li&gt;DuckDB&amp;rsquo;s VSS extension HNSW index + Embeddings (2K chunks of 512 dimensions) takes up roughly 2.5X the size of the original data. Embedding 554 files of ~4,456 KB took 710 seconds. Creating the index took 660 seconds. The resulting DB was 18.1 MB.&lt;/li&gt;
&lt;li&gt;How to use &lt;a href=&#34;https://businessmeetsai.substack.com/p/market-research-meets-ai-the-3-step&#34;&gt;LLMs in market research&lt;/a&gt;.
&lt;ul&gt;
&lt;li&gt;Use LLMs with search for secondary research.&lt;/li&gt;
&lt;li&gt;Create different personas and run user surveys on them. &lt;a href=&#34;https://x.com/emollick/status/1858664562750374139&#34;&gt;This paper used 1,052 real-life interview audio transcripts as agent memory to simulate people&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Generate your market research report using LLMs.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Given about 30 generations, Llama 1b outperforms Llama 8b. &lt;a href=&#34;https://huggingface.co/spaces/HuggingFaceH4/blogpost-scaling-test-time-compute&#34;&gt;Ref&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;OpenAI introduced a &lt;code&gt;developer&lt;/code&gt; role in addition to the &lt;code&gt;system&lt;/code&gt; role. This is mainly for &lt;code&gt;o1&lt;/code&gt;. The API is backward compatible - and also forward compatible. &lt;a href=&#34;https://community.openai.com/t/how-is-developer-message-better-than-system-prompt/1062784&#34;&gt;OpenAI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Em dashes are a strong sign of ChatGPT use. Curly quotes too. &lt;a href=&#34;https://www.reddit.com/r/ApplyingToCollege/comments/1h0vhlq/in_the_past_three_days_ive_reviewed_over_100/&#34;&gt;Reddit&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;CloudFlare has multiple &lt;a href=&#34;https://developers.cloudflare.com/ssl/origin-configuration/ssl-modes/&#34;&gt;SSL modes&lt;/a&gt; when proxying requests.
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://developers.cloudflare.com/ssl/origin-configuration/ssl-modes/off/&#34;&gt;Off (no encryption)&lt;/a&gt;: No encryption between browsers and Cloudflare or between Cloudflare and origins. Everything is cleartext HTTP.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://developers.cloudflare.com/ssl/origin-configuration/ssl-modes/flexible/&#34;&gt;Flexible&lt;/a&gt;: Browsers to Cloudflare is HTTPS, Cloudflare to origin is HTTP. Useful to set up CloudFlare as a HTTP Proxy.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://developers.cloudflare.com/ssl/origin-configuration/ssl-modes/full/&#34;&gt;Full&lt;/a&gt;: Browser to Cloudflare matches browser request. Same protocol is used for Cloudflare to origin, without validating the origin’s certificate. Use for self-signed or otherwise invalid certificates.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://developers.cloudflare.com/ssl/origin-configuration/ssl-modes/full-strict/&#34;&gt;Full (strict)&lt;/a&gt;: Similar to Full Mode, but with validation.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://developers.cloudflare.com/ssl/origin-configuration/ssl-modes/ssl-only-origin-pull/&#34;&gt;Strict (SSL-Only Origin Pull)&lt;/a&gt;: Cloudflare always connects to the origin over HTTPS with certificate validation.&lt;/li&gt;
&lt;li&gt;Getting this wrong can lead to a &lt;a href=&#34;https://developers.cloudflare.com/support/troubleshooting/cloudflare-errors/troubleshooting-cloudflare-5xx-errors/#error-526-invalid-ssl-certificate&#34;&gt;HTTP 526: invalid SSL certificate&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Medical coding is an area ripe for LLMs.
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/ojasviyadav/medical-coding-agent/&#34;&gt;Ojasvi Yadav created a repo&lt;/a&gt; that uses hierarchical classification (rather than embeddings) to find the right coding.&lt;/li&gt;
&lt;li&gt;Gemini models seem to understand medical terms better than others.&lt;/li&gt;
&lt;li&gt;RapidClaims, funded by TogetherAI, is apparently working on this problem.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Document to Markdown Converters:
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://pymupdf.readthedocs.io/en/latest/pymupdf4llm/&#34;&gt;PyMuPDF4LLM&lt;/a&gt; uses &lt;a href=&#34;https://mupdf.com/&#34;&gt;MuPDF&lt;/a&gt;. Requires PyTorch.
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;PYTHONUTF8=1 uv run --with pymupdf4llm python -c &#39;import pymupdf4llm; h = open(&amp;quot;pymupdf4llm.md&amp;quot;, &amp;quot;w&amp;quot;); h.write(pymupdf4llm.to_markdown(&amp;quot;$FILE.pdf&amp;quot;))&#39;&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/microsoft/markitdown&#34;&gt;markitdown&lt;/a&gt; from Microsoft. PDF via PDFMiner, DOCX via Mammoth, XLSX via Pandas, PPTX via Python-PPTD, ZIP, etc.
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;PYTHONUTF8=1 uvx markitdown $FILE.pdf &amp;gt; markitdown.md&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/DS4SD/docling&#34;&gt;Docling&lt;/a&gt; by IBM. Unable to install via pip on Windows AND on Linux.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/QuivrHQ/MegaParse&#34;&gt;MegaParse&lt;/a&gt; uses libreoffice, pandoc, tesseract-ocr, etc. Requires OpenAI API key.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/SpursGoZmy/Awesome-Tabular-LLMs&#34;&gt;Awesome Tabular LLMs&lt;/a&gt; compiles encodings of tables for LLMs.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://typeset.io/search?q=What%27s%20the%20best%20way%20of%20encoding%20tabular%20data%20for%20LLMs%3F&#34;&gt;What&amp;rsquo;s the best way of encoding tabular data for LLMs?&lt;/a&gt; Looks like including the cell address helps. &lt;a href=&#34;https://chatgpt.com/share/6768c852-3bd4-800c-a4c7-0e4692a49afd&#34;&gt;Here is an explanation from ChatGPT&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://pypi.org/project/aspose-words/&#34;&gt;aspose-words&lt;/a&gt; is a Python library that converts documents with many formats (Word, RTF, PDF, HTML, Markdown, EPUB, etc.)&lt;/li&gt;
&lt;li&gt;Discourse does not support searching across multiple forums. Instead, search for the term in all forums. &lt;a href=&#34;https://discourse.onlinedegree.iitm.ac.in/search?q=TDS&#34;&gt;Example&lt;/a&gt;. Then scroll through the results. Then, in the console, hide the ones you don&amp;rsquo;t want. Example:
&lt;ul&gt;
&lt;li&gt;Hide posts that are not in the &amp;ldquo;Tools in Data Science&amp;rdquo; category: &lt;code&gt;$(&amp;quot;.badge-category__name&amp;quot;).filter(d =&amp;gt; d.textContent == &amp;quot;Tools in Data Science&amp;quot;).map(d =&amp;gt; d.closest(&amp;quot;.fps-result&amp;quot;)).filter(d =&amp;gt; d).forEach(d =&amp;gt; d.style.display = &amp;quot;none&amp;quot;)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://news.ycombinator.com/item?id=42431103&#34;&gt;How are software engineers are future-proofing their careers in the face of LLMs?&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;Leveraging LLMs as Force Multipliers
&lt;ul&gt;
&lt;li&gt;Use LLMs for repetitive tasks, rapid prototyping, exploring multiple approaches, data extraction and brainstorming, providing feedback.&lt;/li&gt;
&lt;li&gt;Explore prompting techniques, integrate LLMs into their workflows, and develop strategies for validating and refining LLM-generated code&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Focusing on higher-level skills that llms struggle with
&lt;ul&gt;
&lt;li&gt;Systems Thinking and Architecture: code readability, extensibility, testability, and maintainability&lt;/li&gt;
&lt;li&gt;Problem Solving and Critical Thinking: define problems clearly, break them down into manageable parts, and reason through complex scenarios. LLMs produce plausibly incorrect code.&lt;/li&gt;
&lt;li&gt;Communication and Collaboration&lt;/li&gt;
&lt;li&gt;Domain Expertise&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Exploring Adjacent Roles: product management, technical leadership, or consulting. Involve more interaction with clients and stakeholders.&lt;/li&gt;
&lt;li&gt;Developing &amp;ldquo;Evergreen&amp;rdquo; Skills: debugging, system administration, and security. Or outside of software engineering, such as trades or other hands-on vocations.&lt;/li&gt;
&lt;li&gt;Scepticism: LLMs may not reach a level of sophistication that would render their expertise obsolete. Complex problems, understanding context, and producing high-quality, maintainable code.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://news.ycombinator.com/item?id=42431361&#34;&gt;Examples of agentic AI&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;Text-to-SQL automated business analyst: A system that generates SQL queries from natural language, handles errors, creates visualizations, and includes a FAQ component. The author calls it &amp;ldquo;constrained agentic AI.&amp;rdquo;&lt;/li&gt;
&lt;li&gt;Data source querying system: A bot that queries multiple SQL and API data sources, selecting tools and reformulating tasks as needed.&lt;/li&gt;
&lt;li&gt;Cursor (agentic mode): An LLM-powered VS Code fork that chains together various LLM capabilities (code generation, applying changes, linting suggestions, terminal commands, codebase RAG) to reduce user prompts.&lt;/li&gt;
&lt;li&gt;Vulnerability finding system: A system that uses LLM agents to discover novel vulnerabilities in open-source web applications. The agents leave traces of their actions.&lt;/li&gt;
&lt;li&gt;Marketing strategy generation system: A system using approximately 60 agents to generate marketing strategies.&lt;/li&gt;
&lt;li&gt;Restaurant finder: A system that searches for restaurants based on dietary preferences and group size, and downloads social media information.&lt;/li&gt;
&lt;li&gt;Proofreading and editing of transcripts: LLM agents apply specific customer requirements to transcripts after human editing.&lt;/li&gt;
&lt;li&gt;Meeting notes and action items generator: A system that generates meeting notes and action items.&lt;/li&gt;
&lt;li&gt;O&amp;rsquo;Reilly auto parts customer service agent: An agent demonstrated using RAG.&lt;/li&gt;
&lt;li&gt;UI enhancement agent: An agent that added features like language locales and dark mode to a UI.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
  </channel>
</rss>
