Analytics spammers now use legit websites as referrals

Sigh. Where do I start on this? Everyone who owns a website these days and has some sort of analytics tool active has seen the lifehacĸer and ɢoogle domain spam (note the weird characters). For the last couple months, the amount of spam like this has been growing slowly but steady. Annoying, yes, but also very easy to filter out in your reports.

Today, however, I’ve stumbled upon something new. Google Analytics showed me a bunch of extra traffic over the past couple days. A quick look at where the traffic was coming from, showed that it was coming from Reddit. Okay, that’s interesting, as I hadn’t been active on Reddit for a while. Diving deeper in the referrals report, lead me to this Reddit thread (don’t click the link in the thread, but you can view the thread without risk).

Reddit thread being used as fake referral source
Should the Reddit thread go down, here is the screenshot. This is being used as a fake referral source, to tempt visitors into clicking on the spam link.

The Reddit thread links to one of the well known domain spam websites. This same thread is used as referral for over 1000 unique visitors to my humble website on a single day. The thread does not link to my website at all, so the referral is fake. But it did offer me the link to the spam website again, while I thought that I was just looking at a Reddit thread giving me a ton of new traffic… Continue reading Analytics spammers now use legit websites as referrals

Leaving the Listings project

I remember the feeling of pride, excitement and determination to make something great, in the months prior to the launch of Listings. The project was born out of frustrations with WP Job Manager being abandoned after the Automattic acquisition and the idea that we could do something better. We made a plan to setup a more generic listings experience, powered by niche specific implementations. Listings was born.

After a couple weeks of digging through the WP Job Manager code (which we forked Listings out of) we got a point where the plugin was ready to be viewed by the public. The first public beta version was available and we got a lot of press coverage, tweets, likes and everyone seemed to like the idea.

All this attention made us believe in the project even more. Listings was born out of a need, there is a massive target audience for each specific niche we wanted to target and people seemed to like our setup. We got Listings from initial idea to actually released project and were able to tick all boxes of our plan so far. I think I’ve never been more enthusiastic about a project, than I was about Listings. That’s why it stings so much that I have to step down as project lead. Continue reading Leaving the Listings project

The next chapter

In April of this year, Scott Basgaard and I started an adventure together. I became part of The Look and Feel as technical lead. We had all the right projects, exciting clients to work with and a lot of potential for our own products to launch.

Later on, Rob, Gareth and Jack joined the team and we had a lot of fun, while working on exciting stuff. I can think of nothing wrong about our current team, except for the fact that our plans for the future have started to differ. What is best for the team in the long run, is not best for my personal life and future career.

So, I have decided to leave The Look and Feel and become available for hire again. I’m actively looking for a new challenge and am looking forward to finding a new project to work on. Continue reading The next chapter

Bundling libraries is not overhead, it’s a best practice

It’s been a while since I last posted something about the whole dependencies horror that I’m still trying to deal with in the WordPress ecosystem. Justin Sternberg’s post on the future of the CMB2 library got the discussion going again and soon after, we were at the dependencies discussion again.

It was mainly the discussion about overhead in bundling code that made me want to write a long reply, because I disagree with this quote:

What I hate is seeing someone use cmb2 when their own plugin is ten lines. But that’s them not understanding libraries and weight.

This post started as a comment on Justin’s blog post, but I figured it would make a lot more sense as a post on my own blog as it covers a lot more than Justin’s initial question about CMB2. Here goes… Continue reading Bundling libraries is not overhead, it’s a best practice

Video of my Love-Hate Relationship Between Composer and WordPress presentation

The video of my presentation about the Love-Hate Relationship Between Composer and WordPress at WordCamp Netherlands this year has been published on WordPress.tv:

You can find the slides on Speakerdeck. It was a great audience with some really good questions that have given me plenty of food for thought regarding the whole subject. It’s too much to cover in this post, so I’ll be going in some more detail in separate posts soon. I think there is a bright future for Composer in the WordPress ecosystem, there are some things that need to change first though.

Launching a product in a crowded WordPress market

Today I published the pre launch page for my side project Lapisense. In case you missed it, it’s a hosted activation and updates API for WordPress based products. If you don’t like running a plugin that does this for you, Lapisense might be a nice fit for your products.

I got a ton of great feedback already, but one of the questions really stood out to me. Why did I launch a product in such a crowded market? There are competitors out there, WP Updates and Freemius to name a couple. Both are really solid services already. But still, I wanted to explore this market, because I think there is more to achieve. Continue reading Launching a product in a crowded WordPress market

Explaining the WordPress plugins dependencies problem

There is a lot of confusion in the WordPress ecosystem when it comes to the issues around bundling dependencies. Peter Suhm has published a detailed post about this exact issue: A Warning About Using Composer With WordPress, where I have left the following (partial) comment:

So imagine both of us loading library x in our plugins, both requiring a version that’s incompatible with each other. No matter how well tested your plugin is, if I get a chance to load my autoloader before yours, I can load a version of the library that is not compatible with yours and your plugin will break (at least, the end user will see it like that and the horror of finding the culprit begins)…

This obviously is not a Composer issue, but related to the way WordPress loads its plugins. It’s also not a well known issue, since Composer isn’t used a lot in the WordPress ecosystem (yet!), especially not in distributed plugins. But as Composer becomes more used, more collisions like this will happen. Without a proper dependency management system in place, this is really hard to solve.

My WordPress Composer Installer proof of concept is as close to solving this issue as I’ve ever been. If there is anyone more experienced with the plugins installer in WordPress and maybe knows their way around Composer as well, I could use some help. 🙂

Solving dependency management in WordPress plugins

I’ve been working on a proof of concept for solving dependency management in WordPress plugins for a while now. It was in a private repository on GitHub, where I would invite some people in to work out the most obvious issues, while keeping it a bit on the down-low (this is a big change, potentially, after all).

Now it’s time though. The WordPress Composer Installer repository is now open to the public. Note that this is not more than a proof of concept, albeit it a working one. There are some hoops to jump through to get this working, but all these steps can be automated once I make this a fully featured plugin.

Recent blog posts like Ryan McCue’s take on solving dependencies and Gary Pendergast’s response to that are likely to fire this discussion up again. I will publish a more detailed post about why I think this is important, but I’m on a short vacation while I’m typing this and should probably be out enjoying sunny London. ☀️

How to get yourself to do things

I struggle with being a procrastinator. I’ve become better at managing things to do over the years, but still often find myself in the “unproductive phase” as David Cain explains it in his excellent piece: How to get yourself to do things. Seriously, go read it.

When I read his post, it rings so many bells and it makes perfect sense. I probably should print his graphs and hang them on the wall as a constant reminder that the “productive phase” is never far away.

This is how you deal with negative feedback

This morning I found out that the Instagrate plugin I use to import my Instagram pictures in my Moblog category, adds an HTML comment with a link to their website in every single post they import. As you might understand, I wasn’t really pleased about that, so I tweeted:

This lead to a rather nice conversation with the developer of the plugin, who immediately pushed out a fix release that no longer adds this HTML comment to the posts. Minutes after, he pushed out another fix release that also removes the HTML comments for all posts it has ever imported.

Thank you Iain for being so kind and for the quick way you dealt with this issue. Instagrate is still the plugin I will recommend for importing Instagram pictures as blog posts.