// knowledge base

Developer
Hub

A curated reference on software engineering, techniques, patterns, safety, performance, and the architectural decisions that define how systems age.

01

Programming Techniques

Methods and approaches for writing expressive, precise code, the craft behind the output.

Metaprogramming

Code that reads, generates, or transforms other code at runtime or load-time.

Recursion & Tail Recursion

Solving problems by reducing them to simpler versions of themselves, and how to do it without blowing the stack.

Higher-Order Functions

Functions that take other functions as arguments or return them, enabling powerful abstraction.

Closures & Lexical Scope

How functions capture their surrounding environment and why this matters for encapsulation.

Memoization & Dynamic Programming

Trading memory for speed by caching the results of expensive computations.

Pattern Matching

Destructuring and dispatching on data shape rather than explicit branching.

Lazy Evaluation

Deferring computation until the result is actually needed.

Currying & Partial Application

Transforming a multi-argument function into a chain of single-argument functions.

Generators & Iterators

Functions that can pause execution and yield values one at a time.

Decorators & Annotations

Wrapping or augmenting functions, methods, and classes without modifying their source.

Monads & Functors

Composable containers that sequence computations while managing context (errors, async, nulls).

Immutability

Treating data as values that never change in place, only replaced with new versions.

Reflection & Introspection

A program examining and modifying its own structure at runtime.

Code Generation

Automating the creation of boilerplate or repetitive code from templates or specs.

Continuation-Passing Style

Encoding control flow explicitly by passing the "rest of the computation" as a function argument.

02

Types of Programming

The paradigms and mental models that shape how we decompose and reason about problems.

04

Safety

Security principles and defensive practices that protect systems, data, and users from harm.

Authentication & Authorization

Verifying identity and enforcing what authenticated users are permitted to do.

Input Validation & Sanitization

Never trusting input at the boundary, validating shape, type, and intent before processing.

SQL Injection Prevention

Parameterised queries, prepared statements, and why string interpolation in SQL is never acceptable.

XSS & CSRF Protection

Preventing scripts from being injected into pages and cross-site requests from being forged.

Secrets Management

Keeping credentials, API keys, and tokens out of source control and away from the logs.

Rate Limiting & Brute-Force Defence

Throttling requests to protect endpoints from automated abuse.

Dependency Auditing

Keeping the supply chain clean, knowing what your dependencies do and flagging known vulnerabilities.

Encryption at Rest & in Transit

Ensuring data is unreadable without the correct key, whether stored or moving over the wire.

Principle of Least Privilege

Granting only the minimum permissions required for a component or user to do its job.

Security Headers

HTTP response headers (CSP, HSTS, X-Frame-Options) that enforce browser-level protections.

Session Management

Safely issuing, storing, rotating, and invalidating session tokens.

OWASP Top 10

The ten most critical web application security risks, updated regularly by the open community.

Audit Logging

Recording who did what and when, the foundation of forensics and compliance.

Zero Trust Architecture

Never trusting any request by default, regardless of network location, verify every access explicitly.

Penetration Testing Fundamentals

Deliberately probing systems for vulnerabilities before attackers do.

05

Performance

Techniques for building systems that remain fast and resource-efficient under real-world load.

Database Indexing & Query Optimization

How indexes work, when to add them, and how to read query execution plans.

Caching Strategies

In-process caches, Redis, HTTP caching headers, and CDN edge caching, choosing the right layer.

Lazy Loading & Code Splitting

Deferring asset and code loading until actually needed by the user.

Memory Management & Leak Prevention

Understanding how runtimes allocate and reclaim memory, and spotting patterns that prevent reclamation.

Profiling & Benchmarking

Measuring before optimising, tools and approaches for finding the actual bottleneck.

N+1 Query Problem

Identifying and eliminating the most common source of accidental database load in ORM-heavy applications.

Connection Pooling

Reusing database and network connections to reduce overhead at scale.

Async & Non-Blocking I/O

Processing I/O without blocking the thread, keeping CPU utilisation high.

Database Denormalization

Strategically duplicating data to accelerate read queries at the cost of write complexity.

Pagination & Cursor-Based Loading

Fetching data in bounded chunks rather than loading unbounded result sets.

Batch Processing

Grouping operations together to reduce per-unit overhead and network round-trips.

CDN & Edge Computing

Serving assets and executing logic from locations geographically close to the user.

HTTP/2 & gRPC

Multiplexed connections and binary protocols that dramatically reduce request overhead.

Event Loop & Thread Management

How single-threaded runtimes handle concurrency and where blocking calls cause hidden damage.

WebSockets vs Polling

Persistent bidirectional connections versus repeated short-lived requests, knowing which fits.

06

Architecture

Structural decisions that determine how a system holds together, both at the code level and at scale.

Code Architecture

Scale Architecture

Microservices

Decomposing a system into small, independently deployable services with clear ownership boundaries.

Load Balancing

Distributing incoming traffic across multiple instances to maximise throughput and resilience.

Message Queues & Pub/Sub

Decoupling producers from consumers with asynchronous messaging for durability and flexibility.

Distributed Systems

The fundamental challenges, consistency, availability, partition tolerance, and the trade-offs between them.

CAP Theorem

Why a distributed system can guarantee at most two of consistency, availability, and partition tolerance.

Database Sharding & Replication

Horizontal partitioning and replication strategies for data that outgrows a single node.

API Gateway Pattern

A single entry point that handles routing, auth, rate limiting, and protocol translation for downstream services.

Service Mesh

Infrastructure layer for handling service-to-service communication, observability, and security at scale.

Circuit Breaker Pattern

Stopping cascading failures by short-circuiting calls to a failing downstream service.

Saga Pattern

Managing distributed transactions across services using a sequence of local transactions with compensating actions.

Blue-Green Deployment

Running two identical environments and switching traffic between them for zero-downtime releases.

Canary Releases

Routing a small percentage of traffic to a new version to validate it before full rollout.

Serverless Architecture

Running code in managed, ephemeral containers billed by invocation rather than provisioned capacity.