<?xml version="1.0" encoding="UTF-8" ?>
    <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
      <channel>
          <title>Curated by community on the bookmarksfor.dev</title>
          <link>https://bookmarksfor.dev/discover/curated-by-community</link>
          <description>Curated by community on the bookmarksfor.dev</description>
          <language>en</language>
          <lastBuildDate>Tue, 07 Apr 2026 21:22:19 GMT</lastBuildDate>
          <atom:link href="https://bookmarksfor.dev/discover/curated-by-community/rss" rel="self" type="application/rss+xml" />
          <item>
            <title>What's New in Gemini 3.0</title>
            <link>https://addyosmani.com/blog/gemini-3/</link>
            <guid>https://addyosmani.com/blog/gemini-3/</guid>
            <description>We recently shipped Gemini 3 Pro live across Google AI Studio, the Gemini app, Vertex AI, Searchs AI Mode, Google Antigravity, and more. Here is what actually shipped, how it all fits together, and what it unlocks for developers.</description>
            <pubDate>Thu, 04 Dec 2025 10:12:31 GMT</pubDate>
            <source>addyosmani.com</source>
            <category></category>
          </item>
<item>
            <title>Copy *and* Paste? …in this Economy?</title>
            <link>https://www.zachleat.com/web/copy-paste/</link>
            <guid>https://www.zachleat.com/web/copy-paste/</guid>
            <description>&lt;p&gt;Astute visitors to the &lt;a href=&quot;https://www.11ty.dev/&quot;&gt;Eleventy Documentation&lt;/a&gt; will notice something new on the code blocks on the site.&lt;/p&gt;
&lt;style&gt;
#demo-fa-copy-button {
	wa-copy-button { line-height: 1; vertical-align: text-bottom; }
	wa-copy-button::part(button) { padding: 0; }
	wa-copy-button::part(copy-icon),
	wa-copy-button::part(success-icon),
	wa-copy-button::part(error-icon) { font-size: 1.3125em;  }
}
&lt;/style&gt;
&lt;div id=&quot;demo-fa-copy-button&quot;&gt;&lt;p&gt;&lt;em&gt;A wild copy-to-clipboard component has appeared: &lt;wa-copy-button tooltip-placement=&quot;right&quot; value=&quot;Unparalleled synergy&quot;&gt;&lt;svg class=&quot;z-icon&quot; width=&quot;20&quot; height=&quot;20&quot;&gt;&lt;use href=&quot;#far-fa-copy&quot; xlink:href=&quot;#far-fa-copy&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/wa-copy-button&gt;&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;This feature been a &lt;em&gt;long&lt;/em&gt; time coming and is our first use of &lt;a href=&quot;https://webawesome.com/&quot;&gt;&lt;svg class=&quot;z-icon&quot; width=&quot;20&quot; height=&quot;20&quot;&gt;&lt;use href=&quot;#fab-fa-web-awesome&quot; xlink:href=&quot;#fab-fa-web-awesome&quot;&gt;&lt;/use&gt;&lt;/svg&gt;Web Awesome&lt;/a&gt; on the docs (via the &lt;a href=&quot;https://webawesome.com/docs/components/copy-button/&quot;&gt;&lt;code&gt;&amp;lt;wa-copy-button&amp;gt;&lt;/code&gt; custom element&lt;/a&gt;). Take special note of the unparalleled &lt;em&gt;synergy&lt;/em&gt; of the Font Awesome icon used by the Web Awesome component used on the &lt;em&gt;Eleventy&lt;/em&gt; docs.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Progressive Enhancement behavior: this is a JavaScript-only feature and has no before/without JavaScript experience. You might call this a &lt;a href=&quot;https://www.zachleat.com/web/a-taxonomy-of-web-component-types/#javascript-web-components&quot;&gt;JavaScript Web Component&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Performance-focused:
&lt;ul&gt;
&lt;li&gt;This is using a &lt;a href=&quot;https://github.com/11ty/11ty-website/blob/afd92d6f44332323eda33a9380d5e3979074b497/eleventy.config.js#L479&quot;&gt;build-time component bundle&lt;/a&gt; (read more about Bundling below)&lt;/li&gt;
&lt;li&gt;The JavaScript code for the component only loads when an instance is visible (via &lt;a href=&quot;https://www.11ty.dev/docs/plugins/is-land/&quot;&gt;&lt;code&gt;&amp;lt;is-land&amp;gt;&lt;/code&gt;&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;usage&quot;&gt;Usage&lt;/h2&gt;
&lt;h3 id=&quot;direct-from-cdn&quot;&gt;Direct from CDN&lt;/h3&gt;
&lt;p&gt;There are a few ways to use the Copy Button component stock, with the easiest being to load the script directly from the CDN, like so (via &lt;a href=&quot;https://www.jsdelivr.com/&quot;&gt;&lt;code&gt;jsdelivr&lt;/code&gt;&lt;/a&gt;):&lt;/p&gt;
&lt;pre class=&quot;language-html&quot; tabindex=&quot;0&quot;&gt;&lt;code class=&quot;language-html&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;script&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;type&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;module&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;src&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;https://cdn.jsdelivr.net/npm/@awesome.me/webawesome@3.0.0/dist-cdn/components/copy-button/copy-button.js&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token script&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;script&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Or via &lt;a href=&quot;https://www.jsdelivr.com/&quot;&gt;&lt;code&gt;unpkg&lt;/code&gt;&lt;/a&gt;:&lt;/p&gt;
&lt;pre class=&quot;language-html&quot; tabindex=&quot;0&quot;&gt;&lt;code class=&quot;language-html&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;script&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;type&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;module&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;src&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;https://unpkg.com/@awesome.me/webawesome@3.0.0/dist-cdn/components/copy-button/copy-button.js&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token script&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;script&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;bundling&quot;&gt;Bundling&lt;/h3&gt;
&lt;p&gt;For this implementation we used &lt;code&gt;esbuild&lt;/code&gt; to create a focused bundle for the single Web Awesome component (though this &lt;code&gt;esbuild&lt;/code&gt; code would work for any JavaScript file).&lt;/p&gt;
&lt;p&gt;We went with this method for improved runtime performance and to reduce the number of third-party dependencies on the web site (with a nod to &lt;a href=&quot;https://jaenis.ch/&quot;&gt;André Jaenisch&lt;/a&gt;). You can do the same with the following bit of &lt;a href=&quot;https://www.11ty.dev/docs/config/&quot;&gt;Eleventy configuration&lt;/a&gt; (e.g. in a &lt;code&gt;eleventy.config.js&lt;/code&gt; file):&lt;/p&gt;
&lt;pre class=&quot;language-js&quot; tabindex=&quot;0&quot;&gt;&lt;code class=&quot;language-js&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;// eleventy.config.js&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// don’t forget to `npm install esbuild -D`&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; esbuild &lt;span class=&quot;token keyword&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;esbuild&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; fileURLToPath &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;node:url&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;async&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;esbuildToFile&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token parameter&quot;&gt;entryPoints&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; outfile&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; options &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; esbuild&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;build&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;Object&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;assign&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		entryPoints&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
		&lt;span class=&quot;token literal-property property&quot;&gt;platform&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;browser&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
		&lt;span class=&quot;token literal-property property&quot;&gt;format&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;esm&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
		&lt;span class=&quot;token literal-property property&quot;&gt;bundle&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
		&lt;span class=&quot;token literal-property property&quot;&gt;minify&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
		&lt;span class=&quot;token literal-property property&quot;&gt;banner&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
			&lt;span class=&quot;token literal-property property&quot;&gt;js&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token template-string&quot;&gt;&lt;span class=&quot;token template-punctuation string&quot;&gt;`&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;/* via &lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token interpolation-punctuation punctuation&quot;&gt;${&lt;/span&gt;entryPoints&lt;span class=&quot;token interpolation-punctuation punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt; */&lt;/span&gt;&lt;span class=&quot;token template-punctuation string&quot;&gt;`&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
		&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
		outfile&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; options&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;async&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;bundleModuleToFile&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token parameter&quot;&gt;modulePath&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; outfile&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;let&lt;/span&gt; sourcefile &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;fileURLToPath&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;meta&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;resolve&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;modulePath&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;esbuildToFile&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt; sourcefile &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; outfile&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;export&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;default&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;async&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token parameter&quot;&gt;eleventyConfig&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;let&lt;/span&gt; outfile &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; path&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;join&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;eleventyConfig&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;directories&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;output&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;js/copy-button.js&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

	&lt;span class=&quot;token comment&quot;&gt;// This will run once per build/serve/watch&lt;/span&gt;
	&lt;span class=&quot;token comment&quot;&gt;// (not with subsequent builds, save for config file changes)&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;await&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;bundleModuleToFile&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;@awesome.me/webawesome/dist/components/copy-button/copy-button.js&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; outfile&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;markdown-code-block-wrappers&quot;&gt;Markdown Code Block Wrappers&lt;/h2&gt;
&lt;p&gt;This task also served as the impetus for fixes related to &lt;a href=&quot;https://www.zachleat.com/web/markdown-code-wrapper/&quot;&gt;wrapper elements around code blocks in Markdown&lt;/a&gt;, documented in a previous blog post on this very web site.&lt;/p&gt;
</description>
            <pubDate>Sun, 02 Nov 2025 12:56:38 GMT</pubDate>
            <source>www.zachleat.com</source>
            <category></category>
          </item>
<item>
            <title>Testing the untestable</title>
            <link>https://blog.frankel.ch/testing-untestable/</link>
            <guid>https://blog.frankel.ch/testing-untestable/</guid>
            <description>I’m currently working on a software designed more than a decade ago. It offers a plugin architecture: you can develop a plugin whose lifecycle is handled by the software. The tough part, though, is how you access the platform capabilities: via static methods on singletons.    @Override public boolean start() {     var aService = AService.getInstance();     var anotherService = AnotherService.getInstance();     // Do something with the services     var result = ...;     return result; }    T</description>
            <pubDate>Thu, 30 Oct 2025 20:57:58 GMT</pubDate>
            <source>blog.frankel.ch</source>
            <category></category>
          </item>
<item>
            <title>Look Out For Bugs</title>
            <link>https://matklad.github.io/2025/09/04/look-for-bugs.html</link>
            <guid>https://matklad.github.io/2025/09/04/look-for-bugs.html</guid>
            <description>One of my biggest mid-career shifts in how I write code was internalizing the idea from this post:
Don&apos;t Write Bugs</description>
            <pubDate>Sun, 12 Oct 2025 12:34:28 GMT</pubDate>
            <source>matklad.github.io</source>
            <category></category>
          </item>
<item>
            <title>Some thoughts on LLMs and Software Development</title>
            <link>https://martinfowler.com/articles/202508-ai-thoughts.html</link>
            <guid>https://martinfowler.com/articles/202508-ai-thoughts.html</guid>
            <description>a short post</description>
            <pubDate>Mon, 22 Sep 2025 20:35:34 GMT</pubDate>
            <source>martinfowler.com</source>
            <category></category>
          </item>
<item>
            <title>Architecting with Constraints: A Pragmatic Guide</title>
            <link>https://www.lorenstew.art/blog/always-architect-with-contraints/</link>
            <guid>https://www.lorenstew.art/blog/always-architect-with-contraints/</guid>
            <description>Don&apos;t just reach for your favorite framework. Let&apos;s explore how a constraint-based mindset can help you choose the right tool for the job and avoid over-engineering.</description>
            <pubDate>Sat, 23 Aug 2025 14:23:03 GMT</pubDate>
            <source>www.lorenstew.art</source>
            <category></category>
          </item>
<item>
            <title><script type="text/llms.txt"></title>
            <link>https://vercel.com/blog/a-proposal-for-inline-llm-instructions-in-html</link>
            <guid>https://vercel.com/blog/a-proposal-for-inline-llm-instructions-in-html</guid>
            <description>&lt;div type=&quot;xhtml&quot;&gt;&lt;div xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;&lt;p&gt;How do you tell an AI agent what it needs to do when it hits a protected page? Most systems rely on external documentation or pre-configured knowledge, but there&apos;s a simpler approach.&lt;/p&gt;&lt;p&gt;What if the instructions were right there in the HTML response?&lt;/p&gt;&lt;p&gt; is an emerging standard for making content such as docs available for direct consumption by AIs. We’re proposing a convention to include such content directly in HTML responses as .&lt;a href=&quot;https://llmstxt.org/&quot;&gt;llms.txt&lt;/a&gt;&lt;code&gt;&amp;lt;script type=&quot;text/llms.txt&quot;&amp;gt;&lt;/code&gt;&lt;/p&gt;&lt;p class=&quot;more&quot;&gt;&lt;a href=&quot;https://vercel.com/blog/a-proposal-for-inline-llm-instructions-in-html&quot;&gt;Read more&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;</description>
            <pubDate>Wed, 20 Aug 2025 21:02:47 GMT</pubDate>
            <source>vercel.com</source>
            <category></category>
          </item>
<item>
            <title>MCP for Research: How to Connect AI to Research Tools</title>
            <link>https://huggingface.co/blog/mcp-for-research</link>
            <guid>https://huggingface.co/blog/mcp-for-research</guid>
            <description></description>
            <pubDate>Wed, 20 Aug 2025 21:02:00 GMT</pubDate>
            <source>huggingface.co</source>
            <category></category>
          </item>
<item>
            <title>How to Design your Tech Stack for AI 📏</title>
            <link>https://refactoring.fm/p/how-to-design-your-tech-stack-for</link>
            <guid>https://refactoring.fm/p/how-to-design-your-tech-stack-for</guid>
            <description>The dominant conversation in software engineering today is obviously about AI.</description>
            <pubDate>Tue, 05 Aug 2025 19:27:27 GMT</pubDate>
            <source>refactoring.fm</source>
            <category></category>
          </item>
<item>
            <title>I still care about the code</title>
            <link>https://martinfowler.com/articles/exploring-gen-ai/i-still-care-about-the-code.html</link>
            <guid>https://martinfowler.com/articles/exploring-gen-ai/i-still-care-about-the-code.html</guid>
            <description>
&lt;div class = &apos;img-link&apos;&gt;&lt;a href = &apos;https://martinfowler.com/articles/exploring-gen-ai/i-still-care-about-the-code.html&apos;&gt;&lt;img src = &apos;https://martinfowler.com/articles/exploring-gen-ai/donkey-card.png&apos; width = &apos;&apos;&gt;&lt;/img&gt;&lt;/a&gt;&lt;/div&gt;

&lt;p&gt;Even with LLMs, &lt;b class = &apos;author&apos;&gt;Birgitta B&amp;#xF6;ckeler&lt;/b&gt; still cares about
      the code: “LLMs are NOT compilers, interpreters, transpilers or assemblers
      of natural language, they are &lt;b&gt;inferrers&lt;/b&gt;. &lt;/p&gt;

&lt;p&gt;&lt;a class = &apos;more&apos; href = &apos;https://martinfowler.com/articles/exploring-gen-ai/i-still-care-about-the-code.html&apos;&gt;more…&lt;/a&gt;&lt;/p&gt;</description>
            <pubDate>Sat, 26 Jul 2025 20:49:45 GMT</pubDate>
            <source>martinfowler.com</source>
            <category></category>
          </item>
<item>
            <title>Back to The Future: Evaluating AI Agents on Predicting Future Events</title>
            <link>https://huggingface.co/blog/futurebench</link>
            <guid>https://huggingface.co/blog/futurebench</guid>
            <description></description>
            <pubDate>Thu, 17 Jul 2025 18:44:54 GMT</pubDate>
            <source>huggingface.co</source>
            <category></category>
          </item>
<item>
            <title>Context Engineering: The Bottleneck to Better Continuous AI</title>
            <link>https://blog.continue.dev/context-engineering-the-bottleneck-to-better-continuous-ai/</link>
            <guid>https://blog.continue.dev/context-engineering-the-bottleneck-to-better-continuous-ai/</guid>
            <description>Back in 2019, I gave a presentation about building contextual AI assistants at the O&apos;Reilly AI Conference. While AI has progressed dramatically since then, one challenge has remained constant: the art and science of providing the right context at the right time.

Today, as platform teams at large organizations explore</description>
            <pubDate>Thu, 10 Jul 2025 19:50:13 GMT</pubDate>
            <source>blog.continue.dev</source>
            <category></category>
          </item>
<item>
            <title>How to Do Great Work</title>
            <link>https://www.paulgraham.com/greatwork.html</link>
            <guid>https://www.paulgraham.com/greatwork.html</guid>
            <description></description>
            <pubDate>Mon, 07 Jul 2025 20:16:11 GMT</pubDate>
            <source>www.paulgraham.com</source>
            <category></category>
          </item>
<item>
            <title>Top 5 MCP Server Best Practices | Docker</title>
            <link>https://www.docker.com/blog/mcp-server-best-practices/</link>
            <guid>https://www.docker.com/blog/mcp-server-best-practices/</guid>
            <description>Design secure, scalable MCP servers using these 5 best practices. Learn how to test, package, and optimize for agentic use cases.</description>
            <pubDate>Sat, 05 Jul 2025 17:07:54 GMT</pubDate>
            <source>www.docker.com</source>
            <category></category>
          </item>
<item>
            <title>Redis for Maps and Locations: Understanding Geospatial Indexing</title>
            <link>https://dev.to/rijultp/redis-for-maps-and-locations-understanding-geospatial-indexing-12ig</link>
            <guid>https://dev.to/rijultp/redis-for-maps-and-locations-understanding-geospatial-indexing-12ig</guid>
            <description>&lt;p&gt;If you&apos;ve ever used an app to find the nearest ATM, track a delivery, or hail a ride, you&apos;re benefiting from something called &lt;strong&gt;geospatial indexing&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;But how do systems like Redis handle that kind of location-based data so efficiently? That’s where &lt;strong&gt;Geospatial Indexes&lt;/strong&gt; come into play.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Are Geospatial Indexes?
&lt;/h2&gt;

&lt;p&gt;Geospatial indexes allow databases to store and query geographic data like &lt;strong&gt;longitude and latitude&lt;/strong&gt;. In Redis, this capability is built right into the database—no external plugin or GIS system required.&lt;/p&gt;

&lt;p&gt;With geospatial indexes, you can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Store the location of items on a map&lt;/li&gt;
&lt;li&gt;Search for places nearby a given point&lt;/li&gt;
&lt;li&gt;Calculate distances between two coordinates&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This makes it useful for &lt;strong&gt;real-time applications&lt;/strong&gt; like food delivery apps, fleet tracking, store locators, and more.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Redis Handles Geospatial Data
&lt;/h2&gt;

&lt;p&gt;Redis uses a data structure called a &lt;strong&gt;Sorted Set (ZSET)&lt;/strong&gt; to manage geospatial data.&lt;/p&gt;

&lt;p&gt;Each item in the set is a location. Redis internally converts the longitude and latitude into a unique number using something called &lt;strong&gt;geohashing&lt;/strong&gt;—a technique that encodes geographic coordinates into a single value.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. &lt;code&gt;GEOADD&lt;/code&gt;: Add Locations
&lt;/h3&gt;

&lt;p&gt;To store a location in Redis, you use &lt;code&gt;GEOADD&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class=&quot;highlight js-code-highlight&quot;&gt;
&lt;pre class=&quot;highlight shell&quot;&gt;&lt;code&gt;GEOADD stores:locations 77.5946 12.9716 &lt;span class=&quot;s2&quot;&gt;&quot;Bangalore&quot;&lt;/span&gt;
GEOADD stores:locations 72.8777 19.0760 &lt;span class=&quot;s2&quot;&gt;&quot;Mumbai&quot;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This adds two cities with their longitude and latitude.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. &lt;code&gt;GEOSEARCH&lt;/code&gt;: Find Nearby Places
&lt;/h3&gt;

&lt;p&gt;To search for nearby locations, use &lt;code&gt;GEOSEARCH&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class=&quot;highlight js-code-highlight&quot;&gt;
&lt;pre class=&quot;highlight shell&quot;&gt;&lt;code&gt;GEOSEARCH stores:locations
  FROMLONLAT 77.5946 12.9716
  BYRADIUS 500 km
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This finds all stored locations within 500 km of Bangalore’s coordinates.&lt;/p&gt;

&lt;p&gt;You can also sort results by distance or limit the number of results—great for building fast, responsive applications.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. &lt;code&gt;GEODIST&lt;/code&gt;: Calculate Distance
&lt;/h3&gt;

&lt;p&gt;If you just want to know how far two locations are from each other:&lt;br&gt;
&lt;/p&gt;

&lt;div class=&quot;highlight js-code-highlight&quot;&gt;
&lt;pre class=&quot;highlight shell&quot;&gt;&lt;code&gt;GEODIST stores:locations Bangalore Mumbai km
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Redis returns the distance in the unit you specify—meters, kilometers, miles, or feet.&lt;/p&gt;

&lt;h2&gt;
  
  
  When Should You Use Redis Geospatial Indexes?
&lt;/h2&gt;

&lt;p&gt;Redis geospatial support is &lt;strong&gt;lightweight and fast&lt;/strong&gt;—ideal when you need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fast lookups for nearby locations&lt;/li&gt;
&lt;li&gt;Simple location storage and retrieval&lt;/li&gt;
&lt;li&gt;Real-time geospatial querying at scale&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It works especially well in:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Food and package delivery systems&lt;/li&gt;
&lt;li&gt;Store or dealer locators&lt;/li&gt;
&lt;li&gt;Ride-hailing and cab tracking apps&lt;/li&gt;
&lt;li&gt;Games that use map-based movement&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  A Few Things to Keep in Mind
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Redis geospatial commands don’t support complex geofencing or polygons.&lt;/li&gt;
&lt;li&gt;Precision depends on the geohashing method and the size of your search area.&lt;/li&gt;
&lt;li&gt;It’s not meant to replace full-featured GIS systems like PostGIS, but it’s great for many real-time use cases.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Wrapping up
&lt;/h2&gt;

&lt;p&gt;Geospatial indexes in Redis are a powerful tool that can turn your application into a location-aware service with just a few commands. Whether you&apos;re building a location-based search or just need to calculate distances, Redis makes it simple and blazing fast.&lt;/p&gt;

&lt;p&gt;If you&apos;re a software developer who enjoys exploring different technologies and techniques like this one, check out LiveAPI. It’s a super-convenient tool that lets you generate interactive API docs instantly.&lt;/p&gt;

&lt;p&gt;LiveAPI helps you discover, understand and use APIs in large tech infrastructures with ease!&lt;/p&gt;

&lt;p&gt;So, if you’re working with a codebase that lacks documentation, just use LiveAPI to generate it and save time!&lt;/p&gt;

&lt;p&gt;You can instantly &lt;a href=&quot;https://hexmos.com/landing/liveapi&quot; rel=&quot;noopener noreferrer&quot;&gt;try it out here!&lt;/a&gt; 🚀&lt;/p&gt;

</description>
            <pubDate>Sat, 28 Jun 2025 19:18:55 GMT</pubDate>
            <source>dev.to</source>
            <category>redis, geospatial, beginners, tutorial</category>
          </item>
<item>
            <title>What problems to solve</title>
            <link>http://genius.cat-v.org/richard-feynman/writtings/letters/problems</link>
            <guid>http://genius.cat-v.org/richard-feynman/writtings/letters/problems</guid>
            <description>&lt;p&gt;No problem is too small or too trivial if we can really do something about it.&lt;/p&gt;
&lt;br/&gt;&lt;br/&gt;</description>
            <pubDate>Fri, 27 Jun 2025 21:43:43 GMT</pubDate>
            <source>genius.cat-v.org</source>
            <category></category>
          </item>
<item>
            <title>I’ve overdesigned before — here’s what I’ve learned about doing less</title>
            <link>https://blog.logrocket.com/ux-design/overdesign-in-ux/</link>
            <guid>https://blog.logrocket.com/ux-design/overdesign-in-ux/</guid>
            <description>&lt;p&gt;I used to think ‘clean’ design meant hiding things. Turns out, less isn&apos;t always better. This blog walks through lessons from my own overdesign moments.&lt;/p&gt;
&lt;p&gt;The post &lt;a href=&quot;https://blog.logrocket.com/ux-design/overdesign-in-ux/&quot;&gt;I’ve overdesigned before — here’s what I’ve learned about doing less&lt;/a&gt; appeared first on &lt;a href=&quot;https://blog.logrocket.com&quot;&gt;LogRocket Blog&lt;/a&gt;.&lt;/p&gt;
</description>
            <pubDate>Fri, 27 Jun 2025 09:33:32 GMT</pubDate>
            <source>blog.logrocket.com</source>
            <category>Uncategorized, UX Design, ux design</category>
          </item>
<item>
            <title>Empty State Design: A Practical Guide</title>
            <link>https://uxplanet.org/empty-state-design-a-practical-guide-94ad0adbda45</link>
            <guid>https://uxplanet.org/empty-state-design-a-practical-guide-94ad0adbda45</guid>
            <description></description>
            <pubDate>Wed, 18 Jun 2025 09:07:57 GMT</pubDate>
            <source>uxplanet.org</source>
            <category>microcopy, interaction-design, empty-state, user-experience, user-interface-design</category>
          </item>
<item>
            <title>Vercel AI SDK Tool Calling Cheat Sheet</title>
            <link>https://tigerabrodi.blog/vercel-ai-sdk-tool-calling-cheat-sheet</link>
            <guid>https://tigerabrodi.blog/vercel-ai-sdk-tool-calling-cheat-sheet</guid>
            <description>1. Basic Tool Definition
import { z } from &quot;zod&quot;;
import { tool, generateText } from &quot;ai&quot;;

// Define a tool
const weatherTool = tool({
  description: &quot;Get weather for a location&quot;,
  parameters: z.object({
    location: z.string().describe(&quot;City name...</description>
            <pubDate>Sat, 14 Jun 2025 15:06:22 GMT</pubDate>
            <source>tigerabrodi.blog</source>
            <category></category>
          </item>
<item>
            <title>Design Smarter Prompts and Boost Your LLM Output: Real Tricks from an AI Engineer’s Toolbox</title>
            <link>https://towardsdatascience.com/boost-your-llm-outputdesign-smarter-prompts-real-tricks-from-an-ai-engineers-toolbox/</link>
            <guid>https://towardsdatascience.com/boost-your-llm-outputdesign-smarter-prompts-real-tricks-from-an-ai-engineers-toolbox/</guid>
            <description>&lt;p&gt;Not just what you ask, but how you ask it. Practical techniques for prompt engineering that deliver&lt;/p&gt;
&lt;p&gt;The post &lt;a href=&quot;https://towardsdatascience.com/boost-your-llm-outputdesign-smarter-prompts-real-tricks-from-an-ai-engineers-toolbox/&quot;&gt;Design Smarter Prompts and Boost Your LLM Output: Real Tricks from an AI Engineer’s Toolbox&lt;/a&gt; appeared first on &lt;a href=&quot;https://towardsdatascience.com&quot;&gt;Towards Data Science&lt;/a&gt;.&lt;/p&gt;
</description>
            <pubDate>Fri, 13 Jun 2025 20:37:09 GMT</pubDate>
            <source>towardsdatascience.com</source>
            <category>Large Language Models, Editors Pick, Llm, Machine Learning, Prompt Design, Prompt Engineering</category>
          </item>
      </channel>
    </rss>