Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
projects:decadv:2023 [2023/12/03 10:41] – add Dec 3: key-value store pfmprojects:decadv:2023 [2023/12/30 00:44] (current) – add Dec 29: rust cont. pfm
Line 1: Line 1:
 ====== December Adventure 2023 ====== ====== December Adventure 2023 ======
  
-Yesterday I've learned about [[https://eli.li/december-adventure|December Adventure]]. It's a very nice idea (esp. compared to Advent of Code, as I don't like competing).+On 2023-12-01 I've learned about [[https://eli.li/december-adventure|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:overview|Lacre]], a Postfix mail filter encrypting incoming mail before it is written to recipient's inbox. My //December Adventure// will be working on [[:lacre:overview|Lacre]], a Postfix mail filter encrypting incoming mail before it is written to recipient's inbox.
Line 17: Line 17:
  
   * 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.   * 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 [[https://docs.python.org/3/library/http.server.html|http.server]] Python package.
 +
 +===== December 4th =====
 +
 +  * I've added support for TTL to my tiny key-value store, learning how to use [[https://docs.python.org/3/library/collections.html#collections.namedtuple|named tuples]] and [[https://docs.python.org/3/library/asyncio-eventloop.html#scheduling-delayed-callbacks|delayed callbacks with asyncio]].
 +
 +===== 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 [[https://docs.python.org/3/reference/compound_stmts.html#function-definitions|decorators]]. I suspect reading decorators from the standard library could be enlightening.
 +
 +===== December 7th =====
 +
 +  * Today I've skimmed some [[https://docs.python.org/3/library/functools.html|functools]] code and written another Python decorator. This one emits an [[https://docs.python.org/3/library/audit_events.html|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 [[https://crates.io/crates/clap|clap]], a Rust //Command Line Argument Parser//. Also learned about [[https://doc.rust-lang.org/rust-by-example/custom_types/constants.html|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 [[https://docs.sqlalchemy.org/en/20/core/pooling.html#dealing-with-disconnects|Dealing with disconnects]] section of SQLAlchemy documentation.)
 +
 +===== December 17th =====
 +
 +  * Learned more about [[https://docs.python.org/3/library/enum.html|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 [[wp>Brainfuck]] interpreter.