This document discusses design patterns for small devices. It begins by introducing design patterns as recurring solutions to software design problems. It notes that the process of building software should be evolutionary, learning from past experiences. The objective is to apply this theory to embedded systems and suggest three design patterns: Hierarchical State, Virtual Component, and LED Error patterns. It then provides details on each of these patterns, including their structure, implementation, applicability and known uses. The Hierarchical State pattern addresses complexity in state machine designs by organizing states hierarchically. The Virtual Component pattern reduces memory usage by loading components on demand. The LED Error pattern standardizes error handling across modules.