STUDY SYSTEM GOALS 1. Support consistent and balanced study across multiple subjects 2. Help prioritize what to study when time/energy is available 3. Low friction of usage 4. Apply cybernetic principles to self-directed education NON-GOALS 1. Setting targets for time spent studying 2. Measuring effectiveness of studies 3. Simplicity of set-up for non-technical users 4. Reading mail CORE FEATURES Priority System: - Prioritized list of potential study activities - Separate tracking of reading and exercises - Neglected subjects increase in priority - Balance maintenance between reading and exercises Study health monitoring: - Subject-level algedonic signals indicating consistency and balance between reading and exercises - System-wide algedonic signal indicating balance across subjects IMPLEMENTATION DECISIONS - Client/server to enable consistency across multiple devices - Simple over-the-wire protocol so that future client implementations for different platforms are feasible (e.g. Android app) - TCP with TLS for persistent connection - Client authentication via certificates (mTLS) for simplicity of implementation and security - Server implementation in Erlang/OTP as it's very cool and I want more practise with it - ASN.1/DER for message serialization as it's flexible and reasonably compact and has good Erlang integration - Native Linux client because I hate the web - Client implementation in GTK+Vala because it's boring