I am an Idiot

Last episode I talked about how valuable a well-written tutorial can be. Two weekends ago, supported by an excellent write-up, I dug deeper into the innards of an automobile than I have since I drove an Alfa Romeo. Which isn’t that deep, but you get the idea. The operation was a qualified success, and I saved myself several hundred dollars.

A qualified success. The qualification: I broke a different bit. I didn’t even know the name of the part (1974 Alfas didn’t have them), but it turns out it was the Positive Crankcase Ventilation Valve. The good news: PCV valves are inexpensive and butt-simple to replace. On this car at least, you don’t even need a wrench. The PCV valve is mushed into the top of the valve cover and sealed in place with a rubber grommet. Yank the old one out, mash the new one in, you’re good to go.

But… on a 14-year-old car, the grommet that seals the PCV valve in place can get hard. Not a biggie, but the grommet is cheap and in the long run could be a point of failure. May as well change it, too.

This reasoning is perfectly valid, unless you’re an idiot. In this case, “idiot” is defined as “a guy who might push the old grommet into the valve cover, rather than pull it out.”


I stood, looking at the empty hole that the little rubber donut had just leapt down. I don’t even think I swore. Sometimes words give out. I stepped back from the car and spiked the screwdriver I’d been using to pry at the grommet, hard, into the concrete floor of the garage.

My quick ‘n’ easy repair job had just become considerably more complicated.

Oh, I considered the consequences of just leaving the grommet in there. Could a piece of rubber really damage the camshafts? Yeah, dumb question. I was going to have to remove the valve cover and take out the little rubber donut.

In fact, that’s not a terribly difficult operation. The catch is that the same logic that applied to the grommet applied to the valve cover gasket. Fourteen-year-old rubber might not reseal properly. Off to AutoZone I went, and got a new gasket. It was surprisingly affordable. I also got a torque wrench, because you have to be really careful not to overtighten the bolts when you put the cover back on.

Back in the garage, with laptop propped up with the instructions for the upcoming operation, I snapped my 10mm socket onto the extender and dove in. Things went smoothly, and before long I had the valve cover off. I set it carefully aside and looked down between the valve stems, expecting to find the offending bit of rubber.

It wasn’t there.

I probed in the pooled motor oil with a screwdriver. Nothing. Nic. Nada.

Perplexed, I turned my attention to the valve cover I had removed. Where the grommet had been pushed in, there was a chamber sealed by a flat plate. Seven screws held the plate in place, and they were a bitch to get out. I peeled the plate free, breaking some sort of sealer.

There was the goddam grommet. I removed it, cursed myself, and then considered how I would put everything back together. The plate had been sealed with a dark substance; I went back online to find out what product I needed to restore the seal.

This was when I found a question on a Miata forum by a guy who had, in his words, “idiotically pushed the grommet into the motor”. Like me, he had pulled the valve cover, but he had yet to open the chamber.

“Just leave the grommet there,” was the advice. “It can’t hurt anything.” The chamber exists, you see, to keep oil from shooting straight into the PCV valve. The grommet would be just another obstacle. This would have been really good to read before I tried to fix my blunder. Too late now, though; the chamber is open and must be resealed. Happily in that same discussion was advice that addressed my condition. The right sealant to use (probably unimportant since the chamber is open on one end anyway), and a strong caution about the seven screws. If one of those works free it could destroy the engine. The proper adhesives are called for.

So, another trip to the friendly and knowledgeable guys at my local AutoZone later, I began the reassembly. It went well, with only a (hopefully) minor hitch. My car has a big stiffener bar that reaches across the engine compartment. (The bar was part of Mazda’s “dominate autocross” package.) That bar makes it really hard to slide the valve cover into place without disrupting the complex, 3-d gasket. By now I was cursing freely, but finally I got it into place with (as far as I can tell) the gasket properly seated. Then I discovered that the torque wrench I had bought really couldn’t measure bolts as loose as these are spec’d to be. But I got pretty close, I think, and it really felt like I was compressing the gasket gradually as I turned the bolts.

So in the end my clumsiness cost me about fifty bucks and three hours of stress-filled life. Unless I have an oil leak now. One deep breath later, I’ve still saved a lot of money compared to having the original problem repaired by a mechanic. But it could have been so much easier.

On the Subject of Tutorials, and Why the Internet is Awesome

A while back a buddy of mine had trouble with his washer. He was pinched for cash, so he tackled the problem himself, rather than call a repair man. He got some information off the Internet before he started, not all crystal-clear, but enough to dive in.

He fixed his washer. But along the way he did something else, as well: He carefully documented each step of the process, with commentary, lessons learned, and pictures. In the process not only did he save himself a hundred bucks or more, he helped a lot of other folks as well. It’s the most-hit page on his blog (last I heard), and for good reason. Here’s the tutorial, in case your washer’s not draining.

Sidebar: It’s a little frustrating for a blogger to create an episode that’s not the main focus of the blog and have that episode take off. In my case it was “New York Sucks”. But at least “How to Fix Your Washer” has some benefit to the world at large. Lately my tutorial about setting up a LAMP stack using MacPorts has become more popular, which makes me feel better.

Let’s take a moment more to understand why my friend’s blog episode was so effective. First, there was the voice: “I’m just Joe Homeowner with a couple of wrenches and a mysterious machine that’s not working right. But I fixed the bastard.” Second, the tutorial answered a specific need. Third, Joe Homeowner was there with you every step of the way, with pictures and the kind of observations that never appear in service manuals.

The most effective reference materials are almost never videos. When I’ve got both hands tied up with the task, I just want to be able to look at the screen and see what I need to know. I want a still image I can absorb at my pace, and look for reference points to reconcile with what’s in front of me. I want to read the instructions three times without having to rewind.

This is the sort of content ‘they’ were thinking about twenty years ago when they were trying to convince us that the Internet was a good thing.

Last weekend I benefitted from a similar tutorial. Owners of 1999 and 2000 Miatas know code P0402: Excessive EGR flow. Usually a P0401 comes first. It’s a design flaw; there’s a narrow passage in the intake manifold that gets clogged. The killer is that the ol’ 402 suggests that a $200 part needs to be replaced. Actually, that’s almost never true in this car. All you have to do is remove the throttle body, take off the top part of the intake manifold, and clean that passage out.

Reference material close at hand, I'm ready to fix my car.

Reference material close at hand, I’m ready to fix my car.

The task is not difficult, but it can be intimidating. What you need is some guy like you who’s done it, who took pictures, who remembers the details, and isn’t afraid to admit he was a little frightened going in. You can feel his satisfaction as you read the how-to and you know you will feel that way too.

The ONE THING I wish he might have mentioned was “when you take the age-hardened hose off the top of the intake manifold, be careful not to break the PCV valve.” But that’s a topic for another episode.

There’s a tutorial out there for almost everything. Almost. Next time you’re facing a task, if you can’t find a good set of instructions on the Internet, do the Web a favor. Make the first tool you pick up a camera. Take a little longer on your repair, record each step, and remember your moments of uncertainty and how you dealt with them. Put it out there and make the world a better place.


How to Make a Geek Happy

I once explained in great detail why HTML is the worst thing that ever happened to the Internet. In that episode I was a bit disingenuous — I also snuck in flaws with the protocol that delivers most of that HTML rubbish to your computer: HTTP.

Finally, finally, twenty years later than necessary, the tools are available to make Web applications work like all the other apps on your computer. (If you’re willing to set down your browser, World of Warcraft and its predecessors have been doing this for a long time now. But finally we can have good application design through the browser as well.)

While the primary benefit of this revolution is for the engineers making the apps (whom you as a user have to pay eventually), there are tangible benefits for Joe Websurfer as well. Mainly, things will work better and be snappier. You will curse at your browser about 30% less. (That number brought to you courtesy of the dark place I pulled it from.)

I work in a blissful world where my stuff doesn’t have to work on older browsers, and especially not on Internet Explorer. That means what might be ‘bleeding edge’ for most Web developers is merely ‘leading edge’ for me. I’m starting a new Web application, and it won’t use HTTP. It won’t even use AJAX.

Quick description of HTTP:
Your browser asks the server for something. The server gives it to you, then forgets you ever existed. This is especially crazy when you want your connection to be secure (https), because you have to negotiate encryption keys every damn time. That’s huge overhead when all you want is the user’s middle initial.

And what if something changes on the server that the page showing in the browser should know about? Tough shit, pal. Unless the browser specifically asks for updates, it will never know. Say that item in your shopping cart isn’t available anymore — someone else snapped up the last one. You won’t know your order is obsolete until you hit the ‘check out’ button. The server cannot send messages to the page running in your browser when conditions warrant.

Lots of work has gone into mitigating what a pain in the ass that all is, but the most obvious solution is don’t do it that way. Keep your encrypted connection open, have each side listening for messages from the other, and off you go. The security layer in my new app is so much simpler (and therefore sturdier) that I’m going to save days of development. (Those days saved will go straight to the bottom line at my company, since I’m an operating expense. The effect of my app will also go straight to the bottom line, as I save other people time and energy. Better yet, the people who will be made more efficient are dedicated to making the company more efficient. Those days of development time saved go through three stages of gain. Shareholders, rejoice.)

So, that makes me happy. Web Sockets, event-driven servers, a chance to create the Missing Middleware to make the tools out there fly. Bindings over the wire.

Of course, I’m not building it all from scratch; I’m using and improving tools created by those who have gone before me into this ‘software working right’ revolution. It means picking up a whole toolbox at one time, from database to server to client library to extensions of all of the above. There are times while I’m trying to put it all together that it feels like my head is going to explode. In a good way.

But boy, the difference a good book can make. In technical writing, there are two kinds of documentation: tutorial and reference. Mostly I gravitate toward reference materials: I have a specific question and I want to get a specific answer. References are raw information, organized to allow you to get to the nugget you need. Tutorials are training documents; they take you through a sequence to help you build complete understanding of a system.

There are many technical documents that try to be both, or don’t know which they are. We call those docs “shitty”. Then there are videos. SPARE ME THE FUCKING VIDEOS. Videos as a reference: completely worthless; videos as a tutorial: rarely adequate – what was that again?

(I’d be interested to hear from my formally-trainied tech writer pals about my above assertions.)

Anyway, On the client side I’m using a library called Backbone, and on top of that Marionette. I like them, but I was starting to get lost in the weeds. The reference material is pretty good, but getting an overall understanding of how the pieces worked together was slow and frustrating. Too many new ideas at once.

So I found a book endorsed by The Guy Who Made Marionette (yeah, The Guy. One guy, having a huge impact on the next generation of Internet applications. Could have been anyone, but there had to be The Guy.) that not only puts the pieces together, but introduces best practices and the reasoning behind them along the way. It may well be the best tutorial-style documentation I’ve run across in this industry. So, hats off for Backbone.Marionette.js: A Gentle Introduction. This book really helped me get my ducks in a row. My fastest learning curve since Big Nerd Ranch oh so very long ago.

So all that makes me a pretty happy geek. Lots to learn, Web applications built right, a new project with lots of creative freedom. And while I’m coming up to speed on the new tools, I already see gaps — the tools are young — including a potentially ground-breaking idea, that I will get to explore.

Can you believe they pay me to do this?

Helpful Tip for Those who wish to Submit Work to The Poetic Pinup Revue

Thinking of submitting photography or poetry to the revue? Please take the time to acquaint yourself with the following table:

Followed the submission
No Yes
Submitted material that matched the theme for an upcoming issue?** No Submission ignored*** Submission rejected
Yes Submission ignored Thank you!

Note that the green box doesn’t mean you will be accepted, it means you have a chance. Those other boxes — no chance at all. So go back and take another look at the table. Know it. Live it.

* For example, the part about release forms. They’re REQUIRED. And you don’t submit via Facebook. We’re not going to go look at your site. The submission instructions exist for a REASON. Pro up, buddy!

** Yes, the issues have themes. If you don’t swing by The Revue to check the upcoming themes, you’re wasting your time.

*** “ignored” means we won’t even bother to look at it before rejecting it — unless it’s so far off the mark we pause to mock it before sending it (and your credibility) into the electronic waste bin.

NaNoWriMo Coming! (Your help needed)

Yep, November is barreling down upon us, and it’s time to write another crappy novel in 30 days. I don’t think I’ve ever needed it more. I’ve also never felt less inspired. Those two facts are, of course, related.

Usually by this time I have ideas fighting in my head to become The One. This year, cue the crickets chirping. I have never felt so empty of ideas.

Which brings me to any readers who might happen by here. (Yeah, I know I haven’t given people a reason to be regulars lately.) Leave a suggestion in the comments. Don’t be afraid to be outrageous, or silly, or deep and heavy if you want. If anyone posts a suggestion, I WILL WRITE IT. Just like that. If more than one person leaves a suggestion we can have a quick vote, or I’ll let an impartial third party decide, or maybe I’ll just mash them together if the result would be amusing.

I’ll let the person with the winning suggestion read the result, though it’s NaNoWriMo — that may not be much of a prize.


Baseball Playoff Fever

As I type this, Cleveland and Tampa bay are playing a single game to see which team gets to be in the playoffs. (Technically this is a playoff game, but don’t be fooled; it is a contrived spectacle that rewards mediocrity.)

Out there somewhere is a Tampa Bay Rays fan on the edge of his seat, living and dying with each pitch, as his team battles for a spot in the postseason. But there’s only one. The networks are not rooting for Tampa Bay.