Yesterday I did something dumb, and I only realized it today because I don’t trust an easy success. Let’s see if you can spot the flaw in my reasoning:
- A process (X) is run on a series of items in a queue.
- Items are added to the queue continuously, about 500 per hour.
- A processor (Z) is started once an hour. It performs X on all the items in the queue, then quits once the queue is empty.
- If there are any errors, the processor emails them to me after it quits.
- I noticed 100 random failures in process X each hour.
- I hypothesized that X is failing due to intermittent system unavailability.
- I checked the hypothesis by looking for clusters of X failures at times of high load. (There were.)
- I “fixed” it by pausing the Z processor for 60 seconds whenever there’s a failure (to let system resources recover).
- 12 hours after the fix, I got no failure emails and declared victory.
- Not so fast: Not only did I not fix the problem, I caused something worse.
Can you figure out what I did wrong? Continue reading
These gentlemen are from the future.
You may have noticed how quiet Global Spin has become, yet again. With the rise of Twitter and Reader and Tumblr and other such thing-share-ers, our little community no longer has much reason to post their thoughts to a group blog.
In response, I’m quitting!
checks notes Oh wait, that’s not it… shuffles papers One sec, it was right here…
Right! In response, I’m going to keep posting the same old things on Global Spin as always. (In a word: monkeys.) I won’t even promise to post more often, because we’ve all seen through that little shadow play. Or something.
For those of you looking for a little more regularity and a little less depth, I give you a cat… standing up! (Oh, and I might also share some other things over there, because it’s what all the kids are doing these days.)
That is all.
Starting today, I’m going to remove all my personal information from Facebook and “unfriend” everyone. I’m responding to a pair of status messages that appeared on my profile over the last few weeks, though I didn’t put them there. (John calls them “phantom status messages.”)
According to the site itself, the messages were both submitted “via Text Message”, which is odd because I haven’t authorized the Facebook Texts service. I submitted a bug report to Facebook Support, but so far they’ve done nothing aside from ask me to resubmit my request if I’m “still experiencing security issues.”
Just to be clear:
- My account hasn’t been “hacked”. I changed my password as soon as the first phantom status appeared, and that didn’t stop the second message two weeks later. Since the phantom messages came from the Facebook Texts service, they didn’t require my authentication anyway.
- My computer doesn’t have a virus. (If you know me at all, you’re chuckling at the idea.) Even if by some magical circumstance it did, the virus would have to send Facebook a text message somehow, and they’d still have to accept it.
That leaves two possibilities that I can see:
- It’s a bug. Some bit of Facebook code is misrouting another user’s text messages to my profile by accident.
- It’s a security exploit. A malicious user is exploiting some crack in Facebook’s text-message-handling code to drop messages in other users’ accounts. This is less likely, but not impossible; it would probably start with innocuous messages to test the exploit.
Either way, I no longer trust my Facebook account. The phantom messages have been benign so far, but all it would take is one generic hurtful statement to become a real nightmare. (Not to mention what this implies about Facebook’s security in general.)
I still plan to keep the account itself open, because I need it for work (to develop Facebook apps) and for space advocacy (as a page admin). I just won’t be posting to it, and it won’t be “friends” with anyone. I’ll miss the easy keeping-in-touch it provides, but that’s not worth the potential hassle.
Looking at my to-do list today, I noticed for the millionth time how two key attributes of a task seem to be either redundant or in conflict: its due date and its priority.
It always seemed to me that you should only need to assign one or the other. If you have a deadline, then what does the priority affect? If the item is high enough priority, isn’t the due date ASAP?
Today, though, I had a flash of insight. The due date defines how much I have to work on the item in order to get it done in time, almost like the velocity of the task. The priority, however, defines how resistant the job is to being derailed by other tasks, more like the inertia or mass of the task.
Put that way, the two values aren’t redundant at all. In fact, you can put them together to determine the overall momentum of a project, based on the combination of the deadline-driven velocity and the priority-based mass. It might even be possible to come up with a formula for determining the outcome of a collision between two tasks, but I’ll leave that as an exercise for the project manager.
A few years ago, I started a project to build something I’d wanted for a long time: a simple device that could read Wikipedia articles and Project Gutenberg texts. I called it a WikiBub. The point was to create something dirt simple on the cheap, instead of the usual “convergence device” that does everything (and is priced to match).
Five years later, I can check it off my to-do list. I never got the hardware working, and I didn’t even get past the rough-sketch stage of the design, but other people met my goals for me. The WikiReader (pictured) matches the original WikiBub idea perfectly: it’s simple, cheap ($99), open to hacking, and designed to do one thing (reading Wikipedia) well.
Of course, the idea of a simple-to-use ebook reader without eyestrain or battery issues is no longer new; the Kindle took care of popularizing that one. I also moved on to another hand-held reading device you may have heard of, which (mostly) took away my need for a dedicated reader. Still, it’s nice to see something so true to the WikiBub spirit. I hope it flourishes.