meyerweb.com

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

Dislike

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”. ¯\_(ツ)_/¯

Undoing oncut/oncopy/onpaste Falsities

Inspired by Ryan Joy’s excellent and deservedly popular tweet, I wrote a small, not-terribly-smart Javascript function to undo cut/copy/paste blocking in HTML.

function fixCCP() {
   var elems = document.getElementsByTagName('*');
   var attrs = ['onpaste','oncopy','oncut'];
   for (i = 0; i < elems.length; i++) {
      for (j = 0; j < attrs.length; j++) {
         if (elems[i].getAttribute(attrs[j])) {
            elems[i].setAttribute(attrs[j],elems[i]
            .getAttribute(attrs[j])
            .replace("return false","return true"));
         }
      }
   }
}

Here it is as a bookmarklet, if you still roll that way (as I do): fixCCP.  Thanks to the Bookmarklet Maker at bookmarklets.org for helping me out with that!

If there are obvious improvements to be made to its functionality, let me know and I’ll throw it up on Github.

Gradient Flags

With the news today of the Supreme Court’s decision in Obergefell v. Hodges, and my recent completion of the part of CSS:The Definitive Guide that deals with gradients, I thought I’d create a couple of flags using linear gradients.

First, I’ll define the basic box of the flags.  The dimensions are the same as those specified for the U.S. flag, 1:1.9.  I added a couple of box shadows for visual constrast with the background.

div {height: 10em; width: 19em; margin: 3em;
    box-shadow: 0 0 0.5em rgba(0,0,0,0.25),
        0.4em 0.6em 0.5em rgba(0,0,0,0.25);}

Okay, with that set, first up is what’s often called the pride flag, which is to say the “rainbow flag”.  There’s an interesting history to the design of the flag, but I’m going to stick with “the six-color version popular since 1973”, as Wikipedia puts it.

For such a flag, we just need color stripes with hard stops between them.  That means putting the color stops right up against each other, like so:

div#rainbow {
    background: linear-gradient(180deg,
        red 0%, red 16.7%, 
        orange 16.7%, orange 33.3%,
        yellow 33.3%, yellow 50%, 
        green 50%, green 66.7%, 
        blue 66.7%, blue 83.3%, 
        purple 83.3%, purple 100%);
}

The first red 0% isn’t really necessary, nor is the last purple 100%, but I left them in for the sake of consistency.  You could remove them both in order to make the CSS a little smaller, and still get the same result.  I decided to go from red to purple, as the spectrum is usually described, which meant having the gradient ray point from top to bottom.  Thus 180deg, although to bottom would be completely equal in this case.

Now for the US flag.  In this case, things get a little more interesting.  I’ll note right up front that I’m not going to put in any stars, in order to keep this simple and gradient-focused, and yet it’s still interesting.  We could use a repeating linear gradient, like so:

repeating-linear-gradient(180deg,
    #B22234, #B22234 0.77em, white 0.77em, white 1.54em)

That would then cause each red-white pair of stripes to repeat vertically forever.  Because the specified stripes are manually calculated to be 1/13th of the height of the overall flag (10em), they’ll just fit like they should.

The problem there is that if the overall flag size ever changes, like if the height and weight are converted to pixels, the stripes will get out of sync with the dimensions of the flag.  Fortunately, we don’t have to rely on ems here; we can use percentages.  Thus:

repeating-linear-gradient(180deg,
    #B22234, #B22234 7.7%, white 7.7%, white 15.4%)

Ta-da!  The stripes are the right sizes, and scale with any changes to the height and width of the flag, and repeat as required.

That’s all well and good, but we still need the blue canton (as it’s called).  Since the canton will be on top of the stripes, it actually needs to come first in the comma-separated value list for background-image.  That gives us:

background-image:
    linear-gradient(0deg, #3C3B6E, #3C3B6E),
    repeating-linear-gradient(180deg,
        #B22234, #B22234 7.7%, white 7.7%, white 15.4%);

Wait.  A blue-to-blue gradient?  Well, yes.  I want a consistent blue field, and one way to create that is a gradient that doesn’t actually grade.  It’s a quick way to create a solid-color image that can be sized and positioned however we like.

So, now we size and position the canton.  According to the official design specifications for the flag, the canton is the height of seven stripes, or 53.85% the height of the overall flag, and 40% the width of the flag.  That means a background-size of 40% 53.85%.  The stripes we then have to size at 100% 100%, in order to make sure they cover the entire background area of the flag.  Finally, we position the canton in the top left; the stripes we can position anywhere along the top. so we’ll leave them top left as well.

The final result:

div#usa {
    background-image:
        linear-gradient(0deg, #3C3B6E, #3C3B6E),
        repeating-linear-gradient(180deg,
            #B22234, #B22234 7.7%, white 7.7%, white 15.4%);
    background-size: 40% 53.85%, 100% 100%;
    background-repeat: no-repeat;
    background-position: top left;
}

And if you, like Bryan Fischer, believe that morally speaking “6/26 is our 9/11”, you can move the canton from top left to bottom left in order to invert the flag, which is permitted “as a signal of dire distress in instances of extreme danger to life or property”.

(Of course, it’s a lot easier to do that with background positioning since I didn’t include the stars.  If the stars were there, then we’d have left the canton’s position alone and done a rotateX() transform instead.)

So, there you go: two gradient flags.  You can see both (along with the “distress” variant) on this test page.  If you’ve any desire to use any or all of them, go ahead.  No copyright, trademark, patent, etc., etc. is asserted, implied, etc., etc.  I just wanted to have a little fun with gradients, and thought I’d share.

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.

Witness

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.

Afterimage

I remember her last breaths.
I remember how she methodically ate every last scrap of frosting from her birthday cupcake.
I remember her eating Sasa fries and looking with affection at little Joey, who’d come to her last meal.
I remember the last sentence she ever spoke.
I remember her singing and blowing out the candles at her sixth birthday party.
I remember her many laughs—gleeful with mischief, wild with delight, brimming with amusement.
I remember how her whole body shook when she laughed.
I remember how ticklish she was, and how much she loved being tickled.
I remember when she had finally grown enough that her fingers could interlace with mine when we held hands.
I remember the quiver of her lip as we told her there was no special medicine.
I remember her screaming “YES!!!” when we told her we’d bought season passes to Cedar Point.
I remember how she would oppose and defy us even when it cost her something she wanted.
I remember how she insisted on doing everything herself, insisting she needed no help even when she clearly did.
I remember how she would respond to my jokes in a flat, unimpressed voice: “Seriously?”
I remember how she’d cheat at every game and laugh about it as she did.
I remember playing air hockey with her.
I remember how much she loved to wear sparkly princess dresses.
I remember snowflakes stuck in her curly hair.
I remember her sticking her tongue out at me.
I remember her learning to read and write her name.
I remember how she nearly always threw up a hand to block me taking pictures of her.
I remember her painting her own nails for the first time.
I remember how much she loved to have her face painted.
I remember her squealing with delight when we told the kids we were going to Disney World.
I remember sitting on the porch roof with her and her siblings, watching the clouds and waving to people on the sidewalk below.
I remember her arms locked tight around my neck in a squeezy hug.
I remember her snuggled into my lap as I read her a book.
I remember her huddled against me and flinching every time a firework burst.
I remember how she would nod her head with studied nonchalance and say in an offhand, half-dismissive tone, “Yeah, cool, Dad.”
I remember how much she loved and looked up to and emulated her big sister.
I remember how much she loved and played with and protected her little brother.
I remember how she loved watermelon so much she’d eat half a melon by herself and then say she was too full for dinner.
I remember how she danced through life at every turn.
I remember her unbounded joy.
I remember how her body strained against my arms when I had to restrain her, to keep her from hitting, screaming her defiance until I wore her down.
I remember how she jumped waves at the beach, flinging herself into the air with no thought of how she would land, no concern except to jump over the crest as high as possible.
I remember her shouting “Watch me!” before jumping from the pool’s edge to her mother’s arms.
I remember how much she loved to splash in any pool or a puddle or any body of water.
I remember her playing in a big box of styrofoam packing peanuts, shrieking with delight.
I remember how she would grab my thumbs and climb up my front until she was standing on my shoulders, giggling all the way.
I remember her nestled into a sling on her mother’s back, peeking out at the world with a sly grin.
I remember how she used to carefully stick a raspberry on each fingertip before eating them one at a time, again and again.
I remember her feeding a giraffe.
I remember how much she loved coffee.
I remember her throwing rings at the bottles on the boardwalk.
I remember her trying to wash the dishes when she was barely tall enough to stand on a stepstool and see into the sink.
I remember her sitting in the car at the sledding hill, warming her hands against the air grating and waiting for us to be done.
I remember how she always wanted to drive the car.
I remember how she waited for her first birthday party to take her first steps, so she’d have as big an audience as possible.
I remember how she would call to her sister: “Lerlyn! Ah ooo?”
I remember her sister stamping the papers that finalized her adoption.
I remember the gleam in her two-week-old eyes that made me call her “Little Spark”.
I remember how wide and clear her big brown eyes always were.
I remember the first time I ever saw her, asleep in a car seat in a trailer home in a park in the middle of a cornfield in the middle of Ohio.
I remember how joyful I was when I picked her up and nestled her in my arms.
I remember how scared I was.
I remember.

Spring Air

I’m sitting on the love seat on my front porch.  It’s a beautiful spring day, the blue sky flecked with a few wispy clouds—certainly not enough to dim the sun’s warmth even when they do drift in front of it.  There’s a slight breeze stirring the clean June air, almost but not quite cool enough in the shade to call for a sweatshirt.

The feel of the air on my skin, the smell of spring, the sounds of the neighborhood, the sun and temperature, all exactly the same as they were one year ago today, and the combined sense of parallel and divergence is intense.

We had just started our meeting with the rabbi, upstairs in the library, beginning to discuss the details of the memorial service we knew we could not avoid, when our friends shouted up in panicked voices that something was wrong with Rebecca.  By the time we reached the porch, she was almost unconscious.  There had been a seizure, a small one, but we assumed it was the first of many.  We called the hospice nurse and then Kat and I sat to either side of her on the love seat, snuggling in close.  For more than an hour, Rebecca seemed to be asleep, and yet was, at some level, still aware.  When Kat tried to shift her arm, Rebecca reached up, never even opening her eyes, to pull it back around her shoulders.

So we kept talking to her, telling her how much we loved her, how much everyone loved her, going through all their names again and again.  Telling her stories about herself, favorite memories of hers and ours.  Telling her we were with her all the way to end, all of us together.  Telling her that she could stop fighting.  Telling her she could go.

She never stirred, except to make sure Kat’s arm stayed around her.  And after an hour or two, even that ceased.  Her body was completely limp, her breath steady but slow and getting slower.

We were sure she was going to die that sunny spring afternoon, in the shade of our porch, surrounded by our love, just shy of turning six.

And then, late in the afternoon, she suddenly stirred and sat up, her eyes open.  “Hey,” I said to her, and I remember how my voice was filled with wonder and surprise.  “Hey there, Little Spark.  Did you take a nap?”

She nodded.

“Would you like to go to dinner?”

Another nod.  She had already spoken her last words, hours before.

“What would you like?  Sasa fries?”

Nod.  This one might have been a tiny bit more energetic.

So we and some of those who had assembled headed to Rebecca’s favorite restaurant in the world, owned by our friends, the place every one of our kids had come for their first meal outside of the house.  Rebecca had her favorite meal: a Japanese cream soda, some miso soup with extra tofu, and the Sasa fries.  She was able to carefully drink the soda from a sake cup by herself, and eat the fries, slowly, one at a time.  The soup required some assistance.

Back home that evening, we got birthday cupcakes ready.  It wasn’t her birthday until the next day, June 7th, but all day we had been doing birthday things—favorite breakfast, dinner at Sasa, cupcakes—because we were afraid she wouldn’t be there the next day, and we figured that if she was, we’d just do it all again.  Homemade cinnamon rolls every morning, Sasa and cupcakes every night, for however many days were left.

There were none.

I came into the living room to find Rebecca and Carolyn asleep, snuggled against each other on the sofa.  I kept silent and just watched them sleep, experiencing a bittersweetness beyond any I had imagined.

Then the cupcakes were brought in, and Rebecca woke up to see the lit candle in hers and to have us sing her “Happy Birthday”.  There was no expression on her face as she stared at the flame, no flicker of emotion.  She just stared as we blew out the flame for her, her face like a mask that hid our daughter.

But she ate the whole cupcake, and every bit of frosting, slowly and methodically scraping every last scrap off the plate and licking it from her fingers.  When it was done, I asked if she was ready for bed, and at her nod led her to the stairs.  She put a hand on the banister and walked up the stairs on her own, holding my hand without actually needing it.

I felt a small sliver of hope at that, until I realized that throughout all the frosting and stair-climbing, the teeth-brushing and changing for bed, being snuggled under the covers, her expression still never changed.  No joy, no excitement, no annoyance, no anger.  Nothing.

I was so incredibly proud of her, though.  She was so exhausted, and yet she insisted on doing as much as she could by herself.  The mask of her face may have hidden her emotions, but her fire was still as clear as ever.  I was humbled beyond measure.

Kat read Rebecca her favorite stories for the last time.

Tomorrow will be the first anniversary of her death, the day she would have turned seven years old.  I sit on the porch, and all my senses tell me that day has come again.  It is so incredibly alike, and yet so different, sitting here on the love seat in the cool June breeze without my Little Spark.

August 2015
SMTWTFS
July  
 1
2345678
9101112131415
16171819202122
23242526272829
3031  

Archives

Feeds

Extras