5 ms·
The deadest horse in web development is the myth of “separation of concerns”
by namuol 8mo ago
The deadest horse in web development is the myth of “separation of concerns”
- appplication 8mo agoYou can separate concerns without violating locality of behavior, and that’s exactly what tailwind does. It admittedly does not do a good job at being very DRY but I think that’s poorly applied to HTML/CSS in general, and the most DRY css is often over abstracted to the point of becoming nigh uninterpretable.
- nine_k 8mo agoWhen I write CSS, I most often do not want the locality of behavior. I instead want uniformity of behavior, hence "semantic" styles. Even the trivial light / dark mode switching is pain with Tailwind, when classes like "color-gray-200" are routinely applied.
- appplication 8mo agoI’d somewhat agree with you there, but I usually use variables for uniformity. I do see arguments against tailwind but find anytime I’ve tried to do anything else it just feels like bikeshedding on internals for the same end result. Really what I want to see is beautiful TDD for CSS so that uniformity can be enforced, but I’m not sure that exists.
- nine_k 8mo agoVariables are hugely helpful, I agreee. IDK about bikeshedding. I'm very used to writing React code that normally declares no styles for components at all, and having CSS that style components using 1-2 classes, specific to these components. Container components control margins, <body> controls general things like fonts. It seems that what solves the problem is a good component library. "But I need red text here!" For what reason? It's a warning. OK, we've got <Text variant="warning">, it will be styled appropriately, and will look like every other warning in the application.
- zeroCalories 8mo agoI tend to think that if you're having issues with repeating yourself with stuff like tailwind you probably need to refactor your JSX/templates to share the repeated code. Keeping stuff like CSS isolated is a deliberate choice that helps massively with stuff like splitting code, and keeping changes side effect free.
- deleted 8mo ago[deleted]
- IgorPartola 8mo agoI was recently doing some very specific web scraping of some very public very static documents. About 25% of them use a soup of divs with hashes for class names. Not a <main> or <article> or <section> in sight. I am fine with the idea of what tailwind does but like at least using semantic tags where appropriate could be a thing.
- zeroCalories 8mo agoTbh there's nothing really wrong with that. You don't need stuff like article or section if you set the right attributes. Often easier to just use divs to get the structure right, and figure out the meaning later.
- mhuffman 8mo agoWell, it does help if you expect sight impaired people with software to find the site useful.
- zeroCalories 8mo agoThat's why I said setting the right attributes. You can make a fully featured accessible website using only divs.
- ordersofmag 8mo agoAnd there's 'nothing wrong' with just writing code with variables named 'a1, a2, a3'. But when some poor sod has to dig through your mess to figure out what you had in mind it turns out that having an easier to discern logical structure to your code (or html) makes it better. I've dug through a lot of html. And there's a ton of ugly code smell out there. Layers and layers of "I don't really know what I'm doing but I guess it looks okay and I'll make it make sense later". I'm sure it pays the bills for someone. But it makes me sad.
- raincole 8mo agoExactly this. I wonder if the people downvoted you realize that HN is basically just a big table and a bunch of div, and they use this very site just fine?
- kristopolous 8mo agoIt's a choice. The dominant paradigms choose not to. I disagree. And that makes me the loser here
- gilcot 8mo agoAnother loser here to second you
- kristopolous 8mo agoI wrote these libraries like https://github.com/kristopolous/db.js https://github.com/kristopolous/db.js and https://github.com/kristopolous/evda https://github.com/kristopolous/evda in the early 2010s. I spent months on them I was all in. I swore off touching front end in 2022. It's terrible now
- noduerme 8mo agoAh, yeah. I spent the early 2010s writing front-ends in AS3, so imagine how that turned out. I wrote my own event system too when I was forced to head to javascript, but in the end I mostly just used jquery's, and it's still what I use. I agree the event-driven paradigm leads to sloppy code, but static event names are enough of a clue to what's invoked most of the time, even in relatively large projects. And most things can sensibly just be promisified now anyway, besides user interactions. I thought it was funny that you wrote this way back when: >> I've often seen projects where I think "what talks to what and how? What is the separation of concerns and where does this code live?"
- namuol 8mo agoI agree, it’s a choice. So is the opposite. Complaining about other people’s choice of doing things on the web is the choice I’m actually tired of.
- samastur 8mo agoRead something else then.
- zarzavat 8mo agoI don't use Tailwind, it's a solution to a problem I don't have. I can understand how it might be useful for certain types of web development, e.g. landing pages where the content and styles are tightly coupled. So as a technology, it's OK. But my god its userbase is toxic and obnoxious.
- UqWBcuFx6NV4r 8mo agoOkay. I personally don’t care for anyone so chronically online that they think that their interactions with other similarly chronically online people is at all representative of the userbase of something as immensely widely used as Tailwind. Whatever the professional equivalent of ‘touching grass’ is, I suggest you do that at your earliest convenience. What an absurdly absolutist statement.
- netdevphoenix 8mo agoThe majority of its userbase is no longer made of humans though.
- the_other 8mo agoSoC is how all maintainable software is built. A function for A, a class for B, DDD-spec'd modules and features, databases on separate machines, API definitions, queuing systems, event systems, load balancing, web servers. You don't even need to think of the web to see how content and presentation are different. Try editing a text file with hard line breaks in and you'll quickly understand how presentation and content are orthogonal.
- UqWBcuFx6NV4r 8mo agoPlease don’t be so condescending. We all know what separation of concerns is. The comment said “web development”, and it’s inarguably that in the history of web development there have been at least a couple of major misapplications of separation of concerns, which have had practically everlasting negative consequences. Read what you’re replying to before you reply to it.
- tgv 8mo agoI don't think "separation of concerns" is entirely dead. Ideally, the CSS is readable and maintainable, and that implies structure. If you have a bunch of (co-)related components, you don't want to find/replace tailwind class names when you need to change the layout. So you separate that part of the layout in classes based on (layout!) functionality. You can see that as "concerns."
- namuol 8mo agoComponents are the tool you’re looking for. For the rest there’s CSS variables. Soon we may have @mixin.
- nonethewiser 8mo agoI can't believe this isnt better understood. Style definitions on reusable components are good. The idea that your css doesn't have to know about your html just creates tons of problems and complexity. Global themes and reusable styled are fine. If we are talking about statically defined html then sure. make your global css files.