Microcontrollers represent a highly resource constrained environment. Very small microcontrollers typically have only several K of program space available and several hundred bytes of memory, in addition to very low clock speeds. This talk will look at how to address these resource limitations. Many of the techniques examined also apply to larger / PC class hardware, and can be used to improve the performance for those systems. In addition the techniques explored are also beneficial for optimizing the power consumption of mobile devices and applications.