As computing moves into every aspect of our daily lives, the process, values and assumptions that underlie our technical practices may unwittingly be propagated throughout our culture. Drawing on existing critical approaches to computing, we argue that reflection on unconscious values embedded in computing and the practices that it supports can and should be a core principle of technology design. Building on a growing body of work in critical computing, we describe reflective design, a practice which combines analysis of the ways in which technologies reflect and perpetuate unconscious cultural assumptions, with design, building, and evaluation of new computing devices that reflect alternative possibilities. We illustrate this approach through two design case studies. Keywords Reflective design, critical technical practice, participatory design, critical design, value-sensitive design, ludic design, reflection-in-practice, critical theory