<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet href="/rss/styles.xsl" type="text/xsl"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Design &amp; Hack</title><description>Notes on software, the web, and whatever else seems interesting.</description><link>https://hack.design/</link><item><title>I think this is working now</title><link>https://hack.design/blog/final-crosspost-test/</link><guid isPermaLink="true">https://hack.design/blog/final-crosspost-test/</guid><description>This has been quite the adventure</description><pubDate>Mon, 27 Jul 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Alright…final POSSE test!&lt;/p&gt;
&lt;p&gt;Hopefully…&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://brid.gy/publish/mastodon&quot;&gt;Syndicate to Mastodon&lt;/a&gt;&lt;/p&gt;</content:encoded><category>micro</category></item><item><title>Is brid.gy working? Not sure...</title><link>https://hack.design/blog/another-crosspost/</link><guid isPermaLink="true">https://hack.design/blog/another-crosspost/</guid><description>Trying another test of auto-publishing</description><pubDate>Sun, 26 Jul 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Trying to get bridgy working…can you see this?&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://brid.gy/publish/mastodon&quot;&gt;Syndicate to Mastodon&lt;/a&gt;&lt;/p&gt;</content:encoded><category>micro</category></item><item><title>A cross-posting test</title><link>https://hack.design/blog/crossposting-test/</link><guid isPermaLink="true">https://hack.design/blog/crossposting-test/</guid><description>Trying to figure out if brid.gy is working</description><pubDate>Sun, 26 Jul 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Really happy with this new setup, just trying to figure out if everything is working altogether. Test 1..2..3..&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://brid.gy/publish/mastodon&quot;&gt;Syndicate to Mastodon&lt;/a&gt;&lt;/p&gt;</content:encoded><category>micro</category></item><item><title>Five lessons from building this site</title><link>https://hack.design/blog/five-lessons-from-building-this-site/</link><guid isPermaLink="true">https://hack.design/blog/five-lessons-from-building-this-site/</guid><description>A numbered rundown — and a demo of the listicle post layout.</description><pubDate>Sat, 25 Jul 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This post uses the &lt;strong&gt;listicle&lt;/strong&gt; layout variant (&lt;code&gt;variant: listicle&lt;/code&gt; in the
frontmatter): every &lt;code&gt;h2&lt;/code&gt; gets an automatic big red numeral and a thin rule
above it, in the style of Fishwife’s “Our Story” page. There’s also a
&lt;code&gt;feature&lt;/code&gt; variant with a loud yellow banner header. Regular markdown —
nothing else to do.&lt;/p&gt;
&lt;h2 id=&quot;the-platform-keeps-catching-up&quot;&gt;The platform keeps catching up&lt;/h2&gt;
&lt;p&gt;Half the JavaScript this site almost shipped got replaced by things
browsers just do now: popovers, &lt;code&gt;@starting-style&lt;/code&gt; animations, &lt;code&gt;:has()&lt;/code&gt;
selectors, scroll-driven styling.&lt;/p&gt;
&lt;h2 id=&quot;semantic-html-is-a-design-system&quot;&gt;Semantic HTML is a design system&lt;/h2&gt;
&lt;p&gt;Pico CSS styles bare elements, so most pages here have almost no classes.
When markup stays semantic, restyling the whole site is a token swap.&lt;/p&gt;
&lt;h2 id=&quot;steal-palettes-from-the-physical-world&quot;&gt;Steal palettes from the physical world&lt;/h2&gt;
&lt;p&gt;The colors here are sampled from a tinned fish company. Print-inspired
design — flat blocks, thin rules, chunky borders — translates to the web
beautifully.&lt;/p&gt;
&lt;h2 id=&quot;ship-less-load-faster&quot;&gt;Ship less, load faster&lt;/h2&gt;
&lt;p&gt;Every feature earned its bytes: build-time syntax highlighting, build-time
image optimization, web components only on pages that use them.&lt;/p&gt;
&lt;h2 id=&quot;write-it-down&quot;&gt;Write it down&lt;/h2&gt;
&lt;p&gt;The blog is the point. A place to put things forces you to finish them.&lt;/p&gt;</content:encoded><category>meta</category><category>css</category></item><item><title>A note on static maps</title><link>https://hack.design/blog/note-on-static-maps/</link><guid isPermaLink="true">https://hack.design/blog/note-on-static-maps/</guid><description>Short thought — maps don’t need JavaScript either.</description><pubDate>Sat, 25 Jul 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;TIL you can composite OpenStreetMap tiles into a single image at build time
and overlay the markers as plain HTML — popups and all, zero JavaScript.
This note is a &lt;strong&gt;micro&lt;/strong&gt; post: no title, just a date and a thought. Good
for links, TILs, and half-formed ideas.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://brid.gy/publish/mastodon&quot;&gt;Syndicate to Mastodon&lt;/a&gt;&lt;/p&gt;</content:encoded><category>micro</category></item><item><title>Photo galleries with zero JavaScript</title><link>https://hack.design/blog/zero-js-photo-galleries/</link><guid isPermaLink="true">https://hack.design/blog/zero-js-photo-galleries/</guid><description>A gallery component with a full lightbox — expand, close, prev/next — shipping not a single byte of JS.</description><pubDate>Fri, 24 Jul 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This site now has a &lt;code&gt;&amp;lt;Gallery&amp;gt;&lt;/code&gt; component, and it cheats in the best way:
the lightbox — click to expand, click outside or press &lt;kbd&gt;Esc&lt;/kbd&gt; to
close, arrows to move between photos — is handled almost entirely by the
browser’s native &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/API/Popover_API&quot;&gt;Popover API&lt;/a&gt;.
Total JavaScript shipped: one ~200-byte snippet.&lt;/p&gt;
&lt;h2 id=&quot;one-photo&quot;&gt;One photo&lt;/h2&gt;
&lt;p&gt;A single photo renders full width and keeps its natural aspect ratio.
Click it:&lt;/p&gt;
&lt;div class=&quot;gallery&quot; data-count=&quot;one&quot;&gt;&lt;img src=&quot;https://hack.design/_astro/spire.Dwr11wdO_2cVDAn.webp&quot; srcset=&quot;https://hack.design/_astro/spire.Dwr11wdO_Z1fBARp.webp 480w, https://hack.design/_astro/spire.Dwr11wdO_Z1YqYzU.webp 960w&quot; alt=&quot;Abstract portrait gradient in plum and ember&quot; sizes=&quot;(max-width: 44rem) 100vw, 44rem&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1067&quot; height=&quot;1600&quot; style=&quot;display:block;max-width:100%;height:auto;margin:0 auto 0.75rem&quot;&gt;&lt;/div&gt;
&lt;h2 id=&quot;several-photos&quot;&gt;Several photos&lt;/h2&gt;
&lt;p&gt;Multiple photos snap into a grid — click any of them, then use the arrows
(or &lt;kbd&gt;Tab&lt;/kbd&gt; + &lt;kbd&gt;Enter&lt;/kbd&gt;) to flip through:&lt;/p&gt;
&lt;div class=&quot;gallery&quot; data-count=&quot;many&quot;&gt;&lt;img src=&quot;https://hack.design/_astro/dusk.Dj2Nb7qp_Vt8Oo.webp&quot; srcset=&quot;https://hack.design/_astro/dusk.Dj2Nb7qp_ZuEuhj.webp 480w, https://hack.design/_astro/dusk.Dj2Nb7qp_Z13tLUY.webp 960w&quot; alt=&quot;Warm gradient fading from indigo to amber&quot; sizes=&quot;(max-width: 44rem) 100vw, 44rem&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1600&quot; height=&quot;1067&quot; style=&quot;display:block;max-width:100%;height:auto;margin:0 auto 0.75rem&quot;&gt;&lt;img src=&quot;https://hack.design/_astro/reef.DEIKXSZB_Z1WxMXS.webp&quot; srcset=&quot;https://hack.design/_astro/reef.DEIKXSZB_Z1foppl.webp 480w, https://hack.design/_astro/reef.DEIKXSZB_Z1NdH41.webp 960w&quot; alt=&quot;Cool teal gradient with soft glowing shapes&quot; sizes=&quot;(max-width: 44rem) 100vw, 44rem&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1600&quot; height=&quot;1067&quot; style=&quot;display:block;max-width:100%;height:auto;margin:0 auto 0.75rem&quot;&gt;&lt;img src=&quot;https://hack.design/_astro/meadow.B9j-arH6_N89Sz.webp&quot; srcset=&quot;https://hack.design/_astro/meadow.B9j-arH6_Z7TVJD.webp 480w, https://hack.design/_astro/meadow.B9j-arH6_BJ397.webp 960w&quot; alt=&quot;Green and gold gradient with soft light&quot; sizes=&quot;(max-width: 44rem) 100vw, 44rem&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1600&quot; height=&quot;1067&quot; style=&quot;display:block;max-width:100%;height:auto;margin:0 auto 0.75rem&quot;&gt;&lt;img src=&quot;https://hack.design/_astro/meadow.B9j-arH6_N89Sz.webp&quot; srcset=&quot;https://hack.design/_astro/meadow.B9j-arH6_Z7TVJD.webp 480w, https://hack.design/_astro/meadow.B9j-arH6_BJ397.webp 960w&quot; alt=&quot;Green and gold gradient with soft light&quot; sizes=&quot;(max-width: 44rem) 100vw, 44rem&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1600&quot; height=&quot;1067&quot; style=&quot;display:block;max-width:100%;height:auto;margin:0 auto 0.75rem&quot;&gt;&lt;img src=&quot;https://hack.design/_astro/meadow.B9j-arH6_N89Sz.webp&quot; srcset=&quot;https://hack.design/_astro/meadow.B9j-arH6_Z7TVJD.webp 480w, https://hack.design/_astro/meadow.B9j-arH6_BJ397.webp 960w&quot; alt=&quot;Green and gold gradient with soft light&quot; sizes=&quot;(max-width: 44rem) 100vw, 44rem&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1600&quot; height=&quot;1067&quot; style=&quot;display:block;max-width:100%;height:auto;margin:0 auto 0.75rem&quot;&gt;&lt;img src=&quot;https://hack.design/_astro/meadow.B9j-arH6_N89Sz.webp&quot; srcset=&quot;https://hack.design/_astro/meadow.B9j-arH6_Z7TVJD.webp 480w, https://hack.design/_astro/meadow.B9j-arH6_BJ397.webp 960w&quot; alt=&quot;Green and gold gradient with soft light&quot; sizes=&quot;(max-width: 44rem) 100vw, 44rem&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1600&quot; height=&quot;1067&quot; style=&quot;display:block;max-width:100%;height:auto;margin:0 auto 0.75rem&quot;&gt;&lt;/div&gt;
&lt;h2 id=&quot;how-it-works&quot;&gt;How it works&lt;/h2&gt;
&lt;p&gt;Each thumbnail is a &lt;code&gt;&amp;lt;button popovertarget=&amp;quot;photo-3&amp;quot;&amp;gt;&lt;/code&gt;, and each full-size
photo is a &lt;code&gt;&amp;lt;div popover&amp;gt;&lt;/code&gt;. The browser does the rest: open on click, light
dismiss, focus handling. The prev/next arrows are just buttons targeting the
&lt;em&gt;neighboring&lt;/em&gt; photo’s popover. The fade-in is CSS &lt;code&gt;@starting-style&lt;/code&gt;, and the
images themselves are resized and converted to modern formats at build time
by Astro.&lt;/p&gt;
&lt;p&gt;The one place the browser needs help: when you open photo 2 &lt;em&gt;from inside&lt;/em&gt;
photo 1, the Popover API considers photo 1 an ancestor and stacks the two
instead of swapping them. A tiny script listens for &lt;code&gt;beforetoggle&lt;/code&gt; and
closes the previous photo, adds &lt;kbd&gt;←&lt;/kbd&gt;/&lt;kbd&gt;→&lt;/kbd&gt; navigation, and
turns horizontal swipes into prev/next on touch screens — that’s the entire
JavaScript budget of this component.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8;overflow-x:auto&quot; tabindex=&quot;0&quot; data-language=&quot;mdx&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E;--shiki-dark:#E1E4E8&quot;&gt;import Gallery from &amp;#39;../../components/Gallery.astro&amp;#39;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E;--shiki-dark:#E1E4E8&quot;&gt;import dusk from &amp;#39;../../assets/photos/dusk.jpg&amp;#39;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;lt;Gallery photos={&lt;/span&gt;&lt;span style=&quot;color:#032F62;--shiki-dark:#9ECBFF&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color:#24292E;--shiki-dark:#E1E4E8&quot;&gt;{ src: dusk, alt: &amp;#39;Warm gradient at dusk&amp;#39;, caption: &amp;#39;Dusk.&amp;#39; }&lt;/span&gt;&lt;span style=&quot;color:#032F62;--shiki-dark:#9ECBFF&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color:#24292E;--shiki-dark:#E1E4E8&quot;&gt;} /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;</content:encoded><category>css</category><category>astro</category></item><item><title>Web components in MDX</title><link>https://hack.design/blog/web-components-in-mdx/</link><guid isPermaLink="true">https://hack.design/blog/web-components-in-mdx/</guid><description>Dropping interactive web components into blog posts — one home-made, one imported.</description><pubDate>Wed, 22 Jul 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Most of this site ships &lt;strong&gt;zero JavaScript&lt;/strong&gt; — Astro renders everything to
static HTML. But when a post needs interactivity, web components are a
perfect fit: they’re just HTML tags with behavior attached, no framework
runtime required. Here are two in action.&lt;/p&gt;
&lt;h2 id=&quot;a-home-made-component-star-rating&quot;&gt;A home-made component: &lt;code&gt;&amp;lt;star-rating&amp;gt;&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;This one is defined in about seventy lines of vanilla TypeScript in
&lt;code&gt;src/scripts/star-rating.ts&lt;/code&gt; — shadow DOM, keyboard-accessible buttons, and
a custom event when the rating changes. Click a star:&lt;/p&gt;

&lt;p&gt;Using it in a post is one import and one tag:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8;overflow-x:auto&quot; tabindex=&quot;0&quot; data-language=&quot;mdx&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E;--shiki-dark:#E1E4E8&quot;&gt;import StarRating from &amp;#39;../../components/StarRating.astro&amp;#39;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;lt;StarRating value={3} /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;an-imported-component-lite-youtube&quot;&gt;An imported component: &lt;code&gt;&amp;lt;lite-youtube&amp;gt;&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/justinribeiro/lite-youtube&quot;&gt;lite-youtube&lt;/a&gt; by Justin
Ribeiro renders a YouTube embed as a static thumbnail and only loads the
real iframe (and its ~1 MB of YouTube JavaScript) when you press play.
Same one-tag usage:&lt;/p&gt;

&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8;overflow-x:auto&quot; tabindex=&quot;0&quot; data-language=&quot;mdx&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E;--shiki-dark:#E1E4E8&quot;&gt;import YouTube from &amp;#39;../../components/YouTube.astro&amp;#39;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;lt;YouTube videoid=&amp;quot;dQw4w9WgXcQ&amp;quot; videotitle=&amp;quot;A very important video&amp;quot; /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;why-wrap-them-in-astro-components&quot;&gt;Why wrap them in &lt;code&gt;.astro&lt;/code&gt; components?&lt;/h2&gt;
&lt;p&gt;Both tags are wrapped in tiny Astro components (&lt;code&gt;src/components/&lt;/code&gt;) whose
&lt;code&gt;&amp;lt;script&amp;gt;&lt;/code&gt; block imports the element definition. Astro bundles and dedupes
those scripts automatically — use ten ratings on a page and the definition
still loads once. The pattern for adding any future web component is the
same three steps: install (or write) it, wrap it, import it in your post.&lt;/p&gt;</content:encoded><category>mdx</category><category>web-components</category></item><item><title>Hello, world</title><link>https://hack.design/blog/hello-world/</link><guid isPermaLink="true">https://hack.design/blog/hello-world/</guid><description>The obligatory first post: what this site is, and how it works.</description><pubDate>Mon, 20 Jul 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Welcome! This site is built with &lt;a href=&quot;https://astro.build&quot;&gt;Astro&lt;/a&gt; and styled with
&lt;a href=&quot;https://picocss.com&quot;&gt;Pico CSS&lt;/a&gt;. Posts are written in &lt;strong&gt;MDX&lt;/strong&gt;, which means
normal Markdown works everywhere, and components can be sprinkled in when a
post needs something interactive.&lt;/p&gt;
&lt;h2 id=&quot;everything-youd-expect-from-markdown&quot;&gt;Everything you’d expect from Markdown&lt;/h2&gt;
&lt;p&gt;Lists, links, and &lt;em&gt;emphasis&lt;/em&gt; all work. So do blockquotes:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The cheapest, fastest, and most reliable components are those that aren’t there.
— Gordon Bell&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;And tables:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Thing&lt;/th&gt;
&lt;th&gt;Why it’s here&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Astro&lt;/td&gt;
&lt;td&gt;Static output, zero JS by default&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pico CSS&lt;/td&gt;
&lt;td&gt;Beautiful semantic HTML, no classes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MDX&lt;/td&gt;
&lt;td&gt;Markdown plus components&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Code blocks are syntax-highlighted at build time with Shiki, so highlighting
costs nothing at runtime and adapts to light and dark mode:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8;overflow-x:auto&quot; tabindex=&quot;0&quot; data-language=&quot;ts&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#D73A49;--shiki-dark:#F97583&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;color:#005CC5;--shiki-dark:#79B8FF&quot;&gt; posts&lt;/span&gt;&lt;span style=&quot;color:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#D73A49;--shiki-dark:#F97583&quot;&gt; await&lt;/span&gt;&lt;span style=&quot;color:#6F42C1;--shiki-dark:#B392F0&quot;&gt; getCollection&lt;/span&gt;&lt;span style=&quot;color:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&amp;#39;blog&amp;#39;&lt;/span&gt;&lt;span style=&quot;color:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#D73A49;--shiki-dark:#F97583&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;color:#005CC5;--shiki-dark:#79B8FF&quot;&gt; latest&lt;/span&gt;&lt;span style=&quot;color:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#24292E;--shiki-dark:#E1E4E8&quot;&gt; posts.&lt;/span&gt;&lt;span style=&quot;color:#6F42C1;--shiki-dark:#B392F0&quot;&gt;sort&lt;/span&gt;&lt;span style=&quot;color:#24292E;--shiki-dark:#E1E4E8&quot;&gt;((&lt;/span&gt;&lt;span style=&quot;color:#E36209;--shiki-dark:#FFAB70&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;color:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#E36209;--shiki-dark:#FFAB70&quot;&gt;b&lt;/span&gt;&lt;span style=&quot;color:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;color:#D73A49;--shiki-dark:#F97583&quot;&gt;=&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:#24292E;--shiki-dark:#E1E4E8&quot;&gt; b.data.pubDate.&lt;/span&gt;&lt;span style=&quot;color:#6F42C1;--shiki-dark:#B392F0&quot;&gt;valueOf&lt;/span&gt;&lt;span style=&quot;color:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() &lt;/span&gt;&lt;span style=&quot;color:#D73A49;--shiki-dark:#F97583&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#24292E;--shiki-dark:#E1E4E8&quot;&gt; a.data.pubDate.&lt;/span&gt;&lt;span style=&quot;color:#6F42C1;--shiki-dark:#B392F0&quot;&gt;valueOf&lt;/span&gt;&lt;span style=&quot;color:#24292E;--shiki-dark:#E1E4E8&quot;&gt;());&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;writing-a-new-post&quot;&gt;Writing a new post&lt;/h2&gt;
&lt;p&gt;Add a file to &lt;code&gt;src/content/blog/&lt;/code&gt; with a small frontmatter block — title,
description, date — and start writing. That’s the whole workflow.&lt;/p&gt;</content:encoded><category>meta</category></item></channel></rss>