Other articles


  1. Updating your setup.py files to the newer format

    One of the not so nice things about legacy installable python packages is the executable nature of setup.py files. This means amongst other things that you can't reliably determine the contents of some setup.py files without arbitrary code execution. This is what led to PEP 518 which specified a declarative metadata format that can be stored in easy to parse file. Updating is a pain though, but thankfully there's some tooling that makes this easier as I found out recently.


    read more
  2. Creating your own user events in pygame

    Here's how you can create your own user events in Pygame.


    read more
  3. Unicode whitespaces in Python

    Getting a list of all the Unicode whitespace characters is less straightforward than I would have hoped.


    read more
  4. The HTML abbreviation tag

    TIL there's a HTML tag for marking up abbreviations that helps readers by showing them how you have defined your abbreviations and acronyms, for example "TIL", that is natively supported by browsers.


    read more
  5. Finding out what a python script imports

    Finding out what a Python module imports


    read more
  6. Pylint false positives with C extensions

    Pylint can give you false positives for missing-member errors when C extensions are involved, here's why and what you can do to avoid the issue.


    read more
  7. Have we reached peak Python?

    Has Python reached the peak of the hype cycle?


    read more
  8. Stringly typed functions

    An overuse of strings when you could use better types is an antipattern I commonly see when doing code review of distressed systems. This tends to come up more often in older languages that have weaker type systems, but the issue can come up in more modern language also.


    read more
  9. LaTeX support on this blog

    I finally have support for rendering LaTeX on this blog


    read more

Page 1 / 9 »