Update to WordPress Posts to PDF – Code Blocks

At the back end of last year I released a script that allowed you to export your WordPress posts to a nicely formatted PDF file. In the last update, I said that I wanted to add proper formatting for code blocks and today I have done that. You can find it on the GitHub page.

This proved to be more difficult than I had anticipated. The code uses the FPDF package and extends out the “Links and flowing text” example provided. I knew I needed to convert all <pre</preblocks to be displayed as … Read the rest

Overcast Statistics

Podcasts are huge at the moment and they are pretty much all I listen to these days when I am out walking or in the car. I do this by the (mainly) excellent Overcast app. I say mainly because it has a UI that I struggle to find things in. Anywho, the one thing that it lacks (other than an intuitive UI) are decent stats and I really wanted that for my annual Review of the Year posts over on my personal blog.

After a quick DuckDuckGo I found the following post from James Hodgkinson with a Python … Read the rest

An Open Letter to Google

Dear Google,

In 2014, around about the same time that you Nest Labs, I bought and had installed a Nest Learning Thermostat to control our central heating and give us remote access. I think that it has been a great success, so much so that I have recently upgraded to the latest version that also allows our hot water to be controlled.

I then had an idea! What if I could see temperatures around the house and use that data to get better control over resources there? So I wrote a simple dashboard which I called The Weather Station. I’ve … Read the rest

Cloudflare Zero Trust

I love Cloudflare – there I have said it! If you are looking for a way to keep your site secure and performant then Cloudflare is the way to go. Today I am going to be looking at just one aspect of Cloudflare and what it can do for you – Zero Trust.

What is Cloudflare?

I like to think of Cloudflare as the Swiss Army knife of cloud-based tools. It offers solutions for a variety of things from security to performance to domain registration to content delivery all packaged in an easy to understand and use web-based interface. And, … Read the rest

ChatGPT as a Replacement Programmer

When I left university I did so with a good grounding in several programming languages such as Cobol, Fortran and Pascal. Then, at my first job, I was given training in the language Application Master, part of ICL’s VME operating system. One of the things I was told about Application Master was that it was a “fourth generation language (4GL)” and that this would be the last generation that required a developer to write the code.

This was the late eighties and until very recently we have been still waiting for this transition to happen.

ChatGPT has Entered

Read the rest

A Minor Update to my Bluesky Library

A quick post to say that my Bluesky library has had a small update. This is to take into account that from version two of Clark’s library that handles the calls to Bluesky the connection method has changed. Therefore, if you have updated to version two then remember also to update the PHP2Bluesky code which can be found here.

You can read all the posts on the PHP2Bluesky library here and get in touch if you find any issues or have an enhancement suggestion.… Read the rest

Using a Raspberry Pi Camera to create a time-lapsed video

For my birthday last year I was bought a Raspberry Pi Camera Module 3 which I’d wanted for a while. I’d decided that I wanted to create a time-lapse video showing the change in seasons in the back garden. The rest of this article describes what I did and the results.

Setting up

As this didn’t require a huge amount of computing power I paired the camera module with a Raspberry Pi Zero 2W.

That turned out to be the easy bit! Getting it fixed such that there weren’t any reflections from the window took a bit of creativity. What … Read the rest

Posting to Bluesky via the API from PHP – Part Eight – Retrieving a Post

Once again I have been looking at the Bluesky API as part of a question posted on my Github respository. This time the question was “Can I specify one URL and use PHP to retrieve only one bluesky post by someone else?”. You don’t actually need my library to do that but I thought it would be useful to post details here as it’s not immediately obvious.

Identifying an Individual Post

The first thing to consider is how to identfy an individual post. Consider that we want to retrieve the following post progamatically.

Looking at the URL for this Read the rest

Posting to Bluesky via the API from PHP – Part Seven – Handling Multiple Images

It really is very gratifying when people use your code in their own projects and get in touch to ask questions, suggest changes or, heaven forbid, highlight bugs! Yesterday, someone raised an issue asking if it was possible to upload four images to a post. Let’s take a look and see…

Who Wants Multiple Images Anyway?

To be honest, when I wrote PHP2Bluesky it was very much for my own project and that only required one image per post. However, Bluesky allows up to four images to be uploaded per post and so I can understand why others would want … Read the rest

Posting to Bluesky via the API from PHP – Part Six – Handling Handles and Oversized Images

I wrote a series of posts towards the end of the year that took you step-by-step through using the Bluesky API to post to the social network. Having used the code Patrick Delahanty got in touch to say that he had found a couple of issues. Firstly, handling user handles and secondly dealing with large images. Let’s take a look at both of those.

Handling User Handles

As with every social network, Bluesky allows you to select (or assigns for you) a unique user handle. As we saw in the last post I have changed mine to be my … Read the rest