Blog
Programming, software engineering and computer science, explained from the ground up. Each article starts free to read; the rest needs a free account.
- Setup guides4 min read
Install Python on Windows
Install Python on Windows 10 or 11 from python.org, the Microsoft Store or winget, tick the one box that matters, use the py launcher, avoid the Microsoft Store alias trap, and check pip works.
- Setup guides4 min read
Install the AWS CLI
Install version 2 of the AWS command-line tool on Windows, macOS or Linux, sign it in safely with IAM Identity Center or access keys, check it with your first commands, and use profiles for several accounts.
- Setup guides5 min read
Install the Azure CLI
Install and use the Azure CLI on Windows, macOS and Linux: installation options, signing in with az login, subscriptions and defaults, output formats and JMESPath queries, creating resources, service principals and managed identities for automation, extensions, and troubleshooting.
- Setup guides5 min read
Install the Google Cloud CLI
Install and use the Google Cloud CLI (gcloud) on Windows, macOS and Linux: installation and components, gcloud init and authentication, projects and configurations, application default credentials for code, formatting and filtering output, service accounts and impersonation, gsutil and gcloud storage, and troubleshooting.
- Setup guides5 min read
Install Ubuntu
Install Ubuntu Desktop from start to finish: choosing a version, checking your hardware, making the USB, trying it live, the installer's choices including disk encryption, first steps after installing, drivers, updates, essential developer tools, and keeping the system healthy.
- Setup guides5 min read
Install WSL 2 on Windows
Run a real Linux environment on Windows with WSL 2: one-command installation, choosing a distribution, first setup, moving files between Windows and Linux, VS Code integration, Docker Desktop with WSL, memory settings, and fixes for common problems.
- Programming6 min read
Interfaces vs abstract classes
When to use an interface and when to use an abstract class, explained in Java with notes for C#, Python, TypeScript and Kotlin: what each can contain, single versus multiple inheritance, default and static methods, the template method pattern, sealed types, designing around capabilities, and a clear decision guide with examples.
- Networking5 min read
IP addresses and subnets
IP addressing made clear: the structure of an IPv4 address, subnet masks and CIDR notation, working out a subnet's range by hand, private ranges and NAT, special addresses, splitting a network into subnets as in a cloud VPC, and the basics of IPv6.
- Databases5 min read
Isolation levels
Transaction isolation levels in practice: the anomalies they prevent (dirty reads, non-repeatable reads, phantoms, lost updates and write skew), how read committed, repeatable read and serializable behave in PostgreSQL and MySQL, and how to choose.
- Security6 min read
JAAS: authentication in Java
Java's built-in, pluggable authentication framework: LoginContext, LoginModule, CallbackHandler and Subject, the configuration file and its flags, a working login module, and where JAAS still fits today.
- Java and Spring5 min read
Java collections
A map of the Java Collections Framework: List, Set, Map, Queue and Deque, the main implementations and their costs, which to choose for which job, sorting and iterating, immutable collections, and the mistakes that cause bugs.
- Java and Spring4 min read
Java streams
Process collections declaratively with the Stream API: creating streams, filter, map and sorted, collecting to lists, maps and groups, reducing, primitive streams, Optional results, laziness, and the mistakes that make streams slow or wrong.
- Java and Spring4 min read
JDK vs JRE vs JVM
The three parts of Java that everyone mixes up: what the JVM does with bytecode, what the JRE added around it, what the JDK contains for developers, why the standalone JRE disappeared, and which one to install.
- Java and Spring5 min read
JPA and Hibernate
How JPA and Hibernate map Java objects to database tables: entities and annotations, the persistence context and dirty checking, relationships, lazy and eager loading, the N+1 query problem and its fixes, Spring Data repositories, transactions, and the common pitfalls.
- Python and JavaScript5 min read
JSON explained
Everything a developer needs to know about JSON: the syntax and its six types, common mistakes, parsing and generating JSON in JavaScript, Python and Java, dates, big numbers and other pitfalls, JSON Schema for validation, JSON Lines, querying with jq, and JSON compared with XML and YAML.
- System design5 min read
Kafka explained
How Apache Kafka works and why it is built as a log: topics, partitions and offsets, producers and keys, consumer groups and rebalancing, replication and acknowledgements, retention, and when Kafka is the right tool.
- Security5 min read
Kerberos explained
How Kerberos signs you in once and opens many services without sending your password around: the KDC, tickets, the TGT and service tickets, the three-step exchange, why clocks matter, SPNs and keytabs, and the attacks to know about.
- DevOps5 min read
Kubernetes for beginners
What Kubernetes does and why teams use it, its architecture in plain words, pods, deployments, services, ingress, config maps and secrets, a first deployment with kubectl, and when you probably do not need it.
- Networking6 min read
Latency vs bandwidth
The difference between latency and bandwidth and why it matters for performance: round-trip time and the speed of light, bandwidth and throughput, the bandwidth-delay product, why a faster connection does not make most web pages load faster, measuring both, and techniques that reduce latency such as CDNs, connection reuse, fewer round trips, batching and caching.
- Security5 min read
LDAP explained
The protocol behind company directories: how LDAP organises entries into a tree, what a distinguished name is, how binds and searches work, how to write a search filter, and how to use it safely.