<?xml version="1.0"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">

<channel>
	<title>Planet Python</title>
	<link>http://planetpython.org/</link>
	<language>en</language>
	<description>Planet Python - http://planetpython.org/</description>

<item>
	<title>Python Software Foundation: Announcing the 2026 PSF Board Election Results!</title>
	<guid>https://pyfound.blogspot.com/2026/09/announcing-2026-psf-board-election.html</guid>
	<link>https://pyfound.blogspot.com/2026/09/announcing-2026-psf-board-election.html</link>
	<description>&lt;p&gt;The 2026 election for the PSF Board created an opportunity for conversations about the PSF's work to serve the global Python community. We appreciate community members' perspectives, passion, and engagement in the election process this year.&amp;nbsp;&lt;/p&gt;&lt;p&gt;We want to send a big thanks to everyone who ran and was willing to serve on the PSF Board. Even if you were not elected, we appreciate all the time and effort you put into thinking about how to improve the PSF and represent the parts of the community you participate in. We hope that you will continue to think about these issues, share your ideas, and join a PSF Work Group or PSF initiative if you feel called to do so.&lt;br /&gt;&lt;/p&gt;&lt;h3&gt;Board Members Elect&amp;nbsp;&lt;/h3&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwa029mAK-VzIrvSzCbyYd6Ns0C2gefTG30Zjizu9A4UywuwEimTNiZuURqrcN6QiLAqUq4H7AjytpgKT0dXXgAhF9Bcr1_CaIIPCYIr6N9MasdJ1q1HXJwBWwfj2Y61KtjmjoGAOGt77rGSL_fr2d3cNLWotjwn7bZWb1g_69KhLb_XfIbg/s1200/election%20announcement(1).png&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwa029mAK-VzIrvSzCbyYd6Ns0C2gefTG30Zjizu9A4UywuwEimTNiZuURqrcN6QiLAqUq4H7AjytpgKT0dXXgAhF9Bcr1_CaIIPCYIr6N9MasdJ1q1HXJwBWwfj2Y61KtjmjoGAOGt77rGSL_fr2d3cNLWotjwn7bZWb1g_69KhLb_XfIbg/w400-h400/election%20announcement(1).png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Congratulations to our three new and one returning Board members who have been elected!&amp;nbsp;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Elaine Wong&lt;/li&gt;&lt;li&gt;Ee Durbin&lt;/li&gt;&lt;li&gt;Laís Carvalho&amp;nbsp;&lt;/li&gt;&lt;li&gt;Georgi Ker&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;We’ll be in touch with all the elected candidates shortly to schedule onboarding. Newly elected PSF Board members are provided orientation for their service and will be joining the upcoming board meeting in October.&amp;nbsp;&lt;br /&gt;&lt;/p&gt;&lt;h3&gt;Thank you!&lt;/h3&gt;&lt;p&gt;We’d like to take this opportunity to thank our outgoing board members. Cheuk Ting Ho has been a super engaged PSF Board member, participating in many committees, and helping out on many PSF Programs and projects during her time on the PSF Board. Chris Neugebauer has been a longtime board member and in particular has been the watch guard of our bylaws conversations and has always been ready to share institutional knowledge. Denny Perez has been instrumental on the PSF Board, serving on the Executive Committee, as Treasurer, and on various committees during her tenure. All three of you helped shape the PSF’s Strategic Plan for the next 5 years, which was a massive undertaking. Thank you, Cheuk, Chris, and Denny for your leadership and dedication to the PSF and the Python community. You will be missed and are deeply appreciated!&lt;/p&gt;&lt;p&gt;Our heartfelt thanks go out to each of you who took the time to review the candidates and submit your votes. Your participation helps the PSF represent our community. We received 670 total ballots, easily reaching quorum–1/3 of affirmed voting members (1123). We’re especially grateful for your patience with continuing to navigate the additions to the elections processes with the inaugural Python Packaging Council election.&lt;br /&gt;&lt;br /&gt;We also want to thank everyone who helped promote this year’s board election, especially Board Member KwonHan Bae, who took the initiative to cover this year’s election and worked with PSF Staff to conduct written interviews with candidates. This promotional effort was inspired by the work of &lt;a href=&quot;https://pythoncommunitynews.com/&quot; target=&quot;_blank&quot;&gt;Python Community News&lt;/a&gt; in 2023. We also want to highlight the PSF staff members and PSF Board members who put in tons of effort each year as we work to continually improve the PSF elections.&lt;br /&gt;&lt;/p&gt;&lt;h3&gt;What’s next?&lt;/h3&gt;&lt;p&gt;If you’re interested in the complete tally, make sure to check the &lt;a href=&quot;https://opavote.com/results/6289918744854528&quot; target=&quot;_blank&quot;&gt;Python Software Foundation Board of Directors Election 2026 Results page&lt;/a&gt;. &lt;i&gt;These results will be available until November 10, 2026.&lt;/i&gt;&lt;/p&gt;&lt;p&gt;The PSF Election team will conduct a retrospective of this year’s election process to ensure we are improving year over year. We received valuable feedback about the process and tooling. We hope to be able to implement more changes for next year to ensure a smooth and accessible election process for everyone in our community. If you have feedback or comments about this year’s PSF Board election, we welcome you to &lt;a href=&quot;https://discuss.python.org/t/2026-psf-board-election/107797&quot; target=&quot;_blank&quot;&gt;join the discussion on discuss.python.org&lt;/a&gt; or email psf-elections@pyfound.org.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Finally, it might feel a little early to mention this, but we will have at least 3 seats open again next year. If you're interested in running or learning more, we encourage you to contact a current PSF Board member or two this year and ask them about their experience serving on the board.&lt;/p&gt;</description>
	<pubDate>Fri, 02 Oct 2026 09:27:53 +0000</pubDate>
</item>
<item>
	<title>Talk Python to Me: #565: Tachyon, Python 3.15's Built-in Sampling Profiler</title>
	<guid>https://talkpython.fm/episodes/show/565/tachyon-python-3.15s-built-in-sampling-profiler</guid>
	<link>https://talkpython.fm/episodes/show/565/tachyon-python-3.15s-built-in-sampling-profiler</link>
	<description>Do you know what's actually slow in your Python app? Or are you guessing? Until now, profiling Python meant a tracing profiler that made your code 2 to 3 times slower. Or a third-party tool that broke with every new release. Python 3.15 fixes that. It ships Tachyon, a sampling profiler built into the standard library. It attaches to live production apps with almost zero overhead. My guests are Pablo Galindo Salgado, CPython core developer and Steering Council member, and László Kiss Kollár from Bloomberg's Python infrastructure team. Their first prototype ran at two samples a second. Now it does over a million hz. And it lands in Python 3.15 this October.&amp;lt;br/&amp;gt;
&amp;lt;br/&amp;gt;
&amp;lt;strong&amp;gt;Episode sponsors&amp;lt;/strong&amp;gt;&amp;lt;br/&amp;gt;
&amp;lt;br/&amp;gt;
&amp;lt;a href='https://talkpython.fm/sentry'&amp;gt;Sentry Error Monitoring, Code talkpython26&amp;lt;/a&amp;gt;&amp;lt;br&amp;gt;
&amp;lt;a href='https://talkpython.fm/devopsbook'&amp;gt;Python in Production&amp;lt;/a&amp;gt;&amp;lt;br&amp;gt;
&amp;lt;a href='https://talkpython.fm/training'&amp;gt;Talk Python Courses&amp;lt;/a&amp;gt;&amp;lt;br/&amp;gt;
&amp;lt;br/&amp;gt;
&amp;lt;h2 class=&quot;links-heading mb-4&quot;&amp;gt;Links from the show&amp;lt;/h2&amp;gt;
&amp;lt;div&amp;gt;&amp;lt;strong&amp;gt;Guests&amp;lt;/strong&amp;gt;&amp;lt;br/&amp;gt;
&amp;lt;strong&amp;gt;László Kiss Kollár&amp;lt;/strong&amp;gt;: &amp;lt;a href=&quot;https://www.linkedin.com/in/lkollar/?featured_on=talkpython&quot; target=&quot;_blank&quot; &amp;gt;linkedin.com&amp;lt;/a&amp;gt;&amp;lt;br/&amp;gt;
&amp;lt;strong&amp;gt;Pablo Galindo Salgado&amp;lt;/strong&amp;gt;&amp;lt;br/&amp;gt;
&amp;lt;br/&amp;gt;
&amp;lt;strong&amp;gt;3.11&amp;lt;/strong&amp;gt;: &amp;lt;a href=&quot;https://talkpython.fm/episodes/show/388/python-3.11-is-here-and-its-fast&quot; target=&quot;_blank&quot; &amp;gt;talkpython.fm&amp;lt;/a&amp;gt;&amp;lt;br/&amp;gt;
&amp;lt;strong&amp;gt;Memray&amp;lt;/strong&amp;gt;: &amp;lt;a href=&quot;https://talkpython.fm/episodes/show/425/memray-the-endgame-python-memory-profiler&quot; target=&quot;_blank&quot; &amp;gt;talkpython.fm&amp;lt;/a&amp;gt;&amp;lt;br/&amp;gt;
&amp;lt;strong&amp;gt;PyStack&amp;lt;/strong&amp;gt;: &amp;lt;a href=&quot;https://talkpython.fm/episodes/show/419/debugging-python-in-production-with-pystack&quot; target=&quot;_blank&quot; &amp;gt;talkpython.fm&amp;lt;/a&amp;gt;&amp;lt;br/&amp;gt;
&amp;lt;strong&amp;gt;profile and cProfile&amp;lt;/strong&amp;gt;: &amp;lt;a href=&quot;https://docs.python.org/3/library/profile.html?featured_on=talkpython&quot; target=&quot;_blank&quot; &amp;gt;docs.python.org&amp;lt;/a&amp;gt;&amp;lt;br/&amp;gt;
&amp;lt;strong&amp;gt;py-spy&amp;lt;/strong&amp;gt;: &amp;lt;a href=&quot;https://github.com/benfred/py-spy?featured_on=talkpython&quot; target=&quot;_blank&quot; &amp;gt;github.com&amp;lt;/a&amp;gt;&amp;lt;br/&amp;gt;
&amp;lt;strong&amp;gt;Austin&amp;lt;/strong&amp;gt;: &amp;lt;a href=&quot;https://github.com/P403n1x87/austin?featured_on=talkpython&quot; target=&quot;_blank&quot; &amp;gt;github.com&amp;lt;/a&amp;gt;&amp;lt;br/&amp;gt;
&amp;lt;strong&amp;gt;PEP 799&amp;lt;/strong&amp;gt;: &amp;lt;a href=&quot;https://peps.python.org/pep-0799/?featured_on=talkpython&quot; target=&quot;_blank&quot; &amp;gt;peps.python.org&amp;lt;/a&amp;gt;&amp;lt;br/&amp;gt;
&amp;lt;strong&amp;gt;PEP 768&amp;lt;/strong&amp;gt;: &amp;lt;a href=&quot;https://peps.python.org/pep-0768/?featured_on=talkpython&quot; target=&quot;_blank&quot; &amp;gt;peps.python.org&amp;lt;/a&amp;gt;&amp;lt;br/&amp;gt;
&amp;lt;strong&amp;gt;PyCon US 2026 talk&amp;lt;/strong&amp;gt;: &amp;lt;a href=&quot;https://us.pycon.org/2026/schedule/presentation/31?featured_on=talkpython&quot; target=&quot;_blank&quot; &amp;gt;us.pycon.org&amp;lt;/a&amp;gt;&amp;lt;br/&amp;gt;
&amp;lt;strong&amp;gt;The docs&amp;lt;/strong&amp;gt;: &amp;lt;a href=&quot;https://docs.python.org/3.15/library/profiling.sampling.html?featured_on=talkpython&quot; target=&quot;_blank&quot; &amp;gt;docs.python.org&amp;lt;/a&amp;gt;&amp;lt;br/&amp;gt;
&amp;lt;strong&amp;gt;Backport to 3.14&amp;lt;/strong&amp;gt;: &amp;lt;a href=&quot;https://github.com/pythonbackport/python-profiling?featured_on=talkpython&quot; target=&quot;_blank&quot; &amp;gt;github.com&amp;lt;/a&amp;gt;&amp;lt;br/&amp;gt;
&amp;lt;br/&amp;gt;
&amp;lt;strong&amp;gt;Watch this episode on YouTube&amp;lt;/strong&amp;gt;: &amp;lt;a href=&quot;https://www.youtube.com/watch?v=yZdfOf8kQo4&quot; target=&quot;_blank&quot; &amp;gt;youtube.com&amp;lt;/a&amp;gt;&amp;lt;br/&amp;gt;
&amp;lt;strong&amp;gt;Episode #565 deep-dive&amp;lt;/strong&amp;gt;: &amp;lt;a href=&quot;https://talkpython.fm/episodes/show/565/tachyon-python-3.15s-built-in-sampling-profiler#takeaways-anchor&quot; target=&quot;_blank&quot; &amp;gt;talkpython.fm/565&amp;lt;/a&amp;gt;&amp;lt;br/&amp;gt;
&amp;lt;strong&amp;gt;Episode transcripts&amp;lt;/strong&amp;gt;: &amp;lt;a href=&quot;https://talkpython.fm/episodes/transcript/565/tachyon-python-3.15s-built-in-sampling-profiler&quot; target=&quot;_blank&quot; &amp;gt;talkpython.fm&amp;lt;/a&amp;gt;&amp;lt;br/&amp;gt;
&amp;lt;br/&amp;gt;
&amp;lt;strong&amp;gt;Theme Song: Developer Rap&amp;lt;/strong&amp;gt;&amp;lt;br/&amp;gt;
&amp;lt;strong&amp;gt;🥁 Served in a Flask 🎸&amp;lt;/strong&amp;gt;: &amp;lt;a href=&quot;https://talkpython.fm/flasksong&quot; target=&quot;_blank&quot; &amp;gt;talkpython.fm/flasksong&amp;lt;/a&amp;gt;&amp;lt;br/&amp;gt;
&amp;lt;br/&amp;gt;
&amp;lt;strong&amp;gt;---==  Don't be a stranger  ==---&amp;lt;/strong&amp;gt;&amp;lt;br/&amp;gt;
&amp;lt;strong&amp;gt;YouTube&amp;lt;/strong&amp;gt;: &amp;lt;a href=&quot;https://talkpython.fm/youtube&quot; target=&quot;_blank&quot; &amp;gt;&amp;lt;i class=&quot;fa-brands fa-youtube&quot;&amp;gt;&amp;lt;/i&amp;gt; youtube.com/@talkpython&amp;lt;/a&amp;gt;&amp;lt;br/&amp;gt;
&amp;lt;br/&amp;gt;
&amp;lt;strong&amp;gt;Bluesky&amp;lt;/strong&amp;gt;: &amp;lt;a href=&quot;https://bsky.app/profile/talkpython.fm&quot; target=&quot;_blank&quot; &amp;gt;@talkpython.fm&amp;lt;/a&amp;gt;&amp;lt;br/&amp;gt;
&amp;lt;strong&amp;gt;Mastodon&amp;lt;/strong&amp;gt;: &amp;lt;a href=&quot;https://fosstodon.org/web/@talkpython&quot; target=&quot;_blank&quot; &amp;gt;&amp;lt;i class=&quot;fa-brands fa-mastodon&quot;&amp;gt;&amp;lt;/i&amp;gt; @talkpython@fosstodon.org&amp;lt;/a&amp;gt;&amp;lt;br/&amp;gt;
&amp;lt;strong&amp;gt;X.com&amp;lt;/strong&amp;gt;: &amp;lt;a href=&quot;https://x.com/talkpython&quot; target=&quot;_blank&quot; &amp;gt;&amp;lt;i class=&quot;fa-brands fa-twitter&quot;&amp;gt;&amp;lt;/i&amp;gt; @talkpython&amp;lt;/a&amp;gt;&amp;lt;br/&amp;gt;
&amp;lt;br/&amp;gt;
&amp;lt;strong&amp;gt;Michael on Bluesky&amp;lt;/strong&amp;gt;: &amp;lt;a href=&quot;https://bsky.app/profile/mkennedy.codes?featured_on=talkpython&quot; target=&quot;_blank&quot; &amp;gt;@mkennedy.codes&amp;lt;/a&amp;gt;&amp;lt;br/&amp;gt;
&amp;lt;strong&amp;gt;Michael on Mastodon&amp;lt;/strong&amp;gt;: &amp;lt;a href=&quot;https://fosstodon.org/web/@mkennedy&quot; target=&quot;_blank&quot; &amp;gt;&amp;lt;i class=&quot;fa-brands fa-mastodon&quot;&amp;gt;&amp;lt;/i&amp;gt; @mkennedy@fosstodon.org&amp;lt;/a&amp;gt;&amp;lt;br/&amp;gt;
&amp;lt;strong&amp;gt;Michael on X.com&amp;lt;/strong&amp;gt;: &amp;lt;a href=&quot;https://x.com/mkennedy?featured_on=talkpython&quot; target=&quot;_blank&quot; &amp;gt;&amp;lt;i class=&quot;fa-brands fa-twitter&quot;&amp;gt;&amp;lt;/i&amp;gt; @mkennedy&amp;lt;/a&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;</description>
	<pubDate>Fri, 02 Oct 2026 00:09:20 +0000</pubDate>
</item>
<item>
	<title>EuroPython: Humans of EuroPython: Diego Russo</title>
	<guid>https://blog.europython.eu/humans-of-ep-diego/</guid>
	<link>https://blog.europython.eu/humans-of-ep-diego/</link>
	<description>&lt;p&gt;This week we&amp;#x2019;d love to spotlight &lt;strong&gt;Diego Russo&lt;/strong&gt;, a member of the Programme Team, and his contributions to EuroPython 2026.&lt;/p&gt;&lt;p&gt;In addition to helping ensure an interesting and varied conference programme, Diego was our liaison with Guido van Rossum, &amp;#x141;ukasz Langa and Pablo Galindo Salgado who gave a very fun keynote session at the conference.&lt;/p&gt;&lt;p&gt;We&amp;amp;aposre so grateful for your contribution, Diego!&lt;/p&gt;&lt;img src=&quot;https://blog.europython.eu/content/images/2026/10/diego-3.png&quot; class=&quot;kg-image&quot; alt=&quot;Cover image with Diego Russo, a member of the Programme Team at EuroPython 2026&quot; width=&quot;1000&quot; height=&quot;1000&quot; /&gt;&lt;p&gt;&lt;strong&gt;EP: How were you involved in EuroPython 2026?&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;I was part of the Programme Team, managing the CfP, mentorship programme, speaker selection, waiting list and conference schedule. A big part of the work is keeping the programme balanced and free of gaps.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;EP: Was there something specific about the Python community that made you want to give something back through volunteering?&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;I&amp;#x2019;ve used Python since 2006 and first attended EuroPython in Florence in 2011. I was struck by the community&amp;#x2019;s openness and welcoming spirit. Python conferences gave me a lot over the years, so in 2022 I decided to give something back by volunteering. Since then, I&amp;#x2019;ve worked with the Communications and Programme teams.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;EP: What does the &amp;quot;invisible&amp;quot; side of EuroPython look like - the stuff that has to go right for everyone else to have a good time?&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;A lot of it is the schedule. We have several tracks and need to balance topics so people with different interests stay engaged. We receive far more proposals than we can fit, which lets us be selective but makes the choices difficult.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;EP: What&amp;amp;aposs something you noticed about the conference because you were volunteering that you&amp;amp;aposd never have spotted as a regular attendee?&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;How many last-minute cancellations happen, and how quickly the team has to reshuffle the schedule and sometimes find replacement speakers during the conference itself.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;EP: In what ways did volunteering shape or strengthen your ties to the community?&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Python is more than a programming language to me. It has shaped my career to the point that I now contribute to CPython as a Core Developer, and the community played a major part in choosing that path.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;EP: Is there a common myth about conference volunteering you&amp;amp;aposd like to set the record straight on?&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;I waited before volunteering because I thought I did not have enough experience. I was completely wrong. The EuroPython community made it easy to get involved from the start. If you are willing to help and learn, you gain experience along the way.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;EP: What surprised you most about volunteering at EuroPython?&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;What surprised me most is how much volunteering changes the way you experience the conference. You stop seeing EuroPython only as an event you attend and start seeing the people, effort and collaboration that make it possible. It gives you a much stronger sense of belonging to the community.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;EP: Thank you for your work, Diego!&lt;/strong&gt;&lt;/p&gt;</description>
	<pubDate>Thu, 01 Oct 2026 23:56:01 +0000</pubDate>
</item>
<item>
	<title>Django Weblog: Nominate Someone for the 2026 Malcolm Tredinnick Memorial Prize</title>
	<guid>https://www.djangoproject.com/weblog/2026/oct/01/nominate-someone-for-the-2026-malcolm-prize/</guid>
	<link>https://www.djangoproject.com/weblog/2026/oct/01/nominate-someone-for-the-2026-malcolm-prize/</link>
	<description>&lt;p&gt;Hello Everyone 👋 &lt;/p&gt;
&lt;p&gt;It is that time of year again when we recognize someone from our community in memory of our friend Malcolm.&lt;/p&gt;
&lt;p&gt;Malcolm was an early core contributor to Django and had a huge influence on the Django we know today. Besides being knowledgeable, he was also especially friendly to new users and contributors. He exemplified what it means to be an amazing Open Source contributor. We still miss him to this day.&lt;/p&gt;
&lt;h1 id=&quot;s-the-prize&quot;&gt;The prize&lt;/h1&gt;
&lt;p&gt;Our &lt;a href=&quot;http://www.djangoproject.com/foundation/prizes/&quot;&gt;prizes page&lt;/a&gt; summarizes it nicely:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The Malcolm Tredinnick Memorial Prize is a monetary prize, awarded annually, to the person who best exemplifies the spirit of Malcolm’s work - someone who welcomes, supports, and nurtures newcomers; freely gives feedback and assistance to others, and helps to grow the community.
The hope is that the recipient of the award will use the award stipend as a contribution to travel to a community event -- a DjangoCon, a PyCon, a sprint -- and continue in Malcolm’s footsteps.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Please make your nominations using our form: &lt;a href=&quot;https://docs.google.com/forms/d/e/1FAIpQLSfr8RZOwwnlhizlJnicXUFifPRkEvDrKssyhtC3zhKl_-bxvQ/viewform&quot;&gt;2026 Malcolm Tredinnick Memorial Prize nominations&lt;/a&gt;. Django Software Foundation board members, Django Fellows, and the Treasurer’s assistant are not eligible to receive the prize. You are still welcome to use the appreciation field below to recognize them, and we’ll make sure those messages are passed along.&lt;/p&gt;
&lt;p&gt;We will take nominations until &lt;strong&gt;Saturday, October 15th, 2026, 23:59 &lt;a href=&quot;https://www.timeanddate.com/time/zones/aoe&quot;&gt;Anywhere on Earth&lt;/a&gt;&lt;/strong&gt;, and will announce the results in late October. If you have any questions, please use &lt;a href=&quot;https://forum.djangoproject.com/t/2026-malcolm-tredinnick-memorial-prize/46118&quot;&gt;our dedicated forum thread&lt;/a&gt; or &lt;a href=&quot;http://www.djangoproject.com/contact/foundation/&quot;&gt;contact the DSF Board&lt;/a&gt;.&lt;/p&gt;</description>
	<pubDate>Thu, 01 Oct 2026 13:51:21 +0000</pubDate>
</item>
<item>
	<title>Python Insider: Python 3.10.22, 3.11.17, 3.12.15, 3.13.16 and 3.14.8 are now available!</title>
	<guid>https://blog.python.org/2026/10/python-31022-31117/</guid>
	<link>https://blog.python.org/2026/10/python-31022-31117/</link>
	<description>Security updates across Python 3.10–3.14, the final maintenance release of 3.13, and a farewell to Python 3.10.</description>
	<pubDate>Thu, 01 Oct 2026 00:00:00 +0000</pubDate>
</item>
<item>
	<title>Graham Dumpleton: Getting to know Tachyon</title>
	<guid>https://grahamdumpleton.me/posts/2026/10/getting-to-know-tachyon/</guid>
	<link>https://grahamdumpleton.me/posts/2026/10/getting-to-know-tachyon/</link>
	<description>&lt;p&gt;Python 3.15 ships with a new profiler. It is called Tachyon, it lives in the standard library as the &lt;code&gt;profiling.sampling&lt;/code&gt; module, and unlike cProfile it is a sampling profiler rather than a tracing one. I now have a set of hands-on workshops for it, which you can find at &lt;a href=&quot;https://github.com/GrahamDumpleton/tachyon-workshops&quot;&gt;github.com/GrahamDumpleton/tachyon-workshops&lt;/a&gt; or on the &lt;a href=&quot;https://grahamdumpleton.me/workshops/tachyon/&quot;&gt;workshops page&lt;/a&gt; of this site, and they have reached the point where I am happy for other people to do them. That said, they were not written for other people in the first place. They were written so I could learn Tachyon myself, and the reason I wanted to learn it had little to do with profiling as such.&lt;/p&gt;
&lt;h2&gt;Why I wrote them&lt;/h2&gt;
&lt;p&gt;For the past while I have been working on &lt;a href=&quot;https://github.com/GrahamDumpleton/wrapture&quot;&gt;wrapture&lt;/a&gt;, a library built on top of wrapt for attaching bindings to arbitrary call sites in a Python program without modifying the code being observed, then doing something useful with what flows through those call sites, such as recording calls or exporting traces. Everything wrapture does happens from inside the process. It wraps functions, and when they are called it is there in the call path to see the arguments, the return value, the exception, and the time taken.&lt;/p&gt;
&lt;p&gt;So when a profiler landed in the standard library the obvious question was whether wrapture could make use of it. Could Tachyon be offered as part of wrapture's tracing, so that a binding on a call site could also tell you what the program was doing underneath that call? Could the two share anything at all? I did not know, and reading the Tachyon documentation was not going to tell me, because the documentation describes what each option does and not what you would want it for. The only way I was going to get a real answer was to use every part of the profiler on real programs, and the way I have been doing that lately is to have workshops written for the thing I want to learn and then do the workshops.&lt;/p&gt;
&lt;h2&gt;Working from the outside&lt;/h2&gt;
&lt;p&gt;A sampling profiler does not instrument your program. Tachyon runs as a separate process, reads the call stack of the target process from the outside, a thousand times a second by default, and counts what it finds. The program runs at full speed and never knows it is being watched. The counts are then an estimate of where time went: a function that appears in half the samples took about half the time. cProfile, which in 3.15 has moved to &lt;code&gt;profiling.tracing&lt;/code&gt;, does the opposite. It hooks every function call and return, so the counts are exact, but a program made of millions of small calls can run several times slower under it.&lt;/p&gt;
&lt;p&gt;One of the early workshops puts the same program under both and the difference is stark enough that it answers the question of which to reach for most of the time. The other consequence of working from the outside is that the profiler needs permission to read another process's memory. Linux lets a user do that to processes they started themselves. macOS and Windows do not without root or administrator rights, which is why the workshops only run on Linux, and why on a Mac the way to run them is in a container. More on that below.&lt;/p&gt;
&lt;h2&gt;Where that leaves wrapture&lt;/h2&gt;
&lt;p&gt;My first impression, having now been through all of it, is that the two do not fit together. Tachyon works by looking in at a process from outside. wrapture works by being inside the process, in the call path. I have found nothing to suggest Tachyon can be driven from within the process it is profiling in the way wrapture would need, and nothing in the way it reads a process that a binding on a call site could hook into. The models are different enough that I cannot see a way of marrying them, at least not with what is in 3.15.&lt;/p&gt;
&lt;p&gt;That is a perfectly good answer. I would rather know it now than have spent time trying to bolt one onto the other, and the reasoning behind it is grounded in having used every mode of the profiler rather than guessed from a page of options. If that changes in a later release, or if someone knows something about Tachyon's internals that I missed, I would like to hear about it. For now the question is parked, not closed.&lt;/p&gt;
&lt;h2&gt;Learning by having the lesson written&lt;/h2&gt;
&lt;p&gt;What surprised me was how much better this worked as a way of learning than reading the documentation would have. I did not write the workshops by hand. I described what I wanted each one to teach, had an AI build it, then did the workshop. The useful part was not that the AI knew Tachyon, since the documentation knew Tachyon just as well. It was that the AI kept filling in the context the documentation leaves out: why wall-clock time and CPU time disagree and what that disagreement tells you about the fix, why a view of which thread holds the GIL exists at all, why you would record a profile in the binary format and look at it later rather than looking at it now. Each feature came with a small program written to show it, which had the problem the feature was there to find, and that is what made the feature stick.&lt;/p&gt;
&lt;p&gt;This is a different way to use an AI for learning than asking it questions. Asking questions gets you answers at the level of the question. Asking for the lesson to be built gets you something you then have to work through with your own hands, and if the lesson is wrong you find out when the check at the end of a step does not pass. It is also, I have noticed, far closer to how I actually learned things in the first place, which was by having to teach them.&lt;/p&gt;
&lt;h2&gt;What the workshops cover&lt;/h2&gt;
&lt;p&gt;There are two collections, with a catalog in the repository so that one URL offers both.&lt;/p&gt;
&lt;p&gt;The first, &amp;quot;Profiling with Tachyon&amp;quot;, is fourteen workshops and a little under four hours in total. It starts with running the profiler on a small report generator and reading the table it prints, so that you know what a sample is and why time is samples multiplied by an interval. It then puts a program under both the tracer and the sampler, and looks at how the profiler reads a process from outside and what that needs permission for. From there it moves through the pictures the profiler produces: the interactive flame graph, the heatmap that paints sample counts onto the source so a single expensive line stands out, and recording in the binary format to replay later as a table, a flame graph, a heatmap, a Firefox Profiler file, JSON lines or a pstats file. The next group is about choosing what to measure, with workshops on wall-clock against CPU time, threads and the GIL, the cost of exceptions, and async code profiled as tasks and awaits rather than as the event loop's stack. The last group looks closer, at the markers for native code and the garbage collector, at opcode-level profiling in the heatmap, at differential flame graphs for telling whether a fix worked, and at the live terminal view that watches one process like &lt;code&gt;top&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The second, &amp;quot;Tachyon on real applications&amp;quot;, is seven workshops and a little over two hours. Each one runs a realistic program in one terminal and drives it from a second, with the profiler between them. There is a Flask application under load, then a slow endpoint found with the flame graph, pinned to a line with the heatmap, fixed, and proven fixed with a second recording. There is a Starlette service under uvicorn whose searches stall when articles are read, including a fix with a thread that does not work and why, and one with a process pool that does. There are worker processes, both a process pool and gunicorn with three workers, profiled with &lt;code&gt;--subprocesses&lt;/code&gt;. There is a pytest suite with the profiler wrapped around it, attaching to a server that was started without the profiler, and finally a profile recorded in production, carried back and compared in a notebook with a table and a chart.&lt;/p&gt;
&lt;p&gt;Every workshop ships the program it profiles, and the flame graphs and heatmaps open in JupyterLab in a tab beside the code, so you are reading the picture and the source together rather than switching between a browser and an editor.&lt;/p&gt;
&lt;h2&gt;Running them&lt;/h2&gt;
&lt;p&gt;The workshops are built on &lt;a href=&quot;https://github.com/GrahamDumpleton/jupyterlab-workshop&quot;&gt;jupyterlab-workshop&lt;/a&gt;, a JupyterLab extension that shows the instructions in a side panel with clickable actions that drive the session, opening files, running commands in a terminal and running cells in a notebook, and checks what you have done as you go.&lt;/p&gt;
&lt;p&gt;The easiest way to start is the Binder button in the repository README, which builds the repository into a temporary JupyterLab on &lt;a href=&quot;https://mybinder.org&quot;&gt;mybinder.org&lt;/a&gt; with nothing to install and no account needed. The session is thrown away when you are done, so finish a workshop in the session you started it in, and shut the session down from the Finish dialog or the File menu rather than just closing the tab, so the resources go back for other people. The Codespaces button does the same in a container tied to your GitHub account, which persists until you delete it and uses your account's monthly allowance.&lt;/p&gt;
&lt;p&gt;If you want to run them on your own machine and that machine is a Mac, the Linux requirement means a container. The repository carries a Dockerfile for it, with Python 3.15, JupyterLab, the extension and a non-root user, and the checkout is mounted so everything the workshops write ends up in your checkout:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;git clone https://github.com/GrahamDumpleton/tachyon-workshops
cd tachyon-workshops
docker build -t tachyon-workshops -f container/Dockerfile .
docker run --rm --init -it -p 127.0.0.1:8888:8888 -e JUPYTER_TOKEN=tachyon \
    -v &amp;quot;$PWD&amp;quot;:/home/learner/tachyon-workshops tachyon-workshops
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then open &lt;code&gt;http://127.0.0.1:8888/?token=tachyon&lt;/code&gt;. On Linux with Python 3.15 and &lt;a href=&quot;https://docs.astral.sh/uv/&quot;&gt;uv&lt;/a&gt; you can skip the clone entirely and launch the extension on the catalog directly, with a directory of your own to keep the workshops in:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;uvx --python 3.15 --from &amp;quot;jupyterlab-workshop[lab]&amp;quot; jupyter-workshop launch \
    --root ~/training --catalog https://raw.githubusercontent.com/GrahamDumpleton/tachyon-workshops/main/catalog.json
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Python 3.15 is named because each workshop builds its own environment from the Python that JupyterLab runs on, and the profiler and the program it profiles must be the same Python. If you already have the extension installed somewhere, you can also just subscribe to the catalog from the workshop browser and the collections are offered there.&lt;/p&gt;
&lt;h2&gt;What's next&lt;/h2&gt;
&lt;p&gt;Whether Tachyon ends up having anything to do with wrapture, I know a good deal more about it than I did, and I have something to show for the time that other people can use. If you do the workshops and find a step that is unclear, or one that does not work for you, the &lt;a href=&quot;https://github.com/GrahamDumpleton/tachyon-workshops/issues&quot;&gt;issue tracker&lt;/a&gt; is the place to say so. Fingers crossed they are as useful a way into Tachyon for you as writing them was for me.&lt;/p&gt;</description>
	<pubDate>Thu, 01 Oct 2026 00:00:00 +0000</pubDate>
</item>
<item>
	<title>&quot;Michiel's Blog&quot;: Monitoring my Samsung smart washing machine without a cloud</title>
	<guid>https://tildeweb.nl/~michiel/samsung-monitoring-my-washer-without-a-cloud.html</guid>
	<link>https://tildeweb.nl/~michiel/samsung-monitoring-my-washer-without-a-cloud.html</link>
	<description>&lt;p&gt;Two weeks ago I gave a talk at
&lt;a href=&quot;https://pythonleiden.nl/meeting-2026-09-17.html&quot;&gt;Python Leiden&lt;/a&gt; on how I
monitor my Samsung Smart washer without using Samsung SmartThings.&lt;/p&gt;
&lt;p&gt;As Samsung announced
&lt;a href=&quot;https://hackaday.com/2026/07/28/samsungs-smartthings-api-terminates-free-access/&quot;&gt;using their SmartThings API will start costing USD 5 per month starting October&lt;/a&gt;,
and today is the last day of September, I thought it would be appropriate to
write a blog post based on my talk now.&lt;/p&gt;
&lt;h2&gt;I have a Samsung washing machine&lt;/h2&gt;
&lt;p&gt;&lt;img alt=&quot;My washing machine&quot; class=&quot;small&quot; src=&quot;https://tildeweb.nl/~michiel/tags/python/images/samsung-washer.jpg&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I bought it in May 2021 for 450 euros. It plays &lt;em&gt;Die Forelle&lt;/em&gt; whenever the wash
is finished. But it&amp;rsquo;s in my garage, so I can&amp;rsquo;t hear it when I&amp;rsquo;m in my living
room or home office. Also, it is &amp;ldquo;smart&amp;rdquo;. It calculates how long the cycle is
going to take, depending on the load and I think also depending on how dirty
the water is. This means that if you start a cycle, it tells you that it&amp;rsquo;s done
in 90 minutes, and if you&amp;rsquo;d come back 90 minutes later it might still need 30
minutes, or it might be that it&amp;rsquo;s already done for 15.&lt;/p&gt;
&lt;p&gt;It can send you notifications via the SmartThings app. This app requires a
whole bunch of permissions, and takes up a whopping 857MB on my iPhone. It gets
the data from the SmartThings cloud. So my washer talks to SmartThings, tells
when it thinks the wash is done, and my phone talks to the same cloud if I open
the app to see how the laundry is going and to send me notifications when it&amp;rsquo;s
done. I don&amp;rsquo;t really like this much.&lt;/p&gt;
&lt;p&gt;Samsung has just sent an update to some of their smart fridges
&lt;a href=&quot;https://shattered.io/samsung-bespoke-ai-fridge-smartthings-update-bricked-2026/&quot;&gt;bricking them for a couple of days&lt;/a&gt;.
I don&amp;rsquo;t like that much either.&lt;/p&gt;
&lt;h2&gt;But you could use Home Assistant!&lt;/h2&gt;
&lt;p&gt;Yeah I know, &lt;a href=&quot;https://www.home-assistant.io/&quot;&gt;Home Assistant&lt;/a&gt;. Every tinkerer&amp;rsquo;s
favorite platform for home automation. Which you can install on a Raspberry Pi
or on their own bespoke hardware. Indeed, it has a
&lt;a href=&quot;https://www.home-assistant.io/integrations/smartthings/&quot;&gt;SmartThings integration&lt;/a&gt;.
Unfortunately, this still works via Samsung&amp;rsquo;s cloud. So my washer still needs
to talk to SmartThings, and my Home Assistant server would need to get its data
from the Samsung Cloud. Moreover, Samsung decided to start asking money for the
cloud access: 5 USD per month. As you see, it&amp;rsquo;s quite a popular integration
too, with over 10% of Home Assistant users having this installed.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;SmartThings warning Home Assistant&quot; src=&quot;https://tildeweb.nl/~michiel/tags/python/images/home-assistant.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;So if we calculate quickly, if I&amp;rsquo;d have paid 5 USD a month since I had this
washer, it would have cost me €450 for the washer plus $320 for cloud access!
That seems a little out of balance.&lt;/p&gt;
&lt;h2&gt;So what is my goal, anyway?&lt;/h2&gt;
&lt;p&gt;I would like to see when the wash is &lt;em&gt;going to be ready&lt;/em&gt;. I&amp;rsquo;d want to have a
small display that I can place in my living room that can show what is on the
display of the washing machine, how many minutes are left. This way I can
quickly estimate if I run an errand &lt;em&gt;now&lt;/em&gt; or I&amp;rsquo;d wait until the wash is ready,
first. I&amp;rsquo;d not want to use their app for this, nor their cloud.&lt;/p&gt;
&lt;h2&gt;My approach&lt;/h2&gt;
&lt;p&gt;I checked if there is any possibility for local access. I remembered when I
read about the announcement of the Matter protocol, which would allow
interoperability, and Samsung being one of the backers of this protocol, and me
being happy about the fact that I bought a Samsung washer. Silly me.&lt;/p&gt;
&lt;p&gt;It turns out Samsung indeed
&lt;a href=&quot;https://news.samsung.com/global/samsung-electronics-launches-matter-functionality-ushering-a-new-era-of-interoperability&quot;&gt;delivered Matter support&lt;/a&gt;.
What they made is a feature where if you&amp;rsquo;d have a Matter lightbulb (or washer),
you can control that from their SmartThings platform. But it &lt;em&gt;does not work the
other way around!&lt;/em&gt; My smart washer does not expose itself as a Matter device on
the network. It does not expose &lt;em&gt;any&lt;/em&gt; services on the network. Trust me, I used
Wireshark!&lt;/p&gt;
&lt;p&gt;This as opposed to my Brother printer, for instance, which has an open website
and even an endpoint that exposes data as a .csv, which will happily show off
how low the toner is, how many prints it made in its lifetime or even how many
paper jams it had (a not insignificant amount).&lt;/p&gt;
&lt;p&gt;Samsung &lt;em&gt;could&lt;/em&gt; very easily have built something like that. But they don&amp;rsquo;t.
Because they want me in their SmartThings ecosystem, sending my personal data,
and possibly fetching my money, too.&lt;/p&gt;
&lt;p&gt;So I decided to take an alternate approach: put a camera in front of the
machine, take a picture, read it with computer vision, parse it and make it
available over an HTTP endpoint on my local network. This turned out not to be
so easy. Originally I was planning to use a Raspberry Pi that I still had lying
around (who doesn&amp;rsquo;t have one?) with an old Logitech 720P webcam. But the webcam
has a fixed focus distance, and a rather low resolution. It did not turn out
well.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Low res&quot; class=&quot;small&quot; src=&quot;https://tildeweb.nl/~michiel/tags/python/images/washer-lowres.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Then I decided to shell out for the
&lt;a href=&quot;https://www.raspberrypi.com/products/camera-module-3/&quot;&gt;Raspberry Pi Camera Module 3&lt;/a&gt;
which is the version that has autofocus. It is around 35 euros. And while it
works well, only after I installed it I realized I could probably just as well
have used an old Android phone with shattered screen. Because those also have
decent cameras plus autofocus.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Higher res&quot; class=&quot;small&quot; src=&quot;https://tildeweb.nl/~michiel/tags/python/images/washer-higherres.jpg&quot; /&gt;&lt;/p&gt;
&lt;p&gt;And then I breadboarded together a Raspberry Pi Pico plus a 1602 LCD plus a
buzzer, a few LEDs, and a push button. The Pico is a small programmable
microcontroller that is great for things like this. It is low cost, runs
MicroPython if you want, so what&amp;rsquo;s not to like? This display connects to wifi,
gets the state of the washer and shows it on the screen. If there is no wash,
it just acts as a clock. Pretty practical and I like it.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Pico with display&quot; class=&quot;small&quot; src=&quot;https://tildeweb.nl/~michiel/tags/python/images/pico.jpg&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I needed the buzzer just so it could play &lt;em&gt;Die Forelle&lt;/em&gt; when the laundry is
ready ;-)&lt;/p&gt;
&lt;h2&gt;My thoughts&lt;/h2&gt;
&lt;p&gt;It would have been so much better if Samsung would have exposed this data on my
wifi network!&lt;/p&gt;
&lt;p&gt;Please note that this integration only allows me to read out the state of the
washer, I can&amp;rsquo;t remote pause or add bubbles or whatever other features that are
available via their app and that I would not ever use.&lt;/p&gt;
&lt;p&gt;One of my coworkers explained he has a similar washing machine and he hooked it
up to Home Assistant by simply connecting it to a smart plug that exposes the
current draw. When there is no more current draw, he knows the washer is ready.
This works, but my problem is that it does not help me with the question when
the wash is &lt;em&gt;going to be&lt;/em&gt; ready.&lt;/p&gt;
&lt;p&gt;Because I now have the data, I could make a nice graph that shows the washing
machine during its cycle adjusting the &lt;em&gt;ETA&lt;/em&gt; a couple of times. Here&amp;rsquo;s an
example of where it ended earlier than originally planned. But it can also end
much later!&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Washer countdown graph&quot; src=&quot;https://tildeweb.nl/~michiel/tags/python/images/washer-countdown.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;d still like to print a 3D case for the display. And I thought that it might
be nice if I&amp;rsquo;d actually expose a Matter service on my Pi, so one could
integrate it in Home Assistant after all. However, I currently do not run Home
Assistant myself and also as far as I could see there is no great Python
library that I could use for this.&lt;/p&gt;
&lt;p&gt;All in all, it was a fun project!&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;a href=&quot;https://news.ycombinator.com/item?id=49927140&quot;&gt;Discussion on Hacker News&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;</description>
	<pubDate>Wed, 30 Sep 2026 20:00:00 +0000</pubDate>
</item>
<item>
	<title>Python Insider: Python Language Summit 2026</title>
	<guid>https://blog.python.org/2026/09/language-summit-2026/</guid>
	<link>https://blog.python.org/2026/09/language-summit-2026/</link>
	<description>The 2026 Python Language Summit was hosted in Kraków, Poland as part of EuroPython 2026. There were 15 talks covering free-threading, Rust, garbage collection, type annotations, and more.</description>
	<pubDate>Wed, 30 Sep 2026 12:00:11 +0000</pubDate>
</item>
<item>
	<title>Python Insider: Lightning Talks (Python Language Summit 2026)</title>
	<guid>https://blog.python.org/2026/09/language-summit-2026-lightning-talks/</guid>
	<link>https://blog.python.org/2026/09/language-summit-2026-lightning-talks/</link>
	<description>Lightning talks on a one-time ABI break, safer interruptions, EktuPy (Scratch but Python), an AGENTS.md file for CPython, and a call to read PEP 836.</description>
	<pubDate>Wed, 30 Sep 2026 12:00:10 +0000</pubDate>
</item>
<item>
	<title>Python Insider: PEP 827: Type Manipulation (Python Language Summit 2026)</title>
	<guid>https://blog.python.org/2026/09/language-summit-2026-pep-827-type-manipulation/</guid>
	<link>https://blog.python.org/2026/09/language-summit-2026-pep-827-type-manipulation/</link>
	<description>Michael J. Sullivan presents PEP 827 and discusses a key design decision: how to store type annotations?</description>
	<pubDate>Wed, 30 Sep 2026 12:00:09 +0000</pubDate>
</item>
<item>
	<title>Python Insider: Free-Threaded Python Post-Era (Python Language Summit 2026)</title>
	<guid>https://blog.python.org/2026/09/language-summit-2026-free-threading-post-era/</guid>
	<link>https://blog.python.org/2026/09/language-summit-2026-free-threading-post-era/</link>
	<description>Tobias Wrigstad, Fridtjof Stoldt, and Donghee Na propose a safe and performant, high-level concurrency model for free-threaded Python</description>
	<pubDate>Wed, 30 Sep 2026 12:00:08 +0000</pubDate>
</item>
<item>
	<title>Python Insider: Developer-in-Residence Update &amp;amp; Future (Python Language Summit 2026)</title>
	<guid>https://blog.python.org/2026/09/language-summit-2026-developer-in-residence-update-and-future/</guid>
	<link>https://blog.python.org/2026/09/language-summit-2026-developer-in-residence-update-and-future/</link>
	<description>Petr Viktorin gives an update on the Developer-in-Residence role and asks Python core developers for projects to prioritize</description>
	<pubDate>Wed, 30 Sep 2026 12:00:07 +0000</pubDate>
</item>
<item>
	<title>Python Insider: Spicycrab (Python Language Summit 2026)</title>
	<guid>https://blog.python.org/2026/09/language-summit-2026-spicycrab/</guid>
	<link>https://blog.python.org/2026/09/language-summit-2026-spicycrab/</link>
	<description>Kushal Das shows off Spicycrab, a Python-to-Rust transpiler for Python users who need performance without learning Rust or leaving Python</description>
	<pubDate>Wed, 30 Sep 2026 12:00:06 +0000</pubDate>
</item>
<item>
	<title>Python Insider: Rust for CPython (Python Language Summit 2026)</title>
	<guid>https://blog.python.org/2026/09/language-summit-2026-rust-for-cpython/</guid>
	<link>https://blog.python.org/2026/09/language-summit-2026-rust-for-cpython/</link>
	<description>David Hewitt shares a status update, first module, and potential acceptance criteria for the Rust for CPython project</description>
	<pubDate>Wed, 30 Sep 2026 12:00:05 +0000</pubDate>
</item>
<item>
	<title>Python Insider: Memory Snapshots for CPython (Python Language Summit 2026)</title>
	<guid>https://blog.python.org/2026/09/language-summit-2026-memory-snapshots/</guid>
	<link>https://blog.python.org/2026/09/language-summit-2026-memory-snapshots/</link>
	<description>Hood Chatham proposes memory snapshots and an initialization phase for speedier Python startups</description>
	<pubDate>Wed, 30 Sep 2026 12:00:04 +0000</pubDate>
</item>
<item>
	<title>Python Insider: Memory Buffer Protocol (Python Language Summit 2026)</title>
	<guid>https://blog.python.org/2026/09/language-summit-2026-memory-buffer-protocol/</guid>
	<link>https://blog.python.org/2026/09/language-summit-2026-memory-buffer-protocol/</link>
	<description>Nathan Goldbaum proposes safe concurrent access through buffer leases and custom data types for the Python Buffer Protocol.</description>
	<pubDate>Wed, 30 Sep 2026 12:00:03 +0000</pubDate>
</item>
<item>
	<title>Python Insider: Garbage Collection: Generational? Incremental? Both! (Python Language Summit 2026)</title>
	<guid>https://blog.python.org/2026/09/language-summit-2026-garbage-collection-generational-incremental-both/</guid>
	<link>https://blog.python.org/2026/09/language-summit-2026-garbage-collection-generational-incremental-both/</link>
	<description>Mark Shannon proposes a future garbage collection strategy for Python following the revert of the incremental garbage collector in Python 3.14</description>
	<pubDate>Wed, 30 Sep 2026 12:00:02 +0000</pubDate>
</item>
<item>
	<title>Python Insider: macOS and Python (Python Language Summit 2026)</title>
	<guid>https://blog.python.org/2026/09/language-summit-2026-macos-python/</guid>
	<link>https://blog.python.org/2026/09/language-summit-2026-macos-python/</link>
	<description>Ned Deily weighs whether Python should continue shipping macOS installers</description>
	<pubDate>Wed, 30 Sep 2026 12:00:01 +0000</pubDate>
</item>
<item>
	<title>Python Insider: One namespace to namespace them all (Python Language Summit 2026)</title>
	<guid>https://blog.python.org/2026/09/language-summit-2026-namespaces/</guid>
	<link>https://blog.python.org/2026/09/language-summit-2026-namespaces/</link>
	<description>Pablo Galindo Salgado proposes a top-level `std` namespace for the Python standard library to prevent module shadowing and free up module names.</description>
	<pubDate>Wed, 30 Sep 2026 12:00:00 +0000</pubDate>
</item>
<item>
	<title>Python Software Foundation: Python Language Summit 2026 blog posts are now available</title>
	<guid>https://pyfound.blogspot.com/2026/09/python-language-summit-2026.html</guid>
	<link>https://pyfound.blogspot.com/2026/09/python-language-summit-2026.html</link>
	<description>&lt;p&gt;On July 14th, 2026, 47 Python core developers and special guests sat down
at the &lt;a href=&quot;https://blog.python.org/2026/09/language-summit-2026&quot;&gt;Python Language Summit&lt;/a&gt;, this year
held in Kraków, Poland at EuroPython 2026, to discuss many topics about the future
of the Python programming language, including free-threading, Rust, garbage collectors,
type annotations, and namespacing.&lt;/p&gt;&lt;div class=&quot;separator&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9b7Xn98N0VpTwRN2Pu2Jk0q7sfPY_jBway6IkdspPV4vtGpWu4xp8H7Ef2L2K73jc0IC03AYWSP1sJAuKqdOBpKREuvNiYCG0oIM8MZLMeP1p0wLlHUYU1XpnApUMKy26u12RdSIa84wjTThbxk-6hxHA3y1gjy7pfHW6YZd_BfNBgytl_w/s1600/_image.png&quot;&gt;&lt;img alt=&quot;Group photo of the attendees of the 2026 Python Language Summit Photo by EuroPython (CC BY-NC-SA 4.0)&quot; border=&quot;0&quot; height=&quot;266&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9b7Xn98N0VpTwRN2Pu2Jk0q7sfPY_jBway6IkdspPV4vtGpWu4xp8H7Ef2L2K73jc0IC03AYWSP1sJAuKqdOBpKREuvNiYCG0oIM8MZLMeP1p0wLlHUYU1XpnApUMKy26u12RdSIa84wjTThbxk-6hxHA3y1gjy7pfHW6YZd_BfNBgytl_w/w400-h266/_image.png&quot; title=&quot;Photo by EuroPython (CC BY-NC-SA 4.0)&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;p&gt;This marked the first time the Python Language
Summit had been hosted in Europe in 15 years, when the event was
&lt;a href=&quot;https://lwn.net/Articles/449710/&quot;&gt;held in Florence on June 19th, 2011&lt;/a&gt;.
Going forward, the Python Language Summit will alternate between
PyCon US and EuroPython on a yearly basis.&lt;/p&gt;
&lt;p&gt;The summit was organized by Emily Morehouse, Hugo van Kemenade, Lysandros Nikolaou,
and Łukasz Langa, and blog posts were written by Seth Larson.&lt;/p&gt;
&lt;p&gt;Below are summaries of the 10 full-length
talks and 5 lightning talks that were presented at the 2026 Python Language Summit.
I hope you enjoy them, and thank you for your patience.&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;“&lt;a href=&quot;https://blog.python.org/2026/09/language-summit-2026-namespaces&quot;&gt;One namespace to namespace them all&lt;/a&gt;” by Pablo Galindo Salgado&lt;/li&gt;&lt;li&gt;“&lt;a href=&quot;https://blog.python.org/2026/09/language-summit-2026-macos-python&quot;&gt;macOS and Python&lt;/a&gt;” by Ned Deily&lt;/li&gt;&lt;li&gt;“&lt;a href=&quot;https://blog.python.org/2026/09/language-summit-2026-garbage-collection-generational-incremental-both&quot;&gt;Garbage Collection: Generational? Incremental? Both!&lt;/a&gt;” by Mark Shannon&lt;/li&gt;&lt;li&gt;“&lt;a href=&quot;https://blog.python.org/2026/09/language-summit-2026-memory-buffer-protocol&quot;&gt;Memory Buffer Protocol&lt;/a&gt;” by Nathan Goldbaum&lt;/li&gt;&lt;li&gt;“&lt;a href=&quot;https://blog.python.org/2026/09/language-summit-2026-memory-snapshots&quot;&gt;Memory Snapshots for CPython&lt;/a&gt;” by Hood Chatham&lt;/li&gt;&lt;li&gt;“&lt;a href=&quot;https://blog.python.org/2026/09/language-summit-2026-rust-for-cpython&quot;&gt;Rust for CPython&lt;/a&gt;” by David Hewitt&lt;/li&gt;&lt;li&gt;“&lt;a href=&quot;https://blog.python.org/2026/09/language-summit-2026-spicycrab&quot;&gt;Spicycrab&lt;/a&gt;” by Kushal Das&lt;/li&gt;&lt;li&gt;“&lt;a href=&quot;https://blog.python.org/2026/09/language-summit-2026-developer-in-residence-update-and-future&quot;&gt;Developer-in-Residence Update &amp;amp; Future&lt;/a&gt;” by Petr Viktorin&lt;/li&gt;&lt;li&gt;“&lt;a href=&quot;https://blog.python.org/2026/09/language-summit-2026-free-threading-post-era&quot;&gt;Free-Threaded Python Post-Era&lt;/a&gt;” by Donghee Na, Tobias Wrigstad, and Fridtjof Stoldt&lt;/li&gt;&lt;li&gt;“&lt;a href=&quot;https://blog.python.org/2026/09/language-summit-2026-pep-827-type-manipulation&quot;&gt;PEP 827: Type Manipulation&lt;/a&gt;” by Michael J. Sullivan&lt;/li&gt;&lt;li&gt;“&lt;a href=&quot;https://blog.python.org/2026/09/language-summit-2026-lightning-talks&quot;&gt;Lightning Talks&lt;/a&gt;”
&lt;ul&gt;&lt;li&gt;“One-time ABI breakage” by Mark Shannon&lt;/li&gt;&lt;li&gt;“Safer and Generic Interruptions” by Daniele Parmeggiani&lt;/li&gt;&lt;li&gt;“EktuPy, Scratch but Python” by Kushal Das&lt;/li&gt;&lt;li&gt;“&lt;code&gt;AGENTS.md&lt;/code&gt; for CPython” by Gregory P. Smith and Łukasz Langa&lt;/li&gt;&lt;li&gt;“Please read PEP 836 (JIT go brrr)” by Ken Jin&lt;/li&gt;&lt;/ul&gt;
&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;</description>
	<pubDate>Wed, 30 Sep 2026 09:22:49 +0000</pubDate>
</item>
<item>
	<title>Python GUIs: Changing Ticks in PyQtGraph Objects to Strings — How to replace numeric axis ticks with custom labels like month names or dates in PyQtGraph</title>
	<guid>https://www.pythonguis.com/faq/changing-ticks-in-pyqtgraph-objects-to-strings/</guid>
	<link>https://www.pythonguis.com/faq/changing-ticks-in-pyqtgraph-objects-to-strings/</link>
	<description>&lt;blockquote&gt;
&lt;p&gt;How do I replace the numeric tick labels on a PyQtGraph axis with custom strings, like month names or category labels?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;When you're plotting data in PyQtGraph, the axes default to showing numeric tick values. That's fine for a lot of use cases, but sometimes your x-axis represents something more meaningful &amp;mdash; like months of the year, days of the week, or category names. In those situations, you want to replace those numbers with readable string labels.&lt;/p&gt;
&lt;p&gt;In this tutorial, you'll learn how to customize the tick labels on a PyQtGraph axis so they display strings instead of numbers.&lt;/p&gt;
&lt;h2 id=&quot;how-axis-ticks-work-in-pyqtgraph&quot;&gt;How axis ticks work in PyQtGraph&lt;/h2&gt;
&lt;p&gt;PyQtGraph plots data using numeric values on both axes. When your x-axis data represents categories &amp;mdash; like months &amp;mdash; you typically use integers (1, 2, 3, ...) as placeholders and then map those integers to human-readable labels.&lt;/p&gt;
&lt;p&gt;To do this, you need to:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Create a list of &lt;strong&gt;2-tuples&lt;/strong&gt;, where each tuple pairs a numeric tick position with a string label.&lt;/li&gt;
&lt;li&gt;Get the axis object from the plot widget.&lt;/li&gt;
&lt;li&gt;Call &lt;code&gt;.setTicks()&lt;/code&gt; on that axis, passing your labels wrapped in a list.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Let's walk through a complete example.&lt;/p&gt;
&lt;h2 id=&quot;setting-up-the-plot&quot;&gt;Setting up the plot&lt;/h2&gt;
&lt;p&gt;We'll create a simple line plot showing temperature values across 10 months. The x-axis will use integers from 1 to 10 to represent months, and we'll replace those numbers with actual month names.&lt;/p&gt;
&lt;p&gt;First, we generate the tick labels using Python's &lt;code&gt;datetime&lt;/code&gt; module:&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;
&lt;span class=&quot;code-block-language code-block-python&quot;&gt;python&lt;/span&gt;
&lt;pre&gt;&lt;code class=&quot;python&quot;&gt;import datetime

months = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

month_labels = [
    (m, datetime.date(2020, m, 1).strftime(&quot;%B&quot;))
    for m in months
]
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;This gives us a list like:&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;
&lt;span class=&quot;code-block-language code-block-python&quot;&gt;python&lt;/span&gt;
&lt;pre&gt;&lt;code class=&quot;python&quot;&gt;[(1, &quot;January&quot;), (2, &quot;February&quot;), (3, &quot;March&quot;), ...]
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;Each tuple maps a position on the x-axis (the integer) to a label (the month name). The &lt;code&gt;strftime(&quot;%B&quot;)&lt;/code&gt; call converts a date into its full month name.&lt;/p&gt;
&lt;h2 id=&quot;applying-the-tick-labels-to-the-axis&quot;&gt;Applying the tick labels to the axis&lt;/h2&gt;
&lt;p&gt;Once you have your list of label tuples, you apply them to the bottom axis of the plot widget:&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;
&lt;span class=&quot;code-block-language code-block-python&quot;&gt;python&lt;/span&gt;
&lt;pre&gt;&lt;code class=&quot;python&quot;&gt;ax = self.graphWidget.getAxis(&quot;bottom&quot;)
ax.setTicks([month_labels])
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;Notice that &lt;code&gt;month_labels&lt;/code&gt; is passed &lt;strong&gt;inside another list&lt;/strong&gt; &amp;mdash; so you're calling &lt;code&gt;ax.setTicks([month_labels])&lt;/code&gt;, not &lt;code&gt;ax.setTicks(month_labels)&lt;/code&gt;. This is because &lt;code&gt;setTicks()&lt;/code&gt; accepts a list of tick levels (for major ticks, minor ticks, etc.). By passing a single list inside the outer list, you're setting the major tick labels.&lt;/p&gt;
&lt;h2 id=&quot;complete-working-example&quot;&gt;Complete working example&lt;/h2&gt;
&lt;p&gt;Here's the full application. You can copy and run this directly. If you're new to PyQtGraph, you may want to first read our &lt;a href=&quot;https://www.pythonguis.com/tutorials/plotting-pyqtgraph/&quot;&gt;introduction to plotting with PyQtGraph&lt;/a&gt; to understand the basics.&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;
&lt;span class=&quot;code-block-language code-block-python&quot;&gt;python&lt;/span&gt;
&lt;pre&gt;&lt;code class=&quot;python&quot;&gt;from PyQt6 import QtWidgets
from pyqtgraph import PlotWidget
import pyqtgraph as pg
import sys
import datetime


class MainWindow(QtWidgets.QMainWindow):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

        self.graphWidget = pg.PlotWidget()
        self.setCentralWidget(self.graphWidget)

        months = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
        temperature = [30, 32, 34, 32, 33, 31, 29, 32, 35, 45]

        self.graphWidget.setBackground(&quot;w&quot;)

        pen = pg.mkPen(color=(255, 0, 0))

        # Create a list of (tick_value, tick_label) tuples.
        month_labels = [
            (m, datetime.date(2020, m, 1).strftime(&quot;%B&quot;))
            for m in months
        ]

        self.graphWidget.plot(months, temperature, pen=pen)

        # Get the bottom axis and apply our custom tick labels.
        ax = self.graphWidget.getAxis(&quot;bottom&quot;)
        ax.setTicks([month_labels])


app = QtWidgets.QApplication(sys.argv)
main_window = MainWindow()
main_window.show()
sys.exit(app.exec())

&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;Running this produces a plot where the x-axis displays month names instead of numbers:&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Plot with month name tick labels on the x-axis&quot; src=&quot;https://www.pythonguis.com/static/faq/changing-ticks-in-pyqtgraph-objects-to-strings/mbF7d6Ak4pVGmD44h9ycqPmDiV5.png&quot; width=&quot;641&quot; height=&quot;518&quot; /&gt;&lt;/p&gt;
&lt;h2 id=&quot;using-any-string-labels&quot;&gt;Using any string labels&lt;/h2&gt;
&lt;p&gt;This approach works with any strings, not just month names. If you wanted to label the x-axis with arbitrary category names, you'd follow the same pattern:&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;
&lt;span class=&quot;code-block-language code-block-python&quot;&gt;python&lt;/span&gt;
&lt;pre&gt;&lt;code class=&quot;python&quot;&gt;labels = [
    (0, &quot;Apples&quot;),
    (1, &quot;Oranges&quot;),
    (2, &quot;Bananas&quot;),
    (3, &quot;Grapes&quot;),
]

ax = self.graphWidget.getAxis(&quot;bottom&quot;)
ax.setTicks([labels])
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;As long as you match each label string to the correct numeric position used in your data, the ticks will line up with your plot points.&lt;/p&gt;
&lt;p&gt;If you want to plot time series data specifically, take a look at &lt;a href=&quot;https://www.pythonguis.com/faq/plotting-time-series-data-with-pyqtgraph/&quot;&gt;plotting time series data with PyQtGraph&lt;/a&gt; for a more detailed approach. You can also &lt;a href=&quot;https://www.pythonguis.com/tutorials/embed-pyqtgraph-custom-widgets-qt-app/&quot;&gt;embed PyQtGraph into a larger custom widget&lt;/a&gt; for more complex applications, or combine it with &lt;a href=&quot;https://www.pythonguis.com/tutorials/plotting-matplotlib/&quot;&gt;Matplotlib plotting&lt;/a&gt; if you need additional chart types.&lt;/p&gt;
            &lt;p&gt;For an in-depth guide to building Python GUIs with PyQt6 see my book, &lt;a href=&quot;https://www.pythonguis.com/pyqt6-book/&quot;&gt;Create GUI Applications with Python &amp;amp; Qt6.&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Wed, 30 Sep 2026 06:00:00 +0000</pubDate>
</item>
<item>
	<title>Seth Michael Larson: Blogging for the Python Language Summit</title>
	<guid>https://sethmlarson.dev/python-language-summit-blogging?utm_campaign=rss</guid>
	<link>https://sethmlarson.dev/python-language-summit-blogging?utm_campaign=rss</link>
	<description>&lt;p&gt;&lt;em&gt;Hey, did you miss me?&lt;/em&gt; I've only published two blog posts
in the past two months because I was busy &lt;a href=&quot;https://blog.python.org/2026/09/language-summit-2026&quot;&gt;writing 10+ blog
posts&lt;/a&gt; detailing the &lt;a href=&quot;https://blog.python.org/2026/09/language-summit-2026&quot;&gt;Python Language Summit in 2026&lt;/a&gt;.
If you are interested in the Python programming
languages' technical direction (&lt;em&gt;or you just really miss my writing&lt;/em&gt;)
&lt;a href=&quot;https://blog.python.org/2026/09/language-summit-2026&quot;&gt;go over to the Python Insider and read those write-ups&lt;/a&gt;.&lt;/p&gt;

&lt;!-- more --&gt;

&lt;p&gt;I've been the blogger for the Python Language Summit for the past
three years (&lt;a href=&quot;https://pyfound.blogspot.com/2024/06/python-language-summit-2024.html&quot;&gt;2024&lt;/a&gt;, &lt;a href=&quot;https://pyfound.blogspot.com/2025/06/python-language-summit-2025.html&quot;&gt;2025&lt;/a&gt;, &lt;a href=&quot;https://blog.python.org/2026/09/language-summit-2026&quot;&gt;2026&lt;/a&gt;).
Before me, &lt;a href=&quot;https://github.com/alexwaygood&quot;&gt;Alex Waygood&lt;/a&gt; was the blogger (&lt;a href=&quot;https://pyfound.blogspot.com/2022/05/the-2022-python-language-summit_01678898482.html&quot;&gt;2022&lt;/a&gt;, &lt;a href=&quot;https://pyfound.blogspot.com/2023/05/the-python-language-summit-2023_29.html&quot;&gt;2023&lt;/a&gt;),
and he gave me guidance on what to expect from the Python Language Summit.
Below is a mix of Alex's and my own guidance on what to expect as
the Python Language Summit blogger.&lt;/p&gt;

&lt;!-- more --&gt;

&lt;h2&gt;What do you need to know as blogger?&lt;/h2&gt;

&lt;p&gt;It is useful to have some knowledge about the Python development
process, ongoing concerns for the project, governance, and
some history about &quot;how we got to this moment&quot; to be
able to write about the Python Language Summit. You can
prepare in-depth by looking at the topics that will be
spoken about and reading the past few years of Python
Language Summit blog posts, are there returning faces or
themes? What have those people been up to in the meantime?&lt;/p&gt;

&lt;p&gt;What topics do you know less about: research those ahead
of time so once the jargon starts flying (because it will)
that you're able to keep up. For example, I don't know
much about Python's type annotations, but without fail
there is a talk about this topic each year. I usually
do the most research about this topic in particular
to prepare.&lt;/p&gt;

&lt;h2&gt;Travel&lt;/h2&gt;

&lt;p&gt;You'll need to actually attend physically to cover the event.
Figure out which conference the summit is colocated with (either
PyCon US or EuroPython). If possible, I recommend if you are traveling
into a drastically different timezone to arrive a few days early
to give your body time to adjust. Taking technical notes during active
discussions while you are &lt;em&gt;extremely jet-lagged is not fun&lt;/em&gt; (ask me how I know).&lt;/p&gt;

&lt;p&gt;The event itself is long (9:00AM to 5:30PM with breaks for coffee and lunch)
and exclusively intense technical discussion.
Come well-rested and drink plenty of water and caffeinated beverages.&lt;/p&gt;

&lt;h2&gt;People&lt;/h2&gt;

&lt;p&gt;The Python Language Summit is an in-person event and
primarily compromised of attendees that are Python core team members
or maintainers of alternate Python implementations or distributions.
The past three years have seen between 45-50 attendees in the event.&lt;/p&gt;

&lt;p&gt;Prior to 2024, I had never attended the Python
Language Summit and only knew a few dozen of the hundreds of members
from Python core team.
&lt;strong&gt;Being able to put faces and voices to names is a challenge.&lt;/strong&gt; Request the
full list of attendees from the summit chairs before you attend, try to
learn everyone on the list that you don't recognize beforehand.&lt;/p&gt;

&lt;p&gt;On the day of the event, watch as people filter into the event before
(and sometimes, during). Make a point to meet everyone and get names,
talk for a bit, and make an association between their face, voice, and
name. I like to draw out a &quot;layout of the room&quot;, too, with reminders of
people that I've just met and where they are sitting.&lt;/p&gt;

&lt;p&gt;Usually the summit chairs ask for a round of introductions from everyone
before starting the event, you can request that they do this to be sure.&lt;/p&gt;

&lt;p&gt;It also helps to sit next to a summit chair, I've had to ask Hugo van Kemenade
&quot;who is speaking right now&quot; a few times when it's difficult to know who
has the microphone actively.&lt;/p&gt;

&lt;h2&gt;Recording and note-taking&lt;/h2&gt;

&lt;p&gt;The event is not video-recorded or audio-recorded (by default),
so you won't be able to rely on anything that the event itself provides.
Instead, you'll have to make a record of the event yourself and use that to
recollect everything that happened and was said throughout the day.&lt;/p&gt;

&lt;p&gt;I personally use &quot;Voice Memos&quot; from my phone to record the audio of the room
and delete the recordings after they are no longer needed. The audio quality
is so bad usually that you can't use automatic transcription software,
instead you'll need to transcribe what everyone says by hand from the
recording.&lt;/p&gt;

&lt;p&gt;I also take extensive notes throughout the event. The important aspects
to capture in your written notes is everything that wouldn't come across
in a voice recording, like how does the energy of the room and conversations
feel. Are people making faces, discussing amongst themselves, laughing and
smiling? Note down all those moments, they give the write-ups life beyond
a textual representation of what was said.&lt;/p&gt;

&lt;p&gt;You'll also want to talk
to people about the actual talks, ask them what a given topic has
them thinking about, you can do this after the talks are over, too! You'll sometimes
get a key insight or unearth a storyline or angle that you never would
have known about from the talk itself: and then can clue-in the readers!&lt;/p&gt;

&lt;p&gt;The attendees will tend to take some light notes in HackMD, but
you should not rely on these notes for your purposes, they are not enough
to be able to recreate the story and all the Q&amp;amp;A.&lt;/p&gt;

&lt;p&gt;You should rely on the summit chairs and other attendees to take
photos. There will be an album shared with everyone after
the photos have be collected which you can pull from.&lt;/p&gt;

&lt;h2&gt;Slides&lt;/h2&gt;

&lt;p&gt;Ask the summit chairs to remind speakers to get slides. Follow-up with
speakers a few days after the conference is over if you don't
get them sent to you (and don't stop asking until you get them!)
These slides are really useful for providing images in your write-ups.
Especially code examples, which can be difficult to write down in
real-time.&lt;/p&gt;

&lt;h2&gt;Writing&lt;/h2&gt;

&lt;p&gt;Alright, the language summit is over and now comes the hard part.
&lt;em&gt;Actually writing the blog posts!&lt;/em&gt; There are 10 talks and ~5 lightning
talks. My rule of thumb is ~1000 words for each of the full-length
talks and maybe ~300-500 words for each of the lightning talks. So you're
looking at ~12,000 words total across the whole event.&lt;/p&gt;

&lt;p&gt;I highly recommend getting as big a jump on the writing as soon
as you can. Whether that's in the evenings of
the conference itself or on the train/flight home. Use the
energy you get from attending a community conference to carry
you through! This was where I went wrong this year: I didn't
prioritize finishing the writing as soon as I returned home,
and that meant the blogs were two months after the event 
instead of only one month. Learn from me: finish your
writing right away!&lt;/p&gt;

&lt;h2&gt;Publishing&lt;/h2&gt;

&lt;p&gt;After you're done with the drafts and are happy with the results,
hand them over to the Language Summit chairs for proofreading.
I recommend being specific about what kind of review you want
at this stage: focus on fact-checking and finding typos, grammar,
etc. After this review is complete, stage the blog posts on
the Python Insider blog along with images. In 2026, I also published a landing
page on the PSF blog.&lt;/p&gt;
&lt;br /&gt;&lt;hr /&gt;&lt;p&gt;Thanks for reading ♥ I would love to hear your thoughts! Contact me via &lt;a href=&quot;https://mastodon.social/@sethmlarson&quot;&gt;Mastodon&lt;/a&gt;, &lt;a href=&quot;https://bsky.app/profile/sethmlarson.dev&quot;&gt;Bluesky&lt;/a&gt;, or &lt;a href=&quot;mailto:sethmichaellarson@gmail.com&quot;&gt;email&lt;/a&gt;. Browse the &lt;a href=&quot;https://sethmlarson.dev/&quot;&gt;blog archive&lt;/a&gt;. Check out my &lt;a href=&quot;https://sethmlarson.dev/blogroll&quot;&gt;blogroll&lt;/a&gt;.&lt;/p&gt;&lt;hr /&gt;&lt;br /&gt;</description>
	<pubDate>Wed, 30 Sep 2026 00:00:00 +0000</pubDate>
</item>
<item>
	<title>PyCoder’s Weekly: Issue #754: Jev, PyO3, Temp Files, and More (2026-09-29)</title>
	<guid>https://pycoders.com/issues/754</guid>
	<link>https://pycoders.com/issues/754</link>
	<description>&lt;p&gt; &lt;span&gt;#754 – SEPTEMBER 29, 2026&lt;/span&gt;&lt;br /&gt; &lt;span&gt;&lt;a href=&quot;https://pycoders.com/issues/754/feed&quot;&gt;View in Browser »&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;p&gt;&lt;a href=&quot;https://pycoders.com&quot;&gt;&lt;img alt=&quot;The PyCoder&amp;rsquo;s Weekly Logo&quot; src=&quot;https://cdn.pycoders.com/37bdf31dc645f968ffb90196e5d38ff5&quot; /&gt;&lt;/a&gt;&lt;/p&gt; &lt;hr /&gt; &lt;div&gt; &lt;h3&gt;&lt;a href=&quot;https://pycoders.com/link/17121/feed&quot; target=&quot;_blank&quot;&gt;How to Get Started With Jev in Python&lt;/a&gt;&lt;/h3&gt; &lt;p&gt; Connect a Python script to the Jev model with the TypeSafe SDK and OpenRouter, then replace brittle input checks with Noul, Score, and Choice answers.&lt;br /&gt; &lt;span&gt;&lt;a href=&quot;https://pycoders.com/link/17121/feed&quot; target=&quot;_blank&quot;&gt;REAL PYTHON&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3&gt;&lt;a href=&quot;https://pycoders.com/link/17130/feed&quot; target=&quot;_blank&quot;&gt;Quiz: How to Get Started With Jev in Python&lt;/a&gt;&lt;/h3&gt; &lt;p&gt; &lt;span&gt;&lt;a href=&quot;https://pycoders.com/link/17130/feed&quot; target=&quot;_blank&quot;&gt;REAL PYTHON&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3&gt;&lt;a href=&quot;https://pycoders.com/link/17140/feed&quot; target=&quot;_blank&quot;&gt;MCP Auth That Passes the Security Review&lt;/a&gt;&lt;/h3&gt; &lt;a href=&quot;https://pycoders.com/link/17140/feed&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;https://cdn.pycoders.com/012e0a1cbc39d888c748f46d3b3a4e1a&quot; alt=&quot;alt&quot; /&gt;&lt;/a&gt; &lt;p&gt; When your customers connect AI agents to your product, their security team will have questions. PropelAuth has the answers built in: role-gated scopes, enterprise SSO through Okta and Entra ID, phishing-resistant consent screens, and an audit log of every agent connection. &lt;a href=&quot;https://pycoders.com/link/17140/feed&quot; target=&quot;_blank&quot;&gt;Learn More →&lt;/a&gt;&lt;br /&gt; &lt;span&gt;&lt;a href=&quot;https://pycoders.com/link/17140/feed&quot; target=&quot;_blank&quot;&gt;PROPELAUTH&lt;/a&gt;&lt;/span&gt; &lt;span&gt;sponsor&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3&gt;&lt;a href=&quot;https://pycoders.com/link/17131/feed&quot; target=&quot;_blank&quot;&gt;How Libraries Run Rust Inside Python (With PyO3)&lt;/a&gt;&lt;/h3&gt; &lt;p&gt; How do libraries run Rust inside Python? It all comes down to 4 steps: 1. Write Rust code, 2. Annotate it with PyO3 macros, 3. Let maturin compile and install it, 4. Import the result. See this in action for a hand-rolled JSON parser in this article.&lt;br /&gt; &lt;span&gt;&lt;a href=&quot;https://pycoders.com/link/17131/feed&quot; target=&quot;_blank&quot;&gt;BELDERBOS.DEV&lt;/a&gt; • Shared by &lt;a href=&quot;https://pycoders.com/link/17136/feed&quot; target=&quot;_blank&quot;&gt;Bob Belderbos&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3&gt;&lt;a href=&quot;https://pycoders.com/link/17135/feed&quot; target=&quot;_blank&quot;&gt;Creating Temporary Files in Python&lt;/a&gt;&lt;/h3&gt; &lt;p&gt; How to create temporary files and directories in Python using the tempfile module&amp;rsquo;s &lt;code&gt;NamedTemporaryFile&lt;/code&gt; and &lt;code&gt;TemporaryDirectory&lt;/code&gt;.&lt;br /&gt; &lt;span&gt;&lt;a href=&quot;https://pycoders.com/link/17135/feed&quot; target=&quot;_blank&quot;&gt;TREY HUNNER&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3&gt;&lt;a href=&quot;https://pycoders.com/link/17137/feed&quot; target=&quot;_blank&quot;&gt;PEP 849: More Expressive Type Expressions (Draft)&lt;/a&gt;&lt;/h3&gt; &lt;p&gt; &lt;span&gt;&lt;a href=&quot;https://pycoders.com/link/17137/feed&quot; target=&quot;_blank&quot;&gt;PYTHON.ORG&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3&gt;&lt;a href=&quot;https://pycoders.com/link/17118/feed&quot; target=&quot;_blank&quot;&gt;PEP 848: Generational Incremental Garbage Collection (Draft)&lt;/a&gt;&lt;/h3&gt; &lt;p&gt; &lt;span&gt;&lt;a href=&quot;https://pycoders.com/link/17118/feed&quot; target=&quot;_blank&quot;&gt;PYTHON.ORG&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3&gt;&lt;a href=&quot;https://pycoders.com/link/17120/feed&quot; target=&quot;_blank&quot;&gt;PyPy v8.0.0 Released&lt;/a&gt;&lt;/h3&gt; &lt;p&gt; &lt;span&gt;&lt;a href=&quot;https://pycoders.com/link/17120/feed&quot; target=&quot;_blank&quot;&gt;PYPY.ORG&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;h2&gt;Articles &amp;amp; Tutorials&lt;/h2&gt; &lt;div&gt; &lt;h3&gt;&lt;a href=&quot;https://pycoders.com/link/17128/feed&quot; target=&quot;_blank&quot;&gt;Navigating AI in Open Source: Insights From Wagtail&lt;/a&gt;&lt;/h3&gt; &lt;p&gt; How should you manage AI contributions to an open-source project? How do you measure the impact of using AI tools for development, and what generative features do end users want from a content management system? This week on the show, we speak with Thibaud Colas and Meagen Voss from Wagtail about the complex considerations software organizations are currently facing.&lt;br /&gt; &lt;span&gt;&lt;a href=&quot;https://pycoders.com/link/17128/feed&quot; target=&quot;_blank&quot;&gt;REAL PYTHON&lt;/a&gt;&lt;/span&gt; &lt;span&gt;podcast&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3&gt;&lt;a href=&quot;https://pycoders.com/link/17114/feed&quot; target=&quot;_blank&quot;&gt;How BMLL Processes 1.5 TB of Data in Under 4 Minutes&lt;/a&gt;&lt;/h3&gt; &lt;p&gt; BMLL Technologies processes petabytes of nanosecond-precision market data for the world&amp;rsquo;s most sophisticated trading teams. In this case study, they share what a 48x performance improvement from Polars over pandas looks like in practice, and what it means for execution analysis at scale.&lt;br /&gt; &lt;span&gt;&lt;a href=&quot;https://pycoders.com/link/17114/feed&quot; target=&quot;_blank&quot;&gt;POLA.RS&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3&gt;&lt;a href=&quot;https://pycoders.com/link/17142/feed&quot; target=&quot;_blank&quot;&gt;Agent Memory for Wherever Your AI Is Running&lt;/a&gt;&lt;/h3&gt; &lt;a href=&quot;https://pycoders.com/link/17142/feed&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;https://cdn.pycoders.com/7a5e5f9b598e29d5d178e3f62f45bf04&quot; alt=&quot;alt&quot; /&gt;&lt;/a&gt; &lt;p&gt; Ship VectorAI DB to your edge device, factory floor, air-gapped facility, or enterprise data center and get a portable multimodal vector database that moves with your stack. Start on a laptop, validate retrieval quality against your workload, and promote the same pattern to production. &lt;a href=&quot;https://pycoders.com/link/17142/feed&quot; target=&quot;_blank&quot;&gt;Get Started Free →&lt;/a&gt;&lt;br /&gt; &lt;span&gt;&lt;a href=&quot;https://pycoders.com/link/17142/feed&quot; target=&quot;_blank&quot;&gt;ACTIAN&lt;/a&gt;&lt;/span&gt; &lt;span&gt;sponsor&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3&gt;&lt;a href=&quot;https://pycoders.com/link/17133/feed&quot; target=&quot;_blank&quot;&gt;Python Statistics Fundamentals: How to Describe Your Data&lt;/a&gt;&lt;/h3&gt; &lt;p&gt; In this step-by-step tutorial, you&amp;rsquo;ll learn the fundamentals of descriptive statistics and how to calculate them in Python. You&amp;rsquo;ll find out how to describe, summarize, and represent your data visually using NumPy, SciPy, pandas, Matplotlib, and the built-in Python statistics library.&lt;br /&gt; &lt;span&gt;&lt;a href=&quot;https://pycoders.com/link/17133/feed&quot; target=&quot;_blank&quot;&gt;REAL PYTHON&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3&gt;&lt;a href=&quot;https://pycoders.com/link/17111/feed&quot; target=&quot;_blank&quot;&gt;EVE Online Departs for Python 3&lt;/a&gt;&lt;/h3&gt; &lt;p&gt; The game EVE has run on Python 2 since it launched in 2003, all 2.4 million lines of it, on a custom Stackless interpreter that stopped at 3.8. That is in the process of changing. Talk Python interviews three EVE developers about this process.&lt;br /&gt; &lt;span&gt;&lt;a href=&quot;https://pycoders.com/link/17111/feed&quot; target=&quot;_blank&quot;&gt;TALK PYTHON&lt;/a&gt;&lt;/span&gt; &lt;span&gt;podcast&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3&gt;&lt;a href=&quot;https://pycoders.com/link/17127/feed&quot; target=&quot;_blank&quot;&gt;I Is for Immutable: Python a to Z&lt;/a&gt;&lt;/h3&gt; &lt;p&gt; The first thing most people learn in programming is that you can save data in variables and change their values. For Juha-Matti, learning about immutable data structures and functional programming was a painful but important shift in schema.&lt;br /&gt; &lt;span&gt;&lt;a href=&quot;https://pycoders.com/link/17127/feed&quot; target=&quot;_blank&quot;&gt;JUHA-MATTI SANTALA&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3&gt;&lt;a href=&quot;https://pycoders.com/link/17141/feed&quot; target=&quot;_blank&quot;&gt;Your Personal Python Mentor&lt;/a&gt;&lt;/h3&gt; &lt;p&gt; Real Python Mentor AI works alongside you. It sees the tutorial, lesson, or exercise you’re on, knows what you’ve been learning, and helps you understand, practice, and keep moving forward.&lt;br /&gt; &lt;span&gt;&lt;a href=&quot;https://pycoders.com/link/17141/feed&quot; target=&quot;_blank&quot;&gt;REAL PYTHON&lt;/a&gt;&lt;/span&gt; &lt;span&gt;sponsor&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3&gt;&lt;a href=&quot;https://pycoders.com/link/17138/feed&quot; target=&quot;_blank&quot;&gt;7 Python Mistakes Beginners Make&lt;/a&gt;&lt;/h3&gt; &lt;p&gt; Some mistakes are because Python did exactly what you asked it to do. This article covers seven of them. For each one you get the hidden cause, plus the first thing worth checking.&lt;br /&gt; &lt;span&gt;&lt;a href=&quot;https://pycoders.com/link/17138/feed&quot; target=&quot;_blank&quot;&gt;NAHLA DAVIES&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3&gt;&lt;a href=&quot;https://pycoders.com/link/17113/feed&quot; target=&quot;_blank&quot;&gt;Speeding Up a Python Service With CinderX&lt;/a&gt;&lt;/h3&gt; &lt;p&gt; CinderX is Meta&amp;rsquo;s CPython extension: a method JIT, Static Python, and a parallel garbage collector. The article measures all three against stock CPython 3.14 and its tier 2 JIT&lt;br /&gt; &lt;span&gt;&lt;a href=&quot;https://pycoders.com/link/17113/feed&quot; target=&quot;_blank&quot;&gt;TIMOFEI IVANKOV&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3&gt;&lt;a href=&quot;https://pycoders.com/link/17122/feed&quot; target=&quot;_blank&quot;&gt;Cursor vs Copilot: Which AI Editor Is Better for Python?&lt;/a&gt;&lt;/h3&gt; &lt;p&gt; Compare Cursor vs GitHub Copilot by building a Python project, testing agent workflows, debugging code, and evaluating AI-assisted development.&lt;br /&gt; &lt;span&gt;&lt;a href=&quot;https://pycoders.com/link/17122/feed&quot; target=&quot;_blank&quot;&gt;REAL PYTHON&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3&gt;&lt;a href=&quot;https://pycoders.com/link/17115/feed&quot; target=&quot;_blank&quot;&gt;Quiz: Cursor vs Copilot: Which AI Editor Is Better for Python?&lt;/a&gt;&lt;/h3&gt; &lt;p&gt; &lt;span&gt;&lt;a href=&quot;https://pycoders.com/link/17115/feed&quot; target=&quot;_blank&quot;&gt;REAL PYTHON&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3&gt;&lt;a href=&quot;https://pycoders.com/link/17119/feed&quot; target=&quot;_blank&quot;&gt;Using the Claude API in Python&lt;/a&gt;&lt;/h3&gt; &lt;p&gt; Learn how to use the Claude API in Python to send prompts, control responses with system instructions, and get structured output.&lt;br /&gt; &lt;span&gt;&lt;a href=&quot;https://pycoders.com/link/17119/feed&quot; target=&quot;_blank&quot;&gt;REAL PYTHON&lt;/a&gt;&lt;/span&gt; &lt;span&gt;course&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3&gt;&lt;a href=&quot;https://pycoders.com/link/17134/feed&quot; target=&quot;_blank&quot;&gt;Quiz: Using the Claude API in Python&lt;/a&gt;&lt;/h3&gt; &lt;p&gt; &lt;span&gt;&lt;a href=&quot;https://pycoders.com/link/17134/feed&quot; target=&quot;_blank&quot;&gt;REAL PYTHON&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;h2&gt;Projects &amp;amp; Code&lt;/h2&gt; &lt;div&gt; &lt;h3&gt;&lt;a href=&quot;https://pycoders.com/link/17129/feed&quot; target=&quot;_blank&quot;&gt;pyfastlogging: A Lightning Fast Logger, Written in Rust&lt;/a&gt;&lt;/h3&gt; &lt;p&gt; &lt;span&gt;&lt;a href=&quot;https://pycoders.com/link/17129/feed&quot; target=&quot;_blank&quot;&gt;PYPI.ORG&lt;/a&gt; • Shared by Martin Bammer&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3&gt;&lt;a href=&quot;https://pycoders.com/link/17108/feed&quot; target=&quot;_blank&quot;&gt;Renart: A Local Workspace for SQL and Python Data Pipelines&lt;/a&gt;&lt;/h3&gt; &lt;p&gt; &lt;span&gt;&lt;a href=&quot;https://pycoders.com/link/17108/feed&quot; target=&quot;_blank&quot;&gt;GITHUB.COM/RENART-DATA&lt;/a&gt; • Shared by Lukas Senicourt&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3&gt;&lt;a href=&quot;https://pycoders.com/link/17132/feed&quot; target=&quot;_blank&quot;&gt;Pyxel Code Maker: Retro Python Games in Your Browser&lt;/a&gt;&lt;/h3&gt; &lt;p&gt; &lt;span&gt;&lt;a href=&quot;https://pycoders.com/link/17132/feed&quot; target=&quot;_blank&quot;&gt;KITAO.GITHUB.IO&lt;/a&gt; • Shared by &lt;a href=&quot;https://pycoders.com/link/17123/feed&quot; target=&quot;_blank&quot;&gt;Takashi Kitao&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3&gt;&lt;a href=&quot;https://pycoders.com/link/17125/feed&quot; target=&quot;_blank&quot;&gt;flowsint: Extensible Graph-Based Investigation Tool&lt;/a&gt;&lt;/h3&gt; &lt;p&gt; &lt;span&gt;&lt;a href=&quot;https://pycoders.com/link/17125/feed&quot; target=&quot;_blank&quot;&gt;GITHUB.COM/RECONURGE&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3&gt;&lt;a href=&quot;https://pycoders.com/link/17112/feed&quot; target=&quot;_blank&quot;&gt;bashautom: Persistent, Stateful Bash Sessions for Python&lt;/a&gt;&lt;/h3&gt; &lt;p&gt; &lt;span&gt;&lt;a href=&quot;https://pycoders.com/link/17112/feed&quot; target=&quot;_blank&quot;&gt;GITHUB.COM/HUSKAGO&lt;/a&gt; • Shared by Tiago&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;h2&gt;Events&lt;/h2&gt; &lt;div&gt; &lt;h3&gt;&lt;a href=&quot;https://pycoders.com/link/17110/feed&quot; target=&quot;_blank&quot;&gt;Weekly Real Python Office Hours Q&amp;amp;A (Virtual)&lt;/a&gt;&lt;/h3&gt; &lt;p&gt; Septempber 30, 2026&lt;br /&gt; &lt;span&gt;&lt;a href=&quot;https://pycoders.com/link/17110/feed&quot; target=&quot;_blank&quot;&gt;REALPYTHON.COM&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3&gt;&lt;a href=&quot;https://pycoders.com/link/17116/feed&quot; target=&quot;_blank&quot;&gt;Real Python Live: Release Radar: Python 3.15&lt;/a&gt;&lt;/h3&gt; &lt;p&gt; Septempber 30, 2026&lt;br /&gt; &lt;span&gt;&lt;a href=&quot;https://pycoders.com/link/17116/feed&quot; target=&quot;_blank&quot;&gt;REALPYTHON.COM&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3&gt;&lt;a href=&quot;https://pycoders.com/link/17109/feed&quot; target=&quot;_blank&quot;&gt;Canberra Python Meetup&lt;/a&gt;&lt;/h3&gt; &lt;p&gt; October 1, 2026&lt;br /&gt; &lt;span&gt;&lt;a href=&quot;https://pycoders.com/link/17109/feed&quot; target=&quot;_blank&quot;&gt;MEETUP.COM&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3&gt;&lt;a href=&quot;https://pycoders.com/link/17117/feed&quot; target=&quot;_blank&quot;&gt;Sydney Python User Group (SyPy)&lt;/a&gt;&lt;/h3&gt; &lt;p&gt; October 1, 2026&lt;br /&gt; &lt;span&gt;&lt;a href=&quot;https://pycoders.com/link/17117/feed&quot; target=&quot;_blank&quot;&gt;SYPY.ORG&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3&gt;&lt;a href=&quot;https://pycoders.com/link/17124/feed&quot; target=&quot;_blank&quot;&gt;PyBay 2026&lt;/a&gt;&lt;/h3&gt; &lt;p&gt; October 3 to October 4, 2026&lt;br /&gt; &lt;span&gt;&lt;a href=&quot;https://pycoders.com/link/17124/feed&quot; target=&quot;_blank&quot;&gt;PYBAY.ORG&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3&gt;&lt;a href=&quot;https://pycoders.com/link/17126/feed&quot; target=&quot;_blank&quot;&gt;PyCon Africa 2026&lt;/a&gt;&lt;/h3&gt; &lt;p&gt; October 7 to October 12, 2026&lt;br /&gt; &lt;span&gt;&lt;a href=&quot;https://pycoders.com/link/17126/feed&quot; target=&quot;_blank&quot;&gt;PYCON.ORG&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3&gt;&lt;a href=&quot;https://pycoders.com/link/17107/feed&quot; target=&quot;_blank&quot;&gt;PyEducation: IPAF&lt;/a&gt;&lt;/h3&gt; &lt;p&gt; October 8 to October 9, 2026&lt;br /&gt; &lt;span&gt;&lt;a href=&quot;https://pycoders.com/link/17107/feed&quot; target=&quot;_blank&quot;&gt;PYCON.ORG&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;hr /&gt; &lt;p&gt;Happy Pythoning!&lt;br /&gt;This was PyCoder&amp;rsquo;s Weekly Issue #754.&lt;br /&gt;&lt;a href=&quot;https://pycoders.com/issues/754/feed&quot;&gt;View in Browser »&lt;/a&gt;&lt;/p&gt; &lt;img src=&quot;https://pycoders.com/issues/754/open/feed&quot; width=&quot;1&quot; height=&quot;1&quot; alt=&quot;alt&quot; /&gt; 
        &lt;hr /&gt;
        &lt;p&gt;&lt;em&gt;[ Subscribe to 🐍 PyCoder&amp;rsquo;s Weekly 💌 – Get the best Python news, articles, and tutorials delivered to your inbox once a week &lt;a href=&quot;https://pycoders.com/?utm_source=pycoders&amp;utm_medium=feed&amp;utm_campaign=footer&quot;&gt;&amp;gt;&amp;gt; Click here to learn more&lt;/a&gt; ]&lt;/em&gt;&lt;/p&gt;</description>
	<pubDate>Tue, 29 Sep 2026 19:30:00 +0000</pubDate>
</item>
<item>
	<title>Python Bytes: #498 A Tiny Episode</title>
	<guid>https://pythonbytes.fm/episodes/show/498/a-tiny-episode</guid>
	<link>https://pythonbytes.fm/episodes/show/498/a-tiny-episode</link>
	<description>&amp;lt;strong&amp;gt;Topics covered in this episode:&amp;lt;/strong&amp;gt;&amp;lt;br&amp;gt;

&amp;lt;ul&amp;gt;
	&amp;lt;li&amp;gt;&amp;lt;strong&amp;gt;&amp;lt;a href=&quot;https://safedep.io/memtensor-sckit-worm-npm-pypi/?featured_on=pythonbytes&quot;&amp;gt;MemTensor / MemoryOS PyPI package hijacked via a malicious build backend&amp;lt;/a&amp;gt;&amp;lt;/strong&amp;gt;&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;&amp;lt;strong&amp;gt;&amp;lt;a href=&quot;https://tinymongo.org?featured_on=pythonbytes&quot;&amp;gt;TinyMongo&amp;lt;/a&amp;gt;&amp;lt;/strong&amp;gt;&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;&amp;lt;strong&amp;gt;Jev: what to know&amp;lt;/strong&amp;gt;&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;&amp;lt;strong&amp;gt;&amp;lt;a href=&quot;https://deadlovelll.github.io/2026-09-05-reading-dict-deoptimizes-attribute-access/?featured_on=pythonbytes&quot;&amp;gt;One innocent dict read makes attribute access permanently slower&amp;lt;/a&amp;gt;&amp;lt;/strong&amp;gt;&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;&amp;lt;strong&amp;gt;Extras&amp;lt;/strong&amp;gt;&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;&amp;lt;strong&amp;gt;Joke&amp;lt;/strong&amp;gt;&amp;lt;/li&amp;gt;

&amp;lt;/ul&amp;gt;&amp;lt;a href='https://www.youtube.com/watch?v=OQp8W3krkrk' style='font-weight: bold;' data-umami-event=&quot;Livestream-Past&quot; data-umami-event-episode=&quot;498&quot;&amp;gt;Watch on YouTube&amp;lt;/a&amp;gt;&amp;lt;br&amp;gt;

&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;About the show&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;

&amp;lt;p&amp;gt;Sponsored by us! Support our work through:&amp;lt;/p&amp;gt;

&amp;lt;ul&amp;gt;
&amp;lt;li&amp;gt;Our &amp;lt;a href=&quot;https://training.talkpython.fm/?featured_on=pythonbytes&quot;&amp;gt;&amp;lt;strong&amp;gt;courses at Talk Python&amp;lt;/strong&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;Consulting from &amp;lt;a href=&quot;https://sixfeetup.com/?featured_on=pythonbytes&quot;&amp;gt;&amp;lt;strong&amp;gt;Six Feet Up&amp;lt;/strong&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
&amp;lt;/ul&amp;gt;

&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Connect with the hosts&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;

&amp;lt;ul&amp;gt;
&amp;lt;li&amp;gt;Michael: &amp;lt;a href=&quot;https://fosstodon.org/@mkennedy&quot;&amp;gt;Mastodon&amp;lt;/a&amp;gt; / &amp;lt;a href=&quot;https://bsky.app/profile/mkennedy.codes?featured_on=pythonbytes&quot;&amp;gt;BlueSky&amp;lt;/a&amp;gt; / &amp;lt;a href=&quot;https://x.com/mkennedy?featured_on=pythonbytes&quot;&amp;gt;X&amp;lt;/a&amp;gt; / &amp;lt;a href=&quot;https://www.linkedin.com/in/mkennedy/?featured_on=pythonbytes&quot;&amp;gt;LinkedIn&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;Calvin: &amp;lt;a href=&quot;https://sixfeetup.social/@calvin?featured_on=pythonbytes&quot;&amp;gt;Mastodon&amp;lt;/a&amp;gt; / &amp;lt;a href=&quot;https://bsky.app/profile/calvinhp.com?featured_on=pythonbytes&quot;&amp;gt;BlueSky&amp;lt;/a&amp;gt; / &amp;lt;a href=&quot;https://x.com/calvinhp?featured_on=pythonbytes&quot;&amp;gt;X&amp;lt;/a&amp;gt; / &amp;lt;a href=&quot;https://www.linkedin.com/in/calvinhp/?featured_on=pythonbytes&quot;&amp;gt;LinkedIn&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;Show: &amp;lt;a href=&quot;https://fosstodon.org/@pythonbytes&quot;&amp;gt;Mastodon&amp;lt;/a&amp;gt; / &amp;lt;a href=&quot;https://bsky.app/profile/pythonbytes.fm&quot;&amp;gt;BlueSky&amp;lt;/a&amp;gt; / &amp;lt;a href=&quot;https://x.com/PythonBytes?featured_on=pythonbytes&quot;&amp;gt;X&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
&amp;lt;/ul&amp;gt;

&amp;lt;p&amp;gt;Join us on YouTube at &amp;lt;a href=&quot;https://pythonbytes.fm/stream/live&quot;&amp;gt;&amp;lt;strong&amp;gt;pythonbytes.fm/live&amp;lt;/strong&amp;gt;&amp;lt;/a&amp;gt; to be part of the audience. Usually &amp;lt;strong&amp;gt;Tuesday at 7am PT&amp;lt;/strong&amp;gt;. Older video versions available there too.&amp;lt;/p&amp;gt;

&amp;lt;p&amp;gt;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 &amp;lt;a href=&quot;https://pythonbytes.fm/friends-of-the-show&quot;&amp;gt;our friends of the show list&amp;lt;/a&amp;gt;, we'll never share it.&amp;lt;/p&amp;gt;

&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Calvin #1: &amp;lt;a href=&quot;https://safedep.io/memtensor-sckit-worm-npm-pypi/?featured_on=pythonbytes&quot;&amp;gt;MemTensor / MemoryOS PyPI package hijacked via a malicious build backend&amp;lt;/a&amp;gt;&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;

&amp;lt;ul&amp;gt;
&amp;lt;li&amp;gt;On Sept 23 an attacker published backdoored MemoryOS 2.0.34 on PyPI and three bad versions (0.1.21, 0.1.23, 0.1.25) of MemTensor's OpenClaw plugin on npm. PyPI had no clean release that day, so 2.0.34 was the newest.&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;They pushed commits to MemTensor's own GitHub Actions release pipelines. On PyPI that was a custom Poetry build backend, and on npm a tweaked validation script. Both used BASH_ENV to hand the publish token to the attacker before the real publish ran. SafeDep couldn't confirm how the attacker got push access.&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;Runs on import, not install: A Go implant called sckit starts when the library loads, so --ignore-scripts won't save you.&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;It harvests credentials from your home directory (npm and PyPI tokens, GitHub tokens, SSH keys, cloud CLI tokens, .env files) and sends them to skyleen[.]fr servers.&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;It's a worm: It uses stolen tokens to copy itself into other repos and packages, so the victim list could grow.&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;If you installed it: Downgrade to MemoryOS 2.0.33 (plugin 0.1.20) and rotate every credential reachable from $HOME. Also kill any running sckit stage0 process and check repos you can push to for a stray runtime-update.yml workflow or .sckit/ directory.&amp;lt;/li&amp;gt;
&amp;lt;/ul&amp;gt;

&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Michael #2: &amp;lt;a href=&quot;https://tinymongo.org?featured_on=pythonbytes&quot;&amp;gt;TinyMongo&amp;lt;/a&amp;gt;&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;

&amp;lt;ul&amp;gt;
&amp;lt;li&amp;gt;Want to use a MongoDB data interface, but swap out the storage engine?
&amp;lt;ul&amp;gt;
&amp;lt;li&amp;gt;Memory for testing/caching&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;JSON/TinyDB simple JSON files&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;SQLite for durable, high-perf reads with WAL&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;SQLIte shared for high write apps&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;DuckDB + Parquet for analytics apps&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;Postgres + MariaDB for multi-machine client/server&amp;lt;/li&amp;gt;
&amp;lt;/ul&amp;gt;&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;Great for teaching, examples, and simple deployments&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;&amp;lt;a href=&quot;https://github.com/schapman1974/tinymongo/issues/72?featured_on=pythonbytes&quot;&amp;gt;Amazing story of paired AI development&amp;lt;/a&amp;gt;
&amp;lt;ul&amp;gt;
&amp;lt;li&amp;gt;Will completely run &amp;lt;a href=&quot;http://talkpython.fm?featured_on=pythonbytes&quot;&amp;gt;talkpython.fm&amp;lt;/a&amp;gt; after weeks of shared work together (in SQLite mode).&amp;lt;/li&amp;gt;
&amp;lt;/ul&amp;gt;&amp;lt;/li&amp;gt;
&amp;lt;/ul&amp;gt;

&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Calvin #3: Jev: what to know&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;

&amp;lt;ul&amp;gt;
&amp;lt;li&amp;gt;What it is: Jev is a model from TypeSafe AI that answers with typed results (yes/no probabilities, scores, picks from your options) instead of prose. &amp;lt;a href=&quot;https://realpython.com/jev-python/?featured_on=pythonbytes&quot;&amp;gt;Real Python published a hands-on tutorial on 2026-09-24&amp;lt;/a&amp;gt; and the buzz on hacker news is almost deafening.&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;It's proprietary: Jev is a hosted, closed-weight model. There are no weights to download and no self-hosting. Everything called &quot;open Jev&quot; is an independent reimplementation, not TypeSafe's model.&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;Your data leaves your machine: Every call sends your input text to a third-party API. In the tutorial that path goes through OpenRouter to TypeSafe. Think twice before sending customer messages, tickets or anything sensitive.&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;Cost and stability are open questions: The tutorial calls Jev &quot;cheap, but not free&quot; and says it's fast and cheap &quot;at the moment.&quot; It also says whether that stays true is &quot;something to keep an eye on.&quot;&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;Credit to Real Python: It's a good, practical intro. It shows the Noul, Score and Choice primitives, and its point that instruction wording matters more than thresholds is useful advice for any model. The tutorial itself says similar results are possible with a well-prompted LLM.&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;Open options to look at instead:
&amp;lt;ul&amp;gt;
&amp;lt;li&amp;gt;JevK5 (https://github.com/allebee/jevk5): Apache-2.0 weights and code, 4B or 9B parameters, and it accepts TypeSafe-style requests.&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;SemIf, formerly OpenJev (https://github.com/TheoLeeCJ/openjev): MIT-licensed, small models, and it can run CPU-only.&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;openjev-sglang (https://github.com/ekzhang/openjev-sglang): a Jev-compatible endpoint running Qwen3.6-35B-A3B, but no license is stated, so check before commercial use.&amp;lt;/li&amp;gt;
&amp;lt;/ul&amp;gt;&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;The catch: These copy Jev's interface, not its model or training. Results will differ, and I haven't run any of them. Benchmarks are self-reported, and JevK5 is English-only.&amp;lt;/li&amp;gt;
&amp;lt;/ul&amp;gt;

&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Michael #4:&amp;lt;/strong&amp;gt; &amp;lt;a href=&quot;https://deadlovelll.github.io/2026-09-05-reading-dict-deoptimizes-attribute-access/?featured_on=pythonbytes&quot;&amp;gt;One innocent dict read makes attribute access permanently slower&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;

&amp;lt;p&amp;gt;Timofei Ivankov benchmarks a CPython internals surprise: since 3.11, attribute access skips the instance dict entirely. A specialized opcode reads the attri.bute at a fixed byte offset in the object's inline values array. Read &amp;lt;code&amp;gt;obj.__dict__&amp;lt;/code&amp;gt; once, though, and the dict gets materialized, the object loses that specialized path for the rest of its life, and a million-iteration loop goes from 33 ms to 51 ms on CPython 3.14. vars() and copy.copy() trigger the same thing, so a debugging print or a shallow copy in code touching your hot objects quietly makes every later attribute access roughly 1.5x slower.&amp;lt;/p&amp;gt;

&amp;lt;ul&amp;gt;
&amp;lt;li&amp;gt;The slowdown is permanent and nothing about it looks like a performance decision: ordinary code far from the hot loop can trigger it, and the function that gets slower never changes.&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;Materializing &amp;lt;strong&amp;gt;dict&amp;lt;/strong&amp;gt; produces a split table, and the LOAD_ATTR_WITH_HINT fallback declines split tables, so the object ends up with no specialization at all&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;vars(), 'x' in o.&amp;lt;strong&amp;gt;dict&amp;lt;/strong&amp;gt;, and copy.copy() all materialize it; copy.copy is the realistic trap since nobody treats a shallow copy as a performance decision&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;&amp;lt;strong&amp;gt;slots&amp;lt;/strong&amp;gt; instances read attributes at exactly the same speed and cannot fall into the trap since there is no &amp;lt;strong&amp;gt;dict&amp;lt;/strong&amp;gt; to materialize&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;On the free-threaded build both effects grow: atomic incref on reads plus an object lock on writes push the penalty from 17.6 to 25.4 ns&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;Credit: this item was surfaced by the PyCoder's Weekly newsletter&amp;lt;/li&amp;gt;
&amp;lt;/ul&amp;gt;

&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Extras&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;

&amp;lt;p&amp;gt;Calvin:&amp;lt;/p&amp;gt;

&amp;lt;ul&amp;gt;
&amp;lt;li&amp;gt;&amp;lt;a href=&quot;https://pypi.org/project/whatsnewt/?featured_on=pythonbytes&quot;&amp;gt;whatsnewt&amp;lt;/a&amp;gt; - a TUI text adventure through what's new in Python 3.15; playful but niche.&amp;lt;/li&amp;gt;
&amp;lt;/ul&amp;gt;

&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Joke:&amp;lt;/strong&amp;gt; &amp;lt;a href=&quot;https://www.youtube.com/watch?v=xE9W9Ghe4Jk&amp;amp;t=323s&quot;&amp;gt;Shipping a button in 2026…&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;</description>
	<pubDate>Tue, 29 Sep 2026 18:08:45 +0000</pubDate>
</item>
<item>
	<title>eGenix.com: Python Meeting Düsseldorf - 2026-10-07</title>
	<guid>https://www.egenix.com/company/news/Python-Meeting-Duesseldorf-2026-10-07</guid>
	<link>https://www.egenix.com/company/news/Python-Meeting-Duesseldorf-2026-10-07</link>
	<description>&lt;p&gt;&lt;span&gt;The following text is in German, since we're announcing a regional user group meeting in Düsseldorf, Germany.&lt;/span&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;h2&gt;Ankündigung&lt;/h2&gt;
&lt;p&gt;Das nächste &lt;a href=&quot;http://pyddf.de/&quot;&gt;Python Meeting Düsseldorf&lt;/a&gt; findet an folgendem Termin statt:&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;07.10.2026, 18:00 Uhr&lt;br /&gt;
  &lt;span&gt;Raum 1, 2.OG im &lt;a href=&quot;http://www.duesseldorf.de/jugendamt/fam/famfoe/bueh/ac/index.shtml&quot;&gt;Bürgerhaus Stadtteilzentrum Bilk&lt;/a&gt;&lt;br /&gt;
    &lt;a href=&quot;http://www.duesseldorf-arcaden.de/anfahrt.html&quot;&gt;Düsseldorfer Arcaden&lt;/a&gt;, &lt;a href=&quot;http://maps.google.com/maps?q=51.209169,6.775339&amp;layer=c&amp;sll=51.209353,6.775272&amp;cbp=11,177.96,,0,0.79&amp;cbll=51.209412,6.77577&amp;ie=UTF8&amp;t=m&amp;vpsrc=0&amp;panoid=0NGUHHHEpGGMCcqpf3Gmbw&amp;z=17&quot;&gt;Bachstr. 145, 40217 Düsseldorf&lt;/a&gt;&lt;br /&gt;
  &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;br /&gt;
  &lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;h2&gt;Programm&lt;/h2&gt;
&lt;h3&gt;Bereits angemeldete Vorträge&lt;/h3&gt;
&lt;ul class=&quot;pl-5 list-disc mb-4&quot;&gt;
  
&lt;li&gt;Philipp von dem Bussche:&lt;br /&gt;&lt;strong&gt;Overengineering eines Fotobuchs: Meine Agenten-Reise durch Japans Sitzbezüge&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Jens Diemer:&lt;br /&gt;&lt;strong&gt;Radicle Explorer (LT)&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Marc-André Lemburg:&lt;br /&gt;&lt;strong&gt;Common shortcuts AI agents love to use&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Jochen Wersdörfer:&lt;br /&gt;&lt;strong&gt;AI coding harnesses&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Klaus Bremer:&lt;br /&gt;&lt;strong&gt;Monte Carlo Simulation und Concurrency mit Freethreading und Subinterpreters in Python 3.13 bis 3.15&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

Weitere Vorträge können gerne noch angemeldet werden. Bei Interesse, bitte unter &lt;a href=&quot;mailto:info@pyddf.de&quot;&gt;info@pyddf.de&lt;/a&gt; melden.






&lt;h3&gt;Startzeit und Ort&lt;br /&gt;
&lt;/h3&gt;
&lt;p&gt;Wir treffen uns um 18:00 Uhr im Bürgerhaus in den 
Düsseldorfer Arcaden.&lt;/p&gt;
&lt;p&gt;Das Bürgerhaus teilt sich den Eingang mit dem Schwimmbad und befindet 
sich an der Seite der Tiefgarageneinfahrt der Düsseldorfer Arcaden.&lt;br /&gt;
  &lt;br /&gt;
Über dem Eingang steht ein großes &quot;Schwimm’ in Bilk&quot; Logo. Hinter der Tür
 direkt links zu den zwei Aufzügen, dann in den 2. Stock hochfahren. Der
 Eingang zum Raum 1 liegt direkt links, wenn man aus dem Aufzug kommt.&lt;br /&gt;
  &lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; &lt;a href=&quot;http://bit.ly/11sCfiw&quot;&gt;Eingang in Google Street View&lt;/a&gt;&lt;/p&gt;&lt;b&gt;⚠️ Wichtig&lt;/b&gt;: Bitte nur dann anmelden, wenn ihr absolut 
sicher seid, dass ihr auch kommt. Angesichts der begrenzten Anzahl Plätze, haben
 wir kein Verständnis für kurzfristige Absagen oder No-Shows.
&lt;h2&gt;Einleitung&lt;/h2&gt;



&lt;p&gt;Das &lt;a href=&quot;http://pyddf.de/&quot;&gt;Python Meeting Düsseldorf&lt;/a&gt; ist eine regelmäßige Veranstaltung in Düsseldorf, die sich an Python Begeisterte aus der Region wendet.&lt;/p&gt;Einen guten Überblick über die Vorträge bietet unser &lt;a href=&quot;http://www.youtube.com/pyddf/&quot;&gt;PyDDF YouTube-Kanal&lt;/a&gt;, auf dem wir Videos der Vorträge nach den Meetings veröffentlichen.&lt;br /&gt;



&lt;p&gt;Veranstaltet wird das Meeting von der &lt;a href=&quot;https://www.egenix.com/&quot;&gt;eGenix.com GmbH&lt;/a&gt;, Langenfeld, in Zusammenarbeit mit &lt;a href=&quot;http://www.clark-consulting.eu/&quot;&gt;Clark Consulting &amp;amp; Research&lt;/a&gt;, Düsseldorf:&lt;br /&gt;
&lt;/p&gt;
&lt;h2&gt;Format&lt;/h2&gt;
&lt;p&gt;Das &lt;a href=&quot;http://pyddf.de/&quot;&gt;Python Meeting Düsseldorf&lt;/a&gt; nutzt eine Mischung aus (Lightning) Talks und offener Diskussion.&lt;/p&gt;Vorträge können vorher angemeldet werden, oder auch spontan 
während des Treffens eingebracht werden. Ein Beamer mit HDMI und FullHD Auflösung 
steht zur Verfügung.&lt;p&gt;&lt;span&gt;(Lightning) Talk Anmeldung&lt;/span&gt; bitte formlos per EMail an &lt;a href=&quot;mailto:info@pyddf.de?subject=Anmeldung&amp;nbsp;Lightning&amp;nbsp;Talk&amp;nbsp;Python&amp;nbsp;Meeting&amp;nbsp;D&amp;uuml;sseldorf&quot;&gt;info@pyddf.de&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Kostenbeteiligung&lt;/h2&gt;

&lt;p&gt;Das &lt;a href=&quot;http://pyddf.de/&quot;&gt;Python Meeting Düsseldorf&lt;/a&gt; wird von Python Nutzern für Python Nutzer veranstaltet.&lt;/p&gt;
&lt;p&gt;Tagungsraum, Beamer und Getränke produzieren Kosten. Daher bitten wir die Teilnehmer um eine Kostenbeteiligung in Höhe von &lt;span&gt;EUR 10,00&lt;/span&gt; inkl. 
19% Mwst. Schüler und Studenten zahlen &lt;span&gt;EUR 5,00&lt;/span&gt; inkl. 
19% Mwst.&lt;/p&gt;
&lt;p&gt;Wir möchten alle Teilnehmer bitten, den Betrag in bar mitzubringen.&lt;/p&gt;
&lt;h2&gt;Anmeldung&lt;/h2&gt;
&lt;p&gt;Da wir nur 25 Personen in dem angemieteten Raum empfangen können, möchten wir bitten, sich vorher anzumelden.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&amp;gt;&amp;gt;&amp;gt; Anmeldung bitte über den hierfür angelegten &lt;/b&gt;&lt;b&gt;&lt;a href=&quot;https://www.linkedin.com/events/7510428185302323200&quot;&gt;LinkedIn Event&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;
&lt;/p&gt;







&lt;h2&gt;Weitere Informationen&lt;/h2&gt;
&lt;p&gt;Weitere Informationen finden Sie auf der Webseite des Meetings:&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a href=&quot;https://pyddf.de/&quot;&gt;https://pyddf.de/&lt;/a&gt;&lt;br /&gt;
&lt;/p&gt;

&lt;p&gt;Viel Spaß !&lt;/p&gt;
&lt;p&gt;Marc-Andre Lemburg, eGenix.com&lt;/p&gt;</description>
	<pubDate>Tue, 29 Sep 2026 08:00:00 +0000</pubDate>
</item>

</channel>
</rss>
