<p><strong>Watch the live stream:</strong></p>
<a href='https://www.youtube.com/watch?v=ySdl6JIxzec' style='font-weight: bold;'>Watch on YouTube</a><br>
<br>
<p><strong>About the show</strong></p>
<p>Sponsored by <strong>us:</strong></p>
<ul>
<li>Check out the <a href="https://training.talkpython.fm/courses/all"><strong>courses over at Talk Python</strong></a></li>
<li>And <a href="https://pythontest.com/pytest-book/"><strong>Brian’s book too</strong></a>!</li>
</ul>
<p>Special guest: <a href="https://twitter.com/ChelleGentemann"><strong>Dr. Chelle Gentemann</strong></a></p>
<p><strong>Michael #1:</strong> <a href="https://rclone.org/"><strong>rClone</strong></a></p>
<ul>
<li>via Mark Pender</li>
<li>Not much Python but useful for Python people :)</li>
<li>Rclone is a command line program to manage files on cloud storage.</li>
<li><a href="https://rclone.org/#providers">Over 40 cloud storage products</a> support rclone including S3 object stores</li>
<li>Rclone has powerful cloud equivalents to the unix commands rsync, cp, mv, mount, ls, ncdu, tree, rm, and cat.</li>
</ul>
<p><strong>Brian #2:</strong> <a href="https://pypi.org/project/check-wheel-contents/"><strong>check-wheel-contents</strong></a></p>
<ul>
<li>Suggested by several listeners, thank you.</li>
<li>“Getting the right files into your wheel is tricky, and sometimes we mess up and publish a wheel containing __pycache__ directories or tests/”</li>
<li>usage: <code>check-wheel-contents [[HTML_REMOVED]] [HTML_REMOVED]</code></li>
<li>ex:</li>
</ul>
<pre><code> (venv) $ pwd
/Users/okken/projects/cards
(venv) $ check-wheel-contents dist
dist/cards-1.0.0-py3-none-any.whl: OK
</code></pre>
<ul>
<li>Checks</li>
</ul>
<pre><code> - W001 - Wheel contains .pyc/.pyo files
- W002 - Wheel contains duplicate files
- W003 - Wheel contains non-module at library toplevel
- W004 - Module is not located at importable path
- W005 - Wheel contains common toplevel name in library
- W006 - __init__.py at top level of library
- W007 - Wheel library is empty
- W008 - Wheel is empty
- W009 - Wheel contains multiple toplevel library entries
- W010 - Toplevel library directory contains no Python modules
- W101 - Wheel library is missing files in package tree
- W102 - Wheel library contains files not in package tree
- W201 - Wheel library is missing specified toplevel entry
- W202 - Wheel library has undeclared toplevel entry
</code></pre>
<ul>
<li>Readme has good description of each check, including common causes and solutions.</li>
</ul>
<p><strong>Chelle #3:</strong> <a href="http://xarray.pydata.org/en/stable/"><strong>xarray</strong></a></p>
<ul>
<li>Where can I find climate and weather data?</li>
<li>Binary to netCDF to Zarr… data is all its gory-ness</li>
<li>Data formats are critical for data providers but should be invisible to users</li>
<li>What is Xarray</li>
<li>An example reading climate data and making some maps</li>
</ul>
<p><strong>Michael #4:</strong> <a href="https://www.jetbrains.com/remote-development/"><strong>JetBrains Remote Development</strong></a></p>
<ul>
<li>If you can SSH to it, that can be your dev machine</li>
<li>Keep sensitive code and connections on a dedicated machine</li>
<li>Reproducible environments for the team</li>
<li>Spin up per-configured environments (venvs, services, etc)</li>
<li>Treat your dev machine like a temp git branch checkout for testing PRs, etc</li>
<li>They did bury the lead <a href="https://www.jetbrains.com/fleet/">with Fleet in here too</a></li>
</ul>
<p><strong>Brian #5:</strong> <strong>The XY Problem</strong></p>
<ul>
<li>This topic is important because many of us, including listeners, are
<ul>
<li>novices in some topics and ask questions, sometimes without giving enough context.</li>
<li>experts in some topics and answer questions of others.</li>
</ul></li>
<li>The XY Problem
<ul>
<li>“… You are trying to solve problem <em>X</em>, and you think solution <em>Y</em> would work, but instead of asking about <em>X</em> when you run into trouble, you ask about <em>Y.” -</em> <a href="https://meta.stackexchange.com/a/66378"><em>From a Stack Exchange Answer</em></a> </li>
</ul></li>
<li>Example from <a href="https://xyproblem.info/">xyproblem.info</a>
[HTML_REMOVED] How can I echo the last three characters in a filename?
[HTML_REMOVED] If they're in a variable: echo ${foo: -3}
[HTML_REMOVED] Why 3 characters? What do you REALLY want?
[HTML_REMOVED] Do you want the extension?
[HTML_REMOVED] Yes.
[HTML_REMOVED] There's no guarantee that every filename will have a three-letter extension,
[HTML_REMOVED] so blindly grabbing three characters does not solve the problem.
[HTML_REMOVED] echo ${foo##*.}</li>
<li>Reason why it’s common and almost unavoidable:
<ul>
<li>Almost all design processes for software
<ul>
<li>I can achieve A if I do B and C.</li>
<li>I can achieve B if I do D and E.</li>
<li>And I can achieve C if I do F and G. </li>
<li>… I can achieve X if I do Y.</li>
</ul></li>
</ul></li>
<li>More important questions than “What is the XY Problem?”:
<ul>
<li>Is it possible to avoid? - not really</li>
<li>Is it possible to mitigate when asking questions? - yes</li>
<li>When answering questions where you expect XY might be an issue, how do you pull out information while providing information and be respectful to the asker? </li>
</ul></li>
<li><a href="https://meta.stackexchange.com/a/269222">One great response included</a>
<ul>
<li><strong>Asking Questions where you risk falling into XY</strong>
<ul>
<li>State your problem</li>
<li>State what you are trying to achieve</li>
<li>State how it fits into your wider design</li>
</ul></li>
<li><strong>Giving Answers to XY problems</strong>
<ol>
<li>Answer the question (answer Y)</li>
<li>Discuss the attempted solution (ask questions about context)
<ul>
<li>“Just curious. Are you trying to do (possible X)? If so, Y might not be appropriate because …”</li>
<li>“What is the answer to Y going to be used for?”</li>
</ul></li>
<li>Solve X</li>
</ol></li>
</ul></li>
<li>Also interesting reading
<ul>
<li><a href="https://en.wikipedia.org/wiki/Einstellung_effect">Einstellung effect</a> - The Einstellung effect is the negative effect of previous experience when solving new problems.</li>
</ul></li>
</ul>
<p><strong>Chelle #6:</strong> <a href="https://github.com/fsspec/kerchunk"><strong>kerchunk</strong></a> - Making data access fast and invisible</p>
<ul>
<li>S3 is pretty slow, especially when you have LOTS of files</li>
<li>We can speed it up by creating json files that just collect info from files and act as a reference</li>
<li>Then we can collate the references into MEGAJSON and just access lots of data at once</li>
<li>Make it easy to get data!</li>
</ul>
<p><strong>Extras</strong> </p>
<p>Michael:</p>
<ul>
<li><a href="https://twitter.com/_rlivingston/status/1463277526210416644"><strong>Xojo</strong></a> - like modern VB6?</li>
<li><a href="https://www.youtube.com/watch?v=sJriZQsMHrw"><strong>10 Reasons You'll Love PyCharm Even More in 2021 webcast</strong></a></li>
<li><a href="https://arstechnica.com/information-technology/2021/11/microsoft-plans-to-integrate-a-buy-now-pay-later-app-into-edge/"><strong>Users revolt as Microsoft bolts a short-term financing app onto Edge</strong></a></li>
</ul>
<p><strong>Chelle</strong>: </p>
<ul>
<li>Why we need python & FOSS to solve the climate crisis</li>
</ul>
<p><strong>Joke:</strong> <a href="https://xkcd.com/1172/"><strong>Spacebar Heating</strong></a></p>
↧