-
-
4 min read
Hands-on command references, configuration patterns, and best practices for the tools a software engineer uses daily.
Docker & Docker Compose
| Resource |
Topics |
| Overview |
Architecture, lifecycle, ecosystem, when to containerize |
| Commands & Fundamentals |
Image/container lifecycle, exec, logs, inspect, system cleanup |
| Dockerfile Best Practices |
Multi-stage builds, layer caching, base images, ARG/ENV, .dockerignore |
| Docker Compose |
Service definitions, profiles, overrides, depends_on, healthchecks |
| Networking & Volumes |
Bridge/host/overlay networks, DNS, named volumes, bind mounts, tmpfs |
| Security & Production |
Non-root, secrets, resource limits, image scanning, production checklist |
| Debugging & Troubleshooting |
Connectivity tests, log analysis, netshoot, compose diagnostics |
Git
| Resource |
Topics |
| Overview |
Object model, three-area workflow, distributed architecture |
| Commands & Fundamentals |
Init, add, commit, push, pull, log, diff, tags, cleanup |
| Branching Strategies |
GitHub Flow, Gitflow, Trunk-Based, merge vs rebase vs squash |
| Commit Conventions |
Conventional Commits, message rules, PR best practices, code review |
| Advanced Workflows |
Interactive rebase, stash, cherry-pick, worktree, submodules |
| Hooks & Configuration |
Pre-commit framework, native hooks, .gitignore, aliases, global config |
| Troubleshooting & Recovery |
Undo, reset, reflog, bisect, conflict resolution |
Linux Terminal
| Resource |
Topics |
| Overview |
Essential Linux terminal commands for daily user tasks |
| Navigation & File Operations |
pwd, ls, cd, mkdir, cp, mv, rm, cat, nano, sudo, chmod, tar |
| Search & Text Processing |
find, grep, rg, sort, uniq, wc, pipes, redirects |
| Processes & System Monitoring |
ps, top, kill, systemctl, journalctl, free, df |
| Network Basics |
ip, ss, ping, curl, wget, ssh, scp, netstat (legacy) |
| Administration & Scripting |
apt, user/group mgmt, .bashrc, bash scripting, cal, date |
Kubernetes (K8s)
| Resource |
Topics |
| Overview |
Architecture, control plane, nodes, Pods, quick reference |
| kubectl Fundamentals |
Commands, contexts, namespaces, output formats, aliases |
| Workloads & Scheduling |
Pods, Deployments, StatefulSets, DaemonSets, Jobs, CronJobs |
| Services & Networking |
ClusterIP, NodePort, LoadBalancer, Ingress, NetworkPolicies |
| Configuration & Storage |
ConfigMaps, Secrets, PVs, PVCs, StorageClasses |
| Helm & Deployment Strategies |
Helm charts, Kustomize, rolling update, canary, blue-green |
| Security & Observability |
RBAC, Pod Security, Prometheus, Grafana, EFK, debugging |
Distributed Tracing
| Resource |
Topics |
| Jaeger — Overview |
OTLP tracing backend, ports, Jaeger vs Phoenix / Langfuse / Tempo |
| Setup & Architecture |
v2 on the OTel Collector, roles, Docker, config file, memory / Badger / Elasticsearch / OpenSearch / Cassandra |
| Sending Traces from Python |
OTel SDK + OTLP exporter, FastAPI and requests instrumentation, env vars, sampling |
| UI & Trace Analysis |
Search, timeline, span details, compare traces, dependency graph, SPM, HTTP API |
| Testing, CI & Troubleshooting |
Tracing pytest runs, traceparent from API tests, span assertions, CI artifacts, pitfalls |
LLM Observability & Tracing
| Resource |
Topics |
| Arize Phoenix — Overview |
OpenTelemetry + OpenInference tracing, datasets, experiments, LLM-as-judge evals |
| Setup & Architecture |
phoenix serve, Docker, Compose + Postgres, ports, projects, auth, env vars |
| Tracing & Instrumentation |
register(), OpenInference instrumentors, manual spans, sessions, users, Collector, annotations |
| Datasets & Experiments |
Datasets from DataFrame / CSV / traces, run_experiment, evaluators, comparisons, prompts |
| Evaluations |
phoenix.evals, built-in metrics, create_classifier, code evals, logging results to spans, judge calibration |
| Testing, CI & Production |
pytest plugin, asserting on spans, CI regression gates, retention, sampling, PII |
| Resource |
Topics |
| Langfuse — Overview |
Traces, sessions, prompt management, datasets, scores and evaluations |
| Setup & Architecture |
Cloud vs self-hosted, web/worker/Postgres/ClickHouse/Redis/S3, Docker Compose, env vars, projects, API keys, RBAC |
| Tracing with the Python SDK |
get_client(), @observe, context managers, propagate_attributes, OpenAI/LangChain/LiteLLM/OTel, flushing, sampling, masking |
| Prompt Management |
Versions, labels, get_prompt, compile, caching, fallback, linking prompts to generations, prompt experiments |
| Datasets & Evaluations |
Datasets from code and traces, run_experiment, evaluators, scores, LLM-as-a-judge, annotation queues, user feedback |
| Testing, CI & Production |
pytest integration, experiments as CI gates, Metrics API, dashboards, retention, PII, production checklist |
| Resource |
Topics |
| MLflow — Overview |
Experiment tracking, GenAI tracing, mlflow.genai.evaluate, prompt and model registry, MLflow vs Phoenix / Langfuse / Jaeger |
| Setup & Architecture |
mlflow server, backend and artifact stores, Docker Compose + Postgres, allowed hosts, basic auth, env vars |
| Experiment Tracking |
Experiments, runs, params, metrics, tags, artifacts, autolog, search_runs filters, comparing runs |
| GenAI Tracing |
mlflow.<flavor>.autolog(), @mlflow.trace, span types, sessions, feedback, OTLP ingest and export |
| Evaluation & Prompts |
Built-in judges, @scorer, make_judge, DeepEval scorers, evaluation datasets, prompt registry |
| Testing, CI & Model Registry |
pytest + DeepEval results per CI run, trace assertions, regression gate vs main, GitHub Actions, aliases, pitfalls |
See also