Discoverability with infinite scroll

Featured Imgs 11

How do you handle your link discoverability when also using infinite scroll.

As we know, Google has been ignoring link rel=prev/next for years.

A lot of my older content is showing up with no internal links.

I do have HTML page navigation but its hidden with display:none

Noindex AMP pages?

Featured Imgs 11

Is it appropriate to noindex AMP pages whose desktop canonicals are noindexed?

Currently, my valid but low-quality pages are noindexed. They point to an amphtml version, and that AMP page is noindexed as well.

Submit AMP page to Google Sitemap

Featured Imgs 11

Is there an advantage to submitting my AMP pages to my Google sitemap?

I am using <link rel="amphtml" ... but I was wondering if submitting them lead to faster discovery?

My AMP pages are starting to show up in Google Search Console Coverage for "Indexed, not submitted in sitemap"

However, I cannot confirm that their non-AMP canonicals are in the latest version of the sitemap that Google has crawled and parsed.

Does GeoIP ever change?

Category Image 041

We had a bug a little while back where we were accessing an old database for the GeoIP API.

That meant that, for users whose geolocation were mapped from their IP address, it was incorrect/unknown for IP subnets not in the database.

Now, 1-2 years later, can we go back and retroactively retrieve the correct location for each of those IP addresses with a more updated database? Or, is it possible, for example, that ISPs may recycle IP addresses across different cities/states?

INSERT INTO with LAST_INSERT_ID()

Category Image 101

My code has a query that looks like:

INSERT INTO table
VALUES (...)
ON DUPLICATE KEY UPDATE
    id = LAST_INSERT_ID(id),
    ...

id is a PRIMARY KEY.

My question is that I can't for anything remember why I have id = LAST_INSERT_ID(id). I wrote it years ago and it's not commented. Can anyone think of a reason why I was doing this?

Mobile-first Indexing

Featured Imgs 11

Just got a popup notification in my Google Search Console that says:

Your site has been switched to Mobile First Indexing
The majority of Google's crawl requests to your site will be made using a mobile crawler.

Switch date: July 10, 2018

The notification is just a little late to the party.

Delete duplicate rows in MySQL

Category Image 101

Sometimes you need to delete duplicate rows in a database :)

In the future, set UNIQUE keys when you need them :)

In the example below, we have a table appropriately named TABLE_NAME and there are multiple rows that have the same value for the duplicate_field field. In this example, we want to remove the ones where the id field is set to "remove". In other examples, you can pick any conditional you want when choosing which of the rows to remove or which to keep, including conditionals between them (e.g. foo.id < bar.id will keep the row with the highest id value and delete the others).

Alternatively, if you do want to add that UNIQUE index, you can do the following to brute force dropping duplicate rows:

ALTER IGNORE TABLE TABLE_NAME
ADD UNIQUE INDEX index_name (duplicate_field);

Control panel changes

Featured Imgs 23

I know its been a long time coming, but better late than never. In your control panel, you can now choose to hide your location from others in your member profile.