Remix.run Logo
recursivedoubts 4 days ago

Hey, I created htmx and while I appreciate the publicity, I’m not a huge fan of these types of hyperbolic articles. There are lots of different ways to build web apps with their own strengths and weaknesses. I try to assess htmx’s strengths and weaknesses here:

https://htmx.org/essays/when-to-use-hypermedia/

Also, please try unpoly:

https://unpoly.com/

It’s another excellent hypermedia oriented library

Edit: the article is actually not nearly as unreasonable as I thought based on the just-f*king-use template. Still prefer a chill vibe for htmx though.

librasteve 4 days ago | parent | next [-]

HTMX Sucks

https://htmx.org/essays/htmx-sucks/

azangru 4 days ago | parent | next [-]

> No Jobs

> Another practical reason not to use htmx is that there are, rounding off, zero htmx jobs.

> I just did a search for htmx jobs on indeed and found a grand total of two: one at Microsoft and one at Oak Ridge National Laboratory.

> A search for “react”, on the other hand, gives 13,758 jobs.

> Seriously, developer, which of these two technologies do you want to hitch your career to?

I do not advocated for htmx; but this take is so bad!

Resume-driven development should not be a thing. If you are a professional developer, building a product for a user, your primary concern should not be the job market for when you quit the company you are working for, but rather making the best product possible for the user within the context of the current company. And if the product is such that it does not call for react, or some other javascript-rich client, then you shouldn't use it however many react jobs there may be on Indeed.

lynndotpy 4 days ago | parent | next [-]

The evidence is so damning that htmx.org even opted to host it. That's not all- the author of the document is the one who developed HTMX!

(In all seriousness, this entire article is facetious and is highlighting the strengths of HTMX. They are not sincerely advocating for 'resume driven development'.)

recursivedoubts 4 days ago | parent [-]

while the article is tounge-in-cheek, i do think a lot of the criticisms are legitimate

barrkel 4 days ago | parent | prev | next [-]

The author of the article is the creator of htmx. There is some tongue in cheek here.

azangru 4 days ago | parent | next [-]

Right :-) That article did read as satire; but then, it is hard to tell what is satire anymore. I can hear people say the things he catalogues in the article; and I might agree with some of them, like the pollution of the window namespace, or the ancient syntax if this is indeed the case.

puppy_lips 4 days ago | parent | prev [-]

As I read, I thought, "I'm pretty sure I disagree with this guy" about once per paragraph. I didn't know. Thank you.

lambdaone 4 days ago | parent | prev | next [-]

At this point, web design 'ecosystems' are essentially money whirlpools. They're complex, so they require programmers skilled in using them, who in turn make more sites which need more programmers, and so on, and the network effect takes over and cements this feedback loop in the structure of the jobs market.

And the frameworks are churned continuously and are also bug-ridden nightmares, so that continuous development and support is needed to keep websites functioning and secure.

Any reduction in framework complexity threatens the whole edifice.

moregrist 4 days ago | parent | prev | next [-]

I think the number of job postings is pretty related to factors that I do consider valid when selecting a piece of technology (eg: language, framework, etc):

- How easy is it to hire people with experience in this?

- Relatedly, how easy will it be for the org to maintain this software after I (or the original team) leaves?

azangru 3 days ago | parent | next [-]

> How easy is it to hire people with experience in this?

When NoRedInk switched to Elm, Richard Feldman, who was asked about whether this impacted their hiring experience in any negative way, said that on the contrary, hiring had never been better, because although the pool of candidates grew smaller, their quality (either prior experience of working with type-safe functional programming languages, or enthusiasm for learning them) got higher.

When Alex Russell announced several openings at Microsoft for development of design systems with web components, and certainly no react, he said this attracted a lot of really strong candidates.

I am not saying that a good web developer should be able to pick up any exotic language, such as elm, or purescript, or rescript, or clojurescript at no time; but what I am saying is that as far as web frameworks are concerned, they shouldn't be a criterion for hiring, and are unlikely to become an obstacle to it.

s2l 2 days ago | parent | prev | next [-]

Even though I prefer htmx, another emerging gravity is what LLMs are good at. LLM-based coding/debugging/planning is a thing and going to stay, and if there are less code-bases to train LLMs, any new language/framework will be at disadvantage.

63stack 3 days ago | parent | prev [-]

You can be productive in htmx after spending less than an hour reading the docs, even though there are (I assume) zero jobs asking for it

Octoth0rpe 4 days ago | parent | prev | next [-]

> Resume-driven development should not be a thing.

Pretend this is not about library choice, but rather about language choice. One language has 2 jobs, and the other language 13k jobs. I doubt you'd think for more than a second.

azangru 4 days ago | parent | next [-]

> One language has 2 jobs, and the other language 13k jobs. I doubt you'd think for more than a second.

The Hacker News website runs on Lisp. How many jobs do you see on the market that ask for Lisp? And yet, for what it is, this site is amazing! I don't see them rushing to migrate to a python backend and a react-based frontend, no matter how many jobs there are for those.

marcus_holmes 3 days ago | parent | next [-]

This is all true. But then, if you ran HN and needed to hire new devs, you could find them extremely easily just by posting on your own site. HN is a well-known project that people would want to work on because it looks great on their resume and gives kudos when talking to other devs.

In other words, HN does not have the problem that you are going to have if you use an unpopular language for your project.

If you choose LISP for your not-HN project, then you have a problem. The chances are very slim of finding any experienced LISP devs who are also in your salary range, within commute distance, want to work on your project, are a good fit for the team, etc.

You're probably going to have to hire a dev who is a good match on all those other things and train them up on LISP. Unless they've had experience with other functional languages (not that unusual, but not common either) then they're going to have to learn an entire new paradigm. All of which means that they'll spend the first six months going slow while they learn, and needing support from the rest of the team.

And you'll need to convince them to join you (probably by paying them more money) because if they spend a few years on your project learning LISP, they probably won't be able to use those skills for their next gig, and their current skills in a popular language will go out of date.

LISP is a great language, and if used well it will probably give you an advantage over the competition using other, more mundane, languages. But is that going to be enough of an advantage to counteract your slower onboarding, higher salaries, and greater recruitment workload?

jimbokun 2 days ago | parent [-]

No, you will find strong candidates who love Lisp and want to quit their job slinging Java to work on your Lisp project.

marcus_holmes 11 hours ago | parent [-]

Yeah, maybe. Though finding them is still harder than just using Java in the first place.

4 days ago | parent | prev | next [-]
[deleted]
chuckadams 4 days ago | parent | prev | next [-]

Not just Lisp, but Arc at that. That's about as niche as it gets.

lerp-io 3 days ago | parent | prev | next [-]

this site can also vibe coded in seconds.

mexicocitinluez 3 days ago | parent [-]

lol Yea what a wild example to pick from. A web programming 101 website being heralded as why it's okay to use a tech like Lisp to build web apps feels pretty standard for HN though.

It's a list of articles and comments. It would take like 3 pages from W3Schools to build this thing.

azangru 3 days ago | parent [-]

I am deeply baffled by this kind of response.

Firstly, because this site happily handles the amount of traffic that puts many hobbyist sites that happen to get on its front page into a hug of death; so its developers must have done something right on the backend that is probably above the web programming 101 level.

But secondly, because this was precisely my point. One does not need a super popular front-end framework to make an awesome web product, and the HackerNews site is a testament to that.

mexicocitinluez 3 days ago | parent [-]

> I am deeply baffled by this kind of response.

No you're not. You're just trying to respond with something witty.

It's a message board with 1% of the functionality most sites people are building with frameworks.

> Firstly, because this site happily handles the amount of traffic that puts many hobbyist sites that happen to get on its front page into a hug of death;

Lol are you really implying it's hard to scale a message board?

> One does not need a super popular front-end framework to make an awesome web product, and the HackerNews site is a testament to that.

IT'S A MESSAGE BOARD. Nobody is building message boards anymore. Using HN as an example for anything other than building a dirt simple message boardsays more about your refusal to recognize the need to these new technologies than it does about those technologies.

> awesome web product

A. Message. Board.

azangru 2 days ago | parent [-]

> Lol are you really implying it's hard to scale a message board?

I am implying that it is beyond the "3 pages from W3Schools", as you put it.

> A. Message. Board.

Yes. A fast, reliable, accessible message board that I and many others thoroughly enjoy. An awesome product.

Again, I have never suggested that its ui is complex. In fact, it's glorious how simple it is. This is the point that those htmx people make: use simple tools for simple UIs; and also, try to make your UIs simple.

mexicocitinluez 2 days ago | parent [-]

> this site is amazing!

NO. IT. ISN'T.

lol. Anytime React is mentioned people like you rush in to tell others just how great stuff like...checks notes...a message board is. As if it in any, way, shape or form adds to the conversation.

You just couldn['t help yourself from rushing in to defend the simplest site on the planet (lol written in LISP) as if it demonstrates anything other than some rando building a w3 schools site in a language no one uses anymore.

azangru 2 days ago | parent [-]

> rushing in to defend the simplest site on the planet

This 'simplest site on the planet' does the job that it is tasked to do. Brilliantly. I am baffled by why you would scorn at simplicity.

> as if it demonstrates anything

It demonstrates that a great product (a product that many people use and love) can be built with simple tools. At least on the frontend.

mexicocitinluez 3 days ago | parent | prev | next [-]

> The Hacker News website runs on Lisp.

You mean the message board? The website that has a grand total of 2 functions: post and comment?

> And yet, for what it is, this site is amazing!

It's 2 colors and text. That's it.

> ! I don't see them rushing to migrate to a python backend and a react-based frontend, no matter how many jobs there are for those.

It's A MESSAGE BOARD. A. MESSAGE. BOARD.

azangru 3 days ago | parent [-]

> It's A MESSAGE BOARD. A. MESSAGE. BOARD.

Have you seen how many blog or portfolio sites people build with react? Sometimes even adding nextjs into the mix? Blogs!

mexicocitinluez 3 days ago | parent [-]

So? That doesn't change the fact that HN is a dirt simple message board anybody could build.

azangru 2 days ago | parent [-]

> That doesn't change the fact that HN is a dirt simple message board anybody could build.

What is this an objection to? If you follow this thread upwards, where was it suggested that we should be talking about things so complex that nobody, or only very few, could build? The whole pitch of htmx is that it is proposed for building things that anybody could build. The article in the title assumes that the target audience isn't building Google Docs, Figma, video editors, or CAD tools.

mexicocitinluez 2 days ago | parent [-]

It's an objection to this:

> How many jobs do you see on the market that ask for Lisp? And yet, for what it is, this site is amazing! I don't see them rushing to migrate to a python backend and a react-based frontend, no matter how many jobs there are for those.

You pointing out that the dumb simple message board is written in LISP and doesn't need anymore more is a bit absurd.

No shit they aren't rushing to upgrade it. IT BARELY DOES ANYTHING TO BEGIN WITH.

Anytime a certain class of developer see the word "React" that end up saying the most ridiculous shit. Nobody, I mean nobody, thinks HN is a site worthy of replicating or achieving unless they're part of the .0000002% who couldn't find a prepackaged board from Google search results.

azangru 2 days ago | parent [-]

> Nobody, I mean nobody, thinks HN is a site worthy of replicating or achieving

Wait what? You haven't seen all the hackernews clones that people make as an exercise of website building? You haven't seen lobste.rs?

krapp 2 days ago | parent [-]

lobste.rs is people from HN who think HN isn't nearly strict and niche enough.

All of those hacker news clones are by Hacker News people for Hacker News people, usually to implement features Hacker News never will.

Nobody outside of the HN community is holding up Hacker News as an exemplar of superior design or engineering, much less of a Lisp implementation. Anyone who's touched the Arc Lisp forum code knows how few fucks pg gave about the design of anything but the language itself. And still the original forum was so inefficient it would keel over and die under moderate traffic and internal links would time out and people's comments would just never post.

petre 15 hours ago | parent | prev [-]

Except it's not a language. It's a library. Both of them are, in fact.

intrasight 3 days ago | parent | prev [-]

One language - JSX - has 10 jobs.

The other language - HTML - has over 30,000 jobs

mexicocitinluez 3 days ago | parent [-]

lol JSX isn't a language. There aren't "JSX" jobs.

I feel like only a backend developer trying to score "gotcha" points could make this argument and be confident about it.

endofreach 3 days ago | parent | next [-]

> backend developer

You mean a real developer?

mexicocitinluez 2 days ago | parent [-]

The real developer who doesn't know that JSX isn't a language? lol Sure.

intrasight 3 days ago | parent | prev [-]

There are emacs modes for it, so I claim it's a language.

fithisux 3 days ago | parent | prev | next [-]

you are right and wrong.

Survival is more important.

On the other hand htmx is nice to have, if it solves your problem. Still you should use what benefits you in the context of a customer.

If you ask me, I think the web is for viewing static content, download content, or share links that your browser should delegate to an app.

johnnyanmac 3 days ago | parent | prev | next [-]

>Resume-driven development should not be a thing

Reality is often disappointing. I'd love to be working deep in my Vulkan rendering knowledge, but it's clear right now with my lack of job that I need to grind leetcode instead and work on personal projects first. Graphics programming is already such a stiff bar to get into and it's only gotten stiffer as I go along.

I'm going a little bit on a limb by also cultivating Rust, so I'm not optimizing my RDD. But I still looked for a compromise of what I like and what's in demand.

nsonha 2 days ago | parent | prev | next [-]

That's obviously just an article pretending to criticise htmx

lbreakjai 4 days ago | parent | prev [-]

I appreciate the idealism but I appreciate being able to pay my mortgage more.

4 days ago | parent | prev | next [-]
[deleted]
recursivedoubts 4 days ago | parent | prev | next [-]

so true

Biganon 4 days ago | parent [-]

I have to say: I absolutely love the kind of unhinged energy you radiate. Please keep being yourself.

almosthere 4 days ago | parent | prev [-]

Everything in that resonated with me.

PaulHoule 4 days ago | parent | prev | next [-]

If you are comfortable building web apps like the early adopters did in 1999 that later got mainstreamed with Ruby-on-Rails and related frameworks, HTMX adds a wonderful bit of extra interactivity with great ease.

Want to make a dropdown that updates a enumerated field on a record? Easy.

Want to make a modal dialog when users create a new content item? Easy.

Want a search box with autocomplete? Easy.

As I see it the basic problem of RIA front ends is that a piece of data changed and you have to update the front end accordingly. The complexity of this problem ranges from:

(1) One piece of information is updated on the page (Easy)

(2) Multiple pieces of information are updated but it's a static situation where the back end knows what has to be updated (Easy, HTMX can update more than one element at a time)

(3) Multiple pieces of information but it's dynamic (think of a productivity or decision support application which has lots of panes which may or may not be visible, property sheets, etc -- hard)

You do need some adaptations on the back end to really enjoy HTMX, particularly you have to have some answer to the problem that a partial might be drawn as part of a full page or drawn individually [1] and while you're there you might as well have something that makes it easy to update N partials together.

[1] ... I guess you could have HTMX suck them all down when the page loads but I'd be worried about speed and people seeing incomplete states

refulgentis 4 days ago | parent [-]

Why did you reply to this comment?

None of this mentions anything at all mentioned in the parent post.

Was it just a shameless way to ride on what would become a top comment?

viiralvx 4 days ago | parent | prev | next [-]

Damn, Unpoly looks great! Never tried HTMX but have been a fan of it, it solves a UX problem that frameworks like Django and Rails suffer from, without needing to bring in something heavy like React.

I'm currently working on a side project in Rails using Stimulus but sometimes I wonder if Stimulus is overkill with all of the controllers and stuff as well. Do you have an opinion on when you should reach for something like Inertia or Stimulus over htmx?

mostlysimilar 4 days ago | parent | next [-]

In most simple cases you probably don't want to be handling request-response initiated DOM updates in a Stimulus controller. Turbo Frames and Turbo Streams are the more htmx-like in functionality and they're excellent for this.

cassiogo 3 days ago | parent | prev [-]

I think the htmx counterpart from Rails folks would be Turbo not Stimulus

nrclark 4 days ago | parent | prev | next [-]

fwiw I'm the CEO of htmx, and I am a huge fan of these types of hyperbolic articles.

puppy_lips 4 days ago | parent | next [-]

I am starting to understand htmx.

jabbywocker 3 days ago | parent [-]

As the CEO of HTMX I can assure you that you’ve only scratched the surface of the HATEOAS doctrines

4 days ago | parent | prev [-]
[deleted]
lgvld 4 days ago | parent | prev | next [-]

I love Unploy, the documentation as well, but I find it a bit too complex. For even simpler usecases I often use Alpine AJAX [1], which is an Alpine.js plugin giving your links and forms -- only, because progressive enhancement -- basic AJAX capabilities.

[1] https://alpine-ajax.js.org/

rodolphoarruda 4 days ago | parent [-]

I first read about Unpoly in Stephan Schmidt's Radical Simplicity website[1], I liked it's value prop and decided to try it. I found it bit too complex just as you said. A long time later I came across htmx and decided to try it even after reading a side comment that the library was "like unpoly". 15 minutes later I had a simple to-do list running htmx ajax calls using php and mysqlite in the backend. It was so easy I could not believe such thing could exist. Then I decided to read the Hypermedia book and never stopped using htmx in my projects.

[1] https://www.radicalsimpli.city/

naasking 4 days ago | parent | prev | next [-]

I didn't find it too hyperbolic, I think they were very clear on where htmx can help, eg. the section "you're not building Google docs".

recursivedoubts 4 days ago | parent [-]

Agree updated my comment

jadbox 4 days ago | parent | prev | next [-]

How does Unpoly and htmx differ?

recursivedoubts 4 days ago | parent | next [-]

unpoly is a more complete framework with concepts like layers and best in class progressive enhancement

htmx is lower level and focuses on generalizing the idea of hypermedia controls

https://dl.acm.org/doi/abs/10.1145/3648188.3675127

JodieBenitez 3 days ago | parent | prev | next [-]

HTMX is lower level. I think it would make a good web standard for libraries like Unpoly to build upon. Unpoly works best as progressive enhancement for frameworks like Rails or Django where most of the view logic is executed on the server. I love it, it's excellent. Just like Django (or rails), it's a practical tool refined after actual needs and experience, not a solution looking for a problem. And like Django it stood the test of time and is very well maintained.

ZeroConcerns 4 days ago | parent | prev [-]

LLMs know nothing about Unpoly, and quite a bit about htmx. This requires you to actually learn Unpoly, because, well, even pointing your LLM-of-choice at the Unpoly docs (which are quite okay!) makes it regress-to-the-ugly-Javascript-workarounds-mean pretty much on try #1.

I'm not yet sure whether this is a good thing or not -- I'll let you know once my latest iteration of my web framework is finally working as I envisioned, he-said sort-of-jokingly, which should be Soon Now.

But yeah, either alternative still beats React by a country mile, since everything related to that descends into madness right away.

recursivedoubts 4 days ago | parent [-]

I don’t think there is anything in unpoly that a good llm couldn’t figure out with a look over the docs pretty quickly. It’s pretty simple and has some great functionality, especially if you are shooting for progressive enhancement.

ZeroConcerns 4 days ago | parent [-]

Well, I actually use Unpoly, and I can assure you that LLMs don't get it, no matter how many pointers to the (excellent!) docs one includes.

Like, even just now, Claude Code with Opus 4-dot-latest, is absolutely convinced you need a bunch of fragile cascading Javascript listeners to dismiss a lower-level menu in case a dialog is opened, while the Unpoly docs, correctly and clearly, point out that 'shatter' exists for just that purpose.

And this is one of the use cases that I continue to highlight as the achilles heel of LLMs. I'm not holding it wrong: they're not reading it right.

recursivedoubts 4 days ago | parent | next [-]

ah, then I defer to your experience, i hope that it improves: unpoly is an excellent library

adamzwasserman 4 days ago | parent | prev [-]

I have the same problem. I guess we will just have to train our own SLM with a carefully selected (unpolluted) training corpus.

yomismoaqui 4 days ago | parent | prev | next [-]

> Still prefer a chill vibe for htmx though.

Said the horse with laser eyes (¬_¬)

recursivedoubts 4 days ago | parent | next [-]

it is a MEDICAL CONDITION

DANmode 3 days ago | parent | prev [-]

No avatars here.

dpifke 4 days ago | parent | prev | next [-]

https://unpoly.com touts "progressive enhancement."

Third link on the page ("read the long story") points to https://triskweline.de/unpoly-rugb/, which renders as a blank page with NoScript enabled.

Sigh.

irq-1 4 days ago | parent [-]

It's because of the demo wrapper/layers. Try just the raw demo: https://unpoly.com/examples/modal/preview.html

Still not perfect -- the demos should work too. I love the idea of a progressive framework and am willing to work around a few things to get it.

dec0dedab0de 4 days ago | parent | prev | next [-]

I haven't really tried htmx yet, but I used to love intercooler, and your essays are always a fun read. When I saw the title I thought it was some kind of joke from you, because it's like the opposite of your normal style.

adamzwasserman 4 days ago | parent | prev | next [-]

here is the long-promised frontal assault on Big State: dataos.software

lagniappe 4 days ago | parent | prev | next [-]

I'm curious if the author of the article is an HN reader, and if yes, how this comment is received.

algallagla 3 days ago | parent | next [-]

I'm the author of the original article. fwiw, I haven't seen anything that bothers me.

And if there was originally a harsher response which I missed, well then I hope it wasn't merited.

I'm pretty light-hearted about this topic! It's more fun that way.

moralestapia 4 days ago | parent | prev [-]

I will never ever ever ever touch htmx after this interaction I just witnessed.

recursivedoubts 4 days ago | parent [-]

what do you mean?

forzerpendulum 3 days ago | parent | prev | next [-]

Htmx is pleasant to use, but I lost a little respect for you after this prudish comment.

recursivedoubts 3 days ago | parent [-]

my bad

internet2000 4 days ago | parent | prev [-]

You really need to shut this down dude. If HTMX becomes famous for having overbearing advocates that's a really bad look. Look at what happened with Rust.

bccdee 4 days ago | parent | next [-]

"What happened to Rust" is that it got a lot of coverage for being good, then a few people were annoying about how good it is, and now a large number of other people have become annoying in their complaints about how annoying the first group was. Meanwhile, Rust & its community remain unaffected; adoption continues to grow, and Rust now used in the kernel, Windows, Android, AWS infra, etc.

The problem you've encountered is that people are annoying. I'm afraid that's not specific to any one technology or community. Fortunately, annoying blog posts are easily ignored and would never stop a useful tool from being adopted anyway.

jonathrg 3 days ago | parent | prev | next [-]

Rust is doing great.

4 days ago | parent | prev [-]
[deleted]