About Me

Hi, my name is Jonathan.

I am a developer and writer from Cape Town, South Africa with a passion for open-source software.

Profile photo courtesy https://www.sitombe.com/

Developer Educator at Automattic

In May 2022 I joined Automattic as a full-time sponsored contributor to the WordPress project, working with the Training team on Learn WordPress. We create educational content for the WordPress community, and my focus is on developer-related content.

Joining the dotorg team at Automattic was a “coming home” of sorts, as I’ve made many friends in the WordPress space who work at Automattic, and now I get to be part of the open-source team that works on the WordPress open-source project full time.

Senior Technical Writer at Delicious Brains

In 2021 I decided to take my love of writing, my experience as a software developer, and my interest in the fields of education and developer communities and accepted a position as Developer Educator Senior Technical Writer at Delicious Brains.

Delicious Brains is a dedicated team of experts who love making software for their fellow WordPress developers. My job is to help them build amazing technical documentation and insightful developer-focused content that informs and delights our developer community.

Development Lead at Castos

From 2017 to 2020, I was Development Lead at Castos. Castos is a podcast hosting and analytics service that powers and supporters the Seriously Simple Podcasting plugin for WordPress

When I left, Castos had grown from just Craig and me to a distributed team of 12, the plugin was used by over 20 000 podcasters around the world, and over 10 000 active customers using the Castos service.

Expert at Codeable

From August 2016 to September 2020, I solved technical problems for clients from around the world through Codeable. I focused on plugin development (both custom plugins and plugin extensions) and theme development, specifically adding custom functionality to themes via child themes or plugins. As of the 1st of October 2020, I left active freelance development to focus solely on Castos.

Writer, Blogger, and Podcaster

Besides this blog, I have also written for the WordPress.com Go blog, the Jetpack blog, as well as Smashing Magazine, and WP Tavern.

In my spare time, I host a small WordPress focused podcast where I interview folks from all over doing interesting things with WordPress. If this is you, let’s chat.

Speaker

Whenever the opportunity provides itself, I try and speak at local events about various topics, including development, freelancing, PHP, WordPress, and Laravel. So far, I have spoken at WordCamp Europe (2019), WordCamp Cape Town (2016, 2018), WordCamp Johannesburg (2018, 2019), PHP South Africa (2017), and DevConf (2022).

WordPress contributor

WordPress has given me so much, so I do what I can to give back. I’m a community deputy, and I’ve been on or led the WordPress Cape Town organising team for three years. In September 2020, I stepped down from organising local WordPress meetups to focus on the WP Notify project.

Get in Touch

If you want to chat, feel free to find me on any of the following networks.

Alternatively, email me if you want to discuss a project, have a question, or want to say hi.

If anything you’ve found on this site was useful to you, and you want to say thanks, you can always buy me a coffee. I generally order an almond milk latte because I like the steamed milk texture but get a stronger taste of the espresso.

Latest Posts


  • Create an array containing the days of the week

    You could simply code: but thats the “noob” way, a real coder creates a function… Update: 13/05/2018 Sigh What was wrong with me back then, this would have been so much better. Keep it simple, stupid!

  • PHP.js

    This is something I came across a while ago, but it has really come in handy. It is a project that attempts to make many php functions available in javascript. As most php developers will at some point have to write some javascript, it is a very handy library. You can find it over at […]

  • MySQL: filtering results from a list of id's

    A short while ago I posted about testing if a variable exists in a list and I spoke about the MySQL “IN” keyword. I realised this week that not everyone knows about the MySQL “IN” keyword, so I’ve decided to explain this very handy SQL keyword. Lets say you have a user table with the […]

  • Life of a developer

    It has been a while since I have posted here, mainly due to the time consuming period that is the festive season and also because I am discovering that I am getting fairly annoyed by Drupal as a blog tool and am trying out the new WordPress as an alternative. For now I have a […]

  • Last day of the month

    Here’s one line of code to get the last day of a month: $last_day = date(‘t’, mktime(0, 0, 1, $month_variable, 1, $year_variable)); How much more difficult do you want it to be ???

  • Delving deeper into the PHP lake…testing if a variable exists in a list

    As a PHP developer of almost four years now, I often still come across little problems in coding that make me do the good ol Google search to find the answer. (someday I will have memorised the entire PHP manual, but today is not that day ;-). Anyway today I was asked about how to […]

  • Simple PHP increment function

    Whenever I have to output a numbered list of data I usually run the following code to achieve the required result. but I have discovered a lovely little function that does all this for me. now I simply call and it automatically outputs the next numeric. Great! Simple and easy to use…..that’s the way to […]

  • My first published article.

    Something of a first for me. I recently started playing around with the CakePHP framework again. I have had some (little) experience with it in the past and with the launch of two CakePHP books I decided it was high time I learned how to use this awesome framework properly. A few days later I […]