<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Python on Serghei&#39;s Blog</title>
    <link>https://blog.serghei.pl/tags/python/</link>
    <description>Recent content in Python on Serghei&#39;s Blog</description>
    <generator>Hugo</generator>
    <language>en</language>
    <managingEditor>contact@serghei.pl (Serghei Iakovlev)</managingEditor>
    <webMaster>contact@serghei.pl (Serghei Iakovlev)</webMaster>
    <copyright>© 2019-2026 Serghei Iakovlev</copyright>
    <lastBuildDate>Fri, 24 Jul 2026 12:00:00 +0200</lastBuildDate>
    <atom:link href="https://blog.serghei.pl/tags/python/rss.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Advanced Python Development Workflow in Emacs</title>
      <link>https://blog.serghei.pl/posts/emacs-python-ide/</link>
      <pubDate>Tue, 26 Nov 2024 20:00:00 +0100</pubDate><author>contact@serghei.pl (Serghei Iakovlev)</author>
      <guid>https://blog.serghei.pl/posts/emacs-python-ide/</guid>
      <description>&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;a class=&#34;heading-anchor&#34; href=&#34;#introduction&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;why-emacs&#34;&gt;Why Emacs?&lt;a class=&#34;heading-anchor&#34; href=&#34;#why-emacs&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;Emacs is not just an editor — it&amp;rsquo;s an extensible platform for crafting&#xA;highly personalized development environments. With tools like &lt;code&gt;company&lt;/code&gt;,&#xA;&lt;code&gt;yasnippet,&lt;/code&gt; &lt;code&gt;lsp-mode&lt;/code&gt; and &lt;code&gt;dap-mode&lt;/code&gt;, Emacs transforms into a feature-rich&#xA;Python IDE capable of competing with PyCharm or VS Code.&lt;/p&gt;&#xA;&lt;p&gt;This guide explores how to evolve Emacs into a robust Python&#xA;IDE. Whether you’re writing simple scripts or managing large-scale&#xA;projects, you’ll find a setup that aligns with your engineering needs&#xA;and reflects the power of Emacs customization.&lt;/p&gt;</description>
    </item>
    <item>
      <title>FFI in Python: From ctypes to Rust, and the Post-GIL Future</title>
      <link>https://blog.serghei.pl/posts/a-quick-dive-into-ffi-in-python/</link>
      <pubDate>Wed, 15 Mar 2023 21:06:00 +0100</pubDate><author>contact@serghei.pl (Serghei Iakovlev)</author>
      <guid>https://blog.serghei.pl/posts/a-quick-dive-into-ffi-in-python/</guid>
      <description>&lt;p&gt;Every Python program runs inside a boundary. On one side sits the&#xA;interpreter — dynamic, reflective, garbage-collected. On the other&#xA;side sits the operating system, the CPU, and libraries compiled to&#xA;native machine code. The Foreign Function Interface is the gate&#xA;between these two worlds. Understanding how that gate works, what it&#xA;costs to pass through, and which tools build the best bridges is what&#xA;separates a Python developer who writes fast code from one who&#xA;rewrites everything in another language.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Herding Celery Tasks: Building Workflows for Sequential Task Execution</title>
      <link>https://blog.serghei.pl/posts/building-celery-workflows-for-sequential-task-execution/</link>
      <pubDate>Fri, 08 Oct 2021 18:32:00 +0200</pubDate><author>contact@serghei.pl (Serghei Iakovlev)</author>
      <guid>https://blog.serghei.pl/posts/building-celery-workflows-for-sequential-task-execution/</guid>
      <description>&lt;p&gt;In this post, I’ll tackle a straightforward problem: launching a&#xA;Celery task X after all tasks Y have been completed. Task X needs to&#xA;take the result of all the tasks Y as an input. While it seems like a&#xA;brute-force solution would be to manually store each result of task Y,&#xA;it’s more interesting to achieve this using Celery without manual&#xA;database manipulations or extra code.&lt;/p&gt;&#xA;&lt;p&gt;This guide is not meant to be an exhaustive or comprehensive manual;&#xA;consider it more like a cheat sheet. Throughout the article, I’ll&#xA;include links to relevant documentation, and I encourage you to first&#xA;check the official docs and try everything out yourself. If you notice&#xA;any inaccuracies or have suggestions for additions, feel free to reach&#xA;out to me. For simplicity, I’ll use Dockerized Redis as the broker in&#xA;this example, although in your particular case, the broker could be&#xA;something else. For the sake of demonstration, the broker choice is&#xA;not critical here.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
