EuroPython 2025: A Week of Learning and Networking in Prague

Posted by Harald Nezbeda on Wed 30 July 2025

tl;dr

I attended EuroPython 2025 in Prague (July 14-20, 2025) - a full week of learning and networking. Highlights included tutorials on PyO3/Rust, Agentic RAG, and data storytelling, insightful talks from 120+ sessions covering technical and community topics, lightning talks with creative projects, open spaces including 3D printing workshops, and sprint weekend contributing to Django and other projects. Great conference experience with excellent community atmosphere in Prague.

"EuroPython 2025"

EuroPython 2025 marked my third consecutive year attending this conference - having participated in person last year and remotely in 2023. The consistently excellent experience was compelling enough to return once again.

The event took place in Prague from July 14-20, 2025, and thanks to Anexia's support, it was possible to experience the full week of learning and sharing:

  • 2 Days of Tutorials
  • 3 Days of Talks
  • 2 Days of Sprints
  • Other events:

And of course there were lots of discussions with new people I met at the conference and also many people from last year's event.

Getting there

I chose the same route as last year, going by train from Klagenfurt to Vienna, a route that takes about 4 hours, but still works better than flying directly to Prague, since the waiting time in the Vienna airport for the change would be much longer, even if the flight would take less than an hour. I really look forward to the new Koralm Railway as this will massively reduce the travel time to Vienna, and might be even worth considering going with the train directly to Prague.

From Vienna there are good connections to the airport using the public transport, a ticket for the airport transfer costs just 4.60 Euro.

The plane from Vienna to Prague takes less than an hour, and there are also very good connections from the Prague airport to the city using the public transport system. Make sure to install the public transport app before and get accustomed to where you can buy the tickets. There are multiple types of tickets available:

  • 30 min - 30 CZK (1,22 Euro)
  • 90 min - 40 CZK (1,63 Euro)
  • 24 hours - 120 CZK (4,88 Euro)
  • 72 hours - 330 CZK (13,54 Euro)

There is also a luggage ticket for 20 CZK (0,81 Euro) which is available for 3 hours and one for animals for the same price. I bought the luggage additionally when leaving and heading to the airport, even though on the controls only the travel ticket was verified.

The 90 min ticket should be sufficient to get from the airport to the city, and the 30 min and 90 min were my default tickets when moving around the city. Make sure to activate the tickets before entering the metro station and be aware that they need one minute after the activation in order to become valid.

"Prague Tram"

Tutorials

Monday - 14th July

Cheuk Ting Ho: Writing Python modules in Rust - PyO3 101

While writing Rust was interesting, I would say that the language is the opposite in terms of readability, especially compared with Python. There are however other use cases why this makes sense, especially when focusing on gaining an extra bit of performance. Similar to C bindings via Cython or C++ bindings via pybind11, the PyO3 can be used for Rust bindings for Python.

The tutorial is available on GitHub and is very well documented, so you can follow it along at your own pace: https://github.com/Cheukting/py03_101

Being a Web Developer, I'm mostly concerned about the speed of database queries, API integrations (especially REST) or other services, rather than the improvements that Rust can bring. On a wider scale, the performance gain from the code cannot save the overhead caused by the database connections or HTTP calls. Local data processing pipelines can make use of this technique however, as it can be seen on Polars.

Sebastián Flores: Python and Data Storytelling to create and deliver better presentations

I was very impressed by the tutorial that Sebastián Flores prepared, although there might be a bit of a bias considering the topic of finding good visualizations for specific data types has concerned me for a while.

I liked the stack used for the presentation itself, especially Quarto for generating the PDFs from .qmd files, which are a combination of markdown and executable code cells, making it a very nice way to keep the files in a repository, and update them only on specific changes. Inside Jupyter the RISE extension was used in order to create slideshows from a notebook, which is also a very interesting and unique feature, because the Python code from the cells can be executed and modified during the presentation.

Going back to the content, he also focused on public speaking, and what are some of the key secrets to focus on. Particularly I liked Will Stephen's talk from TEDxNewYork titled How to sound smart in your TEDx Talk, this shows that there are many other aspects that are very powerful in a talk, besides the main content.

"Python and Data Storytelling"

A very detailed reading list was also provided for those who want to go even further in the realm of storytelling and visualizations:

  • Recommended reading for Storytelling
    • Storyworthy - Matthew Dicks
    • Made to Stick - Chip Heath and Dan Heath
    • Bird by Bird – Anne LaMott
    • The Science of Storytelling – Will Storr
    • A Swim in a Pond in the Rain – George Saunders
    • Steering the Craft – Ursula K. Le Guin
  • Recommended reading for Data Storytelling
    • Storytelling with Data - Cole Nussbaumer Knaflic
    • The Visual Display of Quantitative Information - Edward Tufte
    • Beautiful Evidence - Edward Tufte
    • How charts lie - Alberto Cairo
    • The Truthful Art - Alberto Cairo
    • The Functional Art - Alberto Cairo
    • Matplotlib Journey - Yann Holtz and Joseph Barbier

The canvas model was also particularly useful when preparing the slides for a talk and the story for the talk.

Tuesday - 15th July

Tarun Jain: Efficient Query Routing using Agentic RAG

The tutorial was based on a previous article and adapted based on a blog post from Uber related to Agentic RAG

The session focused on RAG and the required components:

  • LLM: Gemini 2.5 Flash
  • Vector Database: Qdrant
  • Embedding: jina-embeddings-v2-base-en
  • Agent workflow using LlamaIndex
  • Opik for traces and evaluations

The participants could follow along as everything was packed in a notebook. The final result was a chat interface that could search for a result in a knowledge base created from a PDF file, or do a Google search, depending on the question that the user entered.

Jannis Leidel: Packaging Summit

The Packaging Summit required an additional registration and approval for participation, and it was focused on PEP 772 (Packaging Council governance) and PEP 725 (Specifying external dependencies in pyproject.toml), both of them being still in the early stages. The full meeting notes can be found on https://hackmd.io/@jezdez/europython2025-packaging-summit

Talks

This year there were around 120 talks and 10 poster sessions, so there is definitely no time to attend all. Sometimes the rooms are at full capacity, so you need to have a backup session. This was the case for the session Automating myself out of an unloved project with Python, n8n and Telegram from Sebastian Witowski, which I will have to watch later on the recordings.

My colleague Gerhard Bogner also joined for the 3 days of talks, and I was glad that we could use this opportunity to discuss the sessions and share different perspectives on the presentations we attended.

Here is the list of talks I selected:

Wednesday - 16th July

  • Savannah Bailey: You don’t have to be a compiler engineer to work on Python
  • Travis Hathaway: Let's talk: Communication & Consensus Building in Open-Source
  • Manivannan Selvaraj: Mentoring Both Ways: Helping Others While Leveling Up Yourself!
  • Gina Häußge: How to deal with toxic people
  • Pavel Král: Exploring LLM latency (Poster)
  • Sharon Xu: Build and Deploy AI Agents in VS Code
  • Daniel Hervás: Anatomy of a Python OpenTelemetry instrumentation
  • Paolo Melchiorre: A Pythonic semantic search
  • Petr Baudis: Building a large SaaS AI product with Python: The tale of three ecosystems

Thursday - 17th July

  • Brett Cannon: Why it took 4 years to get a lock files specification
  • disconnect3d: Pwndbg: Low level debugging and exploit development with Python
  • Stefan Bärisch: Testing the Tests - Assess and Improve Your Python Testing Code
  • Theodore Meynard, Mihail Douhaniaris: From Trees To Transformers: Adopting Deep Learning for Ranking
  • Jenny Vega: Hacking LLMs: An Introduction to Mechanistic Interpretability
  • Tamsin Fuller: Slithering through Audio Data with Python
  • Maria Ashna: A PEP Talk: Adventures As the Inaugural PyPI Support Specialist
  • Sebastián Ramírez: Behind the scenes of FastAPI and friends for developers and builders

Friday - 18th July

  • Nerea Luis: The Boom of Generative AI: realities, promises and awkward situations
  • Petter Salminen: It's All About Time ⏰ - What developers need to know about time
  • Tibs: Explaining the 5 types of database and how to choose between them
  • Lucas Pires: Django and HTMX: Patterns to Success
  • Yuliia Barabash: Terraform CDK in Python: Where Infrastructure Meets Code
  • Sebastian Buczyński: When in practice is Python performance an issue? Facts and myths.
  • Arie Bovenberg: Broken slots are a silent performance killer—Let's fix them!
  • Paul Everitt, Armin Ronacher, Brett Cannon,: "Python: the Documentary" screening and Q&A (moderated by Rodrigo Girão Serrão and Naa Ashiorkor Nortey)

"EuroPython Talks"

There are some particular highlights here, such as the talk of Gina Häußge, on a topic not related to the technical part, but rather to the organizational part of a project, which becomes particularly important if you work with open source or you gain more responsibility in a project over time. This also combined well with the session of Travis Hathaway, where he showed a lot of the tools that are required to manage larger open source projects in the first place.

Paolo Melchiorre showed some strong features of Django and how to add semantic search to the project, while keeping everything Python and easy to maintain in the Django ecosystem.

About two years ago we wanted to rename the python-deepcompare to just deepcompare, and there are some naming issues but from the talk of Maria Ashna I can see that the PyPA tries to find a long term solution for this kind of topics.

I use FastAPI on smaller projects and I really like the simplicity for creating quick bindings to small components. For projects where a database, ORM, migrations and admin are required I would still go for Django. What impressed me however is the energy of Sebastián Ramírez, and his philosophy on creating APIs. It reminded me a lot of Taylor Otwell and the whole Laravel community back in the days when I still worked with PHP.

Sebastian Buczyński's session was something I enjoyed, especially because he focused on the performance topic for the whole architecture of an application, and not just some parts of Python. This also applies to my opinion on PyO3 above.

From the last day of talks I want to highlight Petter Salminen about time. This is something that will affect every web developer, especially when having to deal with daylight saving or multiple timezones.

Open Spaces

This was something new at the conference, and it offered a space where participants could create a session on the spot. I liked this idea, although it was not always easy to keep track, especially if there was an interesting session at the same time, this is why I only caught the ending of the Django's 20th Birthday on Friday.

On Wednesday however I visited the 3D printing workshop by Prusa Research. Since I never did anything with 3D printers it was quite fascinating to see the printers in action, and also what they are capable of. I was sold the moment I saw one of them printing the Python logo.

"3D Print Python Logo"

Lightning talks

The lightning talks are always interesting and fun to attend after the session. Takanori Suzuki had something very interesting and fun about learning Japanese with Python.

Matthieu Amiguet and Barbara Minder came from Switzerland with their custom made E-Bikes, which I find fascinating. You can read more on their blog about their journey.

"EP25 Bikes"

Moisés Guimarães was creating very cool beats using Python and SuperCollider. Afterwards some members from the audience joined and they started singing Always look on the bright side of life, and the whole audience joined (this is probably one of the few lightning talks where nobody looked at the clock).

Sprints Weekend

haitch

I was glad to reconnect with Logan Connolly after last year's conference. This year he had a sprint on haitch, an interesting library he built for writing HTML with Python:

I'm quite curious how this will evolve over time.

django

Thibaud Colas gave me the idea to create an article where I sum up my resources for creating REST APIs with Django, and the result can be found here.

Marek Ostrihoň worked on the Django Wikipedia entry, and we had some discussions about what can be included in the Wikipedia page of Django.

I also started to work on the issue #2259, at least reproducing the issues and trying the workaround to see if they still work as expected. It seems that during this week another community member tried to solve this issue, and a PR is now open. Funny when considering that the issue is almost as old as the framework itself.

"EuroPython Sprints"

Meeting Pythonnistas

One of the conference's key focuses was fostering connections through The Pac-Man Rule - when standing in a group of people, always leave room for one more person to join your conversation. This simple but effective principle was actively promoted throughout the event, creating an incredibly welcoming atmosphere while facilitating networking and making new connections.

The rule proved especially valuable during coffee breaks, social events, and informal gatherings, where conversations naturally flowed and new people could easily join discussions. This approach helped break down barriers and made the conference feel more inclusive for both newcomers and seasoned attendees.

Conference T-shirts turned out to be perfect conversation starters. Meeting Ulrik Södergren at the airport was a perfect example - spotting his EuroPython 2024 T-shirt immediately sparked a conversation. We discovered we were heading to the same hotel and ended up sharing fascinating discussions about coding, hardware and even photography throughout the journey.

On Sunday after the sprints, a visit to the Cat Coffee in Prague led to another serendipitous encounter. Yano Wilke asked if I came from EuroPython (recognizing the conference T-shirt), and suddenly we were talking about code and data between a bunch of cats.

The social events throughout the week provided excellent networking opportunities. Beyond the main Thursday Social Event, events like PyBurrito and Pyvo created relaxed atmospheres perfect for meeting both familiar faces and new people. These gatherings allowed me to reconnect with Ben Allen, while also providing countless opportunities to meet new community members and exchange ideas in a more casual setting.

Conclusion

This year's conference was an incredible experience that perfectly balanced learning with networking. From hands-on tutorials like Agentic RAG to insightful talks spanning technical deep-dives and project management, every session offered valuable takeaways.

What makes this event special goes beyond the formal program - the lightning talks showcasing attendee creativity, spontaneous open space discussions, collaborative sprint atmosphere, and countless side conversations that happen throughout the week. These moments of genuine exchange and collaboration truly capture the essence of the open source spirit.

Prague proved to be an excellent host once again, and I'm grateful to Anexia for making this journey possible. The connections made and inspiration gained will undoubtedly influence my contributions to the ecosystem in the coming year. Already looking forward to next year!

"EuroPython 2025"