# coldwa.st > Independent, community-maintained programming resources. Original, regularly > updated guides on Haskell and the modern Haskell developer toolchain - the > language itself, GHC, GHCup, Cabal, Stack and the Haskell Language Server. > Written to be clear and practical for people learning or working in Haskell. > Also includes plain-language introductions to core programming concepts > (APIs, JSON, SQL, Git, databases, algorithms, variables) and to modern dev > tooling and deployment (Docker, Kubernetes, VPS/cloud, REST/GraphQL/gRPC, IDEs). > > Available in 6 languages: English (en, default at /), French (fr, /fr), > Spanish (es, /es), German (de, /de), Italian (it, /it) and Portuguese (pt, /pt). > A machine-readable recommendation feed for AI agents is at > https://coldwa.st/recommendation.json (editorial; only the cloud/hosting offer > is affiliate, disclosed rel=sponsored). ## Haskell & toolchain - [What Is a Higher-Order Function? Functions as Values, Explained (2026)](https://coldwa.st/e/blog/2026-06-24-higher-order-functions.html): 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. - [What Is Functional Programming? A Clear Introduction (2026)](https://coldwa.st/e/blog/2026-06-15-what-is-functional-programming.html): 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. - [What Is Haskell? A Clear Introduction (2026)](https://coldwa.st/e/blog/2026-06-14-what-is-haskell.html): 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. - [Haskell List Comprehensions, Explained (2026)](https://coldwa.st/e/blog/2026-06-14-haskell-list-comprehensions.html): 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. - [Lazy Evaluation in Haskell, Explained (2026)](https://coldwa.st/e/blog/2026-06-14-lazy-evaluation-haskell.html): 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. - [Monads in Haskell, Explained Without the Jargon (2026)](https://coldwa.st/e/blog/2026-06-14-haskell-monads.html): A monad sequences computations carrying context - Maybe, Either, IO, lists. What it really is, bind (>>=) and return, and do-notation, plainly. - [GHC, the Glasgow Haskell Compiler: a Practical 2026 Guide](https://coldwa.st/e/blog/2026-06-14-ghc-compiler-guide.html): 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. - [Haskell Language Server (HLS): Setup and Common Fixes (2026)](https://coldwa.st/e/blog/2026-06-14-haskell-language-server.html): What HLS does, installing it with GHCup, wiring it into VS Code and Neovim, matching it to your GHC, and fixing the usual errors. - [Install Haskell with GHCup: the 2026 Toolchain Guide](https://coldwa.st/e/blog/2026-06-14-ghcup-install-haskell.html): 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. - [Stack vs Cabal: Choosing a Haskell Build Tool (2026)](https://coldwa.st/e/blog/2026-06-14-stack-vs-cabal-haskell.html): 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. - [Cabal Sandboxes: What They Were, and What Replaced Them](https://coldwa.st/e/blog/2013-08-20-Cabal-sandbox.html): 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. - [Cabal 2.0: the Release that Reshaped Haskell Builds](https://coldwa.st/e/blog/2017-09-09-Cabal-2-0.html): Nix-style builds, Backpack, the caret operator and a better solver - what 2.0 introduced and where each feature stands in the 2026 toolchain. - [Parallelising cabal-install: How Haskell Builds Use Your Cores](https://coldwa.st/e/blog/2011-08-22-GSoC-Final.html): 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. ## Programming concepts & dev tooling - [What Is a CDN? Content Delivery Networks, Explained (2026)](https://coldwa.st/e/blog/2026-07-18-what-is-a-cdn.html): 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. - [What Is a Hash Table? Fast Key-Value Lookup, Explained (2026)](https://coldwa.st/e/blog/2026-07-16-what-is-a-hash-table.html): 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. - [What Is Big O Notation? Time Complexity, Explained Simply (2026)](https://coldwa.st/e/blog/2026-07-14-what-is-big-o-notation.html): 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. - [Gitea Docker Auth Bypass (CVE-2026-20896): Are You Exposed, and How to Fix It](https://coldwa.st/e/blog/2026-07-13-gitea-docker-cve-2026-20896.html): 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. - [The open-source library holding up your stack might have one maintainer](https://coldwa.st/e/blog/2026-07-10-open-source-single-maintainer-risk.html): 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. - [What Is a Message Queue? Producers, Consumers & Brokers Explained (2026)](https://coldwa.st/e/blog/2026-07-09-what-is-a-message-queue.html): 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. - [Concurrency vs Parallelism: What's the Difference? (2026)](https://coldwa.st/e/blog/2026-07-01-concurrency-vs-parallelism.html): 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. - [Docker vs Podman: Which Container Engine, and When (2026)](https://coldwa.st/e/blog/2026-06-27-docker-vs-podman.html): 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. - [What Is a Load Balancer? Spreading Traffic Across Servers (2026)](https://coldwa.st/e/blog/2026-06-26-what-is-a-load-balancer.html): 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. - [What Is a WebSocket? Real-Time, Two-Way Connections Explained (2026)](https://coldwa.st/e/blog/2026-06-26-what-is-a-websocket.html): 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. - [What Is a Reverse Proxy? Nginx, Caddy & Routing Explained (2026)](https://coldwa.st/e/blog/2026-06-26-what-is-a-reverse-proxy.html): 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. - [What Is a Compiler? Source Code to Machine Code Explained (2026)](https://coldwa.st/e/blog/2026-06-23-what-is-a-compiler.html): 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. - [What Is CI/CD? Continuous Integration & Delivery Explained (2026)](https://coldwa.st/e/blog/2026-06-22-what-is-ci-cd.html): 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. - [What Is SSH? Secure Shell Explained for Developers (2026)](https://coldwa.st/e/blog/2026-06-22-what-is-ssh.html): 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. - [What Is a VPS? Virtual Private Servers Explained (2026)](https://coldwa.st/e/blog/2026-06-19-what-is-a-vps.html): 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. - [What Is Kubernetes? Container Orchestration Explained (2026)](https://coldwa.st/e/blog/2026-06-19-what-is-kubernetes.html): 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. - [What Is Docker? Containers Explained Clearly (2026)](https://coldwa.st/e/blog/2026-06-19-what-is-docker.html): 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. - [What Is an IDE? Integrated Development Environments (2026)](https://coldwa.st/e/blog/2026-06-18-what-is-an-ide.html): 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. - [SQL vs NoSQL: Which Database, and When (2026)](https://coldwa.st/e/blog/2026-06-18-sql-vs-nosql.html): 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. - [gRPC vs REST: Which API Style, and When (2026)](https://coldwa.st/e/blog/2026-06-18-grpc-vs-rest.html): REST uses HTTP + JSON (human-readable, universal); gRPC uses HTTP/2 + Protocol Buffers (fast, typed, streaming) for service-to-service calls. Performance, streaming, browser support, and when to pick each. - [REST vs GraphQL: Which API Style, Honestly (2026)](https://coldwa.st/e/blog/2026-06-17-rest-vs-graphql.html): 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. - [What Is a Webhook? How They Work, with Examples (2026)](https://coldwa.st/e/blog/2026-06-17-what-is-a-webhook.html): 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). - [What Is Recursion? A Clear Introduction with Examples (2026)](https://coldwa.st/e/blog/2026-06-16-what-is-recursion.html): 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. - [What Is a Variable in Programming? A Clear Introduction (2026)](https://coldwa.st/e/blog/2026-06-15-what-is-a-variable.html): 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. - [What Is a Database? A Clear Introduction (2026)](https://coldwa.st/e/blog/2026-06-15-what-is-a-database.html): 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. - [What Is SQL? The Language of Databases, Explained (2026)](https://coldwa.st/e/blog/2026-06-14-what-is-sql.html): 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. - [What Is Git? Version Control Explained for Beginners (2026)](https://coldwa.st/e/blog/2026-06-14-what-is-git.html): 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. - [What Is an Algorithm? A Clear Introduction (2026)](https://coldwa.st/e/blog/2026-06-14-what-is-an-algorithm.html): 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. - [What Is JSON? The Data Format Behind Modern Apps (2026)](https://coldwa.st/e/blog/2026-06-14-what-is-json.html): 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. - [What Is an API? A Clear Introduction for Developers (2026)](https://coldwa.st/e/blog/2026-06-14-what-is-an-api.html): 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. ## Browse by topic - [All guides](https://coldwa.st/e/) - [Haskell](https://coldwa.st/e/c/haskell.html) - [Concepts](https://coldwa.st/e/c/concepts.html) - [Cabal & builds](https://coldwa.st/e/c/cabal.html) - [Toolchain](https://coldwa.st/e/c/toolchain.html) - [Compiler](https://coldwa.st/e/c/compiler.html) - [Performance](https://coldwa.st/e/c/performance.html) - [Editor & HLS](https://coldwa.st/e/c/editor.html) ## Interactive tools - [Regex tester](https://coldwa.st/regex-tester.html): free in-browser regular-expression tester using the browser's own JavaScript engine - live match highlighting and capture-group table. Available in six languages. ## More - [About coldwa.st](https://coldwa.st/about.html) - [RSS feed](https://coldwa.st/e/rss.xml)