December Adventure 2023

On 2023-12-01 I've learned about December Adventure. It's a very nice idea (esp. compared to Advent of Code, as I don't like competing).

My December Adventure will be working on Lacre, a Postfix mail filter encrypting incoming mail before it is written to recipient's inbox.

December 2nd

December 3rd

  • I've implemented a tiny key-value store in Python using asyncio streams and email. It's an exercise before I approach something bigger but with similar semantics in Lacre backend.
  • Next, I've written something very similar based on http.server Python package.

December 4th

December 5th

  • I've fixed cron script that I've broken during refactoring. (I should rework its tests too.)
  • I've fixed identity removal.
  • I've added support for -r or –reload flag to import command, which deletes all keys before importing them from GnuPG's pubring.kbx.

December 6th

  • I've written some Python decorators. I suspect reading decorators from the standard library could be enlightening.

December 7th

  • Today I've skimmed some functools code and written another Python decorator. This one emits an auditing event before execution of the decorated function.

December 9th

  • Fixed some minor error-reporting issues. Now when an expired key prevents Lacre from encrypting a message, a short error message is logged instead of a full trace-back.
  • Updated admin CLI documentation to include info about import command and its -r option.
  • Tagged 0.2 RC2.
  • Started working on Rust re-implementation of the Lacre admin's CLI tool. Started by trying to connect to sqlite.

December 10th

  • Fixed misbehaviour when Lacre would bounce messages upon database exception. Now we let admin decide if they want cleartext to be delivered.

December 12th

  • Experimented with clap, a Rust Command Line Argument Parser. Also learned about constants.

December 13th

  • I had a little morning warm-up with Rust. Rust's compiler gives very helpful and detailed error messages!

December 16th

  • I've added 3 new configuration parameters to Lacre's config file, controlling database connection pool. (Read more in Dealing with disconnects section of SQLAlchemy documentation.)

December 17th

  • Learned more about enum Python module, then used it in Lacre.
  • Provided a configuration parameter in Lacre to choose optimistic or pessimistic handling of database connections.

December 19th

  • Added more logging while hunting a bug reported by Muppeth.
  • Lacre admin CLI tool: added -D (–delete) option to queue sub-command.

December 29th

  • Continued learning Rust, this time trying to implement a Brainfuck interpreter.