Friday, December 3, 2021

Python Bytes: #261 Please re-enable spacebar heating

<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 &amp; FOSS to solve the climate crisis</li> </ul> <p><strong>Joke:</strong> <a href="https://xkcd.com/1172/"><strong>Spacebar Heating</strong></a></p>

from Planet Python
via read more

No comments:

Post a Comment

TestDriven.io: Working with Static and Media Files in Django

This article looks at how to work with static and media files in a Django project, locally and in production. from Planet Python via read...