Week in Review: Feb 23 - Mar 1, 2026
This was one of those weeks where everything seemed to happen at once. Infrastructure got serious attention, apps shipped at a pace I didn’t think was possible, and I finally sat down to design the next generation of a custom battery management system. Let me walk through it.
Infrastructure Gets Proper Monitoring
I’ve been running a growing fleet of Docker containers — 32 at last count — and until this week, my approach to monitoring was basically “notice when something breaks.” That changed with the deployment of Uptime Kuma, an open-source status monitoring tool that now watches 23 endpoints: 18 HTTP services and 5 Docker containers directly via a read-only socket mount.
The real win is the notification pipeline. Alerts route through my personal assistant bot’s webhook, which means I get push notifications on my phone within seconds of a service going down. No more discovering at 10 PM that something crashed at noon.
While I was in infrastructure mode, I audited container restart policies. Several were set to no, which meant they’d silently vanish after a host reboot. Plex had been flaky for weeks, and this turned out to be the root cause. I’ve since added a recurring audit check to catch any that drift back.
Automated Backups (Finally)
This one’s embarrassing to admit took this long. I now have a cron job running at 2 AM EST that backs up three databases: Nextcloud’s MariaDB, Leantime’s MariaDB, and Nova’s SQLite. Retention is 7 daily snapshots plus 4 weekly snapshots (kept on Sundays). The whole thing is a single bash script with rotation logic built in.
It’s not glamorous work, but losing a database with no backup is the kind of mistake you only want to make zero times.
Tdarr’s SQLite Meltdown
Speaking of databases — Tdarr, my media transcoding tool, decided to have a crisis. The logs were flooding with SQLITE_CORRUPT errors every 3-6 seconds, and a worker was stuck in an infinite retry loop. The fix involved running REINDEX and VACUUM on the database, deleting corrupt WAL and SHM files, and resetting 2,181 files that had been falsely flagged as “Transcode error” during the corruption event.
Lesson learned: SQLite is incredibly reliable until it isn’t, and WAL mode corruption usually means something interrupted a write. Worth checking after any unexpected shutdown.
App Development at Full Speed
This was a high-output week for apps. The highlights:
The assistant mobile app went through a rapid evolution from v0.8.0 through v1.0.1. Major additions include AMOLED black mode, syntax-highlighted code blocks (30+ languages), a full conversation system with search and export, biometric lock, offline drafts, and suggested follow-ups. The v1.0.0 milestone added reactions, edit/delete, TTS, a conversation drawer, and battery-saving mode. It’s starting to feel like a real product.
On the server side, the assistant bot got multi-user authentication — username-based login with PBKDF2 hashed passwords. This is the prerequisite for opening it up to family members, which is the next step.
Beyond that, I built or updated several other apps this week: a meal planning app with AI integration, updates to a health tracking app, a crime data mapping tool, and a PDF report generator. I also put together an icon pack containing thousands of icons and 25 wallpapers, which was more of a pipeline challenge than a design one.
Verification Systems That Prevent Disasters
One pattern I noticed: I kept running into the same classes of bugs when building APKs. Version mismatches between app.json, package.json, and build.gradle. Lint errors that only surfaced on CI. APKs that crashed on launch because of a missing permission.
So I built an 8-gate verification pipeline for APKs: TypeScript compilation, ESLint, unit tests, version sync check, release build, emulator install-and-launch, and QA checks (size, secrets scan, signing verification). It’s now mandatory before any APK gets distributed.
I also built a parallel 6-gate container verification system for Docker deployments — prerequisites check, code quality, version sync, Docker build, health check, and QA. Both of these codify tribal knowledge that was previously just “things I remembered to check.” Now it’s automated and enforced.
On a related note, I created an app name conflict checker that queries both the Apple App Store and Google Play before development begins. It stamps a .name-verified file so you don’t get 80% through building something only to discover the name is taken.
ESP32 Dashcam BMS v2
This is a project I’m particularly excited about. The dashcam battery management system got a complete rewrite — new hardware, new firmware, new everything.
On the firmware side: A full ESPHome rewrite with a custom I2C driver for the BQ76920 battery monitor IC. The system runs a 4-state machine (idle, charging, discharging, fault) with adaptive charge rate control. It’s much more robust than v1.
On the hardware side: The design uses 12 K2 Energy 26650 LFP cells in a 4S3P configuration, giving about 146Wh of capacity. Everything sits on a single integrated 4-layer PCB inside a passive aluminum enclosure. BOM comes in around $320, which is reasonable for what amounts to a custom UPS for a dashcam.
New Side Project
I started laying the foundation for a game project this week. It’s very early — just the core architecture and asset pipeline — but it’s been a fun change of pace from infrastructure and utility apps. More on this as it develops.
What’s Next
Next week I want to focus on getting the assistant bot’s multi-user support fully tested with family members. The auth is in place, but there’s still work around per-user preferences, notification routing, and making sure one person’s data doesn’t leak to another.
I also need to circle back to Tdarr and make sure the database corruption doesn’t recur. The fix was reactive — I want to add proactive integrity checks to the backup script.
And the BMS v2 PCB design needs to go out for fabrication. The schematic is solid, but I want to do one more review of the thermal design before I commit to a board order.
It was a dense week. The kind where you look back and wonder how it all fit into seven days.
Enjoyed this post?
Subscribe to get notified when I publish new articles about homelabs, automation, and development.
No spam, unsubscribe anytime. Typically 2-4 emails per month.