The Drupal Attitude

I’ve been doing some geekery with Drupal lately. Drupal is a free, open-source server application that makes it easier to build really complex Web sites. It allows you to create complex data types and establish relationships and do fancy database stuff… without actually touching the database. That’s not too shabby. Drupal is rapidly becoming more popular, but there are a few things standing between Drupal and world domination. At the top of the list is the Drupal Attitude.

I will illustrate with an example. Things will get geeky for a while as I set the stage, then mellow out as I focus on the human interactions between various groups.

From a technical standpoint, Drupal’s biggest flaw is that it sucks when it comes to many-to-many relationships. Imagine I have a data type called “shirt” and another called “color”. It is very easy for me to set up “shirt” so that it can have several colors. So, when I look at a specific shirt in my database I can see that it has red and yellow in it. That’s all pretty straightforward.

The catch comes when I want a list of all shirts with yellow in them. If I had direct control over the database, many-to-many relationships like this are trivial and do not diminish the performance of the server. Drupal has no built-in way to get a list of all shirts with yellow in them.

But wait! Drupal is open source, and better yet has been built to be easy to extend by outside programers. Into this glaring hole in Drupal several folks have stepped forward with modules that solve the problem in a variety of different ways. Some of these methods are clever (one uses the indexes built by the search engine, for instance), but all have trade-offs and weaknesses.

So, you’re a Drupal developer, and you want a list of shirts with yellow in them. Which module do you use? Each module works differently, each requires some installation and fiddling to get working. Then there are the two modules by the same guy that are for similar but different purposes, yet the actual differences are not spelled out very clearly. What would help a lot would be some concrete examples of when to use which.

Now we’re getting closer to the Drupal Attitude. Remember as I rant about this that all the modules I’m evaluating are free, posted by geeks who wanted to contribute to make Drupal better. So, some slack-cutting is in order. BUT…

I had already spent more time than I had available trying to figure out which module to use, when I found a question posted by a guy asking “can I use this module for x”, where x was very similar to what I needed. “Aha!” thought I, “Now we’ll get a definitive answer!” Except that the response to the question was, “In this discussion (the article was about the differences between two modules) we want to focus on generalities, not specific applications. You should download both modules and fiddle with them for a few hours to determine which is right for you.” Or something like that. Notably absent from the answer was a pointer to where specific questions would be answered.

The guy who asked the question responded a bit harshly, pretty much saying, “Would it kill you to just answer my question? I don’t want to spend hours learning something you already know and could tell me in fifteen seconds.”

Well, this is just the sort of uppity user that the Drupal community loves to hate. Several people piled on in defense of the developer who had refused to answer the question. “He’s doing this for free, he’s helping the community, you should be grateful, blah, blah, blah.” None of them deigned to answer the original question either. There is a real, entrenched cadre in the Drupal community that says, “we learned things the hard way, and you should too.” Who needs documentation when you can read the source code?

Let’s step back for a moment and ask ourselves, “Why did the developer give this code back to the Drupal community?” The obvious answer, the one everyone talks about, is that he wants to make things easier for other Drupal users. That is a noble motivation and one I wholeheartedly support. He wants to be useful. Perhaps he just isn’t aware that a huge part of utility of software lies in the documentation. Perhaps he isn’t aware that a few choice examples of what his modules are meant to accomplish would have cost him an hour of his time and improved the acceptance of his work dramatically. He’s a coder, after all, not a marketer or a technical writer.

Even with all that, however, when someone, in the form of a question, contributes to the documentation by providing a specific example, he didn’t answer the question. No light came on that even if that was not the place for the question, then spending five minutes creating an FAQ would have helped the community far more than adding a new feature to his software. So an opportunity to spend just a few seconds and make his contribution to the community better went completely ignored. His supporters congratulated him for not capitulating to the demands of his potential users for more clarity.

Any of them could have stepped up and helped the newbie, probably in ten words or less, but none did. None of them wanted improved documentation. “We had to learn it the hard way, so you should too,” with a side order of “we make lots of money because we’ve figured all this stuff out.” Ladies and gentlemen, the Drupal Attitude.

If the guy posted his module but doesn’t seem interested in making it useful, then why did he post it? Well, he’s certainly getting lots of love from the people who figured out his work the hard way. They can all feel good about how smart they are.

And in the end, should I be thankful this guy shared his work with the rest of us? Actually, no. In my case, the presence of his modules ultimately had negative value. They cost me time, and never getting an answer about which was appropriate for my task, I went with a module developed by someone else.

So, Drupal contributors: If you don’t want to document your module, and you don’t want to answer straightforward questions from people who need to get a job done in limited time, don’t bother posting your fucking module at all. I don’t have time for endless fiddling and I sure as hell don’t have time for the Drupal Attitude.

1

Novel: A Novel

According to the back cover of the book, George Singleton is a ‘master of the comic short story’. He has been published in some pretty impressive places, and I like humorous prose, so despite some rather negative things my sweetie said about the book, I secretly held hopes that her negative experience was more an issue with Singleton’s style and that I would enjoy the ride.

Novel is written in the first person, narrated by a man named Novel who spends a significant chunk of the story trying to write a novel. Because of a divorce surrounded by an odd series of events, he finds himself in the backwater South Carolina town of Gruel. Gruel is populated by an odd assortment of characters, but it is a dying town. The locals are convinced that Novel’s novel will put them on the map, and rekindle the economy of the town.

The book is written in a rambling, meandering style that took me along with it. Believe me, I know rambling. The opening two-thirds of the book is about our narrator bumbling along, becoming increasingly paranoid, and telling and retelling his history — which changes, evolving in a very interesting way. There’s a lot of foreshadowing in the opening 75%, which is to say we haven’t really got to the plot yet.

Mr. Singleton’s humor shows through, as do his short-story leanings. In a short story he wouldn’t have had time to beat some of the jokes into the ground with such force. (For instance, his adoptive older siblings are named James and Joyce, and “James, Joyce, Novel” is worked pretty hard.) Other parts seem like they’re in there to set up some sort of comic payoff, but never come through.

One of the jokes Singleton beats on quite often is “Books about writing novels say never to do…” and then in the next sentence he breaks that rule. He breaks a lot of rules in this book, and seems to think that pointing out that he knows he is breaking the rule makes it all right. Usually what he accomplishes is to demonstrate by counterexample that the rules exist for a reason. Rules are made to be broken, but not just so you can point at the rule like a proud three-year-old who just broke a vase.

The town has secrets, lots of secrets. As we learn more about the people of Gruel, we discover that they are not the simple, naïve country bumpkins we first thought. Oh, no, not at all. That’s pretty cool. But wait — under a veneer of obtuseness, their plan for Novel is woefully simple-minded. How do these savvy people ever buy into it? The contradiction is never resolved, in fact, Singleton is caught in his own trap. All the characters he introduces are against the grand scheme for Novel. He can’t show us any of the people who think the plot is a good idea, because they would betray the inherent contradiction.

At the end, lots of things happen. Everything comes to a head, people are coming out of nowhere (James and Joyce? But why?), and our boy Novel is in the thick of it. Then a Huge Coincidence occurs, and everyone shrugs and goes home again, nothing changed, nothing resolved, and a lot unexplained; humor pistols loaded in the first act lie undischarged in the third.

The book grinds to a stop leaving a big a pile of unresolved events that we had passed, that I assumed would have some sort of significance. Just why the hell did the owner of the surplus store want Novel to find the knives buried behind the hotel? As I closed the book, I felt like there was some big explanation I’d missed (notwithstanding the big explanation that was provided). I suspect it never left the author’s head and found its way to the page.

I mentioned in a previous review that just because an author is writing a farce doesn’t mean he can just throw out a new coincidence whenever he loses momentum; everything still has to hang together and make sense in that farcical context. I don’t think Mr. Singleton has learned that lesson yet.

Note: if you use the above link to buy this book (or a Kindle, or a new car), I get a kickback.

2

None of Your Damn Business

After reading a post in my buddy’s blog (and the articles that post links to) about National Security Letters I started to get more and more irate. Apparently, our government sends out thousands and thousands of letters to Libraries, Web hosts, and the like, saying, “We’re the government, we’re fighting terrorists, so give us everything you have about this person. Also, you’re not allowed to tell anyone about this, not even your lawyer.” This is not like a search warrant, because there is no judicial oversight.

The FBI’s use of national security letters to get information on Americans without a court order increased from 16,804 in 2007 to 24,744 in 2008. The 2008 requests targeted 7,225 U.S. people.

Read More

Those are all requests for personal information with no warrant, no need for probable cause, and no right to legal counsel even for the people who are not themselves under investigation. I’m not a trained legal scholar, but good lord, this can’t possibly be constitutional.

Well, it’s not like I have anything to hide, but if my ISP got served with one of these letters, would they turn over the information, or would they fight? Would Google protect the emails mouldering in that account that I rarely check? What about my Web hosting provider? I would love to see each entity that has my personal information publicly state that they will not turn over information without due process.

The only way this governmental bullying will be stopped is if everyone agrees not to be intimidated.

On a personal level, I’ve decided to start a policy of encrypting my emails. Not because there’s anything incriminating in there, but because if only secrets are encrypted, then everyone knows where the secrets are. And really, it’s nobody’s business but mine what I put in private correspondence. If everyone encrypted all their messages, the constitutional rape called National Security Letters would be pointless.

Toward that end I have installed Gnu Privacy Guard, which is based on OpenPGP (Pretty Good Privacy), a system which can withstand any attacks feasible at this time (naturally as computing power increases, the encryption must be made ever-more sophisticated).

It takes two to pass a secret message, however. I’m not able to encrypt messages to people who do not also have GPG or PGP installed, and who do not have my public key. The system works with a pair of keys – one I keep secret and another that everyone can see. When the message is encoded using one key, it can be decoded using the other. So if I have your public key, I can encode a message that only you can read.

It’s a bit of a hassle to set up GnuPG (available for Mac, Windows, and Linux), but once you have your key generated and all the pieces in place, it’s pretty transparent to use. My public key is now available on many servers, so once you have the plugin to your email program installed, it’s easy to load.

You can learn more through the link called “Jerry’s public key” on the sidebar in the top section. Please join me in taking the teeth out of National Security Letters and the bullying bureaucrats that use them.

Addendum: Comcast’s privacy policy states that they will not disclose information without a subpoena, warrant, or “other valid legal process”. Then they go on to say they will also disclose information if they think “the disclosure of information is necessary to prevent financial loss“. That means they reserve the right to sell out their customers if they think they could end up incurring legal costs to protect them. Sigh.

5

Open Letter to the Guy with the Battered Flag on his SUV

Yes, I’m talking to you. You know who you are; you’re the guy that thinks flag-burning should be constitutionally banned, yet you drive around with a tattered, battered mockery of the flag and the country it represents. Oh, I know you felt proud when you put that little flag on there. DAMN I’m a good American! Let’s all stand up and salute (me)! Just remember: when you bought that flag, you also took on responsibility.

Then you continued to fly that flag in the rain, and at night. Huh. Kinda disrespectful there, Sparky.

Now your flag is much the worse for wear. It is truncated, and the edge is tattered to threads. The dyes have all faded, especially the red, so that the stripes are barely discernible. Yet still you parade around with this thing attached to your car. How is this not worse than someone burning a flag as a conscious exercise of free speech?

There used to be a lot more of you. In the last patriotism boom millions of folks bought (incorrectly packaged and handled) little flags and put them on their cars. Look at me! I love America! What happened to all those little flags? I’ll tell you what happened: those patriots threw them in the trash once they got too tattered. Somehow sending a flag to rot in a landfill is not as bad a burning it.

Which brings me to the US Flag Code. You’ve already abused the hell out of the part that says “The flag should never be fastened, displayed, used, or stored in such a manner as to permit it to be easily torn, soiled, or damaged in any way.” (This is under the section titled “Respect for the Flag”.) It’s time to move on to disposing of your shameful insult to your country. What are you going to do? You’re not going to just throw it away, are you? You’re a patriot! The flag is a symbol of your country! That’s why you’re flying it in the first place. So what are you going to do?

How about “The flag, when it is in such condition that it is no longer a fitting emblem for display, should be destroyed in a dignified way, preferably by burning.”

Yep. You should burn that American Flag. Of course, this won’t be the camera-drawing antics of a hippie protester, but instead will be a solemn occasion while you consider the flag, what it stands for, and respect the service it has done. Gather the kids around to pass that deep respect on to the next generation. I recommend flagkeepers.org as a reference for the proper way to respectfully dispose of your little plastic badge of patriotism.

Gah! You’re going to throw it in the trash anyway, aren’t you. Yeah, you’re a real patriot.

2

Hacked!

Some of you may have noticed on this site a black-and-red screen with a self-congratulatory message from a bunch of assholes who are not me. Naturally this occurred when I was out in the middle of Nevada, so it took a while before I was able to effect repairs. Things are (mostly) working now. Actually, I had them fixed even before the hosting company became aware of the problem, apparently. The time they cite for the intrusion was 10pm July 3rd, but it was 10am or even earlier that the attack occurred. That fills me with confidence. (Maybe it’s just a typo in their message.)

My hosting company is setting up a new server and will be restoring this site from backups that are a few days old. Hopefully I’ll be able to update the database (no affected) to include episodes (like this one) and comments that have happened since the hack.

I assumed at first that the brand-new version of WordPress might have a security exploit, but then I discovered that jerssoftwarehut.com and all the sub-sites I have on that server (except paseeger.com, for reasons I can’t figure), were hacked. Then I tried to get into the control panel and it was hacked. That takes more access than even I have; the control panel code is off in some other place. No, my Web host was hacked.

I do not yet know whether the credit card fraud protection kicked in at about that time as a result of actual fraud or because I was traveling and some robot flagged the behavior as suspicious. It looks like there might be some bogus charges, but I won’t know for sure until I can talk to an actual human tomorrow. (I did talk to a human in India, but she was unable to access the information I need.

So now I have no credit card, and the ATM powers of the same card seem to be suspended as well (that or I’m misremembering my PIN). All the cash My sweetie thrust upon me for the trip, more than I would have taken otherwise, has proven a lifesaver.

Once I had a glowing recommendation for MM Hosting on this site. I really liked them at first; their service and responsiveness was fantastic. Things have been going downhill with them for a while, and I had already been investigating other options that gave me more control. Inertia has kept me here for the most part. No longer. Goodbye, MMHosting. I’ll be asking for a refund for the remainder of my contract.

Rite of Summer

First sunburn of the year

I was only out for a quick errand...

Yep, it’s my first automotive-related sunburn of the year! I made it almost halfway through June this year — not bad.

Medical Fun Fact!

Hey! did you know that even after your fortieth birthday you can spontaneously develop serious food allergies to things you’ve been able to eat your whole life? I had no idea such a thing was possible until my sweetie and I shared a shrimp salad, just like we’ve done before. Only this time… yow!

She’s OK now.

1

Lost in Translation?

Even if you’re not a programmer, take a look at the following lines of code:

public function sendCommunication($oCommunication)
{
    if (self::emailMode != EMAIL_TEST_MODE_NONE) {
        if (self::emailMode == EMAIL_TEST_MODE_LOGGED_IN_ONLY) {
            // DO NOT COMMENT OUT THE FOLLOWING LINES
            // EVER
            // FOR ANY REASON
            // INSTEAD CHECK THE TEST MODE AND SET THE ADDRESS FIELDS ACCORDINGLY
            $oCommunication->to = $oCommunication->from;
            $oCommunication->cc = '';
        }

Now, I ask you, even if you’re not a programmer, you know there’s one thing you would never, ever, do to the above code. Right? Now let’s say you are a programmer, a professional, being paid because of your ability to find solutions to problems and express them in an abstract language.

Now further imagine that changing the above code can lead to the customers of the people paying for this work getting spammed with confusing emails with our client’s name on them.

Yeah, you guessed it.

1

Jer’s Software Hut Falls Silent

The shadowy, misshapen minions have all gone home; the vast underground chamber that once rang with their chants as they turned the giant wooden capstans has fallen silent. The river of lava flows unimpeded, the precarious rope bridges spanning it falling into disrepair. Above, the streets of Sky City Research Facility, once teeming with antigravity cars, are empty, the crystalline architecture acquiring a layer of eagle guano and dust that is transformed into gritty runoff when it rains.

The crudely-crafted Web site at jerssoftwarehut.com no longer accepts payment for Jer’s Novel Writer software licenses, and bears the following statement:

Well, it’s happened; I have a regular job. As I slave away working for the man I often wonder if things might have been different had I only worked harder at making Jer’s Software Hut a business rather than a hobby. Probably now we will never know. It was a good run but it’s time to ackowledge that development is stalled and customer service around here has been really awful.

That pretty much says it all; despite thousands of happy users, some of whom even paid for the software, when it came time to have a steady income again I took the safer path of working for someone else. (The ironic twist to this narrative I will leave for another time.)

It was a good run, and as I get my work life under control I hope soon to at least return to using Jer’s Novel Writer for its intended purpose – as a writing tool that helps me create fiction. Until I do that I can’t even consider opening the shutters on the Hut and throwing the big switch that raises the lightning rod into the violent midnight thunderstorm, while sparks fly and the turbines spin faster and faster, the needles on their gauges creeping ominously into the red. Maybe someday, though. Maybe someday.

1

A Job I’m Glad I Don’t Have

As you might be able to tell from the paucity of episodes here at MR&HBI, I’ve rejoined the ranks of the employed. My writing has taken a real beating, so today I’m going to spend some time writing about work. You don’t have to thank me, it’s what I do.

I don’t mind writing software; I’m pretty good at it and I can make pretty decent money doing it. I would much rather write code than dig ditches, for instance, and luckily for me the world has decided that making Web sites is worth more than roadside drainage. (Before you go and say, “that’s because it takes skill and training to make a Web site, but anyone could dig a ditch’, ask yourself – could you dig ditches for a living? If the economy were turned upside-down, that ditch-digger living in his nice house would say, ‘anyone can make a living sitting on their ass in front of a computer, but I dig ditches. I’m glad things are the way they are, is all I’m saying.)

My current job sends me dangerously into territory I don’t much like, however, and that’s the area known as Information Technology. It’s not really a good name for the job, which is about setting up computers and keeping them running. It’s less about making things and more about making things work.

Last night, for instance, I moved the Web product I’m working on to a different server and it didn’t work. Naturally I assumed the problem was in my code (it had worked on that server in the past), so it was several hours later that I discovered that for reasons I still don’t know, the server failed when it tried to compress very large messages. Just *poof* no response beyond the number 500 (something went wrong). To make things more fun the server was specifically set up to not write out a lot of error messages to its log. I turned off the compression feature (with a hammer) and things worked again. Five hours or so spent to add seven characters to a PHP file, to make things work the same way they already did on other servers. Welcome to the world of IT.

I think the original intention of the phrase information technology referred to the the information that would be stored, manipulated, and distributed by machines. What the I really stands for is the vast store of arcane crap you have to know to do that job well. What line of the php.ini file to modify if you want zlib output buffering and utf-8 character encoding. How to set up all the computers in an office to use a local domain name server first. That’s the information in IT.

The worst thing about having an IT job is this, however: When you’re doing a good job, no one notices. When a company is running smoothly, that’s a sign that the IT department can be downsized. There are no problems! What are those guys doing all day? Having things not happen as part of your job description makes for tricky times when you do your job well. Of course, when something does go wrong people know just where to find you.

So if you work in a company that has people on payroll working to keep your technology humming along, cut them a little slack. Someone’s got to do that stuff; be glad it’s not you. I do enough IT now to know that I’d rather let someone else have the pleasure.

An open letter to the retard driving a white compact car on Highway 17 in dense fog with no lights

You, sir, are a fucking retard.

Sincerely,
Jerry

The Book Review that Wasn’t

Last night I wrote a review of a book. I was pretty pleased with the results. It actually talked about the book for a while. This morning I tweaked it a bit and hit post.

It vanished.

Well, mostly vanished. The title was there, as was the little blurb at the top. Everything else was gone. “Poop!” I said (or something like that).

I use ecto to compose my larger blog episodes; the offline editor is much nicer than any in-browser editor I’ve encountered, especially on my 8-year-old laptop. I don’t call it Ol’ Pokey for nothing. Plus there are times I want to write an episode but the Internet is nowhere in sight. ecto has been working very well for me. Except when it loses my work. This is the second time, but somehow this one hurt more. Also, ecto was recently bought from the original developer and seems to be stagnating.

“Looks like it’s time to give MarsEdit a serious look,” I said, and downloaded the latest. I fired it up and was greeted with “Your trial period has expired.” Dang. I’d launched it once when comparing ecto and MarsEdit back in the day. MarsEdit was missing a particular feature (don’t remember exactly what) and that made ecto the winner. Before it started losing my work.

Lots of people like MarsEdit (lots of people like ecto, too), but am I willing to pay for it without writing a single episode with it? That’s hard to justify. I’m downloading a program called Qumana to rewrite the book review with. We’ll see how that goes.

Edited to add: Nope. Qumana didn’t work. At all. I checked the system requirements, and it should work. But it doesn’t.

The Worst Thing That Ever Happened to the Internet

I mentioned in the last episode that Internet Explorer was the second-worst thing that ever happened to the Internet. Today I’ll talk about the absolute worst. It’s really a long technical rant that doesn’t matter, but it feels good to let it out. What follows is an underinformed ramble about the scourge that did the most harm to the developing computer network that went on to transform our lives — damage that we still live with today. Without this one corrupting influence, we would have had Internet applications that didn’t suck a decade ago, if not longer. In fact, it was because of this electronic plague that Microsoft was able to cause so much harm with Internet Explorer.

The culprit? The ball and chain that modern technology has dragged along despite its obvious flaws? Hypertext Markup Language, or HTML.

First, let’s start with the name. HTML is not a language. Not even close. It is a document format. That its inventors did not recognize the difference tells you that the wrong guys were doing it.

Second, it’s not a very good document format. At its heart, the inventors wanted a format that did three things: connect related documents, embed external resources (like images) and contain standard formatting information that would be interpreted by viewing software consistently. They were not the only ones developing systems like this; Josten’s Learning invented a similar system when they built the first multimedia encyclopedia for Compton’s New Media. Where Berners-Lee and friends had URL’s, Josten’s engineers created BRU’s, but beyond the initials the function was the same.

I don’t want to be too harsh on Berners-Lee, Cailliau, and the others who grew HTML, but I wish they’d been a little more far-sighted. I say ‘grew’ rather than ‘invented’ because it’s clear that they never sat back and asked themselves “What is a tag? What roles do they perform?” Even now, XHTML, the supposedly more rigorous (if still misnamed) descendant of HTML has fundamental inconsistencies.

For a simple example, take the <br /> tag. It exists because in HTML all whitespace (tabs, spaces, and returns) are mushed together and presented on the screen as a single space. Thus

<p>this markup</p>

and

<p>this
 
        markup</p>

come out the same on the screen. That’s fine if you know what’s going on. But what if you want to put in a line break or a space? Well, for a space you add a special character code &nbsp; and for break you add a tag <br />. Why is one a character and one a tag? Because on the day HTML’s inventors decided they needed line breaks, a tag seemed like a good way to go, even though semantically it had nothing to do with the roles of other tags. It could just as easily been &br; or something like that. That’s how HTML grew up. And thus the World Wide Web was born.

Another fundamental flaw is that the content (what to display) is all mixed up with the presentation (how to display it). What if you want to show the same document in different formats? Nope. While some tags were geared toward identifying the type of content that they enclosed (like the <p> tag), others were direct formatting instructions (like the <i> tag). This inconsistency in the role of tags in a document is a reflection of the organic (and sloppy) way that HTML was grown.

I really can’t blame the inventors of HTML for what came next. Everyone started using it. Everyone. The flaws and inadequacies of the format quickly became apparent. Different document viewers (browsers) rendered things differently. Formatting options were extremely limited. The systems were vulnerable to abuse by unscrupulous people. Right then, there was a chance for people to say, “hold on a second! Let’s take the idea of HTML and apply the lessons we’ve already learned in other branches of computing, and make something that doesn’t suck.”

Rather than scrap HTML, browser makers and others set out to fix it. That was the Big Mistake. After twenty years of tweaking and bickering and incompatible extensions introduced by browser manufacturers and squabbles and lawsuits, HTML has been upgraded from awful to poor. Along the way, companies like Adobe and Macromedia thought to get their technology adopted as a replacement to HTML (the Web in pdf? Interesting…) but those efforts were doomed from the start because they did not provide free, simple tools to create the content.

HTML’s greatest shining virtue (and it’s an awesome one) is that it’s accessible to anyone who can type. Anyone. No special tools required.

So, now we have style sheets to help separate content and presentation, XHTML to fix some of the semantic craziness of HTML, and browsers are finally starting to agree on what all the formatting instructions actually mean. We could have had that fifteen years ago if people had just let go of HTML, but here we are now, with an almost-functional system. There are still plenty of flaws, however. Things that seem so normal now that we don’t even think about how dumb they are.

Take this blog, for instance. It’s a pretty well-built Web application, based on reasonably up-to-date practices. Yet were you to click the comment link at the bottom of this episode, you would go to a new page. On that new page the browser would reload the same header and the same sidebar it just erased. What a waste! Why does it do it? Because that’s how HTML (and HTTP, the underlying part that communicates with servers) works. There have been abortive attempts to fix that over the years, but they have all been flawed. Now, at long last, techniques have been developed to overcome that problem, but they are not quite ready for prime time yet. For one thing, they are very complicated, and for another they rely on browsers working just right. Why was it so hard to implement? Because at its core the Web was not made that way.

Even in the days when almost everyone was on dialup (except the people inventing HTML), no one stopped to say, “hey, let’s make a way to only update the content that changes.” That problem has now been ‘solved’ by adding a new layer of complexity on Web sites. By adding this layer (on top of CSS and so forth), we get sensible Web applications at last, but we take away the one super-cool thing about HTML. It is no longer a simple format that can be harnessed by anyone with a text editor. We have lost the attribute that was the only reason to keep HTML around in the first place.

So now we have a system that is both inaccessibly arcane and flawed. Yay!

3

Step on a Crack

On a cruise ship books can make the rounds, passing from one reader to another fairly quickly. Two others in my group read Step On a Crack by James Patterson and Michael Ledwidge before I did. They both agreed that the book was not very good (to paraphrase their summaries as gently as possible), so it’s fair to say that my expectations were low when I picked up the book.

My expectations were met. Had I something else to read, I would have put this thing down around chapter four and never looked back. (The chapters are very short). The first sentence is a confused and awkward bit of imagery (the back of a jacket turns away…) and that sets the tone for the whole book. We start with a murder, the untimely demise of one of the finest people the world has ever known. Her highly-trained bodyguards, who have been protecting her for several years now, are apparently unable to respond to what should be a routine medical emergency. It seems no one told them that their charge was deathly allergic to peanuts so they weren’t able to do anything about it. Oops! (The bad guy knew about her allergy, however, well enough to execute a months-long plot to infiltrate a fancy restaurant in order to put peanut oil on her dinner. Wow.) On top of that, somehow on this particular night the woman forgot to pack her own medicine. And so begins the work of the greatest criminal mastermind of the century.

But wait! Before we go any further with tales of murder and mayhem, it’s time to meet a whole bunch of Perfect People. These people do nothing to influence the plot of the story; they’re too busy being perfect. Perfect children. A perfect stranger to take perfect care of the perfect children in the time of crisis. Perfect people everywhere, doing the perfect things with perfect consistency. Bleeargh. Did I mention they have nothing to do with the plot? They are there, in fact, to perfectly NOT encumber the detective we will be following as the threadbare story develops.

Begin the crime of the century. A crime so big and so audacious it must be the work of a criminal genius. How do we know? Because the authors tell us so. With exclamation points! And occasional nonsensical italics! The NYPD is starting to look like a bunch of incompetent fools, and the press is going to have a field day. If hostages are killed, the press will rake our hero over the coals.

Only, hostages die, and for a long time it looks like the bad guys are winning, but the authors can’t be bothered to portray the actual coal-raking. In fact, the stakes for the good guys never escalate. There is no heat. (One reporter does criticize our hero in her paper, but then immediately expresses remorse and stops her persecution — taking her own step toward perfection before she can cause too much trouble for the authors.)

Then there’s the time the detective walks in and finds his grandfather dressed as a priest! (That’s their exclamation point, not mine.) Wow! what a shock! Only, it turns out that Grandpa has been a priest for years, everyone knows it, and seeing him dressed that way was no shock to anyone. The authors were just yanking our chain a bit. Whee.

Meanwhile, most of the hostages experience life-changing revelations. The perfect hostages become perfecter(!). The imperfect ones get better! For instance, the ‘fashionista’ resolves to go to rehab and stop being such a bitch all the time. Once she makes that decision, that’s it for her in this story. She makes a promise to herself to undergo a complete personality realignment and we believe her and move on. Well, the authors seem to believe her. I’m skeptical.

I hate to spoil it for you, but the good guys win in the end. In fact, they don’t have to work very hard to defeat the brilliant criminal mastermind. Sure, the bad guys got away at first, but just a little routine investigating and bam, there you have it. To avoid the authors having to get too clever, the criminals conveniently explain all the loose ends for us.

I finished the book. It didn’t take long; the type is big and there’s about fifty pages worth of blank space between chapters. One-third of what is left is a sentimental parade of sap that does nothing for the story. I set the book aside and decided not to review it here. There’s plenty of awful prose out there; you don’t need my help finding it. Then I read the back cover. “THE STUNNING #1 BESTSELLER” it says right across the top. Then it lists several newspapers who listed the book as a top-seller. What!?! This book?

I’m stunned, anyway. I decided to write a little review after all, not so much to criticize the book as the system that allowed it to attain such stature.

Usually, even with books or authors I don’t like, I can understand at least to a certain degree how they became successful. Dan Brown’s not very good but he has excellent pacing and managed to anger the right people. This book leaves me baffled.

Some guy at Booklist says, “Totally gripping and downright impossible to put down.” Gripping? No. No it isn’t. The characters are boring, there is no escalation of the stakes (unforgivable in a thriller), no character growth, not a breath of humanity anywhere to be found in these pages. The criminal plot depends on the incompetence of the good guys. Potentially gut-wrenching scenes are glossed over so we can get back to the Perfect People for another dose of sentimentality. Not gripping. USA Today chimes in as well, along with Publisher’s Weekly and a handful of book-review Web sites. Did they read a different version? One without so much suck in it? Are these people even literate?

Don’t waste your time with this book. In fact, just to be on the safe side, stay away from Patterson entirely until he proves this was just a fluke. Probably best to stay away from books published by Little, Brown, and Company (responsible for the hardcover version of this fluff) or by Vision. Somewhere there is an editor who approved this book, and I want to make sure I never encounter anything else that crossed her desk. As long as we’re learning from the mistakes of others, it’s time to take Booklist a lot less seriously as well.

The only explanation for the sales that I can come up with is the name: James Patterson. Apparently he’s pretty famous. Bookstores will pre-order a lot of copies, which drives the rankings up, which drives sales by people who won’t even read the first sentence of the story before taking it home. If it weren’t for the big name, not many people would have read the second sentence of this thing. The few that were carried through the first part by the suggestion of sex would have bailed out soon thereafter.

Is Mr. Patterson concerned about protecting his name? It doesn’t look like it. This book can’t be good for his reputation, no matter what the sales were. (I am assuming that at some point he wrote good books to establish his reputation.) He can read, I’d be willing to bet; he must know this novel is junk. Eventually, people are going to hesitate to pick up his next title, after getting insulted by a previous purchase.

Ooo! Or maybe — just maybe, mind you — Michael Ledwidge knows something. Something James Patterson would rather not become public. You see where I’m going with this? Ledwidge wrote the book but somehow coerced Patterson into putting his name on the thing as well. Farfetched? It’s a lot more plausible than the story in Step on a Crack.

And can someone tell me what that title had to do with anything?

Note: if for some reason you ignore my dire warnings and use the above link to buy this book (or a Kindle, or a new car), I get a kickback.

Blogs and Bloggers

A Facebook friend of mine posted a link to a NY Times article about the high failure rate of blogs. I couldn’t read the article without registering (so I didn’t), but that won’t stop me from commenting on it! You don’t have to thank me; it’s what I do.

As I pondered the short life span of the typical blog, I decided that bloggers fall into a few categories, and failure can (usually) be predicted just by identifying what class the blogger is a member of:

  1. People with nothing to say. Unscientifically, I’d say this is the vast majority of blogs. Many of these blogs might better be described as journals; the content is really meant for the consumption of the writer, not any audience. After a few weeks, anecdotes about the crazy antics of Fluffy the cat get old. After a few months these stories get old even for the blogger and he quits. Some people have a treasury of a few really good stories, and those will keep them going for a while, but when the well runs dry the blog fades away.
  2. People who lack the skill to say what they want. I suspect that this group is fairly small, as most people who lack language skills probably don’t start blogging in the first place. The exceptions to this rule, I suspect (having done no research) are found in sport blogs and political blogs, where passionately held beliefs are undermined by the complete inability of the writer to express himself.
  3. Interesting, articulate people with unrealistic expectations. When the blog doesn’t become famous overnight and the blogger realizes she must devote time to it almost every day for months for it to have even a remote chance of catching on, they quit.
  4. Interesting, articulate people who embrace the medium and do it for the pleasure of doing it. They produce what we in the industry call “good blogs.”
  5. People who, despite having traits from categories 1-3, continue to blog, rehashing old material and catering to a microscopic audience. Even as readership remains constant for several years these writers delude themselves into thinking that their blog sucks less than most blogs.

On a purely unrelated note, as Muddled Ramblings and Half-Baked Ideas celebrates its fifth year of contributing to the noise of the blogosphere, the MuddledRamblings.com business cards I designed say at the bottom, “Sucks less than most blogs!”

Fundamentally, I think most bloggers want to be read. A growing audience is the payoff — more people reading, more people commenting, lively discussions triggered by the words of the blogger. It seems obvious, but when it comes right down to it, most blogs are not read. Personally, I don’t read that many blogs, and comment on fewer still. There are just too many of the damn things. Blogs that don’t produce consistently excellent posts, with some thematic connection between posts, are not going to grow big audiences. (The exception to this is the celebrity blog, where people read just for the name.) I’d have a much better chance at a large readership if I wrote a blog strictly about software engineering on a particular platform rather than just posting whatever drivel pops into my head.

I just like writing drivel, is all.

1