My views on some Python LSP servers in GNU Emacs (as of mid 2026)

Some languages have to make do with one LSP server.By contrast, Python has an embarrassment of riches; I know of atleast five modern LSP servers for it. I've recently been experimentingwith some of them in GNU Emacs, specifically Eglot , so before I forget I want tonote down my views. The five Python things with LSP servers that Ibelieve are modern and current are python-lsp-server ('pylsp'),Facebook's pyrefly , Astral's ty , Microsoft'


Anti-robot techniques can be nice but the problem is, they're not static

I've recently come up with what I expect would be a quite goodanti-robot, anti-crawler tactic, which I will give the snappy labeland summary of "robots don't POST". Simply require a HTTP cookieto see your web pages and then if visitors don't have the cookie,put up an interstitial page with a HTML form that requires them toPOST it to get the cookie. All the form need is a "click me to getyour entrance cookie", because


An idea: user level WireGuard for UDP based encryption and authentication

In some environments, you want to connect programs together withmutual authentication and encryption of their traffic (so each endcan trust the other and the traffic is immune to easy eavesdropping).If the programs are talking to each other over TCP, there's a welldeveloped solution for this in the form of mutual TLS (mTLS) (althoughyou'll probably get to enjoy the fun of running your own privateCertificate Authority). But if you're using UDP, things are lessclear. When this


How our environment still needs the security boundary of Unix logins

In a comment on this recent entry ,I was asked if we still consideredUnix logins to be a serious security boundary. This is a sensiblequestion; there are a horde of Linux local privilege escalationvulnerabilities going around right now (and one FreeBSD one forspice), and in general (some) security people have been saying foryears that once an attacker had local code execution, the game wasover. Our answer is that yes, we consider it a serious securityboundary, and if that situation ever changed


My views on Flymake and Flycheck in GNU Emacs (as of mid 2026)

One of the divisions in GNU Emacs people is between using Flymake ,which is built into GNU Emacs and is well supported by other standardGNU Emacs packages such as Eglot ,and using Flycheck . I've used Flycheckfor a long time ( cf ) and recently triedusing Flymake , which has given me some pragmaticopinions for my own usage.

(For non GNU Emacs people, Flymake and Flycheck both exist to present(and to some extent detect) 'diagnostics' about your code or whateverfile you're


Notes on respectfully getting a personal copy of a website's contents

Suppose, hypothetically, that you want to have a personal copy of thecontent of some website that you feel is important (to you). There areperfectly good reasons to want such a copy; websites go away all thetime on the Internet, and not everyone is online all of the time. It'sgenerally possible to do this (and it's certainly possible to do thiswith Wandering Thoughts ), but there's some things thehypothetical you is going to more or less need to do


Unix has been changing, but in places where I don't see it

For reasons beyond the scope of this entry , I've wound upthinking about how stable or unstable the Unix landscape has been'recently' (which means for more than a decade, and especially ascompared with the 1990s and early 00s). I've written about aspects ofthis before, such as the fading out of multi-architecture Unixenvironments . In thinking about it moreafter my Fediverse post, I've come to feel that the Unix environmenthas still been


Notes about reading messages with the Python email packages

I have a long standing personal program to display MIME formattedemail messages in the terminal in a sensible way (it was mentioned in this old entry on my email tools and its comments ). For a long time this was a Python 2program, using the Python 2 version of the email package . Recently, I movedthis program to Python 3 as part of my sudden enthusiasm for Python3 conversions , using the Python 3 version of email and itssub-packages. In the process I have wound up with some


The hardware needs of our mail system (as of mid 2026)

In a comment on my entry on universities, email, and the issues ofrunning things in house , Imentioned that our departmentalemail system has a non-trivial cost in hardware alone to keep going.To better illustrate that, I'll describe all of the servers that ouremail system currently requires (becauseit's more than one). Some of these servers exist for historicalreasons and may go away at some point, but many of them don't.

Currently, we have:

  • A server

Unicode and Emoji in terminals, or my simple but difficult wish

On the Fediverse, I had a simple sounding wish :

This is my face that I need a simple pagination program for Unix(show a page, pause, hit CR to show the next page) that is Unicodeand emoji aware, so that it knows how long lines with them are. AFAIKless can't be used for this when I don't want it to ever clear thescreen, just to keep printing the next page for however long.

(... because you have to know how