<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/">
  <channel>
    <title>remy sharp's l:inks</title>
    <atom:link href="https://remysharp.com/links.xml" rel="self" type="application/rss+xml"></atom:link>
    <link>https://remysharp.com</link>
    <description>About [code] and all that jazz</description>
    <image>
      <title>remy sharp's b:log</title>
      <link>https://remysharp.com</link>
      <url>https://remysharp.com/images/avatar-125.jpg</url>
      <width>125</width>
      <height>125</height>
    </image>
    <lastBuildDate>Tue, 18 Aug 2026 20:00:48 +0000</lastBuildDate>
    <managingEditor>remy@remysharp.com (Remy Sharp)</managingEditor>
    <webMaster>remy@remysharp.com (Remy Sharp)</webMaster>
    <language>en</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <generator>Honestly, I don't know what most of these tags do, I copied a lot of them from other people's web site ¯\_(ツ)_/¯</generator>
    <item>
      <title>Dark mode toggles: two states are enough</title>
      <guid isPermaLink="false">2026-08-13-1de8cfec</guid>
      <link>https://remysharp.com/links/2026-08-13-1de8cfec</link>
      <pubDate>Thu, 13 Aug 2026 11:21:51 +0000</pubDate>
      <description><![CDATA[Lea's deep dive into dark mode toggles is well worth the read.
I've got strong opinions about this, and Lea nails it with:

Users do not seek out solutions to problems they don’t currently have.

I personally (for my own tools) tend to go further and just have the UI toggle based on the system by default and not even offer the option in the main interfaces (for personal tools I probably won't bother with a toggle at all, for published projects, I'll put the control in a settings page).
If my users are focusing on whether the page is light or dark, then I've definitely done something wrong…
Original link: lea.verou.me/[…]/dark-mode-toggles]]></description>
      <content:encoded><![CDATA[
<p>Lea's deep dive into dark mode toggles is well worth the read.</p>
<p>I've got strong opinions about this, and Lea nails it with:</p>
<blockquote>
<p>Users do not seek out solutions to problems they don’t currently have.</p>
</blockquote>
<p>I personally (for my own tools) tend to go further and just have the UI toggle based on the system by default and not even offer the option in the main interfaces (for personal tools I probably won't bother with a toggle at all, for published projects, I'll put the control in a settings page).</p>
<p>If my users are focusing on whether the page is light or dark, then I've definitely done something wrong…</p>
<p><em>Original link: <a href="https://lea.verou.me/blog/2026/dark-mode-toggles/">lea.verou.me/[…]/dark-mode-toggles</a></em></p>
<p><em>Originally published on <a href="https://remysharp.com/links/2026-08-13-1de8cfec">Remy Sharp's b:log</a></em></p>]]></content:encoded>
    </item>
    <item>
      <title>On AI Coding and Its Discontents</title>
      <guid isPermaLink="false">2026-08-12-d44a7915</guid>
      <link>https://remysharp.com/links/2026-08-12-d44a7915</link>
      <pubDate>Wed, 12 Aug 2026 22:23:54 +0000</pubDate>
      <description><![CDATA[Anecdotal, but still an interesting read on stories from (initially) a single developer and how they converted to Claude and then have rewound back quite a bit

He told me that features he generated using Claude Code ended up crashing their product on two different occasions. His boss told him that if it happened one more time, he’d be fired. “I’ve never had quality issues like this before in my career.”

I personally use AI quite blindly in my own personal &quot;toy&quot; projects that are consumed only by me. My work is more of a mix but I'm definitely feeling this weird unease under my own feet with respect to LLM generated code and the reviews around them.

I think there’s a lot more work to be done trying to figure out how to integrate AI into this industry in a way that actually works.

Definitely feeling those vibes myself.
Original link: calnewport.com/on-ai-coding-and-its-discontents]]></description>
      <content:encoded><![CDATA[
<p>Anecdotal, but still an interesting read on stories from (initially) a single developer and how they converted to Claude and then have rewound back quite a bit</p>
<blockquote>
<p>He told me that features he generated using Claude Code ended up crashing their product on two different occasions. His boss told him that if it happened one more time, he’d be fired. “I’ve never had quality issues like this before in my career.”</p>
</blockquote>
<p>I personally use AI quite blindly in my own personal &quot;toy&quot; projects that are consumed only by me. My work is more of a mix but I'm definitely feeling this weird unease under my own feet with respect to LLM generated code and the reviews around them.</p>
<blockquote>
<p>I think there’s a lot more work to be done trying to figure out how to integrate AI into this industry in a way that actually works.</p>
</blockquote>
<p>Definitely feeling <em>those</em> vibes myself.</p>
<p><em>Original link: <a href="https://calnewport.com/on-ai-coding-and-its-discontents/">calnewport.com/on-ai-coding-and-its-discontents</a></em></p>
<p><em>Originally published on <a href="https://remysharp.com/links/2026-08-12-d44a7915">Remy Sharp's b:log</a></em></p>]]></content:encoded>
    </item>
    <item>
      <title>Not All Screen Reader Users Are Blind</title>
      <guid isPermaLink="false">2026-08-07-f9ee44b7</guid>
      <link>https://remysharp.com/links/2026-08-07-f9ee44b7</link>
      <pubDate>Fri, 07 Aug 2026 08:36:19 +0000</pubDate>
      <description><![CDATA[Good article that's backed with data, but this is the bit that really landed for me, a reminder that it's not all &quot;what aria role is needed here...?&quot; —

I can confidently say that the best approach to making a web site accessible (to screen readers or not) is by using proper HTML. If done well, ARIA is only needed for complex controls (tabs, trees, carousels, …).
Screen reader users still benefit the same way sighted users do from hidden elements, particularly visual (and in this case auditory) assaults such as mega menus

Original link: adrianroselli.com/[…]/not-all-screen-reader-users-are-blind.html]]></description>
      <content:encoded><![CDATA[
<p>Good article that's backed with data, but this is the bit that really landed for me, a reminder that it's not all &quot;what aria role is needed here...?&quot; —</p>
<blockquote>
<p>I can confidently say that the best approach to making a web site accessible (to screen readers or not) is by using proper HTML. If done well, ARIA is only needed for complex controls (tabs, trees, carousels, …).</p>
<p>Screen reader users still benefit the same way sighted users do from hidden elements, particularly visual (and in this case auditory) assaults such as mega menus</p>
</blockquote>
<p><em>Original link: <a href="https://adrianroselli.com/2017/02/not-all-screen-reader-users-are-blind.html">adrianroselli.com/[…]/not-all-screen-reader-users-are-blind.html</a></em></p>
<p><em>Originally published on <a href="https://remysharp.com/links/2026-08-07-f9ee44b7">Remy Sharp's b:log</a></em></p>]]></content:encoded>
    </item>
    <item>
      <title>A Firefox-only minimap</title>
      <guid isPermaLink="false">2026-07-31-010186f7</guid>
      <link>https://remysharp.com/links/2026-07-31-010186f7</link>
      <pubDate>Fri, 31 Jul 2026 13:54:12 +0000</pubDate>
      <description><![CDATA[This is very cute, a web site minimap in only a few lines of CSS that paints the entire web page into a canvas (background) using the element() CSS function.
Original link: www.stefanjudis.com/a-firefox-only-minimap]]></description>
      <content:encoded><![CDATA[
<p>This is very cute, a web site minimap in only a few lines of CSS that paints the entire web page into a canvas (background) using the <code>element()</code> CSS function.</p>
<p><em>Original link: <a href="https://www.stefanjudis.com/a-firefox-only-minimap/">www.stefanjudis.com/a-firefox-only-minimap</a></em></p>
<p><em>Originally published on <a href="https://remysharp.com/links/2026-07-31-010186f7">Remy Sharp's b:log</a></em></p>]]></content:encoded>
    </item>
    <item>
      <title>'VPNs are lawful technical tools,' says EU Court in landmark copyright ruling</title>
      <guid isPermaLink="false">2026-07-23-35890312</guid>
      <link>https://remysharp.com/links/2026-07-23-35890312</link>
      <pubDate>Thu, 23 Jul 2026 10:39:26 +0000</pubDate>
      <description><![CDATA[I've been following the stories around the &quot;child protection&quot; because on one hand it does afford children some protection, but it also hammers down on the privacy of everyone - i.e. adults who give up their privacy to prove they're not a child.
VPNs in particular have been tossed around as something that the UK government would like to ban (citation needed/lacking!), which is why this article is particularly interesting:
The Court of Justice of the European Union has ruled that publishers and VPN providers aren't liable for copyright infringement

Geo-blocking is the copyright holder's problem, not the VPN's. Providers are not liable for users bypassing restrictions

Hopefully this draws a simple line in the sand for the UK government, and yet, who really knows what's going through their head at any one time!
Original link: www.techradar.com/[…]/vpns-are-lawful-technical-tools-says-eu-court-in-landmark-anne-frank-copyright-ruling]]></description>
      <content:encoded><![CDATA[
<p>I've been following the stories around the &quot;child protection&quot; because on one hand it does afford children some protection, but it also hammers down on the privacy of everyone - i.e. adults who give up their privacy to prove they're not a child.</p>
<p>VPNs in particular have been tossed around as something that the UK government would like to ban (citation needed/lacking!), which is why this article is particularly interesting:</p>
<p>The Court of Justice of the European Union has ruled that publishers and VPN providers aren't liable for copyright infringement</p>
<blockquote>
<p>Geo-blocking is the copyright holder's problem, not the VPN's. Providers are not liable for users bypassing restrictions</p>
</blockquote>
<p>Hopefully this draws a simple line in the sand for the UK government, and yet, who really knows what's going through their head at any one time!</p>
<p><em>Original link: <a href="https://www.techradar.com/vpn/vpn-privacy-security/vpns-are-lawful-technical-tools-says-eu-court-in-landmark-anne-frank-copyright-ruling">www.techradar.com/[…]/vpns-are-lawful-technical-tools-says-eu-court-in-landmark-anne-frank-copyright-ruling</a></em></p>
<p><em>Originally published on <a href="https://remysharp.com/links/2026-07-23-35890312">Remy Sharp's b:log</a></em></p>]]></content:encoded>
    </item>
    <item>
      <title>Image to text</title>
      <guid isPermaLink="false">2026-07-17-8797d866</guid>
      <link>https://remysharp.com/links/2026-07-17-8797d866</link>
      <pubDate>Fri, 17 Jul 2026 11:25:43 +0000</pubDate>
      <description><![CDATA[Really appreciate Jeremy's post on the way he used generative AI to solve a problem.
Specifically he considers the options carefully and was able to make use of local hardware (i.e. his laptop) and &quot;ethically&quot; trained model (from Flickr and creative commons licensed images).
Closing with a quote from Scott Jenson, that I can absolutely relate to:

While the utility is there, the current landscape of these frontier corporate models comes with massive ethical and environmental baggage. This is not a long term solution!

Original link: adactio.com/[…]/22657]]></description>
      <content:encoded><![CDATA[
<p>Really appreciate Jeremy's post on the way he used generative AI to solve a problem.</p>
<p>Specifically he considers the options carefully and was able to make use of local hardware (i.e. his laptop) and &quot;ethically&quot; trained model (from Flickr and creative commons licensed images).</p>
<p>Closing with a quote from Scott Jenson, that I can absolutely relate to:</p>
<blockquote>
<p>While the utility is there, the current landscape of these frontier corporate models comes with massive ethical and environmental baggage. This is not a long term solution!</p>
</blockquote>
<p><em>Original link: <a href="https://adactio.com/journal/22657">adactio.com/[…]/22657</a></em></p>
<p><em>Originally published on <a href="https://remysharp.com/links/2026-07-17-8797d866">Remy Sharp's b:log</a></em></p>]]></content:encoded>
    </item>
    <item>
      <title>The infinite scroll may become endangered if controversial Calif. law passes</title>
      <guid isPermaLink="false">2026-07-14-c60c39d6</guid>
      <link>https://remysharp.com/links/2026-07-14-c60c39d6</link>
      <pubDate>Tue, 14 Jul 2026 19:12:57 +0000</pubDate>
      <description><![CDATA[I've been banging on about this for a while now and I absolutely welcome the prospect of this being a reality, and hopefully not just for children. Adults desperately need it too:
Under Assembly Bill 1709 by Democratic Assemblyman Josh Lowenthal, social media companies might soon be forced to remove addictive features.

infinite scroll, auto play, recommended algorithms, and push notifications are product features. They are not speech.

Original link: www.sfgate.com/[…]/meta-social-media-teenagers-22337724.php]]></description>
      <content:encoded><![CDATA[
<p>I've been banging on about this for a while now and I absolutely welcome the prospect of this being a reality, and hopefully not <em>just</em> for children. Adults desperately need it too:</p>
<p>Under Assembly Bill 1709 by Democratic Assemblyman Josh Lowenthal, social media companies might soon be forced to remove addictive features.</p>
<blockquote>
<p>infinite scroll, auto play, recommended algorithms, and push notifications are product features. They are not speech.</p>
</blockquote>
<p><em>Original link: <a href="https://www.sfgate.com/politics/article/meta-social-media-teenagers-22337724.php">www.sfgate.com/[…]/meta-social-media-teenagers-22337724.php</a></em></p>
<p><em>Originally published on <a href="https://remysharp.com/links/2026-07-14-c60c39d6">Remy Sharp's b:log</a></em></p>]]></content:encoded>
    </item>
    <item>
      <title>In defense of polyfills • Lea Verou</title>
      <guid isPermaLink="false">2026-07-14-6ee288d7</guid>
      <link>https://remysharp.com/links/2026-07-14-6ee288d7</link>
      <pubDate>Tue, 14 Jul 2026 12:24:16 +0000</pubDate>
      <description><![CDATA[An excellent post on polyfills, talking through their impact, what issues people (mostly in the standards world) face.
Chock full of quotable lines, way too many to include to do the post any justice, save perhaps Lea's last headline:

Polyfills make the Web faster, inclusive, and more robust

Highly recommend reading for a greater understanding of the role of polyfills on the web.
Original link: lea.verou.me/[…]/polyfills]]></description>
      <content:encoded><![CDATA[
<p>An excellent post on polyfills, talking through their impact, what issues people (mostly in the standards world) face.</p>
<p>Chock full of quotable lines, way too many to include to do the post any justice, save perhaps Lea's last headline:</p>
<blockquote>
<p>Polyfills make the Web faster, inclusive, and more robust</p>
</blockquote>
<p>Highly recommend reading for a greater understanding of the role of polyfills on the web.</p>
<p><em>Original link: <a href="https://lea.verou.me/blog/2026/polyfills/">lea.verou.me/[…]/polyfills</a></em></p>
<p><em>Originally published on <a href="https://remysharp.com/links/2026-07-14-6ee288d7">Remy Sharp's b:log</a></em></p>]]></content:encoded>
    </item>
    <item>
      <title>This was the first commit via an LLM to git</title>
      <guid isPermaLink="false">2026-07-12-4e9c9652</guid>
      <link>https://remysharp.com/links/2026-07-12-4e9c9652</link>
      <pubDate>Sun, 12 Jul 2026 15:44:27 +0000</pubDate>
      <description><![CDATA[TIL: git (the command line tool) now contains LLM generated code (I'm still unsure, we're calling this generative AI, right?). Landed in Jan 2026.
I appreciate there's some folks out there that don't want to touch LLM generated content or have it in your tool chains, I'm just going to assume that's going to be very hard as time goes on.
Though I do also appreciate there are projects working thanklessly to achieve just that.
Original link: github.com/[…]/d7971544fe17378f44f49983010dbfc1834f7bef]]></description>
      <content:encoded><![CDATA[
<p>TIL: git (the command line tool) now contains LLM generated code (I'm still unsure, we're calling this generative AI, right?). Landed in Jan 2026.</p>
<p>I appreciate there's some folks out there that don't want to touch LLM generated content or have it in your tool chains, I'm just going to assume that's going to be very hard as time goes on.</p>
<p>Though I do also appreciate there are projects working thanklessly to achieve <a href="https://git-annex.branchable.com/no_llm_code/">just that</a>.</p>
<p><em>Original link: <a href="https://github.com/git/git/commit/d7971544fe17378f44f49983010dbfc1834f7bef">github.com/[…]/d7971544fe17378f44f49983010dbfc1834f7bef</a></em></p>
<p><em>Originally published on <a href="https://remysharp.com/links/2026-07-12-4e9c9652">Remy Sharp's b:log</a></em></p>]]></content:encoded>
    </item>
    <item>
      <title>AI Content Is Everywhere on Social Media, Especially LinkedIn</title>
      <guid isPermaLink="false">2026-07-09-9fd775a9</guid>
      <link>https://remysharp.com/links/2026-07-09-9fd775a9</link>
      <pubDate>Thu, 09 Jul 2026 16:54:07 +0000</pubDate>
      <description><![CDATA[When I think of AI slop, as a developer working on or around the web, I tend to think of dev-centric content, such as blog posts or even software (a lot of the community I'm connected to will call software slop).
Still, it's useful to be reminded that AI generated content is much, much farther reaching.
This project used a Chrome extension (with paid users, from what I could test) and collected a tonne of data and shows for products like LinkedIn, Medium and Twitter, it's anything from 30-50% of AI slop.
Lots of easy to scan charts.
I tend to only use LinkedIn to post about FFConf, then I immediately leave, and I use Reddit for either Gameboy or Home Assistant content, so I'm not really coming across this kind of content myself (or that I've noticed).
Original link: www.pangram.com/[…]/ai-in-your-feed]]></description>
      <content:encoded><![CDATA[
<p>When I think of AI slop, as a developer working on or around the web, I tend to think of dev-centric content, such as blog posts or even software (a lot of the community I'm connected to will call software slop).</p>
<p>Still, it's useful to be reminded that AI generated content is much, much farther reaching.</p>
<p>This project used a Chrome extension (with paid users, from what I could test) and collected a tonne of data and shows for products like LinkedIn, Medium and Twitter, it's anything from 30-50% of AI slop.</p>
<p>Lots of easy to scan charts.</p>
<p>I tend to only use LinkedIn to post about FFConf, then I immediately leave, and I use Reddit for either Gameboy or Home Assistant content, so I'm not really coming across this kind of content myself (or that I've noticed).</p>
<p><em>Original link: <a href="https://www.pangram.com/blog/ai-in-your-feed">www.pangram.com/[…]/ai-in-your-feed</a></em></p>
<p><em>Originally published on <a href="https://remysharp.com/links/2026-07-09-9fd775a9">Remy Sharp's b:log</a></em></p>]]></content:encoded>
    </item>
    <item>
      <title>Web Platform Wishlist on Vale.Rocks</title>
      <guid isPermaLink="false">2026-07-09-221b1dd2</guid>
      <link>https://remysharp.com/links/2026-07-09-221b1dd2</link>
      <pubDate>Thu, 09 Jul 2026 08:41:02 +0000</pubDate>
      <description><![CDATA[I remember the days I was hungry for features on the web…it was…a long time ago! So it's refreshing to read that others still have ideas and want more.
I especially like these two from the post:

Text overflow truncation from centre…

And:

More pseudo-classes. :sticky for if an element is currently sticky, :overflow for if overflowing, etc

Which falls consistently into the category of &quot;JavaScript is used to do this, it shouldn't need to&quot;.
Original link: vale.rocks/[…]/web-platform-wishlist]]></description>
      <content:encoded><![CDATA[
<p>I remember the days I was hungry for features on the web…it was…a long time ago! So it's refreshing to read that others still have ideas and want more.</p>
<p>I especially like these two from the post:</p>
<blockquote>
<p>Text overflow truncation from centre…</p>
</blockquote>
<p>And:</p>
<blockquote>
<p>More pseudo-classes. :sticky for if an element is currently sticky, :overflow for if overflowing, etc</p>
</blockquote>
<p>Which falls consistently into the category of &quot;JavaScript is used to do this, it shouldn't need to&quot;.</p>
<p><em>Original link: <a href="https://vale.rocks/posts/web-platform-wishlist">vale.rocks/[…]/web-platform-wishlist</a></em></p>
<p><em>Originally published on <a href="https://remysharp.com/links/2026-07-09-221b1dd2">Remy Sharp's b:log</a></em></p>]]></content:encoded>
    </item>
    <item>
      <title>querySelector immediate children with :scope</title>
      <guid isPermaLink="false">2026-07-08-05cd4aed</guid>
      <link>https://remysharp.com/links/2026-07-08-05cd4aed</link>
      <pubDate>Wed, 08 Jul 2026 20:23:59 +0000</pubDate>
      <description><![CDATA[Came across this nice little TIL in the qSA API:

parentNode.querySelectorAll('&gt; *') you get an error: '&gt; *' is not a valid selector.. That doesn't work...

Using :scope first fixes the &quot;missing scope&quot;.
Original link: siderite.dev/[…]/queryselector-immediate-children-with-scope]]></description>
      <content:encoded><![CDATA[
<p>Came across this nice little TIL in the qSA API:</p>
<blockquote>
<p>parentNode.querySelectorAll('&gt; *') you get an error: '&gt; *' is not a valid selector.. That doesn't work...</p>
</blockquote>
<p>Using <code>:scope</code> first fixes the &quot;missing scope&quot;.</p>
<p><em>Original link: <a href="https://siderite.dev/blog/queryselector-immediate-children-with-scope/">siderite.dev/[…]/queryselector-immediate-children-with-scope</a></em></p>
<p><em>Originally published on <a href="https://remysharp.com/links/2026-07-08-05cd4aed">Remy Sharp's b:log</a></em></p>]]></content:encoded>
    </item>
    <item>
      <title>Why we moved our Bluesky data to Eurosky</title>
      <guid isPermaLink="false">2026-07-01-8272e198</guid>
      <link>https://remysharp.com/links/2026-07-01-8272e198</link>
      <pubDate>Wed, 01 Jul 2026 20:15:32 +0000</pubDate>
      <description><![CDATA[As I've been seeing more and more posts about PDS and things like &quot;lexicons&quot; such as standard.site, I've been thinking more about how Bluesky is the main hub of all our our social data (for those left twitter and of course putting aside Mastodon for a moment).
This post gives a good high level overview of my own concerns about Bluesky being that hub, and though the post doesn't explain how they moved to Eurosky (and funnily enough then link to follow them on Bluesky) - it tries to demonstrate that it is possible to move data around.
I wonder how far we are from being able to self host and connect into the network to disseminate (I think this is the &quot;relay&quot; and I'm fairly sure this is far from trivial for a self-host job).
Still, one I'm keeping my eye on.
Source: waag.org]]></description>
      <content:encoded><![CDATA[
<p>As I've been seeing more and more posts about PDS and things like &quot;lexicons&quot; such as standard.site, I've been thinking more about how Bluesky is the main hub of all our our social data (for those left twitter and of course putting aside Mastodon for a moment).</p>
<p>This post gives a good high level overview of my own concerns about Bluesky being that hub, and though the post doesn't explain <em>how</em> they moved to Eurosky (and funnily enough then link to follow them on Bluesky) - it tries to demonstrate that it <em>is</em> possible to move data around.</p>
<p>I wonder how far we are from being able to self host and connect into the network to disseminate (I <em>think</em> this is the &quot;relay&quot; and I'm fairly sure this is far from trivial for a self-host job).</p>
<p>Still, one I'm keeping my eye on.</p>
<p><em>Source: <a href="https://waag.org/en/article/why-we-moved-our-bluesky-data-eurosky/">waag.org</a></em></p>
<p><em>Originally published on <a href="https://remysharp.com/links/2026-07-01-8272e198">Remy Sharp's b:log</a></em></p>]]></content:encoded>
    </item>
    <item>
      <title>Under the hood of MDN's new frontend</title>
      <guid isPermaLink="false">2026-06-30-99723827</guid>
      <link>https://remysharp.com/links/2026-06-30-99723827</link>
      <pubDate>Tue, 30 Jun 2026 14:04:43 +0000</pubDate>
      <description><![CDATA[A long article (23 min read!) on the rebuild of MDN away from React and into Web Components.
There's lots in there, but I particularly like the section starting Web Components that writes about how they're progressively enhancing and how there's thought to the components (such as their mdn-dropdown styles).
I also really like this pattern where modules are auto-loaded and it's easy to switch JS enabled modules off for testing:
for (const element of document.querySelectorAll(&quot;*&quot;)) {
  const tag = element.tagName.toLowerCase();
  if (tag.startsWith(&quot;mdn-&quot;)) {
    const component = tag.replace(&quot;mdn-&quot;, &quot;&quot;);
    import(`../components/${component}/element.js`);
  }
}

Source: developer.mozilla.org]]></description>
      <content:encoded><![CDATA[
<p>A long article (23 min read!) on the rebuild of MDN away from React and into Web Components.</p>
<p>There's lots in there, but I particularly like the section starting Web Components that writes about how they're progressively enhancing and how there's thought to the components (such as their <code>mdn-dropdown</code> styles).</p>
<p>I also really like this pattern where modules are auto-loaded and it's easy to switch JS enabled modules off for testing:</p>
<pre><code>for (const element of document.querySelectorAll(&quot;*&quot;)) {
  const tag = element.tagName.toLowerCase();
  if (tag.startsWith(&quot;mdn-&quot;)) {
    const component = tag.replace(&quot;mdn-&quot;, &quot;&quot;);
    import(`../components/${component}/element.js`);
  }
}
</code></pre>
<p><em>Source: <a href="https://developer.mozilla.org/en-US/blog/mdn-front-end-deep-dive/">developer.mozilla.org</a></em></p>
<p><em>Originally published on <a href="https://remysharp.com/links/2026-06-30-99723827">Remy Sharp's b:log</a></em></p>]]></content:encoded>
    </item>
    <item>
      <title>Accessible (I Think) Split-Cell Table Headers by Eric Archived Thoughts</title>
      <guid isPermaLink="false">2026-06-22-4f7168d2</guid>
      <link>https://remysharp.com/links/2026-06-22-4f7168d2</link>
      <pubDate>Mon, 22 Jun 2026 16:24:15 +0000</pubDate>
      <description><![CDATA[This really isn't the intended take away from Eric's post (which is worth reading), but I needed a CSS rule that targetting Safari (because their support is weird):
/* this is gross and I hate it but it works to fix 
   Safari’s layout of the table’s top headers */
@supports (font: -apple-system-body)

Gross, and horrible, but 🙏
Source: meyerweb.com]]></description>
      <content:encoded><![CDATA[
<p>This really isn't the intended take away from Eric's post (which is worth reading), but I needed a CSS rule that targetting Safari (because their support is weird):</p>
<pre><code class="language-css"><span class="token comment">/* this is gross and I hate it but it works to fix 
   Safari’s layout of the table’s top headers */</span>
@supports <span class="token punctuation">(</span><span class="token property">font</span><span class="token punctuation">:</span> -apple-system-body<span class="token punctuation">)</span>
</code></pre>
<p>Gross, and horrible, but 🙏</p>
<p><em>Source: <a href="https://meyerweb.com/eric/thoughts/2026/05/28/accessible-i-think-split-cell-table-headers/">meyerweb.com</a></em></p>
<p><em>Originally published on <a href="https://remysharp.com/links/2026-06-22-4f7168d2">Remy Sharp's b:log</a></em></p>]]></content:encoded>
    </item>
    <item>
      <title>prop-for-that: CSS reacts, JS just listens</title>
      <guid isPermaLink="false">2026-06-19-e5b6847a</guid>
      <link>https://remysharp.com/links/2026-06-19-e5b6847a</link>
      <pubDate>Fri, 19 Jun 2026 15:51:12 +0000</pubDate>
      <description><![CDATA[This is neat. Effectively injecting a tonne of JavaScript based sensors into the elements that ask for the particular category via data-props-for, such as:
&lt;div id="meter" data-props-for="range">
  &lt;input type="range" min="0" max="100" value="42">
&lt;/div>

With CSS like:
@container style(--live-value: 100) {
  .gauge__num { color: var(--max-tint); }
  .gauge__flag::after { content: 'max'; }
}

Lots of useful categories too.
Source: prop-for-that.netlify.app]]></description>
      <content:encoded><![CDATA[
<p>This is neat. Effectively injecting a tonne of JavaScript based sensors into the elements that ask for the particular category via <code>data-props-for</code>, such as:</p>
<pre><code class="language-html"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>meter<span class="token punctuation">"</span></span> <span class="token attr-name">data-props-for</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>range<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>input</span> <span class="token attr-name">type</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>range<span class="token punctuation">"</span></span> <span class="token attr-name">min</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>0<span class="token punctuation">"</span></span> <span class="token attr-name">max</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>100<span class="token punctuation">"</span></span> <span class="token attr-name">value</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>42<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>div</span><span class="token punctuation">></span></span>
</code></pre>
<p>With CSS like:</p>
<pre><code class="language-css"><span class="token atrule"><span class="token rule">@container</span> <span class="token function">style</span><span class="token punctuation">(</span><span class="token property">--live-value</span><span class="token punctuation">:</span> 100<span class="token punctuation">)</span></span> <span class="token punctuation">{</span>
  <span class="token selector">.gauge__num</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>--max-tint<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span>
  <span class="token selector">.gauge__flag::after</span> <span class="token punctuation">{</span> <span class="token property">content</span><span class="token punctuation">:</span> <span class="token string">'max'</span><span class="token punctuation">;</span> <span class="token punctuation">}</span>
<span class="token punctuation">}</span>
</code></pre>
<p>Lots of useful categories too.</p>
<p><em>Source: <a href="https://prop-for-that.netlify.app/">prop-for-that.netlify.app</a></em></p>
<p><em>Originally published on <a href="https://remysharp.com/links/2026-06-19-e5b6847a">Remy Sharp's b:log</a></em></p>]]></content:encoded>
    </item>
    <item>
      <title>A bouncer in your pocket by Sacha Judd</title>
      <guid isPermaLink="false">2026-06-19-efb870ce</guid>
      <link>https://remysharp.com/links/2026-06-19-efb870ce</link>
      <pubDate>Fri, 19 Jun 2026 10:29:59 +0000</pubDate>
      <description><![CDATA[Sacha has an in depth analysis of the UK's recent announcements around social media websites and children's access to them.
I wanted to pull a few quotes:

The Internet Watch Foundation reported that child sexual extortion cases in the UK rose 72% in a single year — criminals tricking young people into sending nude images, then blackmailing them. In 97% of those cases, the victims are boys.

Sacha also spots this:

Buried in the coverage is the acknowledgement that all adults will need to verify their age if they want to take or view nude images on their own devices. [...] You’ll have to prove you’re an adult to own and use a phone.

On one hand, to own a phone requires (since the availability of mobile phones) proof of being an adult, because to get a contract of any sort you had to have a bank account. This obviously changes with &quot;burner&quot; phones (a £10 job from ASDA) and a PAYG sim.
On the other hand, who am I proving I'm an adult to - which walks a weird line of privacy invasion.
Quoted within Sacha's article is Signal's response, and exactly what I was thinking when I saw the announcement too: isn't this at odds with the UK wanting to take some kind of lead in international AI?

Child safety looks like well-funded education, robust social services, and meaningful guardrails on the very AI technologies and platforms the current government is eagerly courting.

An excellent post well worth the review, regardless of parent status, it's going to affect us all.
Source: newsletter.sachajudd.com]]></description>
      <content:encoded><![CDATA[
<p>Sacha has an in depth analysis of the UK's recent announcements around social media websites and children's access to them.</p>
<p>I wanted to pull a few quotes:</p>
<blockquote>
<p>The Internet Watch Foundation reported that child sexual extortion cases in the UK rose 72% in a single year — criminals tricking young people into sending nude images, then blackmailing them. In 97% of those cases, the victims are boys.</p>
</blockquote>
<p>Sacha also spots this:</p>
<blockquote>
<p>Buried in the coverage is the acknowledgement that all adults will need to verify their age if they want to take or view nude images on their own devices. [...] You’ll have to prove you’re an adult to own and use a phone.</p>
</blockquote>
<p>On one hand, to own a phone requires (since the availability of mobile phones) proof of being an adult, because to get a contract of any sort you had to have a bank account. This obviously changes with &quot;burner&quot; phones (a £10 job from ASDA) and a PAYG sim.</p>
<p>On the other hand, <em>who</em> am I proving I'm an adult to - which walks a weird line of privacy invasion.</p>
<p>Quoted within Sacha's article is Signal's response, and exactly what I was thinking when I saw the announcement too: isn't this at odds with the UK wanting to take some kind of lead in international AI?</p>
<blockquote>
<p>Child safety looks like well-funded education, robust social services, and meaningful guardrails on the very AI technologies and platforms the current government is eagerly courting.</p>
</blockquote>
<p>An excellent post well worth the review, regardless of parent status, it's going to affect us all.</p>
<p><em>Source: <a href="https://newsletter.sachajudd.com/archive/a-bouncer-in-your-pocket/">newsletter.sachajudd.com</a></em></p>
<p><em>Originally published on <a href="https://remysharp.com/links/2026-06-19-efb870ce">Remy Sharp's b:log</a></em></p>]]></content:encoded>
    </item>
    <item>
      <title>Enhancing with CSS Grid Lanes</title>
      <guid isPermaLink="false">2026-06-16-e496d97b</guid>
      <link>https://remysharp.com/links/2026-06-16-e496d97b</link>
      <pubDate>Tue, 16 Jun 2026 14:46:39 +0000</pubDate>
      <description><![CDATA[I've been catching CSS Grid Lanes in the socials this week, but somehow had it in my head that it was to do with the gaps (the lanes) between the grid.
It's not, it's masonry (which, why not display: masonry 🤷
There's a also a decent (albeit stiff) video on how it works.
TL;DR: mostly you can swap display: grid for display: grid-lanes (but Jeremy goes further to actually add the CSS support check first).
Source: adactio.com]]></description>
      <content:encoded><![CDATA[
<p>I've been catching CSS Grid Lanes in the socials this week, but somehow had it in my head that it was to do with the gaps (the lanes) between the grid.</p>
<p>It's not, it's masonry (which, why not <code>display: masonry</code> 🤷</p>
<p>There's a also a <a href="https://www.youtube.com/watch?v=NDwoB2PpwgY">decent (albeit stiff) video</a> on how it works.</p>
<p>TL;DR: mostly you can swap <code>display: grid</code> for <code>display: grid-lanes</code> (but Jeremy goes further to actually add the CSS support check first).</p>
<p><em>Source: <a href="https://adactio.com/journal/22613">adactio.com</a></em></p>
<p><em>Originally published on <a href="https://remysharp.com/links/2026-06-16-e496d97b">Remy Sharp's b:log</a></em></p>]]></content:encoded>
    </item>
    <item>
      <title>Social media to be banned for under-16s in landmark government move to give kids their childhood back - GOV.UK</title>
      <guid isPermaLink="false">2026-06-15-e715aced</guid>
      <link>https://remysharp.com/links/2026-06-15-e715aced</link>
      <pubDate>Mon, 15 Jun 2026 09:08:31 +0000</pubDate>
      <description><![CDATA[The UK government has announced they're going ahead with a social media ban for 16 year old and under.
In our household we've already had this restriction in place (at a network/DNS level) so it doesn't impact our kids experiences at all, but I do know from talking to the kids that the do wish their friends had it too. I would add that I'm in no doubt that kids will find work arounds, but the larger effect of this, I think, is important.
A few quotes that interest me from the GOV.UK news post:

The ban will therefore include platforms like Snapchat, TikTok, YouTube, Instagram, Facebook and X. We do not intend for messaging services like WhatsApp and Signal to be included in the social media ban

I'm assuming that &quot;like&quot; refers to the user-to-user definition, and I'd expect or hope to see pretty clear definitions (though the government doesn't particularly have a track record on clear definitions).

The government will also be looking in more detail at overnight curfews and breaks in infinite scrolling for under-18-year-olds and will set out more detail in July.

In particular the breaks in infinite scrolling - though I've been personally arguing that it could be banned altogether - the only function it serves from a UX perspective is &quot;stickiness&quot; aka - addition.
I'm sceptical about the implementation rules and I'm particularly worried about how the government goes about setting the definitions of what products will need to do.
Source: www.gov.uk]]></description>
      <content:encoded><![CDATA[
<p>The UK government has announced they're going ahead with a social media ban for 16 year old and under.</p>
<p>In our household we've already had this restriction in place (at a network/DNS level) so it doesn't impact our kids experiences at all, but I do know from talking to the kids that the do wish their friends had it too. I would add that I'm in no doubt that kids will find work arounds, but the larger effect of this, I think, is important.</p>
<p>A few quotes that interest me from the <a href="http://GOV.UK">GOV.UK</a> news post:</p>
<blockquote>
<p>The ban will therefore include platforms like Snapchat, TikTok, YouTube, Instagram, Facebook and X. We do not intend for messaging services like WhatsApp and Signal to be included in the social media ban</p>
</blockquote>
<p>I'm assuming that <em>&quot;like&quot;</em> refers to the user-to-user definition, and I'd expect or hope to see pretty clear definitions (though the government doesn't particularly have a track record on clear definitions).</p>
<blockquote>
<p>The government will also be looking in more detail at overnight curfews and breaks in infinite scrolling for under-18-year-olds and will set out more detail in July.</p>
</blockquote>
<p>In particular the breaks in infinite scrolling - though I've been personally arguing that it could be banned altogether - the only function it serves from a UX perspective is &quot;stickiness&quot; aka - addition.</p>
<p>I'm sceptical about the implementation rules and I'm particularly worried about how the government goes about setting the definitions of what products will need to do.</p>
<p><em>Source: <a href="https://www.gov.uk/government/news/social-media-to-be-banned-for-under-16s-in-landmark-government-move-to-givekids-their-childhood-back">www.gov.uk</a></em></p>
<p><em>Originally published on <a href="https://remysharp.com/links/2026-06-15-e715aced">Remy Sharp's b:log</a></em></p>]]></content:encoded>
    </item>
    <item>
      <title>AI designed pages and prompts</title>
      <guid isPermaLink="false">2026-06-12-eb25c11f</guid>
      <link>https://remysharp.com/links/2026-06-12-eb25c11f</link>
      <pubDate>Fri, 12 Jun 2026 17:02:07 +0000</pubDate>
      <description><![CDATA[Based on the output of this article the author has styled their project with different AI prompts.
I think what I find interesting here is after the jQuery mobile themes and especially Bootstrap you come to just visually adapt the most common style.
What this author has done is asked for the design systems of existing software to be adopted into the code.
What frustrates me a little bit is that I actually like the &quot;Original&quot; style, which is what AI is pumping out at the moment, as what I see all the time, which just says that I'm not very original…
Source: envs.net]]></description>
      <content:encoded><![CDATA[
<p>Based on the output of <a href="https://envs.net/~volpe/blog/posts/reduce-slop.html">this article</a> the author has styled their project with different AI prompts.</p>
<p>I think what I find interesting here is after the jQuery mobile themes and especially Bootstrap you come to just visually adapt the most common style.</p>
<p>What this author has done is asked for the design systems of existing software to be adopted into the code.</p>
<p>What frustrates me a little bit is that I actually like the &quot;Original&quot; style, which is what AI is pumping out at the moment, as what I see all the time, which just says that I'm not very original…</p>
<p><em>Source: <a href="https://envs.net/~volpe/projects/ai-design.html">envs.net</a></em></p>
<p><em>Originally published on <a href="https://remysharp.com/links/2026-06-12-eb25c11f">Remy Sharp's b:log</a></em></p>]]></content:encoded>
    </item>
    <item>
      <title>The “Nude” Ultimatum: Privacy Is Dead - The Unknown Universe</title>
      <guid isPermaLink="false">2026-06-12-74cd263b</guid>
      <link>https://remysharp.com/links/2026-06-12-74cd263b</link>
      <pubDate>Fri, 12 Jun 2026 15:13:51 +0000</pubDate>
      <description><![CDATA[The UK government's ultimatum to Apple and Google is a blueprint for mass surveillance. A warning on why &quot;nothing to hide&quot; won't protect your digital freedom.
...
We're being steered toward a future where &quot;safety&quot; is just a euphemism for &quot;unrestricted access.&quot;

If I had read this a few years ago, I'd assume it was the plot for some dystopian novel, but no, it's reality today under (what was supposed to be) the progressive government - not even the Tories.
As per the author, I don't expect any of the Big Tech to do anything about it if it means it affects their share of the gold.
I guess I'll be looking around for alternatives soon enough too (and then for the kids, and the extended family). Yay.
Source: the.unknown-universe.co.uk]]></description>
      <content:encoded><![CDATA[
<blockquote>
<p>The UK government's ultimatum to Apple and Google is a blueprint for mass surveillance. A warning on why &quot;nothing to hide&quot; won't protect your digital freedom.</p>
<p>...</p>
<p>We're being steered toward a future where &quot;safety&quot; is just a euphemism for &quot;unrestricted access.&quot;</p>
</blockquote>
<p>If I had read this a few years ago, I'd assume it was the plot for some dystopian novel, but no, it's reality today under (what was supposed to be) the progressive government - not even the Tories.</p>
<p>As per the author, I don't expect any of the Big Tech to do anything about it if it means it affects their share of the gold.</p>
<p>I guess I'll be looking around for alternatives soon enough too (and then for the kids, and the extended family). Yay.</p>
<p><em>Source: <a href="https://the.unknown-universe.co.uk/privacy-security/the-ultimatum/">the.unknown-universe.co.uk</a></em></p>
<p><em>Originally published on <a href="https://remysharp.com/links/2026-06-12-74cd263b">Remy Sharp's b:log</a></em></p>]]></content:encoded>
    </item>
    <item>
      <title>More molly guards</title>
      <guid isPermaLink="false">2026-06-10-9c0e1c9b</guid>
      <link>https://remysharp.com/links/2026-06-10-9c0e1c9b</link>
      <pubDate>Wed, 10 Jun 2026 20:12:49 +0000</pubDate>
      <description><![CDATA[I love these little deep dives into bits of UX that we take for granted. Admittedly I think extending the idea of a Molly Guard to a &quot;Are you sure&quot; prompt is a bit of stretch, but it's a cute story either way.
This is the extension of a previous post, Molly Guard in reverse which introduces the molly guard with:

…the little plastic safety cover you have to move out of the way before you press some button of significance.
Anecdotally, this is named after Molly, an engineer’s daughter who was invited to a datacenter and promptly pressed a big red button, as one would.
Then she did it again later the same day.

Love it.
But what's more to love about this particular post, is that Marcin found the actual Molly with her dad!
Source: unsung.aresluna.org]]></description>
      <content:encoded><![CDATA[
<p>I love these little deep dives into bits of UX that we take for granted. Admittedly I think extending the idea of a Molly Guard to a &quot;Are you sure&quot; prompt is a bit of stretch, but it's a cute story either way.</p>
<p>This is the extension of a previous post, <a href="https://unsung.aresluna.org/molly-guard-in-reverse/">Molly Guard in reverse</a> which introduces the molly guard with:</p>
<blockquote>
<p>…the little plastic safety cover you have to move out of the way before you press some button of significance.</p>
<p>Anecdotally, this is named after Molly, an engineer’s daughter who was invited to a datacenter and promptly pressed a big red button, as one would.</p>
<p>Then she did it again later the same day.</p>
</blockquote>
<p>Love it.</p>
<p>But what's more to love about this particular post, is that Marcin found the <em>actual</em> Molly with her dad!</p>
<p><em>Source: <a href="https://unsung.aresluna.org/more-molly-guards/">unsung.aresluna.org</a></em></p>
<p><em>Originally published on <a href="https://remysharp.com/links/2026-06-10-9c0e1c9b">Remy Sharp's b:log</a></em></p>]]></content:encoded>
    </item>
    <item>
      <title>Landmark German ruling declares Google's AI Overviews are Google's own words and makes it liable for false answers</title>
      <guid isPermaLink="false">2026-06-10-f4446f0b</guid>
      <link>https://remysharp.com/links/2026-06-10-f4446f0b</link>
      <pubDate>Wed, 10 Jun 2026 10:34:26 +0000</pubDate>
      <description><![CDATA[The &quot;AI overview&quot; is its own content, not just a list of search results.

This is really interesting and I would love to see this set the tone for other countries (::cough UK::).

If enough of that wrong content defames companies or individuals, it could become a serious legal problem not just for Google but for other providers of similar services like ChatGPT, Claude, or Perplexity.

Big Tech helped themselves to our content. The content bloggers put out on the web was always intended to be consumed freely, but it we didn't agree that you (Big Tech) could use it for massive profits without the least bit of credit (let alone royalties for the content being used).
The big AI companies have harvested and thrown the web into their models without moderation causing all kinds of real-world harm, so this looks to be a positive step to forcing them to take some real responsibility.
Source: the-decoder.com]]></description>
      <content:encoded><![CDATA[
<blockquote>
<p>The &quot;AI overview&quot; is its own content, not just a list of search results.</p>
</blockquote>
<p>This is really interesting and I would love to see this set the tone for other countries (::cough UK::).</p>
<blockquote>
<p>If enough of that wrong content defames companies or individuals, it could become a serious legal problem not just for Google but for other providers of similar services like ChatGPT, Claude, or Perplexity.</p>
</blockquote>
<p>Big Tech helped themselves to our content. The content bloggers put out on the web was always intended to be consumed freely, but it we didn't agree that you (Big Tech) could use it for massive profits without the least bit of credit (let alone royalties for the content being used).</p>
<p>The big AI companies have harvested and thrown the web into their models without moderation causing all kinds of real-world harm, so this looks to be a positive step to forcing them to take some real responsibility.</p>
<p><em>Source: <a href="https://the-decoder.com/landmark-german-ruling-declares-googles-ai-overviews-are-googles-own-words-and-makes-it-liable-for-false-answers/">the-decoder.com</a></em></p>
<p><em>Originally published on <a href="https://remysharp.com/links/2026-06-10-f4446f0b">Remy Sharp's b:log</a></em></p>]]></content:encoded>
    </item>
    <item>
      <title>No, Artificial Intelligence Is Not Conscious - Ted Chiang</title>
      <guid isPermaLink="false">2026-06-05-ee9041b8</guid>
      <link>https://remysharp.com/links/2026-06-05-ee9041b8</link>
      <pubDate>Fri, 05 Jun 2026 14:52:31 +0000</pubDate>
      <description><![CDATA[I didn't really need to read much past the title or subtitle, but it's still an excellent essay that does a good job of drawing comparisons to concepts we already understand, for example:

The term deepfake traditionally refers to photos, audio, and video, but when it comes to discussions of consciousness, we need to regard text as a deepfake medium as well.

This does remind me of the story of ELIZA and Joseph Weizenbaum, which people quickly attributed intelligence to the bot. With 6 months of ELIZA's debut (in 1966), he warned loudly and publicly about the perils of anthropomorphism. He continued this campaign until his death in 2008. Yet, here we are again.
Source: www.theatlantic.com]]></description>
      <content:encoded><![CDATA[
<p>I didn't really need to read much past the title or subtitle, but it's still an excellent essay that does a good job of drawing comparisons to concepts we already understand, for example:</p>
<blockquote>
<p>The term deepfake traditionally refers to photos, audio, and video, but when it comes to discussions of consciousness, we need to regard text as a deepfake medium as well.</p>
</blockquote>
<p>This does remind me of the story of ELIZA and Joseph Weizenbaum, which people quickly attributed intelligence to the bot. With 6 months of ELIZA's debut (in 1966), he warned loudly and publicly about the perils of anthropomorphism. He continued this campaign until his death in 2008. Yet, here we are again.</p>
<p><em>Source: <a href="https://www.theatlantic.com/philosophy/2026/06/no-artificial-intelligence-is-not-conscious/687378/?gift=R2zbWGNBDp_xHqoa7Q8ZRp-EV6jGaHiamQBxQQlMJqI">www.theatlantic.com</a></em></p>
<p><em>Originally published on <a href="https://remysharp.com/links/2026-06-05-ee9041b8">Remy Sharp's b:log</a></em></p>]]></content:encoded>
    </item>
    <item>
      <title>Are you standard.site?</title>
      <guid isPermaLink="false">2026-06-05-a88bc26b</guid>
      <link>https://remysharp.com/links/2026-06-05-a88bc26b</link>
      <pubDate>Fri, 05 Jun 2026 14:45:23 +0000</pubDate>
      <description><![CDATA[Another (shorter) entry in how how devs are adding Standard.site to their web sites to enrich the social cards.I suspect we'll start to gravitat towards tools to help us to add these - which is what it looks like David is doing.Though I'm a little wary of how BIG the card image is on top of the extra UI that shows the dates, buttons and so on. Given how large I have my font these days, it could easily become a wall just a couple of these.
Source: dbushell.com]]></description>
      <content:encoded><![CDATA[
<p>Another (shorter) entry in how how devs are adding Standard.site to their web sites to enrich the social cards.I suspect we'll start to gravitat towards tools to help us to add these - which is what it looks like David is doing.Though I'm a little wary of how BIG the card image is on top of the extra UI that shows the dates, buttons and so on. Given how large I have my font these days, it could easily become a wall just a couple of these.</p>
<p><em>Source: <a href="https://dbushell.com/2026/06/05/are-you-standard-site/">dbushell.com</a></em></p>
<p><em>Originally published on <a href="https://remysharp.com/links/2026-06-05-a88bc26b">Remy Sharp's b:log</a></em></p>]]></content:encoded>
    </item>
    <item>
      <title>NES Programming in 6502 Assembly</title>
      <guid isPermaLink="false">2026-05-13-7746ef1b</guid>
      <link>https://remysharp.com/links/2026-05-13-7746ef1b</link>
      <pubDate>Wed, 13 May 2026 09:44:25 +0000</pubDate>
      <description><![CDATA[Source: pikuma.com]]></description>
      <content:encoded><![CDATA[
<p><em>Source: <a href="https://pikuma.com/courses/nes-game-programming-tutorial">pikuma.com</a></em></p>
<p><em>Originally published on <a href="https://remysharp.com/links/2026-05-13-7746ef1b">Remy Sharp's b:log</a></em></p>]]></content:encoded>
    </item>
    <item>
      <title>Try text scaling support</title>
      <guid isPermaLink="false">2026-02-03-d5be6744</guid>
      <link>https://remysharp.com/links/2026-02-03-d5be6744</link>
      <pubDate>Tue, 03 Feb 2026 11:01:24 +0000</pubDate>
      <description><![CDATA[I've had a larger phone because I got fed up with squinting at my screen, but because of that I also have the OS level font bumped to 115% (and I know Jule, my wife, has it bumped to 125%). This meta tag will use the system font size to adjust the font. Importantly, Josh also points out that the default font size shouldn't be touched: Source: www.joshtumath.uk#heading-tip-1:-don't-override-the-initial-font-size /By Josh Tumath, via Jeremy Keith]]></description>
      <content:encoded><![CDATA[
<p>I've had a larger phone because I got fed up with squinting at my screen, but because of that I also have the OS level font bumped to 115% (and I know Jule, my wife, has it bumped to 125%). This meta tag will use the system font size to adjust the font. Importantly, Josh also points out that the default font size shouldn't be touched: <em>Source: <a href="https://www.joshtumath.uk/posts/2026-01-27-try-text-scaling-support-in-chrome-canary/">www.joshtumath.uk</a></em>#heading-tip-1:-don't-override-the-initial-font-size /By Josh Tumath, via Jeremy Keith</p>
<p><em>Originally published on <a href="https://remysharp.com/links/2026-02-03-d5be6744">Remy Sharp's b:log</a></em></p>]]></content:encoded>
    </item>
    <item>
      <title>Building an AI Sandbox with Docker</title>
      <guid isPermaLink="false">2025-11-12-dac6ad4b</guid>
      <link>https://remysharp.com/links/2025-11-12-dac6ad4b</link>
      <pubDate>Wed, 12 Nov 2025 14:08:00 +0000</pubDate>
      <description><![CDATA[As I think about how command line AI tools can be used, I know it's already a bit of the wild west not disimilar to the way we install npm modules. I've seen a bit of writing about how these tools should be run in a controlled sandbox (because they can mess with the surroudning environment), and this is a nice digestable post with working examplse of Dockerfiles.
Source: thingsithinkithink.blog]]></description>
      <content:encoded><![CDATA[
<p>As I think about how command line AI tools can be used, I know it's already a bit of the wild west not disimilar to the way we install npm modules. I've seen a bit of writing about how these tools should be run in a controlled sandbox (because they can mess with the surroudning environment), and this is a nice digestable post with working examplse of Dockerfiles.</p>
<p><em>Source: <a href="https://thingsithinkithink.blog/posts/2025/11-11-building-an-ai-sandbox-with-docker/">thingsithinkithink.blog</a></em></p>
<p><em>Originally published on <a href="https://remysharp.com/links/2025-11-12-dac6ad4b">Remy Sharp's b:log</a></em></p>]]></content:encoded>
    </item>
    <item>
      <title>Automerge</title>
      <guid isPermaLink="false">2025-11-04-aeb3d7b3</guid>
      <link>https://remysharp.com/links/2025-11-04-aeb3d7b3</link>
      <pubDate>Tue, 04 Nov 2025 12:47:22 +0000</pubDate>
      <description><![CDATA[Version control for your data: Automerge is a local-first sync engine for multiplayer apps that works offline, prevents conflicts, and runs fast. Interesting project, possibly for mini personal projects that want to share some data (possibly without a database? unsure). But also in some kind of collaborative code editor, ala codecasting from JS Bin old days. Beautifully designed landing page though.
Source: automerge.org]]></description>
      <content:encoded><![CDATA[
<p>Version control for your data: Automerge is a local-first sync engine for multiplayer apps that works offline, prevents conflicts, and runs fast. Interesting project, possibly for mini personal projects that want to share some data (possibly without a database? unsure). But also in some kind of collaborative code editor, ala codecasting from JS Bin old days. Beautifully designed landing page though.</p>
<p><em>Source: <a href="https://automerge.org/">automerge.org</a></em></p>
<p><em>Originally published on <a href="https://remysharp.com/links/2025-11-04-aeb3d7b3">Remy Sharp's b:log</a></em></p>]]></content:encoded>
    </item>
    <item>
      <title>What Happened to Apple's Legendary Attention to Detail?</title>
      <guid isPermaLink="false">2025-10-23-d9bf3277</guid>
      <link>https://remysharp.com/links/2025-10-23-d9bf3277</link>
      <pubDate>Thu, 23 Oct 2025 10:33:22 +0000</pubDate>
      <description><![CDATA[I accidentally upgraded to Tahoe (I didn't know it existed and thought I was moving to Sequoia and the UI design is all over the place, and it's constantly reminding me how bad it is. This excellent article takes what was an attention to detail that we took for granted (because tech is supposed to &quot;just work&quot;), and calls out just a handful of the failings that Apple's OS now ships with (including on iOS, that I thankfully don't have to suffer). My fear, based on experience with bad Apple UI - (like the notifications that couldn't be quickly dismissed forcing us to click EXACTLY in the right place, and with the &quot;suitable&quot; amount of delay) - is that it simply won't be fixed or even improved. /via venerable Bruce Lawson
Source: blog.johnozbay.com]]></description>
      <content:encoded><![CDATA[
<p>I accidentally upgraded to Tahoe (I didn't know it existed and thought I was moving to Sequoia and the UI design is all over the place, and it's constantly reminding me how bad it is. This excellent article takes what was an attention to detail that we took for granted (because tech is supposed to &quot;just work&quot;), and calls out just a handful of the failings that Apple's OS now ships with (including on iOS, that I thankfully don't have to suffer). My fear, based on experience with bad Apple UI - (like the notifications that couldn't be quickly dismissed forcing us to click <em>EXACTLY</em> in the right place, and with the &quot;suitable&quot; amount of delay) - is that it simply won't be fixed or even improved. /via venerable <a href="https://brucelawson.co.uk/">Bruce Lawson</a></p>
<p><em>Source: <a href="https://blog.johnozbay.com/what-happened-to-apples-attention-to-detail.html">blog.johnozbay.com</a></em></p>
<p><em>Originally published on <a href="https://remysharp.com/links/2025-10-23-d9bf3277">Remy Sharp's b:log</a></em></p>]]></content:encoded>
    </item>
    <item>
      <title>Making a low-budget conference look high-budget using an ATEM video mixer and a long USB cable</title>
      <guid isPermaLink="false">2025-10-05-22673538</guid>
      <link>https://remysharp.com/links/2025-10-05-22673538</link>
      <pubDate>Sun, 05 Oct 2025 21:28:52 +0000</pubDate>
      <description><![CDATA[Niels Leenheer goes through a detailed setup on how to take a single HDMI to projection into a mini event setup with holding screens. The technical detail is superb too, specifically considering power draw you would need but also, importantly, the length of cables and types to handle data rates. Definitely one for the back pocket read when wanting to upgrade the meetup game to something that has a lot more polish.
Source: nielsleenheer.com]]></description>
      <content:encoded><![CDATA[
<p>Niels Leenheer goes through a detailed setup on how to take a single HDMI to projection into a mini event setup with holding screens. The technical detail is superb too, specifically considering power draw you would need but also, importantly, the length of cables and types to handle data rates. Definitely one for the back pocket read when wanting to upgrade the meetup game to something that has a lot more polish.</p>
<p><em>Source: <a href="https://nielsleenheer.com/articles/2025/making-a-low-budget-conference-look-high-budget-using-an-atem-video-mixer-and-a-long-usb-cable/">nielsleenheer.com</a></em></p>
<p><em>Originally published on <a href="https://remysharp.com/links/2025-10-05-22673538">Remy Sharp's b:log</a></em></p>]]></content:encoded>
    </item>
    <item>
      <title>CSS HDR Gradients</title>
      <guid isPermaLink="false">2025-10-03-8c6febb9</guid>
      <link>https://remysharp.com/links/2025-10-03-8c6febb9</link>
      <pubDate>Fri, 03 Oct 2025 06:36:20 +0000</pubDate>
      <description><![CDATA[Very cool CSS gradient tooling by Adam Argyle.It's so pretty all I want to do is play with UI forgetting that it'll actually give me CSS.I also like that the URL is sharable and savable (perhaps through a bookmark or in a markdown doc).His latest changes include:- better import design- more resilient parser (understands more syntax)- supports multi-layered gradient imports
Source: gradient.style]]></description>
      <content:encoded><![CDATA[
<p>Very cool CSS gradient tooling by Adam <a href="http://Argyle.It">Argyle.It</a>'s so pretty all I want to do is play with UI forgetting that it'll actually give me CSS.I also like that the URL is sharable and savable (perhaps through a bookmark or in a markdown doc).His latest changes include:- better import design- more resilient parser (understands more syntax)- supports multi-layered gradient imports</p>
<p><em>Source: <a href="https://gradient.style/">gradient.style</a></em></p>
<p><em>Originally published on <a href="https://remysharp.com/links/2025-10-03-8c6febb9">Remy Sharp's b:log</a></em></p>]]></content:encoded>
    </item>
    <item>
      <title>How to disable Google Gemini in your Google Workspace</title>
      <guid isPermaLink="false">2025-02-12-9469eb6c</guid>
      <link>https://remysharp.com/links/2025-02-12-9469eb6c</link>
      <pubDate>Wed, 12 Feb 2025 11:38:37 +0000</pubDate>
      <description><![CDATA[Google's AI offering came along to paid accounts without permission or request. What made it worse is that it couldn't be turned off, which… I don't even have words. It was via Jan on Mastodon that I'd seen it wasn't possible to disable. But Jan having more persistence than me actually managed to find a (hidden) solution (short version, keep asking support). Bless his magnificence for getting this. I'm now Gemini-free, particularly in Gmail which was the place it was annoying me the most.
Source: writing.jan.io]]></description>
      <content:encoded><![CDATA[
<p>Google's AI offering came along to paid accounts without permission or request. What made it worse is that it couldn't be turned off, which… I don't even have words. It was via Jan on Mastodon that I'd seen it wasn't possible to disable. But Jan having more persistence than me actually managed to find a (hidden) solution (short version, keep asking support). Bless his magnificence for getting this. I'm now Gemini-free, particularly in Gmail which was the place it was annoying me the most.</p>
<p><em>Source: <a href="https://writing.jan.io/2025/01/17/how-to-disable-google-gemini-in-your-workspace.html">writing.jan.io</a></em></p>
<p><em>Originally published on <a href="https://remysharp.com/links/2025-02-12-9469eb6c">Remy Sharp's b:log</a></em></p>]]></content:encoded>
    </item>
    <item>
      <title>Build and run online services _easily_</title>
      <guid isPermaLink="false">2024-11-05-0827383d</guid>
      <link>https://remysharp.com/links/2024-11-05-0827383d</link>
      <pubDate>Tue, 05 Nov 2024 10:08:01 +0000</pubDate>
      <description><![CDATA[I find this very cool that the Gov.uk / GDS have released their platform tooling (in particular forms) to the public sector.I can imagine it's a jump to go from project in the public sector to being able to implement all the nuts and bolts it requires, and this platform looks to cut right through the hard work. Specifically:&gt; You can create accessible, low cost online services without needing coding skills or technical knowledge. I love this. Progressive enhancement. Core functionality (forms, payments, notifications).More background reading from their blog here: https://gds.blog.gov.uk/2024/11/04/gov-uk-forms-in-motion/
Source: platforms.service.gov.uk]]></description>
      <content:encoded><![CDATA[
<p>I find this very cool that the <a href="http://Gov.uk">Gov.uk</a> / GDS have released their platform tooling (in particular <em>forms</em>) to the public sector.I can imagine it's a jump to go from project in the public sector to being able to implement all the nuts and bolts it requires, and this platform looks to cut right through the hard work. Specifically:&gt; You can create accessible, low cost online services without needing coding skills or technical knowledge. I love this. Progressive enhancement. Core functionality (forms, payments, notifications).More background reading from their blog here: <a href="https://gds.blog.gov.uk/2024/11/04/gov-uk-forms-in-motion/">https://gds.blog.gov.uk/2024/11/04/gov-uk-forms-in-motion/</a></p>
<p><em>Source: <a href="https://platforms.service.gov.uk/">platforms.service.gov.uk</a></em></p>
<p><em>Originally published on <a href="https://remysharp.com/links/2024-11-05-0827383d">Remy Sharp's b:log</a></em></p>]]></content:encoded>
    </item>
    <item>
      <title>The Open Source AI Definition – 1.0</title>
      <guid isPermaLink="false">2024-11-02-131718ec</guid>
      <link>https://remysharp.com/links/2024-11-02-131718ec</link>
      <pubDate>Sat, 02 Nov 2024 08:30:45 +0000</pubDate>
      <description><![CDATA[There's now an official definition of &quot;open source AI&quot;, which companies like Facebook have been using (prior to this definition) to effectively attempt to convince us (Devs) that the models are in keeping with the values of Open Source.When the reality for many of these companies and their models is that the content driving the models were stolen (taken without permission, regardless of whether that content is publicly available - like training on photos of artwork in a museum, or music on the radio or videos on TV - all &quot;publicly available&quot;).The definition outlines that a published &quot;open source&quot; AI model should include:&gt; Sufficiently detailed information about the data used to train the system so that a skilled person can build a substantially equivalent system....and the gut punch to companies co-opting &quot;open source&quot;:&gt; this must include: (1) the complete description of all data used for training, including (if used) of unshareable data, disclosing the provenance of the data, its scope and characteristics, how the data was obtained and selectedSo it would be more fitting if companies like Facebook (with Llama etc) used proprietary or probably trained on copyright content...
Source: opensource.org]]></description>
      <content:encoded><![CDATA[
<p>There's now an official definition of &quot;open source AI&quot;, which companies like Facebook have been using (prior to this definition) to effectively attempt to convince us (Devs) that the models are in keeping with the values of Open Source.When the reality for many of these companies and their models is that the content driving the models were stolen (taken without permission, regardless of whether that content is publicly available - like training on photos of artwork in a museum, or music on the radio or videos on TV - all &quot;publicly available&quot;).The definition outlines that a published &quot;open source&quot; AI model should include:&gt; Sufficiently detailed information about the data used to train the system so that a skilled person can build a substantially equivalent system....and the gut punch to companies co-opting &quot;open source&quot;:&gt; this must include: (1) the complete description of all data used for training, including (if used) of unshareable data, disclosing the provenance of the data, its scope and characteristics, how the data was obtained and selectedSo it would be more fitting if companies like Facebook (with Llama etc) used <strong>proprietary</strong> or <strong>probably trained on copyright content</strong>...</p>
<p><em>Source: <a href="https://opensource.org/ai/open-source-ai-definition">opensource.org</a></em></p>
<p><em>Originally published on <a href="https://remysharp.com/links/2024-11-02-131718ec">Remy Sharp's b:log</a></em></p>]]></content:encoded>
    </item>
    <item>
      <title>Ted Chaing on AI and art</title>
      <guid isPermaLink="false">2024-09-05-769b8034</guid>
      <link>https://remysharp.com/links/2024-09-05-769b8034</link>
      <pubDate>Thu, 05 Sep 2024 10:31:59 +0000</pubDate>
      <description><![CDATA[I can't stop thinking about this quote from Ted Chiang (originally snipped by Simon Willison).

Art is notoriously hard to define, and so are the differences between good art and bad art. But let me offer a generalization: art is something that results from making a lot of choices. […] to oversimplify, we can imagine that a ten-thousand-word short story requires something on the order of ten thousand choices. When you give a generative-A.I. program a prompt, you are making very few choices; if you supply a hundred-word prompt, you have made on the order of a hundred choices.
If an A.I. generates a ten-thousand-word story based on your prompt, it has to fill in for all of the choices that you are not making. There's so much push in the web development scene to use AI for jobs and my own LinkedIn feed is chock full of &quot;AI to do X&quot;, such as generate articles, and amass content, but, as this quote so simply puts it, the actual human input is so utterly thin. To me, it makes that AI generated content unwhelming and unimpressive because it lacks so much of the individual's own input.

Source: www.newyorker.com]]></description>
      <content:encoded><![CDATA[
<p>I can't stop thinking about this quote from Ted Chiang (originally snipped by <a href="https://simonwillison.net/2024/Aug/31/ted-chiang/">Simon Willison</a>).</p>
<blockquote>
<p>Art is notoriously hard to define, and so are the differences between good art and bad art. But let me offer a generalization: art is something that results from making a lot of choices. […] to oversimplify, we can imagine that a ten-thousand-word short story requires something on the order of ten thousand choices. When you give a generative-A.I. program a prompt, you are making very few choices; if you supply a hundred-word prompt, you have made on the order of a hundred choices.</p>
<p>If an A.I. generates a ten-thousand-word story based on your prompt, it has to fill in for all of the choices that you are not making. There's so much push in the web development scene to use AI for jobs and my own LinkedIn feed is chock full of &quot;AI to do X&quot;, such as generate articles, and amass content, but, as this quote so simply puts it, the actual human input is so utterly thin. To me, it makes that AI generated content unwhelming and unimpressive because it lacks so much of the individual's own input.</p>
</blockquote>
<p><em>Source: <a href="https://www.newyorker.com/culture/the-weekend-essay/why-ai-isnt-going-to-make-art">www.newyorker.com</a></em></p>
<p><em>Originally published on <a href="https://remysharp.com/links/2024-09-05-769b8034">Remy Sharp's b:log</a></em></p>]]></content:encoded>
    </item>
    <item>
      <title>I Will Luddite AI by Robert Kingett</title>
      <guid isPermaLink="false">2024-08-09-a63eca24</guid>
      <link>https://remysharp.com/links/2024-08-09-a63eca24</link>
      <pubDate>Fri, 09 Aug 2024 07:31:53 +0000</pubDate>
      <description><![CDATA[A long but excellent article or even essay on AI, it's appeal to the blindness community, prompt injection, hacking and a wealth of links and well thought out discussion. Like Robert I only really learnt the real meaning of &quot;luddite&quot; this year, specifically because of AI, and he goes on to discuss this more, but:

Luddites understand tech better than you and or I do because you have to know something on an intimate level to stage a coordinated push back against the particular tech. I feel like these are my people and want to actively push back against the companies in the arms race for our intimacy. Find some quiet time and read this post.

Source: robertkingett.com]]></description>
      <content:encoded><![CDATA[
<p>A long but excellent article or even essay on AI, it's appeal to the blindness community, prompt injection, hacking and a wealth of links and well thought out discussion. Like Robert I only really learnt the real meaning of &quot;luddite&quot; this year, specifically because of AI, and he goes on to discuss this more, but:</p>
<blockquote>
<p>Luddites understand tech better than you and or I do because you have to know something on an intimate level to stage a coordinated push back against the particular tech. I feel like these are my people and want to actively push back against the companies in the arms race for our intimacy. Find some quiet time and read this post.</p>
</blockquote>
<p><em>Source: <a href="https://robertkingett.com/posts/6593/">robertkingett.com</a></em></p>
<p><em>Originally published on <a href="https://remysharp.com/links/2024-08-09-a63eca24">Remy Sharp's b:log</a></em></p>]]></content:encoded>
    </item>
    <item>
      <title>SENDUNE html email designers</title>
      <guid isPermaLink="false">2024-07-26-3326ccec</guid>
      <link>https://remysharp.com/links/2024-07-26-3326ccec</link>
      <pubDate>Fri, 26 Jul 2024 14:03:03 +0000</pubDate>
      <description><![CDATA[The SENDUNE email designer focuses on simplicity and ease of use. It is light-weight. It does pure HTML - no intermediate code wranglers like mjml. There is no lock-in of any kind. Save HTML output as a template and use with ANY email service provider.I can't get over how any simple design is still so stupidly hard in 2024. Hoping this is a simpler tool (without having to fork over the farm!)

Source: designer.sendune.com]]></description>
      <content:encoded><![CDATA[
<blockquote>
<p>The SENDUNE email designer focuses on simplicity and ease of use. It is light-weight. It does pure HTML - no intermediate code wranglers like mjml. There is no lock-in of any kind. Save HTML output as a template and use with ANY email service provider.I can't get over how any simple design is still so stupidly hard in 2024. Hoping this is a simpler tool (without having to fork over the farm!)</p>
</blockquote>
<p><em>Source: <a href="https://designer.sendune.com/">designer.sendune.com</a></em></p>
<p><em>Originally published on <a href="https://remysharp.com/links/2024-07-26-3326ccec">Remy Sharp's b:log</a></em></p>]]></content:encoded>
    </item>
    <item>
      <title>Retro print patterns with CSS</title>
      <guid isPermaLink="false">2024-05-08-f220c1f6</guid>
      <link>https://remysharp.com/links/2024-05-08-f220c1f6</link>
      <pubDate>Wed, 08 May 2024 09:18:06 +0000</pubDate>
      <description><![CDATA[Ana Tudor, as always, shows excellent methods to create (what I'd call) retro print effects to images using CSS.This is something I've typically turned to PhotoShop to (struggle) with, but Ana shows how this can be done with CSS.In Ana's CodePens, SCSS is used, but even the compiled CSS is relatively easy to follow.
Source: front-end.social]]></description>
      <content:encoded><![CDATA[
<p>Ana Tudor, as always, shows excellent methods to create (what I'd call) retro print effects to images using CSS.This is something I've typically turned to PhotoShop to (struggle) with, but Ana shows how this can be done with <a href="http://CSS.In">CSS.In</a> Ana's CodePens, SCSS is used, but even the compiled CSS is relatively easy to follow.</p>
<p><em>Source: <a href="https://front-end.social/@anatudor@mastodon.social/112404568902561121">front-end.social</a></em></p>
<p><em>Originally published on <a href="https://remysharp.com/links/2024-05-08-f220c1f6">Remy Sharp's b:log</a></em></p>]]></content:encoded>
    </item>
    <item>
      <title>Why Good Captioned Videos Are Important</title>
      <guid isPermaLink="false">2024-04-26-731edafa</guid>
      <link>https://remysharp.com/links/2024-04-26-731edafa</link>
      <pubDate>Fri, 26 Apr 2024 13:51:08 +0000</pubDate>
      <description><![CDATA[Absolutely essential reading and viewing on how to produce captions with valuable real world examples of how to completely mess it up (and a lot of social posted videos do the bad mess version). As someone who's hard of hearing and uses captions on all viewing media that I can, I already feel this. Excellent post by Meryl Evans.
Source: meryl.net]]></description>
      <content:encoded><![CDATA[
<p>Absolutely essential reading and viewing on how to produce captions with valuable real world examples of how to completely mess it up (and a lot of social posted videos do the bad mess version). As someone who's hard of hearing and uses captions on all viewing media that I can, I already feel this. Excellent post by Meryl Evans.</p>
<p><em>Source: <a href="https://meryl.net/why-captioned-videos-are-important/">meryl.net</a></em></p>
<p><em>Originally published on <a href="https://remysharp.com/links/2024-04-26-731edafa">Remy Sharp's b:log</a></em></p>]]></content:encoded>
    </item>
    <item>
      <title>New GitHub Copilot Research Finds 'Downward Pressure on Code Quality'</title>
      <guid isPermaLink="false">2024-02-09-395b2ad3</guid>
      <link>https://remysharp.com/links/2024-02-09-395b2ad3</link>
      <pubDate>Fri, 09 Feb 2024 18:25:30 +0000</pubDate>
      <description><![CDATA[I mean… the writing was on the wall, wasn't it? Didn't we, the tech nation desperate to actualise the ten-ecks developer, make our own bed? I know it's the cynic in me that doesn't trust copilot assisted work to produce long term &quot;good code&quot; (aka: code of a reliable quality that can survive time), but at the same time I'm one of those grumpy old hacks that hand codes. One of the real reasons I don't (personally) like copilot is that I tend to code faster than copilot can suggest recommendations, and it's distracting to get a nearly right autocomplete flash up, whilst my fingers continue to fly across the keyboard. The distraction is whether I should backtrack and undo my change to trigger the autocomplete again, which would only to visually validate the code changing the cadence of my coding/typing... The pull quote from the article is the take away, and the bit that, if we (devs) really are going to saddle up to AI assisted coding are absolutely going to have to solve, is this:

We find disconcerting trends for maintainability. Code churn -- the percentage of lines that are reverted or updated less than two weeks after being authored -- is projected to double in 2024 compared to its 2021, pre-AI baseline. We further find that the percentage of 'added code' and 'copy/pasted code' is increasing in proportion to 'updated,' 'deleted,' and 'moved 'code. In this regard, AI-generated code resembles an itinerant contributor, prone to violate the DRY-ness [don't repeat yourself] of the repos visited. Sure, AI can be treated as the unpaid intern, but do we really want the unpaid intern to be committing the majority of our code to production? (Also, pay your interns…yikes).

Source: visualstudiomagazine.com]]></description>
      <content:encoded><![CDATA[
<p>I mean… the writing was on the wall, wasn't it? Didn't we, the tech nation desperate to actualise the ten-ecks developer, make our own bed? I know it's the cynic in me that doesn't trust copilot assisted work to produce long term &quot;good code&quot; (aka: code of a reliable quality that can survive time), but at the same time I'm one of those grumpy old hacks that hand codes. One of the real reasons I don't (personally) like copilot is that I tend to code faster than copilot can suggest recommendations, and it's distracting to get a nearly right autocomplete flash up, whilst my fingers continue to fly across the keyboard. The distraction is whether I should backtrack and undo my change to trigger the autocomplete again, which would only to visually validate the code changing the cadence of my coding/typing... The pull quote from the article is the take away, and the bit that, <em>if</em> we (devs) really are going to saddle up to AI assisted coding are absolutely going to have to solve, is this:</p>
<blockquote>
<p>We find disconcerting trends for maintainability. Code churn -- the percentage of lines that are reverted or updated less than two weeks after being authored -- is projected to double in 2024 compared to its 2021, pre-AI baseline. We further find that the percentage of 'added code' and 'copy/pasted code' is increasing in proportion to 'updated,' 'deleted,' and 'moved 'code. In this regard, AI-generated code resembles an itinerant contributor, prone to violate the DRY-ness [don't repeat yourself] of the repos visited. Sure, AI can be treated as the unpaid intern, but do we really want the unpaid intern to be committing the majority of our code to production? (Also, pay your interns…yikes).</p>
</blockquote>
<p><em>Source: <a href="https://visualstudiomagazine.com/articles/2024/01/25/copilot-research.aspx">visualstudiomagazine.com</a></em></p>
<p><em>Originally published on <a href="https://remysharp.com/links/2024-02-09-395b2ad3">Remy Sharp's b:log</a></em></p>]]></content:encoded>
    </item>
    <item>
      <title>Keyboard Cleaner</title>
      <guid isPermaLink="false">2023-10-04-60cdc285</guid>
      <link>https://remysharp.com/links/2023-10-04-60cdc285</link>
      <pubDate>Wed, 04 Oct 2023 06:55:29 +0000</pubDate>
      <description><![CDATA[A wonderful does the job bit of software that supports Apple hardware going back over a decade. It intercepts all keyboard input allow you to safely clean your keyboard. Simple. Excellent.
Source: jan.prima.de]]></description>
      <content:encoded><![CDATA[
<p>A wonderful <em>does the job</em> bit of software that supports Apple hardware going back over a decade. It intercepts all keyboard input allow you to safely clean your keyboard. Simple. Excellent.</p>
<p><em>Source: <a href="https://jan.prima.de/plok/archives/48-Keyboard-Cleaner.html">jan.prima.de</a></em></p>
<p><em>Originally published on <a href="https://remysharp.com/links/2023-10-04-60cdc285">Remy Sharp's b:log</a></em></p>]]></content:encoded>
    </item>
    <item>
      <title>Randoma11y</title>
      <guid isPermaLink="false">2023-09-25-341a1491</guid>
      <link>https://remysharp.com/links/2023-09-25-341a1491</link>
      <pubDate>Mon, 25 Sep 2023 11:35:12 +0000</pubDate>
      <description><![CDATA[Accessible colour combinations - and upon hitting reload, there's actually some really stylish (to me) combinations whilst being either AA or AAA compliant. Nice.
Source: randoma11y.com]]></description>
      <content:encoded><![CDATA[
<p>Accessible colour combinations - and upon hitting reload, there's actually some really stylish (to me) combinations whilst being either AA or AAA compliant. Nice.</p>
<p><em>Source: <a href="https://randoma11y.com/">randoma11y.com</a></em></p>
<p><em>Originally published on <a href="https://remysharp.com/links/2023-09-25-341a1491">Remy Sharp's b:log</a></em></p>]]></content:encoded>
    </item>
    <item>
      <title>Brian LeRoux on enhance.dev</title>
      <guid isPermaLink="false">2023-09-24-744822aa</guid>
      <link>https://remysharp.com/links/2023-09-24-744822aa</link>
      <pubDate>Sun, 24 Sep 2023 09:47:14 +0000</pubDate>
      <description><![CDATA[All of Brian's approach to dependencies and concerns about long-term support, we're talking 10 years here, are absolutely excellent spot on and he goes on to talk about enhance.dev which is really a nation of first approach to building software.
Source: www.infoq.com]]></description>
      <content:encoded><![CDATA[
<p>All of Brian's approach to dependencies and concerns about long-term support, we're talking 10 years here, are absolutely excellent spot on and he goes on to talk about enhance.dev which is really a nation of first approach to building software.</p>
<p><em>Source: <a href="https://www.infoq.com/presentations/enhance-web-standards/">www.infoq.com</a></em></p>
<p><em>Originally published on <a href="https://remysharp.com/links/2023-09-24-744822aa">Remy Sharp's b:log</a></em></p>]]></content:encoded>
    </item>
    <item>
      <title>Preview Social Media Share and Generate Metatags</title>
      <guid isPermaLink="false">2023-09-12-e8796c4e</guid>
      <link>https://remysharp.com/links/2023-09-12-e8796c4e</link>
      <pubDate>Tue, 12 Sep 2023 07:42:42 +0000</pubDate>
      <description><![CDATA[Useful tool to check the meta tags used and preview how they'll appear in various social media sites, particular as Twitter declines, the need for Twitter specific meta tags becomes less and I realise I should support the opengraph tags (og:*) more carefully.
Source: www.opengraph.xyz]]></description>
      <content:encoded><![CDATA[
<p>Useful tool to check the meta tags used and preview how they'll appear in various social media sites, particular as Twitter declines, the need for Twitter specific meta tags becomes less and I realise I should support the opengraph tags (<code>og:*</code>) more carefully.</p>
<p><em>Source: <a href="https://www.opengraph.xyz/">www.opengraph.xyz</a></em></p>
<p><em>Originally published on <a href="https://remysharp.com/links/2023-09-12-e8796c4e">Remy Sharp's b:log</a></em></p>]]></content:encoded>
    </item>
    <item>
      <title>minimon.js - Pokémon Mini web emulator</title>
      <guid isPermaLink="false">2023-05-22-34fc197a</guid>
      <link>https://remysharp.com/links/2023-05-22-34fc197a</link>
      <pubDate>Mon, 22 May 2023 15:34:46 +0000</pubDate>
      <description><![CDATA[Not just the emulator but also debugger. Given that all the tooling for this (specifically around emulation) is on Windows, this is a great example of porting software to the web (I'm a big fan).
Source: minimon.scyl.us]]></description>
      <content:encoded><![CDATA[
<p>Not just the emulator but also debugger. Given that all the tooling for this (specifically around emulation) is on Windows, this is a great example of porting software to the web (I'm a big fan).</p>
<p><em>Source: <a href="https://minimon.scyl.us/">minimon.scyl.us</a></em></p>
<p><em>Originally published on <a href="https://remysharp.com/links/2023-05-22-34fc197a">Remy Sharp's b:log</a></em></p>]]></content:encoded>
    </item>
    <item>
      <title>The A.I. Dilemma</title>
      <guid isPermaLink="false">2023-04-18-ed17e7ae</guid>
      <link>https://remysharp.com/links/2023-04-18-ed17e7ae</link>
      <pubDate>Tue, 18 Apr 2023 10:25:38 +0000</pubDate>
      <description><![CDATA[An excellent discussion on the explosion, or even, implosion, of AI and how it's being tested and developed in public when the implications seem to have been swept aside in favour of the arms race between the big corps.
Policies and law haven't been written and it's the experts that don't even have the confidence you'd hope to hear about:

50% of A.I. researchers believe there's a 10% or greater chance that humans go extinct from our inability to control AI

Tristan Harris and Aza Raskin discuss the risk to society and how safety measures are far from adequate and laws need to be implemented.

When you invent a new technology, you uncover a new class of responsibilities

It's a long watch at a little over an hour, but strongly recommend as we plough head long into a future where AI is inter-tangled with society.
Source: www.youtube.com]]></description>
      <content:encoded><![CDATA[
<p>An excellent discussion on the explosion, or even, implosion, of AI and how it's being tested and developed in public when the implications seem to have been swept aside in favour of the arms race between the big corps.</p>
<p>Policies and law haven't been written and it's the experts that don't even have the confidence you'd hope to hear about:</p>
<blockquote>
<p>50% of A.I. researchers believe there's a 10% or greater chance that humans go extinct from our inability to control AI</p>
</blockquote>
<p>Tristan Harris and Aza Raskin discuss the risk to society and how safety measures are far from adequate and laws <em>need</em> to be implemented.</p>
<blockquote>
<p>When you invent a new technology, <em>you uncover a new class of responsibilities</em></p>
</blockquote>
<p>It's a long watch at a little over an hour, but strongly recommend as we plough head long into a future where AI is inter-tangled with society.</p>
<p><em>Source: <a href="https://www.youtube.com/watch?v=xoVJKj8lcNQ">www.youtube.com</a></em></p>
<p><em>Originally published on <a href="https://remysharp.com/links/2023-04-18-ed17e7ae">Remy Sharp's b:log</a></em></p>]]></content:encoded>
    </item>
    <item>
      <title>sq</title>
      <guid isPermaLink="false">2023-03-30-75858f69</guid>
      <link>https://remysharp.com/links/2023-03-30-75858f69</link>
      <pubDate>Thu, 30 Mar 2023 10:10:21 +0000</pubDate>
      <description><![CDATA[Like jq but for postgres databases (or sqlserver, csv or even xlsx).
What's neat is that you register a database with the system, then you can query against that particular database.
Very nice that I can use this on the command line and then pipe into jq for more data manip.
Source: sq.io]]></description>
      <content:encoded><![CDATA[
<p>Like jq but for postgres databases (or sqlserver, csv or even xlsx).</p>
<p>What's neat is that you register a database with the system, then you can query against that particular database.</p>
<p>Very nice that I can use this on the command line and then pipe into <code>jq</code> for more data manip.</p>
<p><em>Source: <a href="https://sq.io/">sq.io</a></em></p>
<p><em>Originally published on <a href="https://remysharp.com/links/2023-03-30-75858f69">Remy Sharp's b:log</a></em></p>]]></content:encoded>
    </item>
    <item>
      <title>The Great Gaslighting of the JavaScript Era</title>
      <guid isPermaLink="false">2023-03-26-cf62febe</guid>
      <link>https://remysharp.com/links/2023-03-26-cf62febe</link>
      <pubDate>Sun, 26 Mar 2023 21:43:38 +0000</pubDate>
      <description><![CDATA[A long read, but a worthwhile one - in my head their voice was definitely just shy of shouty! :)
Being a JS developer first and foremost since pre-Node days, it puts me in a funny spot that I absolutely agree with everything said in this article, whilst also considering that I pick JS on the server to suit me.
When it comes to the front-end, I'm pretty sick of the poison that's been sold to us for over a decade.
The web's war for JS libraries/etc summarised excellently with:

It’s a popularity contest. Plain and simple.


And that popularity contest can change on a dime.


10 years ago, it was AngularJS.


Today, it’s React.


Tomorrow, it will be something else because that’s inevitable.

Absolutely this - I felt exactly the same when I had peers and colleagues trying to shove Angular down my throat.
But it's the future, the kids who come to the industry and will continue it. As Jared White writes,

but all those bright-eyed eager newcomers getting churned out of code schools knowing only React?


Those jobs will be gone. 😕

Grim future.
Source: www.spicyweb.dev]]></description>
      <content:encoded><![CDATA[
<p>A long read, but a worthwhile one - in my head their voice was definitely just shy of shouty! :)</p>
<p>Being a JS developer first and foremost since pre-Node days, it puts me in a funny spot that I absolutely agree with everything said in this article, whilst also considering that I pick JS <em>on the server</em> to suit me.</p>
<p>When it comes to the front-end, I'm pretty sick of the poison that's been sold to us for over a decade.</p>
<p>The web's war for JS libraries/etc summarised excellently with:</p>
<blockquote>
<p>It’s a popularity contest. Plain and simple.</p>
</blockquote>
<blockquote>
<p>And that popularity contest can change on a dime.</p>
</blockquote>
<blockquote>
<p>10 years ago, it was AngularJS.</p>
</blockquote>
<blockquote>
<p>Today, it’s React.</p>
</blockquote>
<blockquote>
<p>Tomorrow, it will be something else because that’s inevitable.</p>
</blockquote>
<p>Absolutely this - I felt exactly the same when I had peers and colleagues trying to shove Angular down my throat.</p>
<p>But it's the future, the kids who come to the industry and will continue it. As Jared White writes,</p>
<blockquote>
<p>but all those bright-eyed eager newcomers getting churned out of code schools knowing only React?</p>
</blockquote>
<blockquote>
<p>Those jobs will be gone. 😕</p>
</blockquote>
<p>Grim future.</p>
<p><em>Source: <a href="https://www.spicyweb.dev/the-great-gaslighting-of-the-js-age/">www.spicyweb.dev</a></em></p>
<p><em>Originally published on <a href="https://remysharp.com/links/2023-03-26-cf62febe">Remy Sharp's b:log</a></em></p>]]></content:encoded>
    </item>
    <item>
      <title>better-mobile-inputs.netlify.app/</title>
      <guid isPermaLink="false">2023-03-01-3bff24a5</guid>
      <link>https://remysharp.com/links/2023-03-01-3bff24a5</link>
      <pubDate>Wed, 01 Mar 2023 11:11:24 +0000</pubDate>
      <description><![CDATA[A useful web page to show visually what the mobile assistive keyboard looks like given different input types.
Specifically, and TIL - the inputmode can be different, i.e. using a type=&quot;text&quot; field but inputmode=&quot;url&quot; to help with partials like &quot;.com&quot; (if the input field didn't need URL validation for instance).
/via Bruce's reading list 300
Source: better-mobile-inputs.netlify.app]]></description>
      <content:encoded><![CDATA[
<p>A useful web page to show visually what the mobile assistive keyboard looks like given different input types.</p>
<p>Specifically, and TIL - the <code>inputmode</code> can be different, i.e. using a <code>type=&quot;text&quot;</code> field but <code>inputmode=&quot;url&quot;</code> to help with partials like &quot;.com&quot; (if the input field didn't need URL validation for instance).</p>
<p>/via <a href="https://brucelawson.co.uk/2023/reading-list-300/">Bruce's reading list 300</a></p>
<p><em>Source: <a href="https://better-mobile-inputs.netlify.app/">better-mobile-inputs.netlify.app</a></em></p>
<p><em>Originally published on <a href="https://remysharp.com/links/2023-03-01-3bff24a5">Remy Sharp's b:log</a></em></p>]]></content:encoded>
    </item>
  </channel>
</rss>