How I’ve Started To De-Google My Life

About a year ago I embarked on a quest to “de-google” my life as much as possible. While it hasn’t been a completely successful mission, I feel happier knowing I’m not giving away as much of my data to google as I was before.

It hasn’t been an easy process. It is not yet a complete process either. For example, the analytics on this very site are still run in Google Analytics. I realise the irony in this, but rest assured this is something I plan on changing.

If you’re looking for ways to “de-google” your own life, or are after some quick wins to get started, read on.

Some Quick Wins

I started off by changing the amount of data that Google keeps on my account. For example web browsing, youtube viewing, and location history data are all generally kept forever by default.

If you’re looking for the quickest things you can do to reduce the amount of data that Google holds about you in these areas, try these quick wins for a start:

Using your Google account, go to your Activity Controls Page here.

  • Turn off Web & App Activity.
  • Turn off Location History and enable Auto-delete
  • Disable YouTube History and enable Auto-delete.
  • Make sure Ad personalisation is disabled.

These can all be controlled from your single Activity Controls Page linked above.

de-google your life by limiting google activity controls.
Limiting various Google Product activity tracking and storage

Moving on, here are the main Google Products I used and what I did to migrate away from them, or at least limit my usage of them…

Migrating Away from Gmail

I started with email, as it is one of the biggest and most difficult to move away from in my opinion.

After evaluating options, and even considering self-hosted e-mail, I settled on moving over to Protonmail.

Protonmail has proven to be a good replacement for email and my calendar. For contacts, I now use Nextcloud (see below).

I set up a new Protonmail account and forwarded my gmail inbox over to the new protonmail address.

The next step I took was to start changing all my online account email addresses to the new one. Now, whenever an email arrives in my Protonmail inbox and has been forwarded from gmail, I make an effort to login to that account and change the email.

Eventually I’ll have little to no e-mail coming in via gmail and I’ll be able to shutdown and delete the account entirely.

I used a free Protonmail account for a while, but after a few months decided that I really liked the product and switched to a paid subscription.

Now I’ve configured some of my personal domains in Protonmail and use it for hosted email on those too. I benefit from end-to-end encryption now as well as features like DKIM too.

Dumping Chrome

Next, I stopped using Chrome. I installed Mozilla Firefox and used the import feature to bring in most of my Chrome bookmarks.

The few browser extensions I use are all available as Firefox Add-ons, so I had little to no friction with this move.

I do prefer Chrome’s developer features, but have managed fine so far with Firefox on that front.

Google Drive Replacement

Next up, Google Drive storage. Thankfully, a free Google account doesn’t give you too much storage space for free, so I did not have that many files in Google Drive that needed migrating.

hard drive
Self-hosting your files keeps you in control of your own data, but can also be a risk. Make sure you have solid backup and off-site storage contingency.

I now self-host Nextcloud. I’ve written a blog post on setting up Nextcloud as a FreeNAS hosted jail.

Now I benefit from around 10TB of “cloud” storage, and can rest assured its under my own control.

Using the Nextcloud mobile app, I can also have all of my mobile phone photos and videos synchronised automatically to my Nextcloud instance.

I have the most important folders backed up to multiple locations out of Nextcloud.


Here’s the difficult one for me. I consume a fair bit of content on Youtube. This makes it very tricky to completely de-google my life.

I have taken steps to improve how I use YouTube and to limit their ability to track me. It’s not perfect though.

For one, I use Youtube signed-out now. Sure they can still track by things like IP address and fingerprinting, but

I’ve also started using a mobile app (available on F-Droid and direct via their Github page) that has a feature to import all of your Youtube channel subscriptions and set up a video feed using these.

The app does not sign into your Google account at all, and does not try to provide you with any annoying “recommendations” like Youtube does. Even better, you don’t get any ads. Not a single one.

I’ve also started supporting alternative content platforms wherever possible. Of course they don’t match YouTube, but offer a glimmer of hope. For example:

I still maintain my own YouTube channel, and for now I have not done anything about that. To be honest, I’m not entirely sure what my approach here would be if I were to completely delete my Google Account.

The first thing I think I would do is set up a PeerTube instance and host videos there. I would also prefer to consume video content there.

Alternative Analytics

So as noted above, I still rely on Google Analytics. I hope to change that in the near future.

Some alternatives I’ve started considering are:

Going Forward

I’ll continue to try to reduce my reliance on Google Products going forward. As I mentioned before, what I have done so far is by no means perfect or complete. It is a constant concerted effort for me.

This post should not just apply to Google either. It shouldn’t just be case of “de-google” and move on. There are many other entities out there providing ‘free’ products that literally turn us into the ‘product’ by harvesting our data for advertising.

One of the the most important questions to always ask yourself when signing up for a ‘free’ new service is: “Why is this free, and what’s in it for them if I sign up?

Fast Batch S3 Bucket object deletion from the shell

This is a quick post showing a nice and fast batch S3 bucket object deletion technique.

I recently had an S3 bucket that needed cleaning up. It had a few million objects in it. With path separating forward slashes this means there were around 5 million or so keys to iterate.

The goal was to delete every object that did not have a .zip file extension. Effectively I wanted to leave only the .zip file objects behind (of which there were only a few thousand), but get rid of all the other millions of objects.

My first attempt was straight forward and naive. Iterate every single key, check that it is not a .zip file, and delete it if not. However, every one of these iterations ended up being an HTTP request and this turned out to be a very slow process. Definitely not fast batch S3 bucket object deletion…

I fired up about 20 shells all iterating over objects and deleting like this but it still would have taken days.

I then stumbled upon a really cool technique on serverfault that you can use in two stages.

  1. Iterate the bucket objects and stash all the keys in a file.
  2. Iterate the lines in the file in batches of 1000 and call delete-objects on these – effectively deleting the objects in batches of 1000 (the maximum for 1 x delete request).

In-between stage 1 and stage 2 I just had to clean up the large text file of object keys to remove any of the lines that were .zip objects. For this process I used sublime text and a simple regex search and replace (replacing with an empty string to remove those lines).

So here is the process I used to delete everything in the bucket except the .zip objects. This took around 1-2 hours for the object key path collection and then the delete run.

Get all the object key paths

Note you will need to have Pipe Viewer installed first (pv). Pipe Viewer is a great little utility that you can place into any normal pipeline between two processes. It gives you a great little progress indicator to monitor progress in the shell.

aws s3api list-objects --output text --bucket the-bucket-name-here --query 'Contents[].[Key]' | pv -l > all-the-stuff.keys


Remove any object key paths you don’t want to delete

Open your all-the-stuff.keys file in Sublime or any other text editor with regex find and replace functionality.

The regex search for sublime text:


Find and replace all .zip object paths with the above regex string, replacing results with an empty string. Save the file when done. Make sure you use the correctly edited file for the following deletion phase!

Iterate all the object keys in batches and call delete

tail -n+0 all-the-stuff.keys | pv -l | grep -v -e "'" | tr '\n' '\0' | xargs -0 -P1 -n1000 bash -c 'aws s3api delete-objects --bucket the-bucket-name-here --delete "Objects=[$(printf "{Key=%q}," "$@")],Quiet=false"' _

This one-liner effectively:

  • tails the large text file (mine was around 250MB) of object keys
  • passes this into pipe viewer for progress indication
  • translates (tr) all newline characters into a null character ‘\0’ (effectively every line ending)
  • chops these up into groups of 1000 and passes the 1000 x key paths as an argument with xargs to the aws s3api delete-object command. This delete command can be passed an Objects array parameter, which is where the 1000 object key paths are fed into.
  • finally quiet mode is disabled to show the result of the delete requests in the shell, but you can also set this to true to remove that output.

Effectively you end up calling aws s3api delete-object passing in 1000 objects to delete at a time.

This is how it can get through the work so quickly.


Removing a Blackberry Enterprise Server (BES) user

This quick how-to explains the easy task of how to remove a user from Blackberry Enterprise Server.

  • First of all login to or open the BES server console. If the BES MMC console is already open close it (quit) then launch it again. If the MMC is not open, open it, then close it and open it again. (Use the “Blackberry Manager” icon on the desktop or in the start menu to do this). You can also run “C:\Program Files\Research In Motion\BlackBerry Enterprise Server\BBMgr\Server\bbmgrw32.exe” if BES has been installed in its default location.
  • On the left hand side menu, expand “Servers” then expand “YourBESservername”. You should see a list of users on the right.
  • Find the user you are removing, highlight and right-click their name and then select “Delete user” When asked if you would also like to remove their data, select “yes”.
  • The user should now be removed from Exchange Blackberry services.