PhpStorm and PHPCodeSniffer on Windows

I’ve been wanting to get onto PHPCS for quite some time now. While reading a blog post discussing it, I decided it was now or never. I should have started using PHPCS a while ago anyway…

So, in order to get things up and running, I did a quick Google search and ended up finding a pretty good tutorial, except that it is slightly outdated. Some of the instructions did not match the latest version of PhpStorm.

The article is How to Setup PHP Code Sniffer in Phpstorm on a Windows Machine from W3Guy.com.

NOTE: At the time of writing this article, I was running PhpStorm version 2016.2.1.

Most of the instructions are correct, except for a couple of them. Here is an updated version of the outdated steps. Also, you’ll need to have PEAR installed on your local machine beforehand.

Step 2

You will actually need to copy all the WordPress-xxx directories in CodeSniffer’s Standards directory as they rely on one another (otherwise you’ll get errors in PhpStorm).

Also, because I’m only using standard PHP on my local machine (no XAMPP or any pre-packaged web server), […]

Continue reading →


Installing PEAR on Windows

Installing PEAR on Windows

I have been using phpDocumentor on my Windows laptop lately, and one of the requirements is to have PEAR installed.

While this is a pretty simple process on Linux, it gets a little more complex on Windows.

Actually, it is not that complex. It is just difficult to find the proper resources (or at least it was for me).

I did find a number of posts / tutorials explaining the manual process of installing PEAR, but:

  1. It introduces possibilities of mishaps,
  2. I prefer when things are automated πŸ˜‰

Automatically Install PEAR on Windows

First of all, I should specify that this was done on a Windows 10 Home x64 install with PHP 7.0.6. No WAMP, no MAMP, just PHP.

There are basically 2 steps required to install PEAR:

  1. Download the “installer”
  2. Run it
  3. Add the environment variables (yeah that’s more than 2 steps, but this one is optional. Bonus!)

Download go-pear.phar

PHP.net provides a super handy phar file that will allow you to install PEAR on your system in just one command line. […]

Continue reading →


EasyEngine or How I Gained 1s in Page Load Time

EasyEngine or How I Gained 1s in Page Load Time

My blog has been hosted on various machines from various providers. It is only recently that I started to aim for performance, though.

For the last couple of years, it has been hosted with EvxOnline. I then switched to a DigitalOcean (affiliate link, direct link available in article footer) droplet with ServerPilot.

While performance was definitely better with DigitalOcean + ServerPilot compared to EvxOnline, I wanted something even faster.

I have had my eyes on EasyEngine for a little while but didn’t have the chance to really try it yet. So the day I realized I made a typo in my ServerPilot’s app name, the maniac in me didn’t need another excuse to get started with a new stack.

EasyEngine vs ServerPilot

First of all, I need to say that I really like ServerPilot. I’ve used it for many client and personal projects. It is extremely easy to setup, the stack performs really well, and it keeps your server up to date. If you’re looking for good performance without getting your hands too dirty, go for ServerPilot.

If you want to push things a little further however, […]

Continue reading →


Je t’aime… moi non plus

As a plugin developer who released a few plugins on WordPress.org, I sometimes feel like the song says: Je t’aime? moi non plus. Well, sexual content aside :p

There are two questions I’ve been asking myself a lot lately. Dan Cameron’s post What Now? No Way? Huh? made me feel that maybe others are asking themselves those questions too.

Disclaimer: this post is not at all a critic of the current system. I am not trying to provoke anyone in the community. I am merely trying to get answers to two selfish questions I’ve been asking myslef:

  1. Who am I in the WordPress community?
  2. What are my “rights”?

Prelude

While this is not the only thing I’ve been wondering about, this post was inspired by how incentivized reviews are being handled.

My first interaction with the .org team on this matter dates back to April 2016 when I released, in all honesty, a small library, WP Review Me, where discount codes were automatically given in exchange for a review. […]

Continue reading →


Get More Reviews of your WordPress Theme or Plugin

Get More Reviews of your WordPress Theme or Plugin

So you just got this new WordPress theme or plugin approved by the review team. Exciting!

You get your first downloads and you watch the stats all the time. What are you waiting for? We all know it: reviews! Especially 5 stars reviews πŸ˜‰

Reviews are Everything

Indeed, reviews are often what convinces the user to use your product… or not. That’s why all authors are striving for good reviews.

There is another thing we all know, though: unsatisfied users tend to review more than satisfied users. This means that you can easily end up with some bad reviews even though your product is good and the majority of users are happy.

What can you do about?

It may sound simple (and it is) but you just need to ask your users to review your product.

WP Review Me

This is where this small library I wrote becomes your best marketing tool!

It does a very simple job: X days (you can configure X) after the theme/plugin was installed, the user will be prompted to leave a review on WordPress.org.

Technically speaking, […]

Continue reading →


NameCheap FreeDNS and .is Domains

One more NameCheap-related article. Yeah, I’m a big fan of their services!

TL;DR: FreeDNS can’t manage .is domains.

For some client work, I needed to use NameCheap’s FreeDNS service to manage a domain name with the .is extension.

After some back and fourth with the domain registrar to try and switch the DNS to FreeDNS, I finally got in touch with NameCheap’s support team and started what ended up being a 1-hour conversation on their live chat.

By investigating the issue bits by bits, we came to the conclusion that FreeDNS can’t manage .is domain names because it doesn’t fit the .is registry requirements.

The part that blocks everything is that FreeDNS’s nameservers’ TTL is set to 1800 seconds while the .is registry requires at least 86400 seconds. The NS‘s TTL can’t be changed, even internally by the NameCheap’s team.

So, sadly, a .is domain name can’t be managed by NameCheap πŸ™


Easy Dismissible Notices in WordPress

WordPress admin notices are great. They’re extremely handy for communicating an important message to the users of your theme or plugin.

Admin notices can be used for sharing an information, warning of a problem, etc. WordPress made is very easy to register with the admin_notices hook. There is one extremely important thing though: admin notice dismissal.

Dismiss an Admin Notice

Have you ever used a plugin that displays a notice that can’t be dismissed? Or a notice that comes back on every page load, whether or not you have dismissed it already? What a pain… Nobody wants that.

In WordPress 4.2, WordPress introduced dismissible admin notices. This is basically a front-end mechanism that hides a notice when you click the close button. But again, refresh the page and the notice is back.

Persistent Notices Dismissal

What you want is for a notice to be permanently dismissed once this close button is clicked. This is exactly what WP Dismissible Notices Handler does.

After writing admin notices dismissal functions over and over I realize how dumb I was for not having a re-usable library. […]

Continue reading →


(My) Perfect WordPress Development Environment

I’ve been developing WordPress stuff for a few years now. During all this time, my development toolkit changed. A lot.

As I learnt new skills, I discovered new tools. This usually resulted in a gain of productivity, improved skills, and realizing better tools were available.

Even though this cycle definitely has a limit, I think I still have some nice things to discover. Docker for instance is something I’d love to have the time to dive into. Capistrano is also something I really want to learn more about.

As of today though, I’m really happy with my development environment. Here is what it looks like…

Development Environment

In this post I’m focusing exclusively on the environment and not the development tools per se. That could be a topic for another time…

My current development environment is composed of 4 tools (excluding all the basics like Git): Vagrant, Varying Vagrant Vagrants (VVV), Variable VVV (VV) and VVV Dashboard.

This set of tools makes it super easy to setup a production-like dev server, create new site “on the fly” and manage all the resulting mess πŸ˜‰

VirtualBox

Yes I know, […]

Continue reading →


MailGun and NameCheap: SPF and DKIM Validation

When working on client projects, e-mail delivery is a primary concern. Most of my clients (most people in general I assume) use e-mail quite extensively for lead generation on their site.

Making sure e-mails are correctly delivered is crucial. Unfortunately, the basic way e-mails are sent out with website is quite unreliable. The common function used in PHP for instance is mail(). As a WordPress specialist, I very often work with its WordPress wrapper wp_mail().

What this function does is send the e-mails using the hosting server itself. This is very dangerous, especially when using shared hosting. Poor delivery and blacklisting are the two major risks.

Email Delivery Services

I’m not going to list all the reasons why you shouldn’t use a hosting server to send out e-mails. I’m just going to say that it is more than recommended to use a dedicated e-mail delivery service. There are plenty available. Mandrill, MailGun, SendGrid, MailJet…

For all the small clients I’ve been working with, I’ve always used Mandrill (made by MailChimp). They offered a pretty nice free plan that was more than enough for small businesses. However, […]

Continue reading →


A New About Page

A New About Page

A couple of days ago I published a new “about” page for introducing myself.

I’ve always struggled to find the best way to brand myself in a way that completely satisfied me. In the past, I only had a landing page linking to the various profiles and networks I wanted to highlight like WordPress.org, GitHub, Twitter, etc.

However, I also wanted a space where I could write. I sometimes feel the need to write about things, or express a point of view about a trending topic. For that, I need a blog where I can write whatever I want, whenever I want. The downsides are:

  1. I am not a regular writer,
  2. I am not a native English speaker, which means my writing is not too pleasant to read

For those reasons I’ve been tempted to just close the blog and go back to a simpler landing page on this domain. However, I know that there’s going to be a day where I want to write something and I’ll be wondering where to do that. Again, not being a native English speaker kind of stops me from writing on Medium or the likes. […]

Continue reading →