The bigger your codebase grows, the more important it becomes to stay consistent — in naming things and in how you use features of your programming language.

Take input parameters and variables, for example. Is the ID of a Save object sometimes named save_id, other times saveId, and occasionally just id? Is the function to load it called load_save(...), get_save(...), or fetch_save(...)? Or maybe it’s load_save(...) for saves, but get_settings(...) and fetch_tag(...) elsewhere?
If so, confusion is only a matter of time.

Just like I mentioned yesterday regarding the UI, it’s dangerously easy to become inconsistent. One moment of distraction, and you’ve introduced something that doesn’t follow your previous conventions.

This risk grows with the flexibility of your programming language.
In Python, for instance, you can organize your code into classes — or not.
You can choose any casing style you like.
You can skip type declarations entirely or sprinkle them in randomly.
Nothing — certainly not a compiler — forces you to follow conventions like stricter languages (say, Java) do.

With poketto.me, the first large project I’ve built with Python, I realized early on that I needed to establish conventions — even if they felt arbitrary at first.
For example:

  • I use lowercase for internal module functions, but CamelCase for public ones.

  • I stick with underscores for variable names, not camelCase.

  • I (try to!) use type hints everywhere, including Optional[...] when applicable.

Still… it’s ridiculously easy to slip up. And the next day, you’re left wondering why your code looks inconsistent.

This got me thinking — maybe this is a perfect use case for AI coding tools?
Can Cursor, Copilot, or similar tools help enforce (or even detect) codebase-specific conventions automatically?
Could they help apply a new convention — like renaming all index variables from i to idx — across a large codebase?
There might just be something there... 🤔