The Laravel Synchronous Queue

Using queues for asynchronous processing is one of my favourite tricks for offloading hard work from web servers. When working with Laravel recently I was pleased to find that it supports beanstalkd out of the box. I've got opinions about frameworks with Opinions but I did find one thing I really liked in the way Laravel uses queues: the sync queue option that runs your queue synchronously on your development platform so you can develop and debug your work, then switch the queue platform you use later. Continue reading

Handy Beanstalkd Admin Console

I've been building apps with queues lately and mostly using beanstalkd as my queue because it is very simple, very fast and on my platform it is [apt install beanstalkd] -easy to install. I have also been using a handy web interface for beanstalkd which I like so much that I felt I ought to share! It's beanstalk-console, which is a PHP-based web interface to one (or many) beanstalkd servers. Continue reading

HTTP Toolbox

As Web Developers, we need to know how to work with HTTP from every angle. I gave a 2-hour tutorial at PHP UK that included some of my most trusted tools - but it was sold out and a bunch of people asked me if there was video (there wasn't, tutorials make little sense when videoed). Instead, I thought I'd try to set out a self-study version of the workshop (I rarely teach these days so I'm unlikely to deliver it anywhere else).

There's a slide deck, some exercises and a sample repo on GitHub ... let's dive in! Continue reading

Using Tags in your OpenAPI Spec

Working with OpenAPI is bringing so many possibilities to the way that developers work with APIs, it's exciting! The spec is very comprehensive though and I've found myself answering questions on individual aspects of it recently, so I thought I'd capture one or two of those things here. Today: tags. Continue reading

Windows removed my grub menu

I know this will happen to me again at a bad moment so I'm putting it here on my blog and hoping I can find it in my future hour of need ...

My work machine is a Windows PC, with dual boot to the Ubuntu partition that I actually use. Sometimes, when booting Windows, it "repairs" its disks and removes my grub menu, booting straight into Windows without showing me the grub menu.

To fix this: interrupt the startup, choose the boot device and pick the Ubuntu partition from the list.

Once booted, you can boot-repair to sort out grub - I also travel with a boot disk, just in case!

Ready-to-wear API Collections with OpenAPI and Postman

Have you noticed that API providers are starting to offer "descriptions" of their APIs? These are usually OpenAPI specifications, computer-readable documents that describe every aspect of an API's endpoints. They can be used to generate documentation, SDKs, but now they can also be used for my favourite API-related activity: poking around! Postman just added a feature to allow importing OpenAPIs and I love it. Continue reading

Are you Creating, Curating or Consuming?

I've been thinking lately about my own interactions online, especially around content. There are three main ways that I work with content: creating, curating and consuming. Each has their own place but I'll start by outlining each one.

Creating content is all about putting your own creations out for others to share. I've had this blog longer than I care to discuss and certainly since before microblogging was really a thing. It's much lower investment to throw out a quick tweet about something and in lots of cases it's a more appropriate medium Continue reading

Generating PHP library code from OpenAPI

I'm working with a bunch of OpenAPI specs now I am working for Nexmo and so far I'm loving working with API descriptions. OpenAPI is the next iteration of what used to be called "Swagger", a machine-readable way to describe your API and from that description create docs, code libraries, tests, and all sorts. Today's post is a quick writeup of how I generated some PHP code so that I can refer back to this next time I want to do it! Continue reading