The Bicycle Barometer
blog.oftcc.net
blog.oftcc.net
In my day job, I develop software to fit a big data + intelligence niche market. No matter how many pretty charts I've been forced to make (to better sell the software to CEOs), the people who make the decisions based on the data we provide don't care about visualizations AT ALL. They want our software to tell them what to do. Period. And if the software tells them to make a bad decision that costs them money it's our fault (unless they can't execute the decision due to safety laws, which happens), no matter how many charts they could have double checked to see if the decision was sane.
Dashboards and charts are all well and good, but ultimately a simple display that unambiguously tells you what to do (like the bicycle barometer) is much more powerful.
The truth is that many of the big data systems we build are starting to make complex decisions based on subtleties in data a non-expert human can't understand. We of course try to give reasoning along with the decisions, but it's often easier and cheaper to get decisions from a computer and then hire a domain expert as a consultant to write down the reasoning for the client in a monthly report.
As long as the actions your software tells your clients to take will save them money they don't really care about seeing the reasoning beforehand. And if they choose not to take action, you can tell them how much money they lost by not implementing the advice of the computer. It's a surprisingly effective way to do business.
Bottom line: you never intentionally waste a human's time on things that don't require human judgment, and when human judgment comes into play, people want context. Good software helps people establish context for the decisions they make. The bike barometer, for example, doesn't actually tell you whether to bike or not. It just lets you know how a couple of factors balance against each other. The person reading the barometer will factor in other context such as how they feel that morning, whether they want some exercise that morning or would rather read a book on the tube, whether the bike is in good working condition, and so on.
Granted, the systems I worked with were mostly used by full-time operations personnel. If you're talking about a system for non-specialists who may need prompting and guidance along the lines of, "It looks like you're trying to handle more load than usual. Would you like to spin up a few more servers?" then I guess I can see people wanting the software to give them explicit orders.
For example say you have a simple service, however every ~2 weeks it needs to be restarted because of a memory leak. If a human is in charge of this after having to go in and restart the service a few times every 2 weeks they'll know that something isn't right here. If it's automated though, the computer won't have this intuition. What if it is based on the number of requests served, and your traffic is sporadic, so the first time it is 2 weeks, then 3 days, then a month?
Sometimes things fly under the radar, though, and that's where the dashboard-style "situational awareness" UIs really shine. Typically the people asking for a "dashboard" are executives who really shouldn't care, who only need regular briefings plus an occasional text from someone in operations warning them of a major customer impact. The people who benefit from them are engineers who browse around the system looking for trouble or simply satisfying their curiosity. "The Foo servers handle the Bar requests. I wonder what their typical CPU utilization is. I'll go check one of them... click click click. Whoa, that memory usage doesn't look good. I wonder if it's always like that. click WTF is this erratic sawtooth pattern? Do the other Foo servers have this, too? click click click Yeesh, somebody needs to fix that." That's the ideal case, anyway, if you have a rich UI that is good at presenting pages of data in context that can be understood at a glance, with quick navigation to related data. If the engineer clicks the "CPU utilization" button and gets back a line graph and a table of numbers, with no other context, then the UI is forcing the engineer to have tunnel vision. It should be dashboards all the way down, until the engineer starts running custom queries that the system doesn't know how to provide context for.
But yeah, the chronic restarting scenario should show up in reports and hopefully trigger an alert. I imagine that routine interventions (such as spinning up extra servers for load) and troubling interventions (such as restarting a service) are distinguished in reporting.
The tube also can be extremely busy (sometimes with very noisy passengers) due to sales in shopping centers or due to sporting matches, exhibitions, etc.
This also calls for some value-assignment to transport methods. E.g.: cycling is preferable to tube, but more than light rain benefits tube, but more than an X minute / X% delay swings benefit to cycling. The real variable here is how long a commute takes -- so, is/was there a tangle in the tube when that was the recommendation.
Closing the loop on predictions/recommendations is a common problem in any monitoring/alerting application. For all the ballyhoo on the online dating problem, I'd warrant that getting closure on the dating experience is where most sites fall flat.
- if it's 35°C outside, I sure as hell don't want a/c to loop on 20°C
- if it's -15°C outside, I sure as hell don't want a/c to loop on 20°C
So basically what I want is:
- 16°C minimum (below produces too much condensation on the windshield, and is not comfortable on long-ish commutes ) - from 16°C at -10°C to 20°C at 20°C, maybe linear, maybe log, I don't know.
- and cap at 20°C max inside...
- ...but have a maximum negative delta of -5°C with the outside temperature (i.e 29°C outside means 24°C inside)
- yet with a true absolute maximum of 28°C inside
It's really not that hard and I could probably come up with a hack (has anyone plugged an Arduino into a CAN bus?) reading the inside and outside sensors, and controlling the temperature knob while reading its current setting from what the display shows, but damn, where is my car's SDK! Oh, the first world problems I have.
It's not cheap, but it's from SparkFun so it's at least pretty in red. :) And, to be fair, it has a few nice features besides the CAN interface itself (SD card holder, LCD interface, on-board joystick).
The product comments mention this library for the software side: http://code.google.com/p/canduino/.
Can't live without it anymore. Just wish there was a practical way to give something like this to everyone.
I'm probably overlooking something, though.
The fact that I can see my income as a daily thing and not something that happens every X weeks is really what makes this thing useful and cool because it can essentially turn each day of the month into a simple number saying whether it's a positive or negative day (and by how much).
Then it's just some playing around with rolling averages and some other stuff to get a prediction that is surprisingly good.
http://static.steve.org.uk/expenses/Also, pre-Arduino we used a WebSwitch $199 (http://www.controlbyweb.com/webswitch/) to turn on/off a police siren when a certain goal was reached.
I've been quite interested in figuring out how to turn multiple/complex input into a single, actionable value (it is pretty damn hard!) - and this project is a great example.
Perhaps a calorie counter suggesting meals for dinner (keeping a balanced diet and all that jazz)? Outfit suggestions based upon the weather?