Blog
Programming, software engineering and computer science, explained from the ground up. Each article starts free to read; the rest needs a free account.
- Java and Spring5 min read
Records in Java
Java records explained: concise immutable data carriers with generated constructors, accessors, equals, hashCode and toString, compact constructors for validation, adding methods, static factories, records with generics and interfaces, pattern matching and record patterns, and where records fit with JPA, Jackson and Spring.
- Programming5 min read
Recursion vs iteration
When to solve a problem with recursion and when with loops: how recursion works with base cases and the call stack, the same problems solved both ways, stack depth limits, tail calls, memoisation, converting recursion to iteration with an explicit stack, and how to choose in interviews and real code.
- Databases5 min read
Redis data structures
A practical tour of Redis's types: strings, lists, sets, hashes, sorted sets, streams, bitmaps and HyperLogLog, with the commands, the cost of each, and the real problems each one solves.
- Programming6 min read
Regular expressions
A practical introduction to regular expressions: literals and metacharacters, character classes, quantifiers and greediness, anchors and word boundaries, groups, captures and named groups, alternation, lookarounds, flags, using regex in Python, JavaScript and Java, common recipes, catastrophic backtracking, and when not to use regex.
- Databases6 min read
Replication
How database replication keeps copies of data on several servers: primaries and replicas, synchronous and asynchronous replication, replication lag and read-your-writes, failover and split brain, multi-primary and leaderless designs, PostgreSQL and MySQL in practice, and what replication does not replace.
- Networking4 min read
REST APIs explained
What makes an API RESTful: resources and URLs, HTTP methods as verbs, statelessness, representations in JSON, status codes, pagination, filtering, versioning and errors, with a worked example and the design mistakes to avoid.
- Setup guides5 min read
Run Redis locally
Get Redis running on your machine with Docker, Homebrew on macOS, apt on Ubuntu, or WSL on Windows; connect with redis-cli and RedisInsight, try the basic commands, enable persistence and a password, connect from Java, Python and Node.js, and fix common problems.
- System design6 min read
Sagas and distributed transactions
How to keep data consistent when one business operation spans several services: why a single ACID transaction no longer works, two-phase commit and its problems, the saga pattern with compensating actions, choreography and orchestration, the outbox, idempotency, and designing for failure.
- Security5 min read
SAML and single sign-on
How SAML lets one company login open many applications: identity providers and service providers, assertions, the redirect and POST bindings, SP- and IdP-initiated flows, metadata and certificates, and how SAML compares with OpenID Connect.
- System design5 min read
Scalability basics
What it means for a system to scale, vertical vs horizontal scaling, stateless servers and load balancers, caching, database read replicas and sharding, queues, and how to find the bottleneck before you fix the wrong thing.
- System design6 min read
Search autocomplete
Designing search autocomplete (typeahead): requirements and latency budget, tries and top-k suggestions per prefix, building suggestions offline from query logs, serving from memory with caching, sharding by prefix, debouncing and client caching, ranking, personalisation and freshness, typo tolerance, and filtering unsafe suggestions.
- Security6 min read
Secrets management
How to handle passwords, API keys, certificates and tokens across development and production: what counts as a secret, why environment variables and config files are only part of the answer, secret managers such as Vault and cloud services, injecting secrets into apps and Kubernetes, dynamic and short-lived credentials, rotation, and preventing leaks.
- Programming5 min read
Semantic versioning
How semantic versioning works and why it matters: MAJOR.MINOR.PATCH and what counts as a breaking change, pre-release and build metadata, the special meaning of 0.x versions, version ranges in npm, Maven and Python, lock files, deprecation policies, automating versions with Conventional Commits, and versioning APIs and applications.
- Security6 min read
Sessions vs tokens
Server-side sessions and self-contained tokens such as JWTs compared: how each works, revocation, scaling, storage in the browser, XSS and CSRF exposure, access and refresh tokens, the backend-for-frontend pattern, mobile apps and APIs, and a clear recommendation for typical web applications.
- Setup guides4 min read
Set the PATH variable on Windows
What PATH is and why "is not recognized as an internal or external command" happens, how to view and change PATH safely on Windows 10 and 11, user vs system variables, order, and the setx trap.
- Setup guides5 min read
Set up IntelliJ IDEA
Install IntelliJ IDEA and set it up for Java: choosing the right edition, configuring a JDK, creating or importing Maven and Gradle projects, running and debugging, the refactorings and shortcuts that matter most, Git integration, and settings worth changing.
- Setup guides5 min read
Set up VS Code for programming
Install Visual Studio Code and set it up properly for Python, Java, C, C++ and JavaScript: the extensions worth installing, settings for formatting on save, the integrated terminal, debugging with breakpoints, Git, and the shortcuts that save the most time.
- Databases5 min read
Sharding
How sharding splits one database across many servers: when you actually need it, choosing a shard key, range, hash and directory-based sharding, routing queries, cross-shard queries and transactions, rebalancing, hot spots, and the databases that shard for you.
- Programming5 min read
Singleton and factory patterns
Two of the most used and most misused design patterns: what a singleton is, the thread-safe ways to write one and why it is often a smell, and the simple factory, factory method and abstract factory, with Java examples and when each earns its place.
- Programming5 min read
SOLID principles
The five SOLID principles of object-oriented design, each explained with a small before-and-after example, what problem it prevents, and when following it too strictly makes code worse.