Do you ever notice yourself spending time on a website that doesn’t bring anything good into your life? Do you find tools like LeechBlock NG not as effective as you’d like? Well. I can’t promise a solution, but I will share some strategies I’m currently experimenting with.
The Idea
One of the notable features of modern web is the meticulous optimization of every aspect of (nearly) every major website with the aim of removing user friction and increasing retention. If the experience of using $website is easy, pleasant, and engaging, you might end up using this $website more than necessary or beneficial.
As a result of evolution, our brains have heuristics that help us to detect and avoid dangerous and risky encounters. So, when I see a rotten fruit, I don’t have to consciously guide myself away from consuming it. I feel disgusted, and then I throw it out.
Unfortunately, these evolutionary adaptations haven’t prepared us to deal with the increasingly manipulative, engagement-driven environment of the internet. We haven’t developed a natural mechanism that makes us instinctively disengage when exposed to addictive content.
We don’t have to rely solely on evolutionary adaptations. We’re a tool-using species, and there are tools available for us to improve this situation. As soon as we discard this illusion that the pixels one sees when visiting https://$megacorp.com/ are the property of $megacorp, a pathway for improvement becomes easy to spot. If an unhealthy website doesn’t look unhealthy, we can (and should) fix that.
Tools
First, get Stylus. This is an extension that lets you inject any style you want into any website you want. If you’re familiar with a little CSS, you shouldn’t find it too difficult to break the styling and layout of any website you want. Injecting awful styles into awful websites brings them to alignment. It forces the rotten fruit to look rotten.
To serve as an inspiration for some, and, maybe, as a starting point for the people who are less technical or just don’t enjoy dealing with the web stuff, I want to share the stylesheet I use for some websites, along with a generator I wrote to produce it.
chaos.css + the generator script
For the full effect, download and install Twinke Star font or replace ‘Twinkle Star’ with any other fun font you happen to have installed.
#!/usr/bin/python3import stringimport randomdef relative_luminance(r, g, b): srgb = [] for c in (r, g, b): c /= 255 srgb.append(c / 12.92 if c <= 0.04045 else ((c + 0.055) / 1.055) ** 2.4) return 0.2126 * srgb[0] + 0.7152 * srgb[1] + 0.0722 * srgb[2]def contrast_ratio(r1, g1, b1, r2, g2, b2): l1 = relative_luminance(r1, g1, b1) l2 = relative_luminance(r2, g2, b2) lighter, darker = max(l1, l2), min(l1, l2) return (lighter + 0.05) / (darker + 0.05)def random_contrasting_colors(min_ratio=4.5): while True: r1, g1, b1 = (random.randint(0, 255) for _ in range(3)) r2, g2, b2 = (random.randint(0, 255) for _ in range(3)) if contrast_ratio(r1, g1, b1, r2, g2, b2) >= min_ratio: return (r1, g1, b1), (r2, g2, b2)print("""* { font-family: 'Twinkle Star' !important; text-decoration: spelling-error !important; font-size: 20pt !important;}body { animation: wobble 30s infinite alternate ease-in-out;}""")print("@keyframes wobble {")for i in range(100): sx = 1 + random.gauss(0, 0.001) sy = 1 + random.gauss(0, 0.001) print(f" {i}% {{scale: {sx} {sy};}} ")print("}")for a in string.printable: if not a.isalnum(): continue color1, color2 = random_contrasting_colors() r1,g1,b1 = color1 r2,g2,b2 = color2 print(f"div[class^=\"{a}\"] {{ background-color: rgb({r1},{g1},{b1}) !important; color: rgb({r2},{g2},{b2}) !important; }}")
Demo
Before
After
I think the results speak for themselves.
Conclusion & Further Thoughts
Is this enough to wrestle back control from billion dollar industries that thrive off causing you harm in the name of engagement? Not really. This is a systemic problem, not something to be solved by individual choice. But this doesn’t mean that talking about it is pointless, or that you should just accept the current state of the internet.
And for the love of god, install a good adblocker if you haven’t yet.
Bonus
I find YouTube very addictive. As an attempt to make it better, I use a script that briefly mutes sound at random intervals. This adds a bit of friction, making the experience less pleasurable, and hence less addictive.
I hacked this script together in bash and I can’t promises it will work on your system.
ytbad script
#!/bin/bashMIN_SLEEP=${MIN_SLEEP:-120}MAX_SLEEP=${MAX_SLEEP:-180}while true; do youtube_sinks=$(pactl -f json list | jq '.sink_inputs[] | select(.properties."media.name" | contains("YouTube")) | .index') if [ -n "$youtube_sinks" ]; then for sink in $youtube_sinks; do pactl set-sink-input-mute $sink toggle done sleep 2 for sink in $youtube_sinks; do pactl set-sink-input-mute $sink toggle done fi sleep_duration=$(( $RANDOM % ($MAX_SLEEP - $MIN_SLEEP + 1) + $MIN_SLEEP )) sleep $sleep_durationdone
Don’t forget to use SponsorBlock to reduce your ad load.