Magic mirror: One way mirror with a monitor behind it
michaelteeuw.nl
michaelteeuw.nl
By using a special semi-reflective glass surface, the users of the mirror are able to see both a normal reflection of the real world as well as overlaid, high-contrast graphics. We've dubbed this "augmented reflection". Conceptually, the idea is that our mirror can reveal the halos of data around real-world objects, including ourselves." - NYT Labs, 2011.
Adding a camera and a bit of OpenCV code could give you a "light" version of a Kinect interface -- broad gestures or hand signs shouldn't be hard to use to change modes.
Or a microphone and some voice recognition. Not sure what the open-source state of the art is like, but if you were to burn Android on it, Google has some pretty awesome voice recognition APIs you can use.
It used a camera and the faceAPI from Seeing Machines to overlay a digital Andy Warhol on the viewer's face, tracking their motions and saying Andy Warhol-like things periodically :-)
http://www.amazon.com/VTB44MC-4-3-Inch-Digital-Monitor-Combi...
Hidden bathroom TV, behind the mirror.
I worked on a project much like this for a client last year. We actually hid a camera behind the glass and could take "mirror selfies". It's a pretty simple add-on if you're making an interactive installation/vanity mirror.
Because I assume the author has a black screen, and white text, causing the white text to shine through the mirror while anything around the text is still black and let's the mirror act as a normal mirror.
Also it would be nice to see which observation mirror he used, since he's Dutch I could probably order the same one to Sweden. Ordering from the US is often a hassle.
Such mirrors are half transparent, half reflective. If the other side is dark, the reflective effect is much larger then the transparent effect, making it look like a normal mirror.
When there is a light source behind, the light goes through, which means you can see it. The brighter the light, the more you can see what is behind.
Detect motion -> refresh the data and wake up the monitor. Or just wake up the monitor since the data is being refreshed quite frequently already.
Also, I don't have any complaints about code clarity, everything seems straightforward.
Well done!