Jul 21, 2026 in Programming, Data Structures - A linked list stores a sequence as a chain of nodes, where each node holds a value and a pointer to the next one. How singly and doubly linked lists work, how they compare to arrays, the real complexities, and when to reach for one.
Jul 18, 2026 in Programming, Web, Performance - A CDN caches your static content on servers spread around the world so visitors get it from a nearby machine. How the edge, cache hit and miss, TTL and invalidation work, static vs dynamic, and where a CDN fits with your host.
Jul 16, 2026 in Programming, Data Structures - A hash table stores key-value pairs and finds any value by its key in roughly constant time. How the hash function and buckets work, how collisions are handled, the real complexity, and why dictionaries are built on it.
Jul 14, 2026 in Programming, Algorithms - Big O notation describes how an algorithm slows down as the input grows. The common complexities from O(1) to O(n!), why constants are dropped, real examples, and how to reason about the performance of your own code.
Jul 13, 2026 in Security, Docker - A critical authentication bypass in the official Gitea Docker image (CVE-2026-20896, CVSS 9.8) is under active exploitation. What the flaw is, who is actually affected, and the exact steps to check and fix a self-hosted Gitea.
Jul 10, 2026 in Open Source, Supply Chain - Much of the modern software stack rests on small open-source projects run by one or two unpaid people. What xkcd 2347, Heartbleed, Log4Shell and the xz-utils backdoor teach about single-maintainer risk, and what teams can actually do about it.
Jul 9, 2026 in Programming, Architecture, Backend - A message queue is a buffer between services: one part of your app drops off a task and another picks it up later. Producers vs consumers, pub/sub, delivery guarantees, and RabbitMQ vs Kafka vs Redis.
Jul 1, 2026 in Programming, Concepts, Performance - Concurrency is structuring a program to deal with many tasks at once by interleaving them; parallelism is running many tasks at the same instant on multiple cores. The core distinction, Rob Pike's framing, threads vs async, Python (GIL) and Haskell examples, when each matters, and pitfalls.
Jun 27, 2026 in Programming, DevOps, Containers - Docker runs containers through a central daemon; Podman is daemonless and rootless by design. They share OCI images and a near-identical CLI. Architecture, rootless security, pods, systemd, Compose and Docker Desktop licensing compared.
Jun 26, 2026 in Programming, Servers, Networking - A load balancer spreads incoming requests across several servers so none gets overwhelmed and the app stays up if one fails. What a load balancer is, the algorithms, L4 vs L7, health checks, and how it differs from a reverse proxy.
Jun 26, 2026 in Programming, Web, Networking - A WebSocket keeps one connection open so the server and browser can send messages to each other at any time. What a WebSocket is, how it differs from HTTP, the handshake, ws vs wss, and when to use it instead of polling.
Jun 26, 2026 in Programming, Servers, Networking - A reverse proxy sits in front of your servers, takes every incoming request and forwards it to the right backend. What a reverse proxy is, how it differs from a forward proxy and a load balancer, why you use one (TLS, caching, routing), and the common tools.
Jun 24, 2026 in Programming, Concepts, Haskell - A higher-order function takes a function as an argument or returns one as its result. What higher-order functions are, why map, filter and fold are the classic examples, how they replace loops, and how they work in Haskell.
Jun 23, 2026 in Programming, Concepts, Compiler - A compiler turns the source code you write into a program the machine can run. What a compiler is, how it works stage by stage (lexing, parsing, optimization, code generation), compiler vs interpreter, and where GHC fits for Haskell.
Jun 22, 2026 in Programming, DevOps, Automation - CI/CD automates the path from a code change to a tested, deployed app. What continuous integration and delivery/deployment mean, how a pipeline works, the common tools, and why teams rely on it.
Jun 22, 2026 in Programming, Servers, Security - SSH (Secure Shell) is the encrypted protocol you use to log in to and run commands on a remote server safely. How the handshake and keys work, passwords vs SSH keys, the everyday commands, and where you meet it.
Jun 19, 2026 in Programming, Hosting, Infrastructure - A VPS is your own isolated slice of a physical server, with dedicated resources and full root access. How virtualization works, VPS vs shared/dedicated/cloud, managed vs unmanaged, and what you use one for.
Jun 19, 2026 in Programming, DevOps, orchestration - Kubernetes is an open-source system that runs and coordinates containers across many machines - scheduling, scaling, healing and networking them. The core concepts (pod, node, cluster, deployment, service), how it relates to Docker, and when you actually need it.
Jun 19, 2026 in Programming, DevOps, containers - Docker packages an application and everything it needs into a container that runs the same way on any machine. Containers vs virtual machines, the key concepts (image, container, Dockerfile, registry), and Docker vs Kubernetes.
Jun 18, 2026 in Programming, Tools, Beginners - An IDE bundles a code editor, build tools, a debugger and version control into one app - so you write, run and fix code in one place. What it includes, IDE vs editor, and how to choose one.
Jun 18, 2026 in Programming, Data, Databases - SQL databases store structured data in related tables with a fixed schema and strong consistency; NoSQL trades some of that for flexible schemas and horizontal scale. Consistency, scaling, querying, and when to choose each.
Jun 17, 2026 in Programming, Web, APIs - REST and GraphQL are two ways to build a web API: REST uses many endpoints with fixed responses; GraphQL uses one endpoint where the client asks for exactly the fields it needs. Over/under-fetching, caching, and when to choose each.
Jun 17, 2026 in Programming, Web, Concepts - A webhook is an automated HTTP request a service sends you when an event happens - the reverse of an API call you make. How webhooks differ from polling an API, how to receive one safely, and real examples (Stripe, GitHub, Slack).
Jun 16, 2026 in Programming, Concepts, Recursion - Recursion is when a function calls itself to solve a problem by reducing it to smaller subproblems. The base case and the recursive case, real examples in Python and Haskell, recursion vs iteration, tail recursion, and the common pitfalls.
Jun 15, 2026 in Programming, Concepts, Haskell - Functional programming is a style built on pure functions, immutability and treating functions as values. Its core ideas, how it differs from imperative/OOP code, the trade-offs, and where Haskell fits.
Jun 15, 2026 in Programming, Concepts - A variable is a named container that holds a value your program can read and change. How you declare and assign one, types and scope, constants vs variables, and why they are the building blocks of every program.
Jun 15, 2026 in Programming, Data, Databases - A database is an organised collection of data, managed by software that lets you store, query and update it reliably. Relational vs NoSQL, key concepts (tables, schema, ACID), real examples, and how it relates to SQL.
Jun 14, 2026 in Programming, Data, Databases - SQL is the standard language for storing, querying and changing data in relational databases. Core commands (SELECT, INSERT, UPDATE, DELETE), how a query works, SQL vs NoSQL, and why it is still essential in 2026.
Jun 14, 2026 in Programming, Tools, Workflow - Git is a distributed version-control system that tracks every change to your code so you can branch, merge, collaborate and undo. Core concepts (commit, branch, merge, remote), the daily workflow, and how it differs from GitHub.
Jun 14, 2026 in Programming, Concepts - An algorithm is a finite, step-by-step procedure that turns input into output. Its key properties, everyday and code examples, why efficiency (Big-O) matters, and how it differs from a program.
Jun 14, 2026 in Programming, Web, Data - JSON is a lightweight, human-readable text format for structured data - the language most web APIs and config files speak. Its syntax, why it is everywhere, how it compares to XML, and its honest limits.
Jun 14, 2026 in Programming, Web, Concepts - An API is a contract that lets one piece of software talk to another. The main kinds (web/REST, library, OS), how a web request and response work, and why APIs are everywhere in modern software.
Jun 14, 2026 in Haskell, Concepts - Haskell is a purely functional, statically typed, lazy language with powerful type inference. The ideas that define it - purity, immutability, laziness, strong types - what it is used for, and how to start.
Jun 14, 2026 in Haskell, Syntax - A list comprehension builds a list from generators with optional guards - concise and close to set-builder notation. Syntax, multiple generators, guards, and how they relate to map and filter.
Jun 14, 2026 in Haskell, Concepts - Haskell computes a value only when it is actually needed. What lazy evaluation is, thunks, infinite data structures, the space-leak trap, and forcing strictness with seq and BangPatterns.
Jun 14, 2026 in Haskell, Concepts - A monad sequences computations carrying context - Maybe, Either, IO, lists. What it really is, bind (>>=) and return, and do-notation, plainly.
Jun 14, 2026 in Haskell, Compiler - What GHC is, installing it with GHCup, using GHCi, the flags that matter (-O2, -Wall, -threaded, -j), and how it fits with Cabal and Stack.
Jun 14, 2026 in Haskell, Editor - What HLS does, installing it with GHCup, wiring it into VS Code and Neovim, matching it to your GHC, and fixing the usual errors.
Jun 14, 2026 in Haskell, Toolchain - GHCup is the recommended way to install GHC, Cabal, Stack and HLS in 2026 - clean install, version switching, and the common pitfalls that trip newcomers.
Jun 14, 2026 in Haskell, Cabal, Build - Cabal and Stack are the two main ways to build Haskell projects. What each one is, how they differ (Hackage vs Stackage, reproducibility, GHC management), the equivalent commands, and how to choose in 2026.
Jun 13, 2026 in Haskell, Cabal, Build - The per-project isolation idea that won so completely it became invisible. What sandboxes were, and the nix-style cabal build workflow that superseded them.
Jun 13, 2026 in Haskell, Cabal, Build - Nix-style builds, Backpack, the caret operator and a better solver - what 2.0 introduced and where each feature stands in the 2026 toolchain.
Jun 13, 2026 in Haskell, Performance - Why a build is a dependency graph, how -j builds use your cores, and the modern job-semaphore fix for oversubscription on wide dependency trees.