Google Software

The Enshittification Lifecycle of SaaS

Here is how platforms die: First, they are good to their users; then they abuse their users to make things better for their business customers; finally, they abuse those business customers to claw back all the value for themselves. Then, they die.


This is enshittification: Surpluses are first directed to users; then, once they’re locked in, surpluses go to suppliers; then once they’re locked in, the surplus is handed to shareholders and the platform becomes a useless pile of shit. From mobile app stores to Steam, from Facebook to Twitter, this is the enshittification lifecycle.

Source: Kottke, via Pluralistic
Errors Linux Software

Mounting a whole disk with partitions

I reinstalled one of my RPis (moving from 32 to 64 bit).

Before doing the full reinstall, I took a dump (dd) of my disk.

Usually, I create one per partition, but this was the Christmas season, and I was half occupied with feasting and half occupied with entertaining Ila. So, mistakes were made.

I ran dd if=/dev/sdb of=backup.img — but this means I can’t mount the disk directly, as it’s not a partition:

# mount backup.img /tmp/disk
mount: /tmp/disk: wrong fs type, bad option, bad superblock on /dev/loop0, missing codepage or helper program, or other error.

I should’ve dd’d /dev/sdb2 instead of the entire disk.

All right, so let’s figure out what can be done… First, let’s look at the content of the image:

# fdisk -l backup.img
Disk backup.img: 111.8 GiB, 120040980480 bytes, 234455040 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x8297a463

Device          Boot  Start      End  Sectors  Size Id Type
backup.img1 *      8192   532479   524288  256M  c W95 FAT32 (LBA)
backup.img2      532480 34078199 33545720   16G 83 Linux

So, we can probably mount starting from sector 532480.

We can see that the sector size is 512 (which, I think, is the default for most). So, if we multiply 512 * 532480 we get 272629760.

Now we can mount the disk using the following command:

mount -o loop,offset=272629760 backup.img /tmp/disk

And that should do it.

The 2nd partition (the one with data) is now mounted and accessible under /tmp/disk.

If you need the first partition, the same can be done by running 512 * 8192 = 4194304; the following command mounts the boot partition:

mount -o loop,offset=4194304 backup.img /tmp/disk.
Errors Linux Software

NetworkManager exit status 1

Recently reinstalled NextDNS on a RPi4 64bit and came across this error:

# nextdns activate
Error: NetworkManager resolver management: exit status 1

It seems like NextDNS was actually running, but just throwing an error when running nextdns activate. Restarting did seem to work without throwing any error.

The logs showed the same error:

Dec 20 14:06:20 tyr nextdns[5753]: Starting NextDNS 1.38.0/linux on :53
Dec 20 14:06:20 tyr nextdns[5753]: Listening on TCP/:53
Dec 20 14:06:20 tyr nextdns[5753]: Starting mDNS discovery
Dec 20 14:06:20 tyr nextdns[5753]: Listening on UDP/:53
Dec 20 14:06:21 tyr nextdns[5753]: Connected (con=13ms tls=58ms, TCP, TLS13)
Dec 20 14:06:21 tyr nextdns[5753]: Connected (con=12ms tls=28ms, TCP, TLS13)
Dec 20 14:06:21 tyr nextdns[5753]: Switching endpoint:,2a04:b80:1:30::2
Dec 20 14:06:25 tyr nextdns[5753]: Setting up router
Dec 20 14:06:25 tyr nextdns[5753]: Activating
Dec 20 14:06:25 tyr nextdns[5753]: Activate: NetworkManager resolver management: exit status 1

The solution was (as root):

apt install network-manager resolvconf -y
systemctl enable NetworkManager
systemctl start NetworkManager
nextdns activate

Looks like, instead of resolvconf, openresolv was installed.

First time I heard about openresolv; usually resolvconf is the default. Not entirely sure if this was the culprit (and NetworkManager not being started) but the errors are now gone.

Google Software

Google TV recommendations

Google recently updated their Google TV, to include “in your face” supposedly recommendations.

I don’t mind recommendations if…:

a/ they are useful (i.e. I don’t see how kid shows are something I’d be interested in; and Google has no idea Ila exists, and she’s at least 2-3 years too young to watch those shows anyway).

b/ the recommendations would be for apps and subscriptions I actually have. Don’t recommend me something on Amazon Prime if I don’t have Amazon Prime installed, nor an active subscription. Idem dito for Disney+.

Mumu is not impressed. And neither am I. Didn’t even know YouTube had TV Series and I honestly couldn’t care less.

Google had recommendations before but at the bottom of the app list. It was not so much in your face. Now it’s all the way on top and I need to click 2x down on the remote before getting access to the apps (Netflix, Kodi, Youtube, etc).

So far the best method I found was to enable your Google TV in apps-only mode. It turns off ALL recommendations (so your home screen becomes rather bare; but at least less clicking). Note that the article doesn’t mention rebooting the device; but I had to restart it to get rid of all the ads recommendations.

Turn on Apps only mode:

1. On a Google TV device, from the home screen, scroll to your profile.
2. Select Settings.
3. Select Accounts & Sign In.
4. Select your profile.
5. Select Apps only mode and then Continue.
7. Reboot the device
Software www


It’s now been roughly 6 months I’ve switched from DuckDuckGo to Kagi. I started paying right away after roughly the one month trial.

I had not been very happy with DDG; mostly the results were very low quality (having to switch back to Google one too many times; results often lagged behind by months of publishing), many search bugs, and there’s been that thing with Bing advertising, and generally not seeing many improvements over the ~2 years I tried to use it full-time.

Kagi, on the other hand, has his search engine worked out. I know they also pull data from Bing, but also various other sources (apparently that includes Google) and their own scraper (Teclis, TinyGem), etc.

You can compare the Google and Kagi results. While not entirely the same, I don’t think Google‘s are better than Kagi‘s.

So search is really good and I very very rarely ever need to head back to Google. Only for very obscure errors with very few results, and Google almost never has a better answer.

It also adds some cool other features, like rewriting URLs. URLs getting rewritten to

For example, I run my own Libreddit, so when search results include reddit, I can now redirect to my own Reddit instance (sorry, you won’t have access).

My current rewrite rules. Rewrite AMP and reddit.

There’s a bunch of other cool stuff, like Bangs (short codes that would redirect directly to a site, for example w for wiki — so w flightradar would show this result instantly; and there’s more like hackernews, reddit, google, etc).

You can also lower priority of certain sites. Seeing too much Tiktok or Pinterest? Want to boost Hackernew results? All possible!

To make it work on iOS, you need to install a browser extension, but that works relatively well (it rewrites your search from Google to Kagi).

I was a bit apprehensive as it’s a very small team, and they are also trying to reinvent the browser space with Orion, which is a cut-throat tough market to get in. Two massive enterprises that would need a lot of funding and a lot of dev time.

Orion is based on Safari, and far from good enough to replace Firefox, but I’m actually mildly enthusiastic about this project as well.

The company is very transparent and there’s clear progress. If you want to get involved, they also have a Discord and a feedback/bug forum.

They don’t log your search queries, but show your total searches and what it costs them to handle those searches (server (GCP), API costs, etc).

I’m considering a family plan and will force Shan to switch once released.

So, all things considered, quite excited about this. Looking forward to see if they can revolutionise search. And I truly hope they make it.

The only thing I don’t like is that their logo looks too much like Google’s… 🙈