Shellsharks Blogroll - BlogFlock 2026-06-16T12:41:36.729Z BlogFlock Adepts of 0xCC, destructured, fLaMEd, Trail of Bits Blog, Aaron Parecki, James' Coffee Blog, Westenberg, gynvael.coldwind//vx.log (pl), joelchrono, Evan Boehs, Kev Quirk, cool-as-heck, Posts feed, Sophie Koonin, cmdr-nova@internet:~$, <span>Songs</span> on the Security of Networks, Johnny.Decimal, Werd I/O, Robb Knight, Molly White, Hey, it's Jason!, Terence Eden’s Blog Create A Static Site Using 11ty &amp; Deploy to Neocities (2026 Refresh) - The Weblog of fLaMEd https://flamedfury.com/guides/11ty-homepage-neocities-2026/ 2026-06-16T12:00:00.000Z <p>What’s going on, Internet? Way back in 2022 I wrote a <a href="https://flamedfury.com/guides/11ty-homepage-neocities/">guide on building a static site with 11ty and deploying it to Neocities</a>. It’s been one of my most-read posts, but it’s also aged: Eleventy has moved to v3 with a brand new module system, the dev server changed, and my whole workflow has shifted away from GitHub toward <a href="https://forgejo.org/" rel="noopener">Forgejo</a> and <a href="https://codeberg.org/" rel="noopener">Codeberg</a>. So here’s the refresh.</p> <p>I haven’t hosted my own site on Neocities for years now, but it’s still home to a huge community of personal sites and homepages, especially folks in the <a href="https://32bit.cafe/" rel="noopener">32-Bit Cafe</a>, so this guide is still very much for them.</p> <p>This guide aims to help you create a homepage using the static site generator (SSG) <a href="https://11ty.dev/" rel="noopener">11ty</a>, keep the code in version control, and deploy it to <a href="https://neocities.org/" rel="noopener">Neocities</a>, first by hand, then automatically.</p> <p>The homepage that we are creating will take advantage of the <a href="https://mozilla.github.io/nunjucks/" rel="noopener">Nunjucks</a> templating language, allowing us to create a shared header, navigation and footer across all the pages on our homepage.</p> <p>We will be creating an about, links, and contact pages before diving in and creating the ability to add a blog and a list of all blog posts on the blog page!</p> <p>We will structure and style the page with a standard HTML5 boilerplate and some basic CSS that should allow you to add in your unique flavour that we all know you love to do.</p> <aside class="aside flow note"> <div class="aside__content"> <p>This guide assumes the following:</p> <ul> <li>You have a basic understanding of HTML and CSS</li> <li>You have a basic understanding of the command line and terminal</li> <li>You have Node.js installed (version 18 or newer)</li> <li>You're using <a href="https://vscodium.com/">VSCodium</a> as your editor</li> <li>You have a Neocities account</li> <li>You have somewhere to keep your code: a <a href="https://forgejo.org/">Forgejo</a> instance or a <a href="https://codeberg.org/">Codeberg</a> account</li> </ul> </div> </aside> <aside class="aside flow note"> <div class="aside__content"> This guide uses Eleventy v3, which is written in modern JavaScript modules (ESM). If you've followed an older 11ty tutorial that used <code>.eleventy.js</code> with <code>module.exports</code>, the config in this guide will look a little different. That's expected. </div> </aside> <h2 id="create-a-new-project"><a class="heading-anchor" href="https://flamedfury.com/guides/11ty-homepage-neocities-2026/#create-a-new-project">Create a new project</a></h2> <p>First off, from a terminal, confirm that you have Node and NPM installed:</p> <aside class="aside flow note"> <div class="aside__content"> Any terminal will do here: Terminal.app on macOS, the default terminal that ships with whatever flavour of Linux you run, or the latest Windows Terminal on Windows. I use <a href="https://ghostty.org/">Ghostty</a>. </div> </aside> <pre class="language-bash"><code class="language-bash"><span class="token function">node</span> <span class="token parameter variable">-v</span> <span class="token operator">&amp;&amp;</span> <span class="token function">npm</span> <span class="token parameter variable">-v</span> v22.11.0 <span class="token number">10.9</span>.0</code></pre> <aside class="aside flow note"> <div class="aside__content"> Eleventy v3 needs Node.js 18 or newer. If your version is older, grab the current LTS release from <a href="https://nodejs.org/">nodejs.org</a> first. </div> </aside> <p>Create a new directory and cd into it:</p> <pre class="language-bash"><code class="language-bash"><span class="token function">mkdir</span> 11ty-neocities <span class="token operator">&amp;&amp;</span> <span class="token builtin class-name">cd</span> 11ty-neocities</code></pre> <p>Initiate a new project:</p> <pre class="language-bash"><code class="language-bash"><span class="token function">npm</span> init <span class="token parameter variable">-y</span></code></pre> <p>Install 11ty:</p> <pre class="language-bash"><code class="language-bash"><span class="token function">npm</span> <span class="token function">install</span> @11ty/eleventy</code></pre> <p>Once the 11ty installation is complete, open the project in your favourite code editor:</p> <pre class="language-bash"><code class="language-bash">codium <span class="token builtin class-name">.</span></code></pre> <aside class="aside flow note"> <div class="aside__content"> Typing <code>codium .</code> into a project directory will open up the project directory in VSCodium. </div> </aside> <p>You should now be in VSCodium with the following project structure:</p> <pre class="language-text"><code class="language-text">11ty-neocities/ ├── node_modules/ ├── package.json └── package-lock.json</code></pre> <p>Open <code>package.json</code> and update the scripts section to the following:</p> <pre class="language-js"><code class="language-js"> <span class="token string-property property">"scripts"</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token string-property property">"start"</span><span class="token operator">:</span> <span class="token string">"npx @11ty/eleventy --serve"</span><span class="token punctuation">,</span> <span class="token string-property property">"build"</span><span class="token operator">:</span> <span class="token string">"npx @11ty/eleventy"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span></code></pre> <p>We also need to tell Node that this is an ESM project. Add <code>&quot;type&quot;: &quot;module&quot;</code> to <code>package.json</code>. The file should look like this:</p> <pre class="language-js"><code class="language-js"><span class="token punctuation">{</span> <span class="token string-property property">"name"</span><span class="token operator">:</span> <span class="token string">"11ty-neocities"</span><span class="token punctuation">,</span> <span class="token string-property property">"version"</span><span class="token operator">:</span> <span class="token string">"1.0.0"</span><span class="token punctuation">,</span> <span class="token string-property property">"description"</span><span class="token operator">:</span> <span class="token string">""</span><span class="token punctuation">,</span> <span class="token string-property property">"type"</span><span class="token operator">:</span> <span class="token string">"module"</span><span class="token punctuation">,</span> <span class="token string-property property">"main"</span><span class="token operator">:</span> <span class="token string">"index.js"</span><span class="token punctuation">,</span> <span class="token string-property property">"scripts"</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token string-property property">"start"</span><span class="token operator">:</span> <span class="token string">"npx @11ty/eleventy --serve"</span><span class="token punctuation">,</span> <span class="token string-property property">"build"</span><span class="token operator">:</span> <span class="token string">"npx @11ty/eleventy"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token string-property property">"keywords"</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">,</span> <span class="token string-property property">"author"</span><span class="token operator">:</span> <span class="token string">""</span><span class="token punctuation">,</span> <span class="token string-property property">"license"</span><span class="token operator">:</span> <span class="token string">"ISC"</span><span class="token punctuation">,</span> <span class="token string-property property">"dependencies"</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token string-property property">"@11ty/eleventy"</span><span class="token operator">:</span> <span class="token string">"^3.1.6"</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span></code></pre> <aside class="aside flow note"> <div class="aside__content"> <p>The <code>"type": "module"</code> line lets us use modern <code>import</code>/<code>export</code> syntax in our config and JavaScript files.</p> <p>The <code>start</code> script lets us run <code>npm start</code> to serve our homepage with hot-reload, provided by Eleventy's built-in dev server. Every time you save a change in VSCodium, the browser reloads with your most recent changes, amazing!</p> </div> </aside> <h2 id="create-an-11ty-config-file"><a class="heading-anchor" href="https://flamedfury.com/guides/11ty-homepage-neocities-2026/#create-an-11ty-config-file">Create an 11ty config file</a></h2> <p>From the terminal (or VSCodium), create a new file <code>eleventy.config.js</code> at the project root:</p> <pre class="language-bash"><code class="language-bash"><span class="token function">touch</span> eleventy.config.js</code></pre> <p>Open the file in VSCodium and add the following and save:</p> <pre class="language-js"><code class="language-js"><span class="token keyword">export</span> <span class="token keyword">default</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">eleventyConfig</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">return</span> <span class="token punctuation">{</span> <span class="token literal-property property">dir</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token literal-property property">input</span><span class="token operator">:</span> <span class="token string">"src"</span><span class="token punctuation">,</span> <span class="token literal-property property">output</span><span class="token operator">:</span> <span class="token string">"public"</span><span class="token punctuation">,</span> <span class="token literal-property property">includes</span><span class="token operator">:</span> <span class="token string">"_includes"</span><span class="token punctuation">,</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">}</span><span class="token punctuation">;</span> <span class="token punctuation">}</span></code></pre> <aside class="aside flow note"> <div class="aside__content"> <p>This configuration file tells 11ty what to do.</p> <p>Setting the <code>input</code> directory to <code>src</code> tells 11ty where to look for changes, this is our working directory.</p> <p>When changes are detected, 11ty builds the site and outputs it to the <code>output</code> directory <code>public</code> which is where the static html/css/img files are served from, amazing!</p> </div> </aside> <h3 id="gitignore"><a class="heading-anchor" href="https://flamedfury.com/guides/11ty-homepage-neocities-2026/#gitignore">.gitignore</a></h3> <p>As we’re going to be keeping our homepage code in version control, create a <code>.gitignore</code> file in the project root:</p> <pre class="language-bash"><code class="language-bash"><span class="token function">touch</span> .gitignore</code></pre> <p>Open the file in VSCodium and add the following and save:</p> <pre class="language-md"><code class="language-md"><span class="token title important"><span class="token punctuation">#</span> dependencies installed by npm</span> node_modules <span class="token title important"><span class="token punctuation">#</span> build artefacts</span> public</code></pre> <aside class="aside flow note"> <div class="aside__content"> <p>The .gitignore file is a text file that tells Git which files or folders to ignore in a project.</p> <p>In this case, our <code>.gitignore</code> file tells git to ignore the <code>node_modules</code> directory and the <code>public</code> directory where our static files are built locally.</p> </div> </aside> <h2 id="start-building-the-homepage"><a class="heading-anchor" href="https://flamedfury.com/guides/11ty-homepage-neocities-2026/#start-building-the-homepage">Start building the homepage</a></h2> <p>Now comes the fun part, building our homepage. 11ty supports a number of templating languages, but the two you’ll reach for most are Markdown and plain HTML. Markdown is the popular choice for content like blog posts: you just write, without <code>&lt;html&gt;</code> tags getting in the way. HTML is handy when you need precise structure. The best part is you can drop HTML straight into a Markdown file and 11ty renders it correctly, so it’s never one or the other.</p> <p>For the pages that make up the site’s structure (home, about, links, contact) we’ll use HTML, because it maps neatly onto the layouts and partials we’re about to build. When we get to the blog, we’ll write the posts in Markdown, where it shines. Use whichever fits the job.</p> <aside class="aside flow tip"> <div class="aside__content"> Want to push <a href="https://www.markdownguide.org/">Markdown</a> further? Once you've finished the guide, try rewriting one of the HTML pages as a <code>.md</code> file. The <a href="https://www.11ty.dev/docs/languages/markdown/">11ty Markdown docs</a> are a good place to start. </div> </aside> <p>Create a <code>src</code> directory at the project root and cd into it:</p> <pre class="language-bash"><code class="language-bash"><span class="token function">mkdir</span> src <span class="token operator">&amp;&amp;</span> <span class="token builtin class-name">cd</span> src</code></pre> <p>Create an <code>index.html</code> file in the terminal or VSCodium:</p> <pre class="language-bash"><code class="language-bash"><span class="token function">touch</span> index.html</code></pre> <p>Open the file and add some content:</p> <pre class="language-html"><code class="language-html"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>html</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>head</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>title</span><span class="token punctuation">></span></span>My New 11ty Homepage on Neocities!<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>title</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>head</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>body</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>h1</span><span class="token punctuation">></span></span>Hello World<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>h1</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>p</span><span class="token punctuation">></span></span> Check out your cool new static site built with <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>a</span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>https://11ty.dev<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>11ty<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>a</span><span class="token punctuation">></span></span> on <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>a</span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>https://neocities.org/<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Neocities<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>a</span><span class="token punctuation">></span></span>. <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>p</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>body</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>html</span><span class="token punctuation">></span></span></code></pre> <p>Now from the terminal start 11ty:</p> <pre class="language-bash"><code class="language-bash"><span class="token function">npm</span> start</code></pre> <p>If everything has been configured right so far you should see the following:</p> <pre class="language-bash"><code class="language-bash"><span class="token operator">></span> 11ty-neocities@1.0.0 start <span class="token operator">></span> npx @11ty/eleventy <span class="token parameter variable">--serve</span> <span class="token punctuation">[</span>11ty<span class="token punctuation">]</span> Writing public/index.html from ./src/index.html <span class="token punctuation">(</span>liquid<span class="token punctuation">)</span> <span class="token punctuation">[</span>11ty<span class="token punctuation">]</span> Wrote <span class="token number">1</span> <span class="token function">file</span> <span class="token keyword">in</span> <span class="token number">0.03</span> seconds <span class="token punctuation">(</span>v3.1.6<span class="token punctuation">)</span> <span class="token punctuation">[</span>11ty<span class="token punctuation">]</span> Watching… <span class="token punctuation">[</span>11ty<span class="token punctuation">]</span> Server at http://localhost:8080/</code></pre> <p>Now you can open up <code>http://localhost:8080</code> and check out your new 11ty homepage! It should look like this:</p> <figure slot="image"><picture> <source type="image/webp" srcset="https://flamedfury.com/assets/images/11ty-neocities-2026-01-hello-world-480w.webp 480w, https://flamedfury.com/assets/images/11ty-neocities-2026-01-hello-world-800w.webp 800w, https://flamedfury.com/assets/images/11ty-neocities-2026-01-hello-world-1200w.webp 1200w" sizes="(max-width: 480px) 100vw, (max-width: 800px) 80vw, 1200px" /> <source type="image/jpeg" srcset="https://flamedfury.com/assets/images/11ty-neocities-2026-01-hello-world-480w.jpeg 480w, https://flamedfury.com/assets/images/11ty-neocities-2026-01-hello-world-800w.jpeg 800w, https://flamedfury.com/assets/images/11ty-neocities-2026-01-hello-world-1200w.jpeg 1200w" sizes="(max-width: 480px) 100vw, (max-width: 800px) 80vw, 1200px" /><img src="https://flamedfury.com/assets/images/11ty-neocities-2026-01-hello-world-1200w.jpeg" width="1200" height="829" alt="A plain Hello World page with a heading and a sentence, in the browser's default styling" loading="lazy" decoding="async" eleventy:ignore="" /></picture><figcaption>A Basic Hello World HTML Page</figcaption></figure> <p>Amazing! But what we want to avoid is having to write out the <code>&lt;html&gt;</code> and <code>&lt;head&gt;</code> and <code>&lt;body&gt;</code> tags on each and every page, and be able to include a site header, navigation and footer so we don’t have to copy and paste the changes across every page each time we update.</p> <p>Let’s checkout templating a layout!</p> <h3 id="create-a-base-layout"><a class="heading-anchor" href="https://flamedfury.com/guides/11ty-homepage-neocities-2026/#create-a-base-layout">Create a base layout</a></h3> <p>Create a new directory <code>_includes/</code> in the <code>src/</code> directory and cd into it:</p> <pre class="language-bash"><code class="language-bash"><span class="token function">mkdir</span> _includes <span class="token operator">&amp;&amp;</span> <span class="token builtin class-name">cd</span> _includes</code></pre> <aside class="aside flow note"> <div class="aside__content"> In a non-demo situation I would create a <code>layouts/</code> directory under <code>_includes/</code> for better organisation. For the sake of simplicity we'll just keep everything in <code>_includes/</code> for now. </div> </aside> <p>Create a file <code>base.njk</code> in the terminal or VSCodium:</p> <pre class="language-bash"><code class="language-bash"><span class="token function">touch</span> base.njk</code></pre> <p>Open the file and add the following:</p> <pre class="language-html"><code class="language-html"><span class="token doctype"><span class="token punctuation">&lt;!</span><span class="token doctype-tag">DOCTYPE</span> <span class="token name">html</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>html</span> <span class="token attr-name">lang</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>en<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>head</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>meta</span> <span class="token attr-name">charset</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>UTF-8<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>meta</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>viewport<span class="token punctuation">"</span></span> <span class="token attr-name">content</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>width=device-width, initial-scale=1.0<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>title</span><span class="token punctuation">></span></span>{{ title }}<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>title</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>head</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>body</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>header</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>h1</span><span class="token punctuation">></span></span>{{ title }}<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>h1</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>header</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>main</span><span class="token punctuation">></span></span>{{ content | safe }}<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>main</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>body</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>html</span><span class="token punctuation">></span></span></code></pre> <aside class="aside flow note"> <div class="aside__content"> <p>We've created <code>base.njk</code> as a Nunjucks template file, hence the <code>.njk</code> file extension. This means we can use Nunjucks' double curly braces for using frontmatter variables.</p> <p>In our layout template we're calling <code>{{ title }}</code> and <code>{{ content }}</code>.</p> </div> </aside> <p>Now, head back to the <code>index.html</code> file you created earlier, delete the contents and add some front matter and some content:</p> <pre class="language-html"><code class="language-html">--- title: Hello World! layout: base.njk --- <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>p</span><span class="token punctuation">></span></span> Check out your cool new static site built with <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>a</span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>https://11ty.dev<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>11ty<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>a</span><span class="token punctuation">></span></span> on <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>a</span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>https://neocities.org/<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Neocities<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>a</span><span class="token punctuation">></span></span>. <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>p</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>p</span><span class="token punctuation">></span></span>This homepage template is perfect for:<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>p</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>ul</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>li</span><span class="token punctuation">></span></span>Creating your own space on the web<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>li</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>li</span><span class="token punctuation">></span></span>Expressing yourself<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>li</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>li</span><span class="token punctuation">></span></span>Displaying all the gifs you've collected<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>li</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>ul</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>h2</span><span class="token punctuation">></span></span>Why do you want a homepage?<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>h2</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>p</span><span class="token punctuation">></span></span>The web was made for personal homepages, make this one yours<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>p</span><span class="token punctuation">></span></span></code></pre> <p>If you’ve kept 11ty running and the browser running it should look like this:</p> <figure slot="image"><picture> <source type="image/webp" srcset="https://flamedfury.com/assets/images/11ty-neocities-2026-02-template-480w.webp 480w, https://flamedfury.com/assets/images/11ty-neocities-2026-02-template-800w.webp 800w, https://flamedfury.com/assets/images/11ty-neocities-2026-02-template-1200w.webp 1200w" sizes="(max-width: 480px) 100vw, (max-width: 800px) 80vw, 1200px" /> <source type="image/jpeg" srcset="https://flamedfury.com/assets/images/11ty-neocities-2026-02-template-480w.jpeg 480w, https://flamedfury.com/assets/images/11ty-neocities-2026-02-template-800w.jpeg 800w, https://flamedfury.com/assets/images/11ty-neocities-2026-02-template-1200w.jpeg 1200w" sizes="(max-width: 480px) 100vw, (max-width: 800px) 80vw, 1200px" /><img src="https://flamedfury.com/assets/images/11ty-neocities-2026-02-template-1200w.jpeg" width="1200" height="829" alt="The homepage now rendered through the base layout, showing the title and the homepage content" loading="lazy" decoding="async" eleventy:ignore="" /></picture><figcaption>A Basic Hello World HTML Page Using a Template</figcaption></figure> <p>Amazing! Now lets create the additional pages for our homepage.</p> <p>Create the following pages in the <code>src/</code> directory with the terminal or VSCodium:</p> <pre class="language-bash"><code class="language-bash"><span class="token function">touch</span> about.html <span class="token operator">&amp;&amp;</span> <span class="token function">touch</span> links.html <span class="token operator">&amp;&amp;</span> <span class="token function">touch</span> contact.html</code></pre> <p>Open each of them up and add in some front matter and content:</p> <p>about.html:</p> <pre class="language-html"><code class="language-html">--- title: About Me layout: base.njk --- <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>p</span><span class="token punctuation">></span></span>Heya 👋 this is my homepage.<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>p</span><span class="token punctuation">></span></span></code></pre> <p>links.html:</p> <pre class="language-html"><code class="language-html">--- title: Links layout: base.njk --- <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>p</span><span class="token punctuation">></span></span>These are some of my favourite websites 🔗<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>p</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>ul</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>li</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>a</span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>https://flamedfury.com<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>fLaMEdFury.com<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>a</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>li</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>li</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>a</span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>https://11ty.dev<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>11ty<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>a</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>li</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>li</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>a</span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>https://neocities.org<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Neocities<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>a</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>li</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>li</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>a</span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>https://32bit.cafe/<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>The 32-Bit Cafe<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>a</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>li</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>ul</span><span class="token punctuation">></span></span></code></pre> <p>contact.html:</p> <pre class="language-html"><code class="language-html">--- title: Contact Me layout: base.njk --- <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>p</span><span class="token punctuation">></span></span>Heya 👋 this is my contact page<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>p</span><span class="token punctuation">></span></span></code></pre> <p>You should now be able to browse each of these pages if you kept 11ty running on the following urls:</p> <p><code>http://localhost:8080/about/</code><br /> <code>http://localhost:8080/links/</code><br /> <code>http://localhost:8080/contact/</code></p> <p>Great stuff, but that’s no use without a navigation! Let’s take a look at <code>partials</code> and create a shared <code>header</code>, <code>navigation</code>, and <code>footer</code> to bring our homepage together.</p> <h3 id="creating-our-partials"><a class="heading-anchor" href="https://flamedfury.com/guides/11ty-homepage-neocities-2026/#creating-our-partials">Creating our partials</a></h3> <aside class="aside flow note"> <div class="aside__content"> In a non-demo situation I would create a <code>partials/</code> directory under <code>_includes/</code> for better organisation. For the sake of simplicity we'll just keep everything in <code>_includes/</code> for now. </div> </aside> <p>In the terminal cd into <code>_includes/</code> and create three partial files:</p> <pre class="language-bash"><code class="language-bash"><span class="token builtin class-name">cd</span> _includes <span class="token operator">&amp;&amp;</span> <span class="token function">touch</span> header.njk <span class="token operator">&amp;&amp;</span> <span class="token function">touch</span> navigation.njk <span class="token operator">&amp;&amp;</span> <span class="token function">touch</span> footer.njk</code></pre> <p>Open each of them up and add some content:</p> <p>header.njk:</p> <pre class="language-html"><code class="language-html"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>h1</span><span class="token punctuation">></span></span>Welcome to my Homepage<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>h1</span><span class="token punctuation">></span></span></code></pre> <p>navigation.njk</p> <pre class="language-html"><code class="language-html"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>a</span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>/<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Home<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>a</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>a</span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>/about/<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>About<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>a</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>a</span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>/links/<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Links<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>a</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>a</span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>/blog/<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Blog<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>a</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>a</span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>/contact/<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Contact<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>a</span><span class="token punctuation">></span></span></code></pre> <aside class="aside flow note"> <div class="aside__content"> It's important to structure your links with the slashes <code>/</code> on either side of the href <code>/about/</code> to ensure the links are always from the root of the site. </div> </aside> <p>footer.njk:</p> <pre class="language-html"><code class="language-html"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>p</span><span class="token punctuation">></span></span>This is my footer | © 2026 Me.<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>p</span><span class="token punctuation">></span></span></code></pre> <p>Once our partials are created, open <code>base.njk</code> again and update it to include our new elements and partials:</p> <p>base.njk:</p> <pre class="language-html"><code class="language-html"><span class="token doctype"><span class="token punctuation">&lt;!</span><span class="token doctype-tag">DOCTYPE</span> <span class="token name">html</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>html</span> <span class="token attr-name">lang</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>en<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>head</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>meta</span> <span class="token attr-name">charset</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>UTF-8<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>meta</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>viewport<span class="token punctuation">"</span></span> <span class="token attr-name">content</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>width=device-width, initial-scale=1.0<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>title</span><span class="token punctuation">></span></span>{{ title }}<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>title</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>head</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>body</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>header</span><span class="token punctuation">></span></span>{% include 'header.njk' %}<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>header</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nav</span><span class="token punctuation">></span></span>{% include 'navigation.njk' %}<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nav</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>main</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>h1</span><span class="token punctuation">></span></span>{{ title }}<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>h1</span><span class="token punctuation">></span></span> {{ content | safe }} <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>main</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>footer</span><span class="token punctuation">></span></span>{% include 'footer.njk' %}<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>footer</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>body</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>html</span><span class="token punctuation">></span></span></code></pre> <p>If you’ve kept 11ty running and the browser running it should look like this:</p> <figure slot="image"><picture> <source type="image/webp" srcset="https://flamedfury.com/assets/images/11ty-neocities-2026-03-partials-480w.webp 480w, https://flamedfury.com/assets/images/11ty-neocities-2026-03-partials-800w.webp 800w, https://flamedfury.com/assets/images/11ty-neocities-2026-03-partials-1200w.webp 1200w" sizes="(max-width: 480px) 100vw, (max-width: 800px) 80vw, 1200px" /> <source type="image/jpeg" srcset="https://flamedfury.com/assets/images/11ty-neocities-2026-03-partials-480w.jpeg 480w, https://flamedfury.com/assets/images/11ty-neocities-2026-03-partials-800w.jpeg 800w, https://flamedfury.com/assets/images/11ty-neocities-2026-03-partials-1200w.jpeg 1200w" sizes="(max-width: 480px) 100vw, (max-width: 800px) 80vw, 1200px" /><img src="https://flamedfury.com/assets/images/11ty-neocities-2026-03-partials-1200w.jpeg" width="1200" height="829" alt="The homepage with the shared header, navigation links and footer added from the partial files" loading="lazy" decoding="async" eleventy:ignore="" /></picture><figcaption>A Basic Hello World HTML Page Using a Template and Partials</figcaption></figure> <p>Amazing! Now lets add the blog.</p> <h3 id="creating-the-blog"><a class="heading-anchor" href="https://flamedfury.com/guides/11ty-homepage-neocities-2026/#creating-the-blog">Creating the blog</a></h3> <p>Blog posts are mostly prose, so this is where Markdown earns its keep. We’ll write the posts as <code>.md</code> files and let 11ty turn them into pages.</p> <p>Create a new directory <code>blog</code> in the <code>src</code> directory and cd into it:</p> <pre class="language-bash"><code class="language-bash"><span class="token function">mkdir</span> blog <span class="token operator">&amp;&amp;</span> <span class="token builtin class-name">cd</span> blog</code></pre> <p>Create the following files in the <code>src/blog</code> directory with the terminal or VSCodium:</p> <pre class="language-bash"><code class="language-bash"><span class="token function">touch</span> my-first-post.md <span class="token operator">&amp;&amp;</span> <span class="token function">touch</span> my-second-post.md <span class="token operator">&amp;&amp;</span> <span class="token function">touch</span> my-third-post.md <span class="token operator">&amp;&amp;</span> <span class="token function">touch</span> blog.json</code></pre> <p>Awesome, Open each of them up in VSCodium and add the following:</p> <p><a href="http://my-first-post.md/" rel="noopener">my-first-post.md</a>:</p> <pre class="language-markdown"><code class="language-markdown"><span class="token front-matter-block"><span class="token punctuation">---</span> <span class="token front-matter yaml language-yaml">title: My First Blog Post</span> <span class="token punctuation">---</span></span> This is my first blog post</code></pre> <p><a href="http://my-second-post.md/" rel="noopener">my-second-post.md</a>:</p> <pre class="language-markdown"><code class="language-markdown"><span class="token front-matter-block"><span class="token punctuation">---</span> <span class="token front-matter yaml language-yaml">title: My Second Blog Post</span> <span class="token punctuation">---</span></span> This is my second blog post</code></pre> <p><a href="http://my-third-post.md/" rel="noopener">my-third-post.md</a></p> <pre class="language-markdown"><code class="language-markdown"><span class="token front-matter-block"><span class="token punctuation">---</span> <span class="token front-matter yaml language-yaml">title: My Third Blog Post</span> <span class="token punctuation">---</span></span> This is my third and final blog post</code></pre> <p>blog.json</p> <pre class="language-json"><code class="language-json"><span class="token punctuation">{</span> <span class="token property">"layout"</span><span class="token operator">:</span> <span class="token string">"blog"</span> <span class="token punctuation">}</span></code></pre> <aside class="aside flow note"> <div class="aside__content"> What we've done here with the directory data file <code>blog.json</code> is made it so that every blog post in the <code>/blog/</code> directory has the <code>blog.njk</code> layout applied without having to include it in each post's front matter. </div> </aside> <p>We better create a blog layout so it renders!</p> <p>Head back to the <code>_includes</code> directory to create a new layout file:</p> <pre class="language-bash"><code class="language-bash"><span class="token builtin class-name">cd</span> <span class="token punctuation">..</span>/_includes <span class="token operator">&amp;&amp;</span> <span class="token function">touch</span> blog.njk</code></pre> <p>Open <code>blog.njk</code> up in VSCodium and add the following:</p> <p>blog.njk:</p> <pre class="language-html"><code class="language-html">--- layout: base.njk --- <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>article</span><span class="token punctuation">></span></span>{{ content | safe }}<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>article</span><span class="token punctuation">></span></span></code></pre> <aside class="aside flow note"> <div class="aside__content"> What we've done here is called layout chaining. This is an 11ty feature that lets us extend a child layout from our base layout. That way if we make changes to our <code>base.njk</code> layout file, the child layouts like <code>blog.njk</code> get the same changes. </div> </aside> <p>Check that your blog posts are loading:</p> <ul class="list"> <li><a href="http://localhost:8080/blog/my-first-post/" rel="noopener">http://localhost:8080/blog/my-first-post/</a></li> <li><a href="http://localhost:8080/blog/my-second-post/" rel="noopener">http://localhost:8080/blog/my-second-post/</a></li> <li><a href="http://localhost:8080/blog/my-third-post/" rel="noopener">http://localhost:8080/blog/my-third-post/</a></li> </ul> <p>Amazing right? But to make it a blog, we need a blog page that lists all of our blog posts. We can do this with a <code>tags</code> collection:</p> <p>Open <code>blog.json</code> again and add a key called <code>tags</code> with a value of <code>blog</code>:</p> <p>blog.json:</p> <pre class="language-json"><code class="language-json"><span class="token punctuation">{</span> <span class="token property">"layout"</span><span class="token operator">:</span> <span class="token string">"blog"</span><span class="token punctuation">,</span> <span class="token property">"tags"</span><span class="token operator">:</span> <span class="token string">"blog"</span> <span class="token punctuation">}</span></code></pre> <p>Now 11ty has created a collection called <code>blog</code> and all we have to do is list it.</p> <p>Head back to the <code>src/</code> directory and create a <code>blog.html</code> file:</p> <pre class="language-bash"><code class="language-bash"><span class="token builtin class-name">cd</span> <span class="token punctuation">..</span> <span class="token operator">&amp;&amp;</span> <span class="token function">touch</span> blog.html</code></pre> <p>Open it and add the following:</p> <p>blog.html:</p> <pre class="language-html"><code class="language-html">--- title: This Is My Blog layout: base.njk --- These are all of my amazing blog posts, enjoy! <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>ul</span><span class="token punctuation">></span></span> {% for post in collections.blog | reverse %} <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>li</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>a</span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>{{ post.url }}<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>{{ post.data.title }}<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>a</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>li</span><span class="token punctuation">></span></span> {% endfor %} <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>ul</span><span class="token punctuation">></span></span></code></pre> <p>If you’ve kept 11ty running and the browser running it should look like this:</p> <figure slot="image"><picture> <source type="image/webp" srcset="https://flamedfury.com/assets/images/11ty-neocities-2026-04-blog-list-480w.webp 480w, https://flamedfury.com/assets/images/11ty-neocities-2026-04-blog-list-800w.webp 800w, https://flamedfury.com/assets/images/11ty-neocities-2026-04-blog-list-1200w.webp 1200w" sizes="(max-width: 480px) 100vw, (max-width: 800px) 80vw, 1200px" /> <source type="image/jpeg" srcset="https://flamedfury.com/assets/images/11ty-neocities-2026-04-blog-list-480w.jpeg 480w, https://flamedfury.com/assets/images/11ty-neocities-2026-04-blog-list-800w.jpeg 800w, https://flamedfury.com/assets/images/11ty-neocities-2026-04-blog-list-1200w.jpeg 1200w" sizes="(max-width: 480px) 100vw, (max-width: 800px) 80vw, 1200px" /><img src="https://flamedfury.com/assets/images/11ty-neocities-2026-04-blog-list-1200w.jpeg" width="1200" height="829" alt="The blog page listing the three blog posts as links" loading="lazy" decoding="async" eleventy:ignore="" /></picture><figcaption>A Basic Blog List Page</figcaption></figure> <p>Amazing huh?</p> <h2 id="add-some-styles"><a class="heading-anchor" href="https://flamedfury.com/guides/11ty-homepage-neocities-2026/#add-some-styles">Add some styles</a></h2> <p>Great, so far we have a fully functional home page, but it doesn’t look quite right. We need a style sheet. You can use the one below as an example, it’s basic styling with some modern techniques, or just throw in your own!</p> <p>Create a new <code>css</code> directory in <code>src</code>, cd into it and create <code>styles.css</code>:</p> <pre class="language-bash"><code class="language-bash"><span class="token function">mkdir</span> css <span class="token operator">&amp;&amp;</span> <span class="token builtin class-name">cd</span> css <span class="token operator">&amp;&amp;</span> <span class="token function">touch</span> styles.css</code></pre> <p>Open <code>styles.css</code> in VSCodium and add the following:</p> <p>styles.css:</p> <pre class="language-css"><code class="language-css"><span class="token selector">:root</span> <span class="token punctuation">{</span> <span class="token comment">/* Let the browser handle light and dark automatically */</span> <span class="token property">color-scheme</span><span class="token punctuation">:</span> light dark<span class="token punctuation">;</span> <span class="token comment">/* Two system-font stacks: sans for body, serif for headings */</span> <span class="token property">--font-body</span><span class="token punctuation">:</span> system-ui<span class="token punctuation">,</span> sans-serif<span class="token punctuation">;</span> <span class="token property">--font-head</span><span class="token punctuation">:</span> ui-serif<span class="token punctuation">,</span> Georgia<span class="token punctuation">,</span> <span class="token string">"Iowan Old Style"</span><span class="token punctuation">,</span> serif<span class="token punctuation">;</span> <span class="token comment">/* Purple/pink palette. light-dark() picks the light value first, dark second */</span> <span class="token property">--bg</span><span class="token punctuation">:</span> <span class="token function">light-dark</span><span class="token punctuation">(</span>#fdf4fa<span class="token punctuation">,</span> #1a141f<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token property">--text</span><span class="token punctuation">:</span> <span class="token function">light-dark</span><span class="token punctuation">(</span>#2a1f2d<span class="token punctuation">,</span> #ece0ef<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token property">--muted</span><span class="token punctuation">:</span> <span class="token function">light-dark</span><span class="token punctuation">(</span>#6f5d77<span class="token punctuation">,</span> #a892b0<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token property">--accent</span><span class="token punctuation">:</span> <span class="token function">light-dark</span><span class="token punctuation">(</span>#a21caf<span class="token punctuation">,</span> #ff7ab6<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token property">--border</span><span class="token punctuation">:</span> <span class="token function">light-dark</span><span class="token punctuation">(</span>#ecd9ec<span class="token punctuation">,</span> #3a2f40<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token selector">*, *::before, *::after</span> <span class="token punctuation">{</span> <span class="token property">box-sizing</span><span class="token punctuation">:</span> border-box<span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token selector">body</span> <span class="token punctuation">{</span> <span class="token property">font-family</span><span class="token punctuation">:</span> <span class="token function">var</span><span class="token punctuation">(</span>--font-body<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token property">color</span><span class="token punctuation">:</span> <span class="token function">var</span><span class="token punctuation">(</span>--text<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token property">background</span><span class="token punctuation">:</span> <span class="token function">var</span><span class="token punctuation">(</span>--bg<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token property">font-size</span><span class="token punctuation">:</span> 1.15rem<span class="token punctuation">;</span> <span class="token property">line-height</span><span class="token punctuation">:</span> 1.6<span class="token punctuation">;</span> <span class="token property">max-width</span><span class="token punctuation">:</span> 40rem<span class="token punctuation">;</span> <span class="token property">margin-inline</span><span class="token punctuation">:</span> auto<span class="token punctuation">;</span> <span class="token property">padding</span><span class="token punctuation">:</span> 0 1rem<span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token comment">/* Site header */</span> <span class="token selector">header</span> <span class="token punctuation">{</span> <span class="token property">text-align</span><span class="token punctuation">:</span> center<span class="token punctuation">;</span> <span class="token property">padding-block</span><span class="token punctuation">:</span> 2rem<span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token comment">/* Navigation */</span> <span class="token selector">nav</span> <span class="token punctuation">{</span> <span class="token property">display</span><span class="token punctuation">:</span> flex<span class="token punctuation">;</span> <span class="token property">flex-wrap</span><span class="token punctuation">:</span> wrap<span class="token punctuation">;</span> <span class="token property">justify-content</span><span class="token punctuation">:</span> center<span class="token punctuation">;</span> <span class="token property">gap</span><span class="token punctuation">:</span> 1.5rem<span class="token punctuation">;</span> <span class="token property">padding-bottom</span><span class="token punctuation">:</span> 1.5rem<span class="token punctuation">;</span> <span class="token property">border-bottom</span><span class="token punctuation">:</span> 1px solid <span class="token function">var</span><span class="token punctuation">(</span>--border<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token comment">/* Main content */</span> <span class="token selector">main</span> <span class="token punctuation">{</span> <span class="token property">padding-block</span><span class="token punctuation">:</span> 2rem<span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token comment">/* Site footer */</span> <span class="token selector">footer</span> <span class="token punctuation">{</span> <span class="token property">margin-top</span><span class="token punctuation">:</span> 4rem<span class="token punctuation">;</span> <span class="token property">padding-block</span><span class="token punctuation">:</span> 2rem<span class="token punctuation">;</span> <span class="token property">text-align</span><span class="token punctuation">:</span> center<span class="token punctuation">;</span> <span class="token property">color</span><span class="token punctuation">:</span> <span class="token function">var</span><span class="token punctuation">(</span>--muted<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token property">font-size</span><span class="token punctuation">:</span> 0.9rem<span class="token punctuation">;</span> <span class="token property">border-top</span><span class="token punctuation">:</span> 1px solid <span class="token function">var</span><span class="token punctuation">(</span>--border<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token comment">/* Links */</span> <span class="token selector">a</span> <span class="token punctuation">{</span> <span class="token property">color</span><span class="token punctuation">:</span> <span class="token function">var</span><span class="token punctuation">(</span>--accent<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token property">text-underline-offset</span><span class="token punctuation">:</span> 0.18em<span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token selector">a:hover</span> <span class="token punctuation">{</span> <span class="token property">text-decoration</span><span class="token punctuation">:</span> none<span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token comment">/* Headings */</span> <span class="token selector">h1, h2</span> <span class="token punctuation">{</span> <span class="token property">font-family</span><span class="token punctuation">:</span> <span class="token function">var</span><span class="token punctuation">(</span>--font-head<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token property">line-height</span><span class="token punctuation">:</span> 1.1<span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token selector">h1</span> <span class="token punctuation">{</span> <span class="token property">font-size</span><span class="token punctuation">:</span> 2.5rem<span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token selector">h2</span> <span class="token punctuation">{</span> <span class="token property">font-size</span><span class="token punctuation">:</span> 1.8rem<span class="token punctuation">;</span> <span class="token property">margin-top</span><span class="token punctuation">:</span> 2.5rem<span class="token punctuation">;</span> <span class="token punctuation">}</span></code></pre> <aside class="aside flow note"> <div class="aside__content"> This is a small, dependency-free stylesheet you fully own. Tweak the custom properties at the top to make it yours. It leans on two system-font stacks, a sans for body text and a serif for headings, so there's nothing to download. The <code>light-dark()</code> function (paired with <code>color-scheme</code>) gives us automatic light and dark themes from a single set of variables, no media queries required. It's well supported in modern browsers. </div> </aside> <p>Now we need to include the style sheet in our <code>base.njk</code> layout file. Open it up and add <code>&lt;link rel=&quot;stylesheet&quot; href=&quot;/css/styles.css&quot; /&gt;</code> to the <code>&lt;head&gt;</code>:</p> <p>_includes/base.njk:</p> <pre class="language-html"><code class="language-html"><span class="token doctype"><span class="token punctuation">&lt;!</span><span class="token doctype-tag">DOCTYPE</span> <span class="token name">html</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>html</span> <span class="token attr-name">lang</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>en<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>head</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>meta</span> <span class="token attr-name">charset</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>UTF-8<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>meta</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>viewport<span class="token punctuation">"</span></span> <span class="token attr-name">content</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>width=device-width, initial-scale=1.0<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>link</span> <span class="token attr-name">rel</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>stylesheet<span class="token punctuation">"</span></span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>/css/styles.css<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>title</span><span class="token punctuation">></span></span>{{ title }}<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>title</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>head</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>body</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>header</span><span class="token punctuation">></span></span>{% include 'header.njk' %}<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>header</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nav</span><span class="token punctuation">></span></span>{% include 'navigation.njk' %}<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nav</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>main</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>h1</span><span class="token punctuation">></span></span>{{ title }}<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>h1</span><span class="token punctuation">></span></span> {{ content | safe }} <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>main</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>footer</span><span class="token punctuation">></span></span>{% include 'footer.njk' %}<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>footer</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>body</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>html</span><span class="token punctuation">></span></span></code></pre> <p>You would have noticed that the stylesheet hasn’t been applied, we have to do one more thing in <code>eleventy.config.js</code>, something called file passthrough copy.</p> <p>Open <code>eleventy.config.js</code> in VSCodium and add the following:</p> <pre class="language-js"><code class="language-js"><span class="token keyword">export</span> <span class="token keyword">default</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">eleventyConfig</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> eleventyConfig<span class="token punctuation">.</span><span class="token function">addPassthroughCopy</span><span class="token punctuation">(</span><span class="token string">"./src/css"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">return</span> <span class="token punctuation">{</span> <span class="token literal-property property">dir</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token literal-property property">input</span><span class="token operator">:</span> <span class="token string">"src"</span><span class="token punctuation">,</span> <span class="token literal-property property">output</span><span class="token operator">:</span> <span class="token string">"public"</span><span class="token punctuation">,</span> <span class="token literal-property property">includes</span><span class="token operator">:</span> <span class="token string">"_includes"</span><span class="token punctuation">,</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">}</span><span class="token punctuation">;</span> <span class="token punctuation">}</span></code></pre> <aside class="aside flow note"> <div class="aside__content"> Passthrough copy is used for passing through static asset files such as stylesheets, images, fonts, and JavaScript files. </div> </aside> <p>Because this will come up we may as well create the directories and add in the configuration for our images, fonts and JavaScript files.</p> <p>Create the following directories in <code>src</code>:</p> <pre class="language-bash"><code class="language-bash"><span class="token function">mkdir</span> img <span class="token operator">&amp;&amp;</span> <span class="token function">mkdir</span> fonts <span class="token operator">&amp;&amp;</span> <span class="token function">mkdir</span> js</code></pre> <p>Update <code>eleventy.config.js</code> again:</p> <pre class="language-js"><code class="language-js"><span class="token keyword">export</span> <span class="token keyword">default</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">eleventyConfig</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> eleventyConfig<span class="token punctuation">.</span><span class="token function">addPassthroughCopy</span><span class="token punctuation">(</span><span class="token string">"./src/css"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> eleventyConfig<span class="token punctuation">.</span><span class="token function">addPassthroughCopy</span><span class="token punctuation">(</span><span class="token string">"./src/img"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> eleventyConfig<span class="token punctuation">.</span><span class="token function">addPassthroughCopy</span><span class="token punctuation">(</span><span class="token string">"./src/fonts"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> eleventyConfig<span class="token punctuation">.</span><span class="token function">addPassthroughCopy</span><span class="token punctuation">(</span><span class="token string">"./src/js"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">return</span> <span class="token punctuation">{</span> <span class="token literal-property property">dir</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token literal-property property">input</span><span class="token operator">:</span> <span class="token string">"src"</span><span class="token punctuation">,</span> <span class="token literal-property property">output</span><span class="token operator">:</span> <span class="token string">"public"</span><span class="token punctuation">,</span> <span class="token literal-property property">includes</span><span class="token operator">:</span> <span class="token string">"_includes"</span><span class="token punctuation">,</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">}</span><span class="token punctuation">;</span> <span class="token punctuation">}</span></code></pre> <p>Just make sure you put all your static files in the appropriate directory and you’ll be good.</p> <p>So finally, if you’ve kept 11ty running and the browser running it should look like this:</p> <figure slot="image"><picture> <source type="image/webp" srcset="https://flamedfury.com/assets/images/11ty-neocities-2026-05-styled-480w.webp 480w, https://flamedfury.com/assets/images/11ty-neocities-2026-05-styled-800w.webp 800w, https://flamedfury.com/assets/images/11ty-neocities-2026-05-styled-1200w.webp 1200w" sizes="(max-width: 480px) 100vw, (max-width: 800px) 80vw, 1200px" /> <source type="image/jpeg" srcset="https://flamedfury.com/assets/images/11ty-neocities-2026-05-styled-480w.jpeg 480w, https://flamedfury.com/assets/images/11ty-neocities-2026-05-styled-800w.jpeg 800w, https://flamedfury.com/assets/images/11ty-neocities-2026-05-styled-1200w.jpeg 1200w" sizes="(max-width: 480px) 100vw, (max-width: 800px) 80vw, 1200px" /><img src="https://flamedfury.com/assets/images/11ty-neocities-2026-05-styled-1200w.jpeg" width="1200" height="984" alt="The finished homepage, centred with a clean system font, spaced-out navigation and a footer divider" loading="lazy" decoding="async" eleventy:ignore="" /></picture><figcaption>A Nicely Styled Homepage</figcaption></figure> <p>Yours will look a little different depending on the colours and fonts you chose above. Now we have a homepage we’re happy with, let’s get it online.</p> <h2 id="deploy-to-neocities"><a class="heading-anchor" href="https://flamedfury.com/guides/11ty-homepage-neocities-2026/#deploy-to-neocities">Deploy to Neocities</a></h2> <p>There are two ways to get your site onto Neocities. We’ll start with the simplest, pushing it from your terminal by hand, then automate it so a deploy happens every time you commit.</p> <aside class="aside flow note"> <div class="aside__content"> Not on Neocities? The guide still applies. The same build and the same Forgejo Actions automation work for any host, you just swap out the deploy step. If you're on shared hosting or a VPS, I've written that up separately in <a href="https://flamedfury.com/posts/deploying-an-11ty-project-to-shared-hosting/">Deploying An 11ty Project To Shared Hosting</a>. </div> </aside> <h3 id="build-the-site"><a class="heading-anchor" href="https://flamedfury.com/guides/11ty-homepage-neocities-2026/#build-the-site">Build the site</a></h3> <p>Whichever method you choose, first build a fresh copy of your site:</p> <pre class="language-bash"><code class="language-bash"><span class="token function">npm</span> run build</code></pre> <p>This writes the finished HTML, CSS and assets to the <code>public</code> directory. That’s the folder we deploy.</p> <h3 id="the-simple-way-the-neocities-cli"><a class="heading-anchor" href="https://flamedfury.com/guides/11ty-homepage-neocities-2026/#the-simple-way-the-neocities-cli">The simple way: the Neocities CLI</a></h3> <p>Neocities provides a command-line tool that lets you push your site straight from your terminal. It’s a Ruby gem, so you’ll need <a href="https://www.ruby-lang.org/" rel="noopener">Ruby</a> installed.</p> <pre class="language-bash"><code class="language-bash">gem <span class="token function">install</span> neocities</code></pre> <p>The first time you run a command it’ll ask for your Neocities username and password, then store an API key locally so you don’t have to log in again.</p> <p>Push the contents of your <code>public</code> directory:</p> <pre class="language-bash"><code class="language-bash">neocities push public</code></pre> <aside class="aside flow warning"> <div class="aside__content"> Add the <code>--prune</code> flag (<code>neocities push --prune public</code>) to also remove files on Neocities that no longer exist in your local <code>public</code> folder. Handy for keeping things tidy, but double-check you're pushing the right directory first. It deletes remote files. </div> </aside> <p>That’s it, your homepage is live. For a lot of people this is all you need. Build, push, done.</p> <h3 id="the-automated-way-forgejo-actions"><a class="heading-anchor" href="https://flamedfury.com/guides/11ty-homepage-neocities-2026/#the-automated-way-forgejo-actions">The automated way: Forgejo Actions</a></h3> <p>Pushing by hand is fine, but it’s even nicer to have your site rebuild and deploy itself every time you commit a change. We can do that with <a href="https://forgejo.org/docs/latest/user/actions/" rel="noopener">Forgejo Actions</a>, the built-in CI for Forgejo. If you self-host Forgejo this runs on your own runner; if you don’t self-host, <a href="https://codeberg.org/" rel="noopener">Codeberg</a> offers the same thing (more on that below).</p> <aside class="aside flow note"> <div class="aside__content"> Don't want to self-host Forgejo but still want to use it? There are managed instances out there. If you're a member of the <a href="https://32bit.cafe/">32-Bit Cafe</a>, we run a Forgejo instance at <a href="https://git.32bit.cafe/">git.32bit.cafe</a> that you can sign into with your 32-Bit Cafe SSO. If you're an <a href="https://omg.lol/">omg.lol</a> member, you can use <a href="https://source.tube/">source.tube</a>. </div> </aside> <p>First, push your project to a repository on your Forgejo instance. Then grab your Neocities API key from your <a href="https://neocities.org/settings" rel="noopener">account settings</a> (Manage Site Settings → API Key) and add it to your repository as a secret named <code>NEOCITIES_API_KEY</code> (Repository → Settings → Actions → Secrets).</p> <p>Now create a workflow file at <code>.forgejo/workflows/deploy.yml</code>:</p> <pre class="language-yaml"><code class="language-yaml"><span class="token key atrule">name</span><span class="token punctuation">:</span> Deploy to Neocities <span class="token key atrule">on</span><span class="token punctuation">:</span> <span class="token key atrule">push</span><span class="token punctuation">:</span> <span class="token key atrule">branches</span><span class="token punctuation">:</span> <span class="token punctuation">-</span> main <span class="token comment"># only run one deploy at a time</span> <span class="token key atrule">concurrency</span><span class="token punctuation">:</span> <span class="token key atrule">group</span><span class="token punctuation">:</span> deploy<span class="token punctuation">-</span>neocities <span class="token key atrule">cancel-in-progress</span><span class="token punctuation">:</span> <span class="token boolean important">true</span> <span class="token key atrule">jobs</span><span class="token punctuation">:</span> <span class="token key atrule">deploy</span><span class="token punctuation">:</span> <span class="token key atrule">runs-on</span><span class="token punctuation">:</span> docker <span class="token key atrule">steps</span><span class="token punctuation">:</span> <span class="token punctuation">-</span> <span class="token key atrule">name</span><span class="token punctuation">:</span> Checkout <span class="token key atrule">uses</span><span class="token punctuation">:</span> https<span class="token punctuation">:</span>//code.forgejo.org/actions/checkout@v4 <span class="token punctuation">-</span> <span class="token key atrule">name</span><span class="token punctuation">:</span> Set up Node <span class="token key atrule">uses</span><span class="token punctuation">:</span> https<span class="token punctuation">:</span>//code.forgejo.org/actions/setup<span class="token punctuation">-</span>node@v4 <span class="token key atrule">with</span><span class="token punctuation">:</span> <span class="token key atrule">node-version</span><span class="token punctuation">:</span> <span class="token number">22</span> <span class="token punctuation">-</span> <span class="token key atrule">name</span><span class="token punctuation">:</span> Install and build <span class="token key atrule">run</span><span class="token punctuation">:</span> <span class="token punctuation">|</span><span class="token scalar string"> npm ci npm run build</span> <span class="token punctuation">-</span> <span class="token key atrule">name</span><span class="token punctuation">:</span> Deploy to Neocities <span class="token key atrule">uses</span><span class="token punctuation">:</span> https<span class="token punctuation">:</span>//github.com/bcomnes/deploy<span class="token punctuation">-</span>to<span class="token punctuation">-</span>neocities@v3 <span class="token key atrule">with</span><span class="token punctuation">:</span> <span class="token key atrule">api_token</span><span class="token punctuation">:</span> $<span class="token punctuation">{</span><span class="token punctuation">{</span> secrets.NEOCITIES_API_KEY <span class="token punctuation">}</span><span class="token punctuation">}</span> <span class="token key atrule">dist_dir</span><span class="token punctuation">:</span> public <span class="token key atrule">cleanup</span><span class="token punctuation">:</span> <span class="token boolean important">true</span></code></pre> <aside class="aside flow note"> <div class="aside__content"> <p>A few things to note in this workflow:</p> <ul> <li><code>runs-on: docker</code> picks the runner label. This is the default on Forgejo and Codeberg.</li> <li>Actions are referenced by their full URL. The checkout and setup-node actions come from <code>code.forgejo.org</code>, so we stay off GitHub for those.</li> <li>The deploy step uses <code>bcomnes/deploy-to-neocities</code>, which is hosted on GitHub. We're only <em>using</em> it. Your code still lives on Forgejo or Codeberg. The <code>cleanup: true</code> option removes remote files that aren't in your new build, the same as <code>--prune</code> on the CLI.</li> </ul> </div> </aside> <p>Commit and push the workflow file. From now on, every push to <code>main</code> rebuilds your site and deploys it to Neocities automatically.</p> <h3 id="not-self-hosting-use-codeberg"><a class="heading-anchor" href="https://flamedfury.com/guides/11ty-homepage-neocities-2026/#not-self-hosting-use-codeberg">Not self-hosting? Use Codeberg</a></h3> <p>If you don’t run your own Forgejo instance, <a href="https://codeberg.org/" rel="noopener">Codeberg</a> is a free, community-run home for your code and runs the very same Forgejo Actions. The workflow file above works as-is. Push your project to a Codeberg repo, add the <code>NEOCITIES_API_KEY</code> secret in the repository settings, and you’re away. You may need to enable Actions for your repository first; see the <a href="https://docs.codeberg.org/ci/actions/" rel="noopener">Codeberg CI documentation</a> for details.</p> <h2 id="bringing-your-existing-site-across"><a class="heading-anchor" href="https://flamedfury.com/guides/11ty-homepage-neocities-2026/#bringing-your-existing-site-across">Bringing your existing site across</a></h2> <p>Already have a homepage you’ve been hand-coding on Neocities? You don’t have to start from scratch. Eleventy is happy to take what you’ve got and slot it into this structure.</p> <p>Copy each existing page into <code>src/</code> (your old <code>index.html</code> becomes <code>src/index.html</code>, and so on). Then move the parts every page repeats, the <code>&lt;head&gt;</code>, header, nav and footer, into <code>base.njk</code> and the partials you built earlier. Delete that boilerplate from each page and add a little front matter at the top:</p> <pre class="language-html"><code class="language-html">--- title: About Me layout: base.njk ---</code></pre> <p>Whatever’s left in the file is just that page’s own content, and the layout wraps it.</p> <p>Your CSS goes in <code>src/css/</code>, images in <code>src/img/</code>, and fonts in <code>src/fonts/</code>. The passthrough copy we set up earlier ships them straight to <code>public/</code>.</p> <p>If a page is mostly writing, paste the body into a <code>.md</code> file instead of <code>.html</code>. Any fiddly HTML, like an embed or some custom markup, can stay exactly as it is and 11ty will render the Markdown around it.</p> <p>Run <code>npm run build</code>, check <code>public/</code> looks the way you expect, then push it live with the Neocities CLI or your Forgejo Actions workflow. Same site you already had, now with layouts, partials and a build step doing the repetitive work for you.</p> <hr /> <p>Reference: I created the original version of this guide based heavily on these existing guides, and they’re still well worth a read:</p> <ul class="list"> <li><a href="https://11ty.rocks/posts/create-your-first-basic-11ty-website/" rel="noopener">Create Your First Basic 11ty Website</a></li> <li><a href="https://sia.codes/posts/itsiest-bitsiest-eleventy-tutorial/" rel="noopener">Itsiest, Bitsiest Eleventy Tutorial</a></li> </ul> <p>Without these, I wouldn’t even know how to write down what I needed to.</p> <p>Hey, thanks for reading this post in your feed reader! Want to chat? <a href="mailto:hello@flamedfury.com?subject=RE: Create A Static Site Using 11ty &amp; Deploy to Neocities (2026 Refresh)">Reply by email</a> or add me on <a href="xmpp:flamed@omg.lol">XMPP</a>, or send a <a href="https://flamedfury.com/guides/11ty-homepage-neocities-2026/#webmention">webmention</a>. Check out the <a href="https://flamedfury.com/posts/">posts archive</a> on the website.</p> Two Way TV - product photos of 1997's hottest gadget - Terence Eden’s Blog https://shkspr.mobi/blog/?p=72448 2026-06-16T11:34:18.000Z <p>Back in the late 1990s, I did a brief stint of work experience at the BBC. One of the most memorable moments was sitting in on a meeting about <a href="https://shkspr.mobi/blog/2022/12/early-forms-of-interactive-tv/">early forms of Interactive TV</a>.</p> <p>I saw a demo of "Two Way TV". A flimsy grey box which (somehow) integrated with your OnDigital TV Box and connected to a server via a modem. If you were watching "Who Wants To Be A Millionaire" you could play along at home, send in your answers in realtime, and win REAL CASH PRIZES!!!</p> <p>An anonymous benefactor read my blog post about the tech, had a pootle through their loft, and found one of the trial boxes they'd been sent in June 1997. With their kind permission, here are some photos of the future we never got.</p> <p>The unit came in a chunky box with enough logos to convince you it was safe to plug in to the phone network.</p> <img src="https://shkspr.mobi/blog/wp-content/uploads/2026/06/Box.webp" alt="Orange box with regulatory logos." width="739" height="344" class="aligncenter size-full wp-image-72449"> <p>Flipping it over, we see a little more of the tech-specs and a defunct barcode (<code>5033936000023</code> for anyone searching) and product number (<code>SD2044N</code>).</p> <img src="https://shkspr.mobi/blog/wp-content/uploads/2026/06/Rear-Box.webp" alt="Box with a barcode and promises of NICAM stereo." width="445" height="751" class="aligncenter size-full wp-image-72450"> <p>Mmmm! NICAM! So, what did the Set Top Box (STB) actually look like:</p> <img src="https://shkspr.mobi/blog/wp-content/uploads/2026/06/STB.webp" alt="Boring grey box." width="435" height="219" class="aligncenter size-full wp-image-72452"> <p>Pretty much the same as every other Digital TV STB of the era. A featureless grey slab. Here's a closer view.</p> <img src="https://shkspr.mobi/blog/wp-content/uploads/2026/06/STB-detail.webp" alt="A slight close up showing the logo." width="693" height="126" class="aligncenter size-full wp-image-72451"> <p>How was it all connected? Here's the rear of the box: <img src="https://shkspr.mobi/blog/wp-content/uploads/2026/06/Rear-panel-with-scart-connectors.webp" alt="SCART and other connectors." width="756" height="252" class="aligncenter size-full wp-image-72453"></p> <p>Aerial in and out - I assume it had a digital decoder in it, but could pass the analogue channels through to the TV.</p> <p>Stereo out, for plugging in to your sound system.</p> <p>SCART in and out. I assume that let you connect your VCR or games console in pass-through mode.</p> <p>Keyboard looks like a PS/2 port - which would have been the standard at the time. Comms and Remove Receiver both appear to be 8 pin serial connectors.</p> <p>Finally, there's a standard telephone port for connecting to the dial-up service which makes it all work.</p> <p>So, you've plugged in all the wires, how do you actually play the games? The unit comes with two controllers - one red and one blue.</p> <img src="https://shkspr.mobi/blog/wp-content/uploads/2026/06/Red-Controller.webp" alt="Game controller. Four blue buttons and a primitive touch screen with a red background." width="680" height="435" class="aligncenter size-full wp-image-72454"> <img src="https://shkspr.mobi/blog/wp-content/uploads/2026/06/Blue-Controller.webp" alt="Game controller. Four blue buttons and a primitive touch screen with a blue background." width="640" height="413" class="aligncenter size-full wp-image-72455"> <p>The four buttons (triangle, square, circle, lozenge) were for answering on-screen questions. There's an up and down scroller in the middle and a help button above it. I don't know what the large grey circle does.</p> <p>But what's the peculiar button on the coloured background? That's an early cursor control! Commercially available touchscreens were still in their infancy. This physical controller allowed you to position a digital cursor on screen. Nifty!</p> <p>Also in the box was a TV guide:</p> <img src="https://shkspr.mobi/blog/wp-content/uploads/2026/06/Two-Way-TV-Guide.webp" alt="Magazine offering you the ability to play Wheel of Fortune with Jenny." width="374" height="521" class="aligncenter size-full wp-image-72456"> <p>A getting started leaflet:</p> <img src="https://shkspr.mobi/blog/wp-content/uploads/2026/06/Getting-Started-Guide.webp" alt="Getting Started Guide." width="416" height="296" class="aligncenter size-full wp-image-72458"> <p>There's also a service manual:</p> <img src="https://shkspr.mobi/blog/wp-content/uploads/2026/06/Field-Service-SD2044-and-SD2044N.webp" alt="Field Service SD2044 and SD2044N." width="420" height="546" class="aligncenter size-full wp-image-72457"> <p>I don't know what the difference was between SD2044 and SD2044<strong>N</strong>. Do you?</p> <p>How much would this amazing interactive experience cost you? I've no idea about the upfront payment for the kit, but there's a Direct Debit form for the monthly subscription.</p> <img src="https://shkspr.mobi/blog/wp-content/uploads/2026/06/Direct-Debit-cost.webp" alt="£6.95 per month." width="670" height="466" class="aligncenter size-full wp-image-72459"> <p>That's about £14 in today's money.</p> <p>So there you have it! A snapshot of 1997's vision of the future. From my understanding, the box was never a hit with the public. Two Way TV pivoted to other forms of interactive content like premium-rate phone-ins before <a href="https://www.tvforum.co.uk/tvhome/two-way-tv-goes-administration-7314">going bust in 2003</a>.</p> <p>If you have any more memories of the service, or interesting photos, please leave a comment or <a href="https://edent.tel">get in touch with me</a>.</p> <img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=72448&HTTP_REFERER=Atom" alt width="1" height="1" loading="eager"> The Filing Association of New York - Johnny.Decimal https://johnnydecimal.com/blog/0220-filing-assoc-of-ny/ 2026-06-16T08:53:20.000Z <p>Via <a href="https://oldstructures.com">Don</a>, news of the annual meeting of the Filing Association of New York. The after-dinner at Gonfaroni&#39;s – <a href="https://restaurant-ingthroughhistory.com/2024/06/23/behind-the-scenes-at-gonfarones/">closed for 96 years</a>, sadly – sounds like a hoot.</p> <figure class="figure jdimage jdimage--auto-dark jdimage--drop-shadow"> <picture> <img class="figure__inner" alt="A newspaper clipping. The text reads: OFFICE APPLIANCES — July, 1922. The Filing Association of New York. The annual meeting of the Filing Association of New York was held at the Washington Irving High School, the President, Mrs. E. K. McDowell, presiding. The following officers were elected to serve for the coming year: President, Ethel G. Armstrong; vice-president, Annabel Oatis; second vice-president, Katherine Clemens; treasurer, Emma D. Bendelari; recording secretary, Louise Keese; corresponding secretary, Florence Huisking. Executive board: Cora Corbin, Helen Sprague, Estelle W. Merrill, Elizabeth King McDowall, Myrta L. Mason (appointed last year—one more year to serve). The executive board has accepted with regret the resignation of Mrs. E. K. McDowall, who finds the pressure of business too heavy to continue on the board. Miss Julia Behringer has been appointed to serve in Mrs. McDowall's place. Article IV of the Constitution was amended to read: 'Dues. Annual dues of the Association shall be $2.00, payable upon notice of election. The fiscal year shall begin June first.' The annual convention of the N. Y. State Federation of Business and Professional Women's Clubs will be held on Saturday, May 27, at the Hotel Pennsylvania. The convention will end with a dinner in the evening. It is expected that the Filing Association will be represented by several members. The last meeting of the Filing Association for this season was a dinner at Gonfaroni's, McDougall and Eighth streets, New York, on Monday, June 12, at six o'clock. The chairman of the entertainment committee, Mrs. Winifred Wilbur, has gone to great pains to make this affair a success. The speaker of the evening, Mrs. E. W. Sears, president of the New York League for Business and Professional Women, had just returned from a trip throughout the United States and will have many interesting things to tell. There will be no more meetings of the association until the Fall, but this does not mean that all activities will cease. The Executive Board will continue to meet and the various committees will be at work getting ready to start up with renewed vigor after the Summer vacation." height="1105" loading="lazy" src="https://johnnydecimal.com/blog/0220-Filing_association-1012x1105.webp" width="1012"> </picture> </figure> <p>Of course this is charming and quaint, but it makes obvious something that I think about all the time: the fact that, in the past, people used to actively work on the problem of filing. It was a profession; there was a local Association that met regularly.</p> <p>These filing associations turned into organisations like <a href="https://en.wikipedia.org/wiki/ARMA_International">ARMA</a>, the <em>Association of Records Managers and Administrators</em>. So it&#39;s not like we totally forgot how to file stuff. But – at least in my professional experience – it&#39;s not something the normal office worker is ever exposed to.</p> <p>And when filing <em>is</em> something you&#39;re forced to do, it tends to be in service of checking a compliance box. Those of us who&#39;ve had the pleasure of using an enterprise &#39;document management system&#39; – looking at you, <a href="https://community.opentext.com/cfs-file/__key/communityserver-discussions-components-files/236/D-13-45590--City-Parklands-TRIM-Content-Manager-User-Training-Manual.pdf">HP TRIM</a> – know that they rarely make a thing easier to find. They just make your mistakes harder to correct.<sup><a href="#user-content-fn-deleted" id="user-content-fnref-deleted" data-footnote-ref="" aria-describedby="footnote-label" class="footnote">1</a></sup></p> <p>Yet it remains the situation that the average office worker is the one creating volumes of <em>stuff</em>; this worker being given little to no training in the still-essential field of filing. No wonder our systems are such a mess.</p> <p>No wonder nobody can find anything any more.</p> <div data-footnotes="" class="footnotes"><h2 class="sr-only" id="footnote-label">Footnotes</h2> <ol> <li id="user-content-fn-deleted"> <p>Every single such system hosting a folder named <code>z_deleted</code>. <a href="#user-content-fnref-deleted" data-footnote-backref="" aria-label="Back to reference 1" class="data-footnote-backref footnoteBackLink">↩</a></p> </li> </ol> </div> 📝 2026-06-16 08:11: Sun's out, so there's only one way to travel to the office... ☀️ - Kev Quirk https://kevquirk.com/2026-06-16-0811 2026-06-16T07:11:00.000Z <p>Sun's out, so there's only one way to travel to the office...</p> <p>☀️</p> <p><img src="https://kevquirk.com/content/images/2026-06-16-0811/1000009732.webp" alt="1000009732" /></p> <div class="email-hidden"> <hr /> <p>Thanks for reading this post via RSS. RSS is ace, and so are you. ❤️</p> <p>You can <a href="mailto:19gy@qrk.one?subject=%F0%9F%93%9D%202026-06-16%2008%3A11">reply to this post by email</a>, or <a href="https://kevquirk.com/2026-06-16-0811#comments">leave a comment</a>.</p> </div> 📝 2026-06-16 07:55: Like we don't have enough animals already. This little black blob will be joining us... - Kev Quirk https://kevquirk.com/2026-06-16-0755 2026-06-16T06:55:00.000Z <p>Like we don't have enough animals already. This little black blob will be joining us on August.</p> <p><img src="https://kevquirk.com/content/images/2026-06-16-0755/1000009729.webp" alt="1000009729" /></p> <p><img src="https://kevquirk.com/content/images/2026-06-16-0755/1000009730.webp" alt="1000009730" /></p> <div class="email-hidden"> <hr /> <p>Thanks for reading this post via RSS. RSS is ace, and so are you. ❤️</p> <p>You can <a href="mailto:19gy@qrk.one?subject=%F0%9F%93%9D%202026-06-16%2007%3A55">reply to this post by email</a>, or <a href="https://kevquirk.com/2026-06-16-0755#comments">leave a comment</a>.</p> </div> Read "Anthropic's Safety Superpower" - Molly White's activity feed 6a30a49d91f30f1ebeda3ca4 2026-06-16T01:19:25.000Z <article class="entry h-entry hentry"><header><div class="description">Read: </div></header><div class="content e-content"><div class="article h-cite hcite"><div class="title"><a class="u-url u-repost-of" href="https://stratechery.com/2026/anthropics-safety-superpower/" rel="bookmark">“<span class="p-name">Anthropic's Safety Superpower</span>”</a>. </div><div class="byline"><span class="p-author h-card">Ben Thompson</span> in <i class="p-publication">Stratechery</i>. <span class="read-date"> Published <time class="dt-published published" datetime="2026-06-15">June 15, 2026</time>.</span></div><blockquote class="summary p-summary entry-summary">Here’s the thing about these safety justifications: I think they work because, to Anthropic, they aren’t justifications. The company really believes that they are the only ones who believe in super intelligence, and thus are the only ones who are sufficiently concerned about the dangers. That excuses decision after decision, policy after policy, and confrontation after confrontation that, to people on the outside, look like a bizarre combination of cynicism and naiveté. The contrast to OpenAI is massive: I think that one way to understand how and why OpenAI lost its lead is that, in the years following the release of ChatGPT, the company has been at war with itself internally as what used to be a research lab was suddenly seized with the burden of being the accidental consumer tech company; to the extent OpenAI solved that conflict, it was by bleeding huge amounts of talent to Anthropic in particular. Anthropic, on the other hand, has perfect alignment between talent and mission and business. The company gets to sell to researchers the creation of a machine god, with the mantle of being the sort of person who cares about the dangers and is smart enough to navigate them on behalf of humanity; that every policy change that falls out of that happens to be great for business is the most beautiful coincidence in the world.</blockquote><img src="https://www.mollywhite.net/assets/images/placeholder_social.png" alt="Illustration of Molly White sitting and typing on a laptop, on a purple background with 'Molly White' in white serif." style="display: none;"/></div><img src="https://www.mollywhite.net/assets/images/placeholder_social.png" alt="Illustration of Molly White sitting and typing on a laptop, on a purple background with 'Molly White' in white serif." style="display: none;"/></div><footer class="footer"><div class="flex-row post-meta"><div class="timestamp">Posted: <time class="dt-published" datetime="2026-06-16T01:19:25+00:00" title="June 16, 2026 at 1:19 AM UTC">June 16, 2026 at 1:19 AM UTC</time>. </div></div><div class="bottomRow"><div class="tags">Tagged: <a class="tag p-category" href="https://www.mollywhite.net/feed/tag/anthropic" title="See all feed posts tagged "anthropic"" rel="category tag">anthropic</a>, <a class="tag p-category" href="https://www.mollywhite.net/feed/tag/artificial_intelligence" title="See all feed posts tagged "artificial intelligence"" rel="category tag">artificial intelligence</a>. </div></div></footer></article> Read "Choosing to Stay Human" - Molly White's activity feed 6a309f1d91f30f1ebeda3b6e 2026-06-16T00:55:57.000Z <article class="entry h-entry hentry"><header><div class="description">Read: </div></header><div class="content e-content"><div class="article h-cite hcite"><div class="title"><a class="u-url u-repost-of" href="https://substack.com/home/post/p-196018638" rel="bookmark">“<span class="p-name">Choosing to Stay Human</span>”</a>. </div><div class="byline"><span class="p-author h-card">Ethan Mollick</span> in <i class="p-publication">One Useful Thing</i>. <span class="read-date"> Published <time class="dt-published published" datetime="2026-05-26">May 26, 2026</time>.</span></div><blockquote class="summary p-summary entry-summary">To be clear, I am cool with a lot of cognitive surrender. I don’t remember phone numbers anymore because my phone does that for me. I am happy my kids didn’t need to learn cursive. I am fine with calculators doing my daily math and my computer figuring out how to schedule my classes. These were once useful skills, but we were probably right to get rid of them. AI is different because the technology is general enough that virtually any cognitive task can be offloaded into it to some degree. I don’t want to be too precious about writing: there is no principle that says a polished email draft has to come out of a human mind any more than a column of arithmetic has to. But we don’t want to give up everything, and that we mostly don’t know yet, for any specific task, what is important and what is not. Deciding that is going to be a real challenge.</blockquote><img src="https://www.mollywhite.net/assets/images/placeholder_social.png" alt="Illustration of Molly White sitting and typing on a laptop, on a purple background with 'Molly White' in white serif." style="display: none;"/></div><img src="https://www.mollywhite.net/assets/images/placeholder_social.png" alt="Illustration of Molly White sitting and typing on a laptop, on a purple background with 'Molly White' in white serif." style="display: none;"/></div><footer class="footer"><div class="flex-row post-meta"><div class="timestamp">Posted: <time class="dt-published" datetime="2026-06-16T00:55:57+00:00" title="June 16, 2026 at 12:55 AM UTC">June 16, 2026 at 12:55 AM UTC</time>. </div></div><div class="bottomRow"><div class="tags">Tagged: <a class="tag p-category" href="https://www.mollywhite.net/feed/tag/artificial_intelligence" title="See all feed posts tagged "artificial intelligence"" rel="category tag">artificial intelligence</a>. </div></div></footer></article> Note published on June 15, 2026 at 5:30 PM UTC - Molly White's activity feed 6a303698f3a5676bc2fa551c 2026-06-15T17:30:00.000Z <article><div class="entry h-entry hentry"><header></header><div class="content e-content"><div class="media-wrapper"><a href="https://storage.mollywhite.net/micro/d918fc3188176a109109_peony.jpg" data-fslightbox=cc13496ab3f559f785fe><img src="https://storage.mollywhite.net/micro/d918fc3188176a109109_peony.jpg" alt="Three blooming peonies that are blush pink at the middle, turning yellow/cream toward the outer petals. There are others that have not yet bloomed. Variety is “Raspberry Sundae”." /></a></div></div><footer class="footer"><div class="flex-row post-meta"><div class="timestamp-block"><div class="timestamp">Posted: <a class="u-url" href="https://www.mollywhite.net/micro/entry/202606151326"><time class="dt-published" datetime="2026-06-15T17:30:00+00:00" title="June 15, 2026 at 5:30 PM UTC">June 15, 2026 at 5:30 PM UTC</time>. </a></div></div><div class="social-links"> <span> Also posted to: </span><a class="social-link u-syndication mastodon" href="https://hachyderm.io/@molly0xfff/116755307259783129" title="Mastodon" rel="syndication">Mastodon, </a><a class="social-link u-syndication bluesky" href="https://bsky.app/profile/molly.wiki/post/3modsqm5xzl2p" title="Bluesky" rel="syndication">Bluesky</a></div></div><div class="bottomRow"><div class="tags">Tagged: <a class="tag p-category" href="https://www.mollywhite.net/micro/tag/gardening" title="See all micro posts tagged "gardening"" rel="category tag">gardening</a>. </div></div></footer></div></article> Bloggers, can we make better titles for our posts? - Kev Quirk https://kevquirk.com/bloggers-can-we-make-better-titles-for-our-posts 2026-06-15T14:29:00.000Z <div class="link card"><h2>Bloggers, can we make better titles for our posts?</h2><p class="post-author">by Michael Harley</p><p>Michael makes the case for us bloggers to use better titles when writing our posts as it helps discovery.</p><p><a class="button" target="_blank" href="https://michaelharley.net/posts/2026/06/15/bloggers-can-we-make-better-titles-for-our-posts/">Read post ➡</a></p></div> <hr> <p>I agree with Michael on this, but I realised that since <a href="https://kevquirk.com/2026-06-06-1802">adding other post types to my RSS feed</a> I too am guilty of this, as my <a href="https://kevquirk.com/?type=notes">notes posts</a> only show the date and time of the post in the RSS feed.</p> <p>No more!</p> <p>I've just pushed an update to my RSS feed that shows the first 15 words of the note after the date and time, which hopefully makes things more descriptive.</p> <p>That aside, good post by Michael, you should go check out his blog. 🙃</p> <p>P.S. apologies for any RSS reader spam.</p> <div class="email-hidden"> <hr /> <p>Thanks for reading this post via RSS. RSS is ace, and so are you. ❤️</p> <p>You can <a href="mailto:19gy@qrk.one?subject=Bloggers%2C%20can%20we%20make%20better%20titles%20for%20our%20posts%3F">reply to this post by email</a>, or <a href="https://kevquirk.com/bloggers-can-we-make-better-titles-for-our-posts#comments">leave a comment</a>.</p> </div> [RSS Club] What happens to old posts? - Terence Eden’s Blog https://shkspr.mobi/blog/?p=72429 2026-06-15T11:34:34.000Z <p>Welcome to RSS Club! These posts are <em>only</em> available to RSS and Atom subscribers. You can read more about the idea at <a href="https://daverupert.com/rss-club/">Dave Rupert's site</a>.</p> <p>I recently received an email from a distraught reader:</p> <blockquote><p>I was going through my recent bookmarks and I found <code>https://shkspr.mobi/blog/2026/04/rss-club-for-wordpress</code> which I had clearly saved to reference again later.</p> <p>However, as with the nature of RSS Club™, I can't just revisit that post in my browser. I'd long since deleted the RSS item in my feed and re-adding your entire feed only fetched the last ~20 items, of which this wasn't one.</p></blockquote> <p>Oh no! It is true that my feed only goes back 20 entries. As a consequence, older posts are lost in the Time Vortex - much like several episodes of Doctor Who.</p> <p>My first thought was "is this a bug or a feature?" Perhaps those posts should be ephemeral. It is possible that they've been archived - but it is equally possible that they've drifted away on the breeze like a child's balloon. Do I want people rummaging in the archives to get old club posts?</p> <p>I think my answer is… I'm happy for them to be inaccessible for the casual reader.</p> <p>But there are a few ways the determined scholar can find older posts.</p> <h2 id="manually-save-the-contents"><a href="https://shkspr.mobi/blog/2026/06/rss-club-what-happens-to-old-posts/#manually-save-the-contents">Manually Save The Contents</a></h2> <p>Your feed reader probably lets you store a permanent copy of a post. You should do that if you want a local version available.</p> <h2 id="archive-org"><a href="https://shkspr.mobi/blog/2026/06/rss-club-what-happens-to-old-posts/#archive-org">Archive.org</a></h2> <p>The Internet Archive regularly grabs a copy of my RSS feed. For example - <a href="https://web.archive.org/web/20260000000000*/https://shkspr.mobi/blog/feed/atom/">https://web.archive.org/web/20260000000000*/https://shkspr.mobi/blog/feed/atom/</a></p> <p>You can peruse older versions to your heart's content.</p> <h2 id="json-api"><a href="https://shkspr.mobi/blog/2026/06/rss-club-what-happens-to-old-posts/#json-api">JSON API</a></h2> <p>WordPress's JSON API contains the full contents of the post (albeit in a slightly verbose JSON format). You need to know the post's ID.</p> <p>For example, the JSON for this post itself can be found at <a href="https://shkspr.mobi/blog/wp-json/wp/v2/posts/72429">https://shkspr.mobi/blog/wp-json/wp/v2/posts/72429</a></p> <h2 id="feed-pagination"><a href="https://shkspr.mobi/blog/2026/06/rss-club-what-happens-to-old-posts/#feed-pagination">Feed Pagination</a></h2> <p>By default, you only get 20 items per feed. If you'd like to go to the 2nd page of the feed, you can use:</p> <p><a href="https://shkspr.mobi/blog/feed/atom/?paged=2">https://shkspr.mobi/blog/feed/atom/?paged=2</a></p> <p>Then <code>?paged=3</code> for the next, etc.</p> <h2 id="category-feeds"><a href="https://shkspr.mobi/blog/2026/06/rss-club-what-happens-to-old-posts/#category-feeds">Category Feeds</a></h2> <p>WordPress has build-in support for category-specific feeds. So, if you want to subscribe to <em>only</em> the RSS Club posts, you may use <a href="https://shkspr.mobi/blog/category/rss-club/feed/">https://shkspr.mobi/blog/category/rss-club/feed/</a></p> <p>This also works with tags, for example <a href="https://shkspr.mobi/blog/tag/rss-club/feed/">https://shkspr.mobi/blog/tag/rss-club/feed/</a></p> <p>They <em>should</em> both be the same, but I primarily use categories to differentiate between club and non-club posts.</p> <h2 id="email"><a href="https://shkspr.mobi/blog/2026/06/rss-club-what-happens-to-old-posts/#email">Email</a></h2> <p>Feel free to email me if you can't find something. My contact details are on <a href="https://edent.tel/">https://edent.tel/</a></p> <img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=72429&HTTP_REFERER=Atom" alt width="1" height="1" loading="eager"> This week at JDHQ – 2026-06-15 - Johnny.Decimal https://johnnydecimal.com/blog/0219-this-week-2026-06-15/ 2026-06-15T04:55:55.000Z <blockquote> <p>Originally sent to the <a href="https://johnnydecimal.com/support/contact-community/mailing-list-rss-social/">mailing list</a>.</p> </blockquote> <p>As promised (to ourselves), we&#39;ve had a bit of time off here in Taiwan. So this is just a quick note to remind you that the first of the weekly Small Business sessions is this <a href="https://www.worldtimebuddy.com/?qm=1&amp;lid=5368361,5128581,2643743,2950159,292223,1668341,1880252,1835848,2147714,2193733&amp;h=1668341&amp;date=2026-6-18&amp;sln=16-17&amp;hf=undefined&amp;c=1769">Thursday 18th June at 16:00 +8</a>.</p> <p>That&#39;s morning if you&#39;re in Europe, daytime for EMEA and into Asia, and evening in Oceania. The session next <a href="https://www.worldtimebuddy.com/?qm=1&amp;lid=5368361,5128581,2643743,2950159,292223,1668341,1880252,1835848,2147714,2193733&amp;h=1668341&amp;date=2026-6-23&amp;sln=6-7&amp;hf=undefined&amp;c=1505">Tuesday 23rd June at 06:00 +8</a> is nicer for those of you in the Americas.</p> <p>Zoom links for both of those are on the <a href="https://johnnydecimal.com/support/knowledge-base/sbs-events-calendar/">SBS events page at JDHQ</a> – subscribe to the calendar there for the most up-to-date information.</p> <p>We&#39;ll be kicking off the annual cycle with something easy, just to test out the process: your travel administration and records. As a reminder, the calendar has been designed to touch <em>every</em> aspect of your business over the course of the year. It&#39;s a light check-in to make sure that everything&#39;s in order and that you haven&#39;t forgotten, say, to renew your company&#39;s annual travel insurance policy.</p> <p>I&#39;ll be sending those of you who asked for the Baserow template a link in the next couple of days. We&#39;ll go through it in the session so there&#39;s no pre-work required.</p> <p>Of course if you&#39;re not already in the Small Business System, there&#39;s still time to <a href="https://johnnydecimal.com/sign-up/">upgrade your account</a>. See you Thursday.</p> <p>j.</p> AI Blog Questions Challenge - Kev Quirk https://kevquirk.com/ai-blog-questions-challenge 2026-06-14T15:21:00.000Z <p><a href="https://blog.avas.space/ai-question-challenge/">Ava did it</a>, then <a href="https://manuelmoreale.com/thoughts/ai-blog-question-challenge">Manu did it</a>, then <a href="https://thomasrigby.com/posts/ai-blog-question-challenge/">Thomas did it</a>. So now I'm joining in. <a href="https://kevquirk.com/tag/ai">I haven't written a lot about AI</a> on this site, so maybe this will give you all some insights as to what my opinions are on it all.</p> <h2>1. How was your first experience with AI models?</h2> <p>I don't remember my first time actually using an LLM, but I do remember what my feelings were in the early days of it all. Like many others, I tried Chatty Geeps and just talked shit to it. I found it to be far too sycophantic, but interesting nonetheless.</p> <h2>2. Do you use AI or are you completely against using it?</h2> <p>I do. I currently have a subscription to Google's Gemini and I use it for 2 main purposes:</p> <ol> <li>To help when I get stuck coding.</li> <li>As a search engine when I'm looking for something niche or complex.</li> </ol> <h2>3. Do you have any preference among different models, for example Claude vs ChatGPT? If yes, how do you choose?</h2> <p>Not really. I've used Chatty Geeps in the past, then Claude, and like I said above, I'm currently using Gemini. I've found them to all be similarly capable for my needs.</p> <p>The main reason I'm currently using Gemini is because it comes with my Google One subscription.</p> <h2>4. What aspect of AI models do you like and what do you not like?</h2> <p>99.99% of the time I use an LLM in one of the two ways I mentioned above. And I think they work <em>really</em> well for this. As a result of using an LLM, I've been able to learn so much about coding because I can get it to explain problems to me, which I find really helpful.</p> <p>Similarly, when I'm searching for something niche or complex, an LLM is very helpful. It saves me from wading through page after page of SEO garbage, Reddit posts, or stale forums. It does all that for me and generally gives me either the correct answer, or points me in the right direction so I can go from there.</p> <p>There's two things that <em>really</em> irks me about LLMs though. The first is that they're so damned sycophantic. Not everything is a <em>great idea</em>, despite what the models say.</p> <p>Second is the way they always end a reply with a question. Why is this necessary? Just give me the answer I need, then pipe down.</p> <h2>5. How do you feel about AI generated images? Does it annoy you if someone uses them in a blog post?</h2> <p><a href="https://kevquirk.com/on-ai-images-and-feature-images-in-general">I've actually written about this before</a>. Using them for feature images on a blog…meh. More generally, I think generated images have their use at times. </p> <p>For example, we're about to have some work done on the stables and my wife wanted to get an idea of what it would look like. So she took a photo of the stables, then asked Gemini to add the details of the work we're getting done. It did a great job and gave us a really good idea of what to expect.</p> <p>I don't generate images for fun though. I think it's wasteful and I don't really see the point of it.</p> <p>I also don't think that AI generated images are art.</p> <h2>6. Internet is flooded with AI slop now, full of generated text, images, audio, and videos. How do you filter it from authentic human creation? Do you have a strategy?</h2> <p>I have no strategy. When I come across it, I generally just ignore it and move on.</p> <p>For the record, I really dislike the word "slop" too. I think a lot of what LLMs generate is really useful, so to bundle it all in the "slop" bucket is unfair in my opinion.</p> <h2>7. Are you hopeful for a better future with A.I. or a dystopian one?</h2> <p>I think it will go the same way as all the fads that have come before it. The bubble will burst, many of these AI companies will die off, and we will be left with a handful of large providers that continue to iterate and improve upon it.</p> <p>It's very similar to blockchain - 5 years ago companies were popping up and trying to shoehorn it into everything. That bubble burst and we rarely hear of it now. It still has it's uses, but it generally goes under the radar these days.</p> <p>Long-term I think LLMs and AI have a future. They're very useful, but I don't think they're a magic pill for all our problems. Far from it.</p> <h2>Your turn!</h2> <p>Feel free to write your own response to this post - I've enjoyed reading the responses I've seen so far, which is why I decided to get involved in the first place.</p> <p>If you do decide to write a reply, here's the questions in a handy-dandy, pastable (is that even a word?) format:</p> <pre><code>1. How was your first experience with AI models? 2. Do you use AI or are you completely against using it? 3. Do you have any preference among different models, for example Claude vs ChatGPT? If yes, how do you choose? 4. What aspect of AI models do you like and what do you not like? 5. How do you feel about AI generated images? Does it annoy you if someone uses them in a blog post? 6. Internet is flooded with AI slop now, full of generated text, images, audio, and videos. How do you filter it from authentic human creation? Do you have a strategy? 7. Are you hopeful for a better future with A.I. or a dystopian one?</code></pre> <div class="email-hidden"> <hr /> <p>Thanks for reading this post via RSS. RSS is ace, and so are you. ❤️</p> <p>You can <a href="mailto:19gy@qrk.one?subject=AI%20Blog%20Questions%20Challenge">reply to this post by email</a>, or <a href="https://kevquirk.com/ai-blog-questions-challenge#comments">leave a comment</a>.</p> </div> 📝 2026-06-14 12:49 - Kev Quirk https://kevquirk.com/2026-06-14-1249 2026-06-14T11:49:00.000Z <p>Can someone who's more green fingered than me tell me is this is giant hogweed please?</p> <p>It's all over one of our fields, so if it is I'll need to get someone in to get rid of it.</p> <p><img src="https://kevquirk.com/content/images/2026-06-14-1249/1000009676.webp" alt="1000009676" /></p> <p><img src="https://kevquirk.com/content/images/2026-06-14-1249/1000009677.webp" alt="1000009677" /></p> <div class="email-hidden"> <hr /> <p>Thanks for reading this post via RSS. RSS is ace, and so are you. ❤️</p> <p>You can <a href="mailto:19gy@qrk.one?subject=%F0%9F%93%9D%202026-06-14%2012%3A49">reply to this post by email</a>, or <a href="https://kevquirk.com/2026-06-14-1249#comments">leave a comment</a>.</p> </div> Did Frank Sinatra really think "Something" was a Lennon/McCartney song? - Terence Eden’s Blog https://shkspr.mobi/blog/?p=71464 2026-06-14T11:34:16.000Z <p>Read enough articles about The Beatles and you'll repeatedly hit the claim that Frank Sinatra frequently introduced his cover of George Harrison's "Something" as his "favourite Lennon &amp; McCartney number."</p> <p>Much like the misquote about <a href="https://www.snopes.com/fact-check/john-lennon-ringo-best-drummer/">Ringo not being the best drummer in The Beatles</a>, I think this might be one of those semi-apocryphal lines which has taken on a life of its own.</p> <p>Here's what Paul McCartney has to say in The Beatles Anthology, Episode 4.</p> <p></p><div style="width: 620px;" class="wp-video"><video class="wp-video-shortcode" id="video-71464-2" width="620" height="511" poster="https://shkspr.mobi/blog/wp-content/uploads/2026/05/macca.webp" preload="metadata" controls="controls"><source type="video/webm" src="https://shkspr.mobi/blog/wp-content/uploads/2026/05/Sinatra.webm?_=2"><a href="https://shkspr.mobi/blog/wp-content/uploads/2026/05/Sinatra.webm">https://shkspr.mobi/blog/wp-content/uploads/2026/05/Sinatra.webm</a></video></div><p></p> <p><a href="https://en.wikipedia.org/wiki/The_Beatles_Anthology_(TV_series)">That was broadcast in 1995</a> - so we need to look for sources from before that.</p> <p>There's not <em>much</em> Internet before the mid-1990s. Google's mismanagement of the USENET archives is a cultural obscenity. Nevertheless, we can find a <em>few</em> references which predate McCartney's broadcast.</p> <p>1994-12-26</p> <blockquote><p><a href="https://groups.google.com/g/rec.music.beatles/c/fGBPpkwUMuU/m/h_cdIFD8jRwJ">Frankie used to introduce "Something" as his "tribute to Mr. Lennon and Mr. McCartney" ;^)</a></p></blockquote> <p>1990-03-05</p> <blockquote><p><a href="https://groups.google.com/g/rec.music.beatles/c/VeAi89TapCE/m/Cc0uJloNjEoJ">In fact, a friend of mine (a supposed Beatle fan; turns out she's really just a L/M fan), were having a discussion about this very subject, she, just like Frank Sinatra, didn't know that George wrote "Something." Duh.</a></p></blockquote> <p>So it was certainly a proto-meme back then.</p> <p>Of the thousands of Beatles books, I can't find any from before the mid-1990s which mention Sinatra's misattribution.</p> <p>For example, <a href="https://www.google.co.uk/books/edition/The_Complete_Guide_to_the_Music_of_the_B/6Ss5AQAAIAAJ">1994's The Complete Guide to the Music of the Beatles</a> simply says:</p> <img src="https://shkspr.mobi/blog/wp-content/uploads/2026/05/greatest-love-song.webp" alt="Frank Sinatra called &quot;the greatest love song ever written&quot;." width="600" class="aligncenter size-full wp-image-71466"> <p>Similarly, there are plenty of books and articles about Sinatra - lots of them talk about Something, but never this supposed misrepresentation. In <a href="https://books.google.co.uk/books?id=veUCAAAAMBAJ&amp;pg=PA31&amp;dq=sinatra+%22something%22+lennon+mccartney&amp;hl=en&amp;sa=X&amp;ved=2ahUKEwi99q_z_amUAxW9UEEAHQonLawQ6AF6BAgNEAM#v=onepage&amp;q=sinatra%20%22something%22%20lennon%20mccartney&amp;f=false">1980's New York Magazine</a>, Sinatra is interviewed and says:</p> <img src="https://shkspr.mobi/blog/wp-content/uploads/2026/05/rainy.webp" alt="George Harrison &quot;His 'Something' is a beauty.&quot;" width="600" class="aligncenter size-full wp-image-71467"> <p>There are <a href="https://www.youtube.com/results?search_query=sinatra+something">many videos of Sinatra singing Something</a> on YouTube - <strong>none</strong> of them have him introducing the song as a Lennon/McCartney number.</p> <p>Indeed, here's one where he introduces it as being by George Harrison.</p> <iframe title="Frank Sinatra - Something" width="620" height="465" src="https://www.youtube.com/embed/YcIxxP_pOSc?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen=""></iframe> <p>I think that's <a href="https://www.sinatra.com/frank-sinatra-timeline/page/3/">1982's The Concert for the Americas - in the Dominican Republic</a>.</p> <p>Here's a 1985 concert where he introduces it as being by George Harrison of The Beatles.</p> <iframe title="Something Frank Sinatra (Live in HD)" width="620" height="349" src="https://www.youtube.com/embed/Y_pEu3otPX0?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen=""></iframe> <p>Way back in 1978 at Sinatra's Caesar’s Palace Concert, he introduces it with "George Harrison wrote it" and finishes with "by George Harrison".</p> <iframe title="Frank Sinatra 1978 Caesar&amp;apos;s Palace Las Vegas" width="620" height="465" src="https://www.youtube.com/embed/qJhW9R5PybA?start=1324&amp;feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen=""></iframe> <p>Even back in 1975, during a <a href="https://youtu.be/mBifNX8vzYM?t=1073">concert in Jerusalem</a> he was crediting Harrison, saying:</p> <blockquote><p>Every one of The Beatles was a very talented young man individually. And here's an example of George Harrison with a great love song."</p></blockquote> <p>I've now listened to dozens of recordings of Sinatra singing Something live and in <em>none</em> of them does he so much as mention John Lennon or Paul McCartney.</p> <p>So is the quote apocryphal? Possibly not!</p> <p>Less than a year after John Lennon was murdered, Sinatra treated Carnegie Hall<sup id="fnref:ch"><a href="https://shkspr.mobi/blog/2026/06/did-frank-sinatra-really-think-something-was-a-lennon-mccartney-song/#fn:ch" class="footnote-ref" title="After all, Sinatra had a lot of practice!" role="doc-noteref">0</a></sup> to a series of 11 concerts.</p> <p>On 10th September 1981, John Rockwell published <a href="https://www.proquest.com/newspapers/pop-sinatra-at-carnegie/docview/424187532/se-2">Pop: Sinatra at Carnegie</a> - a review of the opening night of Sinatra's concert series at New York City's Carnegie Hall:</p> <img src="https://shkspr.mobi/blog/wp-content/uploads/2026/05/cocky-stance.webp" alt="Mr. Sinatra is no friend of the electric pop music of the last 25 years. Yet his cocky stance dovetails neatly with the punk defiance of the rock generation. And his treatment of material by younger writers - including a John Lennon tribute with a Beatles song - while not always idiomatic, carries with it a conviction that bridges gaps again. " width="600" class="aligncenter size-full wp-image-71476"> <p>Also on the 10th, <a href="https://www.newspapers.com/search/results/?country=us&amp;keyword=%22mr.+lennon.+Also+Mr.+McCartney%22&amp;sort=paper-date-asc">a clutch of US papers reproduced a story</a> by the <a href="https://www.deseret.com/2012/10/19/20442745/mary-campbell-music-writer-for-the-ap-dies-at-78/">inimitable Mary Campbell of the Associated Press</a>.</p> <img src="https://shkspr.mobi/blog/wp-content/uploads/2026/06/Mary-Campbell.webp" alt="By MARY CAMPBELL Associated Press Writer NEW YORK (AP) — Frank Sinatra has opened 11 concerts at Carnegie Hall proving Wednesday night he still can mine deeper into the heart of a song than just about anybody around. Some may have thought &quot;New York, New York,&quot; his final song in his hour and a quarter concert, was his best one. He sang it with verve, vigor and rich tone, bent the last note just exactly right and in general sounded about the age of Liza Minnelli, who has been known to sing it too. And it got him a standing ovation. But we thought the high point of the evening was &quot;Something.&quot; Sinatra introduced the song, written and recorded by the Beatles, by saying, &quot;In a sense this is a personal tribute to Mr. Lennon. Also Mr. McCartney.&quot; (The song was written by Beatle George Harrison.)" width="600" class="aligncenter size-full wp-image-71844"> <p>Most of the syndicated versions <a href="https://www.nyshistoricnewspapers.org/?a=d&amp;d=coe19810911-01.1.2&amp;srpos=1&amp;e=------198-en-20--1--txt-txIN-sinatra+%22personal+tribute%22---------">leave out the parenthetical remarks</a>.</p> <p>On the 11th, Patricia O'Haire published a somewhat snide review of the September 9th concert in <a href="https://www.newspapers.com/image/488687995/?terms=harrison&amp;match=1">The New York Daily News</a></p> <img src="https://shkspr.mobi/blog/wp-content/uploads/2026/06/one-quibble.webp" alt="Only one quibble, and it's minor. Sinatra started on song by saying &quot;This is my personal tribute to Mr. Lennon and Mr. McCartney&quot; then proceeded to sing &quot;Something&quot; a lovely ballad. Really lovely. Except it was written by George Harrison, whose name, unfortunately, was never mentioned." width="600" height="209" class="aligncenter size-full wp-image-71880"> <p>On 14th September 1981, a British newspaper re-reported the comment:</p> <img src="https://shkspr.mobi/blog/wp-content/uploads/2026/06/blue-eyes-red-face.webp" alt="Blue eyes, red face. FRANK SINATRA is now singing the old Beatles number “Something&quot; at his concerts. “In a sense,” says Ol' Blue Eyes, “ this is a personal tribute to Mr Lennon. Also to Mr McCartney.” It would be churlish, I suppose, to point out that the song was actually written by Mr Harrison." width="308" height="735" class="aligncenter size-full wp-image-71501"> <p>That's the <a href="https://britishnewspaperarchive.co.uk/search/results/1970-01-01/1981-12-31?basicsearch=sinatra%20something%20lennon&amp;somesearch=sinatra%20something%20lennon&amp;exactsearch=false&amp;retrievecountrycounts=false&amp;newspapertitle=daily%2bexpress">Daily Express</a> by Rob Benson, their Los Angeles correspondent<sup id="fnref:now"><a href="https://shkspr.mobi/blog/2026/06/did-frank-sinatra-really-think-something-was-a-lennon-mccartney-song/#fn:now" class="footnote-ref" title="It is odd that the reporter describes Sinatra as &quot;now&quot; singing Something when it had been in his repertoire for over a decade. About the right level of journalistic rigour expected of the Express." role="doc-noteref">1</a></sup>.</p> <p>By the 29th of September 1981, the story had made it to <a href="https://nla.gov.au/nla.obj-1240384507/view?sectionId=nla.obj-1569027603&amp;partId=nla.obj-1240470436">Australian Financial Times' The Bulletin</a>.</p> <img src="https://shkspr.mobi/blog/wp-content/uploads/2026/06/australian.webp" alt="Frank Sinatra, the Mafia's favorite crooner, is soft on the Beatles. He's included their classic Something in his latest concert, effusing: &quot;In a sense this is a personal tribute to Mr Lennon. Also to Mr McCartney.&quot; All of which is a bit tough on George Harrison, who wrote the song." width="600" class="aligncenter size-full wp-image-71593"> <p>It's unclear how many of those journalists were actually at the concert. I assume John Rockwell, Mary Campbell, and Patricia O'Haire were as they published fairly detailed reviews.</p> <p>Tracking down a set-list for that long-gone concert is tricky. <a href="https://www.carnegiehall.org/About/History/Performance-History-Search?q=&amp;dex=prod_PHS&amp;page=3&amp;pf=Frank%20Sinatra_">Carnegie Hall themselves</a> get the dates wrong in their archive and say the first performance was on the 8th, and their set-list is sourced from Setlist.fm rather than their own records. The <a href="https://www.freelists.org/post/sinatraphiles/September-9-THIS-DATE-IN-SINATRA-HISTORY,13#:~:text=1981">Sinatraphiles mailing list</a> has a set-list for the 9th which does include "Something".</p> <p>There's a <a href="https://www.etsy.com/uk/listing/4408990110/frank-sinatra-carnegie-hall-1981">purported recording of the September 10th concert</a> with a set-list on the reverse:</p> <img src="https://shkspr.mobi/blog/wp-content/uploads/2026/05/cd-back.webp" alt="CD track listing." width="514" height="514" class="aligncenter size-full wp-image-71477"> <p>There's no "Lennon" song - the only Beatles number is "Something". Let's take a listen to the introduction from that bootleg recording.</p> <p></p><figure class="audio"> <figcaption>🔊 Something<br>🎤 Frank Sinatra</figcaption> <audio controls="" loading="lazy" src="https://shkspr.mobi/blog/wp-content/uploads/2026/07/Something.mp3"> <p>💾 <a href="https://shkspr.mobi/blog/wp-content/uploads/2026/07/Something.mp3">Download this audio file</a>.</p> </audio> </figure><p></p> <p>"A beautiful song by George Harrison. Maybe one of the best love songs ever written."<sup id="fnref:intro"><a href="https://shkspr.mobi/blog/2026/06/did-frank-sinatra-really-think-something-was-a-lennon-mccartney-song/#fn:intro" class="footnote-ref" title="Later on, in the introduction to &quot;Luck Be A Lady Tonight&quot;, he sarcastically describes Marlon Brando as &quot;America's great baritone!&quot;. There are quite a few jokey moments in the performance - so it is…" role="doc-noteref">2</a></sup></p> <p>So, that's a handful of contemporary sources who mention that Frank Sinatra <em>once</em> introduced "Something" as being composed by someone other than Harrison.</p> <p>The only recording is of the concert the next day - and it doesn't includes that "blooper".</p> <p>There's no other mentions I can find which directly cite a specific concert or performance.</p> <p>Did Sinatra ever say it was his "favourite Lennon and McCartney song"? He sang in thousands of shows<sup id="fnref:dean"><a href="https://shkspr.mobi/blog/2026/06/did-frank-sinatra-really-think-something-was-a-lennon-mccartney-song/#fn:dean" class="footnote-ref" title="Incidentally, as far as I can tell, Sinatra first sang &quot;Something&quot; in December 1970 on The Dean Martin Show - about a year after its release on Abbey Road. Sinatra's performance doesn't contain him…" role="doc-noteref">3</a></sup>, not all of which were recorded<sup id="fnref:rec"><a href="https://shkspr.mobi/blog/2026/06/did-frank-sinatra-really-think-something-was-a-lennon-mccartney-song/#fn:rec" class="footnote-ref" title="I spoke to one collector who said: > I also checked all of the other collectors lists I have, and they do not have it either, I do however have reference to its existence via a notecard that…" role="doc-noteref">4</a></sup>, so it is entirely possible he mentioned it. But you'd expect more than a few reporters would write about it, wouldn't you?</p> <p>The origin of the "quote", as far as I can tell, is from an interview Paul McCartney gave to David Hinckley in the <a href="https://www.newspapers.com/search/results/?city=New+York&amp;county=New+York&amp;date=1984&amp;keyword=sinatra+something+lennon+mccartney&amp;region=us-ny">New York Daily News on 21st October 1984</a>.</p> <img src="https://shkspr.mobi/blog/wp-content/uploads/2026/06/Macca-Interview.webp" alt="&quot;And George - well, John and I did write most of the early material, but he developed into a helluva writer. Look at 'Something.' Sinatra still sings that.&quot; It's mentioned that Sinatra also has been known to introduce it as &quot;my favorite Lennon-McCartney song.&quot; &quot;Well, yeah,&quot; says Paul, &quot;that's what George is up against.&quot;" width="600" height="413" class="aligncenter size-full wp-image-71891"> <p>That's the first time that I can see "Something" mentioned as Sinatra's "favorite Lennon-McCartney song".</p> <p>I went rummaging through some reviews of Frank's concert performance which included "Something" in the set list.</p> <p>His concert at the Palladium:</p> <blockquote><p>And Frank sings 'Something'. It's OK. The Vanilla Fudge were more adept at Beatle rewrites however.</p> <p>Chris Salewicz. "<a href="https://www.rocksbackpages.com/Library/Article/frank-sinatra-palladium-london">Frank Sinatra: Palladium, London</a>". New Musical Express (1975).</p></blockquote> <p>His concert at the Royal Albert Hall:</p> <blockquote><p>Superb renditions of Jim Webb's 'Didn't We?' and Harrison's 'Something' were recreated with a totally unique empathy. "Real Songs, beautiful songs", he said fervently, no trace of show-biz cant.</p> <p>Max Bell. "<a href="https://www.rocksbackpages.com/Library/Article/frank-sinatra-royal-albert-hall-london">Frank Sinatra: Royal Albert Hall, London</a>". New Musical Express (1975).</p></blockquote> <p>And another report of the same gig:</p> <blockquote><p>Jimmy Webb's 'Didn't We' and the classic 'Nice And Easy', were exceptionally good, standing out easily among lacklustre renditions of 'Something', 'Strangers In The Night' and a David Gates song. In between, Sinatra delivered various controversial raps designed to instigate audience loyalties but proved that Sinatra should open his mouth only when singing.</p> <p>Barbara Charone. "<a href="https://www.rocksbackpages.com/Library/Article/frank-sinatra-royal-albert-hall-london-2">Frank Sinatra: Royal Albert Hall, London</a>". Sounds (1975).</p></blockquote> <p>I've read dozens of gig reviews of old Sinatra concerts and they all contain various levels of snark about his performance, song choice, and politics - so you'd expect British reporters would have picked up on the misattribution, wouldn't you?</p> <p>Instead, there's two slightly contradictory reports of one single concert and no suggestion that Sinatra himself said it was his "favorite Lennon-McCartney song". Given that he <em>repeatedly</em> credited George Harrison in the decade leading up to that concert, I think it is fair to say the "quote" has taken on a significance far beyond its actual importance.</p> <p>If you have a recording of Sinatra introducing "Something" as a Lennon/McCartney number - or any other <em>contemporary</em> reports of that - please drop a comment in the box.</p> <div id="footnotes" role="doc-endnotes"> <hr aria-label="Footnotes"> <ol start="0"> <li id="fn:ch"> <p>After all, Sinatra had a <em>lot</em> of practice!&nbsp;<a href="https://shkspr.mobi/blog/2026/06/did-frank-sinatra-really-think-something-was-a-lennon-mccartney-song/#fnref:ch" class="footnote-backref" role="doc-backlink">↩︎</a></p> </li> <li id="fn:now"> <p>It is odd that the reporter describes Sinatra as "now" singing Something when it had been in his repertoire for over a decade. About the right level of journalistic rigour expected of the Express.&nbsp;<a href="https://shkspr.mobi/blog/2026/06/did-frank-sinatra-really-think-something-was-a-lennon-mccartney-song/#fnref:now" class="footnote-backref" role="doc-backlink">↩︎</a></p> </li> <li id="fn:intro"> <p>Later on, in the introduction to "Luck Be A Lady Tonight", he sarcastically describes Marlon Brando as "America's great baritone!". There are quite a few jokey moments in the performance - so it is entirely possible his Lennon &amp; McCartney remark was a quip.&nbsp;<a href="https://shkspr.mobi/blog/2026/06/did-frank-sinatra-really-think-something-was-a-lennon-mccartney-song/#fnref:intro" class="footnote-backref" role="doc-backlink">↩︎</a></p> </li> <li id="fn:dean"> <p>Incidentally, as far as I can tell, Sinatra first sang "Something" in December 1970 on <a href="https://www.freelists.org/post/sinatraphiles/December-31-THIS-DATE-IN-SINATRA-HISTORY,3#:~:text=something">The Dean Martin Show</a> - about a year after its release on Abbey Road. <a href="https://www.youtube.com/watch?v=PkqjOUksnSA">Sinatra's performance</a> doesn't contain him saying anything about the song.&nbsp;<a href="https://shkspr.mobi/blog/2026/06/did-frank-sinatra-really-think-something-was-a-lennon-mccartney-song/#fnref:dean" class="footnote-backref" role="doc-backlink">↩︎</a></p> </li> <li id="fn:rec"> <p>I spoke to one collector who said:</p> <blockquote><p>I also checked all of the other collectors lists I have, and they do not have it either, I do however have reference to its existence via a notecard that represents a massive collection. What this means is that the concert could exist, but more than likely has never been digitized. Many Sinatra concerts are still stuck on reel to reels from the 70s and 80s and have never been transferred to the digital realm and shared on the internet.</p></blockquote> <p><a href="https://shkspr.mobi/blog/2026/06/did-frank-sinatra-really-think-something-was-a-lennon-mccartney-song/#fnref:rec" class="footnote-backref" role="doc-backlink">↩︎</a></p> </li> </ol> </div> <img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=71464&HTTP_REFERER=Atom" alt width="1" height="1" loading="eager"> Hobbling my app launcher - Johnny.Decimal https://johnnydecimal.com/blog/0218-hobbling-my-launcher/ 2026-06-14T01:47:30.000Z <p>I&#39;ve been using an app launcher/switcher since at least 2011 – the date my <a href="https://www.alfredapp.com">Alfred</a> v1 licence was created in 1Password – and for unknown years before that, when <a href="https://qsapp.com">Quicksilver</a> was the new thing.</p> <p>App launchers do just that: they help you launch apps. Why grab the mouse and shuffle on over to the Dock when your fingers are already on the keyboard? We&#39;ve had this capability for decades: Windows 3.0&#39;s <strong>File Manager</strong> had a <strong>File → Run…</strong> menu, with Windows 95 adding the keyboard shortcut <code>Win-R</code>. From there, type a thing and it&#39;ll launch.<sup><a href="#user-content-fn-win95" id="user-content-fnref-win95" data-footnote-ref="" aria-describedby="footnote-label" class="footnote">1</a></sup> Alfred, Raycast and their ilk just do this faster and better.</p> <h2 id="speed--efficiency">Speed ≠ efficiency</h2> <p>Lately, I&#39;ve noticed these tools getting in the way. I have Raycast bound to <code>Cmd-Space</code> and testing shows that I can switch from whatever I&#39;m doing to <em>anything else</em> in 150ms: essentially instantly.<sup><a href="#user-content-fn-testing" id="user-content-fnref-testing" data-footnote-ref="" aria-describedby="footnote-label" class="footnote">2</a></sup></p> <p>This sounds like a benefit. But when I <em>can</em> switch to anything, instantly, that&#39;s what I find myself doing, and way too often. It&#39;s like all friction has been removed, and what remains isn&#39;t good. What remains is a slippery mess.</p> <p>The other behaviour I&#39;ve noticed is an almost manic switching between two apps. Safari, code, Safari, code. Flick-flick-flick between the two. My fingers are so used to these keyboard sequences I feel like I do them subconsciously! I end up in an app and wonder, <em>what am I doing here?</em> (I was previously using the builtin <code>Cmd-Tab</code> switcher for this, but I broke <em>that</em> habit by turning off the keyboard shortcut.)<sup><a href="#user-content-fn-supercharge" id="user-content-fnref-supercharge" data-footnote-ref="" aria-describedby="footnote-label" class="footnote">3</a></sup></p> <h2 id="reintroducing-friction">Reintroducing friction</h2> <p>Fortunately, Raycast makes it easy to disable certain apps. Because I don&#39;t want to quit Raycast entirely: it&#39;s far too useful. I use it as an emoji 👋🏼 and Unicode symbol ▷ ■ ◁ picker. At the former it&#39;s way better than macOS&#39; builtin feature, and at the latter it fills a gap that the OS simply doesn&#39;t provide.<sup><a href="#user-content-fn-emoji-unicode" id="user-content-fnref-emoji-unicode" data-footnote-ref="" aria-describedby="footnote-label" class="footnote">4</a></sup> It&#39;s also my clipboard manager, my snippet expander, and the list goes on.<sup><a href="#user-content-fn-clipboard" id="user-content-fnref-clipboard" data-footnote-ref="" aria-describedby="footnote-label" class="footnote">5</a></sup></p> <p>But you can turn off its ability to launch an app by just unchecking the <strong>Enabled</strong> box in <strong>Preferences → Extensions</strong> for that app. So that&#39;s what I&#39;ve done for Safari and Discord, to start. As I notice other apps that are distraction magnets, I&#39;ll disable those.</p> <p>Instead, it&#39;s back to the trackpad. <em>Swipe-swipe-swipe</em> to the Dock I&#39;ll go, and I&#39;ll click the icon and it&#39;ll take about a second and that already feels like an eternity. And my brain is enjoying that.</p> <div data-footnotes="" class="footnotes"><h2 class="sr-only" id="footnote-label">Footnotes</h2> <ol> <li id="user-content-fn-win95"> <p>In the early versions it wasn&#39;t quite this simple. Typing <code>excel</code> won&#39;t launch Excel, for example. You need to know the full name of the executable, <code>excel.exe</code>. In modern versions of Windows you should be using the newer search features to do this, although <code>Win-R</code> still brings up trusty <strong>Run</strong>. <a href="#user-content-fnref-win95" data-footnote-backref="" aria-label="Back to reference 1" class="data-footnote-backref footnoteBackLink">↩</a></p> </li> <li id="user-content-fn-testing"> <p>I recorded my screen as I invoked Raycast, typed <code>s</code>, and hit <code>return</code>. This switches me to Safari. Raycast is only on screen for 7 frames of the 50 frames/sec recording. <a href="#user-content-fnref-testing" data-footnote-backref="" aria-label="Back to reference 2" class="data-footnote-backref footnoteBackLink">↩</a></p> </li> <li id="user-content-fn-supercharge"> <p>Using the wonderful <a href="https://sindresorhus.com/supercharge">Supercharge</a> by Sindre Sorhus. The setting <strong>Tweaks → Disable Command+Tab app switcher</strong> exists because I asked him to add it. :-) <a href="#user-content-fnref-supercharge" data-footnote-backref="" aria-label="Back to reference 3" class="data-footnote-backref footnoteBackLink">↩</a></p> </li> <li id="user-content-fn-emoji-unicode"> <p>For emoji, assign a keyboard shortcut to the Raycast builtin feature <strong>Search Emoji &amp; Symbols</strong>. I use <code>Ctrl-Opt-I</code>.</p> <p>For Unicode, install the extension <a href="https://www.raycast.com/mmazzarolo/unicode-symbols">Unicode Symbols Search</a>. I bind that to <code>Ctrl-Opt-U</code>. <a href="#user-content-fnref-emoji-unicode" data-footnote-backref="" aria-label="Back to reference 4" class="data-footnote-backref footnoteBackLink">↩</a></p> </li> <li id="user-content-fn-clipboard"> <p>Bind the builtin <strong>Clipboard History</strong> to <code>Ctrl-Opt-C</code>. <a href="#user-content-fnref-clipboard" data-footnote-backref="" aria-label="Back to reference 5" class="data-footnote-backref footnoteBackLink">↩</a></p> </li> </ol> </div> Read "Why "Book-Shaming" Won't Solve the Children's Literacy Crisis" - Molly White's activity feed 6a2d75b791f30f1ebed9b4b3 2026-06-13T15:22:31.000Z <article class="entry h-entry hentry"><header><div class="description">Read: </div></header><div class="content e-content"><div class="article h-cite hcite"><div class="title"><a class="u-url u-repost-of" href="https://www.newyorker.com/culture/progress-report/why-book-shaming-wont-solve-the-childrens-literacy-crisis" rel="bookmark">“<span class="p-name">Why "Book-Shaming" Won't Solve the Children's Literacy Crisis</span>”</a>. </div><div class="byline"><span class="p-author h-card">Jessica Winter</span> in <i class="p-publication">The New Yorker</i>. <span class="read-date"> Published <time class="dt-published published" datetime="2026-06-12">June 12, 2026</time>.</span></div><blockquote class="summary p-summary entry-summary">Barnett’s concerns about literary merit and professional esteem may be timeless, but they are not terribly timely; they seem to float high above the current on-the-ground realities of what many educators and researchers agree to be a literacy crisis. In urging his audience to see children’s books as “real books,” Barnett skips over larger, more pressing questions about why so many children aren’t reading books at all, real or otherwise.</blockquote><img src="https://www.mollywhite.net/assets/images/placeholder_social.png" alt="Illustration of Molly White sitting and typing on a laptop, on a purple background with 'Molly White' in white serif." style="display: none;"/></div><img src="https://www.mollywhite.net/assets/images/placeholder_social.png" alt="Illustration of Molly White sitting and typing on a laptop, on a purple background with 'Molly White' in white serif." style="display: none;"/></div><footer class="footer"><div class="flex-row post-meta"><div class="timestamp">Posted: <time class="dt-published" datetime="2026-06-13T15:22:31+00:00" title="June 13, 2026 at 3:22 PM UTC">June 13, 2026 at 3:22 PM UTC</time>. </div></div><div class="bottomRow"><div class="tags">Tagged: <a class="tag p-category" href="https://www.mollywhite.net/feed/tag/books" title="See all feed posts tagged "books"" rel="category tag">books</a>, <a class="tag p-category" href="https://www.mollywhite.net/feed/tag/education" title="See all feed posts tagged "education"" rel="category tag">education</a>, <a class="tag p-category" href="https://www.mollywhite.net/feed/tag/reading" title="See all feed posts tagged "reading"" rel="category tag">reading</a>. </div></div></footer></article> SwissMicros calculators - Johnny.Decimal https://johnnydecimal.com/blog/0217-swissmicros-calculators/ 2026-06-13T01:29:10.000Z <p>I have no use for a desk calculator, but as soon as I have a desk again I&#39;m buying <a href="https://www.swissmicros.com/en/products/dm41l">a SwissMicros DM41L</a>.</p> <figure class="figure jdimage jdimage--auto-dark jdimage--drop-shadow"> <picture> <img class="figure__inner" height="899" loading="lazy" src="https://johnnydecimal.com/blog/0217A-SwissMicros_DM41L-1440x899.jpeg" width="1440"> </picture> <figcaption class="figure__caption"> Figure 0217A. SwissMicros DM41L. </figcaption> </figure> <p>If you need scientific, the <a href="https://www.swissmicros.com/en/products/dm42n">DM42n</a> has you covered.</p> <figure class="figure jdimage jdimage--auto-dark jdimage--drop-shadow"> <picture> <img class="figure__inner" height="868" loading="lazy" src="https://johnnydecimal.com/blog/0217B-SwissMicros-DM42n-950x1735.jpeg" width="475"> </picture> <figcaption class="figure__caption"> Figure 0217B. SwissMicros DM42n. </figcaption> </figure> Clouds; colour - James' Coffee Blog https://jamesg.blog/2026/06/13/clouds-colour-2 2026-06-13T00:00:00.000Z <p>Approaching a junction, I looked up to the sky and saw a hole in the clouds unlike any I have seen before. I usually look up to the stone that must be at least a hundred years old: to the grey buildings – homes – in which I see so many stories. But today the blue sky and the white cloud stood out; the life of the city is made as much in Nature as it is in architecture.</p><p>I was on my way to a coffee shop, one I frequent because every time I go it is quiet. Classical music plays in the background. I have been there enough times to know their playlist is limited, but I don’t mind. On the playlist is a rendition of one of my favourite songs from childhood, a song that introduced me to the idea of lightning bugs. Nature illuminates? Awe lives on through the decades.</p><p>At a table close to the entrance, I saw the Great Wave; it was someone’s laptop cover. Now I see art wherever I go.</p><p>Later in the day, while walking, I heard in the background a child say “why are we here?” to their parent, presumably referring to the physical location. My mind couldn’t help but jump to the existential. <em>Why are we here?</em> Oh! how the same question can take on different meanings through life; we grow into new views and perspectives and answers.</p><p>“How is art history?” said someone I have had a crush on for several months, a person to whom, most recently, I have found myself being more open with than many. Earlier this year, I didn’t think I’d see them again, but chance had it that I have had the opportunity to do so a few more times (and potentially once more after today). To her question I replied “I see the world through new eyes everywhere I look.” “Everything is so colourful.”</p><p>I had been carrying a veil of tiredness today, accumulated from staying up late to have many wonderful late-night conversations this week. But in the moment when I was asked about my studies, the artistic lens I have been building over the last few years came to the fore. I saw colour in the moment and the world and life. The moment brought a smile to my face. I had been carrying that perspective for so long, bringing it into my writing. But there was something special sharing it with someone in spoken word. Maybe some day I’ll have the words to describe how I feel.</p><script>(function(){function c(){var b=a.contentDocument||a.contentWindow.document;if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'a0b1d5df880893d5',t:'MTc4MTM2MTQ2OQ=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&amp;&amp;(document.onreadystatechange=e,c())}}}})();</script> 📝 2026-06-12 16:59 - Kev Quirk https://kevquirk.com/2026-06-12-1659 2026-06-12T15:59:00.000Z <p>I can think of worse places to walk the dogs...</p> <p><img src="https://kevquirk.com/content/images/2026-06-12-1659/PXL_20260612_111054210.webp" alt="PXL_20260612_111054210" /></p> <p><img src="https://kevquirk.com/content/images/2026-06-12-1659/PXL_20260612_111649050.webp" alt="PXL_20260612_111649050" /></p> <div class="email-hidden"> <hr /> <p>Thanks for reading this post via RSS. RSS is ace, and so are you. ❤️</p> <p>You can <a href="mailto:19gy@qrk.one?subject=%F0%9F%93%9D%202026-06-12%2016%3A59">reply to this post by email</a>, or <a href="https://kevquirk.com/2026-06-12-1659#comments">leave a comment</a>.</p> </div> Published on Citation Needed: "Second Circuit rejects Sam Bankman-Fried’s appeal" - Molly White's activity feed 6a2c2335dc074af2084bb032 2026-06-12T15:18:13.000Z <article class="entry h-entry hentry"><header><div class="description">Published an issue of <a href="https://www.citationneeded.news/"><i>Citation Needed</i></a>: </div><h2 class="p-name"><a class="u-syndication" href="https://www.citationneeded.news/second-circuit-rejects-sam-bankman-frieds-appeal" rel="syndication">Second Circuit rejects Sam Bankman-Fried’s appeal </a></h2></header><div class="content e-content"><div class="media-wrapper"><a href="https://www.citationneeded.news/second-circuit-rejects-sam-bankman-frieds-appeal"><img src="https://www.citationneeded.news/content/images/size/w320/format/webp/2026/06/1280px-Looking_Up_At_Thurgood_Marshall_Courthouse-_10.14.17.jpg" alt="A photograph of the Thurgood Marshall Courthouse in New York, taken from below and looking up"/></a></div><div class="p-summary"><p>The Second Circuit upholds Bankman-Fried’s conviction and 25-year sentence, leaving few remaining options for the disgraced crypto executive</p></div></div><footer class="footer"><div class="flex-row post-meta"><div class="timestamp">Posted: <a class="u-url" href="https://www.citationneeded.news/second-circuit-rejects-sam-bankman-frieds-appeal"><time class="dt-published" datetime="2026-06-12T15:18:13+00:00" title="June 12, 2026 at 3:18 PM UTC">June 12, 2026 at 3:18 PM UTC</time>. </a></div><div class="social-links"> <span>Also posted to:</span><a class="social-link u-syndication mastodon" href="https://hachyderm.io/@molly0xfff/116737769535148394" title="Mastodon" rel="syndication">Mastodon</a><a class="social-link u-syndication bluesky" href="https://bsky.app/profile/molly.wiki/post/3mo3zix42pc2y" title="Bluesky" rel="syndication">Bluesky</a></div></div><div class="bottomRow"><div class="tags">Tagged: <a class="tag p-category" href="https://www.mollywhite.net/feed/tag/ftx" title="See all feed posts tagged "FTX"" rel="category tag">FTX</a>, <a class="tag p-category" href="https://www.mollywhite.net/feed/tag/sam_bankman_fried" title="See all feed posts tagged "Sam Bankman-Fried"" rel="category tag">Sam Bankman-Fried</a>.</div></div></footer></article>