<strong>Topics covered in this episode:</strong><br>
<ul>
<li><a href="https://cbea.ms/git-commit/?featured_on=pythonbytes"><strong>How to Write a Git Commit Message</strong></a></li>
<li><a href="https://caddyserver.com?featured_on=pythonbytes"><strong>Caddy Web Server</strong></a></li>
<li><strong>Some new PEPs approved</strong></li>
<li><strong><a href="https://github.com/manzt/juv?featured_on=pythonbytes">juv</a></strong></li>
<li><strong>Extras</strong></li>
<li><strong>Joke</strong></li>
</ul><a href='https://www.youtube.com/watch?v=bSsmD24gABc' style='font-weight: bold;'data-umami-event="Livestream-Past" data-umami-event-episode="428">Watch on YouTube</a><br>
<p><strong>About the show</strong></p>
<p>Sponsored by <strong>Posit Connect</strong>: <a href="https://pythonbytes.fm/connect"><strong>pythonbytes.fm/connect</strong></a> </p>
<p><strong>Connect with the hosts</strong></p>
<ul>
<li>Michael: <a href="https://fosstodon.org/@mkennedy"><strong>@mkennedy@fosstodon.org</strong></a> <strong>/</strong> <a href="https://bsky.app/profile/mkennedy.codes?featured_on=pythonbytes"><strong>@mkennedy.codes</strong></a> <strong>(bsky)</strong></li>
<li>Brian: <a href="https://fosstodon.org/@brianokken"><strong>@brianokken@fosstodon.org</strong></a> <strong>/</strong> <a href="https://bsky.app/profile/brianokken.bsky.social?featured_on=pythonbytes"><strong>@brianokken.bsky.social</strong></a></li>
<li>Show: <a href="https://fosstodon.org/@pythonbytes"><strong>@pythonbytes@fosstodon.org</strong></a> <strong>/</strong> <a href="https://bsky.app/profile/pythonbytes.fm"><strong>@pythonbytes.fm</strong></a> <strong>(bsky)</strong></li>
</ul>
<p>Join us on YouTube at <a href="https://pythonbytes.fm/stream/live"><strong>pythonbytes.fm/live</strong></a> to be part of the audience. Usually <strong>Monday</strong> at 10am PT. Older video versions available there too.</p>
<p>Finally, if you want an artisanal, hand-crafted digest of every week of the show notes in email form? Add your name and email to <a href="https://pythonbytes.fm/friends-of-the-show">our friends of the show list</a>, we'll never share it. </p>
<p><strong>Brian #1:</strong> <a href="https://cbea.ms/git-commit/?featured_on=pythonbytes"><strong>How to Write a Git Commit Message</strong></a></p>
<ul>
<li>Chris Beams</li>
<li>7 rules of a great commit message
<ul>
<li>Separate subject from body with a blank line</li>
<li>Limit the subject line to 50 characters</li>
<li>Capitalize the subject line</li>
<li>Do not end the subject line with a period</li>
<li>Use the imperative mood in the subject line</li>
<li>Wrap the body at 72 characters</li>
<li>Use the body to explain what and why vs. how</li>
</ul></li>
<li>Article also includes
<ul>
<li>Why a good commit message matters</li>
<li>Discussion about each of the 7 rules</li>
<li>Cool hat tips to other articles on the subject
<ul>
<li>“<em>Keep in mind:</em> <a href="http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html?featured_on=pythonbytes"><em>This</em></a> <a href="https://www.git-scm.com/book/en/v2/Distributed-Git-Contributing-to-a-Project#_commit_guidelines"><em>has</em></a> <a href="https://github.com/torvalds/subsurface-for-dirk/blob/master/README.md#contributing"><em>all</em></a> <a href="http://who-t.blogspot.co.at/2009/12/on-commit-messages.html?featured_on=pythonbytes"><em>been</em></a> <a href="https://github.com/erlang/otp/wiki/writing-good-commit-messages?featured_on=pythonbytes"><em>said</em></a> <a href="https://github.com/spring-projects/spring-framework/blob/30bce7/CONTRIBUTING.md#format-commit-messages"><em>before</em></a><em>.”</em></li>
<li>Each word is a different link.</li>
</ul></li>
</ul></li>
</ul>
<p><strong>Michael #2:</strong> <a href="https://caddyserver.com?featured_on=pythonbytes"><strong>Caddy Web Server</strong></a></p>
<ul>
<li>via Fredrik Mellström</li>
<li>Like a more modern NGINX</li>
<li>Caddy automatically obtains and renews TLS certificates for all your sites.</li>
<li>Caddy's native configuration is a JSON document.</li>
<li>Even localhost and internal IPs are served with TLS using the intermediate of a fully-automated, self-managed CA that is automatically installed into most local trust stores.</li>
<li>Configure multiple Caddy instances with the same storage, and they will automatically coordinate certificate management as a fleet.</li>
<li>Production-grade static file server.</li>
</ul>
<p><strong>Brian #3:</strong> <strong>Some new PEPs approved</strong></p>
<ul>
<li><a href="https://peps.python.org/pep-0770/?featured_on=pythonbytes">PEP 770 – Improving measurability of Python packages with Software Bill-of-Materials</a>
<ul>
<li>Accepted for packaging</li>
<li>Author: Seth Larson, Sponsor Brett Cannon</li>
<li>“This PEP proposes using SBOM documents included in Python packages as a means to improve automated software measurability for Python packages.”</li>
</ul></li>
<li><a href="https://peps.python.org/pep-0750/?featured_on=pythonbytes">PEP 750 – Template Strings</a>
<ul>
<li>Accepted for Python 3.14</li>
<li>Author: Jim Baker, Guido van Rossum, Paul Everitt, Kaudai Aono, Lysandros Nikolaou, Dave Peck</li>
<li>“Templates provide developers with access to the string and its interpolated values <em>before</em> they are combined. This brings native flexible string processing to the Python language and enables safety checks, web templating, domain-specific languages, and more.”</li>
</ul></li>
</ul>
<p><strong>Michael #4:</strong> <a href="https://github.com/manzt/juv?featured_on=pythonbytes">juv</a></p>
<ul>
<li>A toolkit for reproducible Jupyter notebooks, powered by <a href="https://docs.astral.sh/uv/?featured_on=pythonbytes">uv</a>.</li>
<li><img src="https://paper.dropboxstatic.com/static/img/ace/emoji/1f5c2.png?version=8.0.0" alt="card index dividers" /> Create, manage, and run Jupyter notebooks with their dependencies</li>
<li><img src="https://paper.dropboxstatic.com/static/img/ace/emoji/1f4cc.png?version=8.0.0" alt="pushpin" /> Pin dependencies with <a href="https://peps.python.org/pep-0723?featured_on=pythonbytes">PEP 723 - inline script metadata</a></li>
<li><img src="https://paper.dropboxstatic.com/static/img/ace/emoji/1f680.png?version=8.0.0" alt="rocket" /> Launch ephemeral sessions for multiple front ends (e.g., JupyterLab, Notebook, NbClassic)</li>
<li><img src="https://paper.dropboxstatic.com/static/img/ace/emoji/26a1.png?version=8.0.0" alt="high voltage" /> Powered by <a href="https://docs.astral.sh/uv/?featured_on=pythonbytes">uv</a> for fast dependency management</li>
<li>Use uvx to run jupyterlab with ephemeral virtual environments and tracked dependencies.</li>
</ul>
<p><strong>Extras</strong> </p>
<p>Brian:</p>
<ul>
<li><a href="https://devguide.python.org/versions?featured_on=pythonbytes">Status of Python versions</a>
<ul>
<li>new-ish format</li>
<li>Use this all the time. Can’t remember if we’ve covered the new format yet.</li>
</ul></li>
<li>See also <a href="https://endoflife.date/python?featured_on=pythonbytes">Python endoflife.date</a>
<ul>
<li>Same dates, very visible encouragement to move on to Python 3.13 if you haven’t already.</li>
</ul></li>
</ul>
<p>Michael:</p>
<ul>
<li><a href="https://docs.python.org/release/3.13.3/whatsnew/changelog.html#python-3-13-3">Python 3.13.3 is out</a>.</li>
<li>.git-blame-ignore-revs <a href="https://bsky.app/profile/ysai.me/post/3lmdbyixxa22u?featured_on=pythonbytes">follow up</a></li>
</ul>
<p><strong>Joke:</strong> <a href="https://ifunny.co/picture/days-before-openai-days-after-openai-developer-coding-generates-codes-wBFS0jIKA?featured_on=pythonbytes">BGPT</a> (thanks Doug Farrell)</p>
↧