Online privacy protection only works when we all participate

In a group chat I’m in, the following was said (details modified/removed to protect anonymity):

I haven’t searched for topic in Google. I searched on a privacy-protecting search engine. I talked about it with a coworker on an internal chat tool. And now, on my personal device, YouTube is showing me a video explaining topic.

Android devices in particular do listen to you1 and send data to various companies. While Google claims to only listen when directed and with permission, they are often caught listening without explicit permission. They have a strong incentive to collect as much data as they can, but I don’t think this is the cause.

Shadow profiles are like accounts, but created without permission for tracking purposes. They do not always uniquely identify a person, but they usually do. I am confident YouTube builds these and tracks connections between users (signed in or not), and tests their presumptions about identity by showing videos recently watched by someone related to you. It confirms these relationships by your interactions.2

That may also not be the cause, because ultimately, YouTube’s algorithms are a pattern-matching machine sifting through a hoard of data. Relatedness can be found in unknowable ways. It’s spooky to us because we cannot imagine how these connections are made, but they are nonetheless real – or made real by the machine.

They are definitely doing shady tracking because suggestions are too precise to only be accounted for by spurious connectivity.

Have you ever looked into browser fingerprinting?

It’s shockingly easy to identify users3 from standard data available to anyone. You as an individual can’t fight it because when you genericize your data using privacy protection features, you are put in a group of similar users so small that the remaining traces (like loading times) become enough to uniquely identify you anyhow.

As an individual4, use privacy protecting features whenever you can, because they only work when we all use them, but know that we must also fight back as a culture. We need systematic change to regain privacy, and that only happens with laws and social movements.

Lobbying is evil, but necessary in the world we live in. There are many organizations that call themselves privacy advocates, but most of these are actually fronts for business interests. Startpage’s Privacy Organizations You Should Follow is a list of organizations actually interested in preserving privacy instead of controlling access to privacy.

you keep saying “privacy protection features” like I know what that is

The easiest first step is to use a browser that protects you by default, like Vivaldi or LibreWolf5. Conversely, Chrome is the worst browser to use – it’s the most popular because of a concerted data collection effort by Google. Brave has a number of issues6, but is likewise strongly marketed as privacy-focused. All warfare marketing is based on deception.

Another easy step is to install a VPN. Use Private Internet Access, as they are the only VPN to consistently be proven by legal actions to not collect user data. (They’re also the cheapest!) Despite popular VPNs claiming to offer full privacy just by being installed, VPNs only hide one small part of how you are tracked online. They are a good tool, but do not offer that much protection, and they do slow your connection somewhat.

If you want to go all-in, I’ve stumbled across A Comprehensive Guide To Protecting Your Digital Privacy by Thessy Emmanuel. Even by a glance, I can tell it’s a pretty good resource, and it even covers things you may not expect like how cities track you.

Footnotes

  1. MSN is trying to block archival, but I managed to get a copy here, and made my own.
  2. I say this from personal experience. I have used a wide variety of devices in a variety of locations with different levels of privacy protection enabled. Across all of this, YouTube is able to accurately associate video recommendations with either no data – the first time YouTube is loaded – or very little, such as after watching a single video.
  3. The title of this article is misleading, but it is very thorough.
  4. I really need to write something about how and why individualism is a poisonous concept (archived copy). Ever heard of “divide and conquer”? That is the reason why most articles present options to you as an individual person, and frame things as your responsibility. By focusing on your choices, we absolve the guilt of those truly responsible for societal problems – companies, institutions, organizations.
  5. LibreWolf is superior in terms of privacy protection, but does have minor usability issues as a result, and I do not recommend it unless you are already comfortable dealing with minor technical issues from time to time.
  6. You’ll notice quote the rebuttal to the claims made at the top of this forum thread. Some of these are accurate, some may not be. I chose this as my source to highlight these issues because to me, it is more important to acknowledge that Brave has regularly made bad decisions and then reversed them, while Vivaldi and LibreWolf have not made these blunders in the first-place. A team truly devoted to making the best browser for you does not keep making these kinds of mistakes and having to error-correct, they make good decisions from the start.

Updated 2025-06-23: Well, this is unexpectedly timely.. here’s a video talking about VPNs specifically, and how they don’t protect you nearly as much as VPN companies pretend they do:

– The Hated One

How to check if ANY browser is installed in Linux (even more updated)

Updated: 2025-06-12
(If you just want to know my solution, skip to Reading .desktop Files.)

Linux is a very powerful operating system that gets more user-friendly by the year, but it still has glaring holes. Today, I discovered there is no reliable method to finding out if a browser is installed.

Searching online reveals that most people only care about knowing if specific browsers are installed, or are content with the incomplete option of only checking for the most popular browsers (currently Chrome, Firefox, and Opera). The which command works fine combined with a resource like LinuxConfig.org’s List of Browsers available on Linux, but now your script requires periodic maintenance to add more browsers to the list1.

The next most common answer online is to see if xdg-open exists, based on the assumption that a browser must be installed if xdg-open is installed – this is simply false. You also can’t query xdg-open to see if it can handle URLs without opening a URL. If you use this method, you are effectively attacking the user with a pop-up2.

I’ve also found documentation for update-alternatives, but it requires knowing exactly what name it uses for browser entries. I was told to use x-www-browser, gnome-www-browser, and just www-browser. None of these work, and the command doesn’t allow you to list all of its entries because the --all option forces you into an interactive session to configure every single option it has. I refuse to go through that mess just to find how browsers are defined.

This should be simple, shouldn’t it?

Worse, I’ve also found multiple users stating that this fails to adhere to system defaults on Ubuntu, despite it being Ubuntu’s official default method.. and it doesn’t even WORK.

There’s also Debian Wiki’s DefaultWebBrowser which is somehow too dense and too sparse, and in light of what I’ve already tried – nonsensical. Suggesting the use of a $BROWSER environment variable strikes me as particularly insane6.

The best option I can find right now is to manually scan every menu entry for programs categorized with WebBrowser3. This still excludes some options, is convoluted, and has the possibility of failing due to mistakes in menu entries. But it’s the closest to a future-facing solution I could find.

(While asking an unrelated question on the Linux Mint Forums, I did get more information about browser defaults, which you may find useful.)

Reading .desktop Files

Update: xdg-settings get default-web-browser basically has already done what I was doing here5. If anything has a .desktop file for a browser, that should return whatever default has been selected, thus telling you a browser is installed.4

Menus in Linux use a standard format to describe programs/actions so they can be automatically organized. Even some CLI apps create these entries as well. These are organized by predefined Categories, including WebBrowser. While this may still exclude some niche browsers, the users of such browsers likely will know how to handle this incompatibility, and are very very rare.

The only issue with this solution is finding the files and having to parse them yourself. This is still a little tedious, but will last longer and detect new browsers automatically. Unfortunately, the only information I found on where these files should be is conflicting slightly. The Arch wiki says they are in 3 specific locations, but the actual spec excludes one of those and specifies an environment variable where the rest are located. So I check all of these locations, scan every file, and look for two things: 1) A Categories key with “WebBrowser” in it. 2) No Hidden key.

For my specific use case, since I only need to know a browser is installed, I can exit this search on the first hit, but obviously you can use the spec to actually find which browsers are installed, and even launch them or show their icons!

For reference’ sake, here’s what a .desktop file for LibreWolf could look like:

[Desktop Entry]
Type=Application
Name=LibreWolf
Comment=Privacy-focused web browser
Exec=/path/to/librewolf
Icon=/path/to/icon.png
Categories=Network;WebBrowser;

What the hell am I doing this for anyhow?

I’m writing a script to help me automatically select and install packages on a Linux system so that I don’t have to remember or constantly look up how to install things that aren’t part of the standard package management of my system, or the names of things I may have forgotten about because I use them rarely.

The fundamental design of this script includes the ability to run installs and configurations in any order, except where dependencies require a specific order. Part of it removes Firefox due to Mozilla’s recent privacy violations7, another part adds a replacement browser, but other parts of the script require a functioning browser to function. Initially, I thought I just needed a check to see if any browser is present, but later I realized I need to be able to count how many browsers are installed. While I’m glad I found out there is a simpler way to check for any browser, I’m still using a manual scan of .desktop files because I need to count them.

(As I write this, I realize that while my current solution addresses most of my needs, I should have each browser-requiring section of the script verify a browser is present, instead of requiring the user to briefly have two browsers installed at once. While I still think it’s better to not remove a browser until its replacement is installed just in case, there is a hole in my dependency management here – especially because the user can do their own things outside of my script, obviously.)

Footnotes

  1. Any decision that adds future maintenance costs should be made very carefully and avoided if possible. Do you really want to devote a portion of the rest of your life to making sure this keeps functioning? Do you really want to limit your list of acceptable browsers to only what’s popular now?
  2. How long has it been and we still don’t force applications to open without stealing window focus at an OS level? There are always heavyweight applications, no matter how fast computers get, and computers are fundamentally designed for multitasking. We should be able to start a program and do something else while waiting for it to open, without the risk of random inputs being sent to the program when it is finally ready. Combine this with the fact that many programs steal focus before they’re even ready to accept input and it’s a garbage user experience.
  3. Thanks to Arran Ubels on StackOverflow for helping me find this answer.
  4. In theory, a browser could still be installed that has its desktop file in the wrong place, but then it is likely the system won’t recognize it for using open or similar commands anyhow. For my use case, that means it is not worth continuing to look for a browser being installed, but depending on what you’re doing, you may want to search further. Heck, if it’s really important, you might want to find every desktop file on the computer to check for a browser – though at that point you should probably just be doing something to ensure a browser is ready yourself instead of trying so hard to find an extant badly configured browser..
  5. Thanks to @CcxCZ on Telegram for telling me about this command! It’s really strange that it didn’t appear anywhere in my searches for information on this.
  6. It was pointed out to me that I should elaborate on this: Environment variables are easily manipulated and overwritten accidentally when they have simple names. (For a counter-example, I don’t worry about referencing $XDG_DATA_DIRS because it is unlikely to be screwed up.)
  7. A more aggressive take on it. While they can legally defend themselves on the basis of no evidence of violation occurring so far, so can every company that regularly destroys your privacy. Companies don’t remove assurances about privacy unless they’re going to stop protecting your privacy. Companies do not care about your privacy.

Updates

  • Updated 2025-06-12: Added a link to a thread on Linux Mint Forums that has additional information about default browsers.
  • Updated 2025-06-08: Added a section explaining why I’m doing this differently than the simple solution at the end.

i made a forum

Real-time interaction has been too much for me, and I miss forums, so I made one at https://forum.tangentfox.com/. You should check it out. I’ve temporarily allowed posting without a login to try to get people talking.

Since I recently decided I’ll “cross-promote” videos when I have blog posts that are otherwise meh, here’s what happened when I first tried KSP 2:

Hello, again

I started blogging on April 10th, 2010 on WordPress.com. I made posts roughly every 2 days until November 11, 2012. They weren’t good. At some point, I was mature enough to realize this and hid them all from public viewing. I’ve built a couple websites that are also gone, they had their own blogs. I used Twitter before a fascist killed it, and use Bluesky now.

This blog was hosted on a DigitalOcean server until a few weeks ago. I was naive enough when they gave me 2 years of free usage to think it would continue being a good deal, and then was too busy to cancel for years. They got their money, I regret it some, but now I’m running on my own hardware.

I have varying quality standards, and keep not posting because I haven’t made anything specifically for this blog. I overcorrect back and forth between caring too much or too little. Recently, I’ve been caring too much, and so I haven’t been sharing things I should’ve shared. I don’t think I’ll fix that problem, but I have an idea on how to reduce it. I’m going to set up a Lemmy instance I set up a forum, so that it’s easier to communicate with me about things I make/share, as well as rate them. Over time, I should have a better idea what goes well, and what are mistakes.

I probably shouldn’t just make an aspirational post without something to show, but I don’t care so much right now, I care that I say I’m not dead, things are getting better for me, and I have plans.

Unrelated video I made “recently” about making your own cheap notepad.

Edited 2025-04-07: Lemmy proved to be too difficult to get working, so I have a simple forum in its place.

How to Write a Simpleton Book Very Fast

These notes are based on How To Write A Book In Less Than 24 Hours by Stefan Pylarinos. The book is very short and targeted at use of minimal effort to make money on short nonfiction books with no quality control. While that inherently colors its advice, there are useful tips within it. If you are enthusiastic about writing, rather than making money, I would not advise reading it.

“Good” Advice

These are the things that can be useful if you are trying to rush publish something simple. There are also pieces of advice that may apply for more serious efforts, but I do not make the effort to distinguish them.

Market-Based Advice: Make it quick and cheap because most people don’t read past the first chapter. Shorter books are less intimidating, quicker/easier to make, and cheaper. These make them more likely to be purchased. Series encourage people to buy multiple books, and they are more likely to believe there is more value in several cheaper books than a single equivalently priced book with equivalent content. Find your target market first. Specificity in topic is rewarded. Spend 30 minutes on coming up with at least 10 ideas. People choose highly specific titles over broader titles. Make a bunch of title ideas. Keep them as short as possible. Think of them like a headline. Figure out where to publish. (Stefan only focuses on low-effort self-publication systems. I didn’t bother to include them here, as it’d be a waste of your time.)

Research Advice: All of their research advice is bad in my opinion.

Outlining Method: Take 30-60 minutes to come up with a list of ideas to cover, then come up with chapter titles, cut them down or combine them depending on overlap of topics, and finally write 3 things to cover for each chapter.

Writing Advice: Perfect is the enemy of the good enough. Schedule time to write. Publicly commit to your work as a way to encourage yourself. Distractions are evil, and should be treated as such. Timers can help you focus. Aim for 500-1000 words per chapter. (That would make this blog post chapter-length.) Spend an hour per chapter. (They promote this as a limit.) Don’t filter, just write. (Proofreading and editing is a separate task that comes later.) Spelling and sentence structure can always be fixed – after you’re finished writing.

Writer’s block? Exercise, take a break.

Editing Advice: Stefan focuses on proofreading. They suggest only waiting 30 minutes between writing and proofreading, when you should at least sleep on it. Reading aloud can help you find clunky sentences. Having someone else proofread makes it easier to spot issues.

(If you really want to follow the idea of rapidly producing simpleton books, you should have each day’s tasks be for different books so that you have an appropriate rest period between each step. To be clear, I define tasks as everything before writing, the writing itself, and editing/proofreading. These are the 3 main “categories” of action that benefit from having a break in-between. Realistically, research should be its own block too, and editing/proofreading shouldn’t be done in one day.)

Really Bad Advice

I include this because it can be helpful to understand why a particular piece of advice is bad (and to share a few related thoughts).

Misunderstandings: The 80-20 rule is that 20% of effort generates 80% of value. This author seems to think this means you can put minimal effort into something and still have most of the value. The reality is that you can’t know which effort generated the most value until you are done. Skipping 80% of the effort just means you’ll have very little very low-quality work.

“I’ve researched this for 1 hour, therefore I understand it.”

Worst Advice: “Research for only an hour.” This is the single worst piece of advice in the whole book. It encourages perpetuating common misunderstandings and repeating surface-level information that doesn’t actually get to the heart of a topic.. or explain it at all. Anything produced with this philosophy will be of minimal value, maybe equivalent to this blog post at most. (This is why large language models appear to be very knowledgeable at a surface level, but if you have any experience in a particular field or knowledge on a topic, they immediately fall flat. LLMs are fundamentally a “highest probability” surface-scanning machine on everything.)

For comparison, when I wrote a blog post about taking breaks, the end result was 2 paragraphs explaining the practical result of current research on taking breaks. That came from 3 hours of research on summaries of studies and articles on the topic. If it takes 3 hours to make 2 paragraphs that just cover the surface of a topic as simple as “how often and how long should breaks be”, then anything book-length will be worthless if it is based on only an hour of research.

“Forums are better than research.”

The 2nd worst piece of advice was to use forums for answers rather than checking credible sources or doing original research. While forums can help you find good answers for a lot of things, making them the main source of a book is a woefully inadequate idea. Such information must be used carefully, and checked for validity. (You’ll note that I include a disclaimer about my blog posts not having been thoroughly checked for validity. This is why. I am confident in what I say, but not an authority on any particular topic.)


Stefan suggests taking advantage of someone from the global south to transcribe a voice recording if you don’t like typing. They also assume you can write at 50 wpm on average and thus it is theoretically possible to bang out a chapter in 10 minutes minimum. (This can be fine for a first draft, but Stefan expects it to be your final draft.)

The book ends by hard-selling an online course of some kind. I suspect it fits the colloquial definition of a scam. (Most “scams” are not legally scams because they contain ill-defined value – much like this book. One must be careful on their wording when publishing to avoid lawsuit. This is part of why it took me several months to go from writing these notes to publishing this overview – I needed to make sure that my descriptions of the content of this book do not violate copyright.)

A great example of hard-selling and “scams” that aren’t scams is the focus of this lovely video by Dan Olson: