Glance is an informational display system I have mounted in my kitchen/entryway (it’s a small apartment). It is a real-time, event-driven web app that aggregates various feeds and APIs for an at-a-glance summary of current and upcoming information. While serving a practical purpose, it also is a great platform to keep my skills sharp, learn new things, and try out bleeding-edge technologies.
Built partially on the above CMS and framework, Glance is mainly comprised of a Node.js server, which shares Backbone.js modules between the front- and back-end, manages data sources, and pushes updates out through WebSockets (socket.io). I am using Express for the application framework, a multitude of modules from NPM, and some custom-written ones for my environment. There are also a few Python and Ruby scripts I have written, to keep things interesting. Data is stored in MySQL and MongoDB, with ephemeral information going into Redis.
It also aggregates environmental sensors around my apartment, measuring: light, temperature, humidity, occupancy, bandwidth, and WAN uptime. I have customized a version of Pianobar to push currently playing and upcoming songs, with album art and lyrics.
The front-end is comprised mainly of Backbone.js collections, models, and views. It nicely abstracts updating the DOM when data changes are pushed to the client through WebSockets. The front-end makes heavy use of JavaScript, some CSS3 animations, and Canvas elements.
I had been working on an interface for interacting with widget’s detailed views using a Microsoft Kinect, but have since switched to a Leap Motion. It’s an interesting challenge for creating an interface that doesn’t rely on precise manipulation through cursors, or directly through touch.
Glance acts as a physical notification system, too, signaling alerts through attached LEDs (controlled through an Arduino) and push notifications to my iPhone. This is primarily used for timers, weather updates, and package delivery notifications.
A selection of data sources consumed and displayed: Forecast.io, Foursquare, iCloud (CalDav, Find My iPhone), MTA (and MBTA, when I lived in Boston), Netflix, New York Times, Nextbus, package tracking (FedEx, UPS, USPS), TV Guide, Twitter, and Weather Underground