Date: Tue, 22 Jun 2021 22:00:00 -0400
<div class="wp-block-jetpack-markdown"><h2>Summary</h2> <p>Brett Cannon has been a long-time contributor to the Python language and community in many ways. In this episode he shares some of his work and thoughts on modernizing the ecosystem around the language. This includes standards for packaging, discovering the true core of the language, and how to make it possible to target mobile and web platforms.</p> <h2>Announcements</h2> <ul> <li>Hello and welcome to Podcast.__init__, the podcast about Python’s role in data and science.</li> <li>When you’re ready to launch your next app or want to try a project you hear about on the show, you’ll need somewhere to deploy it, so take a look at our friends over at Linode. With the launch of their managed Kubernetes platform it’s easy to get started with the next generation of deployment and scaling, powered by the battle tested Linode platform, including simple pricing, node balancers, 40Gbit networking, dedicated CPU and GPU instances, and worldwide data centers. Go to <a href="https://www.pythonpodcast.com/linode?utm_source=rss&utm_medium=rss">pythonpodcast.com/linode</a> and get a $100 credit to try out a Kubernetes cluster of your own. And don’t forget to thank them for their continued support of this show!</li> <li>Are you bored with writing scripts to move data into SaaS tools like Salesforce, Marketo, or Facebook Ads? Hightouch is the easiest way to sync data into the platforms that your business teams rely on. The data you’re looking for is already in your data warehouse and BI tools. Connect your warehouse to Hightouch, paste a SQL query, and use their visual mapper to specify how data should appear in your SaaS systems. No more scripts, just SQL. Supercharge your business teams with customer data using Hightouch for Reverse ETL today. Get started for free at <a href="https://www.pythonpodcast.com/hightouch?utm_source=rss&utm_medium=rss">pythonpodcast.com/hightouch</a>.</li> <li>Your host as usual is Tobias Macey and today I’m interviewing Brett Cannon about improvements in the packaging ecosystem, the promise of WebAssembly, and his recent explorations of CPython’s interpreter</li> </ul> <h2>Interview</h2> <ul> <li>Introductions</li> <li>How did you get introduced to Python?</li> <li>As a core contributor to CPython, a member of the steering Council, and the team lead for VSCode’s Python extension, what are your current areas of focus for the language?</li> <li>One of the PEPs that you were involved with recently introduced the pyproject.toml file for simplifying the work of building Python packages. Can you share some of the background behind that work and the goals that you had for it? <ul> <li>Since its introduction a lot of people have co-opted that file for other project configuration. What was your reaction to that, and if you had foreseen that usage what might you have changed or added in the PEP to account for it?</li> </ul> </li> <li>What are the long term impacts on the packaging ecosystem that you anticipate with the standardization efforts that are happening?</li> <li>Another area where there is a lot of attention right now is being able to target additional deployment environments such as the browser, with web assembly, and mobile devices, with projects like BriefCase and Kivy. You had a recent post where you posed some questions about the true nature of Python and the possibility of removing pieces of it to simplify building for these other runtimes. What is your personal sense of the minimal set of features that we need for something to still be Python? <ul> <li>How have projects such as MicroPython and PyOdide influenced your thinking on the matter?</li> </ul> </li> <li>You have also recently been writing a series of articles about the implementation details of different syntactic elements of Python. What was your inspiration for that? <ul> <li>What are some of the interesting or surprising details that you encountered while unwrapping the way that the interpreter handles those syntactic elements?</li> <li>How have those explorations helped you in your efforts to identify the core of Python?</li> </ul> </li> <li>Recent releases of Python have brought in some substantial changes to the interpreter and new language features (e.g. PEG parser, pattern matching). What are some of the other large initiatives that you are keeping track of?</li> <li>What are your personal goals for the near to medium term future of Python?</li> <li>What are the most interesting, unexpected, or challenging lessons that you have learned while working on the Python language and related tooling?</li> <li>If you were to redesign Python today, what are some of the things that you would do differently?</li> </ul> <h2>Keep In Touch</h2> <ul> <li><a href="https://github.com/brettcannon?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">brettcannon</a> on GitHub</li> <li><a href="https://twitter.com/brettsky?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">@brettsky</a> on Twitter</li> <li><a href="https://snarky.ca/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Blog</a></li> </ul> <h2>Picks</h2> <ul> <li>Tobias <ul> <li><a href="https://cleananddelicious.com/how-to-make-cold-brew-iced-tea/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Cold Brew Iced Tea</a></li> <li><a href="https://www.disneyplus.com/series/loki/6pARMvILBGzF?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Loki</a> on Disney+</li> </ul> </li> <li>Brett <ul> <li><a href="https://github.com/willmcgugan/rich?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Rich</a></li> <li><a href="https://github.com/willmcgugan/textual?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Textual</a></li> <li>The physics facts included in all of the Python 3.10 release announcements, e.g. <a href="https://discuss.python.org/t/python-3-10-0b3-is-now-available/9323#and-now-for-something-completely-different-4?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">you will never see a green star</a></li> </ul> </li> </ul> <h2>Links</h2> <ul> <li><a href="https://snarky.ca/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Brett’s Blog</a></li> <li><a href="https://code.visualstudio.com/docs/languages/python?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Python VSCode Extension</a></li> <li><a href="https://www.python.org/dev/peps/pep-8016/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Python Steering Council</a></li> <li><a href="https://www.pypa.io/en/latest/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Python Package Authority</a></li> <li><a href="https://www.berkeley.edu/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">UC Berkeley</a></li> <li><a href="https://en.wikipedia.org/wiki/Vancouver?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Vancouver, BC</a></li> <li><a href="https://www.legendsofvancouver.net/nations?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Squamish, Musquiam, Tsleil-waututh First Nations</a></li> <li><a href="https://en.wikipedia.org/wiki/Pascal_(programming_language)?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Pascal</a></li> <li><a href="https://www.python.org/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Python</a></li> <li><a href="https://en.wikipedia.org/wiki/C_(programming_language)?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">C</a></li> <li><a href="https://www.oreilly.com/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">O’Reilly</a></li> <li><a href="https://www.youtube.com/watch?v=xEkuOtCQ6vA&list=PL2Uw4_HvXqvYk1Y5P8kryoyd83L_0Uk5K&index=4&utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">PyCon US 2021 Steering Council Keynote</a></li> <li><a href="https://pyfound.blogspot.com/2021/04/the-psf-is-hiring-developer-in.html?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Python Developer-In-Residence</a></li> <li><a href="https://pyfound.blogspot.com/2021/02/welcoming-google-as-visionary-sponsor.html?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">PSF Visionary Sponsorship</a></li> <li><a href="https://setuptools.readthedocs.io/en/latest/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Setuptools</a></li> <li><a href="https://pip.pypa.io/en/stable/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Pip</a></li> <li><a href="https://pythonwheels.com/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Python Wheels</a></li> <li><a href="https://pypi.org/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">PyPI</a></li> <li><a href="https://www.python.org/dev/peps/pep-0518/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">PEP 518</a></li> <li><a href="https://www.python.org/dev/peps/pep-0517/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">PEP 517</a></li> <li><a href="https://www.python.org/dev/peps/pep-0621/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">PEP 621</a></li> <li><a href="https://snarky.ca/what-the-heck-is-pyproject-toml/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">pyproject.toml</a></li> <li><a href="https://flit.readthedocs.io/en/latest/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Flit</a></li> <li><a href="https://pypi.org/project/enscons/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Enscons</a></li> <li><a href="https://github.com/pypa/build?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">PyPA Build</a></li> <li><a href="https://pyoxidizer.readthedocs.io/en/stable/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">PyOxidizer</a></li> <li><a href="https://pex.readthedocs.io/en/v2.1.42/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Pex</a></li> <li><a href="https://shiv.readthedocs.io/en/latest/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Shiv</a></li> <li><a href="https://cx-freeze.readthedocs.io/en/latest/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">cx_Freeze</a></li> <li><a href="https://github.com/pypa/cibuildwheel?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">cibuildwheel</a></li> <li><a href="https://github.com/takluyver?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Thomas Kluyver</a></li> <li><a href="https://python-poetry.org/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Poetry</a></li> <li><a href="https://wiki.python.org/moin/VaultsOfParnassus?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Vaults of Parnassus</a></li> <li><a href="https://micropython.org/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">MicroPython</a> <ul> <li><a href="https://www.pythonpodcast.com/episode-15-damien-george-talks-to-us-about-micropython/?utm_source=rss&utm_medium=rss">Podcast Episode</a></li> </ul> </li> <li><a href="https://circuitpython.org/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">CircuitPython</a> <ul> <li><a href="https://www.pythonpodcast.com/circuitpython-hardware-hacking-episode-212/?utm_source=rss&utm_medium=rss">Podcast Episode</a></li> </ul> </li> <li><a href="https://snarky.ca/tag/syntactic-sugar/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Desugaring Python Blog Series</a></li> <li><a href="https://jupyter.org/hub?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">JupyterHub</a></li> <li><a href="https://pyodide.readthedocs.io/en/latest/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">PyOdide</a></li> <li><a href="https://github.com/jtpio/jupyterlite?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">JupyterLite</a></li> <li><a href="https://en.wikipedia.org/wiki/C99?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">ANSI C99</a></li> <li><a href="https://www.pypy.org/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">PyPy</a></li> <li><a href="https://www.jython.org/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Jython</a></li> <li><a href="https://ipython.org/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">IPython</a></li> <li><a href="https://en.wikipedia.org/wiki/Ncurses?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">ncurses</a></li> <li><a href="https://kivy.org/#home?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Kivy</a></li> <li><a href="https://briefcase.readthedocs.io/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Briefcase</a></li> <li><a href="https://toga.readthedocs.io/en/latest/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Toga</a></li> <li><a href="https://www.python.org/dev/peps/pep-0401/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">PEP 401</a></li> </ul> <p>The intro and outro music is from Requiem for a Fish <a href="http://freemusicarchive.org/music/The_Freak_Fandango_Orchestra/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">The Freak Fandango Orchestra</a> / <a href="http://creativecommons.org/licenses/by-sa/3.0/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">CC BY-SA</a></p> </div> <img alt="" height="0" src="https://analytics.boundlessnotions.com/piwik.php?idsite=1&rec=1&url=https%3A%2F%2Fwww.pythonpodcast.com%2Fmodern-python-brett-cannon-episode-320%2F&action_name=Finding+The+Core+Of+Python+For+A+Bright+Future+With+Brett+Cannon+-+Episode+320&urlref=https%3A%2F%2Fwww.pythonpodcast.com%2Ffeed%2F&utm_source=rss&utm_medium=rss" style="border: 0; width: 0; height: 0;" width="0" />