I work with some pretty smart people. I had one of those fun “Oh yeah, duh!” moments today and it was pretty neat just how fast everybody ran the numbers in their heads and realized what a good idea the proposed solution was.
I hope none of this is patentable, but you never know in today’s society. If you knew my industry you’d know exactly the problem we were solving, but I can abstract it enough to make it a fun mental exercise.
LL, this might be a fun one for you! You might get it quicker than the other software geeks I have lurking around here.
Okay, let’s say that I demand that inform me various bits of information about your life on a regular schedule. I will then record that data, but I don’t want to be barraged by a bunch of stuff at once.
A: How many times you’ve taken a breath. Report every 20 minutes.
B: How many times you’re heart has beaten. Report every 30 minutes.
C: How many steps you have taken. Report every 120 minutes.
See the problem? Every hour I’ll have to record two check-ups from you. Every two hours I have to record 3 check-ups from you. Now, I don’t write to fast, and since there’s thousands of you out there (hah!) every two hours I’ve got to write down a lot of stuff!
The problem lies in my desire to have you report in on easily understood human intervals. The solution?
Make the intervals prime numbers. They’ll never overlap. If I change the intervals to 19, 31, and 127 I get pretty close to the update times that I want, and you never have to give me all that data at once. Consequently, I don’t have to tire my hand out trying to scribble it all down at once.
My manager at work spit this proposed solution out and within, oh, 10 seconds or less, everybody on the team realized how obvious it was to cut down on some problems we have been experiencing.
Not to completely burst your bubble, but you will still get some data all at once (every 589 minutes – 19 * 31) and every 74803 minutes (19 * 31 * 127). So I wouldn’t say “you never have to give me all that data at once” …
The first thing that comes to mind is to break the population of data providers into 4 groups. Every group reports every half hour but you start it like a round robin song. Group Alpha submits the first set of data first. Group Beta gives its first set a half hour later. After 2 hours, you will have a steady, predictable, and constant stream of data without spikes. That’s all I can come up with right away at 8am on a Sunday.
I would say have each client do it randomly from 20 to 120 minutes. This way, you can add as many client you want and there would be a fairly constant stream of requests (as long as your random number generator is truely random). With that many clients… the rule of big numbers comes into play and you should get a steady flow of data.
There are downfalls to this of course. You would never be able to give exact/real-time stats. However they would be exact if you looked at data that was at least 120 minutes old.
What do you guys think?
Indeed, there isn’t a good solution to this. I actually thought my manager had the right idea, and given the numbers that Jason ran it’s much better than putting everyting on human-comfortable intervals.
Still, the intervals have to be predictable for business reasons, so Mark’s random solution is dead in the water. Probably the most efficient, but won’t fly because humans will be looking at the data and expecting predictable results.
Oh well. It mostly works but it still isn’t perfect. Better than it was before I suppose.
Did I completely miss the point of this exercise?