Topics
Programming, cloud, databases and computing history: notes from a computer scientist, written to be used.
Programming
Languages, Git, testing, debugging, algorithms and code quality explained with real examples.
Cloud & DevOps
Containers, CI/CD, infrastructure as code, backups, observability and cloud costs.
Data & databases
SQL, modelling, indexes, transactions, NoSQL and data quality, from spreadsheets upwards.
Computing history
Machines, people and ideas that built computing, from Pascal to the Web.
Featured articles
Logging in code: levels, context and what never to record
How to write useful logs in your code: severity levels, messages with context, structured JSON logs and data never to record, with Python examples.
Ansible: configuring many servers in a repeatable way
How agentless Ansible works over SSH: inventory, playbooks, idempotent modules, handlers, roles and variables, with an example that sets up a web server.
Transactions and ACID properties explained with a bank transfer
Atomicity, consistency, isolation and durability: what a transaction guarantees, how to use BEGIN and COMMIT, and which code mistakes to avoid.
Ada Lovelace and Note G: the first program in history
Who Ada Lovelace was, how her Notes on the Analytical Engine came about, and why Note G on the Bernoulli numbers is regarded as a genuine program.
Concurrency in Python: threads, processes and asyncio compared
Threads, processes and asyncio explained: concurrency versus parallelism, I/O-bound and CPU-bound work, the GIL and how to choose the right approach.
Cloud snapshots and backups: why they are not the same thing
How disk and VM snapshots differ from real cloud backups: data consistency, separation from the account, immutability and long-term retention.
Backing up a database: logical dumps, physical copies and restore
Why copying a running database's files is not enough, logical dumps versus physical backups, point-in-time recovery and how to actually test your restores.
From Boole to Shannon: how logic became a circuit
George Boole's algebra and Claude Shannon's 1937 thesis: how the laws of logical thought became circuits built first from relays, then from transistors.
Git explained properly: commits, branches and merges
Git's core concepts explained clearly: staging area, commits, branches, merges and remotes, with the essential commands you need for everyday work.
Docker Compose: running multiple containers from one file
How to use Docker Compose to describe an app, its database and helper services in one YAML file: networks, volumes, variables and production use.
GROUP BY in SQL: six common mistakes that distort totals
WHERE or HAVING, ungrouped columns, averages of averages, inflated counts and dates with times: the typical mistakes in SQL aggregations and fixes.
GNU and Linux: the story of free software from Stallman to Torvalds
The 1983 GNU project, the GPL licence, the 1991 announcement of Linux and the birth of open source in 1998: how free software came to run the servers.