• Portretfoto van Ruben Hesselink
    Ruben Hesselink
  • Portretfoto van Geert-Jan van den Bosch
    Geert-Jan van den Bosch
  • Portretfoto van Kees Hink
    Kees Hink

PyGrunn 2025

PyGrunn is the largest Python conference in the Netherlands. On the 16th of May 2025 we visited it again. Read about the talks we visited in this blog.

About PyGrunn

With four simultaneous talks on each given moment, and about 400 attendees, PyGrunn is the largest Python conference in the Netherlands.

It was hard to choose from the 24 (!) regular talks in this conference, so below is only a small selection.

Keeping your Python in check

Mark Boer

At Four Digits we use MyPy for typing, because of this, Mark's talk about typing piqued our interests.

  • When typing Unions, use TypeVar.
    • But try to reduce the number of Unions.
  • You can use Beartype for runtime type checking
    • However, `BearType` does use some shortcuts, such as checking only a single element in a list.
  • Pydantic is also a good contender, works perfectly with FastAPI.
  • Use MyPy for static type checking.
  • If you're in the Machine Learning domain, you can use Jaxtyping.

Keeping your python in check slide
Keeping your python in check slide

QuerySet.explain(): make it make sense

Aivars Kalvans

The original talk in this slot was cancelled. When we heard an alternative talk was being given, which was about Django, we were immediately convinced to go.

  • Use QuerySet.explain() for executing and explaining the query, as well as seeing the cost.
  • Indexes do not always automatically get used.
  • Indexes do not work on negative queries, e.g. an exclude. They only work on positive queries, e.g. a filter.
    • Filtering with Q and using | will also not use indices.
  • Analyze the table after adding an index, otherwise there is the risk of old info!
  • https://hyperloop-rails.github.io/220-HowNotStructure.pdf

Django Template LSP: Smarter Completions for Django Templates

Kees Hink

Kees Hink, one of our developers at Four Digits, recently gave a talk on an exciting project we've built: Django Template LSP.

This tool brings smart code completions and suggestions to Django templates by implementing the Language Server Protocol (LSP) — the same technology that powers autocompletion in modern IDEs and text editors.

Want to learn more? Check out our dedicated blog post for an in-depth look at Django Template LSP.

Get it at GitHub!

Kees presenting at PyGrunn 2025
Kees presenting at PyGrunn 2025

Beating rsync using Python

Peter Odding

Peter Odding did a talk about a tool he made: Pdiffcopy. It's a replacement for rsync in the specific use case where a large file needs to be transfered.

  • Rsync skips files that have not been modified when syncing.
  • Rsync is somewhat slow; it dissapoints when transferring large folders.
    • This can somewhat be fixed by partitioning, but this does not fix the issue for large files.
  • pdiffcopy uses multithreading for speeding up the process immensily

For instance, a 916 MiB file takes pdiffcopy only 6.99 seconds, while it takes rsync 57.49 seconds!

Level up your team with guilds

Marcel-Jan Krijgsman

Marcel gave an insightful talk about his journey implementing guilds in the company he works at, and how to handle knowledge sharing.

  • Shared sessions help in transferring knowledge
  • It's best to let the least experienced team take the lead
  • Make templates for inexperienced teams, they'll learn along the way.

Python on a tractor

Wieneke Keller & Sebastian Lenartowicz

Aurea TreeScout is hardware and software that runs on a tractor. It decides the amount to spray on a orchard trees, to optimize the size and quantity of the fruit. They run Python on a k3s (lightweight Kubernetes) cluster to achieve this.

Homo Ludens

Daniele Procida

Always an engaging speaker, Daniele had us hanging on his lips for 45 minutes. His talks usually touch a variety of topics and go in unexpected directions, and this talk was no exception. Although summarizing his talk in a few bullet points doesn't do it justice, we'll try:

  • Why should Python (or indeed, programming or things in general) be "fun"?
  • What comes first, work or play? (Johan Huizinga argues the latter).
  • The satisfaction of working is hard to beat, the work-life balance reward system is rigged.
  • Canonical is hiring.

Other bloggers

Reinout van Rees also wrote about the talks on this day. His summaries are also worth reading! Unfortunately, he misspelled Kees' name ("Henk"), but that's only fair as Kees called him by his brother's name by accident. Quid pro quo.

Conclusion

We learned a great deal today.

On november 14th, the same organisation hosts AIGrunn, a conference dedicated to Artificial Intelligence.

And May 2026 there will be another PyGrunn. We're looking forward to it!

We love code