The Auckland Layout Model (ALM) is a novel technique for specifying layout. It generalizes grid-based layouts as they are widely used for print layout as well as for GUI layout. Qualitatively, in ALM the focus switches from the cells of the grid to the tabstops between cells. Quantitatively, the model permits the specification of constraints based on linear algebra, and an optimal layout is calculated using linear programming. ALM provides several advantages for developers: first, it supports several different levels of abstraction through higher-level layout constructs that are automatically translated into the lower-level primitives of linear programming. The formalism of linear programming defines a clean separation of ALM's interface and its implementation. Second, the compositional nature of ALM allows developers to group parts of a specification that belong naturally together, resulting in a modular GUI specification. Our experience has shown that it is much harder to achieve a similar separation of concerns when using common GUI layout techniques.