Skip to main content

YouTube

(This is a W.I.P post)

How I use YouTube

As many already know, YouTube is highly flawed. You know it, I know it, Google know it. That's why, as of the past few months, YouTube has tried to be a bit more aggressive with advertising by attempting to block viewing videos if they detect you're using an ad blocker of some kind. Before this, they had also tried adding multiple 10 second ads before videos and for many years, ads have been put at various points of longer videos.

Of course, I would have never noticed this had it not made news on sites like The Verge and on YouTube itself. Why wouldn't I have noticed? Because I don't use YouTube.

Well, I say "I don't use YouTube" but I still watch YouTube videos. What I mean is that I haven't used YouTube.com to watch videos for probably years at this point. With that, I haven't watched an ad before or after a video, I haven't been blocked from watching videos, I haven't even watched any of the ads YouTubers add into their videos such as sponsorships, self promotion etc.

How??

I use the following applications to watch YouTube videos:

On Desktop, I use FreeTube and on Android, I use NewPipe.

Install them and that's it. Just export your subscriptions from YouTube, import them to these applications, change settings to your liking and you're done.

Advantages

  • No advertisements (At any point)
  • Downloading of videos within the clients (audio and/or video)
  • Open source software you can modify to your liking
  • No cookies, fingerprinting, tracking etc.
  • No algorithm to recommend videos you don't care about
  • You can use any video player you like
  • More choice in playback devices (lightweight clients)

Those are some of the common advantages between FreeTube and NewPipe. The individual clients have some of their own:

  • FreeTube can be used with Invidious (which means you can have zero communication with Google services directly)
  • NewPipe can run in the background (a "feature" you'd need to pay for in the official YouTube app.)
  • NewPipe can stream from Soundcloud, Bandcamp, FramaTube and media.ccc.de
  • FreeTube has profiles (you can create a profile for a particular group of channels for example)

For those with older Android devices, you're probably aware of how badly the official YouTube app runs on these devices (if it runs at all). NewPipe has no issues running on such devices. If it can still play videos, it's good enough.

I know someone who uses an old budget Huawei phone which is coming up on ten years old by now. This phone is unable to play YouTube videos as the old app is discontinued and the new app doesn't install. NewPipe works perfectly on this device and will keep it in service for the foreseeable future.

Disadvantages

  • No synchronisation between devices
  • No interactions such as liking, commenting, reporting etc.
  • No algorithm to recommend videos you don't care about

On NewPipe specifically, if you have a large number of subscriptions, refreshing the list to show new videos can take a few seconds.

Similarly, on FreeTube, having a large number of subscriptions forces the application to use RSS to retrieve the video list, which doesn't return the length of the video (Title and thumbnail are still present).

Other options

FreeTube and NewPipe are only my preferred clients. There are plenty of other alternatives, particularly on Android:

and probably more...

Synchronisation

As mentioned in the disadvantages, none of these applications will automatically synchronise your subscriptions or playlists between them, but this isn't a big issue.

Personally, every now and then, I'll export my subscription from FreeTube in all formats it provides. I store these on my Nextcloud storage, which is synchronised between my devices. Then, on the rare occasion I decide to watch some YouTube on my phone, I'll import those subscriptions.

If I have subscribed to a new channel on NewPipe, I'll do the same.

NewPipe can also export all of its settings to one file. I used to do this every now and then but I've found settings I like and keep them backed up only for when I need to restore them.

But this is stealing!!

It's not. If you enjoy the videos somebody creates, donate to them directly or buy something they sell.

Conclusion

For me, this is the best experience I've had for watching YouTube videos. It's fast and also allows me to avoid the web browser. Having my subscriptions all in one file also allows for some portability too as these can be imported into other clients or YouTube frontends such as Invidious.

I don't expect many other people to adopt this method of watching YouTube videos and that's probably for the better. It's likely that YouTube wouldn't still exist if views weren't counted and viewers couldn't interact with videos or their creators. I'm sure there will always be some number of people who are willing to pay for YouTube or watch their ads. Computer illiteracy, I'd say, but they'll keep the site afloat for the (short) time it has left.

CS2 and "VAC Live"

"The purpose of a system is what it does".

With the upcoming release of CS2, there is plenty of conversation around "VAC Live". Many people seem to think it'll be an improvement for CS2 over CSGO. Today I'll talk about why this probably is not the case.

Currently, in CSGO, there are only three requirements to cheat in a safe manner:

  • Your cheat and loader of choice must not be detected

  • You must not use features of the cheat which are known to lower "Trust", cause "Untrusted" bans or VAC bans.

  • You must not rage every game.

These aren't difficult steps to follow, and this is intentional.

Valve essentially allow cheating in CSGO. Their entire system is designed in this way.

VAC

VAC, compared to any other AC, is a minimal attempt at detecting cheats in the "traditional" manner. It's very passive compared to other AC solutions and it's also safer to run due to it being user-mode and not kernel-mode.

Personally, I like VAC as it isn't terribly invasive and can't crash my entire PC like Vanguard does.

VAC could do a better job with some effort: Despite the source code for many cheats being publicly available, such as Osiris, they still don't detect them. On Linux, any user can download, compile and inject Osiris with zero consequences. Unless they use detected features such as "No duck cooldown".

VAC Module

What they've tried so far isn't much: Here's a post by LWSS about VAC on Linux as of 2020, it has gone essentially unchanged since.

Some interesting methods they've tried:

In an attempt to detect modified view angles, they added backup variants of the associated variables. The idea here was to store the original view angles in the backup and compare them to the current ones. In the case that a cheat has modified the original view angles, the values will no longer match and the player should be banned. The main issue with this attempt is that in a cheat, you can also update the backup view angle's associated variables, meaning this has been entirely circumvented.

On Linux, a VAC module exists which runs cat /proc/$(pidof csgo_linux64)/maps | grep AimTux in order to "detect" AimTux. Note that to bypass this, you simply just rename the library before injection. It's like "detecting" if a file is malware by using the file name.

Trust

The "Trust" system isn't intended to ban players. This system exists to keep cheaters separate from legitimate players.

This implies that they would prefer let cheaters play with/against other cheaters.

Of course this system isn't perfect either. At the time of writing, when using gamesense (among other cheats), you can rage and still have high trust.

CS2

What makes people think this will be any different for CS2?

"VAC Live" is supposedly a more active system utilising the trained "VAC Net" AI to detect cheaters. See this video.

The report dialog

In the video, a player reports another and the target is instantly banned. Some important things to note about this are that the cheater was barely getting kills and also that during the report, the final checkbox was highlighted in red.

The cheater having low kills is something of note because they may not have even been cheating in that match. The ban could have been a pending one from CSGO as Valve almost always delay bans to slow down the rate at which people can find out if a feature, cheat or loader is detected. In this case, "VAC Live" is nothing more than allowing players to give the ban a push to make it happen sooner.

The final checkbox being red is of note as it may indicate that it does more than just report. What first comes to mind is that it could run VAC modules on the target and ban accordingly. For the regular player, this would be about the most to expect from this new feature.

The expectation that "VAC Live" may be better at detecting cheats is not a good one to have. As explained earlier, Valve don't bet on detecting cheats.

Conclusion

Cheating in CS2 will probably be the same as in CSGO. I don't see Valve dumping their work on non-invasive anti-cheat any time soon. "VAC Live" is not likely to change much for legitimate players or cheaters.

Modern Warfare 2 MP on Linux

These are some notes about Modern Warfare 2 Multiplayer on Linux. I talk about the performance of the game, note about proton versions and explain how to unlock the FPS and FOV.

Warning

Later in this post I talk about using what is technically a cheat for MW2 MP. Please note that MW2 MP uses VAC and that I am not responsible in the case you get banned.

Performance

First thing I'd like to note is one of the nice things about gaming on Linux.

On Windows, MW2 SP runs great. To lock 333 FPS on it is nothing. MP however is a very different story. MP runs terribly.

The most obvious barrier is the 91 FPS cap on the game which, as far as I know, was put in place to prevent players exploiting the physics related silly-ness that comes with getting higher frame rates.

For those who don't know: As is popular in many games from the late 2000s and early 2010s, some physics in MW2 are tied to the frame rate. In the majority of older Call of Duty games this is the case. If you run the game at a frame rate over 125, you will start to notice some differences in gravity, it will be lower. The higher the frame rate, the lower it goes until it suddenly has the opposite affect when you exceed 333 FPS. I have no idea why it inverts like this.

So 91 FPS is the cap for MP for that reason. What if we removed that cap? (More detail on how later)

On Windows, removing the FPS cap is barely even worthwhile as the game will just about average 125 FPS on most systems.

On Linux however, we can easily lock 250 FPS or higher on the same hardware. I don't know the cause of this but it's always nice to see. So, speaking of playing on Linux, Proton time.

Getting it running

MW2 MP on Steam isn't as fussy as other COD games. Currently I play on Proton 8 but it should work on most versions.

In future I'll probably write a post about the weird behaviours of COD 4 and Black Ops on Steam.

FPS Unlockers and FOV Changers

To unlock the FPS and change FOV, we have to jump through some more hoops than the Windows user.

ProtonHax installation

The first of which is installing ProtonHax.

Arch users can simple install protonhax from the AUR

Personally I am on the -git version. I guess try it if the regular one doesn't work for you.

Everyone else will be building it from source.

ProtonHax setup

Now that you have that installed, go to the launch options of MW2 MP on Steam and add the following:

protonhax init %command%

Now when the game is launched, we can use ProtonHax to run other applications along side the game.

ProtonHax Usage

First off, we need a tool to run along side the game. I will be using mw2-fps-unlocker which allows you to change the FPS limit and your FOV.

Run MW2 at least once if you haven't already. This will create the "compatdata" folder we need to place the executable in.

Navigate to the install directory of the game, default should be /home/$USER/.local/share/Steam/steamapps/common/Call of Duty Modern Warfare 2/

Then go up the directory tree til you're in the "steamapps" folder, from which you can navigate to the following directory: steamapps/compatdata/10190/pfx/drive_c/

10190 here is the APPID of the game on Steam. If you visit the store page for a game, you will see the APPID in the URL.

Place your trainer executable in this "drive_c" folder.

Now you can launch the game.

In a terminal, run protonhax ls to verify the game is detected. You should see the APPID of the game in the output.

We can then run protonhax run 10190 C:\YOUR-TRAINER-HERE.exe and it should launch the trainer along side the game.

My First Blog Post

This is my first blog post. It has been written in markdown in DOOM Emacs and the static site is generated using Nikola.

Current workflow

Local development

I am using nikola build && nikola serve to easily rebuild the site when I'd like to preview changes.

Creating new posts

I have also created the following script, called "newpost.sh" in the working directory to quickly add a new post:

nikola new_post -e -f markdown

This then drops me into NeoVim where I can write the initial contents of the blog post.

Publishing

Since this blog is stored on GitHub, I can add Git hooks to my local copy of the repository.

This allows me to run scripts on certain actions such as when committing to the repo, pushing to the remote etc.

I have added .git/hooks/pre-commit to my local repository such that when I make a commit, the site is regenerated.

I would do this before pushing but in the case that I manage to break something, I'd prefer it be spotted sooner rather than later.

Changes

Writing this inital post, I have noticed there would usually be a very small gap between the post title and the content. Adding a single # heading 1 tag adds some space there.

I have already added some theme changes to this Hack theme.

  • Added grey background to code blocks so they stand out more with the dark theme

  • Added border radius to large code blocks to make them look nicer

  • Changed links to hacker green to match the rest of ChopperHook

.code, code, .hack code, .hack pre, .hack pre code {
    background-color: #111111;
    padding: 0.08em;
}

div .code {
    border-radius: 0.5em;
}

a:link, a:visited, a.email span.name {
    color: #00ff00;
}

Conclusion

Overall I am happy with this setup. This didn't take long to set up and it seems easy to work with and customise. Hopefully it doesn't get abandoned like most blogs :)