Posts in the Writing Category

Everything Looks Like a Nail

Published 8 years, 8 months past

I have recently, perhaps inevitably, taken up woodworking as a hobby.  It’s just clichéd enough to be credible, isn’t it?  Web, wood, maybe it’s in the leading “w”.

A programmer friend and I get together Wednesday evenings to try our hand at what is currently best described as rough carpentry.  The usual reason to take up a “physical-world” hobby like woodworking is to “get away from the computer for a while, man!”  But of course we pull out our iPhones to use as calculators, look up techniques, or find online tools that can help us.  The laptops stay indoors, but computers and the internet still smooth our way.

In web terms, we’re past “hello world” and at about the point where we understand the basics of HTML and have set a few colors and faces with beginner CSS.  We could put up a single-column fan site if that were the goal, but not much more than that.  We’re still at the stage of making a lot of mistakes and not knowing if our problems spring entirely from not knowing how to use our tools, or also from not knowing enough to realize the tools themselves are deficient.  We’re figuring things out as we go, hitting up YouTube for how-to guides on just about everything.  Wikipedia may aspire to be the site of record for Things of Import, but YouTube holds the sum total of humanity’s practical knowledge, hidden amongst all the pop-star and cat videos.

A lot of the best practices map back and forth, too.  Planning ahead is a core competency, and the more you practice, the better you get at it.  Measurement is vital, and cleverness is as useful as it is dangerous.  The importance of quality tools can’t be overstated.  There are a lot of (very) specialized tools available, but you can get really far with the core set of flexible, time-honored basics.  As long as you have a boatload of clamps, that is.

The one major difference is that there is no versioning in woodworking.  It’s like building a project with only the “Save” command — no milestones, no repositories, no undo.  When you do something, you’re committing to altering the project with no take-backs.  If you get it wrong, you have to find a way to patch over the problem.  If you get it really wrong, you have to scrap what you just did and replace the botched part.  And if you get it really, really wrong, all you can do is scrap the whole thing and start over.

So far we haven’t had to scrap anything.  Our first couple of projects were the classic starters: a simple bookshelf, a firewood box, a more complex bookshelf.  For each, we’ve intentionally stepped up the complexity, a bit at a time.  The first bookshelf was just screwed together, but the pieces were all pretty much the right size and properly aligned.  The firewood box was also screwed together, but it involved angled cuts and hinges and sealant.  The second bookshelf involved a wood router in a variety of ways, both structural and decorative.

As in networking, we swore a lot at the router, but it got us where we needed to be.  Eventually, that is, once we figured out how to properly configure it and deal with its quirks.

I can’t deny that there’s a visceral satisfaction in picking up a hammer and whacking on a thing until it’s properly assembled, or disassembled, as the case may be.  There’s definitely a triumph in finding out you did all the measuring and cutting and aligning just right, much like the rush you get when your first major coding project does what you meant it to do, except more so because you’ve wrestled atoms into doing your bidding.  That’s literal orders of magnitude beyond wrangling electrons.

Our next steps are what I assume is the usual second phase: building a wood shop in order to learn how to use a wood shop.  We’re moving up to building fold-down work surfaces with tool storage, custom-fitted wood storage, and braced shelves.  That experience will enable us to move into other, more complicated projects.  Some we already have in mind.  Others will suggest themselves to us.  At every step, we’ll look for new skills to try and practice.

And that, I think, is the real ultimate goal here: to teach ourselves new things, to enrich our skill sets and create useful objects thereby.

So it’s pretty much like working on the web.

Well, except for all the staining.

This article was originally published at The Pastry Box Project on 2 July 2015.


The Guilt I Carry

Published 8 years, 9 months past

“Why are you crying?” I asked my son. He wasn’t actually crying so much as sniffling, but the expression on his face was enough to justify the question. He just shook his head, so I sat down on the steps, pulled him into my lap, and snuggled him close. You can still do that when they’re four years old.

“You’ve seemed sad this morning, buddy,” I said gently. “Can you tell me what’s wrong?”

“I miss Rebecca. She was the best big sister ever.”

I hugged him close, as if he were a life preserver, and at that moment he might well have been.  “She was, Joshua.  I miss her too, so, so — ” I couldn’t speak for a moment.  The tears were running ceaselessly down my face, spattering both our shirts. He looked into my eyes and his own tears stopped as he searched my face with a kind of tender curiosity.

“Oh, I’m sorry, Joshua.  I’m so, so sorry. It wasn’t anyone’s fault.  There was nothing we could do. We did everything we could. We loved her, and made her life as wonderful as possible. That’s what we did.  Right?”

He nodded, still looking at me intently.

“Oh, buddy, I’m sorry. I’m sorry. I’m so sorry.”

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.

As the parent of a dead child, I experience survivor’s guilt. I know the term is generally defined to apply to people like those who survived the 9/11 attacks, tortured by the knowledge that they lived while others died. Those who make it out of plane crashes, or war zones. The friends and family of suicide victims, including the parents of children who take their own lives.

A toddler-age Rebecca snuggled up asleep against the shoulder of the author, who holds her in his arms as he gazes out to sea.
Father and daughter

I can assure you it also affects the parents of children who died of what we bitterly label natural causes. My daughter Rebecca had glioblastoma multiforme, something her genetics preordained and no medicine could hope to cure. Her last MRI, taken five days before she died, showed so many emerging tumors that the doctors didn’t bother to count them. There was, as I said to Joshua, nothing anyone could do to save her.

It doesn’t matter. I still ask myself what I should have done differently, as if there were some winning strategy I was too stupid or blind or arrogant to see. I tell myself that we all did everything possible, but I feel a profound sense of failure. This is the guilt surviving parents bear. Why did she die, and we live? How can we live with ourselves, knowing we failed to save her? For that matter, having failed at our most basic duty, what right do we have to call ourselves parents at all?

Parents are supposed to protect their children, even at the cost of their own lives. I remember the nights I lay in bed next to her sleeping form, my forehead lightly pressed against hers, silently begging any god or demon who might hear me to draw the cancer out of her head and into mine, to name its price if my life was not enough, the pressure of my desperation pounding in my temples.

Did I not pray hard enough, or fervently enough, or offer enough of a sacrifice? Did I not pay attention at the right moment, and overlook the treatment that would have saved her?

You may shake your head, assuring me I did all I could and then some, gently insisting I should be proud of what my wife, Kat, and I did, and how we made her short life the best it could be. Many, many people have done all that and more. I’ve listened to them, and told them I hear them and agree with them. There’s even some truth to my words. But only some.

Kat has it even worse. With her advanced medical degrees, she feels like she should have found a cure. She knows intellectually how ludicrous that sounds, the idea that in ten months she should have found a cure for an incurable disease, but in her heart she carries the guilt. I can tell her she did everything she could and then some, that she should be proud of what she did and how hard she searched for treatment and how she made Rebecca’s short life the best it could be. I do tell her that, and I believe every word.

But she does not.

It was one year to the day after Rebecca’s death, the day that would have been her seventh birthday.The prayers were finished, the memories shared, and Kat and I sat in front of the newly-unveiled grave marker looking at all the stones people had set atop it in remembrance.

I had reached out to move one of the stones off the word “loved” when my fingers brushed the sparkling silver-blue granite of marker itself. Suddenly I was sobbing, blind to everything around me except Kat’s hand on my back as I hunched over, my hand pressed against the gravestone of my daughter.

“I’m sorry, Little Spark,” I sobbed to her gravestone. “I’m so sorry.”

“Why are you sorry?” said Kat gently. “You have nothing to apologize for.  You did everything you — ”

I shook my head, tears sluicing off the inside of my glasses. I whispered it again and again: “I’m sorry.”

Of course Kat’s right, that I have nothing to apologize for. I know that. There was nothing any of us could do except what we did: Fight for her, and make sure her short life was full of wonder and love. I am proud of what we did, but I still carry the guilt of what I could not do: Save my child’s life. I still carry the guilt of what I do now: Continue to survive when my child did not.

I would give almost anything to be able to tell Rebecca how sorry I am, over and over, to beg her forgiveness for my failure to do the impossible. For letting her down, for violating her trust in me to fix everything, the way parents are supposed to.

Just as I begged Joshua his forgiveness, as he huddled in my lap.

This article was originally published as After My Daughter’s Death, On Guilt and Apologies at Modern Loss on 18 June 2015.  It has been edited for clarity.


Untitled

Published 8 years, 9 months past

If you do something you love for long enough, it gets into your bones.  But more than that, the things adjacent to it do as well.

Since I got started on the web, very nearly 22 years ago now, I’ve never really seen myself as a designer.  Granted, I did some visual design in the early days, because anyone who set up a web site back then had to be the designer: there was nobody else.  No graphic designers would deign to look at the web, and no “web designers” yet existed.  We were Web Masters because we had to be, drawing buttons and laying out content along with writing code and doing UX and UI and IA and everything else.

So I did design when I had to, but I always knew I wasn’t a capital-D Designer.  I knew this in the same way I knew I was not a boulder nor an odor: it wasn’t a failing or even a lack, but just what was true and even unremarkable.  I was a code monkey who knew his way around Photoshop and could mimic what he saw around him decently enough, but I didn’t have the creative vision or training or, really, inclination to generate my own, unique work.

As we passed out of that epoch of the web, I was more than content to stop trying to design and instead be an enabler of design.  My efforts to teach HTML and CSS had twinned, helical aims: to help anyone who wanted to create a web site share their thoughts, and to help any designer who wanted to create a visual effect share their vision.  I was a technical author, a developer, a sometime observer of design, but never a Designer.  I knew Designers by then, and I knew they possessed a skill and focus I did not.

Which was okay.  After all, I possessed a skill and focus they did not.  Our work was complementary.

What I didn’t realize was that, over all those years, as the knowledge I shared seeped into their bones and became second nature, the same thing was happening in reverse.

For the past few months, I’ve been managing a design project, getting a ton of help from Jason Santa Maria; but I’ve also been the annoying client, making unreasonable demands of everyone involved.  I insisted on changes of direction partway through, and coped with changes of understanding at other points in the process.  I refused to listen to reason at one point, and yielded to reality at another.  For most of it, I compared font faces and sizing, trying to decide which I liked best, telling Jason I wished I could have a little of option A, a little of option B, a dash of option C, struggling to put into words what I could almost see.

Among my friends, I’m vaguely infamous for not being able to tell, at a glance, the difference between Helvetica and Arial.  I’ve seen the detailed analyses of the two, and if I had the exact same run of text in each face, sitting side by side, I could probably do a credible job of figuring out which was which, but give me a standalone block of sans-serif text in Ariatica or Helvetial and my odds of knowing which it is are literally no better than a coin flip.

And yet, there I was, staring at the same layout set in various font faces, feeling the sense of each, obsessed with spacing and intervals and kerning, examining which had the best italics while trying to decide if italics should even be used, if their use conveyed the right message.  I scrutinized the spacing between blocks of text, the alignment of fragments of information, the rhythm of the entire piece, every bit of content.  It wasn’t enough that it be passable, or decent, or even good; it had to be right.  I focused on all the details as well as the overall picture with a will and intensity I had never felt before.

It wasn’t easy.  I massaged my temples as the stress of needing to make exactly the right choice overwhelmed me; I paced around my office, glaring at the alternatives on the monitor every time I passed by; I felt tears of frustration rise as I ran into yet another setback and knew that the final result would not be everything I had originally wanted it to be.  I stood in someone else’s office and rode herd on their archaic software setup, literally telling them where and how many times to click, because that’s what was necessary to get the job done properly.  I wrote and rewrote emails to the various parties in the project, masking my battered spirit as best I could while still being clear about where things stood and where I wanted them to go.

Not, as I say, by myself: Jason was invaluable to getting me off to the right start, keeping me on the right track, and helping me through the setbacks.  I doubt I could have done a tenth as well without him.  But as we progressed, I increasingly felt like I knew what his answers to my questions would be.  My inexperience and fear of error and just plain fear meant I kept checking in with him, but with every iteration, I felt more confident that I already knew the right answers.  In a lot of cases, I made the changes I was already sure he would make, and Jason’s feedback confirmed that I had done right.

Over two decades, I had slowly, unwittingly absorbed everything I needed for this project.  It had seeped into me, creeping out of a thousand Keynote slides and a million words, written and spoken, from my friends and their friends and all the people they looked up to and quoted.

Gradually, I had become a capital-D Designer.  I had a very specific intent to render, and with help and focus, I made the end product as reflective of my intent as possible.  I knew when the design felt wrong, but more importantly, I knew when the design felt right.  And I could see, at first with Jason’s help but increasingly on my own, how to get from one to the other.

This morning, the result was unveiled — literally unveiled, ritually, at the direction of our congregation’s rabbi.  A block of sparkling silver-blue granite carved with a few words of English and Hebrew.  A compact arrangement of text bearing more emotion and meaning than anything I have ever done, horrifying and beautiful, set flush into the earth of Cleveland Heights, where similar markers will one day be set for me and for my wife.

Everything I absorbed over all those years, everything I learned by choice or by chance, and most of all the help I received from everyone who’d ever shared their knowledge and insights with me, all made that possible.  Made me a Designer.

Thank you all.

This article was originally published at The Pastry Box Project on 7 June 2015.


Time and Emotion

Published 8 years, 10 months past

This coming Monday, as has become tradition, a significant fraction of the Twitter user base will send out Star-Wars-themed tweets tagged #maythe4th or #maythefourthbewithyou, because saying the day in that way makes for a handy bit of wordplay.  There will be cosplay pictures, Yoda-esque inversions of sentence structure, and probably (this year) a fair bit of squeeing about the upcoming sequel and its brilliantly fan-service trailer.

Also this coming Monday, as has become tradition for me, I will send out a tweet containing the opening lines of “Ohio” by Crosby, Stills, Nash & Young, tagged #maythe4th, because it was on May 4th, 1970 that National Guardsmen fired a volley into a crowd of Kent State college students, wounding nine and killing four.

Anniversaries are potent psychological markers.  We reflect on historical events, both global and personal, that have particular meaning to us.  We celebrate the days of our birth, of first meeting our loved ones, of all manner of wonderful life-changing moments.  We mourn the days of our losses, of our betrayals, of all manner of terrible life-changing moments.  In every heart, a secret calendar.

There are only so many days in the year; pile enough things together on a calendar, and some of them will coincide.  Some of those alignments will coalesce into rays of remembered joy, warming us from the past.  Others will form spears of relived pain, lodging afresh in our hearts.  A few may do both, comforting and piercing all at once.

The longer we spend online, the more traces of those secret calendars will take public shape.  The dates of my first marriage and divorce are not, to the best of my recollection, recorded anywhere online, but the date of my second (and current) marriage is there, thanks to some early blog posts.  The date of my first professional award is there.  The dates of our children’s placements and adoptions are there.  The dates of my daughter’s illness and death are there.

The more we build online networks, not physical networks but social and emotional networks, the more pieces we leave lying around for algorithms to gather together and present to us with no real thought for what those pieces actually mean, or for how they should or shouldn’t fit together.  A human can glance through a pile of photos and tell which are emotionally or even narratively out of place.  Code cannot.  A human can quickly determine which scraps of text and pixels were happy at the moment of their creation, only to be transformed into talismans of sorrow by later events.  Code cannot.

We’re collectively creating strata of data, adorned with easy bits of metadata like time and date and sometimes place, but lacking all the truly important metadata like feeling and meaning.  As we share with each other, we share with the future.  We share with the companies that help us share with each other, because it’s easy to store it all.  Content in the old network was ephemeral, and in the older networks was tangible but private.  In the new networks, everything we create is easy to retrieve — if not for us, as users of the network, then at least for the code that runs on the same machines which accept all that we share.

And so, more and more with every passing day, code is written to reach back into everything we’ve created, assembling it along easily-identified axes like Likes or Faves or geographic coordinates or the day of the year, in order to show it to us again.  Sometimes it’s code we invite into our lives, but not always.  Sometimes we find the code that drives the networks we use resurrecting our past without warning.

This will not always be welcome.

There are things we can do to make our remorselessly remembering routines more humane, and most of those things are rooted in experience design.  We can design compassionate consent requests ahead of introducing new functionality, and easy ways to mark which dates and memories and bits of data should be avoided, and even design thoughtful expressions of remorse and apology.  We can and should add this very human layer of thoughtfulness to cushion us from literally unthinking code that yields results which may harm as easily as they may heal.

It won’t be easy, and we’ll make mistakes no matter how hard we try.  Our very attempts to be thoughtful may backfire and make things worse, but we’ll learn from those mistakes and do better the next time.

Nothing could be more human than that.

This article was originally published at The Pastry Box Project on 2 May 2015.


Obsessive Musings

Published 8 years, 11 months past

I’m typing this, sandy-eyed and a little light-headed, as the Eastern Seaboard slowly scrolls beneath me.  It’s the second of two flights today; the first took off from Seattle at not quite 3am, at least considered from the Eastern (U.S.) time zone.  To those in Seattle, of course, I left shortly before midnight yesterday.

I’m headed for Boston by way of Dulles, there to land, roll off the plane, grab a cab, and get to the conference hotel on the harbor.  This afternoon, I’ll deliver a 25-minute talk in hopes of advancing the state of medical and health care design.  It’s a much cut-down version of the talk I gave not 18 hours ago (as I type this) at An Event Apart Seattle.  Basically, I just took my AEA talk and cut out all the parts that aren’t about health-care-centered design, then compressed a bit the parts that were.  The goal is to leave time for a question or two from the audience.

I left home this past Friday for the Pacific Northwest, and won’t get home until tomorrow — well, today, if you’re reading this on its publication date.  But then, if you are doing that, then everything I’m saying happened yesterday.

I may be a little sleep deprived.

Six days is a long time to be away from my family, at least by my standards, and it’s an especially long time to be away after no significant work travel for almost two years.  The punishing schedule makes it seem even longer to me.

I do it because I’m obsessed.

Time was, I was obsessed about HTML and CSS and the myriad possibilities of the web.  I still have all that, but it’s now almost an echo of what it was.  Apparently, I only have room in my life for one professional obsession.

Now I’m obsessed over the idea of designing with compassion, designing with empathy, designing with care.  It’s hard to articulate exactly what I mean in a compact manner.  The idea doesn’t have an accurate, obvious label yet, the way responsive web design does.  I’m trying to figure it out with Sara Wachter-Boettcher.  We’ll get there.

Writers talk of a muse that drives them, that tasks them.  They become obsessed with writing.  I assume that a muse is basically just an anthropomorphized obsession.  Maybe so.  I’ve never been that kind of writer, but now I have that kind of obsession.  It drives me to present two versions of one talk in successive days on opposite coasts.  It drives me to branch out in unexpected ways, pushing into areas of web design that I had never thought myself qualified to comment on, pushing beyond web design into the wider field of design in all its forms.  It will soon drive me to write in a way I never have before, for audiences I never expected to address.

I would have given a great deal to have never had this obsession, but I do.  Now I hope I can rise to exceed the demands it places on me.

If this all sounds a little grim, well, part of it is.  After all, it springs from a grim place and time.  But then, a big part of that grim tone is probably due to my physical weariness — the flight from Seattle to Dulles was only long enough for me to catch three hours of sleep.  Ordinarily, I’d be micro-napping on this flight to Boston, but instead I’m typing, pushed by my obsession to articulate it so that I can look at the words I’ve written and take them as a commitment, layering another thin stratum of determination on top of the obsession, adorning my muse with a plate of conceptual armor.

There might be more to this metaphor, but if so, the lack of sleep is clouding my ability to see it.

The plane has begun its initial descent into Boston.

Time to see where my obsession pushes me today.

This article was originally published at The Pastry Box Project on 2 April 2015.


Taking Steps

Published 9 years, 3 weeks past

Not too long ago, I got Step Nined on Facebook.

If that didn’t parse as regular English for you, Step Nine is part of the twelve-step program offered by Alcoholics Anonymous. It states, with edits for out-of-context clarity:

“[Make] direct amends to [people you have harmed] wherever possible, except when to do so would injure them or others.”

And so someone I knew back in the town where I grew up, a classmate all throughout my pre-college education who I’ll call John, sent me a private message on Facebook apologizing for how he’d treated me, stating that he’d had no reason other than just having been a mean kid, and hoping that things were going well for me and my family.

I’ve pondered this message quite a bit in the interim. The message brought me neither upset nor relief, though I can well imagine that many people in such a situation would feel one or both. I bore no mental or physical scars with his signature upon them. There was no need of closure, or of re-opening, or really of anything, at least from my point of view. He and his actions toward me, positive or negative, are one thin thread in the complex skein that was my childhood, lost in the overall pattern.

In truth, John’s message aroused more pity in me than anything else. I thought as I read it, What must he have endured as a child, that hurting other people seemed normal to him?  And in that thought, I felt an echo from the past, as though the question had come to me before. Perhaps my parents made the observation, as I struggled through growing up, and I was finally able to hear it now. I’m not sure. It doesn’t really matter. If his message is anything to go by, whatever John did has been far more damaging to him than it ever might have been to me.

Still, I keep coming back to John’s message and pondering it further. What I’ve thought about, far more than its contents or the history it references, has been the simple fact of how it happened, and what that means.

Had John wanted to offer amends in, say, the late 1990s, he would have had to actively seek me out. It would have taken the effort of calling my parents to ask for contact information, or other people he thought might have it, and then making that call to me. The social distance would have been a barrier to contact, one whose surmounting signified the importance of the act to him. And then, when he did make that call, he would have talked to me, able to gauge my reaction. There would have been a feedback loop to tell him whether or not his amends were injurious in some way.

And yes, of course, John could have done exactly that today. He could have kept his process entirely off Facebook and gone through those efforts, as an act of personal penance or just as a useful social signifier. Or, perhaps, he could have contacted me on Facebook to ask for my phone number, with a brief statement as to why he was asking for it, and then let my decision to allow the contact or not be a measure of whether it would in fact be injurious.

But he didn’t. Because the internet has disintermediated social effort.

What I wonder about, as I ponder this small signal, is the depth of his remorse. How much does John really mean it, and how much is he going through the motions, trying to get through Step Nine as quickly as possible so that he can reach Step Twelve sooner? Is he working through his personal pain, or is he grinding the leveling process? It’s impossible for me to say. I know it’s a lot easier to send a bunch of “sorry” messages to your contacts than it is to talk to each person you feel you’ve wronged, one on one, one by one, and go through that painful process over and over and over again.

I wonder if that simple ease of contact has robbed him of a critical component of his healing process.

Or, if you want to be more accurate, I wonder if that simple ease of contact lured him into a course of action that was harmful to his healing process.

The things we build are almost always meant to make things faster, more efficient, easier. Perhaps, sometimes, they should be harder.

This genie will not go back into the bottle. The internet isn’t going away and Facebook still has a long way to go before its fall. Even then, something will have replaced it. There’s no reason to think these sorts of connections will become more difficult to make, technologically speaking.

I wonder if they will become more difficult, socially speaking — if an act like that will become frowned upon, as we might frown upon a form letter condolence note. I wonder what sort of protocols and expectations, what social mores, will emerge over time in response to the disruptions our work has caused and will cause, and how they will shape personal interactions at all levels.

I wonder how much effort we should be putting into influencing the evolution of those emergent social constructs, whether through our work or our personal interactions, and how much of that effort would be ultimately fruitless.

I wonder how intentional people are about what they do, online as well as off; and how intentional they should be.

I wonder what I should say to John.

This article was originally published at The Pastry Box Project on 2 March 2015.


Friday Figure

Published 9 years, 1 month past

Just for fun, and maybe for a little bit of edification, I present to you one of the figures from the chapter on color, backgrounds, and gradients I’ve just finished writing for CSS: The Definitive Guide, 4th Edition.

This figure is (at the moment) captioned “Very, very tall ellipses”; it’s a diagram of what happens if you create a radial gradient with no horizontal sizing.  (Whether you also have vertical sizing is actually irrelevant.)  The ellipses all get so incredibly tall that you only see the sides at their most vertical, which results in the appearance of a mirrored horizontal linear gradient.  This is of course explained in more detail in the chapter, and builds on a whole lot of previous text.

I had a much simpler version of this figure before, and shared it with Sara Soueidan, who had some very smart feedback that helped me get to what you see above.  The figure was finished not too long before i posted it; once it was done, I realized really liked the look, so decided on the spur of the moment to post it.  Thus the late-Friday timestamp on the post.

While the figure is a PNG, it’s actually a screenshot of an HTML+CSS file displayed in a browser — Safari, in this particular case, though most are done in Firefox.  All of the figures in the book will be created using HTML+CSS whenever possible.  Doing so lets me make sure I understand what I’m illustrating, and also allows me to change the look and arrangement of figures without too much difficulty.

So that’s fun with edge cases for this Friday.  If people like it, or more likely I just feel like doing it, I’ll post more in the future.


Run, Salmon, Run

Published 9 years, 1 month past

I was recently asked on Twitter about the status of the fourth edition of CSS: The Definitive Guide.  A fair question, given how long the project has lain dormant!  I have two things to announce on that front.

The first is that I’m really excited to say that Estelle Weyl has joined me as co-author for the fourth edition.  We’re working in parallel, tackling individual chapters and doing technical review of each other as we work.  Sharing the load, especially with someone as sharp and knowledgable as Estelle, will help get chapters out faster, and the overall book done sooner.

The second is that writing is once again underway, with four chapters in process.  I’ve got the transforms chapter done, and the backgrounds and gradients (and maybe foreground colors too) chapter almost done.  Estelle is nearing the end of transitions and animations, with flexbox up next.  What comes after that for each of us is a little bit up in the air, though I’ll probably tackle basic visual formatting next.  Unless I get distracted by something more interesting, of course — truth be told, I’ve been eyeing grid layout with some covetousness in my heart.

So, the book is once again underway, and actually has been for a little while now.  I can’t say with certainty when we’ll be done and ready to compile everything into the Doorstop Edition, but we’re pushing for this year or early next.

As an offshoot of this renewed push, I’ve been expanding and revising my CSS test files so that I can check my understanding of the specification, as well as test the fine details of browser support.  Over the holidays I decided, more or less on a whim, to commit the whole kit ‘n’ kaboodle to Github.  There’s no license and no readme, mostly because I didn’t think to establish either when I set up the repository.  Sorry, I guess?  In any case, I regard the CSS in the tests to be public domain, but the actual content (whether inline or replaced) of the HTML files may or may not be, so a single license would have been hard to assert anyway.  I mostly put the files up there as a form of open backup, and also to smooth out the process of managing updates to the tests between my local machine and meyerweb.  Feel free to make use of the tests for your personal education, though!


Browse the Archive

Earlier Entries

Later Entries