The phenomenal increases in processing power and memory capacity of computing hardware over recent years have allowed manufacturers to produce smaller and smaller computer systems such as palmtop PCs, smart cards and embedded control systems on domestic and industrial appliances. New techniques such as dynamic memory management and object-orientation help programming but tend to require additional memory. Standard programming techniques do not cope with these limited memory-capacity environments. This book will provide practical help for programmers developing software for this kind of environment. The major content is a series of patterns developed by the authors based on solutions which have been found to work in real-life situations. They range from small system design patterns and process management patterns, to patterns for User Interface development, compression and memory storage. This book will appeal to developers using Windows CE or building mobile telephones, smart cards, embedded devices, set-top computers - in short, all programmers working with memory-constrained systems.