Of Android, iOS, and the Rule of Two Thousand, Part I

A year and change ago, I traded in my iPhone 3G for an Android phone.

I blogged about my initial experience and first impressions of Android here. The phone I got was a then top-of-the-line HTC Sensation 4G, which was at the time I got it T-Mobile’s flagship Android phone. And for a short while, I quite liked it.

A lot can change in a year. When the new iPhone comes out in a couple of weeks, I plan to jump back to iOS and never look back.

Before I go any further, I should take a moment to step back and talk about how I feel about computing devices. I’ve been using computers since the days of the TRS-80; I got my first computer in 1977. And computer Holy Wars have been around for just as long. Back then, it was the TRS-80 vs. the Apple II vs. the Commodore 64; today, it’s Windows vs. Mac vs. Linux. Same song, different dance. What’s amazing to me is that even the arguments haven’t changed very much.

A lot of it, I reckon, comes from good old-fashioned need for validation. When you get a computer or a smartphone, you’re actually buying into an entire ecosystem, one that has a relatively high cost of entry (it takes time–quite a lot of it–to learn an operating system, and if you buy any software, you’re locked in at least to some extent to your choice. Sure, you can do what I do and run Mac OS, Windows, and Linux side by side in virtualization, but doing that has a significant barrier to entry of its own; it’s not what typical home computer users do.)

It;s hard to admit that when you’ve just spent a lot of dosh on a new box and crawled up that painful learning curve to teach yourself how to use it, you might have made a mistake. So people validate their choices, largely by convincing themselves of how awful the alternative is.

I’ve been using (and programming) Microsoft-run boxes since the days of MS-DOS 2.11 and Macs since System 1.1. In that time, I’ve developed a principle I call the Rule of 2,000, which put simply says that anyone with less than 2,000 hours’ worth of actual, real-world, hands-on experience with some platform or operating system is completely unqualified to hold an opinion about it, and anything they say about it can be safely disregarded.

So now I have a years’ worth of Android experience under my belt. What have I learned from it? Well, I’m glad you asked.


PART I: THE HARDWARE

Let’s start with the phone itself. My HTC Sensation, on paper, looks a lot better than an iPhone. It has a larger screen, a significantly better camera than what was available from Apple at the time, a replaceable SD-Micro card that means upgrading storage is quick and easy to do, and a 4G LTE data connection. By the specs, it is a phone significantly superior to the iPhone at the same time.

One of the problems that computer–and, lately, cell phone–Holy Warriors have never quite grasped, though, is that technical specs don’t tell the whole story. In fact, tech specs by themselves don’t make for a compelling product at all, except perhaps to a handful of rabid geeks. Steve Jobs grokked this. Geeks don’t.

The HTC Sensation suffers from a number of design flaws, probably the result of engineering choices designed to keep costs down.

When you hold a Sensation and an iPhone, the Sensation feels cheap. It has a removable cover, which allows easy replacement of the battery…but the cover isn’t especially tight and doesn’t fit as well as it could, making the phone feel a bit creaky. It’s plastic rather than metal and industrial glass. Geeks will claim that the packaging doesn’t matter, but they’re wrong; even the most hardcore geek would be unlikely to buy a computer housed in a plain cardboard box.

More importantly, though, I am currently on my third HTC Sensation, in a bit over one year.

When I got the Sensation, zaiah urged me to pay for the unlimited replacement warranty, and I’m glad I did. The phone has failed twice on me, both times in exactly the same way. First, the GPS starts acting flaky, taking longer and longer to acquire a signal. Then, the phone starts getting really hot when the GPS radio is on. Finally, the GPS radio fails completely, and any attempt to run a program that uses the GPS causes the phone to either freeze so hard I had to take the battery out to reset it, or crash and reboot.

I quickly got accustomed to seeing these screens in this order:

Those of you who have met me in person know that I have the navigational sense of a drunken baboon on acid; when I don’t have GPS, it is a Very Big Deal. The second phone’s GPS finally failed completely while I was on my way to a distant city a couple hours’ drive from home to meet with a new sweetie, and probably cost me at least an hour and a half spent with her…but I digress.

You will note that the signal bars in these screenshots are all over the map. This has been an unending part of my experience with Android, though I think it’s more down to T-Mobile than to Android itself. T-Mobile advertises full 4G coverage in Portland, and that’s technically true, though there are more holes in that coverage than there are in Ayn Rand’s understanding of American history. I can be traveling down Stark street right outside my house and go from awesome signal to no signal and back again in the span of six blocks. At one friend’s house, I have zero coverage, but at the corner shop down the street, I have four bars. WTF, T-Mobile?

Now, it’s possible I’m a statistical fluke and there’s nothing intrinsically wrong with the GPS radio in the Sensation. However, when I took the second failed phone into the T-Mobile store to request a replacement, the bearded hipster behind the counter told me his Sensation had the same fault as well, so I doubt it.


WAIT FOR IT…WAIT FOR IT…

An issue this phone has always had since Day 1 is a perceived sluggishness and general, overall lack of responsiveness.

I’m not 100% sure if this is a hardware or software issue. Certainly, the processor and RAM in this phone were both much better than in my iPhone 3G, so it should have plenty of grunt for a fluid UI. Yet using this phone often feels like trying to wade through frozen molasses in zero G. I saw, and still see, these messages frequently:

I tried rather a lot of faffing to make the phone more responsive (using a task killer to kill unnecessary processes and services, that sort of thing), and never got it to be good. The update from Android 2 to Android 4 was supposed to take care of a lot of this issue, but it would seem that “taking care of the issue” really meant “putting a prettier wait icon on the dialog.” (That’s Android 4 in the middle, up there.)

This is, I think, down to both hardware and software; a lot of the UI in iOS is hardware accelerated, because Apple makes the hardware and therefore can be sure that it will have the GPU to support hardware acceleration.

One interesting thing about Sense, HTC’s user interface: When you touch the screen, background processes and background updates to the UI are totally suspended. This means that, for example, when you start to slide from one panel to the next, the clock freezes. It also means you can’t do screen captures when you have your finger on the screen–something that’s actually significant, and that I’ll get to in part 2 of this piece, where I talk about the software.


OH, WHO’S A DIRTY PHONE? YOU ARE! YOU DIRTY, DIRTY PHONE!

Most of the time, I keep my phone in my pocket.

As it turns out, with the Sensation, that’s not a very wise thing to do.

The Sensation, like nearly every other smartphone I’ve used, has a little wake/sleep button on the top. You press it to wake the phone up. With the Sensation, the button’s mechanism is part of the back case, which wraps around the top; the button is just a little bit of plastic that presses down on the actual switch, mounted to the phone’s circuit board.

The plastic bit isn’t well sealed against dust and debris. When I say “isn’t well sealed,” what I mean by that is “isn’t sealed at all.”

Now, maybe the engineers who designed it have Class 5 cleanrooms in their pants. I don’t know. I do know that my pants are a considerably less clean environment.

In practice, what that means is that little bits of dust and grit get into that button, gradually rendering it inoperable. There’s a ritual I have to go through every couple of months: take the back off, blow all of the crap out of that little button, put the back on again. This is not something I experienced with my iPhone, despite years of carrying it in some astonishingly grungy pockets.

Even if you do have a Class 5 cleanroom in your pants, you’re still not well-advised to carry your Sensation there, because of an odd quirk the phone has which I’ve never been able to figure out.

Well, perhaps it’s less a quirk than a habit. Every so often, usually a few times a week, the phone will suddenly start heating up, until it becomes uncomfortably warm. All three of my Sensations have done this.

I’ve never found a pattern to it. It can happen when the cell signal is weak or strong. It can happen when the phone is on 4G or WiFi. It happens with no discernible background activity going on. There seems to be no rhyme or reason to it. I’ll just be riding in the car or sitting in front of the computer watching Netflix or hanging out with a bunch of friends, and wham! My pants are scorching hot. Rebooting the phone usually, but not always, solves the problem.


Technical specs do not, of and by themselves, make for desirable hardware. I really, really wish more people understood this.

Most of my complaints about the hardware of the Sensation come down to the same thing: attention to detail. Whether it’s attention to detail in the switch or attention to detail in the user interface, detail matters.

Geeks love hardware specs. DGeeks drool over the newest processor with twenty-four overclocked turboencabulators per on-die core and hardware twiddlybits with accelerated inverse momentum. And I think that’s a problem, because they don’t get that hardware specs by themselves aren’t enough.

Attention to detail is harder. It’s not enough to have the fastest possible processor in your phone, if the user interface is sluggish. It doesn’t matter if the phone has a shiny OLED backlight if dirt and grit keep getting into it because nobody paid close attention to the little plastic button on top.

Android is in a lot of ways the triumph of the geek over the designer. True Believers like to brag that Android outsells iOS phones because the geek cred of Android is so much better; personally, I suspect that it might have something to do with the fact that you can buy an Android phone for about $75 without a contract, and get one for free with a contract, from a large number of different places.

But that’s not really the issue. The issue, as I see it, is that my Sensation is clearly a superior phone on paper to my old iPhone, but the experience of owning it has left a very bad taste in my mouth.

Detail matters. Little things matter. The Android contingent of the Holy Warriors had an opportunity to make me a convert, and they failed.

In the next part, I’ll talk about the software, and how even after several major revisions, Android still has some things it can learn from iOS.

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.

If Microsoft Designed Facebook

About five or six years ago, before Microsoft decided they wanted a slice of the portable MP3 player pie and introduced the Zune, a video called “Microsoft Re-Designs the iPod Packaging” made the rounds of the Internettubes.

At the time, I was running a small consulting firm that shared office space with an advertising and design company, who was also my biggest client. I passed the video around the office, and it got quite a few chuckles. It’s spot-on what was, back then, Microsoft’s biggest marketing weakness: a colossal, sometimes hilarious, and always hamfisted incompetence in all matters of design. (Steve Jobs is reported to have once remarked “t’s not that Microsoft keeps stealing our ideas, it’s that they’re so ugly!)”

If you haven’t seen the video, it’s worth a look and a chuckle or two, even though it’s a bit outdated.

But I didn’t come here to talk about Microsoft. I came here to talk about Facebook.


Apparently, Facebook introduced a new design change today. I didn’t actually notice until someone called me up and asked my opinion on it; I rarely use Facebook. For the most part, it’s just a repository for my Twitter nattering. I hear it’s a big deal in some quarters, though, so I wandered over to take a look.

And my goodness, have they got things wrong.

Now, Facebook is ugly. Facebook has always been ugly. Most Web 2.0 properties are ugly. Web programmers, by and large, don’t understand design (or user interface), and like almost all computer people everywhere, they figure that anything that they don’t understand is not worth understanding, so they have contempt for design as well. To a Web 2.0 programming guru, design means making a pale blue banner with the name of the Web site and a line drawing of a logo or an animal or something on it and slapping it at the top of the page.

That’s not entirely the fault of the programmers, of course; the basic, fundamental structure of CSS discourages good design, just by making it more of a pain in the ass than it really needs to be. You can do good design in CSS, if you’re the sort of person who doesn’t mind doing linear algebra in your head while walking a tightrope stretched across the Grand Canyon with no net, and you don’t mind that it won’t render in Internet Explorer anyway…but I digress. Where was I again?

Oh, yeah. Facebook.

So. Facebook is a business, and a profitable one. Everything about it, from the back-end infrastructure to the HTML that appears on the home page, is about making money. That means that any analysis of anything they do, including changing their design, needs to be done through the lens of how it benefits Facebook financially. And the new design is clearly intended to do that.

Unfortunately, they take the same approach as Microsoft: throw everything that might make money (Third-party endorsements! Bullet points! Big colorful discount offers!) at the wall and see what sticks. Each individual design decision, by itself, has a financial goal…but the end result is a mess.

Good design is worth money, too. People gravitate toward it–and here’s an important bit–even if they don’t understand it. There are a lot of folks who hate Apple, but their design strategy works.

And the evidence is written all over the Web 1.0 wreckage. Take Yahoo’s home page (please!). Yahoo, desperate for money, decided to keep packing crap onto the home page. News, video ads, horoscopes, music, movie trailers…each element, by itself, either directly or indirectly brings in money.

Yet Yahoos proverbial clock has well and truly been cleaned by Google, whose home page is Spartan in its simplicity, and yet who makes money faster than the U.S. Mint can print it.

Design matters. Today’s Facebook looks like a social networking site designed by Microsoft in 2005, only creepier.


For me, it’s the creepiness factor that really does it.

I’m used to Web 2.0 being ugly. I’m resigned to it. Examples of beautiful Web 2.0 design are about as thin on the ground as snowmen in the Bahamas, and on some level I’ve simply accepted that and moved on.

But the new Facebook design? It’s like someone took Microsoft’s aesthetic and combined with with Google’s tentacular creepiness, and put the result in one place.

In the past, my Facebook wall was a chronology of what was going on in my friends’ lives. Now, I don’t answer most Facebook friends requests, unless they come from folks I know to one degree or another, and apparently that’s a bit unusual. But my Wall was useful; I could glance at it and see, roughly, what was going on in more or less chronological order, and that seemed like it worked just fine.

But now? The “top posts” on my wall come from Facebook’s attempt to understand me and my interests, and that’s a bit freaky. “Hmm, I wonder what Franklin might be interested in today? Let’s see if we can tease that out and then show him what we think he’ll want to see.”

It’s as if a stalker camped out on my doorstep, went through my garbage, read my mail, followed me around town, poured over my grocery receipts, made detailed lists of everyone I spoke to and when…

…all for the purpose of cutting up and rearranging my newspaper so that the articles he thought I’d like the best were on top.

So that, y’know, I would buy his newspaper.

Creepy.

And it gets creepier when I look at Facebook’s suggestions for my “close friends” list. Facebook not only wants, in its particularly stalkeriffic way, to know what sorts of subjects interest me, it also wants to know who my REAL best friends are. And not content just to ask me, it…makes suggestions.

Suggestions that world-class supercomputing infrastructure has been brought to bear on. Suggestions that involve analyzing every little telltale crumb of information I let it have.

Google, to be fair, is just as creepifyingly stalkeriffic as Facebook; it’s just (slightly) less in my face about it. Google stalks me to know what sorts of ads to present to my eyeballs; Facebook stalks me to make things easier for me.

Thanks, Mark “The Age of Privacy is Over” Zuckerberg. At least you’re refreshing in one sense; you’re one of the few business bigwigs who actually puts his words into action.


Since I started this with a video, it’s reasonable to end it with a video. It shows Steve Jobs, until recently the CEO of one of the most financially successful businesses in history, responding to an openly insulting question about his return to Apple with grace and dignity. Granted, he’s basically a sociopath, but the interesting bit is when he talks about prioritizing user experience over technical faffery. He’s another of the few business leaders who practices what he preaches, and I think the example of Apple Computer shows that priortizing design and user experience can be profitable too.

“You’ve got to start with the customer’s experience and work backwards from that.”

Random musings on my Web sites

I spent some time curled up with a Mountain Dew and Google Analytics this morning, looking at the traffic on my Web sites and trying to figure out better ways to try to make money from them. My most popular site, xeromag.com, is mostly a hobby site; the ad revenue I make from it barely pays for bandwidth (and often doesn’t even do that). My BDSM site, symtoys.com, is the main place I sell my sex game Onyx and posters of the Map of Human Sexuality.

Google told me all kinds of interesting things about both sites, some of which were rather surprising and unexpected. For example:

– The main Web site, www.xeromag.com, sees about 60,000 unique visitors a month. Most of them (62%) come from Google search results.

– The most popular search terms that land folks on xeromag.com have to do with BDSM; the top search terms are “BDSM,” “kinky sex ideas,” “bondage ideas,” and “BDSM ideas.” Polyamory is fairly far down the list. However:

– Folks who use search terms related to polyamory spend a lot longer on the site (5 minutes 44 seconds per page average visit) than folks who use search terms related to BDSM (2 minutes 17 seconds per page average visit).

– The stickiest search term, at over 8 minutes average visit length, is “being a second in a polyamorous relationship.”

– The search terms that lead to the most page visits all have to do with Myers-Briggs compatibility, with about 300 visitors a month coming into the site on keyword searches related to MBTI, and a whopping average of 33 page reads(!) per visit. You read it here first, folks: Myers-Briggs personality typing is the gateway drug to BDSM and polyamory.

– The most popular pages on the Xeromag site, in order, are the BDSM scenarios page, the BDSM FAQ, the BDSM glossary, the polyamory FAQ, and the parody of the MBTI personality typing system. The grammar cheat sheet comes in sixth.

– The most popular search term that lands people on the grammar page? “Peaked my interest.”

The Symtoys site had more surprises. Chief among them:

– The most popular page on the site? I would never have guessed this: How to make an ice dildo.

– The site is sticky; the average visit length is about 4 minutes, and the average number of pages viewed per visit is 4. However, it also has a high bounce rate; factoring out folks who come in and then immediately leave, the average length of a visit is about nine and a half minutes(!).

– The most common search terms are “sex game,” “onyx game,” “breast bondage,” “how to breast bondage,” and “karada breast bondage.” About 1/3 of the top 250 search terms include breast bondage in some way. Apparently, there are a lot of folks who are really interested in tying up their partner’s breasts out there Maybe I should do some more tutorials on the subject.

– Some weird search terms get folks to the Symtoys site, such as “honey his cock is so big,” “DIY PVC,” and “creative uses for frogs” (that one has me baffled–if folks are using frogs in the bedroom, I don’t want to know about it!).

– StumbleUpon sends symtoys.com three times more traffic than Google does (WTF?).

After considering all this data, I have come to the conclusion that I really don’t understand half of what goes on on my Web sites.

Dear God, what can of worms am I opening?

Okay, so my ‘main’ Web site has been on the Interweb for more than twelve years now, which is, like, 614 years in Internet time. It’s hundreds (literally, hundreds) of static HTML pages, each with a hand-coded navigation system. That means it’s clunky, inconsistent, and a big honkin’ pain in the fucking ass to update. It is time to reign in the madness.

I’m considering, God help me, moving the whole mess to a content management system. I’d kind of prefer one that doesn’t suck, but figmentj says there’s no such thing as a CMS that doesn’t suck–the only thing you get any say over is how bad it sucks and in what way it sucks.

Here’s what I’d like:

– Security. I don’t want to have to install security patches every three days and I don’t want to get pwned if I don’t.

– Flexibility. I don’t want to port every page over to the CMS, but I do want to port big sections over. I want hard-coded, static HTML pages to be able to live happily side by side with CMS-managed pages, and the navigation to work consistently across all of them.

– Template flexibility. I do not want the entire site to have the same template; I do not want the whole thing to get poured into the same HTML containers. I want, for example, all the BDSM pages to have a consistent look, all the polyamory pages to have a consistent look, but I want to make the BDSM pages look different from the poly pages.

– Ease of updating. WordPress sets the bar here. When I log on to WordPress, if there’s an update, there’s one button that installs the update automatically–downloads the files, unpacks them, installs them, updates the back-end database, all with a single click and all without disturbing any settings or customizations. If WordPress can do it, I figure other people should be able to do it too.

– The ability to incorporate JavaScript (even if it’s built against a library like Jquery or Mootools) into pages as I please.

– Compatibility with analytics tools.

– The ability to specify an exact URL on managed pages. This is very important. Right now, for example, my BDSM page at http://www.xeromag.com/fvbdsm.html has awesome Google rank and literally thousands of inbound links. I do not want this URL changing to something like http://www.xeromag.com/cms/scripts/showpage.php?sectionid=4&pageid=23 and I do not want to create redirectors from existing URLs to point to the new, managed page URLs. The ability to do this is non-negotiable and is an absolute dealbreaker for any CMS that can’t manage it.

– An optional comment system that can be turned on or off on a per-page basis.

– Free and open source.


So, lazyweb, whaddya think? Am I living in a Utopian fantasy dreamland where naked mermaids cavort with dolphins under a cotton candy sky, or is this actually going to be doable? Is there a CMS out there somewhere that will do what I want?

Yet Another Side Project

I know there are quite a few Macintosh folks on my flist. The rest of you can move along; nothing to see here.

A lot of folks in the Mac community are familiar with MacFixIt.com, a long-time Mac troubleshooting and forum site that’s been with us for about thirteen years. I have been a MacFixIt forum user for nearly that entire length of time, and managed to rack up just over 12,000 posts during my stay there.

Alas, all good things1 must come to an end; recently, Cnet News bought MacFixIt and closed it down.

Which is a damn shame, because the forums there represented what was arguably, minus a few hiccups, one of the best Macintosh communities on the Web.

So I opened my mouth, which is often foolish, and said hey, wouldn’t it be cool if some enterprising person set up a forum to replace it and we could all move over there? And other folks said hey, great idea, Tacit, when will you have the new place ready for us?

So I am pleased to announce the formation of a brand-new Mac community, Fine Tuned Mac.

Anyone out there who’s interested in a Mac community, I invite you to join us! We don’t bite2, and if you need any troubleshooting help, you’d be hard-pressed to find a more knowledgeable bunch3.


1 Except me, and many of my friends and partners, I hope.

2 Much.

3 Well, us and TechSurvivors, another Mac troubleshooting forum I like and recommend.

How I wake up

Uncompressing kernel……done.
Loading kernel………………………

FRANKLIN version 8.4(1) loaded. Good morning!

Loading sex drive framework….done.
Current arousal level is 8 (0-9)

Loading soundtrack…done.
Current music playing inside your head is:
VNV Nation, Standing

Loading device drivers………….. *FAILED*
Loading device drivers………….. *FAILED*
Loading device drivers………….. *FAILED*
Throttling respawn
Loading device drivers………….. *FAILED*
Loading device drivers………….. *FAILED*
Loading device drivers………….. *FAILED*
Loading device drivers………….. *FAILED*
Note: Last message repeated 47 times

Loading device drivers…………..done.
Probing devices:
Found 2 arm(s)
Found 2 leg(s)
Found 1 head(s)
*** WARNING: Head hurts, skipping further integrity checks
Found 1 sex organ(s)
Note: Current arousal level changed to 9 (0-9)

Loading speech centers… *FAILED*
Will retry in background

Registered new device: hands
Registered new device: feet
Registered new device: nose
*** WARNING: nose hurts, loading diagnostic
Registered new device: eyes
Initializing visual centers…… *FAILED*
Initializing visual centers…… *FAILED*
Initializing visual centers…… *FAILED*
Note: Last message repeated 16 times
Initializing visual centers…… done, loading object recognition framework
*** WARNING: nose hurts, loading diagnostic
*** WARNING: nose hurts, loading diagnostic

Initializing to-do list… done
Note: “Go pee” moved to top of to-do list
Note: “Go pee” urgency changed to 7 (0-9)
Loading speech centers… *FAILED*
Will retry in background

Current runlevel is now 1
*** WARNING: nose hurts, loading diagnostic
*** WARNING: nose hurts, loading diagnostic
Initializing object recognition framework…………..done.
Identified 1 object(s): pillow
Identified 1 object(s): pillow
Identified 1 object(s): pillow
Identified 1 object(s): pillow
Identified 1 object(s): cat
Identified 1 object(s): blanket
*** WARNING: cat is biting nose
*** WARNING: cat is biting nose
Note: Last message repeated 15 times
Note: “Go pee” urgency changed to 8 (0-9)
Loading speech centers… *FAILED*
Will retry in background

Current runlevel is now 2
*** WARNING: nose hurts, loading diagnostic
*** WARNING: cat is biting nose
Loading motor control…….done.
Note: “Move cat” moved to top of to-do list
Note: “Move cat” urgency changed to 9 (0-9)
Loading speech centers…done
Note: “Go pee” urgency changed to 9 (0-9)
Note: Added “Find food” to to-do list
Note: “Find food” urgency changed to 8 (0-9)
FRANKLIN version 8.4(1) running on device 0 runlevel 2
Good morning, Franklin! Time to face the day!

Score one more for the good guys!

According to this article on CNet News, the Federal Trade Commission has just shut down an ISP called Pricewert, which had sought to act as a one-stop shopping center for spammers, child porn, botnet operators, and virus and malware distributors.

Pricewert operated as a Web host under a bunch of different names–3FN.net, Triple Fiber, APS Communications, and a bunch of others.

I first became aware of 3FN back in February of 2008, when I started seeing spam for all kinds of porn sites hosted on their IP space. The spam I saw generally involved URLs hosted on 3FN that redirected to the affiliate sites of large pay-for-access porn sites–a common spam tactic I’ve seen before, especially from big-name offenders like Streamate.com.

Pricewert/3FN’s business extended well beyond spam, though, and into hosting for botnet command and control servers, virus droppers, malware distribution, and even kiddie porn. In other words, about business as usual for an ISP in a place like the Ukraine or Latvia, but somewhat surprising for an ISP in the US. (Somewhat surprising, at least, until you consider that the founder of Pricewert/3FN was from the Ukraine, where the business culture is such that hosting malware, child porn, and botnet control servers is part of any ISP’s normal revenue stream.)

And here’s the part where I get all Ranty McRanterson.

What’s really, really, really disappointing to me is how poor the US ISPs and backbone providers are at policing themselves, and how even egregiously illegal activity is tolerated by the vast majority of Internet service providers.

3FN’s upstream providers knew that 3FN was a rogue ISP hosting criminals involved in spam, viruses, and malware. I know for a fact that they knew this, because I told them myself, with detailed evidence. In February of 2008. And in March of 2008 (four times). And in June of 2008. And in July of 2008. And in…well, you get the idea.

There is, in the world of ISPs and Internet connectivity, a tacit understanding that any sort of illegal activity, including identity theft, malware, fraud, and computer virus distribution, will be tolerated so long as it doesn’t create too big an uproar and so long as ISPs occasionally move the offenders around from one IP address to another. Even child pornography is not going to create a problem so long as the hosting ISP removes or moves the child porn if they receive complaints.

ISP abuse employees do not generate revenue for an Internet company. In fact, they cost a company revenue. For that reason, ISPs will often hobble their own abuse teams (I sent seven complaints to one ISP about a hacked server on their network over a period of two months, only to be told that the abuse people were not permitted to take down the server until eight weeks after they had notified the owner to fix the problem–which is about like calling the fire department because your neighbor’s house is on fire and the flames are spreading to your house, only to be told that the fire department would mail a notice to your neighbors, and would send the trucks out in eight weeks if the neighbors hadn’t taken care of the problem themselves by then).

ISPs make money by selling hosting and bandwidth to people. Every site they take down is lost revenue; every downstream service provider they cut off is a lot of lost revenue. They’re not going to lose that revenue unless they’re forced to.

Case in point: The rogue hosting provider McColo, which was notorious for hosting child porn, computer viruses (they were a preferred host for the Russian Zlob gang and for the Asprox virus gang), and credit card identity theft rings (Fraudcrew hosted sites on McColo), yet remained merrily in business, with no problems from their upstream providers, for four years in spite of the fact that it was widely known and publicized that McColo catered exclusively to criminal clientele.

And, sadly, that’s the norm, not the exception. Upstream and backbone providers will cheerfully provide connectivity to known-rogue ISPs even though the rogue ISPs violate not only the law but also the upstream providers’ Terms of Service. Global Crossing, a mainstream, respectable business, knew that McColo was hosting computer viruses and child porn; they simply didn’t care. The money of organized crime spends just as well as the money of honest businesses, and often there’s more of it.

In the ISP world, often government intervention is the only way to shut down these operators. History has proven, conclusively, beyond all shadow of doubt, that ISPs and connectivity providers absolutely, positively can not be counted on to police themselves; left to their own devices, they will permit just about anything to happen on their networks. The ongoing corrupt business practices of US ISP Calpop, for example, is ample proof of that.

It pisses me off to no end to see an entire industry that has, for all intents and purposes, quietly agreed to permit organized crime, identity theft, and child pornography on their networks as long as there’s not too much of a fuss about it, and to take action only against the one or two most extreme offenders after many years of operation. While I do not normally see government intervention as a good way to solve business problems, in this case I do not believe the ISPs will ever police themselves effectively, or even want to; there’s too much money in allowing this sort of network abuse. Given how widespread the problem is, I do not think there is any solution other than tighter regulation of criminal activity on the backs of ISPs’ networks.