About Me

Hi, my name is Jonathan.

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

Picture of me speaking at WordCamp Europe contributor day in 2023
Profile photo courtesy Nilo Vélez

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 at Delicious Brains. About halfway through my time there the role changed to Senior Technical Writer.

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 supports 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, 2023), 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 flat white because I like the steamed milk texture but get a stronger taste of the espresso.

Latest Posts


  • Remembering ‘Why?’

    It is said you should start with ‘Why?’ Over the past few weeks I’ve gone through some drastic changes in my life. These events have forced me to stop and evaluate why I do what I do and if it all makes sense. Please bear with me for a moment while I explain. About 2…

  • Some days I hate PHP myself

    Some days I get why some developers hate on PHP Checking if a string exists in another string $string_found = stristr($text, $original_text); if( $string_found !== FALSE ) { // do stuff } instead of just being able to do $string_found = stristr($text, $original_text); if( $string_found ) { // do stuff } because of the fact…

  • A quick guide to some everyday Git commands

    When I first started developing code the idea of version control was pretty much unknown, especially in the world of web development. As I progressed through my career and worked at different software companies I learned as much as I could and I’ve now settled into the daily routine of committing, branching, pushing and pulling. While…

  • Opening your Divi Header and Footer icons in a new window.

    A few weeks ago I released the Atlantic Wave Social Media plugin for Divi. The plugin extends the built in Divi header and footer social media icon set by adding up to 13 additional social media icons. A customer recently asked me how it would be possible to open the social media links in a new…

  • Make your Divi Page Builder go large.

    FullScreenDiviPageBuilder

    I tend to prefer to use the full extent of whatever screen I am on to it’s fullest effect. Typically I have two screens, my 23inch widescreen monitor and my 17inch laptop screen. The monitor is for coding and all coding related things and the laptop screen is for testing in browsers as well as the…

  • Setting up a local development environment with Scotch Box

    Local Development

    Very recently I had the misfortune of being forced to uninstall Ubuntu from my laptop and go back to Windows. I won’t get into the reasons behind this, but the one thing I miss in the Windows environment is my LAMP (Linux/Apache/MySQL/PHP) stack and bash command line. Most web site hosts around the world use…

  • Adding CSS to your Custom Divi Modules

    Recently I posted on the topic of Building your own Divi Builder Modules. As a PHP developer first, in that article I focused lightly on the PHP side of things, how to setup the module code etc. Michelle Nunan from DiviSoup pointed out that it might be handy to know how to add custom CSS to…

  • Building your own Divi Builder Modules

    divi-modules

    I’ve recently been spending some time extending modules in the Divi Page Builder. I had a few requests from clients to either make changes to an existing module or create a new module with custom functionality. As always my first port of call was a Google Search. The results, while not abundant, did eventually lead me…

  • Automattic Code Wrangler Application

    My application for a position as a Code Wrangler at Automattic, the company started by WordPress co-founder Matt Mullenweg. Good day I’ve written this email in my head about 5 times, one for each year since 2010, when I first became aware of Automattic. Each time I never actually sit down, type it up and send…