This document provides a guide to programming in TinyOS. It covers topics such as linking and namespaces in C, C++ and Java; interfaces and modules; tasks and concurrency; configurations and wiring; parameterized wiring; generic components; and design patterns. The document contains numerous code examples to illustrate concepts.