4 ms·
> you would eliminate all usage of innerHTML The mythical refactor where all deprecated code is replaced with modern code. I'm not sure it has ever happened.
by post-it 8mo ago
> you would eliminate all usage of innerHTML
The mythical refactor where all deprecated code is replaced with modern code. I'm not sure it has ever happened.
I don't have an alternative of course, adding new methods while keeping the old ones is the only way to edit an append-only standard like the web.
- noduerme 8mo agoFinally, a good use case for AI.
- josefx 8mo agoWouldn't AI be trained on data using innerHTML?
- Aachen 8mo agoMy experience is that they somehow print quite modern code despite things like ES6 being too new to be standard knowledge even for me and I'm not even middle-aged yet Maybe the last 10 years saw so much more modern code than the last cumulative 40+ years of coding and so modern code is statistically more likely to be output? Or maybe they assign higher weights to more recent commits/sources during training? Not sure but it seems to be good at picking this up. And you can always feed the info into its context window until then
- skeeter2020 8mo agoThis is not my experience. Claude has been happily generating code over the past week that is full of implicit any and using code that's been deprecated for at least 2 years. >> Maybe the last 10 years saw so much more modern code than the last cumulative 40+ years of coding and so modern code is statistically more likely to be output? The rate of change has made defining "modern" even more difficult and the timeframe brief, plus all that new code is based on old code, so it's more like a leaning tower than some sort of solid foundation.
- SahAssar 8mo agoES6 is 11 years old. It's not that new.
- Aachen 8mo agoHence the example of how long it takes non-LLMs to pick that up, whereas LLMs seem to get it despite there being loads of old code out there See also my reply to the sibling comment with the same remark https://news.ycombinator.com/item?id=47151211 https://news.ycombinator.com/item?id=47151211 My mistake for saying 10 instead of 11 years btw, but I don't think it changes the point
- chrisweekly 8mo ago> "ES6 being too new to be standard knowledge" Huh? It's been a decade.
- Aachen 8mo agoExactly, I learned coding JS before 2015 (it was my first language, picked up during what is probably called middle school in english). I haven't had to learn it again from scratch, so I need to go out of my way to find if there is maybe a better way to do the thing I can already do fine. It's not automatic knowledge, yet the LLM seems to have no trouble with it, so I'm pointing out that they seem to not have problems upgrading. The grandparent comment suggested it would need to be trained anew to use this new method instead. Given how much old (non-ES6) JS there is, apparently it gets it quite easily so any update that includes some amount of this new code will probably do it just fine
- charcircuit 8mo agoWhich is why it can easily understand how innerHTML is being used so that it can replace it with the right thing.
- stvltvs 8mo agoHonest question: Is there a way to get an LLM to stop emitting deprecated code?
- fragmede 8mo agoTheoretically, if you could train your own, and remove all references to the deprecated code in the training data, it wouldn't be able to emit deprecated code. Realistically that ability is out of reach at the hobbiest level so it will have to remain theoretical for at least a few more iterations of Moore's law.
- Aachen 8mo agoYeah, using a kilowatt GPU for string replacement is going to be the killer feature. I probably shouldn't even be joking, people are using it like this already
- charcircuit 8mo agoWhen the condition for when you want to replace is hard to properly specify, AI shines for such find and replaces.
- Aachen 8mo agoThis one is literally matching "innerHTML = X" and setting "setHTML(X)" instead. Not some complex data format transformation But I can see what you mean, even if then it would still be better for it to print the code that does what you want (uses a few Wh) than doing the actual transformation itself (prone to mistakes, injection attacks, and uses however many tokens your input data is)
- charcircuit 8mo agoThat can break the site if you do the find and replace blindly. The goal here is to do the refactor without breaking the site.
- lelanthran 8mo ago> When the condition for when you want to replace is hard to properly specify, AI shines for such find and replaces. And, in your opinion, this is one of those cases?
- charcircuit 8mo agoIt is because the new API purposefully blocks things the old API did not.
- littlestymaar 8mo agoThis ship has sailed unfortunately, no later than yesterday I've seen coworkers redact a screenshot using chatGTP.
- Vinnl 8mo agoI kinda like the way JS evolved into a modern language, where essentially ~everyone uses a linter that e.g. prevents the use of `var`. Sure, it's technically still in the language, but it's almost never used anymore. (Assuming transpilers have stopped outputting it, which I'm not confident about.)
- thunderfork 8mo agoDepending on the transpiler and mode of operation, `var` is sometimes emitted. For example, esbuild will emit var when targeting ESM, for performance and minification reasons. Because ESM has its own inherent scope barrier, this is fine, but it won't apply the same optimizations when targeting (e.g.) IIFE, because it's not fine in that context. https://github.com/evanw/esbuild/issues/1301 https://github.com/evanw/esbuild/issues/1301
- delaminator 8mo agofor some values of "everyone" and "never".
- yawaramin 8mo agoActually... https://github.com/microsoft/TypeScript/issues/52924 https://github.com/microsoft/TypeScript/issues/52924
- Vinnl 8mo agoAh yeah, I remember that. General point still stands: in terms of the lived experience of developers, `var` is essentially deprecated.
- plorkyeran 8mo agoI touch JS that uses var heavily on a daily basis and I would be incredibly surprised to find out that I am alone in that.
- Vinnl 8mo agoThat is indeed why I added qualifiers to "everyone" and "never".
- thenewnewguy 8mo agoIf you want to adopt this in your project, you can add a linter that explicitly bans innerHTML (and then go fix the issues it finds). Obviously Mozilla cannot magically fix the code of every website on the web but the tools exist for _your_ website.
- bulbar 8mo agoIt for sure happens for drop in replacements.
- littlestymaar 8mo agoNobody's talking about old code here. Having an alternative to innerHTML means you can ban it from new code through linting.