<?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-r2 on S Anand</title>
    <link>https://www.s-anand.net/blog/tag/cloudflare-r2/</link>
    <description>Recent content in cloudflare-r2 on S Anand</description>
    <generator>Hugo -- 0.164.0</generator>
    <language>en-us</language>
    <lastBuildDate>Sun, 14 Jun 2026 08:27:16 +0530</lastBuildDate>
    <atom:link href="https://www.s-anand.net/blog/tag/cloudflare-r2/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Editing Workshop Videos</title>
      <link>https://www.s-anand.net/blog/editing-workshop-videos/</link>
      <pubDate>Sun, 14 Jun 2026 08:27:16 +0530</pubDate>
      <guid>https://www.s-anand.net/blog/editing-workshop-videos/</guid>
      <description>&lt;p&gt;I sometimes use &lt;a href=&#34;https://meet.google.com/&#34;&gt;Google Meet&lt;/a&gt;, &lt;a href=&#34;https://teams.microsoft.com/&#34;&gt;Teams&lt;/a&gt;, &lt;a href=&#34;https://www.zoom.com/&#34;&gt;Zoom&lt;/a&gt;, etc. to record workshops and talks. These record the entire session, including &lt;em&gt;before&lt;/em&gt; and &lt;em&gt;after&lt;/em&gt; the actual talk, and save it as large MP4 files.&lt;/p&gt;
&lt;p&gt;I use &lt;code&gt;ffmpeg&lt;/code&gt; to trim the video to just the talk, and then compress it for sharing. I&amp;rsquo;m sharing the options that work for me, discovered by trial-and-error.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;To trim it&lt;/strong&gt;, I use the following command:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ffmpeg -ss 00:10:00 -to 02:10:00 &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -i &lt;span class=&#34;s2&#34;&gt;&amp;#34;original.mp4&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -map &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -c copy &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -avoid_negative_ts make_zero &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -movflags +faststart &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  new.mp4
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Arguments:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;-ss 00:10:00&lt;/code&gt;: Start reading from 10:00 into the source file. Placing -ss before -i makes this fast because ffmpeg seeks instead of decoding from the start.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-to 02:10:00&lt;/code&gt;: Stop at 02:10:00 in the source timeline. So this keeps roughly the section from 00:10:00 to 02:10:00.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-map 0&lt;/code&gt;: Keep all streams from the input: video, audio, subtitles, metadata streams, etc. Use &lt;code&gt;-map 0:v:0 -map 0:a:0&lt;/code&gt; for just the first video and audio streams.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-c copy&lt;/code&gt;: Do not re-encode. Just copy the existing encoded streams. This is very fast and preserves original quality, but cuts only cleanly near keyframes.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-avoid_negative_ts make_zero&lt;/code&gt;: Rewrite timestamps so the output starts cleanly near zero. This helps avoid weird negative timestamps and duration/reporting issues in some players.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-movflags +faststart&lt;/code&gt;: Move MP4 metadata to the beginning of the file. This helps playback start faster in browsers and streaming contexts.)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;To compress it&lt;/strong&gt; I use:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ffmpeg -i &lt;span class=&#34;s1&#34;&gt;&amp;#39;trimmed.mp4&amp;#39;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -map 0:v:0 -map 0:a:0 &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -c:v libvpx-vp9 &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -b:v &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -crf &lt;span class=&#34;m&#34;&gt;42&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -deadline realtime &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -cpu-used &lt;span class=&#34;m&#34;&gt;8&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -row-mt &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -tile-columns &lt;span class=&#34;m&#34;&gt;2&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -frame-parallel &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -threads &lt;span class=&#34;m&#34;&gt;8&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -pix_fmt yuv420p &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -vf &lt;span class=&#34;s2&#34;&gt;&amp;#34;fps=16&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -c:a libopus &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -b:a 32k &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -ac &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -ar &lt;span class=&#34;m&#34;&gt;48000&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -af &lt;span class=&#34;s2&#34;&gt;&amp;#34;highpass=f=80,lowpass=f=12000&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;s2&#34;&gt;&amp;#34;compressed.webm&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Arguments:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;-map 0:v:0 -map 0:a:0&lt;/code&gt;: Use the first video stream and first audio stream from the input&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-c:v libvpx-vp9&lt;/code&gt;: Compress video with VP9 codec&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-b:v 0&lt;/code&gt;: Use constant-quality mode instead of targeting a fixed bitrate&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-crf 42&lt;/code&gt;: When testing on samples, CRF 42 was small enough and clear enough for me&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-deadline realtime&lt;/code&gt;: &lt;code&gt;-deadline good&lt;/code&gt; is too slow for me though that&amp;rsquo;s better for production&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-cpu-used 8&lt;/code&gt;: 8 is the maximum allowed for VP9 for now&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-row-mt 1&lt;/code&gt;: Enable row-based multithreading for faster VP9 encoding&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-tile-columns 2&lt;/code&gt;: Split each frame into tiles so multiple threads can encode in parallel&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-frame-parallel 1&lt;/code&gt;: Allow frames to be decoded in parallel; useful for VP9/WebM playback&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-threads 8&lt;/code&gt;: Use up to 8 CPU threads during encoding&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-pix_fmt yuv420p&lt;/code&gt;: Use the most compatible pixel format for browsers and video players&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-vf &amp;quot;fps=16&amp;quot;&lt;/code&gt;: Reduce frame rate to 16 fps to shrink file size; good enough for slides/talk videos&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-c:a libopus&lt;/code&gt;: Compress audio with Opus, the standard audio codec for WebM&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-b:a 32k&lt;/code&gt;: Use low audio bitrate; enough for speech&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-ac 1&lt;/code&gt;: Convert audio to mono; good for voice and halves stereo audio data&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-ar 48000&lt;/code&gt;: Use 48 kHz, the standard sample rate for Opus&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-af &amp;quot;highpass=f=80,lowpass=f=12000&amp;quot;&lt;/code&gt;: Remove very low rumble and very high noise; keeps speech frequencies&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I deploy these on CloudFlare R2 on a custom domain: &lt;a href=&#34;https://media.s-anand.net/&#34;&gt;media.s-anand.net&lt;/a&gt;. &lt;a href=&#34;https://developers.cloudflare.com/r2/pricing/&#34;&gt;R2 costs&lt;/a&gt; 1.5c / GB-month. Storing 10 years&amp;rsquo; worth of ~500 talks of ~0.5 GB each is under $4 / month - quite affordable. (If it increases, I can shift. Statis files are easy to move.)&lt;/p&gt;
&lt;p&gt;I serve them via a &lt;code&gt;&amp;lt;video&amp;gt;&lt;/code&gt; tag. Here is an &lt;a href=&#34;https://media.s-anand.net/2026-05-23-ai-unboxed-context-engineering.webm&#34;&gt;example video&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-html&#34; data-lang=&#34;html&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;video&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;preload&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;metadata&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;width&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;1920&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;height&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;1080&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;controls&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;style&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;max-width: 100%; height: auto;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;source&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;src&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;https://media.s-anand.net/2026-05-23-ai-unboxed-context-engineering.webm&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;type&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;video/webm; codecs=&amp;amp;quot;vp9, opus&amp;amp;quot;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;video&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;video preload=&#34;metadata&#34; width=&#34;1920&#34; height=&#34;1080&#34; controls style=&#34;max-width: 100%; height: auto;&#34;&gt;
  &lt;source src=&#34;https://media.s-anand.net/2026-05-23-ai-unboxed-context-engineering.webm&#34; type=&#34;video/webm; codecs=&amp;quot;vp9, opus&amp;quot;&#34;&gt;
&lt;/video&gt;
</description>
    </item>
    <item>
      <title>Tracking redirects minimally</title>
      <link>https://www.s-anand.net/blog/tracking-redirects-minimally/</link>
      <pubDate>Thu, 07 May 2026 16:28:22 +0800</pubDate>
      <guid>https://www.s-anand.net/blog/tracking-redirects-minimally/</guid>
      <description>&lt;p&gt;Everyone needs a tracking URL shortener.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Why tracking?&lt;/strong&gt; I want to know if they opened my email and clicked the link.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Why shortener?&lt;/strong&gt; I want them to know what the link is about. For example, &lt;a href=&#34;https://r.s-anand.net/edge-remote-debugging.html&#34;&gt;https://r.s-anand.net/edge-remote-debugging.html&lt;/a&gt; is so much more meaningful than &lt;a href=&#34;https://chatgpt.com/share/68528565-0d34-800c-b9ec-6dccca01c24c&#34;&gt;https://chatgpt.com/share/68528565-0d34-800c-b9ec-6dccca01c24c&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I&amp;rsquo;ve used redirection services in the past - like &lt;code&gt;t.co&lt;/code&gt;, &lt;code&gt;bit.ly&lt;/code&gt;, &lt;code&gt;goo.gl&lt;/code&gt;, &lt;code&gt;ow.ly&lt;/code&gt;, and others. They tend to vanish, start charging, serve ads, etc.&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s my solution: &lt;strong&gt;use static HTML for redirection&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://files.s-anand.net/images/2026-05-07-tracking-redirects-minimally.avif&#34;&gt; &lt;!-- https://chatgpt.com/c/69fc5f20-2dfc-83ea-82c4-9096c77374f3 --&gt;&lt;/p&gt;
&lt;p&gt;For example, &lt;a href=&#34;https://r.s-anand.net/example.html&#34;&gt;https://r.s-anand.net/example.html&lt;/a&gt; redirects to &lt;a href=&#34;https://example.com/&#34;&gt;https://example.com/&lt;/a&gt;. Here&amp;rsquo;s the code:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;&amp;lt;script data-goatcounter=&amp;#34;https://sanand0.goatcounter.com/count&amp;#34; async src=&amp;#34;//gc.zgo.at/count.js&amp;#34;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;meta http-equiv=&amp;#34;refresh&amp;#34; content=&amp;#34;0; url=https://example.com/&amp;#34;&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The first line sets up tracking with &lt;a href=&#34;https://www.goatcounter.com/&#34;&gt;GoatCounter&lt;/a&gt;, which is my current favorite analytics provider. It might vanish, but I can export the data if required and move to another. While it lasts, I can check how often the link was used.&lt;/p&gt;
&lt;p&gt;I can create personalized links. For example, &lt;a href=&#34;https://r.s-anand.net/example.html?ref=user1&#34;&gt;https://r.s-anand.net/example.html?ref=user1&lt;/a&gt; tags &lt;code&gt;user1&lt;/code&gt;. I can create unique links for each recipient.&lt;/p&gt;
&lt;p&gt;The second redirects to the target page immediately.&lt;/p&gt;
&lt;p&gt;I have deployed the files on a CloudFlare R2 bucket with a custom domain, which is practically free and fast. But I can switch at any point to any other hosting provider (e.g. GitHub Pages, etc.) by just copying the files and changing the DNS settings.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Advantages&lt;/strong&gt;: No hosting, no fees, no maintainance, no vendor lock-in.&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Things I Learned - 17 Nov 2024</title>
      <link>https://www.s-anand.net/blog/things-i-learned-17-nov-2024/</link>
      <pubDate>Sun, 17 Nov 2024 00:00:00 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/things-i-learned-17-nov-2024/</guid>
      <description>&lt;p&gt;This week, I learned:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Anthropic has single-plage docs for LLMs. &lt;a href=&#34;https://docs.anthropic.com/llms.txt&#34;&gt;Condensed version&lt;/a&gt; and &lt;a href=&#34;https://docs.anthropic.com/llms-full.txt&#34;&gt;Full version&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.ted.com/pages/malcolm-gladwell-on-the-importance-of-self-correction-transcript&#34;&gt;Malcolm Gladwell on the importance of self-correction&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;Belonging to multiple social worlds is a good way to defend against no longer being good at what you used to be. Diverse values and social groups help.&lt;/li&gt;
&lt;li&gt;Self handicapping explains a lot about the world. You study late for a maths test - so you can fail for lack of trying, not aptitude. Ecosystems (e.g. sports teams) mitigate self-handicapping.&lt;/li&gt;
&lt;li&gt;You don&amp;rsquo;t have to be good in athletics to get the benefits. A slow runner gets the same discipline, pumping up, etc that a fast runner does&lt;/li&gt;
&lt;li&gt;Mono cultures are good to accomplish a known mission. Diversity is good to pivot during uncertainty. So, localize mono cultures&lt;/li&gt;
&lt;li&gt;Diversity helps only if there are sufficient numbers, or if they have enough power to change the organization&amp;rsquo;s thinking.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Use a standardized password strategy, e.g. use the month like GramNov2024 (via Namit)&lt;/li&gt;
&lt;li&gt;Gemini has an OpenAI compatible API. &lt;a href=&#34;https://ai.google.dev/gemini-api/docs/openai&#34;&gt;Gemini Docs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Ethan Mollick says Claude is solving MBA case studies well. &lt;a href=&#34;https://x.com/emollick/status/1856161026238025835&#34;&gt;x.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;LLMs pay a lot of attention to the first 6 tokens. &lt;a href=&#34;https://huggingface.co/blog/tomaarsen/attention-sinks&#34;&gt;Ref&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;This is an interesting article on &amp;ldquo;UI in the age of Gen AI&amp;rdquo;. &lt;a href=&#34;https://agao.substack.com/p/uiux-in-the-age-of-generative-ai&#34;&gt;Ref&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Google Open sourced Alphafold 3. &lt;a href=&#34;https://github.com/google-deepmind/alphafold3&#34;&gt;Repo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Cloudflare R2 has the same API as S3 but is cheaper&lt;/li&gt;
&lt;li&gt;Prefect.io is a good alternative to Airflow / cron. Can use for synchronisation tasks, e.g. Drive to server. But no Auth, UI params or config.&lt;/li&gt;
&lt;li&gt;Gemini transcription does not give accurate timestamps. Whisper does. But the quality of transcription is similar.&lt;/li&gt;
&lt;li&gt;Pass a complex data structure to Claude.ai and have it create an app to visualize it. It does well. &lt;a href=&#34;https://x.com/simonw/status/1855819673482461216&#34;&gt;Simin Willison&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://techcouncilventures.com/&#34;&gt;Tech Council Ventures&lt;/a&gt; and &lt;a href=&#34;https://sunicon.vc/&#34;&gt;Sunicon VC&lt;/a&gt; invest in early stage startups, and aloso provide them technology support (via Naveen)&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
  </channel>
</rss>
