Joining Automattic

After the recent acquisition of WooThemes by Automattic, I’ve officially accepted an offer from Automattic to be part of their team as part of the acquisition.

And so ends my 6 year journey with WooThemes, yet it carries on as I’ll still be working on WooThemes products like FlexSlider for the foreseeable future. Follow me on Github for any open source stuff I do in the future.

What does change is my involvement in side projects.

So, I’m officially making my jQuery plugin free as of 1 July 2015, and I’ll be selling off a bunch of my WordPress and software related domains and websites.

I’m also going to do a complete refresh of this site, the content will remain but it will be more blog focused, specifically on WordPress and JavaScript.

Here is a list of stuff for sale, preferably to people wanting to carry on with what I had envisioned for the sites, I’ll add links as soon as they go up for auction, mostly on Flippa.com

  1. GPLCode.com – Bid Now to Own!
  2. GPLMarketplace.com
  3. CapeGospel.com
  4. JoinWP.com
  5. WPJoin.com

Jeff.runs()

So recently I’ve taken up running. Not as a form of escapism as some people do, but more as a by product of becoming healthier and staying in shape. I’ve been on and off at the gym over the last year, and I’ve found that I’ve enjoyed my time on the treadmill more than any other activity.

I set a goal to do a half marathon next year sometime, most likely the 2 Oceans (my sister did an epic run this year of the ultra marathon, coming 70th!!) and today was the start of my journey. I ran the 10km Gun Run today, and had a great time! I managed to smash the goal I set, I was aiming for a sub 60 minute run and ended up doing a 53:11!!

The nice thing is I have experienced family members who I can chat to for advice as they’ve pretty much done every kind of half marathon there is! And after taking my uncle’s advice today – I ended up improved my overall time by 6 minutes – that’s massive.

So…as with most of my posts, there’s a little lesson at the end, and so I would encourage everyone to get advice from experienced people, and then try it out! You might be surprised at the result!

Appreciation of Sight

For most of us that work online, there are a few things that we do everyday that we take for granted. Things like having a roof over our heads, food on the table, and access to the internet. But the last week has highlighted something else in my life – my sight.

See, last week a blood vessel in right eye burst – not a serious condition (a subconjunctival hemorrhage) – but when you stare at a screen for 8+ hours a day, it can become a real problem. I found myself struggling to concentrate and sit in front of my machine for long periods of time.

So even though this might seem like a trivial thing to you, take some time to appreciate the fact that you can see, that you can appreciate the complexities of the code you write, the designs you mockup, the articles that you write – because it really really sucks when you lose sight of enjoying those things.

Why Themeforest authors why….

So….all this commotion regarding the Slider Revolution plugin being bundled in themes has caused quite a few headaches for people. Myself included…

I spent a fair chunk of an evening this week “updating” a friends (staging) site using this theme -> http://themeforest.net/item/chariot-professional-responsive-portfolio-theme/5817175 to make 100% sure it was secure.

Here’s what I had to do…

  1. Backup the site – obviously
  2. Download the latest theme package from ThemeForest – fair enough
  3. Deactivate all the plugins – ok then…
  4. Delete all the plugins – huh? why? Oh right….cos you have your own custom installation of plugins….right….
  5. Upload the new theme – smooth, theme options maintained, hope restored.
  6. Reinstall and active the new versions of the plugins – worked well.
  7. Pour a double whiskey – because half the freaking content (such as slider images) is now gone/broken/i don’t know

So yes, I’m at a point of frustration now, because even as a seasoned developer on over 100 themes I now have to sift through backups of what SHOULD have been a smooth upgrade process just to fix the content. Loving it.

And before you ask, fortunately this wasn’t a live site, it’s a staging site, so luckily his live site isn’t buggered. And it’s not like I don’t like the Theme, just to be clear….just not this crappy plugin activation method.

Well now…that was fun….maybe I should start a marketplace?

Jetpack Photon image_downsize() issue

Sometimes in WordPress code you have the need to get an attached image, for example in a featured slider. To do this we make use of the wp_get_attachment_image_src() function.

The reason we do this is to grab the image properties such as height etc instead of just the url in order to add a property for dynamic slide heights.

However, there is a problem with this when a user is using Jetpack and the Photon service. Jetpack uses a function called image_downsize() which does not return the required image object/array. It simply returns the url.

So in the example below, height would not normally be able to be returned with Jetpack active:

$featured_height_id = get_post_thumbnail_id();
$featured_height = wp_get_attachment_image_src( $featured_height_id, 'full' );
$featured_height = ' height: ' . $featured_height[ 2 ] . 'px;';

However, I’ve added 2 lines that fixes this -the add_filter and remove_filter for jetpack_photon_override_image_downsize action.

$featured_height_id = get_post_thumbnail_id();
add_filter( 'jetpack_photon_override_image_downsize', '__return_true' );
$featured_height = wp_get_attachment_image_src( $featured_height_id, 'full' );
remove_filter( 'jetpack_photon_override_image_downsize', '__return_true' );
$featured_height = ' height: ' . $featured_height[ 2 ] . 'px;';

And before you point out that this is not technically Jetpack’s fault – it only occurs when using Jetpack Photon. Deactivate the plugin and all is fine and dandy. image_downsize() is in WordPress core (see link below).

Related Github issue here -> https://github.com/Automattic/jetpack/issues/607

image_downsize() codex -> http://codex.wordpress.org/Function_Reference/image_downsize

Knowledge Revenue, Twitter, and APIs

I saw this tweet today and it reminded about something I realized quite a long time ago about online companies and knowledge revenue.

APIs

If you are an online service and you are gathering user information, or even information about how people interact with your service, there will always be the possibility to monetize that (assuming you have your privacy policies in place).

That means that, in theory, every online company has the potential to create a knowledge revenue stream simply by creating a relevant API for 3rd parties to access.

The Value in Community

The beauty about using API’s is that it allows 3rd parties to start building a community around it; by building apps, mashups with other services, creating extensions for the core product, etc etc.  Oh, and not to mention the benefit of having the 3rd parties drive business to your company – because it will benefit them and your company.

Take WooCommerce for example (this example is close to home for me, working for WooThemes) – the core product is free, WooThemes makes no money from it, but the beautiful thing about WooCommerce is how it has been developed; it allows you as a developer to “extend” it by building plugins that add or modify the way it works.  And that has helped grow a very large ecosystem around it.

Knowledge Revenue is Gold

So, in summing up…Twitter & Facebook…are pretty much like Google (on a lesser scale) as they are all actually mining information.  They aren’t just a web app, they are semi-intelligent data miners, and that information is gold.

And just like a gold mine, not only are they listed on the stock exchange, but you can expect to pay for that knowledge/gold in the future, and in turn making them a lot of money.

Offline Support

Four years ago this month I joined WooThemes. The time has gone pretty quickly and I’ve had some great times in the office, interacting with our remote staff, and of course the WooTrips 🙂

But what most people don’t know is how incredibly scary it was for me to take the job back then.

So here’s some context; my wife and I we’re newlyweds, married for less than six months and I was in a senior position at a well known development agency in Cape Town – WooThemes was not well known in South Africa at all, and the employees numbered 6. Oh, and there was no office phone number….and they were a fully online business….in South Africa….what the??

The general response I got from most people at the time was “that doesn’t sound right, it sounds very risky” – laughable now, but not back then.

The difference was that I’d used several WooThemes, I knew their quality, so I was a definitely a fan, but most importantly I had the unwavering support of my wife. I actually never applied for the job until applications had unofficially closed (I found this out after I was hired).  As I recall, it was a Sunday night when I told my wife about the position and she said “do it!”

So I applied, got a call the next day, went in for the interview the following day and was offered the job on the spot! Crazy but true.

2013-11-06 18.11.53

My wife has supported me every step of the way in my career, even when I’ve make mistakes, so what I’m saying is never underestimate those who support you and who you support – encourage at every opportunity, you never know who you might inspire!

Ghost Reporting

So late last week, over at WooThemes, we released a free theme for the latest content publishing platform, Ghost, and it’s rather appropriately called “Swayze” (in honour of Patrick Swayze’s appearance in the movie “Ghost“).

For those that don’t know, Ghost is a platform built on top of NodeJS mostly using the Express framework. Now I’ve been dabbling in Node at Woo, building stuff for our support staff in the Zendesk support platform, as well as another internal system that I’m (still) trying to master.

However, building themes for Ghost is actually quite a simple process! All you really need to do is read the docs 🙂 and learn how to use the Handlebars framework. That’s it! My part in the process of releasing the theme was simple – after Cobus had build the design into straight HTML markup, I learnt the templating system and converted the html into the .hbs layouts and integrated the Ghost and Handlebars tags.

Go check it out here and let me know what you think!

WordCamp Cape Town 2013 is here!

WordCamp Cape Town 2013 is only a few days away! A few of us local Capetonian WordPress community members have been organizing this years’ edition after last years’ organizer decided not to pursue it this year, and it’s been a great experience getting to grips with organizing a conference.

So now we are in the final stretch, grab your tickets now, check out the awesome speakers and the lineups, and come say hi on Thursday – I’ll be roaming around as a happiness expert and coordinating a few of the volunteers. WordCamp is all about the community, so let’s connect, have some fun and be inspired!

[box type=”tick” size=”large” border=”full”]Buy WordCamp Cape Town 2013 Tickets[/box]

[box type=”info” size=”large” border=”full”]See the WordCamp Cape Town 2013 Speakers[/box]

[box type=”info” size=”large” border=”full”]Check out the WordCamp Cape Town 2013 Schedule[/box]

 

 

 

WordPress Heartbeat API example plugin – Pulse

One of the most important experiences for me at this years WordCamp Europe was meeting other people, specifically members of the WooTeam who I haven’t met before. One of them was Remi Corson, who after overhearing a chat I was having with Patrick Rauland, sat me down and showed me what he was working on with Heartbeat API.

It was an awesome chat! The power of collaboration between WordPress community members is so cool 🙂 and in the spirit of collaboration, I’ve decided to release an open source plugin that will help you get started with your own Heartbeat API development.

So check it out on Github, fork it, submit some pull requests, if we can make life easier for other WordPress developers wanting to use Heartbeat API in their products then that’s what I’m hoping for!

In the long term I’d like to contribute back to the Heartbeat API docs because they are severely lacking at the moment!

Pulse – Heartbeat API example plugin