Tag Archives: wordpress

The Day After

“I smell smoke” is the worst First Thought Upon Waking. Close behind it (for me, at least) is “I recall having a Clever Idea at about 2 AM last night…and that I implemented it right away.”

When that’s Thought #1, Thought #2 is “What the hell sort of disaster awaits me” and then “None of this becomes real if I stay in bed.”

It’s now noon the next day and (well I’ll be damned) the Good Idea I had at 2 AM last night continues to seem like a good idea, even after a solid nine hours of sleep and a light breakfast. That’s highly unusual for any 2 AM Idea of mine. This one was about fixing this blog’s backend. I’ve had loads of ideas on that at all hours of the day and night for years. None of them have ever paid off. Can you blame me for being skeptical?

Y’see, my dream goal has always been for the machinery of the site to be as good as “Catwoman” as written and drawn by Darwyn Cooke. My realistic goal is “Catwoman” as portrayed by Michelle Pfeiffer in “Batman Returns.” But the outcome has always been the 2004 “Catwoman’ film with Halle Berry and Sharon Stone.

I thought I’d elaborate on it, for your and for Future Andy’s edification.

The problem was that I couldn’t get the site’s design or features dialed in just right. Its appearance alone was eating up almost all of the problem-solving energy I’d allocated for my blog. A WordPress site’s appearance is defined by its Theme, which is a combination of HTML, CSS, PHP, and other kinds of code. When I coded everything up myself, the blog looked right but lacked the muscular resilience that every modern blog needs (such as supporting any combination of device and browser). When I used a third-party theme, the blog was fully responsive to all kinds of screens but customizing the theme to my tastes and needs was like walking on red-hot Lego bricks in bare feet.

(And when I say “customizing” I don’t mean “Applying a signature aesthetic and identity.” I mean simply “getting rid of the things I absolutely despise.” Despise, and ultimately even resent. Even when it was part of an incredible WordPress framework that I’d paid $100 for, no amount of my work or customer support’s customer support could remove the empty white box under the title of a post, which is where the theme desperately wanted to put an author avatar.)

Consequently, I wasn’t posting here at all. I used to blog regularly! I loved it! But the blog had become like an old car that just barely can pass its state inspection. This is another subject of which I am quite familiar. Driving the car isn’t fun because your mind comes to associate “being in the car” with “being stranded by the side of the road, waiting for the engine to cool down enough that you can temporarily seal a coolant leak with silicone tape.” I still had ideas for blog posts on a regular basis. But I could count on getting distracted or discouraged along the way by thinking about the site’s engine.

Yesterday I had a critical moment of clarity. It came in the form of a piece of life wisdom that’s gotten me through many, many challenges in every conceivable area of life:

“Take a step back and ask ‘What is my actual goal here? How would I define a Win?”

– Me, writing to myself.

How many times have you been at an airport and witnessed somebody (who, admittedly, is having a bad day and is not at his or her best) getting super into an argument with an attendant at the check-in counter? They’re wasting all of their emotional and intellectual resources on trying to win the argument. But that’s not why they went to the airport, is it? Their goal is to get to Denver in time for the Box Apricot Juice Festival.

Once I realigned myself and reaffirmed that my Goal was just to self-publish stuff to a blog that looked good and was accessible to as many people as possible, I could erase about thirty stubborn problems from the project whiteboard. They were no longer relevant.

Every time WordPress releases a major upgrade to the platform, they release a new, up-to-date default theme named after the year of release. I had been on “Twenty Nineteen.” This new theme showed off WordPress’ new prowess at modular page design. I replaced it with Twenty Seventeen. Then Twenty Sixteen. I kept going backwards like that until the live preview showed me a version of this blog that mostly looked like I wanted it to look, and had nothing that I hated or even “thought I could get used to” or “could probably fix by creating a daughter theme based on the parent.”

(“Twenty Twelve.” Oh, by the way: themes are indeed huge collections of code, not just design layouts. It’s important to note that although Twenty Twelve’s appearance hasn’t changed since the first “Avengers” movie had its first release, its code has been updated and modernized regularly.)

Next, I deleted every WordPress plugin that wasn’t absolutely required for running a basic blog. My server was littered with active and deactivated plugins, like rusted and busted tanks and cannon on a field of battle where the fighting never ends. I’d installed many of them after a (cringe) 2 AM Good Idea. A third-party theme refused to let me change the spacing between paragraphs via changes to CSS, but this plugin I found on Github says it can override anything…really? OMG that would be awesome if it worked…

I even deleted a default menu that had been in place since nearly the beginning. It took me ten minutes to replace it with a simple bar of links to my podcasts and online presences.

The only thing I kept (apart from my decade-old WordPress database of blog posts) was the masthead. I should scale it down. Eventually.

After going on a half-hour-long Marie Kondo/Incredible Hulk mashup-style rampage of deletion and destruction, I was left with a nice blog that lets me focus on creating, not fixing or administrating.


I wish I hadn’t wasted ten years of effort, but we can only walk from where we stand. I’m happy that I can finally put this one in the Win column.

I’ll close with some Tech Columnist-style big-picture beard-stroking.

(Fetches a humidor from a shelf above his desk. Removes a strap-on beard that he bought for exactly this purpose. Straps it on, adjusts it with little care.)

The fact that I’ve been blogging “since before there was a word for it,” as I like to say, was one of my biggest handicaps in this process. I published my earliest blog posts by hand-coding HTML files. When I caught the fever, I wrote a fairly sophisticated client-side blogging and publishing app all by myself. Sure, I was aware that the technology behind a website in 1998 and one in 2019 is as different as starting a fire by banging two rocks together and doing it by just forgetting to send your Galaxy Note 7 back to Samsung after the recall notice.

But I still saw Ihnatko.com as a server directory where code and content files lived. I understood code and content. I’d knew I’d have to learn some new stuff (like PHP), but it seemed like the core concept was the same.

Wrong, wrong, wrong. A modern website is too complicated an organism to be raised and bred by a lone amateur. No matter how geeky. The education and experience of a professional web developer is required.


  • As always, the value of a professional is most apparent in a chaotic situation, not a routine one. And chaos is the cartilege that holds a website together. I learned how CSS styles are supposed to work. But learning how CSS works in actual practice requires years of daily experience (and drinking regularly with a community of fellow web developers).
  • The code that makes a website run is too complicated for anybody to understand how it all works together as a unit. I believe that even the pros categorize each of a site’s code elements as either “something I completely understand” (usually: something they wrote themselves), “something I don’t understand, but I trust it because even when it fails it does so in a predictable way,” and “something I don’t understand and don’t trust at all, but the site can’t function without it.” It’s almost impossible to trace the movement of a bug throughout the entire ecosystem of code. At the very least, it isn’t the most practical solution. So things get patched instead of fixed, amping up the chaos further.
  • In 2019, a website has to do way, wayyyyyyy more than just serve content. It’s an app platform, even if the only app I choose to run is the one that displays the 742 words I just wrote about why nectarines should be a different color. At a minimum, I still need to worry about Bad People trying to exploit my WordPress install for selfish purposes that have nothing to do with fresh fruit troubleshooting at all. Protecting a server from malicious code that adds it to a botnet, mines bitcoin, or stuffs its database with URLs to game Google Search isn’t for amateurs. It’s one of the reasons why I closed commenting.
  • Web tech moves so quickly that “best solutions” and “best practices” are hard to identify. Good luck to you if you aren’t a working pro, and staying up to date on these things isn’t part of your daily duties. You’ll find yourself implementing a workaround from 2016, instead of the Solution that everybody started using in 2018.

As discouraging as all of the above might already seem, keep in mind that I’m just describing a simple blog. As WordPress and my understanding of its power grew, I began to play with a lot of ambitious ideas. What if instead of setting up a simple continuation of my blog, I went bigger? What if the purpose of Ihnatko.com were to increase my influence and international reknown to that of an Iron Chef?

Okay, you’re right, that’s presumptuous and insane. But writing and selling ebooks isn’t a nutty idea, and if my online presence functions as a marketing tool that creates new opportunities, wouldn’t that be a good thing?

It sure would! But each of these goals adds complexity, instability, and new maintenance issues.

What I’m driving at — no pun intended — is that the fact that even though I was rather good at repairing my very first car, if I bought a new car today I wouldn’t dream of trying to fix it myself. My first car was already more than ten years old when it was handed down to me in the mid-Eighties. I knew that it wouldn’t run without spark, gas, or air and I knew how each one of those things moved throughout the system.

I can let myself get nostalgic for the days when my site ran on a bulletproof Chrysler Slant Six engine. But self-hosting a modern website with high expectations isn’t realistic. I have to either focus the site on a single goal that I can easily manage on my own, move the site to a service that does all of the management for me, or hire a pro.

I’m too cheap to hire someone who knows what they’re doing and I’m too lazy to move Ihnatko.com to a new host. Thus, my path to victory was clearly marked.

Starting over again, one more time

Longtime fans of my blog will react to this post with the same excitement as the crowd at a Paul McCartney concert when he sings the first two words of “Hey, Jude.” “I’m trying to figure out a new scheme for this blog” is one of Ihnatko.com’s all-time greatest hits. Oh, sure, I get more excited about performing my newer stuff. But then I see all of you swaying together and singing all of the words and I’m right there with you.

If you were dragged here by a life partner or a school friend, here’s some background. I launched this blog in the Nineties (before “blog” was even a word, and long before there was software for publishing one. So I wrote my own. Eventually, WordPress came into being. I switched to WordPress in about 2005. By 2006, the blog looked and worked about 90% like how I dreamed. I’ve been working on it ever since. I think it’s now at, like, 92%.

I could be wrong. The CSS style selector for that number keeps rendering it in white on a white background, 744 pixels outside of the window’s visible canvas area. I’ve no idea why and every time I think I’ve figured out how to target the style correctly in the site’s WordPress theme, another style sheet somewhere else overrides my changes.

I don’t regret moving to WordPress, of course! My own code ran the site just fine throughout the Clinton administration but by the Bush era I needed something better. And I sure know a lot more about servers and webapps and security than I ever would have if I were just studying that stuff academically instead of getting my hands greasy.

It’s just that I sure haven’t been doing very much actual posting in the past few years. Don’t blame WordPress. Blame me for wanting my site to look and function the way I wanted it to. And then maybe blame WordPress for making that so bloody difficult. There’s still room on the Blame Bus for the publishing industry, which doesn’t pay me nearly enough to just throw a couple of bricks of simoleons at actual web developers and designers who could do the job for me.

Lord knows I’ve kept trying. I’ve had lots of Great Ideas of how a certain new framework or a specific set of plugins might please dear God put an end to the journey.

Well! Good news, everyone: I had a whole new idea on how to approach the problem!

It’s simple and elegant. Like the long-sought proof for computer science’s “sensitivity” conjecture, it can even be expressed in the space of a single Tweet:

“Andy pretty much gives up on his ambitions and settles for just having a blog again.”

Yeah. I really want to blog regularly again. So I’ve metaphorically ripped out the section of my brain that’s aware of WordPress’ potential. I’ve also somewhat less than metaphorically ripped out every last plugin that WordPress doesn’t absolutely require, and downgraded the site’s theme package to whatever was Stock WordPress in 2012.

Ihnatko.com is now, in function and appearance, not very different from what it was when The Fresh Prince Of Bel-Air was still on the air.

But though it’s lost a lot of style and ambition, the blog now has at least one aspect that I’ve been unsuccessfully chasing for more than ten years: there’s nothing about the design that I hate. When I’m inspired to create a new post, I can write a new post. In the blog’s previous incarnations, I would open the admin page and my trackpad’s pointer would find its way to the code editor because GOD DAMN IT if I’ve told this theme not to attach an author photo why the BLOODY HELL does it still add ten square inches of white space for the spot where the photo would have gone?!? And the idea I had for a blog post is cast to the land of ghosts and winds.

Let’s keep our fingers crossed that the synapses leading to the Caring About Anything But Creating Content centers of my brain remain resolutely cauterized. I’m optimistic because holy cats does it stink in here.

On to the new stuff. After I open a window.

Just a coffeeshop post

Greetings, fellow sensation-seekers!

I’m at a coffeeshop, armed with my favorite tactical field language composition and deployment vector (iPad Pro, Logitech K811 keyboard, 1st-gen TwelveSouth Compass stand) and with a Diet Coke serving as my phosphoric acid delivery system. I’m navigating that sensitive inflection point between “ready to start writing” and “ready to start writing something that will make me some money.” This translates to “How about a blog post?”

Congratulations to the #BringBackMST3K campaign, which raised so much money that the group had to keep adding on bonus incentive episodes just to ensure that the taps stayed open until time ran out. I’m pretty damned pleased that my pledge will help to bring digital downloads of 14 new shows, including a Holiday episode.

As promised, I will unbox the Cask Of Ancient Fandom. I wanna do it when people might be home to watch it on Periscope; given my schedule this week, that’ll probably be Tuesday night. I’ll record it for posting on YouTube. And just a reminder: I’m as keen to see the inside of that thing as you are. As you might be. Okay, I’m probably more keen, as I have a personal emotional investment.

Meanwhile, WordPress has released their annual update to their default blogging template. This one is a conventional one-column layout. I’ve played with it a little bit and it looks…nice. I might switch to it after making some tweaks to it. Ever since the Univision offer to buy this site fell through, I’ve remained convinced that the best solution for this blog is to let the good women and men of Automattic be my WordPress developers because I think they’re looking out for the best interests of the Web.

(Whereas all I’m looking out for are cheap and effortless ways to rip off Sixcolors and other tech blogs whose professionalism and value to readers consistently inspire and annoy me.)

You might have noticed a few recent blog posts that started off with Getty Images photos. I’ve decided to stop using them, despite how much I like that service. Their news and stock photo library is chockablock with great content. It’s easy to search, and embedding an image in a non commercial site like this one is free. Aha, but the free photo comes with a couple of ad trackers. Believe me, Gentle Reader, I will happily sell you up the river if it’ll put a Tesla in my driveway and I look forward to proving it in the fullness of time. But loading up the site with ad trackers just for a free photo or two seems like a bad deal for both of us.

I guess I’ll just have to make these posts more attractive by increasing the quality of the writing. Thus, I’m calling back the folks at Univision and seeing if they’re interested in making another bid to buy me out.

I’ve cooled off considerably since T* farted out his racist screed on Monday.

Jeez. I had had a wonderful day in the city. The weather was beautiful, I had a good meeting with interesting people, I got to go places in Boston I’ve somehow never been before and I took some great photos.

It was such a wonderful day that I chose to extend it a little. My meeting happened late in the afternoon and the location was just a block away from the second stop on the MBTA’s outbound commuter rail line. On top of that, I hit the streets at the perfect time to make the next train home. And yet, I decided to catch a later train departing from South Station, a mile or two away, and enjoy a nice walk through the Public Garden and the Common while the sun was setting and the holiday lights were coming on.

The last thing I did before boarding my train was to buy a bottle of soda from a woman who wore an eggshell-blue hijab. I sat down, snapped open the news app on my iPad, and read T*’s declaration that all Muslims at home and abroad were worthy of suspicion, based solely on their religion.

I really wanted to post something then and there. The words came quickly. I deleted them one more time than I typed them. I realized that I was speaking in anger, which would have been mighty hypocritical of me given what I’ve written and said in the past about the worthlessness of anger, and doing things just because it’ll make you feel better.

So. It is now a calm Andy who says that T* isn’t funny any more. He’s actively dangerous. Whether he actually believes this stuff or not is immaterial. I remain convinced that there’s zero chance of his ever being elected. What makes him dangerous is the Andrew “Dice” Clay effect he has on a certain segment of America: the kind who never find the courage to say what’s in their hearts unless they’re at a rally of some kind. The ones who won’t spray paint something threatening on a house of worship until they’ve seen that special act of craziness validated before, on the news.

That is, T* is a bozo. He’s done. He traded away a marketable B-list celebrity status for a year of cheers and the veneer of actual respect. I hope he’s enjoying his time at Disneyworld because we’ve seen this play out before. T* will go the way of all political celebrities who lack the skills, and the will, to become actual public servants. It’s a path to oblivion that winds its way through many stops at increasingly shabbier convention halls and political dinners, to diminishing crowds of increasingly crazy people, for diminishing paychecks.

(Oh, T*? The bill feeder in the oblivion breakroom soda machine almost never works. Stop by Rudy’s or Sarah’s desk…one or the other usually has a jar of quarters.)

But he’s energizing the types of yahoos who organize to prevent a mosque from being built in their county (mostly by showing up at public meetings and yelling). He’s emboldening politicians who will endorse any damn-fool idea if they think it’ll play.

I’m not even afraid of the people who genuinely hold opinions that I see as abhorrent. I worry about that category of folks who seem to exist as a flailing ball of anger with a Social Security number. The rage has to go somewhere other than inward, and it’ll latch on to whatever’s handy. They don’t believe in limiting access to immigration as a policy to preserve resources for existing citizens, or any reason that (right or wrong) at least sounds rational. They’re looking for something to be mad at or, better yet, someone to blame. And here’s this guy in a nice suit that everyone seems to be listening to. He seems to have done well for himself. And if he’s pointing the finger at a group of people, then the target must be a good one, right?

I can only hope that T* is having a different kind of influence on a different kind of people, in the same way that a terrible parent screeching at and belittling their kid in public inspires other overstressed parents in that same situation to dig deeper and find hitherto untapped reserves of patience. I hope that other candidates will see T*’s rhetoric for what it is, and recognize that this is not the person they want to be. And those aren’t the sort of voters they want to appeal to.

Okay. The clerks at the coffeehouse are bringing out brooms and dustpans. This is the first stage of communicating “You don’t have to work at home, but you can’t work here.” Time to pack up Lil and prepare for the remaining leg of my daily Constitutional.

I’ll only say this: I’m never writing the name of T* ever again. After all this time, I think I know that the only thing that can piss off a man like that is to not help put his name out there.

I’m also afraid that there might be a “Candyman” sort of thing where if I write his name a certain number of times in a row, he’ll manifest here. I don’t think I can stand the smell of that much cologne.

Howzit Ferbloggin

Yesterday I took the iPad Pro out on its first Away Mission. It was typical of how I use my iPads: I had dinner plans in the city, and decided to head in several hours early and do some work inside the Boston Public Library before relocating to a Panera a couple of blocks from the restaurant. It’s enough hours that I’d like to get some work done, but not a “real” work session that compels me to haul around my MacBook.

I missed MarsEdit. This morning, I set about looking for good iOS blogging apps. The last time I did so, I didn’t find anything I liked. The WordPress webapp is much more credible on the iPad Pro than it is on even an iPad Air, thanks to the larger screen. I might wind up sticking with that.

Still, fair is fair. I’m giving the official WordPress iOS app another try. It seems okay so far. But historically, the failure points of iOS blogging apps reveal themselves after I tap “Post.” Let’s see if it formats correctly, or somehow corrupts my whole WordPress database, or otherwise causes me to doubt my faith in a kind God and a just universe.

Incidentally, apps that haven’t been updated for the new OS in general and/or the iPad Pro specifically call attention to themselves. This WordPress app merely scales the standard iPad interface way the hell up. It’s what the iPad experience is probably like to a six-year-old kid.

Push the button, Frank…

The Comment Comment

A while ago, I turned off comments on the blog and switched to a feedback form sort of thing. My thinking:

  1. Sending me a comment in the form of an email would put people into the communication mode of “I’m speaking to this one specific person” as opposed to “I’m gonna light some bottle rockets because the echo in this quarry is going to be sweeeeeet!”
  2. I could hand-pick the comments I wanted all visitors to see, and post them as sort of a “letters to the editor” kind of post. (Or, to introduce the concept of productive thievery, do something like the Comics Curmudgeon’s “Comments Of The Week.”)
  3. And I wouldn’t have to keep policing the blog for spam. Some spammers manage to get through even various countermeasures I’ve got on the blog. It’s a drag. I don’t want this blog to be a drag.

But I forgot to turn comments off when I switched to this new theme, and therefore people are leaving comments, and they’ve all been thoughtful and respectful and have made me proud. So! I’m going to keep comments on and see how it goes.

All I ask is that you write as though you’re sending a private message to me and things will keep going great. I’ll probably create a page with a formal commenting policy when I get some time.


Welcome to another thrilling episode of The Blog About Developing A Blog. Special “I think I’ve got this licked, no really, I think I’ve got it” edition.

As you can see: the Celestial Waste of Bandwidth has a new theme. It’s in progress, but I like it a lot and it represents something worth writing about.

When last we talked about The Making Of The Site, I waxed emphatically about just flat-out robbing my friend Jason Snell blind. His Sixcolors blog was, and remains, an inspiration. It’s just so clean and friendly!

Now armed with a clear direction, I spent the remainder of the winter scheming to hire someone to do some WordPress building. The idea was to hire someone to take a basic theme or framework and turn it into the new CWOB by doing all of the CSS, PHP, and HTML mods to the theme that (collectively) sap my will to somethingorother.

Continue reading

Spork, Sympathy, Lumia, Moto, Manifest, Vultures.

Through the interaction of a complicated array of sensors and indicators, a piece of hardware communicated an error condition that allowed me to quickly diagnose and solve a problem that would, if left unchecked, have eventually led to the failure of said hardware.

In plain English: “When the garbage disposal immediately made an unholy racket, I knew that a piece of silverware must have dropped down there.”

No harm done, in the end. In fact, the accident improved the utensil in a way that brought this geek some immediate joy:


It’s a Spock Fork. I herewith declare that the word “Spork” now applies to a conventional fork with this arrangement of tines and not any other thing. Live long and prosper, by eating lots of salads.

* * *

Shipped a review of Parallels Access yesterday. I had it ahead of the release day but couldn’t publish until Thursday. I was experiencing so many problems with it, and the price of this iOS app is so utterly insane ($80 per year!) that I knew that my review would be…dark. When one sets down the pot of honey and picks up the cruet of vinegar, he or she should be absolutely certain that they’re making the right choice.

I came home from dinner last night, still wondering if maybe I should have gone easy on this app.

Then I saw that the app had done this to my MacBook Pro while I was away:


And I felt a lot better.

* * *

I’m still working hard at getting my Lumia 1020 review out the door, as well as my Moto X writeup. The hitch with the Lumia piece is that I’ve been spending too much time writing it. I now need to convert the 4500 words that I assembled over three or four weeks into the 2000 words I would have written if, when I started the piece, I had three weeks’ worth of experience with the phone.

I kind of needed to hang on to the Moto X review until I got a chance to see Motorola’s Droid Ultra, which was released about a week ago. The Moto X was designed from start to finish after Motorola was bought by Google and the company received its new sense of purpose. The Droid Ultra is a legacy phone that merely benefits from many of the great ideas that became Moto X signatures (like the Active Display). By holding off for a week or two, I can now put those features in context.

And! I can show off the Moto Maker custom color phone that Motorola finally sent me. They had to kibosh the first one because they didn’t like how the engraving was coming out on the samples and decided to not offer that specific feature to customers until they’ve got it right. Fair enough.

They’re solid reviews and I’ll be keen to see how they play in front of an audience. I’ll be sooooo relieved when these finally ship! My brain tends to get locked into major projects and once they’re out the door, I can free up bandwidth for other things.

I did resist the impulse to drive to the Back Bay after dinner last night and take some nighttime tripod shots with the 1020. That’s a welcome sign that I’m not gripped in an infinite loop on this project.

(Or is it a sad sign that I had the power to end this madness whenever I wanted? That’s the kind of question that has a tendency to lay there and fester.)

* * *

Meanwhile, I sent a note of praise to Jim Barraud, the designer of the Manifest WordPress theme that I’m using here. He responded with an offer to let me beta test the new edition. Manifest is one of those “labor of love” projects and those kinds of things often wind up in a holding pattern until a Twitter DM from a slightly doofy tech writer makes you remember that you’ve created something that is both lovable and loved.

I’m very much looking forward to playing with his update. I’d been diving into the theme files looking for a way to add a custom header but now that’s not necessary; the new edition will likely support WordPress’ new built-in “any dumbass can add a header without editing the theme files” resource.

That’ll be welcome! Because a neat new header has been on my hard drive for about ten months, waiting for me to make time to redesign the site. “Labors of Love” and all that. Until then, I’ve just been tweaking the layout a bit and replacing fonts. I like the new headline font and am on the fence on whether or not I should find a spiffy new body font.

* * *

Last thought of this post: if I ever meet an alien who needs to quickly understand the nature of Human society in total, I know exactly what do to. I’ll tell him/her/it the story of how I arrived at one of my favorite independent stores the other day and, within the space of about three minutes, my thoughts went from “Oh, they’re closing their doors for good on Saturday! That’s terrible! I love this place and I’m going to miss it! I sure hope the owners are going to be okay!” to “I wonder if they’re taking offers on that utility table they’ve got behind the register…”

I can’t predict what an alien would do with this information but at least it’s honest and complete.

Tonight’s theme: “Frustration”

I’ve been spending some time digging into ThemeForest’s “Literary” WordPress theme and swapping emails with its (very helpful!) creator. I decided to award the sash and tiara of Andy Ihnatko’s New WordPress Theme to this one and set aside Monday night for buying it and getting it set up.

The other good reason for pulling the trigger Monday instead of Some Other Day: I don’t think I have time to try each of the 18,217 other WordPress themes out there. Not with an Apple press event coming up in a few weeks. I’ve made attempts to revamp the site with a new theme before and the biggest drag on the progress bar has been my determination to sample at least 51% of the alternatives before committing. I concede that I’m hardly being scientific with this choice. I surely will have much explaining to do when the ballgame’s over and I’m being judged by my creator. “You’re on the bubble here, son,” my neckbearded holy examiner sighs. “And there are those of us up here who don’t know what kind of man picks a new WordPress theme after looking at fewer than a hundred candidates.”

Alas, I’ve been foiled in my attempt to exchange money for goods. I’m now on Day Two of this “Buy ‘Literary'” project. I expect that soon, “progress” will come in the form of my attorneys and the online store’s attorneys having a productive markup session on the contract. And then, we can begin the escrow phase of my purchase of this $40 WordPress theme.

Crimeny. Surely on this side of Jerusalem none have suffered as I have been made to suffer:

  1. Site won’t let me make a purchase until I sign up for an account. So I sign up for an account.
  2. Site adds a $2 surcharge on the purchase unless I pre-purchase “store credits” for future transactions.
  3. Ecommerce transactor is PayPal. I canceled my PayPal account a few years ago, but the store allows direct purchases. But apparently, the fact that the card I want to use used to be attached to a canceled account, PayPal refuses to use it.
  4. Alternative payment service is one I’ve never heard of, have never used before, and which doesn’t obviously appear to operate in a secure fashion.

And there the matter rests. I’ve contacted the theme maker about the issue and they’ve been grand, but their contract with the store forbids them from selling the theme to me directly or giving it to me for free.

I’ve filed a support ticket with the store, outlining the basic problem (“I want to give you money and your store seems not to want me to do that, which I instinctively feels is a flaw in your business plan”). The shining optimistic side of my soul says “I bet I can just send them a bank check or postal order and they can put the credits in my account.” The part of my soul that’s interacted with commercial entities before is expecting a one-line response that passes the buck to PayPal.

Oh, well. Let’s see how this plays out. “Literary” is a handsome theme. It looks like it’s very easy to customize, and it’s wired up for any future plans I might be nesting.

In the meantime, I shall remind myself that my Celestial Waste Of Bandwidth is a small revenue-generator but it mostly serves merely as a creative outlet. This problem won’t result in my needing to buy off-brand colas for the rest of the month or anything drastic like that.

But wow. I wish for the makers of “Literary” take the two twenty-dollar bills from my left hand and place a big wad of electrons in my right hand. We’re back at the same problem I bemoaned the other day: oy, why am I troubleshooting a problem right now instead of playing with my new blog theme?

I griped about the experience on Twitter and @JeremyKing gave me the link to a post that lays out the impact of this sort of problem perfectly. Here’s how a user design consultant changed one button on a checkout page and increased store revenue by $300,000,000 a year.

(Or so that consultant says. But either way, it’s still a valuable tale.)

In the meantime, there are plenty of cool toys on my desk and lots of neat things to write. Enjoy “Manifest,” a theme I’ve switched to merely because my goal last night was to put in a new theme and this way I can dismiss that item in my To-Do manager.

More later!

Comments On Comments

Comments are turned off on new posts.

For now.

“Why?” you might ask. You scan the rest of the virtual room, giving everybody else the stink eye. Which one of you posted that comment that made Andy want to turn comments off? Was it you? I know it was you. Oh, I had you pegged from the moment you walked in…

No, it’s nothing like that. This is an experiment.

As a creator, you have goals for a project. Perhaps “goals” is the wrong word. You have an idea in your head about how you’d like to see something go, and as you build and maintain it, you always keep comparing it to that original conceptual sketch.

I do like active discussion. And yet I don’t read it or engage in it on the pieces I write for commercial sites.

When I write reviews or commentary, I keep this thought in mind: “I have one shot at expressing my point of view. This is my sole opportunity to tell this story.” It’s a good motivator. It makes me ask myself all of the questions that I believe a reader will be asking as they read my piece, and spurs me to consider all of the arguments that he or she will make. It makes me continue to look at the subject from multiple angles, in case there’s a perspective I hadn’t considered. Do I really believe that this new phone is the very best in its broad class of devices? Yes? Whoosh. All right, well, just make sure you’ve made that case completely and convincingly.

Which isn’t to say that everything I publish is a Gem of pure Truth, Beauty and Wisdom. But that’s the goal and if I were to let myself think “I missed anything or included any half-formed thoughts, no problem: someone will bring it up in comments, and I can fix it there” it’d bruise my process.

And it isn’t to say that it’s even possible for me to consider every angle on even the simplest idea. More brains almost always equal more thought, and any topic can stand having a few more brains thrown at it.

Comments are valuable. I still don’t like to participate in those threads, though.

First, because I feel as though I’ll negatively influence the discussion. The beauty of a good comment thread is that it’s all about a flow of ideas (before Godwin’s Law is invoked). I sure don’t want it to become a flat, desaturated landscape of “the author of the piece responds to your comments.”

Secondly, I ought to be moving on to the next thing I need to write instead of hovering over the thing I published three or four days ago.

(Thirdly, I have at times cough Android Switch series cough been told by editors that, um, I really shouldn’t read the comments.)

Other authors have different attitudes. I respect that. This is just what works for me. My feeling is that if someone wants to engage me directly, I’m easy to find on Twitter and at least when people try to say mean things they need to engage the part of their brains that can count to 140.

The Concept Sketch for CWoB’s reader comments was something like Roger Ebert’s blog, with a highly-active commentary thread on every post. That never really coalesced. Hey, no regrets! But as I look again at CWoB and the comment traffic, it prompts me to respond in one of two different ways:

  1. Figure out why the Concept didn’t become reality, and develop and then execute a plan to correct the situation, or
  2. Take a step back and ask what the original goal of that Concept was. Determine whether or not this original definition is the only way to reach that goal or if instead it’s just a single possible articulation that’s not worth obsessing over.

This is a good template for life. You dream of becoming a working actor. You’re 30 and it hasn’t happened. It’s time to either redouble your effort or think about what it was about that work that drew you to it. If you want milk and there are no cows around, move on and start looking for goats. Unless your goal really is to milk a cow.

It turns out I just want the milk, so I’m going for Option Two. Though it’s quite ego-fortifying to have tangible evidence that the tens of thousands of people who read a piece are backed up by hundreds of people who are eager to discuss it, what I truly enjoy about the overall idea of reader comments is that it presents me with an opportunity to learn. Other folks might express some interesting thoughts, reactions, corrections, or solutions that I wouldn’t have been exposed to if I hadn’t put my own thoughts out there on the blog.

I’m not sure that I want to go the route of other blogs, and eliminate visible feedback entirely. That’s not the right answer for me.

Styling the Comments bit of the current blog was a major pain, as is authentication and spam filtering. That’s out.

There’s Disqus, but I sometimes find it to be a pain in the butt as a user of others’ sites and the idea of forcing my users to interact with yet another “it’s free and please don’t think about how they’re generating revenue from this activity” service moves the needle on my skeeve-meter a little bit. Out.

I’m not sure what the perfect answer is. I’m going to start by stealing an idea from my friend Mark Evanier, one of TIME Magazine’s 25 Best Bloggers of 2013.

News From ME has no comment system. But a “Contact ME” link is right there in the sidebar and Mark has set up a mail address for people who have a reaction to one of his posts and who don’t mind if he shares that reaction with the rest of the blog’s readers.

So that’s what I’m going to try. I’ve set up a new Gmail account specifically for feedback. At minimum, I’ll do what Mark does and share selected emails with the rest of the class. The new Concept Sketch regarding comments involves my having a regular Ombud feature in which I post regular batches of feedback with my own comments.

I’m not sure that I’m ready to take the wraps off of that new address just yet. I’m thinking the mechanism will be: there’ll be a link/button at the bottom of every post that takes the reader to a feedback page that explains the concept and which keeps the actual address secret (so: no spam, and no chance that people will start using that address for business or personal-related messages).

But let’s make this fun. The first reader to guess it correctly (by sending me an email there) gets a vintage tech-related tee shirt of my choice (laundered) from my staggeringly large collection of same. The lone hint: it’s @gmail.com.

Oh, and: sending me mail there implies that I have permission to use your name and the email. And don’t put anything in that email that you wouldn’t like a stranger to read. Remember, you’re only taking a guess that it’s the right email address.

Update: We have a winner! Jay H. correctly guessed the Secret Commenting Email Address. Congrats! I will select and launder a shirt from the Classic Tee Shirt Archives and send it out shortly.

A New Theme

It’s time for me to turn my attention back to the Celestial Waste Of Bandwidth. This is my first update of the entire summer, and there’s sort of a reason why…but that’s for another blog post on another day.

First things first: the design.

In principle, the content is all that really matters and the design should be a distant second in the author’s mind. Charles Dickens’ “A Tale Of Two Cities” set in Comic Sans with janky margins is still a better novel than “Fifty Shades Of Gray” in letterpress. So why don’t I just forge ahead, not think about the shortcomings in my blog design, and keep right on posting?

Because I don’t love the design, and it bums me out that I feel a little bit constrained by limitations in the theme, and I still haven’t figured out why the popup menu for “Categories” spans outside its container…

It’s an old story. Web design is my nemesis. I’m handy with a code editor, I promise you. Remember, the predecessor of this site was managed by a content management system that I started coding before any formal CMSs existed. By the time I moved on to WordPress, it was a full XCode project with windows and popups and buttons and many many nice features that made things happen automagically and integrated with my web browsers.

My ego made me think that customizing and managing a WordPress theme would just be another iteration of that kind of work. I’d overlooked a simple fact: coding up CWoBber was a piece of cake because I’d written every line of code. I knew how every part of it interacted with every other part because I’d designed it from top to bottom.

In WordPress, my code has to interact with thousands of other lines of code. My intentions have to compete with hundreds of other intentions that are baked into the system. Though I made plenty of progress customizing the most excellent Carrington Text framework, mastering that complex relationship between PHP and CSS and plugins is beyond me.

Or at least it’s beyond the level of enthusiasm I seem to be willing to bring to the project. Inevitably, I finish writing a post, and I preview it, and something that ought to be centered is so totally not.. By the time I get to the root of the problem, I’ve totally disconnected myself mentally from the writing part of the exercise.

(Oh, and: it turns out that I hadn’t gotten to the root of the problem at all. I just wasted so much time trying and failing to figure out what was overruling my stylesheet that I gave up.)

Metaphorically, managing a WordPress theme as a mere Interested Amateur is like trying to develop a brilliant new product at a company when your box on the org chart has lines connecting upward to eleven vice presidents in three different divisions. No matter how carefully you’ve done your work, there’s always some authority that can and will put a stop to everything without discussing it with anybody else. And you’ll never get a straight answer why.

(For the love of God. There is a CSS whatsit that signifies “You are to ignore ALL OTHER stylesheet definitions and heed THIS AND ONLY THIS MARKUP between THESE AND ONLY THESE brackets”…and it doesn’t work. Deep within the bureaucracy of CSS is the basic understanding that the one way to prove your authority and thus maintain the facade that you are An Important Person is to prevent things from happening.)

I’m supposed to click “Publish” and be pleased that I’ve created and published something. Instead, invariably, I’m cheesed that something isn’t working right and I don’t have time to fix it.

All of this is connected to another frustration I’ve become increasingly aware of: I want to spend more of my time making things and less time fixing things.

A vividly-recalled day last month is a case in point. It was a hellaciously busy day and I had exactly 30 minutes of relaxation time between early morning and late evening. Truth. “Relaxation time” was lunch, but after a busy busy busy morning I was totally looking forward to watching a show on Netflix. It almost didn’t matter what.

Annnnnnd then I had to spend ten of those precious thirty minutes figuring out why the streaming wasn’t working properly. It was hanging and stuttering.

Relaxus interruptus!

As I restarted routers and went up and downstairs checking for naughty network devices and felt my stress levels increasing I reflected upon the good old days. You know, the days when the teevee was something you turned on and which almost always worked. I concluded that the arrow of progress does not unerringly fly forward.

This was meant to be thirty minutes of passive calm in my day. Instead, a formerly functioning system thrust a snarling, hissing puzzle at me and demanded that I cuddle it.

This blog should be a place where I can just open WordPress, do some type-type-type, click “Publish,” and bask in the knowledge that although the words themselves might have both the same linear structure and appealing interaction as barbed wire, at least the pictures attached to them obey the margins of their container and there’s the desired amount of white space between postings.

Clearly, this blog won’t be that thing with me as its principal architect. So tonight, I put the call out on Twitter for suggestions of “Minimalist-leaning, responsive, and hopefully accessible” WordPress themes. I’m hoping to find a theme that’s at least 90% of what I want CWoB to be and easy enough to customize that I can get it to the 98% mark on my own.

Here’s what my Twitter followers came up with:

There were also recommendations for WordPress’ latest standard theme, “twentythirteen” and Squarespace.

I’m not going with twentythirteen. It looks aces, but I’d have to make lots and lots of modifications before CWoB would look the way I’d like it to. The first time I politely said “CSS, I think it would be nifty if this header were a different color” and CSS replied “Andy, I invite you to go suck an egg” I would regret having made that choice.

Why not Squarespace?

No particular reason. I might wind up there eventually. For now, I’m happy with WordPress as a publishing mechanism and I’m not ready to abandon it just yet. It’s one hell of a great machine for turning synaptic misfirings into published text and every iteration of the webapp for crafting and managing content gets more impressive. I want to be along for the rest of the ride so I can see what comes next.

I must say that I like the cut of Literary‘s jib. I have made an enquiry to its creators to see if it’s suitable for my needs and I avidly look forward to that conversation.

I tried Literary after installing Manifest and taking it for a spin. I opened the “header.php” file. Aha, thought I. If I want this theme to use a header graphic, that’s where I should put some static HTML. But despite the fact that this seemed to be (to my admittedly unsophisticated eyes) the only place where that line of code should go…nuh-uh. Same old problem: something else in the CSS or Lord-knows-where was superseding my edits.

But Literary looks to be the business. I hope this is the start of a very short journey that results in a lovely, fluent blog design that incorporates the new header graphic that I finished in November but haven’t been able to correctly integrate since.

More later.

From One Bush Administration to The Other

I was up all night but wow, the results sure were worth it! You must certainly be immensely impressed by the blog’s new look, eh?

No. No, you mustn’t. I started with a page layout that would have been considered cutting-edge during George Bush’s presidency. I’ve updated it to something that would have been marked me as a sophisticated professional web designer during Dubbya’s.

(Maybe even his first term.)

Yeah, I know. The new design really ain’t much. There’s nothing advanced in the backend — it’s still just CSS — but beyond that, it simply looks old-fashioned: Masthead, navigation bar, content column, sidebar column. It’s not even built on a grid system or anything. But! It’s a next step. And the next step after any next step is the next step after that.

It’s been a longish night so I’ll fix the typography later (sure, it’s time to wire things up to take advantage of webfonts). Also, the more time I spent getting the sidebar to work the way I wanted it to, the more it occurred to me that yeah, maybe I can get rid of it entirely. It’s still filled with the stuff I put in three years ago when I moved to WordPress. I might change the content to give the sidebar a more emphatic function, but I might just as easily decide to move to a one-column layout. Perhaps with a static bar at the top and bottom that highlights things I think are worth highlighting.

(I mean, look at BoingBoing.net. It’s a huge site, and yet it could hardly be simpler in terms of layout, right?)

But at least I finally scratched some long-overdue items off the To-Do list. Most of my blog’s readers access it via the RSS feed. When I first added that feature to my blog, it was being run via my own hand-coded CMS system. It wasn’t a checkbox to click; it was a whole section of script that I had to write. Then as now, my goal is to make it easy as possible to read this stuff, and that clearly means “full posts in the RSS feeds.”

Ah, but what about the first time someone visits the site? They need to be welcomed. Concierged. A hot towel should be offered. Perhaps also a drink coupon of some sort. Ihnatko.com really didn’t fulfill that role well at all. I kept meaning to add pages about my speaking and links to my writing, my podcasts, and other tendrils of the Ihnatkoverse but just never got around to it. Also, the site design didn’t naturally gravitate towards that kind of navigation.

As always, though, a big hidden purpose of this site is to serve as a test bed for web technologies. From time to time, I hear about a new framework or a new whatsit that web designers are using, and I like to play with it a little. Recently, for instance, I learned that Twitter has released the toolkit that they use (up to a point) for their own webapps. It looks pretty neat. I’m still using Carrington as my basic blog template. That’s the guts of making this blog work on WordPress. Bootstrap looks like a nice starting point for the CSS, with some nice scripting libraries added in.

That’s to say nothing about different scripting languages, different production workflows, different coding environment, different concepts and theories about backend design…I’ve been learning plenty. Most of it never left my hard drive, of course. I’m all for eating my own dogfood but then there’s the sort of dogfood that you shouldn’t — legally — be allowed to serve even to a dog.

I’ve also been looking at Tumblr and other blogging platforms. Cool stuff, but I keep circling back to an ages-old frustration of mine: I can easily spend as much time searching for a canned theme that I like as I would have just learning what I need to learn to build the site I want from scratch.

But for all of this bluster about my learning new tools…what arms did I take up tonight, in my fight to make my site look Slightly Better Than Awful? The exact same ones I used in 1995, when I built my first site: BBEdit and an FTP client.

Ihnatko.com is back up! Aren’t you LUCKY!

Maintenance page for CWOB.com


(checking again…)

Okay. It seems as though I’ve successfully nuked the whole site and reinstalled everything. I’ve downloaded fresh copies of WordPress and a couple of templates, and restored all of the site’s existing content.

So I think that should take care of the spamlink hack. I’d tried a couple of other tricks last week to avoid all of this work. If nuking it from orbit doesn’t fix this problem for good — given that I’ve changed all of my passwords — then this becomes what is known in tech circles as A Whole ‘Nother Thing.

This was quite a typical 2010 sort of procedure. I’m not a day-to-day WordPress admin, so I needed to spend some time refreshing my knowledge on how to do all of this properly. A couple of days ago I did all of the advance work (prepping for disasters).

All I needed to do this morning was delete my existing WordPress directory on the server and reinstall everything. It should have been about twenty minutes’ worth of work, all told, including making a few edits to some key files so that WP can find my databases. And indeed, that’s all it really took.

Aha. But instead, Ihnatko.com was down for nearly two hours.

First, I decided that I wanted there to be some sort of “Ihnatko.com is down but it’ll be back up shortly” page in place of my WordPress blog. That took all of five minutes. It’s simple HTML. Then I decided that I wanted it to be in a little CSS box. Then I decided that I wanted a pretty little picture from my photo library (but which one?) Then I wanted to center it all (and CSS is simply not on board with the concept of “let me enter a simple command; it’s your job to figure out how to center this inside whatever boundaries this element happens to appear in”).

Then I thought it’d be cool to have the text overlap the photo a little.

Then I thought I should identify the photo. I Googled for the name of the town and did a little research just in case anybody asked me any questions about it.

Oh, and the dumbest move of them all: I was Twittering as I went. My hostility against CSS inspired snarky, 140-character comments, and on ongoing dialogue with my 35,000 Followers.

But hey, it’s back up now, and…

(let me just check one more time…)

Yes, the invisible spam links have vanished. So either I’ve eliminated the redundant PHP scripts that the hack deposited in my WordPress directory, or it’s A Whole ‘Nother Thing and it’ll take a day or two for some bit of code to realize “Hey…Ihnatko.com doesn’t contain spam links” and do that thing that it does to inject the code into the site again.

(Which shouldn’t happen, because I’ve changed all of the passwords.)

Welcome to Stage One of the cleanup. I’ve fixed…


…I’ve fixed the site at my end. It’ll take about a month before Google’s spiders are convinced that my blog is no longer trying to game the ranking system, and ihnatko.com resumes its rightful place in search results.

In the meantime, if any of your office or home NetNanny-type apps are blocking Ihnatko.com because it’s a spamlink farm…please click whatever link the app provides and tell the service to reconsider its position.


Ok. Good. I don’t need to keep checking. Whatever happens now, happens.


Ihnatko.com going offline

(Sigh) Looks like I didn’t fix the problem after all. More of those spam links started showing up in served pages.

Yeah, I’m pretty furious.

Oh, right: “Ihnatko.com will be going up and down over the next day or three as I nuke the whole installation and reinstall the original content.”


Moving on.

What pisses me off is the fact that this is just a cold and mechanical system for gaming Google’s pagerank system and driving traffic to sites that have subscribed to some sort of service powered by hacked sites. The sites being linked to “look” more important by virtue of the fact that so many sites are linking to them, which means that they’ll appear higher in search results. The site owners might even possibly be naive enough not to know that the “consultant” promising to get them higher rankings is actually responsible for infecting hundreds of thousands of sites with spamlinks.

I hate that I have to take my site offline and that I now have a BIG project on my hands. But what pisses me off is the statement that these people are making about their relationship with the rest of Humanity.

I’m suddenly thinking of an old SNL sketch. It was a talk show in which all three of the day’s guests had “ruined things for everyone.” In possibly the last funny thing he ever did, Jim Belushi played the guy who had ruined hitchhiking.

“For those of you who don’t know what ‘hitchhiking’ was,” the host explained, “for the first five or six decades of this century, if you needed a ride and didn’t have a car, you could just stand by the side of the road and hold your arm out with your thumb pointing up, like this. Drivers would actually stop, pick you up, and let you ride along with them for free.”

“Yeah, it was pretty sweet,” the guest said. “Well, so one day I’ve just been picked up — nice guy and everything — and I don’t know why, but it suddenly occurred to me: ‘I could kill him right now, and nobody would ever know it was me’. You know? There was nobody around, I was a complete stranger…it was awesome! I’d always wanted to kill people, but I never could figure out how to do it and get away with it.”

“So you killed him.”

“Right, stabbed him to death with my pocket knife. Anyway, so I dumped the body and now I’m driving around in his car. And I see a hitchhiker up ahead in the road. I realized that the same thing could work for the people who get picked up, too! No witnesses, no connection between you and the victim…I couldn’t believe nobody had thought of it! It was great; I bet I killed maybe 200, 300 people over the next five years. At some point, though, I couldn’t get any more rides. Even when I switched roles, I couldn’t find any people to pick up and kill.”

“Because word had spread that hitchhikers and people who picked up hitchhikers were getting brutally murdered.”


“You ruined hitchhiking for everybody.”

“Yeah, I guess so.”

“Well, what are you up to these days?”

“You know that thing where every day, a man walks right up to your house and hand-delivers your mail? Don’t get too attached to it.”

You know what I’m saying here? I swatted my first mosquito of the season today. Mosquitoes are a colossal nuisance. But what can you do about them? It’s just Nature.

Spam and these kinds of hacks get me pissed because they’re a completely man-made nuisance. We could live in a world in which email and blogs and all kinds of other services just plain work. Unfortunately, that’s not good enough for many people, I guess.

I was having dinner with a friend when we started talking about that recent movie in which a mysterious man with half a face offers a Big Red Button to a couple in dire financial straits. “Push this button, and you will receive one million dollars,” he says, through an open cheek. “But somewhere in the world, a complete stranger will die.”

I said that under no circumstances could any moral person press the button.

My friend is way smarter than I am. She said “I’d accept the deal…only so I could grab the button away from him and make sure he couldn’t give it to anybody else.”

There are so many people out there who wouldn’t think twice about hitting that button. The larger lesson is that the Button exists in so many shapes and forms and it’s being slid towards us every day.

The shady contractor who charges a homeowner $50 for appliance removal and just dumps the old fridge or stove in an unguarded vacant lot on his way home. The financier who willfully dismantles the foundations of his own bank so he can clean up on a bet he made that its investments would fail; the idiot at the public library last week who decided that the Quiet Room — yes, even within the context of a library, a room with a big sign that says “QUIET ROOM” — was the perfect place to rip open, process, and crumple up a pile of 100 cellophane-windowed envelopes…these people need to be nailed up inside wooden boxes and shipped off to an island populated solely with like-minded individuals. Then they’ll know the true definition of Hell.

Hell isn’t a place where you’re tormented by the Devil. Hell isn’t even (as the Catholic Church defines it, I think) the simple absence of God. Hell is a closed community in which everybody thinks selfishly 100% of the time. And I can’t imagine a worse curse than to be unable to empathize with other people’s needs, or appreciate the effects your behavior can have — positively and negatively — on others.

At least the idiot with the envelopes responded to a quiet, but firm, “you can’t do that in here.” He can stay, I suppose. I’m going to yak-yak-yak about the need to be thoughtful and sensitive, I suppose it’s all meaningless if I don’t put it into actual practice.

But I really wanted to take him outside and smash a dozen raw eggs over his head, one at a time. What can I say. I am but an imperfect vessel for the Universe’s perfection.

Site Hacked, then de-Hacked?

Many of you called my attention to a problem with the site that seemed to have popped up a few days ago: every post was embedded with about a million invisible links to e-commerce sites. You could only see them by opening one of my pages and then choosing “View Source” in your browser.

My fingers are crossed but I think I’ve figured out the problem. It seems like my wp-supercache plugin got hacked. I disabled it and presto, my pages are all clean.

What a (fingers crossed) relief (I hope). The worst-case scenario is that my databases have been corrupted and there’s no way to be rid of this without meticulously rebuilding the whole damned thing one molecule at a time.

Which leaves the question of how the plugin got hacked in the first place. Over the past few days I’ve learned that one of my hosting service’s admin databases was compromised a few months ago.


I’ve reset my passwords. I’ve been reminded of the fact that my site passwords should be changed just as frequently as I change my other passwords. I’ve been reminded that it’s important to keep up to date with the news alerts coming from your host.

I’ve also been reminded of my longstanding commitment that if God were to give me 100 bullets (with the understanding that neither He nor any mortal agency would ever hold me accountable for what I do with them), at least 20 of them would be for the eggsuckers who deploy garbage like this.

The Ambitious Dilettante’s Guide To WordPress Site Design

Let’s return to a topic I dropped a couple of years ago: transitioning to WordPress after more than a decade of blogging from my own homemade content management system.

(Warning: even as I begin writing this post, I’m reading ahead and I can see the potential for a sermonette-style transition to a Life Lesson via the phrase “…and you know, it occurs to me that life is like that, sometimes…”)

I’ve learned a lot about how a dilettante like myself builds a modern WordPress site. We’re a special breed, the dilettantes. We have too much ambition to just sign up for a WordPress.com blog or use an off-the-rack blog theme. We don’t have enough ambition (or not enough money) to hire someone to custom-design something to our specs.

We live somewhere in between. We must learn, explore, make lots of mistakes, and ultimately reach an articulation of the declaration “I give up!”

It’s a productive version, though. It means “I have reached my saturation point of Exploring and Learning and Growing. My knowledge and my skills have expanded to completely fill the container of time and energy I can give it. Now, it’s time for me to just build the thing and move on.”

So to aid my fellow Dilettantes, here are the various steps I went through on my way towards that magical destination of Giving Up.

1) Take something off the rack.

Just sign up for an account on some blogging service, click on one of the six available themes, and go. It’s simple and quick, and you’re off and blogging right away. Which was no good for me because I couldn’t find a simple theme that would suit my needs.

Plus, I like the fact that I spend $20 a month for shared hosting on Media Temple. If I want to add a second blog, or a third, I don’t need to pay another $20 a month. At most, I just need to think about upgrading my service at some point.

So I moved on to

2) Browse among the hundreds and hundreds (and I’m certain that I’m lowballing it) of free and cheap-as-free themes that very smart and skilled designers have released.

It’s close to the lack of effort of Level One: it seems as though you can just keep browsing through galleries and eventually you’ll find a design that’s precisely the one you would have built yourself, or commissioned.

No good for me. I tried, but there are just wayyyyyy too many choices out there. I think I “chose” six different themes over the past two years. I even paid for a couple of them. But eventually, I waffled, reconsidered, and kept looking at more themes.

So I moved on to

3) Try to write my own theme.

I should mention that I already know a lot of CSS, and enough PHP to confidently hail taxis and order in restaurants when visiting PHPistan. Plus, I liked the puzzle of learning something new.

Tutorials like this one and this one really inspired me. WordPress maintains a database of your blog’s data and the theme is a series of templates and scripts that manipulate that database. The tutorials urge you not to be a hero. They wave you away from the idea of filling an empty BBEdit window with PHP and HTML and show you how to just steal the functional nuggets of code from existing themes in WordPress’ built-in library.

That’s right up my alley. It’s the cultural legacy of coding. When you’re building software, your most valuable resource isn’t the reference manuals and API guides: it’s other programmers’ working, tested code. Cut and paste the function you need, examine how it works, and ultimately you can figure out where you can safely tweak and prod it.

Furthermore, building a new theme from existing code elements is particularly attractive to someone with my rudimentary PHP skills. Writing scripts from scratch is still a slow process for me, but I know enough PHP to build something from existing elements and modify what’s already been built.

I eventually abandoned this approach. Building your own theme is very doable and I learned many things about WordPress that would serve me well later on. The more I dug into the nuts and bolts of the process, though, the more I began to appreciate that a WordPress theme is a living, breathing piece of software instead of as a set of HTML files in which little snippets of script act as content placeholders. I was certain that I’d wind up with something functional. I wasn’t so sure that I’d wind up with something that would live and breathe and grow, and could take advantage of future plugins and WordPress features.

Remember, the whole reason why I abandoned my homemade CMS was because I’d been on the upgrade-it-yourself treadmill for almost 14 years. I’m not eager to return to that world.

So I moved on to

4) Find an existing, muscular theme that’s close to what you want, and then modify the holy hell out of it.

This is going to be the sweet spot for most bloggers. Choose a theme, any theme. Then just learn a little CSS (or pick up a spiffy utility like CSSEdit, or StyleMaster for Windows), create a child theme, and then go to town.

Child themes is brilliant, I tells ya. If a WordPress theme is worth using, it’s awfully complicated piece of software. Even if all you really want to do is make the titles of your posts a little bigger, there’s a lot of slogging to do before you find the thing that you need to change. And then a year later, when the theme’s developer comes up with an updated version that adds loads of fab new features, you’ll click the button to upgrade and poof! All of your custom changes go away.

A child theme is a brand-new theme of your creation. Three lines of cut-and-paste markup code tell WordPress “Start off with all of the scripts and styles you’ll find described by this theme here” and the rest of it describes your overrides. “Don’t style a post title like that. Style it like this.

This tutorial got me off on the right foot. It explains everything. Even better, it gets you excited about what you can accomplish and makes you feel stupid (in a good way) for not finding out about child themes sooner.

…And then you install the Firebug plugin for Firefox, and you wonder why you made such a big fuss about customizing a theme in the first place.

You know that you want to change the font of your post titles. You know that it’s a simple case of modifying or overriding the theme’s CSS definition of that element.

Easy. Er, but first you need to find that definition.

Firebug will give you a simple dashboard to the CSS structure of any page in the browser. Roll your mouse over any CSS declaration, and the associated element will highlight on the webpage.

Snooping for CSS tags with the Firefox and the Firebug plugin. In this theme, 'entry-content' is the style for post titles, apparently.

(It’s supposed to be just as easy to do this in CSSEdit. But I find it’s easier to do it in Firefox.)

Then you just slap in an overriding CSS definition in your child theme. CSSEdit is swell for this sort of thing because it’s interactive. You plug in a change via a (somewhat) word processor-style tool palette and immediately see it reflected on your site.


I treaded water here in Option 4 before I lost interest. It seemed as though the DNA of the original design was always obvious, which sort of put me back where I was when I was examining dozens and dozens of prefab WordPress themes and not finding any to my liking.

But then I learned a little more about the theme community. And I moved on to

5) Base your blog on a “framework” theme.


The themes you get in Options 1 and 2 are like a hotel room or a model home. The furniture and drapes might not be to your taste, but you can move in right away. Option 3 is like starting off with a wooded lot. Option 4 is like buying an empty, existing house and then decorating it to your liking.

A “framework” theme offers some of the best features of all of these approaches. It’s as though the builder pours the foundations, frames in the whole house, gets all of the plumbing, heating, and electrical services going, plasters all of the walls, installs the roof, nails up the exterior siding, applies two coats of primer…and then hands you the blueprints.

All of the tricky technical bits that make a WordPress theme work have already been taken care of. You could move right in and live a rather stark existence among those bare walls and uncovered floors. But the understanding is that you’ll be finishing it up on your own.

And remember, you have an exceptionally well-documented design. I’ve settled on Thematic, because it’s so well supported. It’s not the only well-documented framework out there, of course. This is one of the big deals of a framework. You solve the problem “How the hell to I put a banner image in the header?” after a quick search of the support forums, not after an hour of poking and prodding and testing and failing.

There are bunches of popular frameworks. As I browsed through a dozen or so, I quickly came to see these frameworks as…well, rapid-development application frameworks. Which is precisely what they are. You’re building a new piece of software, without going to the trouble of re-inventing code that’s virtually identical among 90% of all WordPress blogs.

So that’s it, right? I’m at the end of my journey? The right answer is “Install a framework, and then build it up as needed”?

Close. I believe I’ve now hit upon a method that I’m referring to as “Really Quite Totally Finally The Right Way, Honestly, And I Mean It This Time”:

6) Create a child theme of a framework that doesn’t inherit any of the framework’s existing styles.

It’s a small tweak to Method 5. It seems to have given me everything I want, and removed every obstacle I’ve encountered.

I mentioned how easy it was to create a child theme: just paste in three lines of canned code at the top of a text file and presto, it’s a child theme. One of the lines tells WordPress “This child theme’s CSS styles will include all of the CSS styles of the parent theme, with the following overrides:”

Well: if you omit that line, then you get all of the machinery of the parent theme (the plumbing, the electricity, the foundation) without any of its CSS styles. Every element in the page layout is tagged with CSS selectors, but none of those tags have been styled yet.

Brilliant! Only even more so than the previous time I said that!

No, really. I was banging my head against the wall today because I’m really feeling the (self-imposed) pressure to finish up a new blog I’ve been wanting to launch since the middle of last year. Over the past few months of development, I’ve learned that modifying an existing, complicated theme via CSS is the fastest way possible to measure the exact distance between how you think CSS works, and how it actually works.

CSS is really quite simple. Anybody can understand it. You only run into trouble when you can only see (or you only understand) one small part of the elephant representing the CSS styles for this theme.

Yes, I’m a clever boy: by adjusting the offset of a graphic, I can get it to overhang past the left margin of the blog post that contains it and overlap onto the background slightly. My CSS stands proud and strong. But it didn’t work. I was unaware that the CSS element that contains the image has been told to clip anything that extends beyond its border.

I sighed. I edited the CSS for the containing element and told it “Please don’t do that.” I applied the changes, refreshed the page…and suddenly the whole page was a total, ragged mess. Because another style was counting on that clipping effect to pretty things up.

I don’t blame CSS. I don’t blame the designer. I don’t even particularly blame yourself. If I had understood the whole scheme, I’d have known exactly how to accomplish what I wanted to do. But I didn’t. And on some level, that’s kind of impossible.

Theme frameworks are wonderful and modifying them can be a streamlined process. But you’ll run into trouble if you’re trying to make the framework do things that its designer didn’t anticipate…or if they assumed that the framework’s users would be experienced consultants, instead of first-time dilettantes.

The solution was to remove that one little line from my child theme’s style definition. The Thematic framework will still act as the glue between my site design and the WordPress system. Now it’s up to me to actually create that site design, from the ground up.

It seems like the right call. Building every CSS style myself will take a lot of time, but autopsying Thematic’s CSS scheme would have taken just as much time and would have been far messier, I think. The Win is that I won’t have to give up on a good idea just because I can’t figure out how to make it live harmoniously among all of Thematic’s existing definitions. Bonus: I bet I’ll be less dumb about CSS by the time I’m finished.

And the work’s been much more fun. The process is tactile, not abstract. As soon as I restarted the project with an empty style sheet, I saw a version of my new site and its sample content that looked like a sloppy dropcloth of content. I got cracking.

I had never liked the broad width of Thematic’s content area. I opened the page in Firebug to refresh my memory on how Thematic’s different content areas are tagged. Then I created a style for “#wrapper” and set its width to 800 pixels.

Save, upload, refresh. The layout is 800 pixels wide. I want it centered in the window. Edit, save, upload, refresh: it’s centered. I want the background and the content areas to be contrasting colors. 1-2-3 and it’s done.

Best of all, it’s a linear process. I’ll never have to spend an hour “unwinding” the CSS to sleuth out why a piece of text refuses to be bold. The most frustrating tasks are the ones where you feel like you’re walking through a series of blackened hallways and you don’t know what you’re going to confront until you flip the next light switch. You thought you were going to have to just empty a wastepaper basket next to the sink. And then you got the bathroom door open and discovered that whoever designed the plumbing system in this apartment building didn’t incorporate a checkvalve system that prevents all of the sewage from all of the other units from backing up through a single fixture. You’re definitely going to be here a while.

Even without the presence of raw sewage, those projects are frustrating as all hell. I’ve been Bolding text since before many of you were born. I feel as though it’s well within my skill set to command a computer to make a certain word or line a skosh heavier.

This might be an arrogant statement, dear reader, but there you go. So I find it very, very disorienting when I add “font-weight: bold;” to a CSS definition and am only 60% certain of what effect that will have on anything.

I seem to have forgotten the potential life-lesson that this whole topic might have inspired. Well, spending an hour or so writing about CSS and PHP and webdesign will do that to you. You do find yourself thinking about life, but mostly about how it’s too short to be spending so much of it in activities like this.