Systems Projects Level 5-6¶
These projects work close to the operating system and infrastructure — the kind of tooling that keeps systems running and observable. They exercise the Embedded & Systems and Performance material.
1. System monitor + alerter¶
Goal: collect CPU/memory/disk metrics, alert when thresholds are crossed.
- Skills:
psutil, threshold logic, notifications, running as a service. - Minimal version: print metrics on a loop, alert when CPU > 90%.
- Stretch: export to Prometheus, a dashboard, consecutive-breach logic, run as a systemd service. Directly builds the System Monitoring example out into a real tool.
2. Log analyzer / aggregator¶
Goal: parse log files, extract structured data, and report patterns (error rates, top offenders).
- Skills: file I/O, regex,
collections, maybe a small web view. - Minimal version: count log levels (ERROR/WARN/INFO) in a file.
- Stretch: tail live logs, time-window analysis, alert on error spikes, handle multiple formats. Great use of Automation & Scripting.
3. A profiler / benchmark harness¶
Goal: a tool that times and compares implementations, reporting stats.
- Skills:
time.perf_counter, statistics, decorators, reporting. - Minimal version: a decorator that times a function and prints the result.
- Stretch: multiple runs with percentiles, comparison tables, memory tracking, plots. Applies the Profiling topic.
4. A CLI dev-ops tool¶
Goal: a polished command-line tool that automates a real workflow (deploys, backups, environment setup).
- Skills:
argparse/Click/Typer,subprocess, config files, good UX and error messages. - Minimal version: one subcommand that does something useful with clear
--help. - Stretch: multiple subcommands, config-driven, dry-run mode, packaged for
pip install. See CLI Tools and Packaging.
5. Config-drift detector¶
Goal: compare a system's actual config against a desired spec and report differences.
- Skills: parsing config, set/diff logic, idempotency thinking.
- Minimal version: diff two config files and print add/remove.
- Stretch: apply changes, multiple hosts, git-backed desired state. This generalizes the tested diff from Networking Automation.
6. A tiny service supervisor¶
Goal: start, monitor, and restart child processes if they die (a mini process manager).
- Skills:
subprocess, signals, health checks, graceful shutdown. - Minimal version: launch a process and restart it if it exits.
- Stretch: multiple processes, config file, restart backoff, log capture. Teaches the mechanics behind systemd/supervisord.
Why systems projects are valuable¶
They force you to deal with the messy real world: processes, signals, files, the OS, failure. This "ops-aware" skill set — building tools that run unattended, observe systems, and recover from failure — is exactly what distinguishes a developer who can operate software from one who can only write it.
Make it run unattended
A systems tool's real test is running for days without you watching. Add logging (Automation & Scripting), handle SIGTERM for clean shutdown, and make it recover from transient errors. That robustness is the whole point.
For the frontier, see Research Projects.
💬 Discussion
Have a question about this topic? Found an error? Share your thoughts below.