Skip to: site navigation/presentation
Skip to: Thoughts From Eric

Archive: 'Commentary' Category

Content Blocking Primer

Content blockers have arrived, as I’m sure you’re aware by now.  They’re more commonly referred to as ad blockers, but they’re much more than that, really.  In fact, they’re a time machine.

Consider: a user who runs a content blocker can prevent the loading of Javascript, CSS, cookies, and web fonts.  (They can block more than that, but those asset types seem to be the main targets thus far.)  A person loading an article or other page from a web site gets the content, and that’s it, assuming the publisher hasn’t put some sort of “go away” server-side script in place.

Sound familiar?  It should.  We’ve been here before.  It’s 1995 all over again.

And, just as in 1995, publishers are faced with a landscape where they’re not sure how to make money, or even if they can make money.

Content blockers are a two-decade reset button.  We’re right back where we were, twenty years ago.  Except this: we already know a bunch of stuff that doesn’t work.

I don’t mean that ads don’t work.  Ads can work.  We’ve seen small, independent ad networks like The Deck do pretty okay.  They didn’t make anyone a billionaire, but they provided a good audience to advertisers via a low-impact mechanism, and some earnings for those who ran the ads and the network.

The ads that are at risk now are the ones delivered via bloated, badly managed, security-risk mechanisms.  In other words: what’s at risk here is terrible web development.

Granted, the development of these ads was so terrible that it made the entire mobile web ecosystem appear far more broken that it actually is, and prompted multiple attempts to rein it in.  Now we have content blockers, which are basically the nuclear option: if you aren’t going to even attempt to respect your customers, they’re happy to torch your entire infrastructure.

Ethical?  Moral?  Rational?  Hell if I know or care.  Content blockers became the top paid apps within hours of iOS9’s release, and remain so.  The market is speaking incredibly loudly.  It’s almost impossible not to hear it.  The roar is so loud, in fact, it’s difficult to make out what people are actually saying.

I have my interpretation of their shouting, but I’m going to keep it to myself.  The observation I really want to make is this: the entire industry is being given a do-over here.  Not the ad industry; the web industry.

Remember, this isn’t just about ads.  Ads are emblematic of the root problem, but they’re not the actual root problem.  If ads were the sole concern of content blockers, then the blockers (mostly) wouldn’t bother to block web fonts.  It’s possible to use web fonts smartly and efficiently, but most sites don’t, so web fonts are a major culprit in slow mobile load times.  The same is true for Javascript, whether it’s served by an ad network, an analytics engine, or some other source.  So they’re both targeted by blockers—not for enabling ads, but for disabling the web.

Content blockers strip the web back to what it was 20 years ago.  All the same challenges and questions are back, full force.  How do we make sites better, smarter, and cooler?  How do we make money by publishing online?

There are reputations and probably fortunes to be made by learning from our many mistakes and finding new, smarter ways to move forward.  I would advocate that people start with the core principles of the web standards movement, particularly progressive enhancement, but those are starting points, a foundation—just as they always were.

It’s not often that an entire industry gets an almost literal do-over.  We have two decades of hindsight to work with now, as we try to figure out how to (re)build a web where users don’t feel like they need content blockers just to be online.  This is an incredibly rare and exciting juncture.  Let’s not waste it.


Facebook is emotionally smarter than we give it credit for, though perhaps not as algorithmically smart as it could be.

I’ve been pondering this for a few weeks now, and Zeynep Tufekci’s “Facebook and the Tyranny of the ‘Like’ in a Difficult World” prodded me to consolidate my thoughts.

(Note: This is not about what Tufekci writes about, exactly, and is not meant as a rebuttal to her argument.  I agree with her that post-ranking algorithms need to be smarter.  I also believe there are design solutions needed to compensate for the unthinking nature of those algorithms, but that’s a topic for another time.)

Tufekci’s piece perfectly describes the asymmetrical nature of Facebook’s “engagement” mechanisms, commented on for years: there is no negative mirror for the “Like” button.  As she says:

Of course he cannot like it. Nobody can. How could anyone like such an awful video?

What happens then to the video? Not much. It will mostly get ignored, because my social network has no way to signal to the algorithm that this is something they care about.

What I’ve been thinking of late is that the people in her network can comment as a way to signal their interest, caring, engagement, whatever you want to call it.  When “Like” doesn’t fit, comments are all that’s left, and I think that’s appropriate.

In a situation like Tufekci describes, or any post that deals with the difficult side of life, comments are exactly what’s called for.  Imagine if there were a “Dislike” button.  How many would just click it without commenting?  Before you answer that question, consider: how many click “Like” without commenting?  How many more would use “Dislike” as a way to avoid dealing with the situation at hand?

When someone posts something difficult—about themselves, or someone they care about, or the state of the world—they are most likely seeking the support of their community.  They’re asking to be heard.  Comments fill that need.  In an era of Likes and Faves and Stars and Hearts, a comment (usually) shows at least some measure of thought and consideration.  It shows that the poster has been heard.

Many of those posts can be hard to respond to.  I know, because many of the Facebook posts my wife and I were making two years (and one year) ago right now were doubtless incredibly hard to read.  I remember many people leaving comments along the lines of, “I don’t know what to say, but I’m thinking of you all.”  And even that probably felt awkward and insufficient to those who left such comments.  Crisis and grief and fear in others can make us very uncomfortable.  Pushing past that discomfort to say a few words is a huge show of support.  It matters.

Adding “Dislike” would be a step backward, in terms of emotional intelligence.  It could too easily rob people who post about the difficult parts of life of something they clearly seek.

Medium Trials

Originally published at Medium on July 30th, 2015.

Yesterday, I decided to try importing a story to Medium. I’d hunted around for a way to auto-post to Medium from WordPress, which runs the blog portion of meyerweb (the rest is mostly HTML, with a little PHP here and there), and hadn’t found one. Then I found the “Import story” feature on Medium and thought, Sure, why not?

So I tried it out on my most recent post, which also happened to have some code in it, as my posts sometimes do. The process was, as anyone who’s used it can tell you, very simple. Paste in a URL and the content gets sucked in.

Well, except for code blocks.

Everything was imported without incident except the Javascript. That seems like a metaphor for something.

I’d structured the block with a pre element, as I always do, and yet the line-breaking was stripped away. It looks like my indentation tabs were preserved, but without the linefeeds, they didn’t have nearly the same utility.

The real problem is that the importation of the code block stopped cold at the first <, dropping the rest of the code on the floor. Now, I admit, I didn’t escape or entity-ize the character in my source, and maybe that was the problem. Still, I feel like an import tool should be a little smarter about things like less-than symbols on import. Otherwise, how many less-than-threes will end up as just plain threes?

Fortunately, the fix was simple: I went back to the original post, drag-selected the whole code block, copied, went back to Medium, drag-selected the mangled code, and hit ⌘V. Done. It was properly formatted and no less-than terminations occurred.

Today, I’m experimenting with writing my post on Medium first, after which I’ll repost it at meyerweb. This is likely the only time I’ll do it in that order, given my experience over here. Captions are deucedly hard to edit (at least in my browser of choice, Firefox Nightly), the apparent inability to add simple decorations like border to images, and the apparently intentional, active enforcement of single-space-after-sentence even when editing annoy me deeply. (Yes, that’s how I roll. Let’s not have the spacing argument here, please.)

I can see why Medium appeals to so many. It’s pretty frictionless, a lot more so than almost any other tool of its kind I’ve used. I mean, my WordPress install is pretty frictionless to me, but that’s because I invested a lot of time customizing it to be that way. Much like my browser, mail client, and other essential tools.

So anyway, that’s what I found during import and authoring on Medium. Here’s hoping this posts properly, and without the stray “in” that’s somehow shown up in my post, and which I can’t select, mouse to delete or otherwise remove through non-Inspector means. If only I could prepend an “f”!

It didn’t show up when I posted, fortunately.

P.S. I discovered this was the title just before publishing. It was supposed to be just “Medium”. ¯\_(ツ)_/¯

The Guilt I Carry

Last year, in an effort to help him and many friends of mine struggling with the tragic death of Chloe Weil, I told Jeremy Keith I had let go of guilt over Rebecca’s death, and that was the truth.  I mourned, I had regrets, but there was no guilt, because there was nothing we could have done except what we did.  Her cancer and death was always going to happen, and the only thing—the only thing—we could have done to avoid it was to have never adopted Rebecca in the first place, thus causing some other family to experience all the joy and sorrow of her brief life.  I accepted that, and it brought some small measure of peace.

All that was true.  Almost all of it is still true…except for guilt.  That came back, seeping into me so slowly that it took me a long time to realize it.  When I finally recognized it for what it was, I realized it had been there for months.  I also realized it was a particular form of guilt: survivor’s guilt.  This came as a surprise, honestly.  As it’s usually defined, at least as I understand it, survivor’s guilt seems to be recognized in the parents of children who take their own lives, but not to those whose children die from disease or accident.

Last week, I published my first piece with Modern Loss to talk about this.  A brief excerpt:

If Joshua had asked why I was saying sorry, I would have told him I wasn’t apologizing because I felt guilty, but rather because I was sorry in the sense of sorrowful. Sorry he had to experience the death of his older sister, who died on her sixth birthday of aggressive brain cancer. Who had been gone just about 51 weeks on the day we had that conversation. Sorry she had been terminally ill, sorry the world is as harsh and unfair as it is, sorry his best friend in the world is dead.

But not sorry out of responsibility or guilt. At least, that’s what I would have said, but I’d have been violating one of my basic tenets of parenting. Because I would have been lying to him.

You can read the whole thing at Modern Loss.  It’s a standard-length article, about 800 words.

I wrote it, in part, to understand myself.  But I published it in the hopes that it will help someone, some day, understand a bereaved friend or relative a little bit better…or possibly even themselves.


I’m writing this as Game 3 of the NBA Finals is playing downtown, not knowing how it’s going.  The Cavaliers may be up by 30, or down by 30; it doesn’t actually matter to me either way.  I’m not much of a sports fan, truth be told.

But I am a Cleveland fan.

I’ve lived here more than half my life now, after a rootless early childhood and then a semi-rural upbringing.  I came here for college, way back in the late 1980s, and never left.  Never wanted to leave.  The opportunities were there, but I never took them.  When Netscape came to me and asked if I wanted to be a Standards Evangelist, I told them only if I could do it without relocating.  They said yes.  I told Google the same thing about a decade later; they said no.

Something about this city got into me, and didn’t let go.  We have our problems, sure.  You’ve heard some of them on the news.  Everywhere has problems.  I hope we can fix ours, and I hope other places can fix theirs.  Either way, I have long been proud to call Cleveland home, as I will for years to come.

Most of my friends are incredibly excited about the Cavaliers.  Deliriously so, some of them.  It’s pretty awesome to experience, even secondhand.  So I’ve been reading about how the first two games of the finals went, and in them, I recognized something very familiar.

From what I’ve read, pretty much nobody outside the 216 gave the Cavs any real chance in this series.  The Golden State Warriors were judged to be simply too powerful.  And yet, Game 1 went into overtime, where the Cavs lost steam and one of their star players to injury.  Everyone (outside Cleveland, that is) said that was it.  The Cavs made it a great game, they said, but being down to one star player was the end of their run.  After which, Game 2 went to overtime, and the Cavs won it by a razor-thin margin.

That’s Cleveland in a nutshell.

This is a city that is constantly underestimated and derided, but we already know our faults, and we know our strengths.  There’s a core of steel under the bruised and battered skin.  Just like the Cavs.  Down to one headline player, they managed to force overtime and pull a win on the home court of the team that everyone said they couldn’t beat.  The Grit Squad, they’re calling themselves now.  People are saying the LeBron has taken a team of players that shouldn’t be this good and made them into a force.  That may well be, and if so, LeBron stands to make far more as Coach James than he ever will as King James.

America loves an underdog, but it also loves to dump on Cleveland, so I have no idea how sports fans around the country have seen this series.  What I know now is that, win or lose, the Cavaliers have shown the rest of the country what this city is really like, and for that alone they’ve earned my respect.  I think they deserve the same from anyone who’s witnessed what they’ve done.

So Game 3 is underway, probably close to done or even finished by now.  I have no idea if it was another squeaker or a blowout, nor who won.  As soon as I publish this, I’ll go check on how things went.  For the sake of all my friends, I hope the Cavs made it a win in their first Finals home game—but however things turned out, I’m sure The Q was bedlam tonight as the fans celebrate not just being in the finals, but the spirit of the team that embodies this city I call home.

The Pivotal Ways

Five years ago yesterday, the suave and debonair Ethan Marcotte debuted a talk titled “A Dao of Flexibility” at An Event Apart Seattle.  I still remember the feeling in the room.  Those of us who were there realized that it was a pivotal moment for the web, even before Ethan had left the stage.  It was the moment that responsive web design burst forth into the world.

The title, and content, of Ethan’s talk explicitly paid homage to the rugged and handsome John Allsopp’s “A Dao of Web Design”, published fifteen years ago today at A List Apart.  It’s hard to overstate how much wisdom and prescience is distilled into that deceptively short piece.  As I said in the testimonial I contributed to ALA’s remembrance:

John’s insights are as sharp and relevant as ever, especially when we realize the web’s inherent flexibility isn’t just about layout—that, in fact, layout flexibility is one of the web’s least important features. I try to reread “A Dao of Web Design” at least once a year. You should, too.

There’s not much more I can add, and honestly, anything I tried to add to these seminal works of brilliance would only cheapen them.  Go, read; go, watch.  Remember where we’ve come from, and use that foundation to chart where we’re going.

On This Day

Earlier today, Facebook announced a new feature called “On This Day”.  With On This Day, you see pictures, posts, and other events that occurred on a given day.  If you’re familiar with Timehop, it seems very much like a Facebook-only Timehop.  That will probably seem limited and broken to actual Timehop users, but for the vast majority of Facebook users, it will be a new and potentially very welcome feature.

As you can imagine, given what happened with Year in Review, I’m very interested by On This Day.  I haven’t interacted with the actual product yet, so I don’t know what kinds of opt-in or opt-out features will be present.  If any.  From the screenshots in the Facebook announcement, it looks like they’ve taken a much more neutral direction with the visual design.  There are calendar pages and abstract photos, with few of them expressing much in the way of emotional content.  An exception is seen at the top center of the banner image on the announcement, depicting what appears to be a woman in love, but that’s actually a decoration on the banner, instead of a UI component.  Whether those sorts of things will show up in the UI, I don’t know.

But this is what I wonder: is Facebook about to hurt a bunch of people?  From the announcement:

To see your On This Day page, you can click on the On This Day bookmark, search for “On This Day,” or visit You might also see a story in your News Feed.

Putting “a story in the News Feed” is exactly how Year in Review became a viral news story.  And it’s what distinguishes On This Day from Timehop or ThinkUp (which has “your most popular update” features).

If I install Timehop, for example, I know what I’m getting into.  I’m actively, consciously deciding to revisit events from past years by way of Timehop.  I can decide not to launch it at all on certain days, if I know what I see would be too painful.

On This Day, on the other hand, is part of an existing ecosystem.  Dropping On This Day into the Facebook news feed without consent is very much like having Timehop install itself onto your smartphone and then auto-launch, all without asking.  If this happened, we’d (rightly) take the responsible parties to task.  Patronizing dismissals that “you use a smartphone, you get what you deserve” would be relatively thin on the ground, whereas I’m sure there will be plenty of that directed toward any Facebook user upset by what an On This Day new feed entry shows them.  That was certainly the leading line of condescension around the Year in Review news feed post.

There isn’t much more to go on in the announcement, though I did notice:

…you can choose to subscribe to notifications so you’ll be alerted when you have memories to look back on. You can also edit and delete old posts, or decide to share your memories with friends.

Editing or deleting old posts is interesting, if a bit troubling to the historian in me, and the ability to sign up for notifications is a welcome sign of opt-in ethics, but what I notice here is what’s missing:  I don’t see any reference to an ability to opt out of On This Day, either for certain days or altogether.  It might be there and simply not referred to in the product announcement, but I wonder if this is something that Facebook users will simply have to get used to.

The timing of this has a personal resonance.  As I wrote about yesterday, we just passed the first anniversary of the day Kat and I were told about Rebecca’s second tumor.  For the next eleven weeks, both our posts and pictures from last year, wherever they’re housed, will form a chronicle of the last days of our daughter’s life.  How will we react to Facebook, how will we feel about our experience there, if On This Day constantly reminds us of those events?  Will this product increase our affinity with Facebook, or our antipathy?  Perhaps we might go to Facebook to catch up with friends and joke around with them a bit, as a form of mental respite.  Or, perhaps, we would have done that, but now will be unable to do so.  We’ll soon find out.

Lest anyone misunderstand, this isn’t just about Facebook.  It’s about every service or product that seeks to increase user affinity, and avoid user antipathy.  Facebook just happens to be providing some very obvious grounds on which to base these conversations.  Given their line of business and scale of operation, that’s probably to be expected.  I’ll be following this with great professional and personal interest.

Well, That Escalated Quickly

This post is probably going to be a little bit scattered, because I’m still reeling from the overwhelming, unexpected response to the last post.  I honestly expected “Inadvertent Algorithmic Cruelty” to be read by maybe two or three hundred people over the next couple of weeks, all of them friends, colleagues, and friends who are colleagues.  I hoped that I’d maybe give a few of them something new and interesting to think about, but it was really mostly just me thinking out loud about a shortcoming in our field.  I never expected widespread linking, let alone mainstream media coverage.

So the first thing I want to say: I owe the Year in Review team in specific, and Facebook in general, an apology.  No, not the other way around.  I did get email from Jonathan Gheller, product manager of the Year in Review team at Facebook, before the story starting hitting the papers, and he was sincerely apologetic.  Also determined to do better in the future.  But I am very sorry that I dropped the Internet on his head for Christmas.  He and his team didn’t deserve it.

(And yes, I’ve reflected quite a bit on the irony that I inadvertently made their lives more difficult by posting, after they inadvertently made mine more difficult by coding.)

Yes, their design failed to handle situations like mine, but in that, they’re hardly alone.  This happens all the time, all over the web, in every imaginable context.  Taking worst-case scenarios into account is something that web design does poorly, and usually not at all.  I was using Facebook’s Year in Review as one example, a timely and relevant foundation to talk about a much wider issue.

The people who I envisioned myself writing for—they got what I was saying and where I was focused.  The very early responses to the post were about what I expected.  But then it took off, and a lot of people came into it without the context I assumed the audience would have.

What surprised and dismayed me were the…let’s call them uncharitable assumptions made about the people who worked on Year in Review.  “What do you expect from a bunch of privileged early-20s hipster Silicon Valley brogrammers who’ve never known pain or even want?” seemed to be the general tenor of those responses.

No.  Just no.  This is not something you can blame on Those Meddling Kids and Their Mangy Stock Options.

First off, by what right do we assume that young programmers have never known hurt, fear, or pain?  How many of them grew up abused, at home or school or church or all three?  How many of them suffered through death, divorce, heartbreak, betrayal?  Do you know what they’ve been through?  No, you do not.  So maybe dial back your condescension toward their lived experiences.

Second, failure to consider worst-case scenarios is not a special disease of young, inexperienced programmers.  It is everywhere.

As an example, I recently re-joined ThinkUp, a service I first used when it was install-yourself-and-good-luck alpha ware, and I liked it then.  I’d let it fall by the wayside, but the Good Web Bundle encouraged me to sign up for it again, so I did.  It’s a fun service, and it is specifically designed to “show how well you’re using your social networks at a more human level,” to quote their site.

So I started getting reports from ThinkUp, and one of the first was to tell me about my “most popular shared link” on Twitter.  It was when I posted a link to Rebecca’s obituary.

“Popular” is maybe not the best word choice there.

Admittedly, this is a small wrinkle, a little moment of content clashing with context, and maybe there isn’t a better single word than “popular” to describe “the thing you posted that had the most easily-tracked response metrics”.  But the accompanying copy was upbeat, cheery, and totally didn’t work.  Something like, “You must be doing something right—people loved what you had to say!”

This was exactly what Facebook did with Year in Review: found the bit of data that had the most easily-tracked response metrics.  Facebook put what its code found into a Year in Review “ad”.  ThinkUp put what its code found into a “most popular” box.  Smaller in scale, but very similar in structure.

I’m not bringing this up to shame ThinkUp, and I hope I haven’t mischaracterized them here.  If they haven’t found solutions yet, I know they’re trying.  They really, really care about getting this right.  In fact, whenever I’ve sent them feedback, the responses have been fantastic—really thoughtful and detailed.

My point is that ThinkUp is a product of two of the smartest and most caring people I know, Gina Trapani and Anil Dash.  Neither of them comes anywhere close to fitting the Young Brogrammer stereotype; they are, if anything, its antithesis, in both form and deed.  And yet, they have fallen prey to exactly the same thing that affected the Year in Review team: a failure to anticipate how a design decision that really worked in one way completely failed in another, and work to handle both cases.  This is not because they are bad designers: they aren’t.  This is not because they lack empathy: they don’t.  This is not because they ignored their users: they didn’t.  This is such a common failure that it’s almost not a failure any more.  It just… is.

We need to challenge that “is”.  I’ve fallen victim to it myself.  We all have.  We all will.  It will take time, practice, and a whole lot of stumbling to figure out how to do better, but it is, I submit, vitally important that we do.

October 2015