Live data from Hacker News

Coming to Terms with Tailwind

johanronsse.be

11–20 of 117 posts

Re: Coming to Terms with Tailwind

#11
post #8
post #4

Earlier quoted context omitted.

Have you tried it? I don't know what you mean by "sign of dementia", but I find the approach taken by tailwind makes me a lot more successful in applying designs. Doesn't feel like dementia to me.

If I go to it and it has react-specific crap all over it, I hit the back button

What React-specific stuff does Tailwind have? It's a purely CSS framework.

Re: Coming to Terms with Tailwind

#12
post #4

Sincerely I don't understand what's the appeal of tailwind. It's just one more sign of dementia to add to the landscape.

Have you tried it? I don't know what you mean by "sign of dementia", but I find the approach taken by tailwind makes me a lot more successful in applying designs. Doesn't feel like dementia to me.

Yes I did, that's why I'm of that opinion.

What it does is force you, as other frameworks, to learn all its intricacies, design decisions, use an heavy and complex development environment (that besides that reads files it doesn't have anything to go about reading?) so that you don't need to learn the underlying language.

Then it nudges you to write a soup of classes (that you need to learn, and need to learn the config because it seems by default it has -400 but not -500, or whatever, and need to learn their priorities), that you need to keep changing and copying pasting (yes you can write classes that coalesce your styling... but that's kinda the point of CSS and/or any other pre-processor), and forget about semantically marking your html. (I'm not saying you have to write it badly, it's just that writing it poorly seems much easier - and is the same with CSS).

I just don't see the point - with the exception of the pre-processing part of course - CSS can use some little help in some places to generate programatically some things but I think those are better served by a pre-processor and not a framework as the framework tends to guide the overall design of the remaining things.

Re: Coming to Terms with Tailwind

#13
Well I have to support legacy browsers so I won't be using tailwind, but that doesn't mean I won't "cheat" on css by using material design lite. I literally have a 14 day deadline with no designer on hand. I know I need a framework its just in my case the less sexy MDL is more useful because it has great support for legacy browsers.

Re: Coming to Terms with Tailwind

#14
> Then there comes the point where I have to use Tailwind for work and I am blocked by an offical account and – that feels kind of stupid? Getting blocked by a company entity for having an opinion is kind of… strange?

I don't understand comments like this. You still have access to tailwindcss.com for documentation.

The company doesn't owe you space in their social media conversations. The company has real customers and potential customers who they want to engage with. Engaging with people who tweet "Tailwind is a terrible way to write CSS" [0] and "Refactor tailwind out of your codebase" [1] isn't a good use of the company's time. Blocking those people will also downrank their comments in @tailwindcss threads, which seems useful from the company's perspective. They're running a business, not a grievance forum.

Maybe, one could argue, the company should engage strenuously with critics like this to try to convert them. But for me, no, they should focus on supporting the people who want to be their customers.

[0]: https://twitter.com/wolfr_2/status/1310887766595637248

[1]: https://twitter.com/wolfr_2/status/1280949237820383232

Re: Coming to Terms with Tailwind

#15

Sincerely I don't understand what's the appeal of tailwind. It's just one more sign of dementia to add to the landscape.

Most people don't actually do design systems, because most organizations aren't set up to make/reward systematic design approaches.

Like any system that doesn't plan/support for its own maintenance, this means that most systemic/semantic approaches break down. The larger the team/projects, the greater the entropy inputs.

Solution: don't do it. Drop your styles (or some mediated subset) directly into a component. This also "solves" the overhead of separating style from content and other ways in which CSS suffers from "everything happens somewhere else"-itis.

Personally, I think tailwind is the wrong solution to these problems and we'll see posts about how this turned out to be a local maximum at best in about 2-4 years (or, hey, recently by the author of this post), but people climb to local maxima for a reason.

Re: Coming to Terms with Tailwind

#16
> Just like I don’t like React I will probably never really like Tailwind.

>But that doesn’t mean that I can’t be a professional and write the best Tailwind code I can if that’s what’s asked of me.

This is something that I can’t understand. Maybe it’s just me, but we’re incredibly fortunate to be in a market with huge demand. It’s not like we live in a React only world.

You can make a pretty good living writing in whatever language, framework, ecosystem you choose. I’m terrible at self promotion and still I manage.

It’s great when what’s fashionable matches your personal taste. It happened to me a few times. But when it doesn’t, it’s pretty fine as well.

Re: Coming to Terms with Tailwind

#17
post #4

Earlier quoted context omitted.

Have you tried it? I don't know what you mean by "sign of dementia", but I find the approach taken by tailwind makes me a lot more successful in applying designs. Doesn't feel like dementia to me.

Yes I did, that's why I'm of that opinion. What it does is force you, as other frameworks, to learn all its intricacies, design decisions, use an heavy and complex development environment (that besides that reads files it doesn't have anything to go about reading?) so that you don't need to learn the underlying language. Then it nudges you to write a soup of classes (that you need to learn, and need to learn the conf…

We're trying to find the balance between semantic classes and utilities now with @apply. I've always found layout to be easier with utility classes (regardless of Tailwind, this counts for Bootstrap 4 too).

I like "atom"-like components better with semantic classes. In BEM/ITSS I'd make a component for -everything-. But in Tailwind we'd only make one for common "atoms" such as buttons, tags, inputs etc.

Code example: write ".t-button" and then use @apply to put the classes there. Keeping the design constrained to a set of tokens.

    .t-button {
        @apply border
               inline-flex
               items-center
               px-3
               leading-5
               font-medium
               rounded
               focus_outline-none
               focus_ring-2
               focus_ring-offset-2
               focus_ring-blue-500;
    }

Re: Coming to Terms with Tailwind

#18
The underlying problem I see that Tailwind solves is component-izing a single idea. And that it doesn't get in the way with opinions like Bootstrap, et al. It does that pretty well. You can point to a single stack of code and say "this one thing is a navbar" and it's easy to know where to make changes. No searching, no stress.

What I haven't seen Tailwind do well on my projects is respond to change in the same way other methods would. I'm not saying it isn't possible, just that the several projects I've seen, it was a big pain.

A method I've been quite fond of to accomplish the same task, but remove the difficulties this author's other posts articulate, is to recreate the concept of a component in a single folder. Much like you would a Vue single-file component. If you read the "Components" heading here you'll get a good feel for it by looking at the folder/file structure:

* https://github.com/flyntwp/flynt#components

That same idea I've enabled in a framework/language-agnostic way with an NPM module I created (not public). It watches the folder, namespaces css/js like a single-file Vue component would (using a manifest name or defaults to the folder name). It's a freeing feeling to create a folder and just start coding sass and js without having to wire anything together. As it's auto-namespaced, sass files are very clean too, you can use generic naming like ".heading" without a problem.

This solution is nice because:

1. devs get the "one source of editing" in a single folder. Even image assets or your language's logic files.

2. Immense benefit with static analysis tools. Want to assert all your components have a readme.md? or generate docs from all component readmes? Sure.

3. it's performant, with vendor/tree-shaking and inheritance built in. Also parallel build execution of all components.

4. it's agnostic to language/frameworks. Include any linters or unit tests you want.

5. is a paradigm shift from themes to components, just like Tailwind

6. No more wiring together components! specify a global like Vue or your favorite sass package, and all components can inherit it

7. Simple setup.. all you do is point to a folder of components, specify a dist folder, and you're done unless you want to modify specific behaviors

I'm curious if there are Tailwinders out there who could teach me if Tailwind solves other problems I'm not seeing. Or if this type of solution would be something I should open source. It ends up being a pretty simple Webpack file under the hood, and it has been an absolute dream to work with over the past year.

Re: Coming to Terms with Tailwind

#19

> Then there comes the point where I have to use Tailwind for work and I am blocked by an offical account and – that feels kind of stupid? Getting blocked by a company entity for having an opinion is kind of… strange? I don't understand comments like this. You still have access to tailwindcss.com for documentation. The company doesn't owe you space in their social media conversations. The company has real customers a…

Nice of you to look up those from my hundreds of tweets.

Now, since we bought Tailwind UI to do our work, we are technically also a customer.

Post reply on HN