You probably knew this was coming sooner or later. DEV.TO has been filled with listicles lately and something had to be done.
But before we continue, a short disclaimer.
This add-on and article were created as a somewhat satirical view of the situation. While the tool is completely functional (GitHub), I do not intend to hurt other authors' feelings, or bash anyone for posting "listicles".
What is a "Listicle"?
A listicle (list article) is a usually low-quality, usually low-effort article that is a list. Listicles are often generated using some sort of AI, and while some might bring some value to readers, the vast majority of them are posted just for the sake of posting and not for the sake of teaching or passing on knowledge.
Listicles are quite easy to make - ask any GPT for a hot topic in the development community and tell it to list X resources about said topic.
Voila~ You have a listicle that is ready to steal the show.
Personally (and I know many of you will agree with me), I find listicles quite useless and somewhat annoying. Their exaggerated titles, filled with emojis and buzzwords, aim to capture as much attention as possible while providing little to no value. Many authors have been sounding their opinions about listicles lately, and it feels like a good portion of the community is somewhat ticked off by the situation.
The Conundrum of the "Top X" Articles 🤔 - by @rgolawski
Dev.to and "The Missing Middle" Economics - by @terabytetiger
Best Practices for Writing on DEV: Listicles - by the DEV team
The (temporary) solution
While I trust the DEV team to eventually do something about the low-quality content that is flooding the community. I wanted to stop combing through multiple listicles to find an article worth reading. The best solution I could think of was to create a quick Chrome add-on that identifies listicles and removes them from my feed using some kind of scoring system.
This was my first time creating a Chrome add-on, and it was an... interesting development experience (although somewhat unrefined, to say the least). I wrote the add-on in a day, and it works without using any sort of AI (I bet that is refreshing to hear).
I thought it would be fitting for the add-on icon to be a blocked party emoji icon. Not that I have anything against emojis or parties (both are fun) but it seems that listicle authors are using emojis as the primary hook that grabs your attention on the feed.
I did not publish the add-on to the Chrome webstore, because honestly I don't want to deal with that. But it is available on GitHub and you can add it to your local Chrome instance by enabling "developer mode" and loading the directory as an add-on. If you intend to use it and/or like the idea, a star on GitHub would be appreciated.
Let me know in the comments if you would like me to go through the Chrome webstore submission process and publish this.
Completely arbitrary scoring system
The simplest method I could think of to determine which post was a listicle - was to run the article title through a set of tests and calculate a score based on the title structure. If an article's title's final score is over a pre-defined threshold, it must be a listicle.
It is not perfect, but it works
To my surprise, it works quite well. The scoring system can identify over 90% of listicles with about 5-10% false positives.
From time to time an article that is not a listicle might get caught in the mix and removed from the feed.
The scoring system is partially built upon a blacklist of words associated with listicle-type articles. The goal with the blacklist was to try and keep things levelled, and not overdo it. You are more than welcome to improve the blacklist as you see fit, either in the repository or in your local fork/clone.
An explanation of locating the blacklist in the source files can be found in the README file.
Quality content
At the end of the day, we all just want to read quality content, whether our definition of "quality" is an academic research paper or a list-type article. I am not pro-censorship, and I do not think listicles should be banned. They are just not to my taste when it comes to technical articles. That being said, if you want to clean up your feed off listicles like me, I may have found a temporary solution for you.
Happy reading!
Top comments (44)
Here's a regex that seems to give good results (very few false positives/negatives from some quick testing). I've added comments and whitespace to make it easier to read/improve:
Usage:
Example results:
This looks good! I am checking words before the number and after the number, along with emojis and other positions (you can check the source code on GitHub). If you think my version can be improved please improve it and I'll merge your code!
@lnahrf Sure thing, I opened a PR (with a couple of improvements to the regex vs the original one I posted)
Merged your PR and added you to a contributors list. Looks super, thank you.
Your method of writing RegExps has made my day. Thanks!
Glad you like ;) this way of writing regexes is inspired by Ruby's
x
regex flag. If you're interested, I also published a package a while back that implements a more robust version of this whitespace/comment stripping logic, plus a few other features:fancy-regex
Interesting! Yes, have written a few rx utility functions in my time. Daniel Roe of the Nuxt team also has Magic RegExp: regexp.dev/. I'm pretty handy with RegExps myself, but will take a look at your lib for sure. Thanks again!
There is a Regex Jedi among us mere mortals. Or just me.
Seriously, this might be the most useful piece of software that EVERY senior DEV user MUST install in 2024. 🤣 praising even before I tried, but THANKS so much already! I had been thinking of coding something similar but I didn't have time yet. Thanks for your contribution!
Haha, thanks for the support!
Hi from the DEV team!! Love this. Thank you for sharing and for coming up with some really great solutions to help us out, while we work on some larger solutions. Be very well!
Glad you liked it! 🙂
Sooner or later?
In fact, aside from listicles, I haven't been able to find interesting articles here lately.
Interesting topics are scarce as well.
Lately, I've been thinking about some Java tricks used in my work and topics like SQL optimization using indexes have come to mind.
The problem I see with listicles is that most of them don't provide me with new information.
However, if someone were to publish listicles of the same caliber as tools of the Titans, those articles would probably be very intriguing.
Yes! I am not against the principle of a listicle (it rhymes, lol).
It's just that the listicles that we see on the top of the feed are just posting irrelevant content over and over again, not providing any additional value.
Even beyond listicles, we are lacking high quality articles.
I'm seeing some errors reported in Chrome, under manage extensions, after I add this unpacked extension.
I'm struggling to discover what may be causing this, as I usually run an up-to-date Chrome. Seems to work great anyway. I'll raise an issue on GitHub for reference.
Commented on your GH issue, thanks!
I am not sure what the issue is myself, will have to dig into the manifest documentation.
How did I miss this?! This is wonderful, Lev, haha!
😁 Thanks Michael! Glad you liked it
Looks great, will you publish it in the chrome extension store?
If enough would ask for it, then yes. Let's see what others have to say.
Interesting solution.
I definitely tried messing around with the Chrome extension API once but kind of gave up. The listicle problem on DEV is definitely annoying, I kind of miss those longer articles with an interesting story to recount or blog posts and the like.
Cheers
Yea it got easy once I grasped that the extension and DOM are two different threads that can only speak with each other using messages (which makes sense, security wise).
Thanks!
Awesome! I've made an extension for myself that does this already, but chose not to share it. Yet. Great article!
Some comments may only be visible to logged-in visitors. Sign in to view all comments.