Life

Priorities and Setbacks

Well, four months since my last post, and the real keyword of this post is “underestimating”. Life has thrown me for a loop over the past 4 months, but it’s been a fun ride.

First, on December 15, we closed on our house. It’s an amazing house, and I have the best home office I could hope for. A beautiful view of the Smokies, with a decent view of all of downtown Lenoir City. To be honest, I don’t ever want to leave my office. It is worth waking up every day just to sit in my office and bask in the sun from all the windows. I still haven’t unpacked all my office things… but all the important stuff is present.

We didn’t take possession until mid January due to the prior owners’ schedule — all the better for us because we travelled as usual to Maryland for the holiday period. A great highlight was seeing the new Star Wars movie in IMAX at the Air and Space Museum in DC. But then, the cascade began. First, the hassle of moving enough things to the new house to be able to live. (Beds. Refrigerator.) Then, replacing items that weren’t worth moving. (New couch). Then, it started to feel like home.

In February, my already tenuous work relation with my employer-slash-largest client (what do you call a full time position when you’re a 1099?) completely dissolved. Several reasons, but mainly due to broken promises, which became evident that they weren’t going to change, followed by a mysteriously missing paycheck.

I took this as a sign to take a step back. I focused on rehabbing our old house (new carpet, paint, a lot of repair…) and I spent spring break just enjoying my son. I had focused so hard on work over the past 3 years that if we weren’t travelling, I didn’t really take vacation days with him when he had a day off school. It was an amazing experience, both to enjoy sitting outside on our porch, and just watching him play all day.

Then, I caught the flu. On the first day that I was truly bed-bound, I realized what it must be like for people to die of the flu, and I was convinced of my own mortality. But, I didn’t catch pneumonia or any other complication of the flu, and after 8 days of full bed rest, I survived again.

So here we are, four months later — and I’m moving into a different stage of my life — job hunting. I’ve run my own freelance business since 2011 — when I stumbled on and wrote my first WordPress theme — and now it’s time for me to find something more stable. Having a full-time client for most of 2015, has truly taught me that what I really want is something more stable. Answering to only one person or company, where they understand the extent of my workload. I’m great at excelling under pressure, but there’s a vast difference between having 10 jobs, prioritizing them and working through the time, and having 10 clients expecting you to give them each the same 8 hours. The fluctuations of freelance work over the past 5 years, and the pain of clients who have financially stiffed me after a large time investment on my part, have taught me a lot of lessons, and the final lesson was that it’s time to move on.

WordCamp, WordPress

WordCamp US 2015

My trip to WordCamp US in Philly was awesome, and a lot of fun. Like any technical conference, I got a lot out of the sessions, but I got even more out of the community interactions outside. I held back so many times from going to WordCamps because the more local ones to me didn’t seem to have “enough” developer oriented talks. After all my experiences at WordCamp US just talking to people, I think it is really important to still go to the other WordCamps. My old goal for 2016, which I set a while ago, was to give a talk at a technical conference. My new goal was to learn Javascript and the REST API inside and out – (and yes, I set that goal *before* Matt Mullenweg announced that every WordPress developer needed to have that goal). I think at this point, I’ll aim to do both.

I’ve always considered myself an excellent PHP developer, not very useful for Javascript, but more than one conversation I had yesterday at the official WCUS after party convinced me otherwise. I’ve done a lot of work with tapping WordPress’s PHP into external javascript APIs. It took me all day, and into dinner tonight, to realize exactly what I needed to do. I have a great idea for something that I’m pretty sure isn’t out there yet — so I’m setting the goal of writing an awesome plugin this week and submitting it to the repository. Well, if the plugin repository is anything like the theme repository, it will take a long time to go through review – so I’ll put it on Github and blog about it sooner. I don’t want to blog about it before I write it because it’s always better to see if it works the way I think it does, first. I would say, look for it this week — but who am I kidding? Between my kiddo’s birthday, closing on a new house, traveling for the holidays, and then moving — it’s going to be an intense month. Hopefully I won’t wait until after the move.

Any ideas of a good conference to speak at next year? Preferably one cheap for travel from East Tennessee? I’ve heard good things about WordCamp Atlanta, WordCamp Asheville…

Today was Contributor Day at WordCamp US. I wanted to work on Core, but I’m too intimidated by my lack of experience running VVV – so I decided to work on Documentation. Then I read something online about there not being a lot specific organized for Docs to work on, so I skipped it altogether and worked on Theme Review. I don’t think I had realized how much I like QA. I think it’s something I’ll definitely keep doing – a three month backlog for the theme repository is crazy long – I bet many developers give up hope before their theme is reviewed. I will keep doing my piece as time allows.

If you were not at Contributor Day and you have not contributed to WordPress, but you use it — I can’t imagine not giving back to the community. And some day, I’ll be contributing with things I write, not just QA.

WordPress

cPanel hacking of WordPress

Several months ago, I noticed that of the many websites I had on one server, one of them was not updating properly. In fact, it never updated WordPress, and it actually acted like there was no such thing as an update.

I forced an upgrade by uploading the new core via FTP, but as this was a live site, I didn’t want to do anything crazy to the database, or even take the site offline at all. Upgrading via FTP worked, but it still never flagged or showed that updates were needed, as time went on.

Usually, and this is seen on one old demo site, the dashboard will say the current version number, along with the button to update if one is available.

Also, navigating to the Upgrades page on the dashboard,

This was something that I did not have time to deal with. It was a minor issue, as it was only affecting a couple of sites. However, I stumbled across this blog today dealing with how cPanel had been changing Core to prevent upgrades. Suddenly, I realized what was happening.

It turned out the culprit in this case wasn’t even cPanel – it was a GoDaddy plugin. What’s weird is that the site had never been on GoDaddy. It was once on MediaTemple, early on, and I’m thinking that’s a possible culprit since they’re related. It has been on multiple hosts, and I can’t verify how it happened at all, but there was a plugin placed in the mu-plugins folder – which was why the manual FTP updates hadn’t fixed a thing! Due to the above blog post I was able to search on various terms, and I located the mu-plugins GoDaddy plugin by searching for “core_upgrade”.

Header information from the plugin:


/*
Plugin Name: System Plugin
Description:
Author:
Plugin URI:
Author URI:
Version:
Text Domain: gd_system
Domain Path: /gd-system-plugin/lang
*/

Offending item snippet:


// Don't auto upgrade core
add_filter( 'auto_update_core', '__return_false' );
add_filter( 'pre_site_transient_update_core', create_function( '', 'global $wp_version; $x = new stdClass(); $x->version_checked = $wp_version; return $x;' ) );
add_filter( 'user_has_cap', array( $this, 'block_core_upgrades' ), 10, 3 );

// Use default WP settings for these three
// add_filter( 'auto_update_plugin', '__return_false' );
// add_filter( 'auto_update_theme', '__return_false' );

// Disable e-mails 3.7 Beta -> RC
add_filter( 'automatic_updates_send_email', '__return_false' );

// Disable e-mails 3.7 RC -> Final
add_filter( 'enable_auto_upgrade_email', '__return_false' );

// No debug e-mails
add_filter( 'automatic_updates_send_debug_email', '__return_false' );

// 3.7 Final filter
add_filter( 'auto_core_update_send_email', '__return_false' );
}

As it was the only mu-plugin, I deleted the whole mu-plugins directory from the installation to remove all the offending code. Magically… we have an update button now, and are happily running the very latest version of WordPress.

WordPress

WordPress 4.3 and the little joys in life

As someone who deploys a lot of WordPress sites over time, rather than just maintaining a couple large sites, there are two major (major to me!) changes coming in WordPress 4.3 that I am very happy about.

1) Comments are now turned off by default.

As anyone who launches many non-blog websites with WordPress knows, one big step in a site launch is deactivating comments everywhere. We suggest every user have a blog, because blog posts increase total website word count which can increase SEO and make a site more popular. However, most companies that might be convinced to post a blog once a week are not ready for the headache of regulating comments. Many don’t want to deal with comments at all – and certainly not on “Pages” of the site. One big step in every site staging or launch has been removing comments. It’s so exciting that this step gets to leave my workflow. No more headaches when someone goes in and adds hundreds of pages/posts before turning off comments, causing the need to mass edit in the database.

2) Favicon support.

As someone who has attempted to provide favicon support over time with customizer options for users, this new favicon option will be much better, and I don’t have to worry about it! Integrating Favicon support is awesome, and just one more thing to be really, really excited about.