Blog
Programming, software engineering and computer science, explained from the ground up. Each article starts free to read; the rest needs a free account.
- Security5 min read
How HTTPS and TLS work
A deeper look at TLS, the protocol behind HTTPS: what it guarantees, the TLS 1.3 handshake step by step, key exchange and forward secrecy, certificates and the chain of trust, how browsers check them, Let's Encrypt, and the configuration mistakes to avoid.
- Java and Spring6 min read
How the JVM runs your code
Follow a Java program from source to running machine code: compiling to bytecode, class files, class loading and the class loader hierarchy, bytecode verification, the interpreter and JIT compilers with tiered compilation, memory areas, garbage collection, and tools to look inside, plus how this explains warm-up and startup time.
- Careers5 min read
How to prepare for coding interviews
A practical plan for data structures and algorithms interviews: what companies actually test, the topics in the order to learn them, how to practise so it sticks, how to talk through a problem live, and the mistakes that cost offers.
- Networking5 min read
HTTP caching headers
A practical guide to HTTP caching: Cache-Control directives, freshness and max-age, ETag and Last-Modified validation with conditional requests and 304 responses, Vary, Expires and Pragma, recipes for static assets, HTML, APIs and private data, and how to debug caching in the browser.
- Networking5 min read
HTTP methods and status codes
The vocabulary of every web request: GET, POST, PUT, PATCH and DELETE, which are safe and which are idempotent, and the status codes from 200 to 504 that every API returns, with when to use each.
- Networking4 min read
HTTP vs HTTPS
What changes when a site moves from HTTP to HTTPS: what TLS encrypts and what it does not, how certificates prove a site's identity, the handshake in brief, HSTS and mixed content, and how to switch a site over.
- DevOps5 min read
HTTPS with Caddy and Let's Encrypt
Serve any application over HTTPS with Caddy and free Let's Encrypt certificates: how automatic HTTPS works, installing Caddy, a two-line reverse proxy Caddyfile, several sites and services, Docker Compose, headers, compression and logs, what DNS and firewall settings it needs, rate limits, and troubleshooting certificate errors.
- System design6 min read
Idempotency
Why idempotency matters whenever requests can be retried: what idempotent means, which HTTP methods are idempotent, idempotency keys for payments and orders with a working implementation, idempotent message consumers, database techniques, and the mistakes that cause double charges.
- Programming6 min read
Immutability
Why immutable data makes programs easier to reason about: what immutability means, the bugs shared mutable state causes, immutable values in Java, Python, JavaScript and Kotlin, shallow versus deep immutability, copying with changes, persistent data structures, performance trade-offs, and where mutation still makes sense.
- Setup guides4 min read
Install Docker Desktop on Windows
Install Docker Desktop on Windows 10 or 11 with the WSL 2 backend, check it with your first container, and fix virtualisation, WSL and memory problems.
- Setup guides5 min read
Install GCC on Windows
Get a C and C++ compiler working on Windows: choosing between MSYS2 with MinGW-w64, WSL, and Microsoft's Visual C++ tools, installing GCC through MSYS2's UCRT64 environment, adding it to PATH, compiling and running your first C and C++ programs, debugging with GDB, setting up VS Code, and fixing common errors.
- Setup guides5 min read
Install Git on Windows
Install Git on Windows with the official installer or winget, choose the installer options that matter, set your name and email, set up an SSH key for GitHub, and fix line-ending and credential problems before they bite.
- Setup guides5 min read
Install Homebrew on macOS
Install Homebrew, the macOS package manager, on Apple silicon and Intel Macs: prerequisites, the install script, adding brew to your PATH, installing command-line tools and apps with casks, services, updating and cleaning up, Brewfiles for reproducible setups, and fixing common problems.
- Setup guides4 min read
Install Java on macOS
Install a Java JDK on a Mac with Homebrew or the Temurin installer, on Apple silicon or Intel, set JAVA_HOME with java_home, switch between versions, and fix the "Unable to locate a Java Runtime" message.
- Setup guides4 min read
Install Java on Ubuntu
Install a Java JDK on Ubuntu or Debian with apt, or the Eclipse Temurin repository for the newest LTS, switch between versions with update-alternatives, set JAVA_HOME properly, and fix the usual errors.
- Setup guides5 min read
Install kubectl
Install kubectl on Windows, macOS and Linux, check version compatibility, understand kubeconfig files, contexts and namespaces, connect to local clusters (kind, minikube, Docker Desktop) and cloud clusters (EKS, GKE, AKS), learn the everyday commands, add autocompletion and useful plugins, and fix common errors.
- Setup guides5 min read
Install Maven and Gradle
Install Apache Maven and Gradle on Windows, macOS and Linux, configure JAVA_HOME and PATH, verify the setup, create a first project with each, understand why project wrappers usually make global installs unnecessary, configure proxies and mirrors, and fix common errors.
- Setup guides5 min read
Install MySQL
Install MySQL on Windows, macOS, Ubuntu or Docker: choosing a version, running the installers, securing the installation, connecting with the mysql client and MySQL Workbench, creating a database and user for your application, connecting from code, and fixing common errors.
- Setup guides4 min read
Install Node.js with nvm
Install Node.js with a version manager instead of a one-off installer: nvm on macOS and Linux, nvm-windows on Windows, choosing an LTS, switching versions per project with .nvmrc, global packages, and fixing PATH and permission problems.
- Setup guides5 min read
Install PostgreSQL on Windows
Install PostgreSQL on Windows step by step with the official installer or winget, choose the right options, add psql to PATH, connect with psql and pgAdmin, create a database and user for your app, connect from Java, Python and Node.js, and fix the common problems.