Skip to content

November of 2021


Life Management

Map Management

  • New: How I manage maps in my life.

    For navigating on the go, I strongly recommend OSMand+, for browsing maps in the browser, use OpenStreetMaps or CyclOSM if you want to move by bike.

    To plan routes, you can use, it works perfectly for bikes. For hiking is awesome too, it shows you a lot of data needed to plan your tracks (check the settings on the right). If you want to invest a little more time, you can even set your personalize profiles, so that the routing algorithm prioritizes the routes to your desires. It's based on brouter and both can be self-hosted, although brouter does not yet use Docker.




Full screen applications

  • New: How to use Conditional Containers.

    from prompt_toolkit.layout import ConditionalContainer
    from prompt_toolkit.filters.utils import to_filter
    show_header = True
        Label('This is an optional text'), filter=to_filter(show_header)

Type Hints

  • New: Define a TypeVar with restrictions.

    from typing import TypeVar
    AnyStr = TypeVar('AnyStr', str, bytes)
  • New: Use a constrained TypeVar in the definition of a class attributes.

    If you try to use a TypeVar in the definition of a class attribute:

    class File:
        """Model a computer file."""
        path: str
        content: Optional[AnyStr] = None # mypy error!

    mypy will complain with Type variable AnyStr is unbound [valid-type], to solve it, you need to make the class inherit from the Generic[AnyStr].

    class File(Generic[AnyStr]):
        """Model a computer file."""
        path: str
        content: Optional[AnyStr] = None


  • New: Testing Dash applications.

    dash.testing provides some off-the-rack pytest fixtures and a minimal set of testing APIs with our internal crafted best practices at the integration level. The commit includes a simple example and some guides on how to test Dash application.



Python Snippets



  • New: Introduce the Tenacity python library.

    Tenacity is an Apache 2.0 licensed general-purpose retrying library, written in Python, to simplify the task of adding retry behavior to just about anything.


Infrastructure as Code

Helm Git

  • Correction: Update installation method.

    In the last version 0.11.1, the issue that forced us to use the version 0.8.0 was solved

Infrastructure Solutions


Continuous Integration


  • New: Introduce Pyment.

    Pyment is a python3 program to automatically create, update or convert docstrings in existing Python files, managing several styles.

    As of 2021-11-17, the program is not production ready yet for me, I've tested it in one of my projects and found some bugs that needed to be fixed before it's usable. Despite the number of stars, it looks like the development pace has dropped dramatically, so it needs our help to get better :).

Operative Systems


Github cli

  • New: Basic usage of gh.

    gh is GitHub’s official command line tool.

    It can be used to speed up common operations done with github, such as opening PRs, merging them or checking the checks of the PRs


  • New: Introduce Graylog.

    Graylog is a log management tool. The commit includes some tips like how to send a test message to check an input.



  • Correction: Correct vim snippet to remember the folds when saving a file.


Board Gaming


  • New: Introduce the awesome Regicide card game.

    Regicide is a wonderful cooperative card game for 1 to 4 players. It's awesome how they've built such a rich game dynamic with a normal deck of cards. Even if you can play it with any deck, I suggest to buy the deck they sell because their cards are magnificent and they deserve the money for their impressive game. Another thing I love about them is that even if you can't or don't want to pay for the game, they give the rules for free.

    If you don't like reading the rules directly from their pdf (although it's quite short), they explain them in this video.

    I've loved the game so much, that I've created some variations of the rules to make each game more different and changeling.