Rick Hurst Full-Stack Developer in Bristol, UK

Menu

Category: Uncategorized

Just Launched: A Free Advanced WordPress REST API Course for Developers Who Want to Build Big Things

If you’re a developer working with WordPress and you’ve ever thought, “admin-ajax is clunky, and I need more control”, or “why would I use thw WordPress REST API when GraphQL exists”, then you’ll want to check this out. I’ve just wrapped up a full-length, fully free course called Mastering the WordPress REST API, built specifically for developers who want to get serious about API-driven architecture in WordPress.

This isn’t a beginner’s walkthrough of GET requests or basic endpoints. It’s aimed at developers with a solid grasp of WordPress and PHP, who want to dive into enterprise-level development using the REST API — everything from authentication and security, to performance optimisation, custom endpoint creation, and decoupled JavaScript frontends.

Why This Course Exists

Let’s be honest — most of the WordPress REST API tutorials out there barely scratch the surface. They stop right when things start getting interesting.

The course is built from the ground up with a developer-first mindset. You’ll learn how to create custom API routes, authenticate and authorise users using secure strategies, integrate with third-party APIs, and build scalable, decoupled architectures with React or Vue. There’s even a full section on debugging and testing, which is where most online resources tend to fizzle out.

What’s Inside

The course covers the full spectrum of the WordPress REST API and how it fits into real-world, modern development workflows. It includes detailed modules on:

  • REST API Foundations – Understanding REST vs traditional methods, schema discovery, extending the API, and exploring core endpoints.
  • Authentication Strategies – Implementing and comparing methods like cookies and nonces, application passwords, JWT, and OAuth 2.0.
  • Security Best Practices – Permission callbacks, input sanitisation, output validation, rate limiting, monitoring, and more.
  • Enterprise Performance & Integration – Caching strategies, transient and object caching, API versioning, and handling deprecated endpoints.
  • JavaScript & Decoupled Architectures – How the REST API supports decoupled frontends, with hands-on labs using React and JWT-based auth flows.
  • Advanced Customisation – Creating nested data structures, working with CPTs and taxonomies, adding custom fields and filters.
  • Testing, Debugging & Scaling – Writing unit and integration tests, mocking responses, performance testing, and architecture for high-traffic environments.

Each section includes practical labs and real-world examples — including a couple of case studies drawn from actual enterprise projects I’ve worked on.

Who It’s For

If you’re already working in WordPress and are comfortable building custom plugins or themes, this course will help you level up. It’s especially useful for devs working on headless WordPress applications, integrating WordPress with other platforms, or delivering high-traffic, API-driven sites that need to scale sensibly.

And Yes – It’s Completely Free

No hidden paywalls. No “free sample, full course behind a paywall” rubbish. This is a proper, full-fat developer course. Think of it as a contribution to the WordPress community — the kind of thing I wish existed when I first started getting into REST API work in WordPress.

Take the Course

The full course is available now: https://learn.wpvip.com/course/mastering-the-wordpress-rest-api/
This is part of a series of free Advanced WordPress Developer courses on VIP Learn.

I’ll be updating it as the ecosystem evolves, especially as WordPress core and major frameworks change. Feedback is welcome — I’m always up for a chat about performance bottlenecks or obscure JWT bugs.

Upgrading to OSX Mavericks

I’m a late adopter, but I finally took the plunge and upgraded to OSX Mavericks tonight.

A few gotchas:-

  • I had to reconfigure Apache for PHP and virtualhost support
  • I had to re-add a symlink for the MySQL installation:-

sudo ln -s /usr/local/mysql-5.6.10-osx10.7-x86_64/ /usr/local/mysql

  • I also had to reconfigure ssl
  • I had to reinstall vagrant (because of lost path)

Catching up – Summer 2013

Rocky the T25 being towed

Ok after a productive start to the blog this year, i’ve failed to post since the start of the summer. I’m going to blame it mostly on my camper van, both literally spending time working on it and camping in it with my family, and also generally all my blogging effort has gone into my “camper van things” blog. I’ve had a fantastic summer, worked less than I probably should have, but now getting back to work (and saving up for some more summer adventures next year!).

So to catch up – i’m now freelancing more or less full-time back at Potato, working on some interesting stuff, notably cutting my teeth with AngularJs framework, which i’ve enjoyed so far. My initial observations are that it is significantly different to Backbone/Marionette that there is no confusion over what technology i’m using, it allows you to be productive very quickly and that it litters your markup with non-standard attributes. The latter may upset purists, but otherwise it gets the thumbs up from me. If you’re interested in learning AngularJs, a good place to start would be the tutorial.

Braindump May 2013

Not for the first time i’ve found myself stepping back from Twitter most of this month, and when I got drawn in, I got very frustrated with scatter-gun discussions – found myself trying to explain stuff I just can’t get over in a few characters, resulting in multiple replies especially when there are several people in the discussion, so even less room for content. As someone once said – having a discussion on twitter is like trying to have a conversation through a car window as you repeatedly fly past them.

One such discussion was about recommended Content Management Systems (CMS) – I was trying to explain what my holy grail would be – a dynamic CMS (as opposed to a static site generator such as Jekll), which allows editing of content as text or markdown files or via the web, where content can be synced and versioned using GIT, but also has a “throwaway” database for search e.g. it indexes content in the background but no need to keep restoring it when content is added to live but not dev/ vice versa. I struggled to get that out in a reasonable paragraph and i’m not really started yet!

Another area to deal with is comments – comments should really be counted as valuable content on a blog, so this content should also be stored as static files under version control (to allow it to be synced with other copies of the site, rather than the comments themselves needing versioning). The problem is that 90% of any comment system is anti-spam measures and moderation. Having spam comments committed to my GIT repository is downright dirty!

In other news, I’ve finished my current stint as a JavaScript contractor, and am going to be working full-time for the next month or so on the next phase of my company Olivewood Technology, which will be evolving this year.

Braindump April 2013

One of the oldest production web applications i’ve ever built is still happily running mission-critical operations for a small distribution company. I’ll be the first to admit that it is a bit of a mess of different “eras” of code – some of it is even still running classic ASP, which is being slowly (i.e. over a period of years) but surely replaced with PHP5 code. One thing i’m sure about though is that to rebuild the system entirely using something like Django would take months, if not years. So it is is destined to stay as PHP, and therefore as long as it is running and i’m involved with it, i’ll still be writing PHP. I’m fine with this, PHP runs half the internet, was written specifically for the internet, is easily learned and is improving as a language all the time. PHP is a fully Object Orientated language these days, but judging from a recent thread on the underscore mailing list, the perception of PHP remains as warped as ever in the eyes of “proper” programmers!

I’ve managed to sort a couple of things this year that have been missing from my life – firstly, i’ve been doing a bit of mobile working from my camper van office, and secondly i’ve joined a band, after a hiatus of ten years! My last band (Braxton Hicks) was a 9-piece Acid Jazz/ Funk/ Soul band, this new band (name still undecided) is a 3-piece surf-rock trio. We’re still getting a set together, but will be looking for gigs soon!

Bristol surf rock trio the savages

Braindump March 2013

There seems to be a trend for free services shutting down recently – following the recent-ish announcements that Posterous (a kind of blog service with strong emphasis on posting by email) is closing down, and this month Google announced they are closing Reader. It’s not surprising that a free service would shut down – they cost money to run, and as businesses start to look at ways of cutting costs, it makes sense to sacrifice free services.

I was surprised about Google Reader though – apparently the user base isn’t as big as I presumed it was, and they decided it was too niche to bother with. I’m also surprised they didn’t just roll it into google plus – surely little effort to gain thousands of much needed G+ users? Meanwhile i’ve moved over to feedly.

Currently most of my stuff is self-hosted, with the exception of comments hosted by Disqus. I really don’t want the hassle of running my own comment system, due to spam, but i’m starting to think about moving to a self-hosted system, maybe something like a self-hosted version of Disqus, that I can easily drop into different blogs? Whatever I use, it needs to have all the usual anti-spam stuff – comment spam is the bane of any aspiring blog software developers life!

I also paid up for a years membership to app.net – same as twitter, I am @rickhurst. It hasn’t become part of my daily social/workflow yet, as not enough of my regular twitter contacts are using it, but I wanted to put my money where my mouth is when I say i’d rather pay for a service than rely on annoying advertising.

I gave a talk on Backbone Marionette at the Southville JS meetup. It was a practical code based demo, I think it went OK. Either way it was a good turnout and nice to have it hosted in a pub back room, so we could continue chatting at the bar afterwards. The code of the (fairly pointless) demo app I put together in blue peter style is online here.

I also gave an ignite talk on remote working at the Anywhere Working Bristol event. That seemed to go down well and it was nice talking about non code-related stuff for once!

I was also pleased when a colleague pointed me to Poweramp for Android – I had been complaining about how most Android music players don’t support gapless playback, which is a real party-pooper when it comes to mix albums such as my favourite mix album of all time Journeys by dj 70 minutes of madness.

I’ve now finished a full-time freelance Javascript contract at ISM Fantasy Games, but will be continuing with them on a 3 day week basis, freeing up some time for my new business venture(s). More about that when the plans are more refined!

Learning to touch type properly

So, one of my goals for this year was to learn to touch type. I pretty much ignored this goal until last week, when I opened up my copy of Mavis Beacon Typing Tutor. Right now I can type with the correct fingering, without looking, but it is painfully slow – i’m still waiting for the magic moment where I don’t have to pre-calculate every key, and remember which finger to press it with! This is the first blog post I have ever written using the correct technique and it has taken ages, but am determined to stick with it until I am fluent, so expect lots of short blog posts with minimal punctuation until I have this thing nailed!

Notes on deplying django with virtualenv mod_wsgi and apache on ubuntu

As i’ve exclusively been using app engine in my day job at Potato, I haven’t yet had to deal with deploying a django site on my own Ubuntu server yet. I knew that I would be using virtualenv, apache and mod_wsgi, but hadn’t yet worked out how this is done.

Rather than repeating it all here – I followed most of the steps in this blog post.

However, there were a few points where things didn’t go to plan:-

First of all I got the ubiquitous mysql_config not found error when attempting to install:-


pip install mysql-python


So, apparently the solution is to install libmysqlclient-dev:-


sudo apt-get install libmysqlclient-dev


However, if you get this error:-


error: command 'gcc' failed with exit status 1


You need to install python-dev:-


sudo apt-get install python-dev

Freelance vs Permanent a few years on

I love having this blog to remind me where I was at and what I was thinking a few years back. Just under four years ago I announced I was going freelance, and I checked in again about a month later, and then a year later, but haven’t spoken much about it on this blog since. It’s been an interesting ride to say the least so I thought it might be time to write down a few words about the highs and lows.

To put you firmly in the picture of the freelance web developer mindset i’m writing this while I should be working – this causes me anxiety for two reasons: firstly, a task I am supposed to be working on, already overdue, will become more overdue. Secondly, any time spent on this blog post is time spent not earning money. Another way of looking at it is that while i’m blogging i’m working on marketing, so maybe that negates the second point somewhat, but not the first.

Highs

  • The satisfaction of working for yourself – I’ve got the skills to pay the bills! Whatever doubts and problems i’ve had along the way, i’m making a living using skills i’ve built up over the years, and I can’t dispute the sense of satisfaction you get from that.
  • Flexibility and Freedom – I enjoy not having to ask permission if I need to leave early or start late, especially as I have a child.
  • The Money – Freelance work has the potential to pay well.
  • Work / Life Balance – when I can make it work

Lows

  • The loneliness of working by yourself – Not so much in a social sense, but more the responsibility of playing every role in a one-man band – being the account handler, the book keeper, new business development manager, customer services, and not to mention occasionally writing some code.
  • Flexibility and Freedom – sure I don’t have to ask permission if I want to start early, leave late or take some time off, but websites don’t build themselves and when work stacks up, (which it does constantly) I end up working very long hours.
  • The Money – Not always as lucrative as you’d imagine – I’ll expand on this.
  • Work / Life balance – when it goes wrong

The things I miss about permanent

Some of these points will vary depending on the employer, but one of the things I miss is the investment and support that an employer can bring – paying for me to attend conferences and time to learn new skills, the camaraderie with co-workers and the skills you pick up from co-workers. Then there’s the regular pay-cheque, which brings me to..

Money

The other big consideration with freelance is the regularity of pay – you might be set to receive a big payment, but what if it doesn’t turn up for six months? Another consideration is how much you expect to earn. People are always shy to talk about what they earn, and that includes me. Whenever a client asks me to quote day rates I can picture the cogs turning in their minds as they come up with an ad-hoc calculation of what they think I am earning. The truth is that it doesn’t always work out like you would imagine.

Much of the time I put in way more time than was originally quoted for, and natural gaps between productive work, meetings, holiday, illness, pitching for projects, unpaid maintenance, support, bookkeeping, procrastination etc. all conspire to even out what could be lucrative earnings into very average earnings. I never really know what i’m earning until after the year has passed and I do the calculations for tax returns. The carrot on the stick for a freelancer is always those potential earnings though – whereas with a permanent job your salary is capped (but guaranteed), there is always potential to earn more with freelance. However, my goal with freelance was always to earn a modest salary but take more time off. I’m still working on the second bit.

So would I ever consider a permanent role?

I’ve thought about this and have come to the conclusion that i’m probably unemployable. That last sentence isn’t going to sound too good on a CV is it! The reason I say this is that what I strive for in my freelance life I would also be looking for in a permanent role, and when I summarise what i’m looking for it sounds like a list of demands from a petulant celebrity:-

  • Flexibility/ Freedom with work hours/ days/ location
  • Good Salary – at least on par with a reasonable freelance year, when holiday etc. accounted for.
  • Some profit related incentive to keep working when the going gets tough (shares/ profit share/ bonus)
  • Training/ Conference budget

I think one thing that would clinch it though is the opportunity to work somewhere exciting, maybe abroad in the future – (mountain view sounds fun!), or working as part of a specialist team that would allow me to take things to the next level professionally.

The other thing that would possibly convince me to go permanent would be the opportunity to get my foot in the door of a company or organisation that would lead me back to my first choice of career in environmental science/ renewable energy – that’s another blog post though!

archived comments

Subscription business model! – it’s the way forward (and you get time off!).

http://www.ldexterldesign.co.uk/2010/07/part-1-how-to-freelance-successfully/

Best,

ldexterldesign 2011-03-04 04:34:22