Intro
Quick reference notes collected while working on embedded systems, backend services and developer tooling. Every page is organised the same way: the commands and settings used most often come first, background explanations and edge cases come last.
Pages
| Page | What it covers |
|---|---|
| Git | Everyday branch, tag and upstream workflows |
| Linux | System admin, packages, networking, SSH, commands, TLS |
| Tools | IDE setup, shortcuts and known issues |
| Python | Environments, common commands, notable libraries |
| Java | Arthas diagnostics for running JVMs |
| Spring Boot | Configuration, security, OAuth 2.0, Flyway, REST design |
| Database | PostgreSQL, MariaDB, MongoDB, Redis, SQLite, access control |
| C++ | MSYS2 + CMake toolchain on Windows, compiler flags |
| ESP32 | Boards, AT firmware, Arduino projects, signed OTA |
| CMSIS | CMSIS-RTOS2 kernel API notes |
| STM32 MCU | Cortex-M: startup, clocks, MPU, cache, interrupts, flash, boards |
| STM32 MPU | Cortex-A (STM32MP): boot chain and OpenSTLinux Yocto |
| Electronics | Memory types, PLL, serial bus comparison |
| Algorithm | Data-flow problems such as FIFO underrun |
| Security | PKI, code signing, SignServer and EJBCA |
Conventions
- Shell blocks are POSIX
shunless the block states otherwise. - Placeholders are written in upper case, for example
BRANCH_NAME. - Values that depend on the specific MCU or board are called out explicitly; always confirm them against the reference manual for your part.