Split

When I talk about evaluating technology for front-end development, I like to draw a distinction between two categories of technology.

On the one hand, you’ve got the raw materials of the web: HTML, CSS, and JavaScript. This is what users will ultimately interact with.

On the other hand, you’ve got all the tools and technologies that help you produce the HTML, CSS, and JavaScript: pre-processors, post-processors, transpilers, bundlers, and other build tools.

Personally, I’m much more interested and excited by the materials than I am by the tools. But I think it’s right and proper that other developers are excited by the tools. A good balance of both is probably the healthiest mix.

I’m never sure what to call these two categories. Maybe the materials are the “external” technologies, because they’re what users will interact with. Whereas all the other technologies—that mosty live on a developer’s machine—are the “internal” technologies.

Another nice phrase is something I heard during Chris’s talk at An Event Apart in Seattle, when he quoted Brad, who talked about the front of the front end and the back of the front end.

I’m definitely more of a front-of-the-front-end kind of developer. I have opinions on the quality of the materials that get served up to users; the output should be accessible and performant. But I don’t particularly care about the tools that produced those materials on the back of the front end. Use whatever works for you (or whatever works for your team).

As a user-centred developer, my priority is doing what’s best for end users. That’s not to say I don’t value developer convenience. I do. But I prioritise user needs over developer needs. And in any case, those two needs don’t even come into conflict most of the time. Like I said, from a user’s point of view, it’s irrelevant what text editor or version control system you use.

Now, you could make the argument that anything that is good for developer convenience is automatically good for user experience because faster, more efficient development should result in better output. While that’s true in theory, I highly recommend Alex’s post, The “Developer Experience” Bait-and-Switch.

Where it gets interesting is when a technology that’s designed for developer convenience is made out of the very materials being delivered to users. For example, a CSS framework like Bootstrap is made of CSS. That’s different to a tool like Sass which outputs CSS. Whether or not a developer chooses to use Sass is irrelevant to the user—the final output will be CSS either way. But if a developer chooses to use a CSS framework, that decision has a direct impact on the user experience. The user must download the framework in order for the developer to get the benefit.

So whereas Sass sits at the back of the front end—where I don’t care what you use—Bootstrap sits at the front of the front end. For tools like that, I don’t think saying “use whatever works for you” is good enough. It’s got to be weighed against the cost to the user.

Historically, it’s been a similar story with JavaScript libraries. They’re written in JavaScript, and so they’re going to be executed in the browser. If a developer wanted to use jQuery to make their life easier, the user paid the price in downloading the jQuery library.

But I’ve noticed a welcome change with some of the bigger JavaScript frameworks. Whereas the initial messaging around frameworks like React touted the benefits of state management and the virtual DOM, I feel like that’s not as prevalent now. You’re much more likely to hear people—quite rightly—talk about the benefits of modularity and componentisation. If you combine that with the rise of Node—which means that JavaScript is no longer confined to the browser—then these frameworks can move from the front of the front end to the back of the front end.

We’ve certainly seen that at Clearleft. We’ve worked on multiple React projects, but in every case, the output was server-rendered. Developers get the benefit of working with a tool that helps them. Users don’t pay the price.

For me, this question of whether a framework will be used on the client side or the server side is crucial.

Let me tell you about a Clearleft project that sticks in my mind. We were working with a big international client on a product that was going to be rolled out to students and teachers in developing countries. This was right up my alley! We did plenty of research into network conditions and typical device usage. That then informed a tight performance budget. Every design decision—from web fonts to images—was informed by that performance budget. We were producing lean, mean markup, CSS, and JavaScript. But we weren’t the ones implementing the final site. That was being done by the client’s offshore software team, and they insisted on using React. “That’s okay”, I thought. “React can be used server-side so we can still output just what’s needed, right?” Alas, no. These developers did everything client side. When the final site launched, the log-in screen alone required megabytes of JavaScript just to render a form. It was, in my opinion, entirely unfit for purpose. It still pains me when I think about it.

That was a few years ago. I think that these days it has become a lot easier to make the decision to use a framework on the back of the front end. Like I said, that’s certainly been the case on recent Clearleft projects that involved React or Vue.

It surprises me, then, when I see the question of server rendering or client rendering treated almost like an implementation detail. It might be an implementation detail from a developer’s perspective, but it’s a key decision for the user experience. The performance cost of putting your entire tech stack into the browser can be enormous.

Alex Sanders from the development team at The Guardian published a post recently called Revisiting the rendering tier . In it, he describes how they’re moving to React. Now, if this were a move to client-rendered React, that would make a big impact on the user experience. The thing is, I couldn’t tell from the article whether React was going to be used in the browser or on the server. The article talks about “rendering”—which is something that browsers do—and “the DOM”—which is something that only exists in browsers.

So I asked. It turns out that this plan is very much about generating HTML and CSS on the server before sending it to the browser. Excellent!

With that question answered, I’m cool with whatever they choose to use. In this case, they’re choosing to use CSS-in-JS (although, to be pedantic, there’s no C anymore so technically it’s SS-in-JS). As long as the “JS” part is JavaScript on a server, then it makes no difference to the end user, and therefore no difference to me. Not my circus, not my monkeys. For users, the end result is the same whether styling is applied via a selector in an external stylesheet or, for example, via an inline style declaration (and in some situations, a server-rendered CSS-in-JS solution might be better for performance). And so, as a user-centred developer, this is something that I don’t need to care about.

Except…

I have misgivings. But just to be clear, these misgivings have nothing to do with users. My misgivings are entirely to do with another group of people: the people who make websites.

There’s a second-order effect. By making React—or even JavaScript in general—a requirement for styling something on a web page, the barrier to entry is raised.

At least, I think that the barrier to entry is raised. I completely acknowledge that this is a subjective judgement. In fact, the reason why a team might decide to make JavaScript a requirement for participation might well be because they believe it makes it easier for people to participate. Let me explain…

It wasn’t that long ago that devs coming from a Computer Science background were deriding CSS for its simplicity, complaining that “it’s broken” and turning their noses up at it. That rhetoric, thankfully, is waning. Nowadays they’re far more likely to acknowledge that CSS might be simple, but it isn’t easy. Concepts like the cascade and specificity are real head-scratchers, and any prior knowledge from imperative programming languages won’t help you in this declarative world—all your hard-won experience and know-how isn’t fungible. Instead, it seems as though all this cascading and specificity is butchering the modularity of your nicely isolated components.

It’s no surprise that programmers with this kind of background would treat CSS as damage and find ways to route around it. The many flavours of CSS-in-JS are testament to this. From a programmer’s point of view, this solution has made things easier. Best of all, as long as it’s being done on the server, there’s no penalty for end users. But now the price is paid in the diversity of your team. In order to participate, a Computer Science programming mindset is now pretty much a requirement. For someone coming from a more declarative background—with really good HTML and CSS skills—everything suddenly seems needlessly complex. And as Tantek observed:

Complexity reinforces privilege.

The result is a form of gatekeeping. I don’t think it’s intentional. I don’t think it’s malicious. It’s being done with the best of intentions, in pursuit of efficiency and productivity. But these code decisions are reflected in hiring practices that exclude people with different but equally valuable skills and perspectives.

Rachel describes HTML, CSS and our vanishing industry entry points:

If we make it so that you have to understand programming to even start, then we take something open and enabling, and place it back in the hands of those who are already privileged.

I think there’s a comparison here with toxic masculinity. Toxic masculinity is obviously terrible for women, but it’s also really shitty for men in the way it stigmatises any male behaviour that doesn’t fit its worldview. Likewise, if the only people your team is interested in hiring are traditional programmers, then those programmers are going to resent having to spend their time dealing with semantic markup, accessibility, styling, and other disciplines that they never trained in. Heydon correctly identifies this as reluctant gatekeeping:

By assuming the role of the Full Stack Developer (which is, in practice, a computer scientist who also writes HTML and CSS), one takes responsibility for all the code, in spite of its radical variance in syntax and purpose, and becomes the gatekeeper of at least some kinds of code one simply doesn’t care about writing well.

This hurts everyone. It’s bad for your team. It’s even worse for the wider development community.

Last year, I was asked “Is there a fear or professional challenge that keeps you up at night?” I responded:

My greatest fear for the web is that it becomes the domain of an elite priesthood of developers. I firmly believe that, as Tim Berners-Lee put it, “this is for everyone.” And I don’t just mean it’s for everyone to use—I believe it’s for everyone to make as well. That’s why I get very worried by anything that raises the barrier to entry to web design and web development.

I’ve described a number of dichotomies here:

  • Materials vs. tools,
  • Front of the front end vs. back of the front end,
  • User experience vs. developer experience,
  • Client-side rendering vs. server-side rendering,
  • Declarative languages vs. imperative languages.

But the split that worries the most is this:

  • The people who make the web vs. the people who are excluded from making the web.

Have you published a response to this? :

Responses

Hidde

‘For me, this question of whether a framework will be used on the client side or the server side is crucial.’ – @adactio on tech choices for which users pay the price vs those for which they don’t adactio.com/journal/15050

# Posted by Hidde on Wednesday, April 10th, 2019 at 3:22pm

Max Böck

This hits close to home for me. My pain with CSS-in-JS is not with JavaScript, it’s with client side rendering. As long as DX doesn’t come at the user’s expense: use whatever you like! 👍 adactio.com/journal/15050

# Posted by Max Böck on Wednesday, April 10th, 2019 at 4:27pm

Nick Dunn

Oh @adactio has nailed it again. On rendering, styling, the developer experience, performance, caring about your users and keeping the barrier-to-entry for building the web lower than tech bros.adactio.com/journal/15050

# Posted by Nick Dunn on Wednesday, April 10th, 2019 at 5:20pm

Chris Taylor

Jeremy, once again, explains what’s in my head better than I ever could.

Mark

Still thinking about this,adactio.com/journal/15050 Development tooling, right to repair, etc… they all come from good places but drawing the line between progress and dangerous complexity is hard.

# Posted by Mark on Thursday, April 11th, 2019 at 6:10pm

Nick F

Here @adactio eloquently expresses a lot of concerns I share about the current state of front-end development - in particular, trade-offs around developer vs user experience, and complexity as (often unintentional) gatekeepingadactio.com/journal/15050

# Posted by Nick F on Thursday, April 11th, 2019 at 8:42pm

Justin McDowell

Materials vs. tools. User experience vs. developer experience. Client-side rendering vs. server-side rendering. Front of the front end vs. back of the front end. Just a few of the many dichotomies on the web, and they themselves are an interconnected web: adactio.com/journal/15050

CSS-Tricks

On the one hand, you’ve got the raw materials of the web: HTML, CSS, and JavaScript. This is what users will ultimately interact with. On the other hand, you’ve got all the tools and technologies that help you produce the HTML, CSS, and JavaScript.adactio.com/journal/15050

# Posted by CSS-Tricks on Thursday, April 11th, 2019 at 11:17pm

giglobus j

css: On the one hand, you’ve got the raw materials of the web: HTML, CSS, and JavaScript. This is what users will ultimately interact with. On the other hand, you’ve got all the tools and technologies that help you produce the HTML, CSS, and JavaScript.adactio.com/journal/15050

# Posted by giglobus j on Thursday, April 11th, 2019 at 11:21pm

Craig Buckler

Essential reading for web developers by @adactio: adactio.com/journal/15050 “The performance cost of putting your tech stack into the browser can be enormous.” “By making React [or JavaScript] a requirement for styling something on a web page, the barrier to entry is raised.”

Tom Tinkerson

go read this thoughtful piece by @adactio I consider myself a frontend-designer, since I’m neither full stack (according to the CS view), nor front-of-frontend, but also not back-of-frontend only. but labels aside, I do care about the UX over DEVX.adactio.com/journal/15050

Dion Almaer

“Personally, I’m much more interested and excited by the materials than I am by the tools. But I think it’s right and proper that other developers are excited by the tools. A good balance of both is probably the healthiest mix.” Welcome, the tent is large adactio.com/journal/15050

mkirkpat

Great article summarising state of things, associated concerns, across building people-centred services from a developer pov…good to learn as someone who is not a dev, but is interested in code, leaness, inclusivity, openness in everything we build adactio.com/journal/15050

# Posted by mkirkpat on Friday, April 12th, 2019 at 9:37pm

Ignacio Villanueva

Split: “When I talk about evaluating technology for front-end development, I like to draw a distinction between two categories of technology. HTML, CSS, and JavaScript. This is what users will ultimately interact with.”adactio.com/journal/15050

Martin Thiemann

“In order to participate, a Computer Science programming mindset is now pretty much a requirement. For someone coming from a more declarative background—with really good HTML and CSS skills—everything suddenly seems needlessly complex.” adactio.com/journal/15050

James Young

Adactio: Journal—Split: “If we make it so that you have to understand programming to even start, then we take something open and enabling, and place it back in the hands of those who are already privileged.” adactio.com/journal/15050 by @adactio

Marco Hengstenberg

Herr @adactio Keith, I love your article!adactio.com/journal/15050 This is such an important article and most important to me is the final sentence: “But the split that worries the most is this: • The people who make the web vs. the people who are excluded from making the web.”

John Ossoway

Really interesting article from @adactio, grappling with interesting and important concepts around making the web. I’ve been trying to describe “front of the front end vs. back of the front end” for years, and finally here is the phrase I was looking for!adactio.com/journal/15050

Peter Chapman

Experiencing some real pain learning (unsuccessfully so far) styling in a JS environ (LitHTML), I appreciate this: adactio.com/journal/15050 Like my young daughter struggling over a new flip routine, I’m currently stumped.

Trinity Takei

How to Think Like a Front-End Developer by Chris Coyier | buff.ly/2UvoB4J “You could imagine two people called front-end developers meeting, and having nothing in common to talk about” — @adactio@chriscoyier calls this a “front-end identity crisis”.

Zach Leatherman

“Maybe the materials are the ‘external’ technologies, because they’re what users will interact with. Whereas all the other technologies—that mostly live on a developer’s machine—are the ‘internal’ technologies.”—@adactio writes:adactio.com/journal/15050

Adam Tomat

Absolutely love this article by @adactio “As a user-centred developer, my priority is doing what’s best for end users. That’s not to say I don’t value developer convenience. I do. But I prioritise user needs over developer needs.” Go read it 👇adactio.com/journal/15050

azu

Complexity reinforces privilege 複雑さは特権を強化する。 ReactやSSRなどフレームワークやツールによって二分されていく傾向が続いたばあいの問題 “Adactio: Journal—Sp…” adactio.com/journal/15050

# Posted by azu on Monday, May 6th, 2019 at 2:39pm

Matthew Cox

Interesting thoughts by @adactio on keeping the maker/hacker presence of the web instead of limiting ability-to-create to those with a CS degree. I totally agree, we should work to make it so that anyone with a text editor can create for the web. adactio.com/journal/15050

Tobias Sawitzki

Top article by @adactio: “It surprises me when I see the question of server rendering or client rendering treated almost like an implementation detail. It might be an implementation detail from a developer’s perspective, but it’s a key decision for the UX” adactio.com/journal/15050

Megan

A thoughtful and crucially important article from @adactio adactio.com/journal/15050 I have 11 years of agency experience building websites… and the last time I took a look at jobs, I was not qualified for a single one of them by the overblown, JS-intensive requirements listed.

# Posted by Megan on Friday, May 24th, 2019 at 1:37pm

Nelson Rocha

Great read about how industry shapes front end development and the role of the users in all this. I think the article misses the “maintenance” vector of analysis, but still, I agree with most of it.adactio.com/journal/15050

Chris Aldrich

Lurking

Yesterday I was catching up on chat logs and ran across a stub for lurking on the IndieWeb wiki. I cleaned up the formatting a bit and added some additional material. Later Ton Zijlstra dropped a link to his excellent article from 2004 on the topic: Lurking and Social Networks (though honestly, I first came by the link courtesy of our good friend Jeremy Cherfas who added it to the wiki page).

Lurking is the quiet watching/listening that what many people of the web do in chat rooms in order to begin gauging culture, learning jargon or lingo, and other community norms or unspoken principles before diving in to interact on a more direct level with other participants.

While the word lurking can have a very negative connotation, online it often has a much more positive one, especially in regard to the health and civility of the commons. Rather than rehash what Ton has done an excellent job of doing, I won’t go into the heavy details and history of online lurking, but instead, let’s take a look at where it isn’t in today’s social media landscape.

Twitter

Since 2004, Twitter and a slew of other social media has popped up on the scene and changed many of our prior behaviors concerning lurking. In particular, Twitter’s interface has made it far easier to either like/favorite a post or retweet it.

In comparison the the preceding era of the blogosphere represented by Tons’ post, Twitter has allowed people to send simple notifications back and forth about each others’ posts indicating a lower bar of interaction than writing a thoughtful and measured comment. Now instead of not knowing about dozens, hundreds, or thousands of lurkers, a (micro)blogger would more quickly know who many more of their readers were because they were liking or resharing their content. Naturally there are still many more potential lurkers who don’t interact with one’s posts this way, but these interactions in some way are like adding fuel to the fire and prompt the writer to continue posting because they’re getting some feedback that indicates they’ve got an audience. Twitter has dramatically lowered the bar for lurkers and made it more socially acceptable for them to make themselves known.

Twitter image from the collection Social Decay by Andrei Lacatsu

Of course, not all is rosy and happy in Twitterland as a result of this lowering the social bar. Because it’s so easy to follow almost anyone and interact with them, naturally everyone does. This means that while before one may have lurked a blog for weeks or months before posting a response of any sort, people are now regularly replying to complete strangers without an resistance whatsoever. While this can be valuable and helpful in many instances, oftentimes it comes off as rudely as if one butted into the private conversation of strangers at a public gathering. At the farther end of the spectrum, it’s also much easier for trolls to tag and target unsuspecting victims. As a result, we have the dumpster fire that Twitter has become in the past several years for many of its users.

The problem for the continued health of the commons is how can we maintain a bar for online lurking, but still provide some feedback? How can we keep people from shouting and yelling at passer-by from their proverbial front porches or vice-versa? How might we encourage more positive lurking online before directly jumping into a conversation?

Read Posts and Private Posts

For several years now, as a part of the IndieWeb movement, I’ve been more directly controlling my online identity and owning my content by using my own domain name and my own website (boffosocko.com). While I still use Twitter, I’m generally only reading content from it via a feed reader. When I post to or interact with it, I’m always publishing my content on my own website first and syndicating a copy to Twitter for those who don’t own their online identities or content and (sadly) rely on Twitter to do that for them.

Within this setting, since roughly late 2016, I’ve been posting almost all of what I read online or in books, magazines, or newspapers on my own website. These read posts include some context and are often simply composed of the title of the article, the author, the outlet, a summary/synopsis/or first paragraph or two to remind me what the piece was about, and occasionally a comment or two or ten I had on the piece.

An example read post with context from my website at https://boffosocko.com/2019/06/02/lurking-and-social-networks-ton-zijlstra/

In tandem with these posts, I’m also sending webmentions to the websites of those pieces. These (experimental) read webmentions are simply notifications to the originating site that I’ve read their piece. In our prior framing of lurking or Twitter, I’m sending them the simplest notification I can think of to say, “I’m here lurking. I’m reading or looking at your work.”

I’m not saying that I liked it, favorited it, disliked it, bookmarked it, commented on it, or anything else, but simply that I read it, I consumed it, I spent the time to interact with it. But in contrast with Ton’s older method of looking at server logs to see what kind of traffic his posts are getting, he can see exactly who I am and visit my website in return if he chooses. (Ton’s old method of sifting through those logs was certainly not a fun experience and the data was usually relatively anonymous and useless.) These newer read notifications could potentially give him a much richer idea of who his (lurking) audience actually is. Then when someone shows up with a comment or reply, it’s not completely from out of the dark: they’ve previously indicated that they’re at least somewhat aware of the context of a potentially broader conversation on his site.

These read notifications are semantically different from likes, favorites, or even bookmarks on other platforms. In fact many platforms like Twitter, which has moved from “stars” (with the semantic idea of a favorite) to “hearts” (with the semantic idea of a like), have so few indicators of reaction to a post that the actual meaning of them has been desperately blurred. Personally I’ll use Twitter’s like functionality variously to mean: “I’m bookmarking this (or the linked article within it) for reading later”, “I like this post”, “I’ve read this post”, or even “I’m acknowledging receipt of your reply to me”. That’s just too much meaning to pack into a silly little heart icon.

Because I’m using my own website over which I have complete control, I can make it do a better job of unpacking some of this semantic tom-foolery. I’ve written about it a bit in the past if you care to see some of the details: Thoughts on linkblogs, bookmarks, reads, likes, favorites, follows, and related links. See also: the read-posts tag on this site.

If they choose, some website owners display these read post notifications in one or more ways. Some sites like Aaron Parecki’s or Jeremy Keith’s will show my interactions as bookmarks. Others, primarily WordPress-based websites that support Webmention (via plugin), will actually show these interactions in their comment sections under the heading “Read” and display my photo/avatar as an indicator that I’ve interacted with that post. In the case of read posts on which I’ve written one or more comments, the receiving site also has the option of showing my interaction not as a read/bookmark intent, but could also show my comments as a reply to their post. I’ve written a bit about this and its potential for large news outlets before in Webmentions: Enabling Better Communication on the Internet for A List Apart. There are also some older legacy sites that might show my interactions as a trackback or pingback, but these seem few and far between these days, particularly as those systems are major targets for spam and the Webmention protocol has a richer interaction/display model.

How Jeremy Keith displays shares, likes, and bookmarks (including my read post) in the comment section of his website. The display of a read post on ColoradoBoulevard.net

A new itch

But as I think about these read posts, lurking, and being more civil on the internet, I have a new itch for some functionality I’d like to add to my website. I very frequently use my website as a digital commonplace book to collect links of things I’ve read, watched, and listened to. I’ll collect quotes, highlights, and even my own marginalia. As I mentioned above, my read posts sometimes have comments, and quite often those comments are really meant just for me and not for the author of the original post. In many cases, when my comments may be too egregious, sensitive, or perhaps even insulting to the original author, I’ll make these posts private so that only I can see them on my site. Of course when they’re private, no notifications are sent to the site at the other end of the line.

Sometimes I would like to be able to send a read notification to the site, but also keep my commentary privately to myself. This allows me to have my notes on the piece and be highly critical without dragging down the original author or piece who I may not know well or the audience of that same piece which I haven’t properly lurked (in the positive community-based sense indicated above) to be as intelligently and sensitively commenting as I would otherwise like. Thus I’d like to build in some functionality so that I can publicly indicate I’ve read a piece (and send a notification), but also so that I can keep the commentary on my read private to either myself or a smaller audience.

I suspect that I can do this in a variety of meta-fields on my website which aren’t shown to the public, but which might be shown to either myself or logged in users. In some sense, this is a subset of functionality which many in the IndieWeb have been exploring recently around the ideas of private posts or by limiting the audience of a post. In my case, I’m actually looking at making a post public, but making smaller sub-portions of it private.

To begin with, I’ll most likely be looking at doing this at a small scale just for myself and my commonplace book, as I can definitely see second and third-order effects and a variety of context collapse issues when portions of posts are private, but others who may be privy to them are commenting on those pieces from the perspective of their public spheres which may not be as private or closed off as mine. i.e.: While I may have something marked as private, privy readers will always have the option of copy/pasting it and dragging it out into the public.

For those interested, I’ll briefly note that Sebastiaan Andeweg just wrote Private posts: the move of the checkins which has some useful and related background to private posts. (Of course I remember exactly when I read it.) I also highly suspect there will be a private posts related session(s) at the upcoming IndieWeb Summit in Portland in June (tickets are still available). I’m interested to see what others come up with on this front.

mb21

@adactio Totally agreed. But I wonder what you would consider the simplest syntax to write server-side components. Templating languages like Liquid/Mustache where you need to learn {{if}} etc. and whenever you grow into the part where you want change more business logic you need to additionallly learn the host language (Ruby, JS)?

# Posted by mb21 on Wednesday, April 10th, 2024 at 6:17pm

12 Shares

# Thursday, April 11th, 2019 at 7:41pm

# Shared by Aleksi Peebles on Saturday, April 13th, 2019 at 10:40am

# Shared by erin cochran on Wednesday, April 10th, 2024 at 9:23am

# Shared by Baldur Bjarnason on Wednesday, April 10th, 2024 at 9:51am

# Shared by Fran Barton on Wednesday, April 10th, 2024 at 11:18am

# Shared by Large Heydon Collider on Wednesday, April 10th, 2024 at 11:18am

# Shared by Simon Elvery on Wednesday, April 10th, 2024 at 11:46am

# Shared by David Gregory on Wednesday, April 10th, 2024 at 12:11pm

# Shared by Caspar Fairhall on Wednesday, April 10th, 2024 at 1:38pm

# Shared by Ana Rodrigues on Wednesday, April 10th, 2024 at 1:39pm

# Shared by Richard MacManus on Wednesday, April 10th, 2024 at 2:09pm

# Shared by Krijn Hoetmer on Wednesday, April 10th, 2024 at 3:50pm

18 Likes

# Liked by Trys Mudford on Thursday, April 11th, 2019 at 3:52am

# Friday, April 12th, 2019 at 12:40pm

# Liked by Sebas on Friday, April 12th, 2019 at 6:20pm

# Liked by Aleksi Peebles on Saturday, April 13th, 2019 at 10:54am

# Liked by Léonard Messier on Monday, May 6th, 2019 at 10:00am

# Liked by Caspar Fairhall on Wednesday, April 10th, 2024 at 9:24am

# Liked by tomhazledine on Wednesday, April 10th, 2024 at 9:24am

# Liked by Julik Tarkhanov on Wednesday, April 10th, 2024 at 9:51am

# Liked by Three plus or minus five on Wednesday, April 10th, 2024 at 10:52am

# Liked by Tim on Wednesday, April 10th, 2024 at 11:46am

# Liked by David Gregory on Wednesday, April 10th, 2024 at 12:11pm

# Liked by Ana Rodrigues on Wednesday, April 10th, 2024 at 1:38pm

# Liked by Richard MacManus on Wednesday, April 10th, 2024 at 2:24pm

# Liked by sara on Wednesday, April 10th, 2024 at 3:50pm

# Liked by Andy Davies on Wednesday, April 10th, 2024 at 5:20pm

# Liked by Kristen Grote on Wednesday, April 10th, 2024 at 6:24pm

# Liked by Troels Thomsen on Wednesday, April 10th, 2024 at 8:28pm

# Liked by Pauxlll Kruczynski on Thursday, April 11th, 2024 at 3:33am

5 Bookmarks

# Bookmarked by Chris Aldrich on Thursday, April 11th, 2019 at 1:31pm

# Bookmarked by Calum Ryan on Thursday, April 11th, 2019 at 10:59pm

# Bookmarked by capjamesg on Friday, January 7th, 2022 at 12:00am

# Bookmarked by James' Coffee Blog on Thursday, May 5th, 2022 at 4:05pm

# Bookmarked by James' Coffee Blog on Friday, April 14th, 2023 at 3:15pm

Related posts

content-visibility in Safari

Safari 18 supports `content-visibility: auto` …but there’s a very niche little bug in the implementation.

Speculation rules

A performance boost in Chrome.

Displaying HTML web components

You might want to use `display: contents` …maybe.

Progressive disclosure defaults

If you’re going to toggle the display of content with CSS, make sure the more complex selector does the hiding, not the showing.

Schooltijd

Going back to school in Amsterdam.

Related links

Hyper-responsive web components | Trys Mudford

Trys describes exactly the situation where you really do need to use the Shadow DOM in a web component—as opposed to just sticking to HTML web components—, and that’s when the component is going to be distributed and you have no idea where:

This component needed to be incredibly portable, looking great on any third-party website, in any position, at any viewport, with any amount of content. It had to be a “hyper-responsive” component.

Tagged with

I wasted a day on CSS selector performance to make a website load 2ms faster | Trys Mudford

Picture me holding Trys back and telling him, “Leave it alone, mate, it’s not worth it!”

Tagged with

Building a robust frontend using progressive enhancement - Service Manual - GOV.UK

Oh, how I wish that every team building for the web would use this sensible approach!

Tagged with

The State of ES5 on the Web

This is grim:

If you look at the data below on how popular websites today are actually transpiling and deploying their code to production, it turns out that most sites on the internet ship code that is transpiled to ES5, yet still doesn’t work in IE 11—meaning the transpiler and polyfill bloat is being downloaded by 100% of their users, but benefiting none of them.

Tagged with

The goal isn’t to write less code | Go Make Things

The goal isn’t to write less code.

It’s to ship less code to users. Better code. Faster code. More resilient code.

THIS!

Sooooo many front-end developers don’t grasp this fundamental principle: it’s not about you!

Tagged with

Previously on this day

8 years ago I wrote Getting griddy with it

CSS Grid Layout is so hot right now.

10 years ago I wrote 100 words 019

Day nineteen.

14 years ago I wrote Botonomy

What if we had a Singularity and nobody showed up?

15 years ago I wrote Seattle Apart

Another excellent event apart.

17 years ago I wrote Spaces

It’s the small things that irritate and delight.

18 years ago I wrote Conceptual and photographic art in Brighton

An SMS-based adventure game plus an exhibition by our local Flickrstar.

18 years ago I wrote Machine Tags of Loving Grace

Revish sets the tagging machinery in motion.

20 years ago I wrote The campaign trail of destruction

Even before the election was announced, the Tories had been actively peddling their particular breed of populism.

22 years ago I wrote Live from Baghdad

"Men, we have got to find Saddam Hussein."

23 years ago I wrote The Mirror Project

Needless to say, while I was in Paris, I took the obigatory photograph in the bathroom mirror at the hotel.

23 years ago I wrote City of Love

I’m back from Paris.