● Code, cloud & data

Computingdone well, explained better.

Programming, cloud, databases and computing history: notes from a computer scientist, written to be used.

Ansible: configuring many servers in a repeatable wayCron and systemd timers: automating scheduled jobsInfrastructure as code: principles, benefits and first stepsSecrets management: keeping passwords and keys out of codeData analysis with pandas: first steps through a concrete caseGROUP BY in SQL: six common mistakes that distort totalsSpreadsheet or database: knowing when it is time to switchSQLite: when a single-file database is the right choiceCoupling and cohesion: designing modules that are easy to changeNaming things in code: variables and functions that explainSorting algorithms: insertion sort, merge sort and quicksortFrom ARPANET to TCP/IP: how the Internet was born, 1969 to 1983FORTRAN: John Backus and the first successful high-level languageThe Jacquard loom: when punched cards were born for silkAnsible: configuring many servers in a repeatable wayCron and systemd timers: automating scheduled jobsInfrastructure as code: principles, benefits and first stepsSecrets management: keeping passwords and keys out of codeData analysis with pandas: first steps through a concrete caseGROUP BY in SQL: six common mistakes that distort totalsSpreadsheet or database: knowing when it is time to switchSQLite: when a single-file database is the right choiceCoupling and cohesion: designing modules that are easy to changeNaming things in code: variables and functions that explainSorting algorithms: insertion sort, merge sort and quicksortFrom ARPANET to TCP/IP: how the Internet was born, 1969 to 1983FORTRAN: John Backus and the first successful high-level languageThe Jacquard loom: when punched cards were born for silk

Topics

Programming, cloud, databases and computing history: notes from a computer scientist, written to be used.

Featured articles

{ } Programming

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.

4 min read →
☁ Cloud & DevOps

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.

5 min read →
▦ Data & databases

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.

5 min read →
◷ Computing history

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.

5 min read →
{ } Programming

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.

4 min read →
☁ Cloud & DevOps

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.

4 min read →
▦ Data & databases

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.

5 min read →
◷ Computing history

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.

5 min read →
{ } Programming

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.

4 min read →
☁ Cloud & DevOps

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.

5 min read →
▦ Data & databases

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.

5 min read →
◷ Computing history

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.

5 min read →