23 points

I have to disagree with this paragraph. That Tailwind enforces a design system is its biggest strength. Having a small selection of colors, font sizes, and padding to choose from is what makes a website feel much more cohesive than one where developers pick arbitrary values every time they style an element.

But you don’t need Tailwind for that; design systems are easy to implement these days using CSS custom properties.

permalink
report
reply
13 points
*

I think the author is rage baiting or doesn’t appreciate design systems. Calling this “the death of web craftsmanship” is hyperbolic nonsense. I’ve seen mangled UIs in basically every CSS stack.

I use Tailwind as part of a design system’s component library, but I’ve done the same with many other tools before. As with all libs in a UI stack, there is hype, then there is fit with you and your project. I think we could do with less hype & gripe, and more well considered neutral discussion of ergonomics and technical pros & cons.

permalink
report
parent
reply
4 points

Can confirm, I have mangled UIs in almost every CSS framework, its a talent of mine apparently ᕕ( ᐛ )ᕗ

permalink
report
parent
reply
1 point
*
Deleted by creator
permalink
report
parent
reply
20 points

I’ve seen people, lead and principal engineers, who refuse to learn modern JS, insisting that since it was bad in 2006 its bad today.

It’s still bad, though. That’s not the reason why, but it still is. All the frameworks and things like TypeScript try to work around and hide the uglyness and stupidity of JavaScript, but they neither remove nor fix it. The way HTML was initially designed is the exact opposite of how it is used. It was intended to present data in a standardized way and leave the rendering and styling to the client application. People tried to create pixel-perfect designs with it. The entire resulting technology stack was created by idiots for idiots. And JavaScript is consistent in the misguidedness of the endeavor. All the marketing talk about platform independence is bullshit. It is easier to write platform independent GUI applications in C than in HTML + CSS + JavaScript. All the frameworks and languages transpiling to JavaScript trying to belie that just lead to a breeding ground of incompetent GUI developers doing esotheric coding (“doing it the way it is done” while understanding zilch about the fundament). The resulting developers are useless outside of their steaming pile of web GUI shit. The least worse of them are the ones promoting and perpetuating this failed technology stack by adding further layers of abstraction to try and hide that it is build on and from shit, creating even more esoteric developers in the process - by idiots, for idiots. Web GUI developers are paid less than any other branch of developers and it is completely justified.

permalink
report
reply
14 points

It is easier to write platform independent GUI applications in C than in HTML + CSS + JavaScript.

Um, what? There are very few GUI toolkits targeting both desktops and phones, and none of them are reasonably usable from C.

permalink
report
parent
reply

You forgot to read the very small fineprint after the rant hyperbole: *) true for desktop applications. You could go with C++ and QT. Though, writing C++ code is never easy/fun (still better than JavaScript, though). Any argument about natively compiled multi platform GUI applications regarding mobile is moot either way for multiple reasons. The angle I’m going to push here is: Everybody and his mother tries to push their custom iOS and Android apps, relegating web sites to the desktop. Any multi platform GUI toolkit with a cross-compilable language will give you twice the functionality in half the development time over HTML+CSS+JavaScript. And don’t get me wrong: I’m not really suggesting that websites have no place. And there are good reasons to want websites. I’m trying to paint a picture what a horrible absolute clusterfuck the web GUI technology stack is.

permalink
report
parent
reply
7 points
*

Any multi platform GUI toolkit with a cross-compilable language will give you twice the functionality in half the development time over HTML+CSS+JavaScript.

Hundreds of companies have tried to solve this exact problem for years and already did the cost/benefit analysis. It turns out that writing almost all of your code exactly once is cheaper than doing it in the multiple stacks that would be required with whatever your dream architecture is. They are not idiots just because you want them to be.

You sound like someone with zero practical experience in this area who just wants to rant about code purity. The rest of us are trying to get shit done while you pine for a perfect technology stack that will never exist.

permalink
report
parent
reply
1 point

You forgot to read the very small fineprint after the rant hyperbole: *) true for desktop applications.

Ignoring phones in 2023 is patent nonsense.

You could go with C++ and QT. Though, writing C++ code is never easy/fun

It’s also ludicrously expensive, so as far as I’m concerned, it doesn’t exist.

Everybody and his mother tries to push their custom iOS and Android apps, relegating web sites to the desktop.

Madness. I’m not going to develop and maintain three completely different versions of the same app in perpetuity.

Any multi platform GUI toolkit with a cross-compilable language will give you twice the functionality in half the development time over HTML+CSS+JavaScript.

Maybe it would if one existed.

I’m trying to paint a picture what a horrible absolute clusterfuck the web GUI technology stack is.

I don’t disagree, but I also don’t see any viable alternative.

permalink
report
parent
reply
10 points
*

Lol so you’re one of the devs the author is talking about. Imagine getting this worked up over a topic you clearly don’t understand. “Failed technology stack” – that’s right everyone, the most widely used stack on the planet is a failure because this guy doesn’t like javascript. Everyone else in the world is obviously a stupid moron for not seeing things his way.

If you program in anything other than machine code you are an idiot. Remember that next time you use a failed abstraction like C.

Can’t believe this nonsense actually got upvoted. You never even identify any real issues with modern JS or HTML. It’s just a bunch of run-on whining. “HTML was meant to provide a standardized way for presenting data” – lol so literally how it’s still used today.

permalink
report
parent
reply
2 points

At least C has a working equals operator. Go on, tell me about ===, invite the ridicule. I bet I know more about JavaScript than you do. I hate it because I am intimately familiar with it.

console.log(null==0)
console.log(null>0)
console.log(null>=0)

console.log(0==[])
console.log(0=='0')
console.log('0'==[])

// no equality comparison, but that shit is funny
console.log("2"+"2"-"2")

Any proper programming language wouldn’t even compile any of that nonsense.

And something being widespread doesn’t mean it’s either right or good - look at religions.

permalink
report
parent
reply
17 points
*
Deleted by creator
permalink
report
reply
10 points
*

That being said, CSS frameworks are still wonderful, used right they can save a lot of time during early development by outsourcing the majority of design to the framework devs.

That’s actually my intent with using a CSS framework. A personal project of mine reached minimum viable product statud status (phones…) recently, I included bulma, and used some of its components for stuff like menus and modals. It was definitely faster than writing everything by hand early on. But I also ended up writing my own CSS anyway, especially with the grid, which is the foundation on which my app works on (it’s a grid-based colour mixing app).

I agree, I think CSS frameworks have a place for prototyping and we shouldn’t rely on them as a project moves towards a proper release 🤔

Then again, some people might think the obfuscation in 20+ classes is somehow a good thing…frankly, I think it’s worse than inline styles. It’s basically obfuscated inline styles!

permalink
report
parent
reply
4 points

Then again, some people might think the obfuscation in 20+ classes is somehow a good thing…

I’d argue that CSS is itself an obfuscation (read: abstraction), and isn’t even implemented consistently across browsers. If the abstraction results in less duplication, more consistency across the website, and higher productivity, then I don’t think that’s a bad thing. (Of course, the flip side is that if using the abstraction results in the same learning curve with less transparency, then the benefits might not outweigh the cost.)

Having never used tailwind, I can’t give a personal opinion on that, but I find it hard to work on any decently sized project without SCSS. Sure I can write pure CSS, but SCSS provides so many QoL features over raw CSS that it’s hard to pass it up, and it’s easy enough to get setup.

permalink
report
parent
reply
3 points

I mentioned some of this in another comment in this thread[1], but CSS has gotten tremendously better since Sass was first introduced in the 00s. Many features we used are now native to CSS, and can be used in your browser, today. Some of them are even better than their sass variants, or at least have special abilities sass doesn’t. calc() comes to mind, as it can mix and match units in a way a preprocessor just cant. You can do calc(100% - 10px), which is good for all sorts of stupid corner cases.

And native CSS nesting is basically 1:1 with how Sass does it:

.parent {
  font-weight: 600;

  &:hover {
    background: purple;
  }

  .child {
    font-weight: 900;
  }

  @media screen and (max-width: 800px) {
    display: none;
  }
}

I still use Sass or Stylus[2] on virtually all of my projects, but its nice to not have to when you just need to get something out or write a userstyle or something.


  1. Not sure how to provide an instance agnostic link, the few things I’ve seen people attempt didn’t work, but here’s the lemdro.id link ↩︎

  2. I’m largely giving up on Stylus, its sadly unmaintained. My favorite preprocessor though; takes .sass (indented) style to a whole new level on what you can omit ↩︎

permalink
report
parent
reply
17 points

Tailwind is just shorthand inline CSS.

permalink
report
reply
12 points

Very good article imo. I didn’t disagree with anything. I especially agree with the ugliness of the many class names in my html.

My problem I guess is reconciling how much of a pleasure it’s been to use. Perhaps I, a primarily backend developer historically, embody the death of web craftsmanship, but I don’t really want to learn modern CSS if I don’t have to 😅

The easier I can get something styled and back to doing actual business logic rather than making things pretty the happier I am. I highly respect frontend styling gurus but I’m not that interested in spending time mastering true web craftsmanship, I care more about delivering the product as fast and as beautifully to the user as possible.

permalink
report
reply
8 points

I’d encourage you to take a look at modern CSS with a fresh eye. It’s gotten really good. Good enough I’ve got another blog post in the works talking about how much goddamned fun its gotten. In the last few years alone, we’ve got sass-style nesting, parent selectors (!), combinator selectors (roughly like list comprehensions in their ability to fill out a matrix of potential selectables), color functions, and far more.

permalink
report
parent
reply
4 points

wholeheartedly agree! css has been my main job for going on 15 years because i’ve always enjoyed its quirks. the past 5 years or so have felt like leaps and bounds in terms of how i structure markup and styling. it’s such a fun language to learn. stuff like flex and grid make my work so much easier so i can spend more time on the fun stuff.

permalink
report
parent
reply
6 points

But can you vertically and horizontally align something that isn’t text reliably by now?

permalink
report
parent
reply
3 points

Thank you for this response. Indeed I will. And feel excited to do so :) Look forward to that blog post as well.

permalink
report
parent
reply

Programming

!programming@beehaw.org

Create post

All things programming and coding related. Subcommunity of Technology.


This community’s icon was made by Aaron Schneider, under the CC-BY-NC-SA 4.0 license.

Community stats

  • 75

    Monthly active users

  • 321

    Posts

  • 3.3K

    Comments