Sunday, 28 December 2014

Need to exclude referral spam from Analytics reports

It turns out that some unusual referral URLs in my Blog's Google Analytics reports a few weeks ago were not a one off anomaly by a sneaky spammer.  If I followed the referral URL I got forwarded on to Amazon with some affiliate details - so they'd get a kickback for any purchases I made.

Today I see over a hundred visits from the Russian city Samara, along with large numbers of referrals from domains that have nothing in common with the content of my blog.

I'm contemplating moving the blog to another platform so that I can have greater control over the behaviour for blocking dodgy referrers.  For the time being I will have to settle for adding some filters to the Google Analytics reports as these dodgy referrers come in - so far just blocking one city is sufficient.

I would have hoped that the spammer would realise that my blog does not publish a list of backlinks to sites that have linked to my posts, so there is no value in "visiting" from his dodgy sites.

Wednesday, 10 December 2014

Microservices vs Mechanical Sympathy

At what point does it make sense to split some functionality out to run in a separate process to be called upon over HTTP?

When the only driver is the single responsibility principle, I'm looking for a term that means the opposite of premature optimisation - premature over complication has a nice ring to it.

Why don't I like this?  Let me enumerate the ways:
  • Additional network IO
  • Additional processes
    • requiring memory
    • occupying CPU cores
  • Placing additional load on networking infrastructure
  • A potential point of failure
In addition to those runtime overheads, we have some development and deployment considerations:
  • Another artefact to deploy
  • Another service to test
  • Another stream in the continuous delivery pipeline

Tuesday, 2 December 2014

Mystical Secret to Speeding up Software Development - Stop Faking It

A few months ago we developed some functionality based on an unsupported non-production-ready service.

Unsurprisingly we are now in the process of re-writing the functionality to use a real implementation.

Hot tip for reducing the amount of time to deliver a software project - don't build on something that isn't going to exist when your system will be going live.

Coincidentally we have moved away from inserting fake data into our databases in development, QA and production environments.  Fake data doesn't belong in our live systems.

Our application doesn't need to insert data into the system, so we no longer need our data access permissions to have inappropriate permissions.