Other articles


  1. Execute a function until a specific value is returned

    I had barely no idea that the iter function could do that in Python. You can call it with two arguments, a function and a stop value, and have your function being executed until the stop value is returned. It can have some interesting usages, as shown in the article. I would not use it all over the place because it looks like a bit dark magic but still a nice tool to keep in mind.

    read more
  2. 8 versions of UUID and when to use them

    I'm used to UUID v4 to generates random globally unique IDs whenever I need it in places where I can not benefit from a database with an auto numbering column. Actually, this is just the tree hiding the forest of UUIDs. This great article list the 8 versions of UUID and explain what they are about and when to use them.

    read more
  3. Modern good practices for Python development

    I should definitively write my own set of guidelines and practices for Python development. For the moment you can already find some in this article. I agree with most of the practices outlined expect maybe using TOML for configuration files (I prefer relying on environment variables and .env files). I would also recommend to opt for typer instead of argparse for more complex CLIs. Finally I would suggest using tools like uv or pdm to manage your project (packaging, dependencies, virtual environment).

    read more
  4. Practices of reliable software design

    In the following article, the author discuss some interesting practices, not only tied to coding, for building and designing reliable softwares. There is one I particularly emphasis with is the Make testing easy which, in my opinion, is the cornerstone of good software design which is way too much overlooked in a lot of projects and companies.

    read more
  5. 10 Python programming optimisation techniques.

    In this article, the author provide some interesting techniques for optimising Python code, in particular, memory consumption for cases where memory is critical or resources are limited. I would personally not apply all those techniques by default and reserve them for specific use cases, preferring readability in a first place. Still, those techniques are interesting to have in mind.

    read more
  6. Python packaging is great now, uv is all you need

    To facilitate managing my Python projects managing and packaging I'm using PDM. This tool is really great and has lot of very nice features that will really simplify your life for building either applications or libraries. Lastly the guys from Astral (creators of ruff) made lot of improvement to their own similar tool, uv. In this article, Juan Luis Cano Rodríguez quickly explain why uv is a serious contender in the Python project managing/packaging game.

    read more
  7. Integrating Problem Details RFC with FastAPI

    During my past development projects, I built a lot of HTTP APIs using various langages (TypeScript, JavaScript, Python) and frameworks (fastify, FastAPI, flask, express). One thing I've noticed is that each of those frameworks have their own way of shaping HTTP error responses. This is actually not a big deal considering that most clients (i.e: HTTP clients) do not really rely on strict structure for such errors.

    read more
  8. One way to fix Python circular imports

    I've already encountered issues regarding circular imports, most of the time it was related to typings only (two modules referencing types from each others) and is easily resolved using a if TYPE_CHECKING: block. For other cases I try my best to shape my modules in a way that it does not require circular imports. In the following article I discovered another way to overcome circular imports that I could not have think about simply by defering imported names lookup.

    read more
  9. Three Laws of Software Complexity

    Lot of people think that building new softwares is complex. Actually, maintaining software is a lot more difficult than that. Just as for our universe, the entropy of all ours systems tend to increase more and more over time and thus, its complexity. This is where lies the challenge of our developers/ingeneers job.

    read more

links

social