Some Thoughts on Design and Humane Computing

A couple of weeks ago, someone on a programming mailing list that I read asked for advice on porting a Windows program he’d written over to the Mac. Most of the folks on the list, which is dedicated to Windows, Linux, and Mac software development, advised him that simple ports of Windows software generally tend to fare poorly on the Mac. Mac users tend not to like obvious ports from the Windows world, and several folks suggested that he might need to do some rejiggering of his program;s interface layout–moving buttons, repositioning alert icons, and so on–so that they fit the Mac guidelines better.

Which is true, but incomplete, and misses what I think is a really important point about software design. Or any kind of design, for that matter.


Right now, as I type this, Apple and Samsung are involved in a nasty patent spat concerning infringement of certain Apple user interface patents for cell phones. A lot of folks commenting from the sidelines on the spat tend to paint Apple as a villain, usually on the grounds that the patents in question (which generally relate to things like how searches work and so on) are “obvious,” and therefore shouldn’t be patentable at all.

Leaving aside entirely the question of whether or not Apple is the bad guy, the fact that so many folks deride the user-interface patents in question as “obvious” demonstrates a couple of important principles.

The first is that many computer geeks don’t understand design, and because they don’t understand design, they have contempt for it. (It is, unfortunately, a very common trait I’ve noticed among geeks, and particularly computer geeks, to assume that if they lack some particular skill, it’s only because that skill is trivial and not really worth bothering about.)

The second is that people tend not to pay attention to design unless it’s bad. Good design always looks obvious in hindsight, when it is noticed at all.


Today, touch-screen smartphones have generally settled on the same overall user interface idea: a series of virtual pages, accessed by swiping, which contain icons that can be touched to launch applications. But it wasn’t so long ago that such a simple and obvious user interface was unknown. Case in point: The first Windows CE devices.

The Windows CE-based smartphones used the same metaphor as Windows desktop systems: a “desktop” onto which you could place icons, and a tiny “start” menu in the corner of the screen which you would touch with a stylus or move a virtual mouse pointer over with a set of arrow keys or a rocker button to bring up a menu of applications.

This user interface succeeds on desktops but is an abject, epic failure on small screen devices because it simply isn’t designed for a different usage environment. Yet this, and things like it, were the norm for handheld devices for years, because nobody had come up with anything better. Nowadays we look at Android or iOS and marvel that anyone could be so dumb as to attempt the Windows desktop interface on a phone. Good design always looks obvious in hindsight.


So back to the mailing list.

Several of the responses the guy who wanted to port his software received concerned learning things like the ‘correct’ button placement and icon size on Mac systems. But that does not, I think, really address the central problem, which is that Mac users (and I know I’m going to get some flak for saying this) are accustomed to a higher level of design than Windows users are.

And there’s more to design than how big the icons are or where the buttons are placed. Way too many people have this notion that design is something you bolt onto an application after it’s finished; you make the program do what it should do, and then you call Joe the graphics guy from the other side of the building, who isn’t a real programmer but knows how to do some graphics stuff to make it all look pretty.

Back in the early days of the Mac, Apple released a rather hefty book called “Macintosh Human Interface Guidelines.” I had a copy of it for a long time. It’s quite thick, and covers almost every aspect of user interface design. Yes, there are a lot of bits about how many pixels wide an icon should be and where a button should be placed on a window, but it goes way beyond that, into program flow, error handling, and a lot more.

It’s a book I think all programmers should read, regardless of what environment they program for.

I don’t think Windows has ever had an equivalent to this book. Window prior to Windows 95 didn’t seem to have any such book, at least not that I can find. The earliest published document I can find for Windows was produced in 1995, and was quite short, covering nowhere near the depth of program design as the Mac version. A PDF is available here. I’m pretty sure Linux hasn’t either, though individual user interface shells may. (Gnome has one, and so does KDE; Unity seems not to.) And I think that helps contribute to the contempt that many programmers have for design, and to the notion that design is “pretty pictures that you put into the dialogs after the program is done.”


I wrote a reply on the list outlining some of the difficulties Windows programmers face when trying to port to the Mac. The considerations do include where to position user interface elements on the screen, of course; Mac programmers expect a certain consistency. But there’s a lot more to it. Here’s what I wrote:

The issue with Mac software isn’t one of following a list of guidelines, in my experience, so much as one of practicing good design.

The principles in the Apple Human Interface Guidelines tend to promote good design, but there are many applications that don’t follow them (even applications from Apple) yet still give the ‘user experience’ that Mac users want. It’s about good, thoughtful, humane design, not about how big the buttons are or what fonts are used or how many pixels away from the edge of the window the buttons are located.

“Design” is a difficult concept, and one that a great many programmers–even good programmers–don’t have a good grasp of. There are a lot of terrible applications out there (on all platforms), though in the years I’ve been using Macs, Windows, and Linux I’ve found that Mac apps generally tend to be better designed than apps for the other two platforms. Indeed, Linux in particular tends to reward inhumane application design, enshrining programs with great power but also with an obtuse, cumbersome, and heavy user interface that is opaque to anyone without a thorough understanding of the software. EMACS is arguably one of the greatest examples of software utterly divorced from humane design. (Before anyone accuses me of engaging in partisan holy wars, I started using MS-DOS at version 2.11, Windows at 3.0, and Macs at System 1, and I’ve been using Linux since about 1998. I first came to EMACS on a DECsystem-20 running TOPS-20; before that, I used TECO on a PDP-11.)

Humane application design extends way beyond pretty pictures in the splash screen and memorizing lists of rules about where to put buttons on a screen. The principles of humane design are probably outside the scope of one email on an email listing, but they include things like:

Clarity. A well-designed user interface strives, as far as is reasonably possible, for simplicity, obviousness, and clarity. Functions presented to the user should be done in a logical and comprehensible manner, with similar functions presented in similar ways and available options described in the clearest possible language.

Consistency. Different areas of the software’s human interface should be designed, as far as is possible, to be both visually and functionally similar. If the user changes from one mode to another, she should not be presented with a jarringly different interface that is arranged entirely differently. Functions that are common to all areas or modes of the software should continue to work in the same way. The Microsoft Office suite is an example of a set of programs with poor consistency; in each of the parts of the suite, the same functions are often located in different places, under different menu items.

Predictability. Humane software does not modify or delete the user’s information without the user’s express permission. Consequences of user action, especially action that might involve loss of data, should be clearly communicated. User choice should be presented in a way that clearly communicates the results of the choice; for example, an inhumane, poorly-designed dialog box might read “A network error occurred” with buttons reading “OK” and “Cancel,” as the user is presented with no clear way to predict what pressing each of those buttons will do.

Ideally, buttons should be labeled verbs, which help to communicate the consequences of making a selection as rapidly as possible. It’s not great design to have a dialog box reading “A network error occurred; try again?” with buttons labeled “Yes” and “No.” Better is a dialog box with buttons labeled “Try Again” and “Disconnect.”

Clear communication. There’s a great example of this in the Apple Human Interface guidelines. A poorly-designed error message for a text entry field might read “Improper data format entered.” A better error message might read “”Numeric entry only.” A well-designed error message might read “The ZIP code must be five numbers or five numbers with a dash and four numbers.” The software communicates what is expected in a way that is easy for the user to understand, even when (in fact, especially when) an error condition is encountered.

Resilience. The design of the software should strive, as far as is possible, to preserve user input and user data even in the event of some sort of error condition. This means, for example, that the software will not discard everything the user has entered up to that point if the user types an incorrect ZIP code; the software will not lose the user’s input without warning if the user leaves one mode and enters another mode (for example, if the user types part of a shipping address, then backs up a screen to change the discount code she has entered), and the software will always make it clear if data will be or have been lost.

Forgiveness. The user interface should, as far as is possible, be designed to forgive mistakes. This includes such obvious things as Undo functionality, which in this day and age even the most inhumane software implements because it’s become part of the cultural set of expectations from any software. Better implementations include the ability to Undo after the user has done a Save or a Revert to Saved (Adobe applications consistently implement this). Humane software will not irrevocably destroy a user’s data at the click of a wrong button, will attempt insofar as is possible to recover data in the event of a crash (applications like Microsoft Word are quite good at this, though it’s not always technically possible in, say, large graphics editing apps).

Familiarity. Good design does not have to be beholden to the past, but if you’re presenting the user with a completely unfamiliar experience, expect resistance. When a person gets into a car, she expects certain things from the user interface; replacing the steering wheel and pedals with a joystick and the windshield with a holographic projector might be appropriate for a concept car or a science-fiction movie, but probably isn’t for the next-generation Chevy Lumina. If you change things about the expected user experience, make sure you have a clear and compelling reason to do so; don’t violate the user’s expectations merely because you can. This, unfortunately, is the only place where many programmers feel design is important, and is where rules such as the fonts used in buttons and the distance the buttons are placed from the edge of the window come into play.

Responsiveness. The application should be designed in such a way as to remain responsive to the user as often as possible in as many conditions as possible, and throw as few roadblocks in the user’s way as possible. This goes beyond simply shifting CPU-intensive operations into their own thread, and encompasses a number of architectural, coding, and human interface choices. For example, humane software is modeless wherever possible; use modal dialogs that block user activity only where absolutely necessary and where no other design decisions can be made. Make it clear what window or data is affected by a modal dialog (this is a place where I believe the design and implementation of Windows falls short, and the Mac’s “sheet” window is a significant human interface win.) If you must use a modal window, seek wherever possible to allow the user to clear the fault within the modal window, rather than forcing the user to dismiss the modal dialog and then go back a step to fix whatever the problem is.

There’s a lot more, of course, but the basic point here is that good design isn’t something that you glue onto a program with pretty icons and controls that follow all the rules. It’s something that has to be baked in to an application from the ground up, and for better or for worse it is my observation that the users’ expectations of good design techniques tend to be higher on Macs than on other systems.

Some thoughts on needs, objectification, and the Magic Genitals Effect

If you venture into the polyamory community for long enough, eventually you will encounter someone who says “Polyamory is good because no one person can meet all of your needs. With poly, I can find different people who meet different needs, and so be happier.”

That line of reasoning has always bugged the hell out of me. It seems to me that there is something deeply, profoundly wrong with this argument, but I’ve never really been able to articulate what.

Today, while pondering an entirely different question, it occurred to me. We are, through biology or socialization or both, prone to viewing romantic partners as need fulfillment machines. When we have a need, be it for companionship or for sex or for someone to process with or for someone to (God help us) go bowling with, we look to our partners to meet those needs.

Which is fine, as far as it goes. Indeed, one of the greatest things about being in a romantic relationship is having someone to turn to, someone to co-create with and to be inspired by, someone who will help us as we build our lives.

But it gets a little messed up, I think, when we start with the assumption that our partners are obligated to meet our needs–that that’s what they are there for, and if our needs aren’t being met, our partners have done something wrong.


A lot of folks say that you can never truly be friends with members of the opposite sex. In addition to being extremely heteronormative (does that mean a gay man can’t ever truly be friends with another gay man? That a bisexual woman can’t truly be friends with anyone?), it speaks, I think, to the notion that we tend to view folks through the lens of need fulfillment objects. For instance, there is a common (and misogynistic) narrative that says driving need of men is sex; any man who befriends a woman is, somewhere in his mind, doing so with the expectation that at some point he can get her to fill that need. I could write a book on how profoundly twisted that idea is, but that will have to wait for another time.

I think there are also signs of this objectification in the expectations for the way people behave after a romantic breakup. When a relationship–especially a sexual relationship–ends, there’s a social expectation that the people involved will revile each other; ex-partners who are on good terms with one another tend to be treated as something of an aberrant curiosity, like something we should be looking at from behind a roped-off area in a circus sideshow somewhere. Part of that is certainly that the ending of a relationship can be painful, and we are not really taught how to process emotional pain well; but part of it does point to the notion that if we break up with someone, it’s because that person failed in his or her duties to meet our needs, and why would we want to keep them around? After all, isn’t that a bit like hanging on to a broken toaster or something?

It seems obvious to me how a partner who is treated as a human being rather than a need fulfillment machine is still valuable even if one’s needs aren’t currently being serviced, but it also feels to me like this is something of a minority opinion.

The tacit view of a partner as a need fulfillment machine explains the way people often deal with problems in a relationship. Many relationships are predicated on the notion that if Alice is involved with Bob, and Bob needs something (particularly if Bob has an emotional need), it is perfectly acceptable for Bob to not only ask for it from Alice but to demand it–and pitch a fit if he doesn’t get it.

The need-based argument for poly (“one person can’t really meet all my needs, so I have more than one!”) is a direct statement of the notion that partners are need fulfillment machines. It assumes as a subtext that getting someone to meet your needs for you is the entire purpose of a romantic relationship, and if one romantic relationship isn’t enough, you turn to more than one.


My sweetie zaiah says that kids who go to sex-segregated schools are more likely to treat people of the opposite sex as a kind of faceless, undifferentiated Other than kids who don’t. I don’t know if that’s true or not, but it does seem that adults who see members of the opposite sex as The Other also seem more likely to treat their partners as need fulfillment machines than adults who don’t. Bookstore shelves are groaning under the weight of books that try to paint members of the opposite sex as The Other, some strange alien that you interface with in order to get your needs met, but who aren’t really fully individuated human beings. The Game, The Rules, Why Men Love Bitches…people are drawn to these books to help them puzzle out the mysteries of the user interfaces on these strange, otherworldly things that the can’t understand but nevertheless feel like they need. And from my perspective, it all feels more than a little fucked up.

Now, we don’t talk about it directly, oh no. We pretend that objectification is bad–the notion that objectification is wrong is writ into most of the arguments against pornography, for example–yet at the same time we are strongly conditioned to do the most objectification right where it’s closest to home, in our own romantic relationships. “I am in this relationship because I have needs. It is my partner’s job to meet those needs. A partner who doesn’t fulfill my needs is as useless as a broken toaster.”


This happens to some extent in a wide variety of interpersonal relationships, but it seems especially acute in romantic relationships. If we need to go bowling and for whatever reason our friend isn’t available, that isn’t likely to get the same kind of response that we might have if we need something from a partner and the partner isn’t available. For whatever reason, it seems that we are socially more predisposed to see our friends as fully and individually human than we are our partners.

In polyamorous relationships, the extent to which many folks seem to want to give their partners any measure of freedom only in direct proportion to how quickly we can yank the leash back if they aren’t doing their job fulfilling our needs. I’ve seen people place all sorts of limits on their partners’ behavior that seem calculated to make sure that all these external, secondary relationships do not ever impinge on our partner’s utility as a need fulfillment machine; the instant some external relationship comes between one’s need and the ability of one’s partner to fill that need immediately, look out.

I call this the Magic Genital Effect–the notion that sex changes the game in such a way that the person we’re having sex with is somehow less human, less deserving of autonomy, less able to negotiate around complexities, or otherwise less worthy of being treated as an individual human being an someone whose genitals we aren’t rubbing.


I recently saw a brilliant example of the Magic Genital Effect in a poly forum I sometimes read. A person in that forum argued that a big problem with polyamory is that the secondary will eventually want to be recognized as an equal partner, and that’s bad because it might cause disruption in the “primary couple” and in the primary couple’s social circle if they have friends who aren’t poly. He argued that an existing couple has a history together, and anything that might cause disruption to that is bad and must be avoided.

My take on that is that disruption is a part of life. Nobody ever has a relationship in which everything works with 100% smoothness 100% of the time. There are many, many stressors that can cause disruption in a relationship: losing a job, moving, being promoted, an illness or accident, anything. We develop skills for dealing with disruption, we talk about things when we feel out of kilter, we work together with our partner to get through difficulties or changes in the relationship–this is what makes a partnership.

And I asked the question, would you feel that it was bad for a couple who had a child to have another? After all, the existing child already has a history; the arrival of a new child can and quite likely will cause disruption. Things will change. Dynamics will shift. The old way will be disrupted. Why is that bad? What would we think of someone who says you should never have two children because it might disrupt things for the first child?

The answer, perhaps predictably, was “Primary and Secondary lovers cannot be compared to first born, second born because the love shared is not the same.”

This is fascinating to me. It’s the Magic Genitals Effect writ large; changes in one’s family life are not the same if we aren’t rubbing genitals. The notion that we might change the family dynamic and trust that we can deal with, work through, and communicate about disruption that occurs is totally taken off the table as soon as the genitals come out.


This goes back to the idea of partners as need fulfillment machines, I think. What makes the genitals special? We tend, rightly or wrongly, to think of rubbing genitals in the context of romantic relationships. Why do we assume that disruption is automatically bad in cases that involve genital-rubbing than in cases that don’t? Because the genital-rubbing part is one of the key pieces of seeing a partner as a machine for fulfilling our needs. In addition to their other utility in serving other needs, our partners are primarily objects for meeting our sexual needs, and if they aren’t doing that (for whatever reason) they are broken. Something is wrong. You don’t negotiate with your toaster if it isn’t toasting bread correctly; it would be absurd even to think that you and your toaster have a relationship in which a disruption in toast-making is something that you each work through through mutual conversation. Why does the “but that’s different” argument work when the magic genitals come out? Because we tend, I think, to be predisposed to seeing sex partners as need fulfillment machines, and to believe that if they aren’t filling our needs, they’re doing something wrong.

That’s the problem, at least as I see it. I’m not sure what the solution is.

Movie review: Prometheus

I had been waiting for Prometheus for months. As the day grew closer and closer, I was more and more excited. Ridley Scot? Directing a prequel to Alien, the movie that traumatized me for decades? Starring Noomi Rapace and Charlize Theron? Oh, yes please.

When the day came, zaiah and I stayed up just so we could hit the midnight show; the thought of waiting even another minute, let alone another day, was so absolutely painful that I’d almost rather sign up for a North Korean labor camp than wait.

So you can imagine my disappointment when the movie turned out to be a rambling, shambling mess, filled with implausible characters doing inexplicable things for incomprehensible reasons. As my friend zensidhe recently pointed out, there’s only one character in this entire disaster of a movie whose motivations for doing anything he did are even the least bit comprehensible or consistent, and that’s only because he’s a fucking robot.

So I’m not going to do a review of this movie. Instead, I’m going to turn this space over to a guest writer–namely, the version of me from an alternate universe, one where Prometheus was a very different movie indeed. Take it away, alternate me!


Hi! This is the alternate-universe version of Franklin. I’ve been asked to do a movie review of Prometheus, because apparently the one in your universe kinda sucks. From the sound of it, it came out really, really late, too. In my universe, Prometheus went into production in 2001, when Ridley Scott and James Cameron decided to co-write a prequel to the Alien franchise. It first ran in the summer of 2003, where it topped the box office charts for fifteen straight weeks, until it was edged out by the second Dr. Who movie, The Oncoming Storm.

Prometheus is a kick-ass movie, one of the best science fiction movies outside of the Culture movies. I have it on Blu-Ray and on holographic disc. The movie goes something like this:

The movie OPENS, with scenes that have nothing to do with ARCHAEOLOGY, CAVE PAINTINGS, or a BUFF ALIEN DRINKING BLACK GOOP AND THEN DISINTEGRATING INTO A RIVER

Sinister Weyland-Yutani Dude: We’ve discovered evidence of sapient life on other planets. We have assembled a spacecraft and crew to investigate. We promise our motivations are pure and our intentions are strictly honorable. Charlize Theron, will you lead the crew?
Charlize Theron: Certainly! What could possibly go wrong?

Charlize Theron and the crew of the Prometheus HEAD OUT to investigate the ALIEN CIVILIZATION

Charlize Theron: Wow, this alien species is very advanced!

The SINISTER WEYLAND-YUTANI DUDE does something UNSPEAKABLE

Charlize Theron:

Something REALLY BAD HAPPENS. People DIE. It SCARES THE HELL out of the AUDIENCE. We learn NEAT THINGS about the origins of the XENOMORPHS.

Charlize Theron: Holy crap this is a bad situation.

The situation gets WORSE.

Charlize Theron: Wow, I had no idea the xenomorphs could do THAT!

We learn about the origin of the SPACE JOCKEY during Charlize Theron’s daring ESCAPE

Audience: Man, that movie rocked!

That’s all I have time for. I’d write a longer review with more details, but we’re talking about a 9-year-old film here. Besides, the season eleven finale for Firefly is about to start, and I don’t want to miss it.

Noted without comment: Cars and Biology

We understand automobiles. There are no homeopathic automobile repair shops, that try to repair your car by putting infinitesimal dilutions of rust in the gas tank. There are no automotive faith healers, who lay their hands on the hood and pray. People reserve such superstitions for things that they don’t understand very well, such as the human body.

–Leslie Lamport, July 2003

I don’t understand people

So, as many of you readers of this blog already know, one of the many things I do is write erotica. The most popular thing I’ve ever written by far is a BDSM/non-con story, the Training of Eileen series, which concerns a woman who’s trained as a sex slave by her partner.

Now, of course, it gets a lot of emails. So many, in fact, that I detailed analysis of hundreds of emails I’ve received about the story, much of which were quite positive and some of which were, as could reasonably be expected with erotica in general and consent-play BDSM erotica in particular, negative.

None of that is terribly new.

However, what IS new is the email that landed in my inbox today.

The person who emailed me, who identified himself as male, wrote at great length about how the Training story shocked and terrified him. He relates, in the email, how the descriptions of the sex were so terrifying to him–more terrifying, he said, than anything else that he has ever experienced in his life–that the story now “haunts” him and has changed his life.

He seems, according to his email, to be so horrified by the story, and by the way the main character’s experiences are described, that he feels traumatized, and he seems to feel I bear some responsibility for what the story has done to him.

Okay, so different folks have different expectations and desires about sex, and what some people find titillating might be disturbing to other folks. I get that. In fact, many’s the time I’ve been quite shocked and horrified by graphic descriptions of unsatisfying, unfulfilling sex in the dark with the lights out between folks who are so ashamed of their sexual desires that they can’t muster the courage to ask for anything else, even though they don’t like the sex they’re having. But, hey, as long as we’re all adults, well, it takes all kinds, right?

But here’s the bit that baffles me.

The email demonstrates a knowledge of the entire story, or at least near enough to it so as it makes no difference. The story, taken as a whole, weighs in well north of 200,000 words, if I recall correctly.

So this suggests that a person has found a story that terrifies, horrifies, and traumatizes him, one which in his words sounds plausible enough that it has changed his perception of sex (for the worse, presumably, though he doesn’t quiiiiite say so directly)…and, once he realized what he was getting into, kept reading.

And reading. And then, read some more.

So: what am I missing? If this person really found the story to be that traumatizing, surely he could…stop reading it?

Is this why there are many folks who want to pass laws banning the things they see that offend them–because once their attention has been caught by something they don’t like, they can’t look away? I feel like I’m missing something here.

If you’re making that much of the question, the answer is probably ‘yes’.

Last week, I went in for another round of regular STD screening. I recommend that anyone who’s sexually active do this, of course, particularly before taking on a new lover or when a lover’s partner status has changed. In polyamorous relationships, it seems like basic common sense.

It will probably never win any awards for fun things to do; I don’t see Carnival Cruise Lines adding it to the featured activities on any of their vacation packages, for example. Generally, it’s one part filling out paperwork, one part having a needle inserted in one’s body in a non-erotic context, and one hundred and fifty-seven parts sitting in a waiting room playing with one’s smart phone or, barring that, staring at a crack in the linoleum that looks just a bit like Richard Nixon’s face.

And listening to the person behind the counter answer the phone.

It’s the phone part that was, for me, interesting enough to warrant a blog post. Now, mind you, whenever she answered the phone, I could only hear one part of the conversation, so what was going on on the other end of the line is a matter of pure conjecture. Still, on one occasion, the conversation (or at least the bit of it I could hear) hit a wall, to such an extent that if it were a scene in a movie I was writing a snarky review of, I would say that the dialog…wedged. It’s one of the few occasions I can think of dialog wedging in real life.

The conversation seemed to be going so well at first, until it hit the wall. It went something like this:

“Good afternoon, how can I help you? [pause] Yes, you need an appointment to come in. [pause] I have an opening at 11 AM on Friday. [pause] Later? Sure, no problem. I have another opening at 4 PM Friday, how does that sound? [pause] Okay, great. What will you be coming in for? [pause] Normal screening? No problem. Are you male or female? [pause] Okay, and are you under 24 years old? [pause] No? Okay, great. Are you having any symptoms? [pause] No symptoms, just checking. Right. Have you ever had sex with another man? [pause] Sex. With another man. [pause] Yes, that’s right, have you ever had sexual intercourse with another man? [pause] With a partner who is also male. [pause] Have you had a sexual partner who is a man? [long pause] Have you had sexual activity with a partner who is male. [pause] Yes, sex. With a man. Have you had a sex partner who is a man. [long pause]

At this point, I was called in for the sticking-with-needles bit, so I never learned if that conversation eventually unwedged itself or not. I do admit, however, that there is a bit of me, deep down inside, that suspects that if the question poses that much of a puzzler, the answer is likely something along the lines of “Yes, but I don’t want to admit to it.”

I suppose there are many take-home lessons that could be learned from that. For me, the one that seems most obvious is “this is one of many reasons it’s stupid to shame folks based on who they have sex with.”

How to date

Last time I was in London visiting my sweetie emanix, I spotted something in her pen-and-paper journal that I encouraged her to share online. Here it is: Let’s Only Date Grownups.

Computer Security: Enormous Twitter Attack

A while ago, I received a spam email. The email came from an obviously hacked attack, and contained nothing but a Web URL.

This usually means either a phony pharmacy spam or a computer virus. Since I am interested in these things, and since I keep virtual machines with redundant backups so I’m not too concerned about malware, I followed it. It lead to a GoDaddy site which redirected to a PHP redirection script living on a hacked Web site which led in turn to a fake antiviurs page–a page that throws up a phony virus “warning” and prompts the mark to download an antivirus program to “fix” the problem. The supposed “antivirus program” is, of course, actually malware. Pretty run-of-the-mill stuff. I reported it to the Web hosts and moved on.

Then, a few days later, I started seeing Twitter posts that were just a URL. These posts led to a hacked site…which led to the same redirector, which then led on to the same malware sites.

Then I started seeing more. And more and more and more. And still more.

I did a Google search. Just one of the hacked sites, an Indian site called cowmamilk.com, had over 257 **MILLION** mentions on Twitter, which some quick investigating shows were coming from at least 500,000 Twitter accounts that were being used to blast the URL far and wide. 257 million searchable mentions for just a single attack URL!

This is a huge scale attack, flooding Twitter with hundreds of millions of mentions of hacked Web sites that in turn redirect to a traffic handler which then sends visitors on to computer malware.

I did some more investigating, mapping out the patterns of redirections, visiting the sites again and again with my browser user agent set in different ways, watching what happened. After a while, I was able to build a map of the attack, which looks something like this:

And I found some really interesting things.

More technical details, as well as screen shots of the malware sites, under this cut. If you’re interested, clicky here!