# Software Engineering Wiki

> Practical commands, troubleshooting guides and code snippets for software and infrastructure engineers.

Every page below is plain Markdown at the linked URL. Replace `index.md` with nothing to get the HTML page, which is the canonical URL to cite. Full text of all guides in one file: https://www.wiki.jodisand.me/llms-full.txt. Structured index with headings and anchors: https://www.wiki.jodisand.me/pages.json. Human search: https://www.wiki.jodisand.me/search/?q=<terms>.


## Linux

- [Bash](https://www.wiki.jodisand.me/bash/index.md): Write Bash scripts that survive spaces, empty values and failures: quoting, strict mode, parameter expansion, arrays, traps and debugging.
- [systemd](https://www.wiki.jodisand.me/systemd/index.md): Inspect and debug services, query the journal, write and override units, schedule timers and apply cgroup resource limits with systemd.
- [jq](https://www.wiki.jodisand.me/jq/index.md): Select, filter, reshape and aggregate JSON with jq, pass shell values in safely and emit output that other shell tools can consume.
- [Linux performance](https://www.wiki.jodisand.me/linux-performance/index.md): Find whether CPU, memory, disk or network is the bottleneck on a Linux host with a first-minute checklist, the USE method and per-resource tools.
- [iproute2](https://www.wiki.jodisand.me/iproute2/index.md): Diagnose and configure Linux links, addresses, routes, policy routing, namespaces, tunnels, bridges and sockets with ip, ss, bridge and tc.
- [tmux](https://www.wiki.jodisand.me/tmux/index.md): Keep shells alive across SSH drops, split a terminal into panes, copy text without a mouse and script sessions from Bash.
- [Vim](https://www.wiki.jodisand.me/vim/index.md): Edit with operators, motions and text objects, run substitutions over ranges, record macros, manage buffers and windows, and fix paste, swap and startup problems.
- [grep, sed and awk](https://www.wiki.jodisand.me/text-processing/index.md): Filter, edit and summarise text from the shell with grep, sed, awk, sort, uniq, cut, tr, paste, column and xargs, and build log-analysis pipelines that hold up.
- [Regular expressions](https://www.wiki.jodisand.me/regex/index.md): Write patterns that match what you mean across grep, PCRE, Go, Python and JavaScript, avoid catastrophic backtracking and test them from the shell.
- [Files and directories](https://www.wiki.jodisand.me/files/index.md): Find, copy, sync, archive and watch files on Linux with find, fd, rsync, tar, zstd, du, lsof and inotifywait, and handle permissions and hostile filenames safely.
- [Disks and storage](https://www.wiki.jodisand.me/storage/index.md): Partition, format, mount, encrypt and grow Linux block storage with lsblk, parted, LVM, ext4, XFS, Btrfs, mdadm and cryptsetup, and diagnose full or slow disks.
- [Users, permissions and SELinux](https://www.wiki.jodisand.me/users/index.md): Manage accounts, groups and sudo rules, read and fix file modes, ACLs and capabilities, and decode SELinux denials on Fedora and RHEL.
- [firewalld, nftables and iptables](https://www.wiki.jodisand.me/firewall/index.md): Open, forward, NAT, rate-limit and log traffic on Linux with firewalld zones and rich rules, native nftables rulesets, and iptables translation, without breaking containers.
- [tcpdump and Wireshark](https://www.wiki.jodisand.me/tcpdump/index.md): Capture the right packets with BPF filters, read tcpdump output, capture in containers and over SSH, script with tshark, and diagnose retransmissions, MTU, TLS and DNS faults in Wireshark.

## Kubernetes

- [Kubernetes](https://www.wiki.jodisand.me/kubernetes/index.md): Inspect workloads with kubectl, understand the object model behind them and find why a pod is not running, ready or reachable.
- [Helm](https://www.wiki.jodisand.me/helm/index.md): Render, install, upgrade and roll back Helm releases, and understand the template and values behaviour behind most chart surprises.
- [Argo CD](https://www.wiki.jodisand.me/argocd/index.md): Diagnose Argo CD Applications that will not sync or stay healthy, and control drift, sync order, pruning and multi-tenant access.
- [Gateway API](https://www.wiki.jodisand.me/gateway-api/index.md): Configure GatewayClass, Gateway and Route objects, know which team owns each, and find why a route receives no traffic.
- [Cilium](https://www.wiki.jodisand.me/cilium/index.md): Understand Cilium's identity-based policy and eBPF datapath, then trace dropped or misrouted flows with cilium-dbg and Hubble.

## Containers and IaC

- [Docker](https://www.wiki.jodisand.me/docker/index.md): Run, build, inspect and clean up containers, images, volumes and networks on a single Docker daemon, and diagnose containers that exit or cannot connect.
- [Docker Compose](https://www.wiki.jodisand.me/docker-compose/index.md): Run and debug multi-container stacks with Compose v2: commands, the compose.yaml keys that matter, and how recreation, dependencies and overrides behave.
- [Terraform](https://www.wiki.jodisand.me/terraform/index.md): Plan and apply safely, structure modules and variables, refactor and repair state, and recover from drift, lock and provider errors in Terraform.
- [Ansible](https://www.wiki.jodisand.me/ansible/index.md): Write idempotent Ansible playbooks, resolve inventory and variable precedence, dry-run with check mode, and debug plays that fail or change the wrong thing.
- [AWS](https://www.wiki.jodisand.me/aws/index.md): Resolve AWS CLI v2 credentials and profiles, filter output, and run and debug common EC2, S3, IAM, logs, RDS, Lambda and EKS operations.
- [Podman](https://www.wiki.jodisand.me/podman/index.md): Run rootless containers and pods with Podman, mount volumes past SELinux, and manage them as systemd services with Quadlet and auto-update.
- [GitHub Actions](https://www.wiki.jodisand.me/github-actions/index.md): Write GitHub Actions workflows that are fast, least-privilege and hard to exploit: triggers, matrices, caching, reusable workflows, OIDC and debugging failed runs with gh.
- [Make and just](https://www.wiki.jodisand.me/make/index.md): Write Makefiles that rebuild only what changed and justfiles that run project commands: rules, variables, pattern rules, parallel builds and the tab bugs.

## Observability

- [Prometheus](https://www.wiki.jodisand.me/prometheus/index.md): Write PromQL for incidents, read counters and histograms correctly, write alerting and recording rules, and keep series cardinality under control.
- [OpenTelemetry](https://www.wiki.jodisand.me/opentelemetry/index.md): Configure OpenTelemetry SDKs and Collector pipelines, propagate trace context, choose a sampling strategy and find where telemetry is lost.
- [Grafana and Loki](https://www.wiki.jodisand.me/grafana/index.md): Provision Grafana datasources, dashboards and alerts as code, drive it through the HTTP API, and ship, query and tune logs in Loki with LogQL and logcli.

## Networking

- [DNS](https://www.wiki.jodisand.me/dns/index.md): Resolve and trace names with dig and resolvectl, read the answer, reason about TTLs and caching, and debug search domains and Kubernetes DNS.
- [HTTP and curl](https://www.wiki.jodisand.me/http/index.md): Use curl to test HTTP endpoints, break request time into DNS, TCP, TLS and server phases, script calls safely, and read what status codes mean.
- [SSH](https://www.wiki.jodisand.me/ssh/index.md): Configure OpenSSH clients and servers, manage keys and agents, forward ports through bastions and read the debug output that names the real failure.
- [SCP](https://www.wiki.jodisand.me/scp/index.md): Copy files over SSH with scp, understand its SFTP-based transfer since OpenSSH 9.0, and know when rsync, sftp or tar is the better tool.
- [Cisco IOS](https://www.wiki.jodisand.me/cisco/index.md): Diagnose and configure Cisco IOS and IOS XE devices: show commands, interfaces, VLANs, OSPF, BGP, ACLs and changes that roll back if they lock you out.
- [Network automation](https://www.wiki.jodisand.me/netauto/index.md): Collect device state, parse CLI output into data and push configuration changes safely with Netmiko, NAPALM, Nornir and Ansible.

## Proxies and routing

- [Traefik](https://www.wiki.jodisand.me/traefik/index.md): Configure Traefik v3 entrypoints, routers, middlewares and services from Docker, Kubernetes or files, and debug a route that does not match.
- [Squid](https://www.wiki.jodisand.me/squid/index.md): Run and debug a Squid forward proxy: http_access rule order, ACLs, caching, authentication, parent proxies and access.log analysis.
- [Nginx](https://www.wiki.jodisand.me/nginx/index.md): Configure Nginx as a reverse proxy, TLS terminator and static file server, understand which server and location handle a request, and read the logs when it returns 502.
- [Caddy](https://www.wiki.jodisand.me/caddy/index.md): Write a Caddyfile that proxies, serves files and issues its own certificates, run Caddy in a container, drive it through the admin API and fix ACME and upstream failures.

## Data

- [PostgreSQL](https://www.wiki.jodisand.me/postgresql/index.md): Diagnose a slow or blocked PostgreSQL database: psql, query plans, indexes, locks, vacuum and bloat, pooling, replication and backups.
- [Redis](https://www.wiki.jodisand.me/redis/index.md): Inspect and fix a slow or full Redis: data structure costs, eviction, persistence, keyspace scans, locks, replication and cluster checks.
- [Elasticsearch](https://www.wiki.jodisand.me/elasticsearch/index.md): Check cluster health, fix unassigned shards, write mappings, queries and aggregations, and tune slow search or indexing in Elasticsearch.
- [SQL](https://www.wiki.jodisand.me/sql/index.md): Write correct SQL across PostgreSQL, MySQL and SQLite: joins, window functions, CTEs, upserts, indexes, isolation levels, NULL rules and reusable queries.
- [SQLite](https://www.wiki.jodisand.me/sqlite/index.md): Use SQLite well: the sqlite3 shell, type affinity, WAL mode and pragmas, locking, JSON and FTS5, backups, tuning, and safe access from Go and Python.
- [MySQL and MariaDB](https://www.wiki.jodisand.me/mysql/index.md): Operate MySQL 8.4 and MariaDB 11.4: client, users and grants, InnoDB, EXPLAIN, slow log, indexes, dumps and mariadb-backup, replication, my.cnf and lock diagnosis.
- [Kafka](https://www.wiki.jodisand.me/kafka/index.md): Operate Apache Kafka: topics, partitions and consumer groups, the shell tools, offset resets, lag, retention, compaction, producer and consumer tuning, and what to check when it misbehaves.

## Security and identity

- [TLS and certificates](https://www.wiki.jodisand.me/tls/index.md): Inspect and verify certificate chains with OpenSSL, issue keys and CSRs, install trust anchors, configure servers and diagnose failed TLS handshakes.
- [Vault](https://www.wiki.jodisand.me/vault/index.md): Operate HashiCorp Vault: seal state, tokens, auth methods, policies, KV, dynamic credentials, PKI and transit, and why a request is denied.
- [FreeIPA / Red Hat IdM](https://www.wiki.jodisand.me/idm/index.md): Identity, Kerberos, host enrolment, DNS and certificates in one domain, with the commands for enrolment, RBAC and replication problems.
- [Red team](https://www.wiki.jodisand.me/redteam/index.md): Technique notes for authorised offensive testing, arranged by ATT&CK phase, with the tooling and the telemetry each step leaves behind.

## Virtualisation

- [Proxmox VE](https://www.wiki.jodisand.me/proxmox/index.md): Run VMs and containers on Proxmox VE from the shell: qm, pct, pvesm, pvecm, vzdump, cloud-init templates, SDN and the API, plus fixes for locked guests and lost quorum.
- [libvirt and KVM](https://www.wiki.jodisand.me/libvirt/index.md): Run KVM guests with virsh and virt-install: cloud-image builds with cloud-init, snapshots, storage, NAT and bridged networking, PCI passthrough, live migration and the usual failures.

## Languages

- [Go](https://www.wiki.jodisand.me/go/index.md): Idioms for errors, concurrency and interfaces, the toolchain commands worth memorising, and the traps that survive code review.
- [Python](https://www.wiki.jodisand.me/python/index.md): Write operational Python scripts that fail safely: subprocess, paths, logging, HTTP, configuration, concurrency, uv packaging and troubleshooting.
- [Rust](https://www.wiki.jodisand.me/rust/index.md): Ownership and borrowing in practice, error handling, async, and the cargo commands that matter day to day.
- [TypeScript](https://www.wiki.jodisand.me/typescript/index.md): Type-check TypeScript with tsc 7, narrow and validate untrusted data, pick tsconfig flags that catch real bugs, and fix common compiler errors.

## Practice

- [Git](https://www.wiki.jodisand.me/git/index.md): Inspect history, undo changes safely, rebase and resolve conflicts, recover lost work, and understand the object model behind each Git command.
- [System design](https://www.wiki.jodisand.me/design/index.md): Latency and capacity numbers, scaling, caching, load balancing, resilience, data and API decisions, and the failure mode each one introduces.
- [Testing](https://www.wiki.jodisand.me/testing/index.md): Choose the right test layer, write fast deterministic tests, use fakes and fixtures, and run, isolate and de-flake tests in pytest, Go and Vitest.
- [LLM APIs](https://www.wiki.jodisand.me/llm-apis/index.md): Call the Anthropic and OpenAI APIs: models, streaming, tool use, structured output, caching, rate limits, errors and key handling.

## Scripts

- [Shell one-liners](https://www.wiki.jodisand.me/oneliners/index.md): Copy-pasteable one-line commands for files, processes, disk, network, DNS, systemd, Git, containers, Kubernetes, SSH, TLS, JSON and archives on a Linux host.
- [Operations scripts](https://www.wiki.jodisand.me/scripts/index.md): Complete Bash and Python scripts for disk alerts, certificate expiry, health checks, backups, cleanup, audits, metrics export and parallel SSH, ready to drop into cron or a timer.

## Optional

- [Snippets](https://www.wiki.jodisand.me/snippets/index.md): Small third-party code examples by language, without validation or error handling.
- [C# snippets](https://www.wiki.jodisand.me/snippets/csharp/index.md): Small C# methods for collections, strings, maths and dates, each with a short explanation and an example call.
- [Go snippets](https://www.wiki.jodisand.me/snippets/go/index.md): Small Go functions for slices, strings and maths, each with a short explanation and an example call.
- [JavaScript snippets](https://www.wiki.jodisand.me/snippets/javascript/index.md): Small JavaScript functions for arrays, objects, strings, dates and the browser DOM, each with a short explanation and an example call.
- [Python snippets](https://www.wiki.jodisand.me/snippets/python/index.md): Small Python functions for lists, dictionaries, strings, maths and dates, each with a short explanation and an example call.
- [React snippets](https://www.wiki.jodisand.me/snippets/react/index.md): React components such as accordions, modals and data tables, and hooks for state, events and browser APIs, each with an example use.

