<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="/atom.xsl" type="text/xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Posts tagged: webdev</title>
  <id>https://new.waylonwalker.com/tags/webdev/atom.xml</id>
  <updated>2026-07-05T17:27:54Z</updated>
  <subtitle>All posts with the tag &#34;webdev&#34;</subtitle>
  <link href="https://new.waylonwalker.com/tags/webdev/" rel="alternate" type="text/html"></link>
  <link href="https://new.waylonwalker.com/tags/webdev/atom.xml" rel="self" type="application/atom+xml"></link>
  <author>
    <name>Waylon Walker</name>
  </author>
  <generator uri="https://github.com/WaylonWalker/markata-go">markata-go</generator>
  <entry>
    <title>The Internet I Grew Up With Doesn’t Exist Anymore - cleberg.net</title>
    <id>https://new.waylonwalker.com/thought-1016/</id>
    <updated>2026-07-05T17:27:54Z</updated>
    <published>2026-07-05T17:27:54Z</published>
    <link href="https://new.waylonwalker.com/thought-1016/" rel="alternate" type="text/html"></link>
    <summary type="text">!https://cleberg.net/blog/internet.html</summary>
    <content type="html">&lt;figure&gt;&#xA;&lt;a href=&#34;/static/https://cleberg.net/blog/internet.html&#34; class=&#34;glightbox-link&#34; aria-label=&#34;https://cleberg.net/blog/internet.html&#34;&gt;&lt;img class=&#34;glightbox&#34; src=&#34;/static/https://cleberg.net/blog/internet.html&#34; alt=&#34;https://cleberg.net/blog/internet.html&#34;/ data-glightbox=&#34;description: https://cleberg.net/blog/internet.html&#34;&gt;&lt;/a&gt;&#xA;&lt;/figure&gt;&#xA;&lt;p&gt;I align a lot with this post.  From growing up in a rural house where internet access was harder to get.  It was slow and only had one line, if you were on the internet, no one in the house could recieve a phone call.  Idk if what is now the smol webl, the indieweb, is seeing a resurgence, if I’m just noticing it more.  It does feel like along there has been a very small number of users willing to get their own domain, their own server, and host their own shit.  A few of these are starting to really break out occasionally, see things like &lt;a href=&#34;https://www.powerlanguage.co.uk/wordle&#34;&gt;wordle&lt;/a&gt; hitting mass adoptioun before being swooped up by a giant.&lt;/p&gt;&#xA;&lt;p&gt;I too miss the internet of old, heck I really dont even mind the middle era of fb, twitter, instagram dominance, but what we have now is dominated by political undertones on it all with everyone shouting “Fake News” at each other.  These sites are the easiest place to stay in touch with those you have met online, yet they are riddled with so much toxicity its impossible to have a great experience on  them.  I’m about a year and a half of not having a single one on my phone, and at this point I barely log into them once a week.  RSS is the way forward, as long as its not killed by paywalled substack and medium.&lt;/p&gt;&#xA;</content>
    <author>
      <name>Waylon Walker</name>
      <email>hello@waylonwalker.com</email>
      <uri>https://waylonwalker.com</uri>
    </author>
  </entry>
  <entry>
    <title>Keys.waylonwalker.com</title>
    <id>https://new.waylonwalker.com/keys-waylonwalker-com/</id>
    <updated>2026-06-20T20:17:10Z</updated>
    <published>2026-06-20T20:17:10Z</published>
    <link href="https://new.waylonwalker.com/keys-waylonwalker-com/" rel="alternate" type="text/html"></link>
    <summary type="text">Today I got sick of my go to online keyboard tester not supporting holds and fighting an issue with holds on one of my boards, I vibed out a replacement. I...</summary>
    <content type="html">&lt;p&gt;Today I got sick of my go to online &lt;a href=&#34;https://www.keyboardtester.com/&#34; style=&#34;--favicon-url: url(&amp;#39;/assets/markata/link-avatars/www.keyboardtester.com.png&amp;#39;);&#34; data-favicon=&#34;/assets/markata/link-avatars/www.keyboardtester.com.png&#34; class=&#34;has-avatar  has-avatar-before&#34;&gt;keyboard&#xA;tester&lt;/a&gt; not supporting holds and fighting an&#xA;issue with holds on one of my boards, I vibed out a replacement.  I did a bit&#xA;of work with it to get it how I wanted.  gpt5.4 still likes to make lots of&#xA;cards and build readable sites with a reasonable width for reading, not full&#xA;page apps.&lt;/p&gt;&#xA;&lt;div class=&#34;embed-card embed-card-external&#34;&gt;&#xA;  &lt;a class=&#34;embed-card-link&#34; href=&#34;https://keys.waylonwalker.com&#34; rel=&#34;noopener noreferrer&#34; target=&#34;_blank&#34;&gt;&#xA;    &lt;div class=&#34;embed-card-image&#34;&gt;&#xA;      &lt;img class=&#34;glightbox&#34; src=&#34;https://dropper.wayl.one/file/b4b02b3c-3df8-4f9c-8f7f-bd2d403c089d.webp&#34; alt=&#34;keyboard tester — A keyboard tester that works for me, how I like it&#34; loading=&#34;lazy&#34;/ data-glightbox=&#34;description: keyboard tester — A keyboard tester that works for me, how I like it&#34;&gt;&#xA;    &lt;/div&gt;&#xA;    &lt;div class=&#34;embed-card-content&#34;&gt;&#xA;      &lt;div class=&#34;embed-card-title&#34;&gt;keyboard tester&lt;/div&gt;&#xA;      &lt;div class=&#34;embed-card-description&#34;&gt;A keyboard tester that works for me, how I like it&lt;/div&gt;&#xA;      &lt;div class=&#34;embed-card-meta&#34;&gt;keys.waylonwalker.com&lt;/div&gt;&#xA;    &lt;/div&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;The main feature is to be able to see when alt+key or shift+key is pressed, the&#xA;keyboard tester was not able to do this.&lt;/p&gt;&#xA;&lt;figure&gt;&#xA;&lt;a href=&#34;https://dropper.wayl.one/file/73e71d2d-eaf9-4a0a-9e04-0039a1df0b26.mp4&#34; class=&#34;glightbox-link&#34; aria-label=&#34;73e71d2d-eaf9-4a0a-9e04-0039a1df0b26.mp4&#34;&gt;&lt;video autoplay loop muted playsinline controls preload=&#34;metadata&#34; class=&#34;md-video&#34; poster=&#34;https://dropper.wayl.one/file/73e71d2d-eaf9-4a0a-9e04-0039a1df0b26.webp?h=675&amp;w=1200&#34;&gt;&lt;source src=&#34;https://dropper.wayl.one/file/73e71d2d-eaf9-4a0a-9e04-0039a1df0b26.mp4&#34; type=&#34;video/mp4&#34;&gt;73e71d2d-eaf9-4a0a-9e04-0039a1df0b26.mp4&lt;/video&gt;&lt;/a&gt;&#xA;&lt;figcaption&gt;&lt;p&gt;Here is a video of me using it.&lt;/p&gt;&lt;/figcaption&gt;&#xA;&lt;/figure&gt;&#xA;&lt;p&gt;I tend to use keyboard tester a lot as I build a lot of weird keyboards so I&#xA;suspect this one to get a lot of use and may grow over time, but for now it&#xA;works good enough for me.&lt;/p&gt;&#xA;&lt;p&gt;I can already think of a whole list of features like supporting keycodes for&#xA;js, pygame, zmk, qmk.  But for now I’m just building what I need and not&#xA;overcomplicating it.&lt;/p&gt;&#xA;</content>
    <author>
      <name>Waylon Walker</name>
      <email>hello@waylonwalker.com</email>
      <uri>https://waylonwalker.com</uri>
    </author>
  </entry>
  <entry>
    <title>The Website Specification</title>
    <id>https://new.waylonwalker.com/thought-1013/</id>
    <updated>2026-06-01T16:15:24Z</updated>
    <published>2026-06-01T16:15:24Z</published>
    <link href="https://new.waylonwalker.com/thought-1013/" rel="alternate" type="text/html"></link>
    <summary type="text">!https://specification.website/</summary>
    <content type="html">&lt;div class=&#34;embed-card embed-card-external&#34;&gt;&#xA;  &lt;a class=&#34;embed-card-link&#34; href=&#34;https://specification.website/&#34; rel=&#34;noopener noreferrer&#34; target=&#34;_blank&#34;&gt;&#xA;    &lt;div class=&#34;embed-card-image&#34;&gt;&#xA;      &lt;img class=&#34;glightbox&#34; src=&#34;https://specification.website/og-default.png&#34; alt=&#34;The Website Specification — A platform-agnostic, full specification of the technical features a good website should have. Built in the open under an MIT licence.&#34; loading=&#34;lazy&#34;/ data-glightbox=&#34;description: The Website Specification — A platform-agnostic, full specification of the technical features a good website should have. Built in the open under an MIT licence.&#34;&gt;&#xA;    &lt;/div&gt;&#xA;    &lt;div class=&#34;embed-card-content&#34;&gt;&#xA;      &lt;div class=&#34;embed-card-title&#34;&gt;The Website Specification&lt;/div&gt;&#xA;      &lt;div class=&#34;embed-card-description&#34;&gt;A platform-agnostic, full specification of the technical features a good website should have. Built in the open under an MIT licence.&lt;/div&gt;&#xA;      &lt;div class=&#34;embed-card-meta&#34;&gt;The Website Specification · specification.website&lt;/div&gt;&#xA;    &lt;/div&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;A solid checklist for agents to implement on most sites.  Very few sites need 100% coverage, but most should probably check most of these boxes&lt;/p&gt;&#xA;</content>
    <author>
      <name>Waylon Walker</name>
      <email>hello@waylonwalker.com</email>
      <uri>https://waylonwalker.com</uri>
    </author>
  </entry>
  <entry>
    <title>dickover</title>
    <id>https://new.waylonwalker.com/dickover/</id>
    <updated>2026-05-29T20:36:47Z</updated>
    <published>2026-05-29T20:36:47Z</published>
    <link href="https://new.waylonwalker.com/dickover/" rel="alternate" type="text/html"></link>
    <summary type="text">dickover _ : a modal panel, popover, or curtain presented by a website or &gt; app, deliberately obscuring its own content to frustrate the user with an &gt;...</summary>
    <content type="html">&lt;blockquote cite=&#34;https://daringfireball.net/2026/05/what_is_a_dickover&#34;&gt;&#xA;&lt;p&gt;dickover &lt;em&gt;n.&lt;/em&gt; : a modal panel, popover, or curtain presented by a website or&#xA;app, deliberately obscuring its own content to frustrate the user with an&#xA;unwanted, unnecessary, mandatory interaction; e.g. asking the user to accept&#xA;“cookies”, subscribe to a newsletter, install the website’s mobile app, agree&#xA;to terms of service, or anything else that the user couldn’t give two shits&#xA;about.&lt;/p&gt;&#xA;  &lt;footer&gt;— &lt;a class=&#34;mention  has-avatar has-avatar-before&#34; data-avatar=&#34;https://daringfireball.net/graphics/df-wide-card.png&#34; data-bio=&#34;Commentary on Apple, technology, design, politics, and more.&#34; data-handle=&#34;@daringfireball&#34; data-name=&#34;Daring Fireball&#34; href=&#34;https://daringfireball.net&#34; style=&#34;--favicon-url: url(&amp;#39;/assets/markata/link-avatars/daringfireball.net.ico&amp;#39;);&#34; data-favicon=&#34;/assets/markata/link-avatars/daringfireball.net.ico&#34;&gt;@daringfireball&lt;/a&gt; &lt;cite&gt;&lt;a href=&#34;https://daringfireball.net/2026/05/what_is_a_dickover&#34; style=&#34;--favicon-url: url(&amp;#39;/assets/markata/link-avatars/daringfireball.net.ico&amp;#39;);&#34; data-favicon=&#34;/assets/markata/link-avatars/daringfireball.net.ico&#34; class=&#34;has-avatar  has-avatar-before&#34;&gt;via&lt;/a&gt;&lt;/cite&gt;&lt;/footer&gt;&#xA;&lt;/blockquote&gt;&#xA;</content>
    <author>
      <name>Waylon Walker</name>
      <email>hello@waylonwalker.com</email>
      <uri>https://waylonwalker.com</uri>
    </author>
  </entry>
  <entry>
    <title>image compare in markata go</title>
    <id>https://new.waylonwalker.com/image-compare-in-markata-go/</id>
    <updated>2026-05-01T00:00:00Z</updated>
    <published>2026-05-01T00:00:00Z</published>
    <link href="https://new.waylonwalker.com/image-compare-in-markata-go/" rel="alternate" type="text/html"></link>
    <summary type="text">now has web awesome integration for image compare. It renders a nice web component with a slider to compare two images.</summary>
    <content type="html">&lt;p&gt;&lt;code&gt;markata-go&lt;/code&gt; now has web awesome integration for image compare.  It renders a&#xA;nice web component with a slider to compare two images.&lt;/p&gt;&#xA;&lt;wa-comparison class=&#34;markata-webawesome-comparison&#34;&gt;&lt;img slot=&#34;after&#34; src=&#34;https://dropper.wayl.one/file/d628ffba-de18-4fff-91a8-700f037df119.webp&#34; alt=&#34;d628ffba-de18-4fff-91a8-700f037df119.webp&#34; loading=&#34;lazy&#34;&gt;&lt;img slot=&#34;before&#34; src=&#34;https://dropper.waylonwalker.com/file/ca30665f-1a15-453e-aab8-221901c7df99.webp&#34; alt=&#34;image&#34; loading=&#34;lazy&#34;&gt;&lt;/wa-comparison&gt;&#xA;&lt;p&gt;It’s done with a class wrapper around the image components.&lt;/p&gt;&#xA;&lt;pre class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;::: wa-comparison&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;![&lt;span class=&#34;nt&#34;&gt;d628ffba-de18-4fff-91a8-700f037df119.webp&lt;/span&gt;](&lt;span class=&#34;na&#34;&gt;https://dropper.wayl.one/file/d628ffba-de18-4fff-91a8-700f037df119.webp&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;![&lt;span class=&#34;nt&#34;&gt;image&lt;/span&gt;](&lt;span class=&#34;na&#34;&gt;https://dropper.waylonwalker.com/file/ca30665f-1a15-453e-aab8-221901c7df99.webp&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;:::&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Without &lt;code&gt;markata-go&lt;/code&gt;’s web awesome integration, the above would look like:&lt;/p&gt;&#xA;&lt;pre class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;script&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;type&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;module&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kr&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;https://ka-f.webawesome.com/webawesome@3.6.0/components/comparison/comparison.js&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;script&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;wa-comparison&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;img&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;na&#34;&gt;slot&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;before&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;na&#34;&gt;src&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;https://dropper.wayl.one/file/d628ffba-de18-4fff-91a8-700f037df119.webp&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;na&#34;&gt;alt&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;Grayscale version of kittens in a basket looking around.&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;/&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;img&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;na&#34;&gt;slot&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;after&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;na&#34;&gt;src&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;https://dropper.waylonwalker.com/file/ca30665f-1a15-453e-aab8-221901c7df99.webp&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;na&#34;&gt;alt&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;Color version of kittens in a basket looking around.&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;/&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;wa-comparison&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;</content>
    <author>
      <name>Waylon Walker</name>
      <email>hello@waylonwalker.com</email>
      <uri>https://waylonwalker.com</uri>
    </author>
  </entry>
  <entry>
    <title>the cheng lou pretext tweet</title>
    <id>https://new.waylonwalker.com/thought-957/</id>
    <updated>2026-03-31T23:38:39Z</updated>
    <published>2026-03-31T23:38:39Z</published>
    <link href="https://new.waylonwalker.com/thought-957/" rel="alternate" type="text/html"></link>
    <summary type="text">!https://x.com/_chenglou/status/2037713766205608234</summary>
    <content type="html">&lt;div class=&#34;embed-card embed-card-external&#34;&gt;&#xA;  &lt;a class=&#34;embed-card-link&#34; href=&#34;https://x.com/_chenglou/status/2037713766205608234&#34; rel=&#34;noopener noreferrer&#34; target=&#34;_blank&#34;&gt;&#xA;    &lt;div class=&#34;embed-card-image&#34;&gt;&#xA;      &lt;img src=&#34;https://pbs.twimg.com/amplify_video_thumb/2037713657334042624/img/XfCSjcN7-iX8b_fJ.jpg&#34; alt=&#34;Cheng Lou (@_chenglou) on X — My dear front-end developers (and anyone who’s interested in the future of interfaces):&#xA;&amp;lt;p&amp;gt;I have crawled through depths of hell to bring you, for the foreseeable years, one of the more important foundational pieces of UI engineering (if not in implementation then certainly at&amp;#34; loading=“lazy”&amp;gt;&#xA;&amp;lt;/div&amp;gt;&#xA;&amp;lt;div class=&#34; embed-card-content glightbox&#34;=&#34;&#34;/ data-glightbox=&#34;description: Cheng Lou (@_chenglou) on X — My dear front-end developers (and anyone who’s interested in the future of interfaces):&#xA;&amp;lt;p&amp;gt;I have crawled through depths of hell to bring you, for the foreseeable years, one of the more important foundational pieces of UI engineering (if not in implementation then certainly at&amp;#34; loading=“lazy”&amp;gt;&#xA;&amp;lt;/div&amp;gt;&#xA;&amp;lt;div class=&#34;&gt;&#xA;&lt;div class=&#34;embed-card-title&#34;&gt;Cheng Lou (@_chenglou) on X&lt;/div&gt;&#xA;&lt;div class=&#34;embed-card-description&#34;&gt;My dear front-end developers (and anyone who’s interested in the future of interfaces):&lt;p&gt;&lt;/p&gt;&#xA;&lt;p&gt;I have crawled through depths of hell to bring you, for the foreseeable years, one of the more important f…&lt;/p&gt;&lt;/div&gt;&#xA;&lt;div class=&#34;embed-card-meta&#34;&gt;X (formerly Twitter) · x.com&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/a&gt;&lt;p&gt;&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;webdev twitter is blowing up with implementations of pretext text calculations.  The examples are absolutely fun and ridiculous.&lt;/p&gt;&#xA;&lt;figure&gt;&#xA;&lt;a href=&#34;https://dropper.waylonwalker.com/file/350a368f-0e6b-4375-98d6-6303961c0d6c.webp&#34; class=&#34;glightbox-link&#34; aria-label=&#34;350a368f-0e6b-4375-98d6-6303961c0d6c.webp&#34;&gt;&lt;img class=&#34;glightbox&#34; src=&#34;https://dropper.waylonwalker.com/file/350a368f-0e6b-4375-98d6-6303961c0d6c.webp&#34; alt=&#34;350a368f-0e6b-4375-98d6-6303961c0d6c.webp&#34;/ data-glightbox=&#34;description: 350a368f-0e6b-4375-98d6-6303961c0d6c.webp&#34;&gt;&lt;/a&gt;&#xA;&lt;/figure&gt;&#xA;</content>
    <author>
      <name>Waylon Walker</name>
      <email>hello@waylonwalker.com</email>
      <uri>https://waylonwalker.com</uri>
    </author>
  </entry>
  <entry>
    <title>More Details Than You Probably Wanted to Know About Recent Upd...</title>
    <id>https://new.waylonwalker.com/thought-949/</id>
    <updated>2026-03-23T17:26:22Z</updated>
    <published>2026-03-23T17:26:22Z</published>
    <link href="https://new.waylonwalker.com/thought-949/" rel="alternate" type="text/html"></link>
    <summary type="text">!https://blog.jim-nielsen.com/2026/notes-site-updates/</summary>
    <content type="html">&lt;div class=&#34;embed-card embed-card-external&#34;&gt;&#xA;  &lt;a class=&#34;embed-card-link  has-avatar has-avatar-before&#34; href=&#34;https://blog.jim-nielsen.com/2026/notes-site-updates/&#34; rel=&#34;noopener noreferrer&#34; target=&#34;_blank&#34; style=&#34;--favicon-url: url(&amp;#39;/assets/markata/link-avatars/blog.jim-nielsen.com.ico&amp;#39;);&#34; data-favicon=&#34;/assets/markata/link-avatars/blog.jim-nielsen.com.ico&#34;&gt;&#xA;    &lt;div class=&#34;embed-card-content&#34;&gt;&#xA;      &lt;div class=&#34;embed-card-title&#34;&gt;More Details Than You Probably Wanted to Know About Recent Updates to My Notes Site&lt;/div&gt;&#xA;      &lt;div class=&#34;embed-card-description&#34;&gt;Writing about the big beautiful mess that is making things for the world wide web.&lt;/div&gt;&#xA;      &lt;div class=&#34;embed-card-meta&#34;&gt;blog.jim-nielsen.com&lt;/div&gt;&#xA;    &lt;/div&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;I love the level of thought that Jim has put into these changes and making sure that urls don’t change.  I’ve got a big change in flight to my main site and this is one of the reasons that I’ve been sitting on it so long.  I want to make sure urls arent broken, redirects work as they should, and there are no 404’s from existing urls.  Currently the new version only exists on a separate deployement &lt;a href=&#34;https://go.waylonwalker.com/&#34; style=&#34;--favicon-url: url(&amp;#39;/assets/markata/link-avatars/go.waylonwalker.com.ico&amp;#39;);&#34; data-favicon=&#34;/assets/markata/link-avatars/go.waylonwalker.com.ico&#34; class=&#34;has-avatar  has-avatar-before&#34;&gt;https://go.waylonwalker.com/&lt;/a&gt;&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;I also added the ability to “shuffle” between posts. This is mostly for myself. I like to randomly jump through notes I’ve published in the past for reoccurring inspiration&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;Love this idea and have it on my new site already as well, and have really enjoyed using it by pressing it a dozen or so times over the course of a few sessions.  It highlights that I have too many posts like stars and thoughts and I should do some weighting to main posts.  mine is at &lt;a href=&#34;https://go.waylonwalker.com/random/&#34; style=&#34;--favicon-url: url(&amp;#39;/assets/markata/link-avatars/go.waylonwalker.com.ico&amp;#39;);&#34; data-favicon=&#34;/assets/markata/link-avatars/go.waylonwalker.com.ico&#34; class=&#34;has-avatar  has-avatar-before&#34;&gt;https://go.waylonwalker.com/random/&lt;/a&gt;&lt;/p&gt;&#xA;</content>
    <author>
      <name>Waylon Walker</name>
      <email>hello@waylonwalker.com</email>
      <uri>https://waylonwalker.com</uri>
    </author>
  </entry>
  <entry>
    <title>FFmpeg video crop</title>
    <id>https://new.waylonwalker.com/thought-940/</id>
    <updated>2026-02-25T14:29:59Z</updated>
    <published>2026-02-25T14:29:59Z</published>
    <link href="https://new.waylonwalker.com/thought-940/" rel="alternate" type="text/html"></link>
    <summary type="text">!https://tools.simonwillison.net/ffmpeg-crop</summary>
    <content type="html">&lt;div class=&#34;embed-card embed-card-external&#34;&gt;&#xA;  &lt;a class=&#34;embed-card-link  has-avatar has-avatar-before&#34; href=&#34;https://tools.simonwillison.net/ffmpeg-crop&#34; rel=&#34;noopener noreferrer&#34; target=&#34;_blank&#34; style=&#34;--favicon-url: url(&amp;#39;/assets/markata/link-avatars/tools.simonwillison.net.ico&amp;#39;);&#34; data-favicon=&#34;/assets/markata/link-avatars/tools.simonwillison.net.ico&#34;&gt;&#xA;    &lt;div class=&#34;embed-card-content&#34;&gt;&#xA;      &lt;div class=&#34;embed-card-title&#34;&gt;FFmpeg video crop&lt;/div&gt;&#xA;      &lt;div class=&#34;embed-card-meta&#34;&gt;tools.simonwillison.net&lt;/div&gt;&#xA;    &lt;/div&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;This was the inspiration for the next update in dropper that became a full clip editor.  The one that I’ve long wanted, but forgotten about.  It’s going to include this cropper, resize, image extractor, and trimmer.&lt;/p&gt;&#xA;</content>
    <author>
      <name>Waylon Walker</name>
      <email>hello@waylonwalker.com</email>
      <uri>https://waylonwalker.com</uri>
    </author>
  </entry>
  <entry>
    <title>Tiny Tool Town 🏘️</title>
    <id>https://new.waylonwalker.com/thought-939/</id>
    <updated>2026-02-25T14:27:11Z</updated>
    <published>2026-02-25T14:27:11Z</published>
    <link href="https://new.waylonwalker.com/thought-939/" rel="alternate" type="text/html"></link>
    <summary type="text">!https://www.tinytooltown.com/</summary>
    <content type="html">&lt;div class=&#34;embed-card embed-card-external&#34;&gt;&#xA;  &lt;a class=&#34;embed-card-link&#34; href=&#34;https://www.tinytooltown.com/&#34; rel=&#34;noopener noreferrer&#34; target=&#34;_blank&#34;&gt;&#xA;    &lt;div class=&#34;embed-card-image&#34;&gt;&#xA;      &lt;img class=&#34;glightbox&#34; src=&#34;https://www.tinytooltown.com/og-image.png&#34; alt=&#34;Tiny Tool Town 🏘️ — A delightful showcase for free, fun &amp;amp; open source tiny tools. Stupid-delightful software made with love.&#34; loading=&#34;lazy&#34;/ data-glightbox=&#34;description: Tiny Tool Town 🏘️ — A delightful showcase for free, fun &amp;amp; open source tiny tools. Stupid-delightful software made with love.&#34;&gt;&#xA;    &lt;/div&gt;&#xA;    &lt;div class=&#34;embed-card-content&#34;&gt;&#xA;      &lt;div class=&#34;embed-card-title&#34;&gt;Tiny Tool Town 🏘️&lt;/div&gt;&#xA;      &lt;div class=&#34;embed-card-description&#34;&gt;A delightful showcase for free, fun &amp;amp; open source tiny tools. Stupid-delightful software made with love.&lt;/div&gt;&#xA;      &lt;div class=&#34;embed-card-meta&#34;&gt;Tiny Tool Town · tinytooltown.com&lt;/div&gt;&#xA;    &lt;/div&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;Learned about this one from the @stipete &lt;a href=&#34;https://youtu.be/Wm7tsiJ1nIo?si=_qvZaR5SPWozBjrY&#34; style=&#34;--favicon-url: url(&amp;#39;/assets/markata/link-avatars/youtu.be.png&amp;#39;);&#34; data-favicon=&#34;/assets/markata/link-avatars/youtu.be.png&#34; class=&#34;has-avatar  has-avatar-before&#34;&gt;interview&lt;/a&gt; @scotthanselman did on YouTube.  This is proof that the internet is alive.  It’s such web 1.0 nostalgia to see that people can just build things!  Did you know that you can literally just build things and make them exist?  You don’t need users, You don’t need a big platform, you can just make something into existance.  It seems like something we have forgotten through web 2.0 where everything as become 4 major apps all linking to each other and trying to hoard all of the attention. Scroll through tehre are some really cool apps, probably nothing that has the polish you want, or is going to change your world.  What these apps have more than anything you’ve probably used in the recent years, is inspiration.  Its xyz, but the way I wanted, or with my little twist.  And no one else has to like it but me because I’m the user.&lt;/p&gt;&#xA;</content>
    <author>
      <name>Waylon Walker</name>
      <email>hello@waylonwalker.com</email>
      <uri>https://waylonwalker.com</uri>
    </author>
  </entry>
  <entry>
    <title>You Can Just Build Things</title>
    <id>https://new.waylonwalker.com/you-can-just-build-things/</id>
    <updated>2026-02-25T11:10:51Z</updated>
    <published>2026-02-25T11:10:51Z</published>
    <link href="https://new.waylonwalker.com/you-can-just-build-things/" rel="alternate" type="text/html"></link>
    <summary type="text">I don&#39;t know if you know this, but the web is a beautiful platform that allows you the freedom to create things and put them out there. Its not tied to four...</summary>
    <content type="html">&lt;p&gt;I don’t know if you know this, but the web is a beautiful platform that allows&#xA;you the freedom to create things and put them out there.  Its not tied to four&#xA;major platforms.  You don’t have to post your thoughts, ideas, and apps to a&#xA;platform, you can just make it.  This is a beautiful thing that seems to have&#xA;been forgotten.  I was inspired this morning from @scotthanselman’s&#xA;&lt;a href=&#34;https://www.tinytooltown.com/&#34;&gt;tinytooltown&lt;/a&gt;.  Looking through all of the tiny&#xA;tools that people have built for themself, as personal software, not answering&#xA;to anyone but themself, it was inspiring.&lt;/p&gt;&#xA;&lt;p&gt;Agents have gotten a lot better, like seriously better.  The ai bros that were ai pilled too early that said SWE is over in six months called it too early.  It wasn’t time.  Now since Nov 2025 we have had agents that can do some damn work.  Proving the point some of the greatest devs I’ve ever looked up to have not written a line of code since.  Not hype bros or someone not good at the craft, but seriously good devs leaning on it full time.&lt;/p&gt;&#xA;&lt;p&gt;AI hype over you don’t have to use ai, you can still just build things by hand, or if you don’t have the coding skills you can probably ask an agent to build something good enough for you to use on your own.&lt;/p&gt;&#xA;&lt;p&gt;As I wrote in &lt;a class=&#34;wikilink&#34; data-date=&#34;2024-01-28&#34; data-description=&#34;A poc is ** a product. I started focais, not in a rush, but as something that I already had a POC for and thought it would be easy. I wanted to build tools...&#34; data-title=&#34;poc is not product&#34; href=&#34;/poc-is-not-product/&#34; data-preview=&#34;A poc is ** a product. I started focais, not in a rush, but as something that I already had a POC for and thought it would be easy. I wanted to build tools...&#34;&gt;poc is not product&lt;/a&gt; building products is hard.  You cant just vibe code out the next jira, medium, Pinterest, photos, but you can build a good enough task board, blog, and photos app that does what you need it to do without these.  It may not get you off of some of these platforms, but there’s a good chance you can build out bespoke software that solves real problems you have&lt;/p&gt;&#xA;&lt;p&gt;This is what makes the web interesting.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a class=&#34;wikilink&#34; data-date=&#34;2025-09-16&#34; data-description=&#34;Inspired by Jim and Dave&#34; data-title=&#34;Why Make a Website in 2025&#34; href=&#34;/why-make-a-website-in-2025/&#34; data-preview=&#34;Inspired by Jim and Dave&#34;&gt;Why Make a Website in 2025&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a class=&#34;wikilink&#34; data-date=&#34;2024-08-05&#34; data-description=&#34;Over the past years couple of years blog traffic has been tanking, for some time I thought it might have just been me, but then i heard it from Dave Rupert...&#34; data-title=&#34;blogging in 2024&#34; href=&#34;/blogging-in-2024/&#34; data-preview=&#34;Over the past years couple of years blog traffic has been tanking, for some time I thought it might have just been me, but then i heard it from Dave Rupert...&#34;&gt;blogging in 2024&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a class=&#34;wikilink&#34; data-date=&#34;2021-01-21&#34; data-description=&#34;I create this blog with one person in mind, me.&#34; data-title=&#34;Blogging For Me&#34; href=&#34;/blogging-for-me/&#34; data-preview=&#34;I create this blog with one person in mind, me.&#34;&gt;Blogging For Me&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a class=&#34;wikilink&#34; data-date=&#34;2025-05-22&#34; data-description=&#34;I&amp;#39;m working on replacing my usage of google inline search apps with real apps, these are ones that I create and host on my own homelab. The first three that...&#34; data-title=&#34;tinyapps&#34; href=&#34;/tinyapps/&#34; data-preview=&#34;I&amp;#39;m working on replacing my usage of google inline search apps with real apps, these are ones that I create and host on my own homelab. The first three that...&#34;&gt;tinyapps&lt;/a&gt;&lt;/p&gt;&#xA;</content>
    <author>
      <name>Waylon Walker</name>
      <email>hello@waylonwalker.com</email>
      <uri>https://waylonwalker.com</uri>
    </author>
  </entry>
  <entry>
    <title>Is Ai Faster Yet</title>
    <id>https://new.waylonwalker.com/is-ai-faster-yet/</id>
    <updated>2026-02-20T14:37:36Z</updated>
    <published>2026-02-20T14:37:36Z</published>
    <link href="https://new.waylonwalker.com/is-ai-faster-yet/" rel="alternate" type="text/html"></link>
    <summary type="text">Is AI making us more productive yet, more faster yet?</summary>
    <content type="html">&lt;p&gt;Is AI making us more productive yet, more faster yet?&lt;/p&gt;&#xA;&lt;h2 id=&#34;non-code&#34;&gt;Non-code &lt;a href=&#34;#non-code&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;em&gt;probably not&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;I’ve seen this question hitting all over the Internet lately, and often points&#xA;to people not writing code.  Copilot turns prompts into emails, emails back&#xA;into summaries that look a lot like prompts. I think there’s a place for this,&#xA;making rambled thoughts sound more coherent, summarizing notes and meeting&#xA;minutes.  All good stuff but does it make us more productive, probably not by&#xA;an amount that you can put $ $ behind, unless you are reducing headcount.&#xA;&lt;em&gt;thats not what we are doing right???&lt;/em&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;coding&#34;&gt;Coding &lt;a href=&#34;#coding&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;em&gt;with chat, probably not&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;When we talk about chatbots like gippity I think there’s a benefit to having&#xA;someone with jr skills in everything to talk to, someone who can read all of&#xA;the docs in an instant to get you some code snippet that might have taken all&#xA;day to research and get right, but more productive, probably not.&lt;/p&gt;&#xA;&lt;h2 id=&#34;agentic-coding&#34;&gt;Agentic Coding &lt;a href=&#34;#agentic-coding&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;em&gt;maybe&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;I’ve hit a stride with coding agents this year unlike I’ve hit before.  Its able to bang out huge swaths of code in a prompt, with a good enough spec/plan.  It absolutely churns out code.  The bottleneck quickly becomes UAT.&lt;/p&gt;&#xA;&lt;p&gt;I definitely feel like I’m doing a lot.  There’s a lot that’s getting done that there’s no way I could do alone, it would take a full team with heavy coordination.&lt;/p&gt;&#xA;&lt;h2 id=&#34;am-i-more-productive&#34;&gt;Am I more productive &lt;a href=&#34;#am-i-more-productive&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;I’m definitely doing more, there are more lines of code, more ideas flowing, more docs written, more notes taken, more bugs squashed, more features out.&lt;/p&gt;&#xA;&lt;p&gt;In the sense of generating more $ $ for the stakeholder.  I really don’t know that I’m there yet, everything feels so new and different that there’s a bit of a learning curve to understand it all.  There’s a pace and cadence to everything that may not be quite caught up yet.&lt;/p&gt;&#xA;&lt;p&gt;It definitely feels like more is happening at a different pace that is hard to explain.&lt;/p&gt;&#xA;&lt;p&gt;I’m sure there is a wide spectrum of folks out there from some generating millions of additional revenue in new greenfield industries, to those burning tokens and getting nothing in return.&lt;/p&gt;&#xA;&lt;p&gt;With this SUPER AUTO COMPLETE engine it’s easy to say we found a bug affecting a user, but rather than squashing that one and getting a release out quickly squash ALL related bugs that a user might find in this category, it only takes a few more keystrokes right??&lt;/p&gt;&#xA;&lt;p&gt;Right now it feels like a lot is happening but its hard to sus out the real productivity from the noise.&lt;/p&gt;&#xA;&lt;h2 id=&#34;fin&#34;&gt;FIN &lt;a href=&#34;#fin&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;As with anything AI It took me a few weeks to wrap this up and everything is already different.  But I had some recent experiences of feeling slower than just doing it, and its all around context.  I have built out a lot of the systems that I maintain by hand, I really know them well and I can solve a lot of problems within the hour by hand with coffee break.  But now that I’m trying to lean on agents, I know they can do a more thorough job than I can faster, but I don’t have all of the data harnessed up.  Just today I spent all day trying to solve CI problems.  I can see the issue, I know the solution, but I want agents to solve this for me in the future so I spent the say working on a CLI to pull data from ci pipeline runs, manage the tokens get the logs, status, all of the data.  Because I know this will be the way of the future, they will outpace me, I just need to have methods of getting context ready for them, and agents that know how to do it set up.&lt;/p&gt;&#xA;</content>
    <author>
      <name>Waylon Walker</name>
      <email>hello@waylonwalker.com</email>
      <uri>https://waylonwalker.com</uri>
    </author>
  </entry>
  <entry>
    <title>double gutter</title>
    <id>https://new.waylonwalker.com/double-gutter/</id>
    <updated>2026-02-14T09:12:42Z</updated>
    <published>2026-02-14T09:12:42Z</published>
    <link href="https://new.waylonwalker.com/double-gutter/" rel="alternate" type="text/html"></link>
    <summary type="text">I keep forgetting about the double gutter problem with nested containers. When you put padding on a parent and the child also has padding, you get twice the...</summary>
    <content type="html">&lt;p&gt;I keep forgetting about the double gutter problem with nested containers.  When&#xA;you put padding on a parent and the child also has padding, you get twice the&#xA;spacing you wanted.&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-problem&#34;&gt;The Problem &lt;a href=&#34;#the-problem&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;pre class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nc&#34;&gt;container&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;padding&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;rem&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nc&#34;&gt;child&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;padding&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;rem&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Now your content is 4rem from the edge.  Not what I meant at all.&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-fix&#34;&gt;The Fix &lt;a href=&#34;#the-fix&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Either remove padding from the parent or use &lt;code&gt;box-sizing: border-box&lt;/code&gt; and plan&#xA;for it.  I usually just drop the parent padding when I realize what I have done.&lt;/p&gt;&#xA;</content>
    <author>
      <name>Waylon Walker</name>
      <email>hello@waylonwalker.com</email>
      <uri>https://waylonwalker.com</uri>
    </author>
  </entry>
  <entry>
    <title>feat: add llms.txt endpoint for LLM-optimized documentation by...</title>
    <id>https://new.waylonwalker.com/thought-903/</id>
    <updated>2026-01-08T07:22:02Z</updated>
    <published>2026-01-08T07:22:02Z</published>
    <link href="https://new.waylonwalker.com/thought-903/" rel="alternate" type="text/html"></link>
    <summary type="text">!https://github.com/tailwindlabs/tailwindcss.com/pull/2388#issuecomment-3717222957</summary>
    <content type="html">&lt;div class=&#34;embed-card embed-card-external&#34;&gt;&#xA;  &lt;a class=&#34;embed-card-link&#34; href=&#34;https://github.com/tailwindlabs/tailwindcss.com/pull/2388#issuecomment-3717222957&#34; rel=&#34;noopener noreferrer&#34; target=&#34;_blank&#34;&gt;&#xA;    &lt;div class=&#34;embed-card-image&#34;&gt;&#xA;      &lt;img src=&#34;https://opengraph.githubassets.com/d1a3efccfb3d0d35a0b5e964bd197c3f81615743a1ebcc02f07cb5c45742233f/tailwindlabs/tailwindcss.com/pull/2388&#34; alt=&#34;feat: add llms.txt endpoint for LLM-optimized documentation by quantizor · Pull Request #2388 · tailwindlabs/tailwindcss.com — Add /llms.txt endpoint that serves a concatenated, text-only version of all Tailwind CSS documentation pages optimized for Large Language Model consumption.&#xA;&amp;lt;p&amp;gt;Extract text from MDX files, removing J…&amp;#34; loading=“lazy”&amp;gt;&#xA;&amp;lt;/div&amp;gt;&#xA;&amp;lt;div class=&#34; embed-card-content glightbox&#34;=&#34;&#34;/ data-glightbox=&#34;description: feat: add llms.txt endpoint for LLM-optimized documentation by quantizor · Pull Request #2388 · tailwindlabs/tailwindcss.com — Add /llms.txt endpoint that serves a concatenated, text-only version of all Tailwind CSS documentation pages optimized for Large Language Model consumption.&#xA;&amp;lt;p&amp;gt;Extract text from MDX files, removing J…&amp;#34; loading=“lazy”&amp;gt;&#xA;&amp;lt;/div&amp;gt;&#xA;&amp;lt;div class=&#34;&gt;&#xA;&lt;div class=&#34;embed-card-title&#34;&gt;feat: add llms.txt endpoint for LLM-optimized documentation by quantizor · Pull Request #2388 · tailwindlabs/tailwindcss.com&lt;/div&gt;&#xA;&lt;div class=&#34;embed-card-description&#34;&gt;Add /llms.txt endpoint that serves a concatenated, text-only version of all Tailwind CSS documentation pages optimized for Large Language Model consumption.&lt;p&gt;&lt;/p&gt;&#xA;&lt;p&gt;Extract text from MDX files, removing J…&lt;/p&gt;&lt;/div&gt;&#xA;&lt;div class=&#34;embed-card-meta&#34;&gt;GitHub · github.com&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/a&gt;&lt;p&gt;&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;Damn this one is getting some reach, I’ve seen it from &lt;a href=&#34;https://simonwillison.net/2026/Jan/7/adam-wathan/#atom-everything&#34; style=&#34;--favicon-url: url(&amp;#39;/assets/markata/link-avatars/simonwillison.net.ico&amp;#39;);&#34; data-favicon=&#34;/assets/markata/link-avatars/simonwillison.net.ico&#34; class=&#34;has-avatar  has-avatar-before&#34;&gt;Simon Willison&lt;/a&gt; and &lt;a href=&#34;https://justin.searls.co/takes/2026-01-07-14h15m44s/&#34; style=&#34;--favicon-url: url(&amp;#39;/assets/markata/link-avatars/justin.searls.co.ico&amp;#39;);&#34; data-favicon=&#34;/assets/markata/link-avatars/justin.searls.co.ico&#34; class=&#34;has-avatar  has-avatar-before&#34;&gt;Justin Searls&lt;/a&gt; and &lt;a href=&#34;https://www.youtube.com/watch?v=luhgjBrRulk&#34; style=&#34;--favicon-url: url(&amp;#39;/assets/markata/link-avatars/www.youtube.com.png&amp;#39;);&#34; data-favicon=&#34;/assets/markata/link-avatars/www.youtube.com.png&#34; class=&#34;has-avatar  has-avatar-before&#34;&gt;t3.gg&lt;/a&gt;.  I feel for Adam, He has built a fantastic product that the world is running with, something we all needed.  Something that everyone laughs at turns their nose up “ppft I don’t need that” the first time they see it, but once they try people get it, and a lot of them like it and keep it.  But its something that no one really wants to pay for, no matter how big of products get built on it.  As we see more and more features coming to css, its not stopping, the work will always be there.  I really hope to see something happen to tailwind to keep it afloat. massive growth and revenue down 80% does not help.&lt;/p&gt;&#xA;</content>
    <author>
      <name>Waylon Walker</name>
      <email>hello@waylonwalker.com</email>
      <uri>https://waylonwalker.com</uri>
    </author>
  </entry>
  <entry>
    <title>light mode screen recording css</title>
    <id>https://new.waylonwalker.com/light-mode-screen-recording-css/</id>
    <updated>2026-01-02T10:29:10Z</updated>
    <published>2026-01-02T10:29:10Z</published>
    <link href="https://new.waylonwalker.com/light-mode-screen-recording-css/" rel="alternate" type="text/html"></link>
    <summary type="text">Yesterday I wrote about a way to do light-mode-screen-recording to convert to light mode from dark mode with ffmpeg. I was wondering if it could be done...</summary>
    <content type="html">&lt;p&gt;Yesterday I wrote about a way to do &lt;a class=&#34;wikilink&#34; data-date=&#34;2026-01-01&#34; data-description=&#34;I saw this tip from Cassidoo and had to try it out for myself. I kicked on a screen recording right from where my terminal was, converted it, and it actually...&#34; data-title=&#34;light mode screen recording&#34; href=&#34;/light-mode-screen-recording/&#34; data-preview=&#34;I saw this tip from Cassidoo and had to try it out for myself. I kicked on a screen recording right from where my terminal was, converted it, and it actually...&#34;&gt;light mode screen recording&lt;/a&gt; to&#xA;convert to light mode from dark mode with ffmpeg.  I was wondering if it could&#xA;be done entirely on the front end for web applications.  Turns out you can.&#xA;I’m sure there are limited wikis and site builders that don’t allow adding&#xA;style like this, but it works if you can.&lt;/p&gt;&#xA;&lt;pre class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;video&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;na&#34;&gt;src&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;https://dropper.waylonwalker.com/file/1c53dbcb-4b84-4e94-9f04-a42986ab3fa1.mp4?width=800&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;na&#34;&gt;controls&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;na&#34;&gt;style&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;filter: invert(1) hue-rotate(180deg) contrast(1.2) saturate(1.1);&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;&amp;lt;!--markata-attribution--&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;video&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;video src=&#34;https://dropper.waylonwalker.com/file/1c53dbcb-4b84-4e94-9f04-a42986ab3fa1.mp4?width=800&#34; controls=&#34;&#34; style=&#34;filter: invert(1) hue-rotate(0deg) contrast(1.2) saturate(1.1);&#34;&gt;&lt;/video&gt;&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;0 deg hue rotate&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;&lt;video src=&#34;https://dropper.waylonwalker.com/file/1c53dbcb-4b84-4e94-9f04-a42986ab3fa1.mp4?width=800&#34; controls=&#34;&#34; style=&#34;filter: invert(1) hue-rotate(90deg) contrast(1.2) saturate(1.1);&#34;&gt;&lt;/video&gt;&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;90 deg hue rotate&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;&lt;video src=&#34;https://dropper.waylonwalker.com/file/1c53dbcb-4b84-4e94-9f04-a42986ab3fa1.mp4?width=800&#34; controls=&#34;&#34; style=&#34;filter: invert(1) hue-rotate(180deg) contrast(1.2) saturate(1.1);&#34;&gt;&lt;/video&gt;&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;180 deg hue rotate&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;&lt;video src=&#34;https://dropper.waylonwalker.com/file/1c53dbcb-4b84-4e94-9f04-a42986ab3fa1.mp4?width=800&#34; controls=&#34;&#34; style=&#34;filter: invert(1) hue-rotate(270deg) contrast(1.2) saturate(1.1);&#34;&gt;&lt;/video&gt;&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;270 deg hue rotate&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;</content>
    <author>
      <name>Waylon Walker</name>
      <email>hello@waylonwalker.com</email>
      <uri>https://waylonwalker.com</uri>
    </author>
  </entry>
  <entry>
    <title>Convert a video from dark mode to light mode with FFmpeg!</title>
    <id>https://new.waylonwalker.com/thought-899/</id>
    <updated>2026-01-02T00:00:56Z</updated>
    <published>2026-01-02T00:00:56Z</published>
    <link href="https://new.waylonwalker.com/thought-899/" rel="alternate" type="text/html"></link>
    <summary type="text">!https://cassidoo.co/post/ffmpeg-dark-light/</summary>
    <content type="html">&lt;div class=&#34;embed-card embed-card-external&#34;&gt;&#xA;  &lt;a class=&#34;embed-card-link&#34; href=&#34;https://cassidoo.co/post/ffmpeg-dark-light/&#34; rel=&#34;noopener noreferrer&#34; target=&#34;_blank&#34;&gt;&#xA;    &lt;div class=&#34;embed-card-image&#34;&gt;&#xA;      &lt;img class=&#34;glightbox&#34; src=&#34;https://cassidoo.co/og-image/ffmpeg-dark-light.png&#34; alt=&#34;Convert a video from dark mode to light mode with FFmpeg! — Here&#34; loading=&#34;lazy&#34;/ data-glightbox=&#34;description: Convert a video from dark mode to light mode with FFmpeg! — Here&#34;&gt;&#xA;    &lt;/div&gt;&#xA;    &lt;div class=&#34;embed-card-content&#34;&gt;&#xA;      &lt;div class=&#34;embed-card-title&#34;&gt;Convert a video from dark mode to light mode with FFmpeg!&lt;/div&gt;&#xA;      &lt;div class=&#34;embed-card-description&#34;&gt;Here&lt;/div&gt;&#xA;      &lt;div class=&#34;embed-card-meta&#34;&gt;cassidoo.co&lt;/div&gt;&#xA;    &lt;/div&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;Converting video from dark mode to light mode after the fact is a pretty great idea, I’m surprised at how well it does.  Its definitely not perfect, but looks really good.&lt;/p&gt;&#xA;</content>
    <author>
      <name>Waylon Walker</name>
      <email>hello@waylonwalker.com</email>
      <uri>https://waylonwalker.com</uri>
    </author>
  </entry>
  <entry>
    <title>web snow fall</title>
    <id>https://new.waylonwalker.com/web-snow-fall/</id>
    <updated>2025-12-09T10:21:17Z</updated>
    <published>2025-12-09T10:21:17Z</published>
    <link href="https://new.waylonwalker.com/web-snow-fall/" rel="alternate" type="text/html"></link>
    <summary type="text">I found snow-fall component from zachleat, and its beautiful... to me. I like the way it looks, its simple and whimsical.</summary>
    <content type="html">&lt;p&gt;I found snow-fall component from&#xA;&lt;a href=&#34;https://www.zachleat.com/web/snow-fall/&#34; style=&#34;--favicon-url: url(&amp;#39;/assets/markata/link-avatars/www.zachleat.com.jpg&amp;#39;);&#34; data-favicon=&#34;/assets/markata/link-avatars/www.zachleat.com.jpg&#34; class=&#34;has-avatar  has-avatar-before&#34;&gt;zachleat&lt;/a&gt;, and its beautiful… to&#xA;me.  I like the way it looks, its simple and whimsical.&lt;/p&gt;&#xA;&lt;h2 id=&#34;install&#34;&gt;Install &lt;a href=&#34;#install&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;There is an npm package &lt;code&gt;&amp;lt;a href=&amp;#34;https://zachleat.com&amp;#34; class=&amp;#34;mention&amp;#34; data-name=&amp;#34;Zach Leatherman&amp;#34; data-bio=&amp;#34;A post by Zach Leatherman (zachleat)&amp;#34; data-avatar=&amp;#34;https://www.zachleat.com/og/opengraph-default.png&amp;#34; data-handle=&amp;#34;@zachleat&amp;#34;&amp;gt;@zachleat&amp;lt;/a&amp;gt;/snow-fall&lt;/code&gt; if that’s your thing.  I like&#xA;vendoring in small things like this.&lt;/p&gt;&#xA;&lt;pre class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -o static/snow-fall.js https://raw.githubusercontent.com/zachleat/snow-fall/refs/heads/main/snow-fall.js&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;I generally save it in my justfile so that I remember how I got it and how to&#xA;update…. yaya I could use npm, but I don’t for no build sites.&lt;/p&gt;&#xA;&lt;pre class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;get-snowfall:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    curl -o static/snow-fall.js https://raw.githubusercontent.com/zachleat/snow-fall/refs/heads/main/snow-fall.js&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;usage&#34;&gt;Usage &lt;a href=&#34;#usage&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Now add the component to your page.&lt;/p&gt;&#xA;&lt;pre class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;&amp;lt;!-- This belongs somewhere inside &amp;lt;head&amp;gt; --&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;script&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;type&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;module&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;src&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;snow-fall.js&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;script&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;c&#34;&gt;&amp;lt;!-- Adjust the src to your path --&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;&amp;lt;!-- This belongs somewhere inside &amp;lt;body&amp;gt; --&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;&amp;lt;!-- Anything before will be below the snow. --&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;snow-fall&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;snow-fall&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;&amp;lt;!-- Anything after will show above the snow. --&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;</content>
    <author>
      <name>Waylon Walker</name>
      <email>hello@waylonwalker.com</email>
      <uri>https://waylonwalker.com</uri>
    </author>
  </entry>
  <entry>
    <title>snow-fall Web Component—zachleat.com</title>
    <id>https://new.waylonwalker.com/thought-881/</id>
    <updated>2025-12-06T21:25:11Z</updated>
    <published>2025-12-06T21:25:11Z</published>
    <link href="https://new.waylonwalker.com/thought-881/" rel="alternate" type="text/html"></link>
    <summary type="text">!https://www.zachleat.com/web/snow-fall/</summary>
    <content type="html">&lt;div class=&#34;embed-card embed-card-external&#34;&gt;&#xA;  &lt;a class=&#34;embed-card-link&#34; href=&#34;https://www.zachleat.com/web/snow-fall/&#34; rel=&#34;noopener noreferrer&#34; target=&#34;_blank&#34;&gt;&#xA;    &lt;div class=&#34;embed-card-image&#34;&gt;&#xA;      &lt;img class=&#34;glightbox&#34; src=&#34;https://screenshot.11ty.app/https%3A%2F%2Fwww.zachleat.com%2Fopengraph%2Fweb%2Fsnow-fall%2F%3Fcache%3D_20251031/opengraph/&#34; alt=&#34;snow-fall Web Component—zachleat.com — A post by Zach Leatherman (zachleat)&#34; loading=&#34;lazy&#34;/ data-glightbox=&#34;description: snow-fall Web Component—zachleat.com — A post by Zach Leatherman (zachleat)&#34;&gt;&#xA;    &lt;/div&gt;&#xA;    &lt;div class=&#34;embed-card-content&#34;&gt;&#xA;      &lt;div class=&#34;embed-card-title&#34;&gt;snow-fall Web Component—zachleat.com&lt;/div&gt;&#xA;      &lt;div class=&#34;embed-card-description&#34;&gt;A post by Zach Leatherman (zachleat)&lt;/div&gt;&#xA;      &lt;div class=&#34;embed-card-meta&#34;&gt;Zach Leatherman · zachleat.com&lt;/div&gt;&#xA;    &lt;/div&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;This is a very fun way to add some whimsy to your site, added it to mine immediately when I saw it.  This is what digital gardens are for, Fun, entertainment, and self-exxpression.&lt;/p&gt;&#xA;</content>
    <author>
      <name>Waylon Walker</name>
      <email>hello@waylonwalker.com</email>
      <uri>https://waylonwalker.com</uri>
    </author>
  </entry>
  <entry>
    <title>starlette head request</title>
    <id>https://new.waylonwalker.com/starlette-head-request/</id>
    <updated>2025-10-22T09:11:31Z</updated>
    <published>2025-10-22T09:11:31Z</published>
    <link href="https://new.waylonwalker.com/starlette-head-request/" rel="alternate" type="text/html"></link>
    <summary type="text">Starlette has a head request that works right along side your get requests. This morning I fiddled around with custom routes for and , but had to manually...</summary>
    <content type="html">&lt;p&gt;&lt;a href=&#34;/starlette/&#34; class=&#34;glossary-term&#34; title=&#34;Starlette is a low level web framework for modern (as of 2025) async python development most famously used by &lt;a href=&#34;/fastapi/&#34; class=&#34;glossary-term&#34; title=&#34;FastAPI is a modern and efficient web framework for Python, built on top of the Starlette web framework, and pydantic for data validation and serialization.&#34;&gt;FastAPI&lt;/a&gt;.&#34;&gt;Starlette&lt;/a&gt; has a head request that works right along side your get requests.&#xA;This morning I fiddled around with custom routes for &lt;code&gt;GET&lt;/code&gt; and &lt;code&gt;HEAD&lt;/code&gt;, but had&#xA;to manually set some things about the file, and was still missing &lt;code&gt;e-tag&lt;/code&gt; in&#xA;the end.  Turns out as a developer you can &lt;a class=&#34;wikilink&#34; data-date=&#34;2025-06-23&#34; data-description=&#34;I just never quite understood why the word can send people over the top. I get it when you don&amp;#39;t know someone, you don&amp;#39;t have history with them, and they...&#34; data-title=&#34;just&#34; href=&#34;/just/&#34; data-preview=&#34;I just never quite understood why the word can send people over the top. I get it when you don&amp;#39;t know someone, you don&amp;#39;t have history with them, and they...&#34;&gt;just&lt;/a&gt; add a &lt;code&gt;head&lt;/code&gt; route to&#xA;your &lt;code&gt;get&lt;/code&gt; routes and starlette will strip the content for you, while&#xA;preserving all of those good headers that fastapi &lt;code&gt;FileResponse&lt;/code&gt; created&#xA;automatically for you.&lt;/p&gt;&#xA;&lt;pre class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;fastapi&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;APIRouter&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;fastapi.response&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;FileResponse&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;fastapi&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Request&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;pathlib&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Path&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;router&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;APIRouter&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nd&#34;&gt;@router.get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;/file/&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{filename}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nd&#34;&gt;@router.head&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;/file/&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{filename}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;async&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;get_file&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;filename&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;request&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Request&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,):&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;headers&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;s2&#34;&gt;&amp;#34;Cache-Control&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;no-cache, no-store, must-revalidate&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;pathlib&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Path&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;filename&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;sa&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;data/&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;filename&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;filename&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;exists&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;():&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;raise&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;HTTPException&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;status_code&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;404&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;detail&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;File not found&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;FileResponse&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;filename&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;headers&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;headers&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Here is an example of the response with curl.&lt;/p&gt;&#xA;&lt;pre class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;❯ curl -I -L &lt;span class=&#34;s2&#34;&gt;&amp;#34;http://localhost:8100/api/file/e5523925-1565-454c-bab3-c70c4deabc83.webp?width=250&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;HTTP/1.1 &lt;span class=&#34;m&#34;&gt;200&lt;/span&gt; OK&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;date: Wed, &lt;span class=&#34;m&#34;&gt;22&lt;/span&gt; Oct &lt;span class=&#34;m&#34;&gt;2025&lt;/span&gt; 14:16:03 GMT&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;server: uvicorn&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cache-control: no-cache, no-store, must-revalidate&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;content-type: image/webp&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;content-length: &lt;span class=&#34;m&#34;&gt;17206&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;last-modified: Tue, &lt;span class=&#34;m&#34;&gt;23&lt;/span&gt; Sep &lt;span class=&#34;m&#34;&gt;2025&lt;/span&gt; 14:03:20 GMT&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;etag: f891660c1543feb1af7564f08abdd511&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;❯ curl -I -L &lt;span class=&#34;s2&#34;&gt;&amp;#34;http://localhost:8100/api/file/unknown-file.webp?width=250&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;HTTP/1.1 &lt;span class=&#34;m&#34;&gt;404&lt;/span&gt; Not Found&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;date: Wed, &lt;span class=&#34;m&#34;&gt;22&lt;/span&gt; Oct &lt;span class=&#34;m&#34;&gt;2025&lt;/span&gt; 14:16:11 GMT&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;server: uvicorn&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;content-length: &lt;span class=&#34;m&#34;&gt;27&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;content-type: application/json&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;</content>
    <author>
      <name>Waylon Walker</name>
      <email>hello@waylonwalker.com</email>
      <uri>https://waylonwalker.com</uri>
    </author>
  </entry>
  <entry>
    <title>This Web Server Is 100% Solar Powered - YouTube</title>
    <id>https://new.waylonwalker.com/thought-851/</id>
    <updated>2025-10-12T03:21:38Z</updated>
    <published>2025-10-12T03:21:38Z</published>
    <link href="https://new.waylonwalker.com/thought-851/" rel="alternate" type="text/html"></link>
    <summary type="text">!https://www.youtube.com/watch?v=Gz56Cm-B6kg</summary>
    <content type="html">&lt;div class=&#34;embed-card embed-card-external embed-card-provider-youtube&#34;&gt;&#xA;  &lt;div class=&#34;embed-card-rich&#34;&gt;&#xA;&lt;lite-youtube videoid=&#34;Gz56Cm-B6kg&#34; title=&#34;This Web Server Is 100% Solar Powered&#34; playlabel=&#34;Play: This Web Server Is 100% Solar Powered&#34;&gt;&lt;/lite-youtube&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;This is super cool, thanks to Brodie for reading me this content as I do household chores.  &lt;a href=&#34;https://solar.lowtechmagazine.com/&#34; style=&#34;--favicon-url: url(&amp;#39;/assets/markata/link-avatars/solar.lowtechmagazine.com.svg&amp;#39;);&#34; data-favicon=&#34;/assets/markata/link-avatars/solar.lowtechmagazine.com.svg&#34; class=&#34;has-avatar  has-avatar-before&#34;&gt;lowtech magazine&lt;/a&gt; is a website ran completely on solar power with only enough battery backup to cover most days.  Adding enough to cover all days would increase its carbon footprint and negate the carbon offset of the solar panels it runs on.&lt;/p&gt;&#xA;&lt;p&gt;It’s fascinating to see a web server running completely off grid in a close power system.  These interesting websites are fascinating keep em coming Brodie.&lt;/p&gt;&#xA;</content>
    <author>
      <name>Waylon Walker</name>
      <email>hello@waylonwalker.com</email>
      <uri>https://waylonwalker.com</uri>
    </author>
  </entry>
  <entry>
    <title>Litewind</title>
    <id>https://new.waylonwalker.com/thought-849/</id>
    <updated>2025-10-05T06:12:20Z</updated>
    <published>2025-10-05T06:12:20Z</published>
    <link href="https://new.waylonwalker.com/thought-849/" rel="alternate" type="text/html"></link>
    <summary type="text">!https://litewindcss.com/</summary>
    <content type="html">&lt;div class=&#34;embed-card embed-card-external&#34;&gt;&#xA;  &lt;a class=&#34;embed-card-link  has-avatar has-avatar-before&#34; href=&#34;https://litewindcss.com/&#34; rel=&#34;noopener noreferrer&#34; target=&#34;_blank&#34; style=&#34;--favicon-url: url(&amp;#39;/assets/markata/link-avatars/litewindcss.com.png&amp;#39;);&#34; data-favicon=&#34;/assets/markata/link-avatars/litewindcss.com.png&#34;&gt;&#xA;    &lt;div class=&#34;embed-card-content&#34;&gt;&#xA;      &lt;div class=&#34;embed-card-title&#34;&gt;Litewind&lt;/div&gt;&#xA;      &lt;div class=&#34;embed-card-description&#34;&gt;Litewind is Tailwind without the build step&lt;/div&gt;&#xA;      &lt;div class=&#34;embed-card-meta&#34;&gt;litewindcss.com&lt;/div&gt;&#xA;    &lt;/div&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;This is a sick no-build version of tailwind.  I have a couple of projects that the build step of tailwind is cumbersome on, mostly because they are for non-js devs.  Some are for backend python devs, some are for folks that mostly want markdown with some styles.  This is a perfect no-build tailwind alternative.&lt;/p&gt;&#xA;</content>
    <author>
      <name>Waylon Walker</name>
      <email>hello@waylonwalker.com</email>
      <uri>https://waylonwalker.com</uri>
    </author>
  </entry>
</feed>