Note: this only reflects my personal work in December. Visit the BTC Map Blog for consolidated monthly reports.
Improve Startup Time
I’m gradually moving BTC Map API chat automations from Discord to Matrix. The first experimental Matrix integration was blocking and significantly increased API server startup time (from ~2 seconds to ~10+ seconds). In December, I set up an asynchronous lazy initialization, and it seems to be working well.
Drop Boosts Table
Boosts now use the REST API and can be performed anonymously. That means it’s not a good idea to rely on the old boosts table, which is tied to admin RPC and requires specific fields like an admin user ID. It was causing issues in the internal reporting, so I decided to remove the table entirely. The generic invoice table is sufficient and is already fully integrated into our REST API. Anonymous users can request invoices for sat-walled actions like leaving a comment or boosting a merchant. Once those invoices are paid, we perform the associated actions directly, no extra tables are needed, and we can rely on invoice metadata alone.
RPC Log
We still have a few Discord hooks that fire when sensitive admin RPC calls are made. Since we’re moving from Discord to Matrix, I spent some time reviewing those ad‑hoc notifications and realized our current approach doesn’t scale well.
So I created a dedicated table to log all RPC calls. This enables a few new uses. We can still monitor the log and send Matrix notifications for critical events, but it’s also a fully structured storage that we can expose via the same API. That opens a path to building our own admin web interface.
Storing the log in a structured, platform‑agnostic way is a solid improvement, and it also lets us simplify the code quite a bit.
Health Checks
We’ve always had a hard time tracking whether our most critical systems were actually up. We used to rely on an external “uptime bot”, which caused constant headaches with false positives and sneaky, almost DDoS‑like behavior.
I ended up writing a few scripts that probe the health of our key components. Now if something goes down, the script can send a notification straight to Matrix.
Organize RPC Calls
The rpc module is a mess, so I spent time cleaning it up. The work is far from done, but at least there’s progress!