Hacker Newsnew | past | comments | ask | show | jobs | submit | ryanbrunner's commentslogin

An easy counterargument is that the frontier models are swallowing all of the attention and money because they currently don't have a constraint of demonstrating that their value exceeds their cost. Take that away and it might turn out that cheaper models that are "good enough" and can be profitable are the more attractive route.

> they currently don't have a constraint of demonstrating that their value exceeds their cost

There is no loyalty in AI. I can switch to another model at near zero cost. They absolutely do have to demonstrate value. The concept of "good enough" is a misnomer because we're talking about putting these products into the hands of people who need to generate value from them.


They have to demonstrate value absolutely, but you're forgetting about the denominator of cost, and to a large degree so is the industry right now.

To take this argument to an absurd level, if Fable generating a feature cost $100,000 and Sonnet generating the same feature cost $1, it wouldn't be enough that Fable is marginally, significantly, or even dramatically better, because the cost difference is so outsized. For a variety of reasons, the true cost of tokens for frontier models is downplayed at multiple points (whether it's through AI companies running off funding, companies prioritizing AI adoption over AI costs, etc.)

If cost is not an issue at all, the best thing is always preferable regardless of cost. But in most cases, and AI is no exception, eventually cost will be an issue.


Well said, they're competing on marketing rather than merit. Everyone defaults to the frontier instead of exploring more optimal options

The value of those models doesn't necessarily though. To extend the personal computer analogy, a server rack has always been more powerful than the average desktop computer but a personal computer got "good enough" at enough tasks that people just used those instead.

Articles like this remind me of that Innovation Tokens article.

Your time and attention is precious as a developer. I'm absolutely sure it's possible to implement uniqueness constraints, transactions, indices, and history yourself, but is that really the most valuable use of your time? There's probably not a need for you to have a unique solution, so you're quite literally just re-inventing something someone already had for not a lot of benefit.

Wouldn't your time be better spent actually solving the problems that whatever you're building is supposed to solve?


Development of video games is the final boss of this one.

If you want to kill someone's dream of publishing a game, encourage them to build their own engine from scratch. I cannot think of a more malicious piece of advice given how effective it is, statistically speaking.

The exceptions to this are so incredibly rare. Virtually all of the in-house engine work at indie scale has been replaced by Godot in recent years. It used to be something like 10-11% of studios were in-house fully custom. Now it's probably closer to 1-2% fully custom and 8-10% on Godot. Having a reasonably stable OSS option has removed the last major argument that I am familiar with for simply using what already exists.


>last major argument that I am familiar with for simply using what already exists

I was interested in gamedev as a kid. I always went with a custom engine. You're right, I never released/finished a large game.

But now I think I was just into game engine dev. Every time I finished my game engine and started working on game content I ingredient got bored and went to another project.

So I guess this is the reason, engine development is fun :).


You don't write your own libc to talk to the filesystem, do you?

Same vibe here imo. Use zerofs, juicefs. Use picomq, automq, s3stream. Use slatedb. Use lancedb, fusion, tonbo, iceberg, vertex. Use duckdb, data fusion, polars. These systems all natively speak to object storage. Use Qwikwit, rising wave / hummock, greptine mito, use warp stream, neon. Use celld. Over half of the projects here are very specifically about object storage.

Many deal with uniqueness, transactions, indicies. Which is extra impressive because its across machines. Managing data on a box creates a huge array of challenges and difficulties, backup and scaling and HA, etc etc. A huge reason to face object storage head on is that often you are headed towards that fray one way or another, and object storage makes an excellent easy to scale and manage disaggregation layer that keeps your problems from complecting together, is a clear, well known separation point. With an incredible ecosystem around it.


In my experience, if you're going to aggressively componentize whatever you're building (i.e. a button isn't a css class on a simple `a` tag but a distinct component that exists in it's own file somewhere) there's huge advantages to having your styling be associated directly with your components, and Tailwind is a great option (among many) for that.

If you're building something where your unit of organization looks more like a "page" than super fine grained elements, Tailwind will just make things messy and a higher-level library or writing your own CSS would be a better approach.

I don't think this changes much with AI - right now most models are not terrific at maintaining a huge degree of context in larger projects, so I could absolutely see an agent implementing CSS that works well in isolation but breaks due to the cascade. Maybe that changes in the future, but right now if anything I think Tailwind is well suited to AI because it enforces a certain locality to the changes you're making (i.e. you can reasonably assume that a `text-red-500` class on an element isn't going to break things elsewhere and wll do what it says on the box).


Why are your buttons `a` tags?!?

Buttons should be `button` tags. Links should be `a` tags.


It's common to want things that look like buttons that functionally link to a page.

This isn't really straightforward with the HTML `button` tag so `a` tags that appear like buttons are common. I'm not really proposing something out of the ordinary here, nearly every high level component library that has a built in "button" will support applying them to `a` tags and most likely have that as their primary example of a button.


Reading charitably, when writing that part of the comment they probably were thinking of links that look like buttons, for example the "Get started" link in Tailwind's home page.

Regardless of how that specific one looks like, I wouldn't like if it were replaced by a <button>.


What AI replaces isn't Tailwind (AI will reach for Tailwind pretty readily), but the paid ecosystem that was Tailwind's business model. The value of having a pre-built component goes down when building that component is a 10 minute job of an agent.


I think this is reasonable but incorrect. Tailwind didn't say "our conversion rates went down." They said the traffic to their docs site went down.

Their funnel depended on SEO, and LLMs took SEO out of the equation. What you said about the value of pre-built components might also be true but can't be determined from a situation where consumers suddenly all stopped learning that the pre-built components exist. Occam's Razor says it's the funnel.


I think there's plenty of developers that are perfectly competent with CSS who still reach for Tailwind.

You're right that Tailwind throws away the cascade, or at least enables developers not to have to think about it (under the hood, Tailwind 4 uses pretty modern cascading features like layers), but people aren't reaching it because of a lack of understanding, they're reaching for it because as front-ends get increasingly componentized, the cascade becomes less and less of a benefit and more of an obstacle to be worked around, and something that gets that obstacle out of the way becomes more attractive.


I'm perfectly competent at CSS and... at this point I don't even look at CSS. I just feed descriptions of what I want to the LLM and it nails it every time. The result either looks the way I want or it doesn't.

I'm not universally pro-AI. I meticulously review every line of backend code, and still do hand edits. I review FE commits less carefully but still keep an eye on it to make sure AI doesn't go off the rails. But there's only so much trouble you can get into with CSS and the problems are the kind of bite-sized problems that LLMs excel at.

I don't think it matters at this point what you use for styling. If you like tailwind, the AIs use it just fine. If you like SASS, or raw CSS, the AIs are also just fine.

I'm not sure there's really a human job here anymore.


Do you store your CSS in separate common files independent of markup? Out of curiosity, do you run into issues with excessive token usage when you want to work with CSS?

That would be my gut instinct - you ask your agent to change a CSS rule, and your agent would feel the need to find all usage of that rule to avoid introducing unexpected changes. Does that happen? (I'm operating purely on assumptions here because I regularly use tailwind where changes are kinda definitionally local).


I think if you said "couldn't be a venture backed startup", I'd 100% agree with you. Can't support employees or a marketing budget is a much lower bar, and I think that's perfectly achievable by something like Tailwind (or I guess was prior to AI)


I’m a die hard engineer, yet when I see Apple, Microsoft, and Google marketing: it makes me realize the importance of marketing.


The problem with this approach (that their first example already demonstrates), is that you'll almost immediately start with a "this type of file is OK" solution, and whether something should go in git doesn't really have a super strong correlation with file type.

It hobbles `git status` and essentially forces you to keep track of what you've changed yourself (since ignored files won't show up there), and it can instill a false sense of security that `git add .` is safe when it might not be.


I use alint [0][1] to define and enforce rules about files/globs that should or shouldn't be committed, among other things. You can configure it run as a pre-commit hook or in CI.

(disclaimer - this is my own tool)

[0] https://github.com/asamarts/alint

[1] https://alint.org/docs/rules/git-hygiene/git_no_denied_paths...


I find the other direction works ok as well - Sonnet 5 with Opus as an advisor - all the "Opusisms" get hidden from you since the convo is between Sonnet and Opus but you still get pretty decent results.


I don't think there's any functional difference between "chat about this" and just directly entering what you'd like to do / ask about in the "Tell Claude what to do" option, I think that's pretty much exactly what you're looking for.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: