<?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: python</title>
  <id>https://waylonwalker.com/tags/python/atom.xml</id>
  <updated>2026-03-31T21:02:17Z</updated>
  <subtitle>All posts with the tag &#34;python&#34;</subtitle>
  <link href="https://waylonwalker.com/tags/python/" rel="alternate" type="text/html"></link>
  <link href="https://waylonwalker.com/tags/python/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>💭 Release 0.9.17 · astral-sh/uv · GitHub</title>
    <id>https://waylonwalker.com/thought-961/</id>
    <updated>2026-03-31T21:02:17Z</updated>
    <published>2026-03-31T21:02:17Z</published>
    <link href="https://waylonwalker.com/thought-961/" rel="alternate" type="text/html"></link>
    <summary type="text">!https://github.com/astral-sh/uv/releases/tag/0.9.17</summary>
    <content type="html">&lt;figure&gt;&#xA;&lt;a href=&#34;/static/https://github.com/astral-sh/uv/releases/tag/0.9.17&#34; class=&#34;glightbox-link&#34;&gt;&lt;img class=&#34;glightbox&#34; src=&#34;/static/https://github.com/astral-sh/uv/releases/tag/0.9.17&#34; alt=&#34;https://github.com/astral-sh/uv/releases/tag/0.9.17&#34;/ data-glightbox=&#34;description: https://github.com/astral-sh/uv/releases/tag/0.9.17&#34;&gt;&lt;/a&gt;&#xA;&lt;/figure&gt;&#xA;&lt;p&gt;uv adds dependency cooldowns via &lt;a href=&#34;https://github.com/astral-sh/uv/pull/16814&#34; style=&#34;--favicon-url: url(&amp;#39;/assets/markata/link-avatars/github.com.ico&amp;#39;);&#34; data-favicon=&#34;/assets/markata/link-avatars/github.com.ico&#34; class=&#34;has-avatar  has-avatar-before&#34;&gt;#16814&lt;/a&gt;. Well needed feature in todays world, far from a guarantee, but its something.&lt;/p&gt;&#xA;&lt;div class=&#34;admonition note&#34;&gt;&#xA;&lt;p class=&#34;admonition-title&#34;&gt;Note&lt;/p&gt;&#xA;&lt;p&gt;This post is a &lt;a href=&#34;/thoughts/&#34; class=&#34;wikilink&#34; data-title=&#34;Thoughts&#34; data-description=&#34;These are generally my thoughts on a web page or some sort of url, except a rare few don&amp;#39;t have a link. These are dual published off of my...&#34; data-date=&#34;2024-04-01&#34; data-preview=&#34;These are generally my thoughts on a web page or some sort of url, except a rare few don&amp;#39;t have a link. These are dual published off of my...&#34;&gt;thought&lt;/a&gt;. It’s a short note that I make&#xA;about someone else’s content online &lt;a href=&#34;/tags/thoughts/&#34; class=&#34;hashtag-tag&#34; data-tag=&#34;thoughts&#34; data-count=&#34;2&#34; data-reading-time=&#34;3&#34; data-reading-time-text=&#34;3 minutes&#34;&gt;#thoughts&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;</content>
    <author>
      <name>Waylon Walker</name>
      <email>hello@waylonwalker.com</email>
      <uri>https://waylonwalker.com</uri>
    </author>
  </entry>
  <entry>
    <title>Markata-Go</title>
    <id>https://waylonwalker.com/markata-go/</id>
    <updated>2026-03-24T17:30:39Z</updated>
    <published>2026-03-24T17:30:39Z</published>
    <link href="https://waylonwalker.com/markata-go/" rel="alternate" type="text/html"></link>
    <content type="text">&#xA;</content>
    <author>
      <name>Waylon Walker</name>
      <email>hello@waylonwalker.com</email>
      <uri>https://waylonwalker.com</uri>
    </author>
  </entry>
  <entry>
    <title>💭 uvx.sh | Astral</title>
    <id>https://waylonwalker.com/thought-928/</id>
    <updated>2026-02-16T14:21:29Z</updated>
    <published>2026-02-16T14:21:29Z</published>
    <link href="https://waylonwalker.com/thought-928/" rel="alternate" type="text/html"></link>
    <summary type="text">!https://uvx.sh/</summary>
    <content type="html">&lt;div class=&#34;embed-card embed-card-external&#34;&gt;&#xA;  &lt;a href=&#34;https://uvx.sh/&#34; class=&#34;embed-card-link&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;&#xA;    &lt;div class=&#34;embed-card-content&#34;&gt;&#xA;      &lt;div class=&#34;embed-card-title&#34;&gt;uvx.sh | Astral&lt;/div&gt;&#xA;      &lt;div class=&#34;embed-card-description&#34;&gt;Install Python tools with a single command. Powered by uv.&lt;/div&gt;&#xA;      &lt;div class=&#34;embed-card-meta&#34;&gt;uvx.sh&lt;/div&gt;&#xA;    &lt;/div&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;astral silently dropped a clever uvx.sh to help builders reach a wider audience, no longer does a user need to have python installed prior to installing a python cli. It does have a hard requirement on having curl or wget available.&lt;/p&gt;&#xA;&lt;div class=&#34;admonition note&#34;&gt;&#xA;&lt;p class=&#34;admonition-title&#34;&gt;Note&lt;/p&gt;&#xA;&lt;p&gt;This post is a &lt;a href=&#34;/thoughts/&#34; class=&#34;wikilink&#34; data-title=&#34;Thoughts&#34; data-description=&#34;These are generally my thoughts on a web page or some sort of url, except a rare few don&amp;#39;t have a link. These are dual published off of my...&#34; data-date=&#34;2024-04-01&#34; data-preview=&#34;These are generally my thoughts on a web page or some sort of url, except a rare few don&amp;#39;t have a link. These are dual published off of my...&#34;&gt;thought&lt;/a&gt;. It’s a short note that I make&#xA;about someone else’s content online &lt;a href=&#34;/tags/thoughts/&#34; class=&#34;hashtag-tag&#34; data-tag=&#34;thoughts&#34; data-count=&#34;2&#34; data-reading-time=&#34;3&#34; data-reading-time-text=&#34;3 minutes&#34;&gt;#thoughts&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;</content>
    <author>
      <name>Waylon Walker</name>
      <email>hello@waylonwalker.com</email>
      <uri>https://waylonwalker.com</uri>
    </author>
  </entry>
  <entry>
    <title>Mc Poem</title>
    <id>https://waylonwalker.com/mc-poem/</id>
    <updated>2026-01-23T20:07:02Z</updated>
    <published>2026-01-23T20:07:02Z</published>
    <link href="https://waylonwalker.com/mc-poem/" rel="alternate" type="text/html"></link>
    <content type="text">&#xA;</content>
    <author>
      <name>Waylon Walker</name>
      <email>hello@waylonwalker.com</email>
      <uri>https://waylonwalker.com</uri>
    </author>
  </entry>
  <entry>
    <title>format markdown with mdformat</title>
    <id>https://waylonwalker.com/format-markdown-with-mdformat/</id>
    <updated>2026-01-19T20:41:14Z</updated>
    <published>2026-01-19T20:41:14Z</published>
    <link href="https://waylonwalker.com/format-markdown-with-mdformat/" rel="alternate" type="text/html"></link>
    <summary type="text">I really wish I would have got this right a few years ago. Theres a couple of flags I had to use to get mdformat to do hard wraps at 80 characters and not...</summary>
    <content type="html">&lt;p&gt;I really wish I would have got this right a few years ago. Theres a couple of&#xA;flags I had to use to get mdformat to do hard wraps at 80 characters and not&#xA;wreck tables. This mix of flags and plugins is workign really well for me so&#xA;far.&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;mdfmt&lt;span class=&#34;o&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;o&#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;    uvx &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;        --with &lt;span class=&#34;s2&#34;&gt;&amp;#34;mdformat-ruff&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;        --with &lt;span class=&#34;s2&#34;&gt;&amp;#34;mdformat-beautysh&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;        --with &lt;span class=&#34;s2&#34;&gt;&amp;#34;mdformat-web&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;        --with &lt;span class=&#34;s2&#34;&gt;&amp;#34;mdformat-config&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;        --with &lt;span class=&#34;s2&#34;&gt;&amp;#34;mdformat-gfm&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;        --with &lt;span class=&#34;s2&#34;&gt;&amp;#34;mdformat-front-matters&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;        --with &lt;span class=&#34;s2&#34;&gt;&amp;#34;mdformat-wikilink&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;        --with &lt;span class=&#34;s2&#34;&gt;&amp;#34;mdformat-simple-breaks&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;        mdformat &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;        --wrap &lt;span class=&#34;m&#34;&gt;80&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;        --end-of-line lf &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;        --codeformatters python &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;        --codeformatters bash &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;        &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$@&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&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;o&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;And as pre-commmit.&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;l&#34;&gt;repos&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;- &lt;span class=&#34;nt&#34;&gt;repo&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;https://github.com/hukkin/mdformat&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;rev&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1.0.0&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# pin to the version you want&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;hooks&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;nt&#34;&gt;id&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;mdformat&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;args&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;          &lt;/span&gt;- --&lt;span class=&#34;l&#34;&gt;wrap&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;          &lt;/span&gt;- &lt;span class=&#34;s2&#34;&gt;&amp;#34;80&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;          &lt;/span&gt;- --&lt;span class=&#34;l&#34;&gt;end-of-line&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;          &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;lf&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;          &lt;/span&gt;- --&lt;span class=&#34;l&#34;&gt;codeformatters&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;          &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;python&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;          &lt;/span&gt;- --&lt;span class=&#34;l&#34;&gt;codeformatters&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;          &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;bash&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;additional_dependencies&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;          &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;mdformat-ruff&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;          &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;mdformat-beautysh&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;          &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;mdformat-web&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;          &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;mdformat-config&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;          &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;mdformat-gfm&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;          &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;mdformat-front-matters&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;          &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;mdformat-wikilink&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;          &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;mdformat-simple-breaks&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&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>My First Agentic Workflow</title>
    <id>https://waylonwalker.com/my-first-agentic-workflow/</id>
    <updated>2026-01-19T09:40:20Z</updated>
    <published>2026-01-19T09:40:20Z</published>
    <link href="https://waylonwalker.com/my-first-agentic-workflow/" rel="alternate" type="text/html"></link>
    <summary type="text">In early 2026 I&#39;m trying to lean more in to agentic workflows. The tools are not only better than they were a year ago, but available to me now unlike they...</summary>
    <content type="html">&lt;p&gt;In early 2026 I’m trying to lean more in to agentic workflows.  The tools are&#xA;not only better than they were a year ago, but available to me now unlike they&#xA;were 6 months ago.&lt;/p&gt;&#xA;&lt;h2 id=&#34;what-im-using&#34;&gt;What I’m using &lt;a href=&#34;#what-im-using&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;At home I’m using opencode, the tooling here is fantastic.  LSP incide of these&#xA;things is incredible, mcp is fine when its needed.  The free models it gives&#xA;you are impressively good for free models, but they are still not the big&#xA;models from the big providers.  I’m using what work gives me, they give me a&#xA;tool with access to good models, the models are great, the tools kinda suck.&#xA;I’m being vaugue here because I dont share real work details.&lt;/p&gt;&#xA;&lt;h2 id=&#34;skepticism&#34;&gt;Skepticism &lt;a href=&#34;#skepticism&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;I’ve been skeptical the whole way, I see ai being a very useful tool.  I remain&#xA;&lt;a href=&#34;/techbrophobic/&#34; class=&#34;wikilink&#34; data-title=&#34;Techbrophobic&#34; data-description=&#34;I just heard someone drop the this term and it kinda fits a lot of shit on the internet right now. Arguing that its OK to question AI, its OK to like it, its...&#34; data-date=&#34;2025-11-09&#34; data-preview=&#34;I just heard someone drop the this term and it kinda fits a lot of shit on the internet right now. Arguing that its OK to question AI, its OK to like it, its...&#34;&gt;Techbrophobic&lt;/a&gt;.  It’s better than the non believers will tell you, and no&#xA;where near as good as the hype bros will tell you.  The industry is shitty and&#xA;doing shitty things, I’m not here to change this, I’m here to do my thing and&#xA;try to get better.&lt;/p&gt;&#xA;&lt;h2 id=&#34;software-engineering-is-not-gone&#34;&gt;Software Engineering is not gone &lt;a href=&#34;#software-engineering-is-not-gone&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;What I’m feeling is that agentic workflows with llms are not going to replace&#xA;Software Engineering, I’m with Simon Willison holding out hope that it will&#xA;actually enable more companies to have needs and expand the industry.  I really&#xA;see where these workflows allow us to see the forest for the trees and work at&#xA;a higher level than we otherwise would be able to.&lt;/p&gt;&#xA;&lt;hr/&gt;&#xA;&lt;h2 id=&#34;setup&#34;&gt;Setup &lt;a href=&#34;#setup&#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;/init&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;&#xA;&lt;li&gt;AGENTS.md&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;issue---iterate&#34;&gt;Issue - iterate &lt;a href=&#34;#issue---iterate&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;feature request&lt;/li&gt;&#xA;&lt;li&gt;bug report&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;issue.md&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;h2 id=&#34;plan---iterate&#34;&gt;Plan - iterate &lt;a href=&#34;#plan---iterate&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Look at @issue.md and make a plan, then iterate on the plan.&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;plan.md&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;h2 id=&#34;execution&#34;&gt;Execution &lt;a href=&#34;#execution&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;h2 id=&#34;review---go-back-to-planissue&#34;&gt;Review - go back to plan/issue &lt;a href=&#34;#review---go-back-to-planissue&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;h2 id=&#34;changelog&#34;&gt;Changelog &lt;a href=&#34;#changelog&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;h2 id=&#34;pr-review&#34;&gt;PR Review &lt;a href=&#34;#pr-review&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;</content>
    <author>
      <name>Waylon Walker</name>
      <email>hello@waylonwalker.com</email>
      <uri>https://waylonwalker.com</uri>
    </author>
  </entry>
  <entry>
    <title>Dont Trust Users Tokens</title>
    <id>https://waylonwalker.com/dont-trust-users-tokens/</id>
    <updated>2026-01-14T19:49:43Z</updated>
    <published>2026-01-14T19:49:43Z</published>
    <link href="https://waylonwalker.com/dont-trust-users-tokens/" rel="alternate" type="text/html"></link>
    <summary type="text">User states: Upon picking up an old project and trying to install pip says &#34;cannot find a version to satisfy&#34;</summary>
    <content type="html">&lt;p&gt;User states: Upon picking up an old project and trying to install pip says&#xA;“cannot find a version to satisfy”&lt;/p&gt;&#xA;&lt;p&gt;I’ve got this, I’ve had this a hundred times before it’s a python version, a&#xA;rogue package, maybe a yank from the pinned deps.  I pop open the project get&#xA;us on the same commit.  I get a different error, make a few updates and we are&#xA;good, except the user gets the same error from the start.&lt;/p&gt;&#xA;&lt;p&gt;They never saw the error I did, and my fix did not magically resolve their&#xA;error.  We circle all the things it could be for hours.  I consistently wipe my&#xA;venv, and recreate with ease, send them the commands I ran to no avail.&#xA;Something is up and I can’t put my finger on it.  We’ve checked all the things&#xA;and inched as close as we can to running everything exactly the same.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Os&lt;/li&gt;&#xA;&lt;li&gt;python version&lt;/li&gt;&#xA;&lt;li&gt;Network vpn&lt;/li&gt;&#xA;&lt;li&gt;uv version&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Nothing makes any sense.  Finally I throw in the towel, is it the artifact&#xA;server.  I forge a token and give him one to borrow.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;BAM&lt;/strong&gt; it works, like magic.  The first sign of progress.  Then he mentions.&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Huh that’s odd cause I just got mine this morning&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;Failing to mention this any earlier that getting a new token for a service and&#xA;it completely borked it!  I get it though, the error was very oddly presented&#xA;and not easy to see why&lt;/p&gt;&#xA;&lt;p&gt;There it was all along, looking back in the logs I see his redacted token going&#xA;to the wrong registry. One that does not include our packages, everything makes&#xA;sense now. The reason it couldn’t find a version to satisfy was not a python&#xA;version, os version, package conflict, it was that it couldn’t find a fucking&#xA;version of the thing to begin with.&lt;/p&gt;&#xA;&lt;p&gt;All this to say, don’t trust users tokens, save your time and just get fresh&#xA;ones with them.&lt;/p&gt;&#xA;&lt;p&gt;&lt;redacted&gt; if you read this it’s all cool, like I said it’s all part of the&#xA;job, no harsh feelings, at least we got a good story out of it right!&lt;/redacted&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>Characters</title>
    <id>https://waylonwalker.com/characters/</id>
    <updated>2026-01-09T18:58:22Z</updated>
    <published>2026-01-09T18:58:22Z</published>
    <link href="https://waylonwalker.com/characters/" rel="alternate" type="text/html"></link>
    <summary type="text">**</summary>
    <content type="html">&lt;h2 id=&#34;old-man-hardware&#34;&gt;Old Man Hardware &lt;a href=&#34;#old-man-hardware&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;strong&gt;Character Profile&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;em&gt;Name&lt;/em&gt;: Graybeard McGee&lt;br/&gt;&#xA;&lt;em&gt;Age&lt;/em&gt;: 64 years old&lt;br/&gt;&#xA;&lt;em&gt;Role&lt;/em&gt;: Senior Systems Architect (counting down to retirement)&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Background&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Graybeard’s been coding since before most developers were born—starting with assembly on PDP-11 systems in the late 1970s. He still has his original DEC VT100 terminal in the garage and actually uses it occasionally. His collection of vintage computing gear would make a museum curator jealous.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Tech Stack&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Loves&lt;/strong&gt;: C, Assembly, FORTRAN, Perl (the “real” scripting language)&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Hardware&lt;/strong&gt;: Sun SPARCstations, DEC VAX, vintage IBM mainframes&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Editor&lt;/strong&gt;: Vi (not Vim—“Vim’s for kids who need training wheels”)&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Version Control&lt;/strong&gt;: CVS ( reluctantly moved to &lt;a href=&#34;/glossary/git/&#34; class=&#34;glossary-term&#34; title=&#34;Git is a version control system for tracking changes in source code during software development. In the beginning there were many, some were licensed. As...&#34;&gt;Git&lt;/a&gt;, complains about it daily)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;Personality&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Grumpy but surprisingly helpful when you prove you’re not “another JavaScript framework cowboy”&lt;/li&gt;&#xA;&lt;li&gt;Believes “if it was good enough in 1985, it’s good enough now”&lt;/li&gt;&#xA;&lt;li&gt;His office smells like old electronics and coffee&lt;/li&gt;&#xA;&lt;li&gt;Has strong opinions about whitespace and indentation&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;Notable Quotes&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;“AI? That’s just fancy pattern matching. Call me when it can debug a memory leak in C.”&lt;/li&gt;&#xA;&lt;li&gt;“You kids and your ‘cloud’… back in my day we called it ‘someone else’s computer’ and we didn’t trust it either.”&lt;/li&gt;&#xA;&lt;li&gt;“No, I won’t help you with your React app. But if you’ve got a segfault, I’m your guy.”&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;Current Project&lt;/strong&gt;&#xA;Maintaining a 30-year-old C codebase that runs the company’s core system. Everyone’s afraid to touch it except him. He’s training exactly one junior developer to take over—mostly by complaining about how “kids these days can’t even read a man page.”&lt;/p&gt;&#xA;&lt;h2 id=&#34;image-prompts-for-graybeard-mcgee&#34;&gt;Image Prompts for Graybeard McGee &lt;a href=&#34;#image-prompts-for-graybeard-mcgee&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;strong&gt;Grumpy/Annoyed&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;Transform into GTA V promotional artwork, old bearded man with angry scowl and furrowed brow wearing classic computer geek glasses. Character art style with cinematic composition, game poster quality. He&amp;#39;s gesturing frustratedly at a modern laptop, vintage calculator watch visible. No background, no text.&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;&lt;strong&gt;Nostalgic/Happy&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;Transform into GTA V promotional artwork, old bearded man with warm nostalgic smile gazing at vintage DEC VT100 terminal. Character art style with cinematic composition, game poster quality. Right hand gently touching retro keyboard, surrounded by classic computing gear. No background, no text.&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;&lt;strong&gt;Frustrated with AI&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;Transform into GTA V promotional artwork, old bearded man with disgusted expression and eyes rolled back. Character art style with cinematic composition, game poster quality. One hand rubbing temples, laptop showing ChatGPT interface, coffee mug with anti-AI slogan. No background, no text.&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;&lt;strong&gt;Patient/Mentoring&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;Transform into GTA V promotional artwork, old bearded man with patient knowing expression pointing at code. Character art style with cinematic composition, game poster quality. Vi editor with C code visible, teaching gesture toward junior developer. No background, no text.&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;&lt;strong&gt;Retirement Dreaming&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;Transform into GTA V promotional artwork, old bearded man with peaceful content expression leaning back in chair. Character art style with cinematic composition, game poster quality. Feet up on desk, calendar counting down days, relaxed accomplished pose. No background, no text.&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;&lt;strong&gt;Hacker Mode&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;Transform into GTA V promotional artwork, old bearded man with intense focused expression at terminal. Character art style with cinematic composition, game poster quality. Multiple monitors showing green code, vintage keyboard, cyberpunk glow on glasses. No background, no text.&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;&lt;strong&gt;Coffee Break&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;Transform into GTA V promotional artwork, old bearded man holding coffee mug that says &amp;#39;I turn coffee into code&amp;#39;. Character art style with cinematic composition, game poster quality. Leaning casually against server racks, steam rising from mug. No background, no text.&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;hr/&gt;&#xA;&lt;h2 id=&#34;devops-dad&#34;&gt;DevOps Dad &lt;a href=&#34;#devops-dad&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;strong&gt;Character Profile&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;em&gt;Name&lt;/em&gt;: Alex “Container Dad” Rodriguez&lt;br/&gt;&#xA;&lt;em&gt;Age&lt;/em&gt;: 38 years old&lt;br/&gt;&#xA;&lt;em&gt;Role&lt;/em&gt;: Senior Infrastructure Engineer&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Background&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Alex lives and breathes infrastructure but has somehow managed to balance being a senior Kubernetes expert with being an actual dad. His home lab makes most corporate data centers look like Raspberry Pi projects. He’s got more services &lt;a href=&#34;/self-host/&#34; class=&#34;glossary-term&#34; title=&#34;Self hosting is the act of hosting your own applications and services without using a SAS provider. This is typically done with your own hardware, but there...&#34;&gt;self-hosted&lt;/a&gt; than most startups have employees, and he treats his Kubernetes clusters like his children—except his actual children get more attention sometimes.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Tech Stack&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Loves&lt;/strong&gt;: Kubernetes, Python, &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;, Docker, Terraform, Ansible&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Infrastructure&lt;/strong&gt;: Proxmox, TrueNAS, WireGuard, Nginx&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;DevTools&lt;/strong&gt;: Neovim, GitLab CI/CD, Prometheus/Grafana&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Blog&lt;/strong&gt;: Hugo with custom CI/CD pipeline&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Gaming&lt;/strong&gt;: Steam Deck, Nintendo Switch, retro emulation&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;Personality&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Calm under pressure (dealing with production outages and toddler tantrums)&lt;/li&gt;&#xA;&lt;li&gt;Optimizes everything—including his kids’ bedtime routines&lt;/li&gt;&#xA;&lt;li&gt;Believes “if you can’t containerize it, you shouldn’t be running it”&lt;/li&gt;&#xA;&lt;li&gt;Turns every family problem into a DevOps metaphor&lt;/li&gt;&#xA;&lt;li&gt;His wife thinks “kubectl apply” is his love language&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;Notable Quotes&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;“Parenting is just managing dependencies with more unpredictable APIs.”&lt;/li&gt;&#xA;&lt;li&gt;“No, I can’t fix your WiFi. Yes, I can rebuild the entire network from scratch with Terraform.”&lt;/li&gt;&#xA;&lt;li&gt;“The kids are fine, they just need a quick restart and maybe a configuration reload.”&lt;/li&gt;&#xA;&lt;li&gt;“I don’t have a gaming addiction, I’m just stress-testing my home network infrastructure.”&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;Current Setup&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Home lab: 3-node Proxmox cluster with 128GB RAM total&lt;/li&gt;&#xA;&lt;li&gt;Self-hosted: Nextcloud, Jellyfin, Home Assistant, GitLab, MinIO&lt;/li&gt;&#xA;&lt;li&gt;Blog: Kubernetes-deployed Hugo site with automated CI/CD&lt;/li&gt;&#xA;&lt;li&gt;Gaming: Custom-built Steam server streaming to multiple devices&lt;/li&gt;&#xA;&lt;li&gt;Kids’ devices: All managed through his custom Ansible playbooks&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;Daily Routine&lt;/strong&gt;&#xA;6:00 AM: Check cluster health and monitoring alerts&lt;br/&gt;&#xA;6:30 AM: Deploy latest blog changes via GitLab CI&lt;br/&gt;&#xA;7:00 AM: Make coffee while updating Terraform state&lt;br/&gt;&#xA;8:00 AM: Get kids ready (manually, no automation yet)&lt;br/&gt;&#xA;9:00 AM: Work - managing massive Kubernetes clusters&lt;br/&gt;&#xA;6:00 PM: Family time (and maybe a quick gaming session)&lt;br/&gt;&#xA;9:00 PM: Kids bedtime, then home lab maintenance&lt;br/&gt;&#xA;11:00 PM: Game time or blog development&lt;/p&gt;&#xA;&lt;h2 id=&#34;image-prompts-for-devops-dad&#34;&gt;Image Prompts for DevOps Dad &lt;a href=&#34;#image-prompts-for-devops-dad&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;strong&gt;Multi-tasking Mode&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;Transform into GTA V promotional artwork, energetic dad in his 30s wearing wireless earbuds and hoodie. Character art style with cinematic composition, game poster quality. Balancing laptop showing Kubernetes dashboard while holding skateboard, coffee mug nearby. No background, no text.&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;&lt;strong&gt;Infrastructure Focus&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;Transform into GTA V promotional artwork, focused infrastructure engineer in late 30s with concentrated expression. Character art style with cinematic composition, game poster quality. Multiple monitors showing GitLab CI/CD pipelines, terminal windows with kubectl commands. No background, no text.&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;&lt;strong&gt;Skateboard Commute&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;Transform into GTA V promotional artwork, cool dad in 30s riding skateboard with backpack. Character art style with cinematic composition, game poster quality. Laptop visible in backpack, wearing tech company hoodie, confident smile. No background, no text.&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;&lt;strong&gt;Gaming Session&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;Transform into GTA V promotional artwork, intense gamer in his 30s wearing headset. Character art style with cinematic composition, game poster quality. Steam Deck in hand, dual monitors setup, energized expression. No background, no text.&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;&lt;strong&gt;Blog Deployment&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;Transform into GTA V promotional artwork, tech blogger in his 30s at standing desk. Character art style with cinematic composition, game poster quality. Hugo site preview on monitor, terminal showing git commands, satisfied expression. No background, no text.&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;&lt;strong&gt;Kids + Tech&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;Transform into GTA V promotional artwork, patient dad showing tablet to young child. Character art style with cinematic composition, game poster quality. Teaching kid about technology, warm encouraging expression, casual weekend attire. No background, no text.&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;&lt;strong&gt;Home Lab Pride&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;Transform into GTA V promotional artwork, proud infrastructure engineer standing by server rack. Character art style with cinematic composition, game poster quality. Gesturing toward home lab equipment, confident pose, tools in belt. No background, no text.&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;hr/&gt;&#xA;&lt;p&gt;&lt;em&gt;More characters coming soon…&lt;/em&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>Og-Sample</title>
    <id>https://waylonwalker.com/og-sample/</id>
    <updated>2026-01-09T08:19:29Z</updated>
    <published>2026-01-09T08:19:29Z</published>
    <link href="https://waylonwalker.com/og-sample/" rel="alternate" type="text/html"></link>
    <summary type="text">I&#39;m making an effort to make my og images better yet again, I&#39;m going for that next 10% better. I really like my og images, but there are some title sizes...</summary>
    <content type="html">&lt;p&gt;I’m making an effort to make my &lt;a href=&#34;/og/&#34; class=&#34;glossary-term&#34; title=&#34;OG is short for open graph, a set of standard meta tags that are used for social media sharing. This is what tells other websites how to describe and display...&#34;&gt;og&lt;/a&gt; images better yet again, I’m going for that&#xA;next 10% better.  I really like my og images, but there are some title sizes&#xA;that overflow.  This page is a page to help debug.  How I make these og images&#xA;is for another day.&lt;/p&gt;&#xA;&lt;h2 id=&#34;script&#34;&gt;Script &lt;a href=&#34;#script&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;I use my own static site generator &lt;a href=&#34;/markata/&#34; class=&#34;wikilink&#34; data-title=&#34;markata&#34; data-description=&#34;This post is a work in progress.&#34; data-date=&#34;2024-05-30&#34; data-preview=&#34;This post is a work in progress.&#34;&gt;markata&lt;/a&gt;.  I can use it to generate a&#xA;list of posts wrapped in their og image.  I use itertools to do a groupby so&#xA;that I can do roughly every 5 characters larger, and see a wide variety of&#xA;sizes.&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;markata&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Markata&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;itertools&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;groupby&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;markata&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Markata&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;lens&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[{&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;length&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;len&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;post&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;title&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;title&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;post&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;title&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;slug&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;post&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;slug&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;post&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;m&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;posts&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;lens_sorted&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;sorted&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;lens&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;key&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;lambda&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;length&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;&#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;groups&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;n&#34;&gt;k&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;list&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;g&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;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;k&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;g&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;groupby&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;lens_sorted&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;key&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;lambda&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;length&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;//&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;5&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;n&#34;&gt;posts&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;g&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;g&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;groups&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;values&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;ogs&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&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;s1&#34;&gt;&amp;#39;[![&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;post&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;title&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;](https://shots.waylonwalker.com/shot/?url=https://waylonwalker.com/&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;post&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;slug&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;/og/&amp;amp;height=600&amp;amp;width=1200&amp;amp;scaled_width=1200&amp;amp;scaled_height=600&amp;amp;format=jpg&amp;amp;v=4)](https://waylonwalker.com/&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;post&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;slug&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;/og/)&amp;#39;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;post&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;posts&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;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\n\n&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;join&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ogs&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;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;og-sample&#34;&gt;OG-Sample &lt;a href=&#34;#og-sample&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://waylonwalker.com/sample/og/&#34;&gt;&lt;img class=&#34;glightbox&#34; src=&#34;https://shots.waylonwalker.com/shot/?url=https://waylonwalker.com/sample/og/&amp;amp;height=600&amp;amp;width=1200&amp;amp;scaled_width=1200&amp;amp;scaled_height=600&amp;amp;format=jpg&amp;amp;v=4&#34; alt=&#34;sample&#34;/ data-glightbox=&#34;description: sample&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://waylonwalker.com/kedro/og/&#34;&gt;&lt;img class=&#34;glightbox&#34; src=&#34;https://shots.waylonwalker.com/shot/?url=https://waylonwalker.com/kedro/og/&amp;amp;height=600&amp;amp;width=1200&amp;amp;scaled_width=1200&amp;amp;scaled_height=600&amp;amp;format=jpg&amp;amp;v=4&#34; alt=&#34;Kedro&#34;/ data-glightbox=&#34;description: Kedro&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://waylonwalker.com/weeknote-0/og/&#34;&gt;&lt;img class=&#34;glightbox&#34; src=&#34;https://shots.waylonwalker.com/shot/?url=https://waylonwalker.com/weeknote-0/og/&amp;amp;height=600&amp;amp;width=1200&amp;amp;scaled_width=1200&amp;amp;scaled_height=600&amp;amp;format=jpg&amp;amp;v=4&#34; alt=&#34;Weeknote 0&#34;/ data-glightbox=&#34;description: Weeknote 0&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://waylonwalker.com/upcoming-streams/og/&#34;&gt;&lt;img class=&#34;glightbox&#34; src=&#34;https://shots.waylonwalker.com/shot/?url=https://waylonwalker.com/upcoming-streams/og/&amp;amp;height=600&amp;amp;width=1200&amp;amp;scaled_width=1200&amp;amp;scaled_height=600&amp;amp;format=jpg&amp;amp;v=4&#34; alt=&#34;Upcoming Stream&#34;/ data-glightbox=&#34;description: Upcoming Stream&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://waylonwalker.com/codeit-bro-interview/og/&#34;&gt;&lt;img class=&#34;glightbox&#34; src=&#34;https://shots.waylonwalker.com/shot/?url=https://waylonwalker.com/codeit-bro-interview/og/&amp;amp;height=600&amp;amp;width=1200&amp;amp;scaled_width=1200&amp;amp;scaled_height=600&amp;amp;format=jpg&amp;amp;v=4&#34; alt=&#34;Codeit Bro Interview&#34;/ data-glightbox=&#34;description: Codeit Bro Interview&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://waylonwalker.com/doomlab7-homelab-argocd/og/&#34;&gt;&lt;img class=&#34;glightbox&#34; src=&#34;https://shots.waylonwalker.com/shot/?url=https://waylonwalker.com/doomlab7-homelab-argocd/og/&amp;amp;height=600&amp;amp;width=1200&amp;amp;scaled_width=1200&amp;amp;scaled_height=600&amp;amp;format=jpg&amp;amp;v=4&#34; alt=&#34;⭐ Doomlab7 homelab-argocd&#34;/ data-glightbox=&#34;description: ⭐ Doomlab7 homelab-argocd&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://waylonwalker.com/heathdbrown-python-code-tips/og/&#34;&gt;&lt;img class=&#34;glightbox&#34; src=&#34;https://shots.waylonwalker.com/shot/?url=https://waylonwalker.com/heathdbrown-python-code-tips/og/&amp;amp;height=600&amp;amp;width=1200&amp;amp;scaled_width=1200&amp;amp;scaled_height=600&amp;amp;format=jpg&amp;amp;v=4&#34; alt=&#34;⭐ heathdbrown python_code_tips&#34;/ data-glightbox=&#34;description: ⭐ heathdbrown python_code_tips&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://waylonwalker.com/making-good-documentation-in-python/og/&#34;&gt;&lt;img class=&#34;glightbox&#34; src=&#34;https://shots.waylonwalker.com/shot/?url=https://waylonwalker.com/making-good-documentation-in-python/og/&amp;amp;height=600&amp;amp;width=1200&amp;amp;scaled_width=1200&amp;amp;scaled_height=600&amp;amp;format=jpg&amp;amp;v=4&#34; alt=&#34;Making good documentation in python&#34;/ data-glightbox=&#34;description: Making good documentation in python&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://waylonwalker.com/s3-datascience/og/&#34;&gt;&lt;img class=&#34;glightbox&#34; src=&#34;https://shots.waylonwalker.com/shot/?url=https://waylonwalker.com/s3-datascience/og/&amp;amp;height=600&amp;amp;width=1200&amp;amp;scaled_width=1200&amp;amp;scaled_height=600&amp;amp;format=jpg&amp;amp;v=4&#34; alt=&#34;What DataScientists Should Know About S3&#34;/ data-glightbox=&#34;description: What DataScientists Should Know About S3&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://waylonwalker.com/nvim-treesitter-nvim-treesitter-textobjects/og/&#34;&gt;&lt;img class=&#34;glightbox&#34; src=&#34;https://shots.waylonwalker.com/shot/?url=https://waylonwalker.com/nvim-treesitter-nvim-treesitter-textobjects/og/&amp;amp;height=600&amp;amp;width=1200&amp;amp;scaled_width=1200&amp;amp;scaled_height=600&amp;amp;format=jpg&amp;amp;v=4&#34; alt=&#34;⭐ nvim-treesitter nvim-treesitter-textobjects&#34;/ data-glightbox=&#34;description: ⭐ nvim-treesitter nvim-treesitter-textobjects&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://waylonwalker.com/dataengineerone-kedro-streaming-twitter-pipeline/og/&#34;&gt;&lt;img class=&#34;glightbox&#34; src=&#34;https://shots.waylonwalker.com/shot/?url=https://waylonwalker.com/dataengineerone-kedro-streaming-twitter-pipeline/og/&amp;amp;height=600&amp;amp;width=1200&amp;amp;scaled_width=1200&amp;amp;scaled_height=600&amp;amp;format=jpg&amp;amp;v=4&#34; alt=&#34;⭐ dataengineerone kedro-streaming-twitter-pipeline&#34;/ data-glightbox=&#34;description: ⭐ dataengineerone kedro-streaming-twitter-pipeline&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://waylonwalker.com/screenshot-to-blog/og/&#34;&gt;&lt;img class=&#34;glightbox&#34; src=&#34;https://shots.waylonwalker.com/shot/?url=https://waylonwalker.com/screenshot-to-blog/og/&amp;amp;height=600&amp;amp;width=1200&amp;amp;scaled_width=1200&amp;amp;scaled_height=600&amp;amp;format=jpg&amp;amp;v=4&#34; alt=&#34;How I Quickly Capture Screenshots directly into My Blog&#34;/ data-glightbox=&#34;description: How I Quickly Capture Screenshots directly into My Blog&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://waylonwalker.com/looking-for-a-heroku-replacement/og/&#34;&gt;&lt;img class=&#34;glightbox&#34; src=&#34;https://shots.waylonwalker.com/shot/?url=https://waylonwalker.com/looking-for-a-heroku-replacement/og/&amp;amp;height=600&amp;amp;width=1200&amp;amp;scaled_width=1200&amp;amp;scaled_height=600&amp;amp;format=jpg&amp;amp;v=4&#34; alt=&#34;Looking for a Heroku replacement, What I found was shocking!&#34;/ data-glightbox=&#34;description: Looking for a Heroku replacement, What I found was shocking!&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://waylonwalker.com/thoughts-853/og/&#34;&gt;&lt;img class=&#34;glightbox&#34; src=&#34;https://shots.waylonwalker.com/shot/?url=https://waylonwalker.com/thoughts-853/og/&amp;amp;height=600&amp;amp;width=1200&amp;amp;scaled_width=1200&amp;amp;scaled_height=600&amp;amp;format=jpg&amp;amp;v=4&#34; alt=&#34;💭 My Bed Doesn’t Work Because of AWS Outage? TheStandup - YouTube&#34;/ data-glightbox=&#34;description: 💭 My Bed Doesn’t Work Because of AWS Outage? TheStandup - YouTube&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://waylonwalker.com/shots/dont-starve-together-session-one---getting-into-it-with-a-clockwork-bishop/og/&#34;&gt;&lt;img class=&#34;glightbox&#34; src=&#34;https://shots.waylonwalker.com/shot/?url=https://waylonwalker.com/shots/dont-starve-together-session-one---getting-into-it-with-a-clockwork-bishop/og/&amp;amp;height=600&amp;amp;width=1200&amp;amp;scaled_width=1200&amp;amp;scaled_height=600&amp;amp;format=jpg&amp;amp;v=4&#34; alt=&#34;Dont Starve Together Session One - Getting Into It With A Clockwork Bishop&#34;/ data-glightbox=&#34;description: Dont Starve Together Session One - Getting Into It With A Clockwork Bishop&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;shots&#34;&gt;shots &lt;a href=&#34;#shots&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;I also do &lt;a href=&#34;/tags/shots/&#34; class=&#34;wikilink&#34; data-title=&#34;Posts tagged: shots&#34; data-description=&#34;All posts with the tag &amp;#34;shots&amp;#34;&#34; data-preview=&#34;All posts with the tag &amp;#34;shots&amp;#34;&#34;&gt;Posts tagged: shots&lt;/a&gt; posts that change the og template quite a bit by adding&#xA;the image to the page.  I’ll do the same script, but add a filter to the&#xA;images.&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;markata&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Markata&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;itertools&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;groupby&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;markata&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Markata&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;lens&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[{&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;length&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;len&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;post&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;title&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;title&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;post&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;title&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;slug&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;post&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;slug&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;post&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;m&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;filter&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;templateKey==&amp;#34;shots&amp;#34; and &amp;#34;family&amp;#34; not in tags&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;n&#34;&gt;lens_sorted&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;sorted&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;lens&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;key&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;lambda&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;length&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;&#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;groups&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;n&#34;&gt;k&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;list&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;g&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;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;k&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;g&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;groupby&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;lens_sorted&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;key&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;lambda&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;length&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;//&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;5&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;n&#34;&gt;posts&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;g&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;g&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;groups&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;values&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;ogs&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&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;s1&#34;&gt;&amp;#39;[![&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;post&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;title&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;](https://shots.waylonwalker.com/shot/?url=https://waylonwalker.com/&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;post&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;slug&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;/og/&amp;amp;height=600&amp;amp;width=1200&amp;amp;scaled_width=1200&amp;amp;scaled_height=600&amp;amp;format=jpg&amp;amp;v=4)](https://waylonwalker.com/&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;post&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;slug&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;/og/)&amp;#39;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;post&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;posts&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;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\n\n&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;join&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ogs&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;&lt;a href=&#34;https://waylonwalker.com/shots/funk-track-1/og/&#34;&gt;&lt;img class=&#34;glightbox&#34; src=&#34;https://shots.waylonwalker.com/shot/?url=https://waylonwalker.com/shots/funk-track-1/og/&amp;amp;height=600&amp;amp;width=1200&amp;amp;scaled_width=1200&amp;amp;scaled_height=600&amp;amp;format=jpg&amp;amp;v=4&#34; alt=&#34;Funk Track 1&#34;/ data-glightbox=&#34;description: Funk Track 1&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://waylonwalker.com/shots/hornet-on-a-bench/og/&#34;&gt;&lt;img class=&#34;glightbox&#34; src=&#34;https://shots.waylonwalker.com/shot/?url=https://waylonwalker.com/shots/hornet-on-a-bench/og/&amp;amp;height=600&amp;amp;width=1200&amp;amp;scaled_width=1200&amp;amp;scaled_height=600&amp;amp;format=jpg&amp;amp;v=4&#34; alt=&#34;Hornet On A Bench&#34;/ data-glightbox=&#34;description: Hornet On A Bench&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://waylonwalker.com/shots/apple-boxes-complete/og/&#34;&gt;&lt;img class=&#34;glightbox&#34; src=&#34;https://shots.waylonwalker.com/shot/?url=https://waylonwalker.com/shots/apple-boxes-complete/og/&amp;amp;height=600&amp;amp;width=1200&amp;amp;scaled_width=1200&amp;amp;scaled_height=600&amp;amp;format=jpg&amp;amp;v=4&#34; alt=&#34;Apple Boxes Complete&#34;/ data-glightbox=&#34;description: Apple Boxes Complete&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://waylonwalker.com/shots/bambu-poop-flinger-jammed/og/&#34;&gt;&lt;img class=&#34;glightbox&#34; src=&#34;https://shots.waylonwalker.com/shot/?url=https://waylonwalker.com/shots/bambu-poop-flinger-jammed/og/&amp;amp;height=600&amp;amp;width=1200&amp;amp;scaled_width=1200&amp;amp;scaled_height=600&amp;amp;format=jpg&amp;amp;v=4&#34; alt=&#34;Bambu Poop Flinger Jammed&#34;/ data-glightbox=&#34;description: Bambu Poop Flinger Jammed&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://waylonwalker.com/shots/first-fingerboard-in-the-press/og/&#34;&gt;&lt;img class=&#34;glightbox&#34; src=&#34;https://shots.waylonwalker.com/shot/?url=https://waylonwalker.com/shots/first-fingerboard-in-the-press/og/&amp;amp;height=600&amp;amp;width=1200&amp;amp;scaled_width=1200&amp;amp;scaled_height=600&amp;amp;format=jpg&amp;amp;v=4&#34; alt=&#34;First Fingerboard In The Press&#34;/ data-glightbox=&#34;description: First Fingerboard In The Press&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://waylonwalker.com/shots/wyatt-drew-a-watertower-in-aesprite/og/&#34;&gt;&lt;img class=&#34;glightbox&#34; src=&#34;https://shots.waylonwalker.com/shot/?url=https://waylonwalker.com/shots/wyatt-drew-a-watertower-in-aesprite/og/&amp;amp;height=600&amp;amp;width=1200&amp;amp;scaled_width=1200&amp;amp;scaled_height=600&amp;amp;format=jpg&amp;amp;v=4&#34; alt=&#34;Wyatt Drew A Watertower In Aesprite&#34;/ data-glightbox=&#34;description: Wyatt Drew A Watertower In Aesprite&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://waylonwalker.com/shots/design-for-bosch-colt-dust-collection-v1/og/&#34;&gt;&lt;img class=&#34;glightbox&#34; src=&#34;https://shots.waylonwalker.com/shot/?url=https://waylonwalker.com/shots/design-for-bosch-colt-dust-collection-v1/og/&amp;amp;height=600&amp;amp;width=1200&amp;amp;scaled_width=1200&amp;amp;scaled_height=600&amp;amp;format=jpg&amp;amp;v=4&#34; alt=&#34;Design For Bosch Colt Dust Collection V1&#34;/ data-glightbox=&#34;description: Design For Bosch Colt Dust Collection V1&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://waylonwalker.com/shots/dont-starve-together-session-one---nooo-luuucy/og/&#34;&gt;&lt;img class=&#34;glightbox&#34; src=&#34;https://shots.waylonwalker.com/shot/?url=https://waylonwalker.com/shots/dont-starve-together-session-one---nooo-luuucy/og/&amp;amp;height=600&amp;amp;width=1200&amp;amp;scaled_width=1200&amp;amp;scaled_height=600&amp;amp;format=jpg&amp;amp;v=4&#34; alt=&#34;Dont Starve Together Session One - Nooo Luuucy&#34;/ data-glightbox=&#34;description: Dont Starve Together Session One - Nooo Luuucy&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://waylonwalker.com/shots/dont-starve-together-session-one---setting-up-base/og/&#34;&gt;&lt;img class=&#34;glightbox&#34; src=&#34;https://shots.waylonwalker.com/shot/?url=https://waylonwalker.com/shots/dont-starve-together-session-one---setting-up-base/og/&amp;amp;height=600&amp;amp;width=1200&amp;amp;scaled_width=1200&amp;amp;scaled_height=600&amp;amp;format=jpg&amp;amp;v=4&#34; alt=&#34;Dont Starve Together Session One - Setting Up Base&#34;/ data-glightbox=&#34;description: Dont Starve Together Session One - Setting Up Base&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://waylonwalker.com/shots/dont-starve-together-session-one---opening-up-the-garden/og/&#34;&gt;&lt;img class=&#34;glightbox&#34; src=&#34;https://shots.waylonwalker.com/shot/?url=https://waylonwalker.com/shots/dont-starve-together-session-one---opening-up-the-garden/og/&amp;amp;height=600&amp;amp;width=1200&amp;amp;scaled_width=1200&amp;amp;scaled_height=600&amp;amp;format=jpg&amp;amp;v=4&#34; alt=&#34;Dont Starve Together Session One - Opening Up The Garden&#34;/ data-glightbox=&#34;description: Dont Starve Together Session One - Opening Up The Garden&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://waylonwalker.com/shots/first-encounter-with-a-tall-bird/og/&#34;&gt;&lt;img class=&#34;glightbox&#34; src=&#34;https://shots.waylonwalker.com/shot/?url=https://waylonwalker.com/shots/first-encounter-with-a-tall-bird/og/&amp;amp;height=600&amp;amp;width=1200&amp;amp;scaled_width=1200&amp;amp;scaled_height=600&amp;amp;format=jpg&amp;amp;v=4&#34; alt=&#34;Dont Starve Together Session One - First Encounter With A Tall Bird&#34;/ data-glightbox=&#34;description: Dont Starve Together Session One - First Encounter With A Tall Bird&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://waylonwalker.com/shots/dont-starve-together-session-one---getting-into-it-with-a-clockwork-bishop/og/&#34;&gt;&lt;img class=&#34;glightbox&#34; src=&#34;https://shots.waylonwalker.com/shot/?url=https://waylonwalker.com/shots/dont-starve-together-session-one---getting-into-it-with-a-clockwork-bishop/og/&amp;amp;height=600&amp;amp;width=1200&amp;amp;scaled_width=1200&amp;amp;scaled_height=600&amp;amp;format=jpg&amp;amp;v=4&#34; alt=&#34;Dont Starve Together Session One - Getting Into It With A Clockwork Bishop&#34;/ data-glightbox=&#34;description: Dont Starve Together Session One - Getting Into It With A Clockwork Bishop&#34;&gt;&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>Krayt</title>
    <id>https://waylonwalker.com/krayt/</id>
    <updated>2026-01-08T20:17:02Z</updated>
    <published>2026-01-08T20:17:02Z</published>
    <link href="https://waylonwalker.com/krayt/" rel="alternate" type="text/html"></link>
    <content type="text">&#xA;</content>
    <author>
      <name>Waylon Walker</name>
      <email>hello@waylonwalker.com</email>
      <uri>https://waylonwalker.com</uri>
    </author>
  </entry>
  <entry>
    <title>Arch Bt Setup For Zmk</title>
    <id>https://waylonwalker.com/arch-bt-setup-for-zmk/</id>
    <updated>2026-01-05T11:35:42Z</updated>
    <published>2026-01-05T11:35:42Z</published>
    <link href="https://waylonwalker.com/arch-bt-setup-for-zmk/" rel="alternate" type="text/html"></link>
    <content type="text">&#xA;</content>
    <author>
      <name>Waylon Walker</name>
      <email>hello@waylonwalker.com</email>
      <uri>https://waylonwalker.com</uri>
    </author>
  </entry>
  <entry>
    <title>Gippity Glazing</title>
    <id>https://waylonwalker.com/gippity-glazing/</id>
    <updated>2025-12-22T14:32:14Z</updated>
    <published>2025-12-22T14:32:14Z</published>
    <link href="https://waylonwalker.com/gippity-glazing/" rel="alternate" type="text/html"></link>
    <content type="text">&#xA;</content>
    <author>
      <name>Waylon Walker</name>
      <email>hello@waylonwalker.com</email>
      <uri>https://waylonwalker.com</uri>
    </author>
  </entry>
  <entry>
    <title>big slow diskcache</title>
    <id>https://waylonwalker.com/big-slow-diskcache/</id>
    <updated>2025-12-22T14:12:26Z</updated>
    <published>2025-12-22T14:12:26Z</published>
    <link href="https://waylonwalker.com/big-slow-diskcache/" rel="alternate" type="text/html"></link>
    <content type="text">&#xA;</content>
    <author>
      <name>Waylon Walker</name>
      <email>hello@waylonwalker.com</email>
      <uri>https://waylonwalker.com</uri>
    </author>
  </entry>
  <entry>
    <title>nginx accepts markdown</title>
    <id>https://waylonwalker.com/nginx-accepts-markdown/</id>
    <updated>2025-12-18T15:31:49Z</updated>
    <published>2025-12-18T15:31:49Z</published>
    <link href="https://waylonwalker.com/nginx-accepts-markdown/" rel="alternate" type="text/html"></link>
    <content type="text">&#xA;</content>
    <author>
      <name>Waylon Walker</name>
      <email>hello@waylonwalker.com</email>
      <uri>https://waylonwalker.com</uri>
    </author>
  </entry>
  <entry>
    <title>I Think I Built A Cms</title>
    <id>https://waylonwalker.com/i-think-i-built-a-cms/</id>
    <updated>2025-12-16T08:27:11Z</updated>
    <published>2025-12-16T08:27:11Z</published>
    <link href="https://waylonwalker.com/i-think-i-built-a-cms/" rel="alternate" type="text/html"></link>
    <summary type="text">https://www.sanity.io/blog/you-should-never-build-a-cms</summary>
    <content type="html">&lt;p&gt;&lt;a href=&#34;https://www.sanity.io/blog/you-should-never-build-a-cms&#34; style=&#34;--favicon-url: url(&amp;#39;/assets/markata/link-avatars/www.sanity.io.png&amp;#39;);&#34; data-favicon=&#34;/assets/markata/link-avatars/www.sanity.io.png&#34; class=&#34;has-avatar  has-avatar-before&#34;&gt;https://www.sanity.io/blog/you-should-never-build-a-cms&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>💭 Deprecations via warnings don’t work for Python libraries</title>
    <id>https://waylonwalker.com/thought-888/</id>
    <updated>2025-12-09T14:01:29Z</updated>
    <published>2025-12-09T14:01:29Z</published>
    <link href="https://waylonwalker.com/thought-888/" rel="alternate" type="text/html"></link>
    <summary type="text">!https://simonwillison.net/2025/Dec/9/deprecations-via-warnings/#atom-everything</summary>
    <content type="html">&lt;div class=&#34;embed-card embed-card-external&#34;&gt;&#xA;  &lt;a href=&#34;https://simonwillison.net/2025/Dec/9/deprecations-via-warnings/#atom-everything&#34; class=&#34;embed-card-link  has-avatar has-avatar-before&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#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;&gt;&#xA;    &lt;div class=&#34;embed-card-content&#34;&gt;&#xA;      &lt;div class=&#34;embed-card-title&#34;&gt;Deprecations via warnings don’t work for Python libraries&lt;/div&gt;&#xA;      &lt;div class=&#34;embed-card-description&#34;&gt;Seth Larson reports that urllib3 2.6.0 released on the 5th of December and finally removed the HTTPResponse.getheaders() and HTTPResponse.getheader(name, default) methods, which have been marked as...&lt;/div&gt;&#xA;      &lt;div class=&#34;embed-card-meta&#34;&gt;Simon Willison’s Weblog · simonwillison.net&lt;/div&gt;&#xA;    &lt;/div&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;Deprecation warnings are so easy to miss, ignore, become numb to.  Creating tools and processes to catch and address these issues is important.  I’m surprised such big projects let deprecations just hang around for years.&lt;/p&gt;&#xA;&lt;div class=&#34;admonition note&#34;&gt;&#xA;&lt;p class=&#34;admonition-title&#34;&gt;Note&lt;/p&gt;&#xA;&lt;p&gt;This post is a &lt;a href=&#34;/thoughts/&#34; class=&#34;wikilink&#34; data-title=&#34;Thoughts&#34; data-description=&#34;These are generally my thoughts on a web page or some sort of url, except a rare few don&amp;#39;t have a link. These are dual published off of my...&#34; data-date=&#34;2024-04-01&#34; data-preview=&#34;These are generally my thoughts on a web page or some sort of url, except a rare few don&amp;#39;t have a link. These are dual published off of my...&#34;&gt;thought&lt;/a&gt;. It’s a short note that I make&#xA;about someone else’s content online &lt;a href=&#34;/tags/thoughts/&#34; class=&#34;hashtag-tag&#34; data-tag=&#34;thoughts&#34; data-count=&#34;2&#34; data-reading-time=&#34;3&#34; data-reading-time-text=&#34;3 minutes&#34;&gt;#thoughts&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;</content>
    <author>
      <name>Waylon Walker</name>
      <email>hello@waylonwalker.com</email>
      <uri>https://waylonwalker.com</uri>
    </author>
  </entry>
  <entry>
    <title>One Year Of Shots</title>
    <id>https://waylonwalker.com/one-year-of-shots/</id>
    <updated>2025-12-09T12:44:39Z</updated>
    <published>2025-12-09T12:44:39Z</published>
    <link href="https://waylonwalker.com/one-year-of-shots/" rel="alternate" type="text/html"></link>
    <summary type="text">I&#39;ve been running my shot scraper api for a year now. It creates og images for my website and thumbnails for my reader using a headless chrome instance.</summary>
    <content type="html">&lt;p&gt;I’ve been running my shot scraper api for a year now.  It creates &lt;a href=&#34;/og/&#34; class=&#34;glossary-term&#34; title=&#34;OG is short for open graph, a set of standard meta tags that are used for social media sharing. This is what tells other websites how to describe and display...&#34;&gt;og&lt;/a&gt; images for&#xA;my website and thumbnails for my &lt;a href=&#34;/reader/&#34; class=&#34;wikilink&#34; data-title=&#34;Reader&#34; data-description=&#34;Latest posts from blogs I follow&#34; data-preview=&#34;Latest posts from blogs I follow&#34;&gt;Reader&lt;/a&gt; using a headless chrome instance.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;25870 shots&lt;/li&gt;&#xA;&lt;li&gt;73 shots per day on average&lt;/li&gt;&#xA;&lt;li&gt;12-09-2025 first shot taken&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;histogram&#34;&gt;Histogram &lt;a href=&#34;#histogram&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;figure&gt;&#xA;&lt;a href=&#34;https://dropper.waylonwalker.com/file/63705078-3342-4807-b5fd-46a0860efc27.webp&#34; class=&#34;glightbox-link&#34;&gt;&lt;img class=&#34;glightbox&#34; src=&#34;https://dropper.waylonwalker.com/file/63705078-3342-4807-b5fd-46a0860efc27.webp&#34; alt=&#34;histogram of shots&#34;/ data-glightbox=&#34;description: histogram of shots&#34;&gt;&lt;/a&gt;&#xA;&lt;/figure&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;a histogram of shot counts by day&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;You can see in the histogram that I’ve had a few big spike days, This has been&#xA;mostly for days that I’ve integrated into a new service or changed the&#xA;endpoint.  On February 13, 2025 I swapped over from using the post to using&#xA;template specific to open graph images.&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;gd&#34;&gt;-content = &amp;#34;https://shots.waylonwalker.com/shot/?url={{ config.url }}{{ post.slug }}&amp;amp;height=600&amp;amp;width=1200&amp;amp;scaled_width=1200&amp;amp;scaled_height=600&amp;#34;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gd&#34;&gt;&lt;/span&gt;&lt;span class=&#34;gi&#34;&gt;+content = &amp;#34;https://shots.waylonwalker.com/shot/?url={{ config.url }}{{ post.slug }}/og/&amp;amp;height=600&amp;amp;width=1200&amp;amp;scaled_width=1200&amp;amp;scaled_height=600&amp;#34;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&#34;admonition vsplit&#34;&gt;&#xA;&lt;p class=&#34;admonition-title&#34;&gt;Image Comparison&lt;/p&gt;&#xA;&lt;div class=&#34;admonition vsplit&#34;&gt;&#xA;&lt;p class=&#34;admonition-title&#34;&gt;Original Post Image&lt;/p&gt;&#xA;&lt;figure&gt;&#xA;&lt;a href=&#34;https://shots.waylonwalker.com/shot/?url=https://dev.waylonwalker.com/one-year-of-shots/&amp;amp;height=600&amp;amp;width=1200&amp;amp;scaled_width=1200&amp;amp;scaled_height=600&#34; class=&#34;glightbox-link&#34;&gt;&lt;img class=&#34;glightbox&#34; src=&#34;https://shots.waylonwalker.com/shot/?url=https://dev.waylonwalker.com/one-year-of-shots/&amp;amp;height=600&amp;amp;width=1200&amp;amp;scaled_width=1200&amp;amp;scaled_height=600&#34; alt=&#34;&#34;/ data-glightbox=&#34;description: &#34;&gt;&lt;/a&gt;&#xA;&lt;/figure&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;originally I simply used an image of the post itself&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;admonition vsplit&#34;&gt;&#xA;&lt;p class=&#34;admonition-title&#34;&gt;New OG Image&lt;/p&gt;&#xA;&lt;figure&gt;&#xA;&lt;a href=&#34;https://shots.waylonwalker.com/shot/?url=https://dev.waylonwalker.com/one-year-of-shots/og/&amp;amp;height=600&amp;amp;width=1200&amp;amp;scaled_width=1200&amp;amp;scaled_height=600&#34; class=&#34;glightbox-link&#34;&gt;&lt;img class=&#34;glightbox&#34; src=&#34;https://shots.waylonwalker.com/shot/?url=https://dev.waylonwalker.com/one-year-of-shots/og/&amp;amp;height=600&amp;amp;width=1200&amp;amp;scaled_width=1200&amp;amp;scaled_height=600&#34; alt=&#34;&#34;/ data-glightbox=&#34;description: &#34;&gt;&lt;/a&gt;&#xA;&lt;/figure&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;In Feb 2025 I made OG specific templates to use for the OG images.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Swapping to og images&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;h2 id=&#34;collage&#34;&gt;Collage &lt;a href=&#34;#collage&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;For fun I made a collage of all the shots.  It’s cool to see all of these&#xA;together, I remember a lot of the thumbnails and posts.  Many of them from my&#xA;rss reader.&lt;/p&gt;&#xA;&lt;figure&gt;&#xA;&lt;a href=&#34;https://dropper.waylonwalker.com/file/5d4b46a6-79d6-4320-bf7d-f917c862c57d.webp&#34; class=&#34;glightbox-link&#34;&gt;&lt;img class=&#34;glightbox&#34; src=&#34;https://dropper.waylonwalker.com/file/5d4b46a6-79d6-4320-bf7d-f917c862c57d.webp&#34; alt=&#34;collage of shots&#34;/ data-glightbox=&#34;description: collage of shots&#34;&gt;&lt;/a&gt;&#xA;&lt;/figure&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;collage of all shots, click to see full size&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;I tried to make a video collage, but turns out it takes a long time to show all&#xA;25k shots in video form.  It also turned out to be a bit of a strobe as I don’t&#xA;yet have it figured out how to dark mode in headless chrome.&lt;/p&gt;&#xA;&lt;figure&gt;&#xA;&lt;a href=&#34;https://dropper.waylonwalker.com/file/1c629d32-4284-4c71-a4f7-62d82e445c7d.webm&#34; class=&#34;glightbox-link&#34;&gt;&lt;video autoplay loop muted playsinline controls preload=&#34;metadata&#34; class=&#34;md-video&#34; poster=&#34;https://dropper.waylonwalker.com/file/1c629d32-4284-4c71-a4f7-62d82e445c7d.webp?h=675&amp;w=1200&#34;&gt;&lt;source src=&#34;https://dropper.waylonwalker.com/file/1c629d32-4284-4c71-a4f7-62d82e445c7d.webm&#34; type=&#34;video/webm&#34;&gt;video collage of shots&lt;/video&gt;&lt;/a&gt;&#xA;&lt;/figure&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;video collage of 600 shots, I tried to include all, but even at 20fps its a 20 minute video.&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>Workspaces V1</title>
    <id>https://waylonwalker.com/workspaces-v1/</id>
    <updated>2025-11-26T20:17:29Z</updated>
    <published>2025-11-26T20:17:29Z</published>
    <link href="https://waylonwalker.com/workspaces-v1/" rel="alternate" type="text/html"></link>
    <summary type="text">I&#39;ve been using the same workflow since 2020, my post tmux-nav-2021 is still very accurate to my workflow. It&#39;s been great, but is a starting to feel like it...</summary>
    <content type="html">&lt;p&gt;I’ve been using the same workflow since 2020, my post &lt;a href=&#34;/tmux-nav-2021/&#34; class=&#34;wikilink&#34; data-title=&#34;How I navigate tmux in 2021&#34; data-description=&#34;change_speed = (speed) =&amp;gt; [...document.querySelectorAll(&amp;#39;video&amp;#39;)].map(v =&amp;gt; v.playbackRate=v.playbackRate+speed)&#34; data-date=&#34;2021-05-11&#34; data-preview=&#34;change_speed = (speed) =&amp;gt; [...document.querySelectorAll(&amp;#39;video&amp;#39;)].map(v =&amp;gt; v.playbackRate=v.playbackRate+speed)&#34;&gt;How I navigate tmux in 2021&lt;/a&gt; is&#xA;still very accurate to my workflow.  It’s been great, but is a starting to feel&#xA;like it needs some work.  It feels like enough time has passed that I can make&#xA;some significant improvements.&lt;/p&gt;&#xA;&lt;h2 id=&#34;issues&#34;&gt;Issues &lt;a href=&#34;#issues&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;</content>
    <author>
      <name>Waylon Walker</name>
      <email>hello@waylonwalker.com</email>
      <uri>https://waylonwalker.com</uri>
    </author>
  </entry>
  <entry>
    <title>COLUMNS env var</title>
    <id>https://waylonwalker.com/columns-env-var/</id>
    <updated>2025-11-26T13:24:38Z</updated>
    <published>2025-11-26T13:24:38Z</published>
    <link href="https://waylonwalker.com/columns-env-var/" rel="alternate" type="text/html"></link>
    <summary type="text">setting env var to a number greater than 0 will make the terminal resize to that number of columns.</summary>
    <content type="html">&lt;p&gt;setting &lt;code&gt;COLUMNS&lt;/code&gt; env var to a number greater than 0 will make the terminal resize to that number of columns.&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;nv&#34;&gt;COLUMNS&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;80&lt;/span&gt; uvx --from rich-cli rich myscript.py&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&#34;admonition note&#34;&gt;&#xA;&lt;p class=&#34;admonition-title&#34;&gt;Note&lt;/p&gt;&#xA;&lt;p&gt;Not all programs respct the &lt;code&gt;COLUMNS&lt;/code&gt; env var, but rich does, and a lot of&#xA;stuff I’m building uses rich.&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;I discovered this when I was trying to make a low effort readme generated from&#xA;the code, but did not depend on the size of terminal it was ran on.&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;c1&#34;&gt;# justfile&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;readme:&#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;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;# Workspaces&amp;#34;&lt;/span&gt; &amp;gt; README.md&#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;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt; &amp;gt;&amp;gt; README.md&#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;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;``` bash&amp;#39;&lt;/span&gt; &amp;gt;&amp;gt; README.md&#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;nv&#34;&gt;COLUMNS&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;80&lt;/span&gt; ./workspaces.py --help &amp;gt;&amp;gt; README.md&#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;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;```&amp;#39;&lt;/span&gt; &amp;gt;&amp;gt; README.md&#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>side effect of just stars</title>
    <id>https://waylonwalker.com/side-effect-of-just-stars/</id>
    <updated>2025-11-11T21:33:33Z</updated>
    <published>2025-11-11T21:33:33Z</published>
    <link href="https://waylonwalker.com/side-effect-of-just-stars/" rel="alternate" type="text/html"></link>
    <summary type="text">I found an interesting side effect of manually running my script to generate stars posts is that you get notified when one gets renamed. Today I noticed that...</summary>
    <content type="html">&lt;p&gt;I found an interesting side effect of manually running my script to generate [[&#xA;stars ]] posts is that you get notified when one gets renamed.  Today I noticed&#xA;that Ned Batchelder created a coveragepy org.&lt;/p&gt;&#xA;&lt;figure&gt;&#xA;&lt;a href=&#34;https://dropper.waylonwalker.com/api/file/cf6dd0cc-5a74-40bf-8512-f62471ea1e56.png&#34; class=&#34;glightbox-link&#34;&gt;&lt;img class=&#34;glightbox&#34; src=&#34;https://dropper.waylonwalker.com/api/file/cf6dd0cc-5a74-40bf-8512-f62471ea1e56.png&#34; alt=&#34;screenshot-2025-11-12T03-33-12-967Z.png&#34;/ data-glightbox=&#34;description: screenshot-2025-11-12T03-33-12-967Z.png&#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>
</feed>