Hacker News new | ask | show | jobs
by fnordian_slip 793 days ago
Thanks, I manually hide them every thirty days because I didn't know that ublock origin can do that, and I didn't want to install an extra add-on just for that (because I hoped that YouTube would some day realise how bad shorts are, and give up on them; wishful thinking, I know).
3 comments

> I manually hide them every thirty days

The inability of tech companies to accept that no means no, and not "bother me later" is a dark pattern that I've noticed more and more lately.

It seems to have gotten imbedded as 'just the way you ask users things' in UI developer's mindsets:

    Do you want to enable push notifications?

    [Yes please] [Later]
How about [No]? Just add a note that I can always enable this later if I want to, but don't jerk around with this nudging making me feel I'm just postponing this choice.
It's called dark patterns as GP mentioned. They're financially motivated to improve [Yes] clicks, so they just remove [No]. It's completely Web-legal and Web-ethical.

IMO, something should have been done when A/B tests became normal(mid to late 2000s). That ship had long long sailed, but I believe that alone require independent ethics board if it is happening outside the Web. It should not be something easily handled with a blanket waiver in shrinkwrap EULA.

As Louis Rossmann would say, Rapist mentality.
I wrote a userscript that turns the links into a /v/ link. The whole "shorts" concept is sort of stupid. I mean the videos are fine, let people make whatever sort of video they want. the front page promotion is unwanted. But the thing I actively despise is the scrolling auto play interface. However youtube will play the video with a sane interface when the /short/ link is modified into /v/

Or I should say, I nearly wrote a userscript to do this, it mostly works but I still find myself manually changing urls. I am not good with JS.

My tampermonkey script (credit to the original author, I forget where I got it from):

  // ==UserScript==
  // @name         Youtube shorts redirect
  // @namespace    http://tampermonkey.net/
  // @version      0.3
  // @description  Youtube shorts > watch redirect
  // @author       
  // @match        *://*.youtube.com/*
  // @icon         https://www.google.com/s2/favicons?domain=youtube.com
  // @grant        none
  // @run-at       document-start
  // @license      GNU GPLv2
  // ==/UserScript==
  var oldHref = document.location.href;
  if (window.location.href.indexOf('youtube.com/shorts') > -1) {
      window.location.replace(window.location.toString().replace('/shorts/', '/watch?v='));
  }
  window.onload = function() {
      var bodyList = document.querySelector("body")
      var observer = new MutationObserver(function(mutations) {
          mutations.forEach(function(mutation) {
              if (oldHref != document.location.href) {
                  oldHref = document.location.href;
                  console.log('location changed!');
                  if (window.location.href.indexOf('youtube.com/shorts') > -1) {
                      window.location.replace(window.location.toString().replace('/shorts/', '/watch?v='));
                  }
              }
          });
      });
      var config = {
          childList: true,
          subtree: true
      };
      observer.observe(bodyList, config);
  };
For completeness here is mine. I will try yours and see if it works better.

  // ==UserScript==
  // @name         eat my shorts
  // @namespace    http://tampermonkey.net/
  // @version      0.1
  // @description  change links to youtube shorts to reguler site
  // @author       jrs
  // @match        https://www.youtube.com/*
  // @icon         none
  // @grant        none
  // ==/UserScript==
  
  (function() {
      'use strict';
      function eat_shorts() {
          const root = document;
          const shorts_re = /^\/shorts\/(.*)/;
          const ae = root.getElementsByTagName("a");
          for (var i = 0; i < ae.length; i++) {
              const this_a = ae[i];
              const short_match = shorts_re.exec(this_a.getAttribute("href") );
              if (short_match) {
                  this_a.setAttribute("href", "/v/" + short_match[1]);
              }
          }
      }
  
      const config = {
          attributes: false,
          childList: true,
          subtree: true
      }
  
      //timer resets every time the returned function is called
      function make_reset_timer(cb, timeout) {
          var timer = setTimeout(cb, timeout);
          function reset_timer(mutation_list, observer) {
              clearTimeout(timer);
              timer = setTimeout(cb, timeout);
          }
          return reset_timer;
      }

      const short_observer = new MutationObserver(make_reset_timer(eat_shorts, 10));
      short_observer.observe(document, config);
  })();
A little nitpick, it's ?v= not /v/
shorts have a link like youtube.com/shorts/XXXXXXX changing that to youtube.com/v/XXXXXXX works. and the video is still stupid, but now you have a sane environment to watch it in.
I had no idea, thanks!
I think both redirect to the video, no? At least I think they used to.
I think Shorts are great. What is your issue with them?
Besides the obvious reason that is even stated in the original submission of this article (they way they are presented is made to hack your brain for the dopamine kick and keep scrolling infinitely), there are also the technical aspects (no scrub bar, no volume control, accidentally touch the mouse wheel and you skip to the next video) - and maybe more subjectively: Shorts are about the worst-quality YouTube content there is.