Photo of Nathan Shubert-Harbison Nathan Shubert-Harbison

Recent posts

New plugin: Manager Role : A client-appropriate user role in WordPress

tl;dr I wrote a WordPress plugin that defines an appropriate user role for clients.

The CMS admin section has been a challenge for me building websites in the client services world. In a training session, I want to be able to tell a client that they can go ahead, change anything they see in the CMS. They can’t break the site, everything is safe to experiment with. I feel…

My battle with Spotlight

After an extremely frustrating week of debugging the strangest of PHP issues I’ve encountered, I’ve finally uncovered the problem. The tl;dr is when I wrote a file using file_put_contents(), other files in the same directory were having their access time updated. I was concerned PHP was doing far too much work and accessing other files, but I couldn’t figure out why. Turns out, it was just Spotlight indexing them. Read more about it on my Stack Overflow post if you’re curious. Frustrating to spend so much time on a bug like this one, but glad to have it sorted out.

PHP 7’s badass null coalesce operator

There’s a new PHP on the block, and it’s really, really fast. More than double the requests per second fast. 50% better memory use fast.

This speed increase will be felt everywhere, from small blogs to decoupled API driven interfaces. WordPress has been testing against PHP 7 for a while now, and I’ll be building new WordPress sites against it.

Hello operator

Speed aside, PHP 7 comes with one cool language…

WordPress automatic core updates and git : Making it work, like a fox

WordPress’s automatic core updates feature is an amazing boon to security. The WordPress core team is quick to squash vulnerabilities as it is, and automatic core updates mean that potential vulnerabilities are resolved on your own site before you even know they exist.

WordPress updating itself does create a challenge in git workflows though. The main problem is that typical git workflows can be broken by code changes taking place…

Librarian.php

I encountered a nagging problem in frontend development; how do you store code for common UI elements that are used across project? These are the elements you build in largely the same way time and time again. And related to that, if you create a UI module with the results of accessibility research, how do you store this best-practice code for all future projects where the same module is used? I wrote a tool to address this challenge, and am pleased to announce that it is now available on GitHub. This is the initial release of the tool and it has a long way to go, but I had a great time working on it and hope somebody else finds it as useful as I do.

Less creepy geolocation : Making it user initiated

You don’t have to dig too far into the HTML5 geolocation API before you find web developers asking the wrong question: how do you use the geolocation API without asking user permission?

Fortunately the geolocation API can’t be invoked without user permission, as mandated by the spec. I know I wouldn’t want web browsers sharing my exact location with any old website without my permission. But that leaves an…

Welcome to the new nathansh.com

This is exciting, I haven’t had a blog going for a while.

Back in the days of freelancing I blogged on my freelance site, Little Penguin Studio. Then, as I entered the agency world, I neglected to maintain my own blog, especially as I began to blog on the company’s site.

Fast forward to a few months ago when the company I work for, Domain7, reimagined their website. The new site…