<strong>Topics covered in this episode:</strong><br>
<ul>
<li><a href="https://github.com/mwilliamson/python-vendorize"><strong>Vendorize packages from PyPI</strong></a></li>
<li><a href="https://martinheinz.dev/blog/112"><strong>A Guide to Python's Weak References Using weakref Module</strong></a></li>
<li><a href="https://github.com/Proteusiq/saa"><strong>Making Time Speak</strong></a></li>
<li><a href="https://towardsdatascience.com/how-should-you-test-your-machine-learning-project-a-beginners-guide-2e22da5a9bfc"><strong>How Should You Test Your Machine Learning Project? A Beginner’s Guide</strong></a></li>
<li><strong>Extras</strong></li>
<li><strong>Joke</strong></li>
</ul><a href='https://www.youtube.com/watch?v=c8RSsydIhhs' style='font-weight: bold;'data-umami-event="Livestream-Past" data-umami-event-episode="391">Watch on YouTube</a><br>
<p><strong>About the show</strong></p>
<p>Sponsored by <strong>Code Comments</strong>, an original podcast from RedHat: <a href="https://pythonbytes.fm/code-comments">pythonbytes.fm/code-comments</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></li>
<li>Brian: <a href="https://fosstodon.org/@brianokken"><strong>@brianokken@fosstodon.org</strong></a></li>
<li>Show: <a href="https://fosstodon.org/@pythonbytes"><strong>@pythonbytes@fosstodon.org</strong></a></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 Tuesdays 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>Michael #1:</strong> <a href="https://github.com/mwilliamson/python-vendorize"><strong>Vendorize packages from PyPI</strong></a></p>
<ul>
<li>Allows pure-Python dependencies to be vendorized: that is, the Python source of the dependency is copied into your own package.</li>
<li>Best used for small, pure-Python dependencies</li>
</ul>
<p><strong>Brian #2:</strong> <a href="https://martinheinz.dev/blog/112"><strong>A Guide to Python's Weak References Using weakref Module</strong></a></p>
<ul>
<li>Martin Heinz</li>
<li>Very cool discussion of weakref</li>
<li>Quick garbage collection intro, and how references and weak references are used.</li>
<li>Using weak references to build data structures.
<ul>
<li>Example of two kinds of trees</li>
</ul></li>
<li>Implementing the Observer pattern</li>
<li>How logging and OrderedDict use weak references</li>
</ul>
<p><strong>Michael #3:</strong> <a href="https://github.com/Proteusiq/saa"><strong>Making Time Speak</strong></a></p>
<ul>
<li>by Prayson, a former guest and friend of the show</li>
<li>Translating time into human-friendly spoken expressions</li>
<li>Example: clock("11:15") # 'quarter past eleven' </li>
<li>Features
<ul>
<li>Convert time into spoken expressions in various languages.</li>
<li>Easy-to-use API with a simple and intuitive design.</li>
<li>Pure Python implementation with no external dependencies.</li>
<li>Extensible architecture for adding support for additional languages using the plugin design pattern.</li>
</ul></li>
</ul>
<p><strong>Brian #4:</strong> <a href="https://towardsdatascience.com/how-should-you-test-your-machine-learning-project-a-beginners-guide-2e22da5a9bfc"><strong>How Should You Test Your Machine Learning Project? A Beginner’s Guide</strong></a></p>
<ul>
<li>François Porcher</li>
<li>Using pytest and pytest-cov for testing machine learning projects</li>
<li>Lots of pieces can and should be tested just as normal functions.
<ul>
<li>Example of testing a clean_text(text: str) -> str function</li>
</ul></li>
<li>Test larger chunks with canned input and expected output.
<ul>
<li>Example test_tokenize_text()</li>
</ul></li>
<li>Using fixtures for larger reusable components in testing
<ul>
<li>Example fixture: bert_tokenizer() with pretrained data</li>
</ul></li>
<li>Checking coverage</li>
</ul>
<p><strong>Extras</strong> </p>
<p>Michael:</p>
<ul>
<li><a href="https://www.macrumors.com/2024/07/05/authy-app-hack-exposes-phone-numbers/">Twilio Authy Hack</a>
<ul>
<li><a href="https://python-bytes-static.nyc3.digitaloceanspaces.com/google-really.png">Google Authenticator is the only option</a>? Really?</li>
<li><a href="https://bitwarden.com">Bitwarden to the rescue</a></li>
<li>Requires (?) an <a href="https://apps.apple.com/us/app/twilio-authy/id494168017">update to their app</a>, whose release notes (v26.1.0) only say “Bug fixes”</li>
</ul></li>
<li><a href="https://9to5mac.com/2024/07/03/proton-drive-gets-collaborative-docs-end-to-end-encryption/">Introducing Docs in Proton Drive</a>
<ul>
<li>This is what I called on Mozilla to do in “<a href="https://mkennedy.codes/posts/michael-kennedys-unsolicited-advice-for-mozilla-and-firefox/">Unsolicited</a><a href="https://mkennedy.codes/posts/michael-kennedys-unsolicited-advice-for-mozilla-and-firefox/"> Advice for Mozilla and Firefox</a>” But Proton got there first</li>
</ul></li>
<li>Early bird ending for <a href="https://www.codeinacastle.com/python-zero-to-hero-2024?utm_source=pythonbytes">Code in a Castle course</a></li>
</ul>
<p><strong>Joke:</strong> <a href="https://devhumor.com/media/in-rust-i-trust">I Lied</a></p>
↧