Why I ban users from my repositories

I’ve been maintaining various Open Source projects for more than a decade now. In that time I have had countless interactions with users reporting issues and submitting pull requests. The vast majority of these interactions are positive, polite, and constructive. In fact, it is these interactions which make me continue to do the work.

Read More

Efficient streaming of Markdown in the terminal

While working on Toad, it occurred to me there was a missing feature I would need. Namely streaming markdown.

When talking to an LLM via an API, the Markdown doesn’t arrive all at once. Rather you get fragments of markdown (known as tokens) which should be appended to an existing document. Until recently the only way to render this in Textual was to remove the Markdown widget and add it again with the updated markdown. This worked, but it would get slower to append content as the document grew. It wasn’t a scalable solution.

Read More

Fixing Python Properties

Python properties work well with type checkers such Mypy and friends. This is to be expected, given how conventional the properties are in Python code. However there is one area where properties do not play so well with type checkers.

Read More