This is a card in Dave's Virtual Box of Cards.

Of CSS and Palm Oil

Page created: 2025-04-25
Updated: 2025-06-23

Update: Just a couple months later, I had a surprisingly hard time finding the original "CSS is (not) a programming language" debate I’m referencing here. So, to ensure this weird page makes even the slightest bit of sense, I want to quote a few relevant statements. My only problem is that I don’t want to call undue attention to the original authors, some of whom have removed their writings!

So I’ve chosen to paraphrase what I believe to be the salient points:

"CSS doesn’t work in the way that programmers coming from conventional languages expect. So they argue that it is not even a programming language."

"Without control flow, CSS is not a 'programming language', though it is certainly a language that tells computers to do something."

"Using CSS correctly is a difficult skill. It deserves respect. Programmers who want to think of CSS as beneath them have probably had a hard time with it and weren’t good at it."

"The CSS-in-JS phenomena in certain frameworks are the result of developers trying to make CSS feel more like familiar programming."

"CSS has come to be seen as just making things look pretty. It’s seen as feminine. It’s not 'real' programming for 'real men'. There’s an underlying gender bias at play."

"We need a way to make people understand that CSS, like anything design and UI-related, is complex and difficult. It’s not the same as conventional programming, but it’s just as valuable."

(Note: If you authored a popular article on this topic and you think one of the above paraphrases is quoting you - it probably is! Let me know if you’d like attribution and a link.)


Yemisi Aribisala’s piece for Flaming Hydra titled Of Men and Palm Oil is fascinating from end to end. It’s a great piece of writing. (Like, wow, I wish I could write like that.) It’s about the trouble with trying to discuss complex issues on short-form platforms like radio interviews and social media:

One’s intentions in joining in social media discussion might be innocent enough. Has anyone ever joined Facebook because they wanted to become an intractable obnoxious thug and arsonist? Yet inevitably the madness creeps up on you and soon enough you catch yourself saying, Africa is this…Men are that…Cancel this…Cancel that…burn her…palm oil is the blood that flows through the canals of hell. The need to fit in wearing the clothing of fashionable generalisations is primal and devious.

https://flaminghydra.com/of-men-and-palm-oil/

The above link is unapologetically paywalled. Flaming Hydra is a cool concept and a steal for the price. I get no kick-backs for promoting them. Just a happy subscriber.

This got me thinking.

I’d seen a statement a while back in which someone had written, "CSS is a programming language". Now, that right there is some powerful nerd-sniping bait for a programming language nerd.

After I saw it, it kept coming to me at the weirdest times. In the shower. At the grocery store. I would think, "CSS is a programming language? Is it? What is a language? What is programming?"

Finally, having formulated my opinion, I posted it to Mastodon.

(I’ll not exacerbate my mistake by repeating the post here, even if I could remember it with sufficient accuracy. I guess you’ll have to imagine it.)

I think my post may have surprised some people, and not in a good way. People I respect and appreciate.

As the comments started to roll in, I felt myself digging in, trying with increasing exasperation to explain myself. After a few brief exchanges, wiser heads got through to me. I was causing harm and possibly a rift. This is not what I wanted! I quickly deleted my message (and with it, the entire thread).

I don’t think I’ve ever done that before, deleting a message on social media. It felt bad, like I’d been caught trying to hide something horrible in the trunk of my car.

I found myself thinking about it at the weirdest times; in the shower, at the grocery store. I would think, "What happened? Why was this opinion about an esoteric semantic distinction so full of heat for so many people? Why did I feel so bad after posting my "take" and even worse after deleting it?"

Some time later, I posted:

So a while back, I thought it was a good idea to toot about the, "Is css a programming language?" debate. 🙃

I quickly deleted the thread when I realized I was now, in order of importance:
1) Hurting the exact kind of computer users I least want to hurt
2) Arguing for a position I didn't actually hold!
3) Looking like a complete ass.

I never stopped thinking about 1 and 2. Especially 1.

This soothed my worries a bit. But the question remained: What exactly had happened and how did it go so wrong?

As you may already have known, or guessed because you’re more perceptive than I am, I’d blundered right into a larger ongoing debate in the tech community. It feels almost impossibly naïve to write this in hindsight, but it’s true: I had taken the implied question at face value.

As you may already have known, or guessed, this CSS debate is/was really a thinly-veiled discussion about whether front-end development (seen by some as more "feminine") is as legitimate as back-end development (evidently more "masculine").

Are we five years old? Is this a school playground?

As someone with both feet planted firmly in both camps going way back to the early days when "web developer" meant "full stack" before increasing specialization necessitated the term, I feel qualified to say that front-end and back-end development are equally difficult and legitimate areas of practice.

The complexity of front-end web browser development is enormous.

The complexity of high-performance web server development is enormous.

(And by the way, nobody should be happy to win the complexity battle. If I had my way, complexity would be a mark of shame, not pride. But I digress.)

Anyone who thinks CSS is easy to master is out of their minds.

I’ve followed the evolution of CSS over the decades. It is incredibly slippery and difficult to wrangle in the real world.

I’ve seen people say that CSS is "easy" or "simple" and I have absolutely no idea what they are talking about. I can’t imagine they’ve used it very much or very deeply.

CSS doesn’t need to be "a programming language" to mark it as a challenging topic. Are mathematics or poetry programming languages? Does a "yes" or "no" answer determine whether or not they are legitimate subjects of deep study? The question as posed is a category error.

Aribisala’s frustration is that she cannot really discuss the hot-button palm oil issue without first defining what "palm oil" means. To an outsider this may sound absurd, but her article has enlightened me. It is not absurd at all.

There is no global appetite for the palm oil that Nigerians cook with; it isn’t the stuff that is spurring one of the worst environmental disasters of our time.

If you cannot discuss Nigerian cooking with palm oil without first navigating semantic distinctions, then you essentially cannot discuss the subject in short social media form.

Whether or not CSS is a programming language is, on the surface, a semantic question. But when encountered online, it’s really a veiled social political discussion. The topic is essentially forbidden.

And that kind of sucks, because it’s actually a really interesting question.

Yet this has opened my eyes to a much more important realization: Arguments about semantics nearly always fail to be useful or meaningful.

This is as obvious in hindsight as the original blunder, and it’s even worse than I originally realized.

The term "programming language" is defined in encyclopedias and dictionaries. But using these entries for a semantic argument is like using a child’s dictionary definition of the word "butterfly" when what we really need is a dichotomous key (wikipedia.org) to determine if the creature on the window screen is a butterfly or a moth.

Arguing the semantics of a term that has never been given a precise definition is…​unwise.

Staking out a position on the meaning of "programming language" is an emotional act. There’s a personal investment involved. It will never yield a meaningful exchange of ideas. A debate will always fail because it started on a faulty premise on both sides: My personal experience is more important than yours.

I can only conclude that the missing element is empathy.

In Aribisala’s Of Men and Palm Oil she compares the challenge of un-nuanced palm oil discussions online with the lack of nuance with, say, the #menaretrash hashtag.

This is, sadly, particularly apt to the discussion of CSS because, again, one of the underlying premises of the whole debate centers around the perception of the "feminine" nature of design work.

It reminds me of the separation of writing software from "programmers" (predominantly men) and "coders" (predominantly women) that we hear about from the early days of computing.

There’s an anecdote I often think about:

Donald Gillies, one of von Neumann’s students at Princeton, […​] recalled in the mid-1970’s that the graduates students were being "used" to hand assemble programs into binary for their early machine (probably the IAS machine). He took time out to build an assembler, but when von Neumann found out about he was very angry, saying (paraphrased), "It is a waste of a valuable scientific computing instrument to use it to do clerical work."

https://ei.cs.vt.edu/~history/VonNeumann.html

It will perhaps not surprise anyone who has spent much time programming computers to learn that the historic programmer/coder split was seldom as cut-and-dried in reality as it has been made to sound in the literature.

The article The Myth of the Coder by Maarten Bullynck and Liesbeth De Mol is fascinating.

The prescribed split:

Thus the activities of programming and coding could be distinguished easily. The former was planning on paper using flowcharting or some pseudocode, whereas the latter was the translation into coded instructions on some medium to control the machine.

Verus the reality:

But once the UNIVAC 1 computer was ready (1951), the distinction between coder and programmer was brushed off the table. …​McPherson replied: “We do not distinguish between programmers and coders."

This is consistent with what we found at other places in the 1950s, both at universities and in industry, where “programmers” did both the planning and the coding part of programming.

Why did the myth persist, then? Ironically, the answer may be one of the most celebrated women programmers of all time, Grace Hopper:

…​in 1955, there are 28 occurrences of “coder” in just three articles, which accounts for 60% of all the occurrences between 1954 and 1960. All three of those articles were authored by Grace Murray Hopper and her team.

And yet, Hopper was making the the distiction to promote the idea of "automatic coding" or "automatic programming", or what we recognize today as simply programming using languages rather than hand-writing machine code. The point being that the tasks of programming and coding would combine with the aid of the computer itself.

https://cacm.acm.org/opinion/the-myth-of-the-coder/

These words, "coding" or "programming", depending on the historical or situational context can take on nearly opposite meanings. Go back far enough and "computer" was a person rather than a machine. The vocabulary of our field is a terrible place to start a debate.

To butcher the old quote about pigs: Don’t argue with semanticians online. You’ll both lose your minds and the semantician likes it.

I still care about the meanings of terms, but I’ll tread more carefully next time a debate about definitions crosses my path.

Listening intently to words is not the same as listening empathetically.

Sometimes the words matter, but more often it’s the intent or the feeling.

Without understanding that, even the most well-intentioned Mastodon toot may be doomed from the start.

Sometimes, the mere fact that you chose to weigh in on a subject is the information other people will take from your opinion, not the opinion itself.

I yield the last word to Yemisi Aribisala:

Nevertheless I must backtrack slightly in my opinion and say that the hashtag achieves something, something unexplored, something extra: it points back, exposing the personality and the intellect of those who believe such things and propagate them unquestioningly.