Latest news 2026-08-27: new blog post "The Private Enemy Third Edition".

Security

The scripts on this site use a function that logs suspicious activity, such as SQL injections or cross-site scripting (XSS). After a certain number of attempts are made by a particular IP, that IP address will be automatically blocked. Any further attempts at accessing the site will result in a 403 forbidden status code. No attempt is made to distinguish between malicious actions and non-invasive pen-testing probes.

Since many IP addresses are dynamically allocated, the blocks are temporary. The minimum duration is 4 days but is longer for repeat offenders and significantly longer for egregious cases.

This is a small site supported by book sales to provide a home page for my books and open source free software. As such, there is no budget available for bounties. If the site is brought down by an attack and can't be restored from either the automated cloud backups or my offline backups, then the site will close but my content on CTAN and GitHub will remain available.

If you would like to contact me (Nicola Talbot) securely, you can use the email formed by the user name security with the Dickimaw Books domain (dickimaw-books.com). The security email address is configured to send and receive messages using OpenPGP end-to-end encryption (e2ee). The public key is listed below and expires on 2027-08-29.

-----BEGIN PGP PUBLIC KEY BLOCK-----

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
=u3j0
-----END PGP PUBLIC KEY BLOCK-----