Xteink X4 Review

I posted recently a video of me unboxing the Xteink X4 reader and I said that I would post a longer review once I had a chance to use it. This is that review.

How I read

I’ve never really considered myself to be an avid reader, but when compared to the rest of the country, it seems that I am a voracious reader. Where 40% of people in the UK don’t read any books at all in a year, I find myself in the top 8% who read more than 30 a year.

I read a mixture of both … Read the rest

Exporting Last.fm Scrobbles to Day One

Having already written routines to export WordPress posts and Foursquare check-ins to Day One, I hadn’t intended to do any more, but here I am, back with exporting Last.fm Scrobbles to Day One. That’s because I read a post on the Day One Subreddit where someone was asking how you could do it and I rashly said I’d give it a go!

I couldn’t contemplate writing a script to go back over all my 130,947 scrobbles recorded over 21 years so this script just processes scrobbles for the last seven days.

What Exactly is a Scrobble?

Last.fm is a service … Read the rest

Why do e-reader Screens “Flash”?

I’ve been having a bit of an e-reader renaissance recently with the purchase of an Xteink X4 reader, the tiny pocket reader. This is my first e-reader in about 16 years since my Sony Reader all those years ago. Something that hasn’t changed in all those years is the page flashing when the display needs refreshing.

If you don’t know what I am referring to, take a look at this video below, which shows page refresh in action on the Xteink X4.

Here is why that refresh (often called a “full page turn”) is necessary:

The Physics of “Digital Ink”

Read the rest

Xteink X4 eBook Reader

The Xteink X4 is a brand new eReader with a difference – it is tiny, about the size of an iPhone. Designed for reading on the go, this nifty little device is small enough to shove in a pocket and take with you everywhere. In this short video I unbox the device and take a look as to what’s included.

Having only received the device yesterday I haven’t spent much time with it but I can really see the X4 becoming part of my EDC. I will report back in a few weeks when I have spent more time … Read the rest

Setting a Bluesky Post’s Language with php2Bluesky

A while back I pushed an update to php2Bluesky that allows for multiple language posts and forgot to post the change so I am correcting that now!

Setting the language

By default the language of your posts is set to English but you can override this in one of two ways. Either specify the language when creating the instance of php2Bluesky or pass it when posting. It must be an array even if you are passing a single language.

Setting the Language Globally

If you want all your posts to be labelled in a language other then English then you … Read the rest

Update to WordPress Simple Stats

For my February 12 Apps in 12 Months project I wrote a script to produce some simple statistics from a WordPress installation. Looking back at it I realised that it only produced stats for all time and not the previous year, which is what I wanted.

I revisited the code and added in some counts for the previous year and updated the output. You can grab the latest code here but I came across an issue which I thought I would cover here as it might be useful for others.

504 Gateway Timeout

When running the script for another … Read the rest

12 Apps in 12 Months – a Review

Late 2024, I decided that I was going to provide more focus for my development in 2025, and to that end, I would attempt one new project a month, and so 12 apps in 12 months was born.

What did I do?

I very much stuck to my knitting with these projects as every one of them was written in a language that I know very well: PHP. Ten out of the 12 also used a third-party API to source data that was then used as the basis of the project.

Here’s a full list of all the projects completed … Read the rest

Vibe Coding a WordPress Plugin

I’ve written a lot of code this year and the vast majority of it I did without too much help. However, I did turn to AI (mostly ChatGPT) when I needed either a specific function written or some help with a particular issue.

What I hadn’t done was use AI to write a complete program without any code from me. I believe that this is termed “Vibe Coding“, named Collins Dictionary’s Word of the Year for 2025. Not a phrase that particularly appeals to me but I don’t get to choose.

Going with the Flow

Then, yesterday, … Read the rest

Transfering a Smart Card to Apple Wallet

On a recent trip to Washington DC we discovered the Metro’s smartcard “SmarTrip” which can be used to tap-in and tap-out at stations and on buses too. This was pretty convenient, but it meant yet another plastic card to carry around and potentially lose.

However, there were signs up saying that it was possible to transfer the balance from a physical card to your Apple Wallet (or Google equivalent if you were that way inclined). The instructions were simple enough:

To transfer your SmarTrip card to Apple Wallet, open the Wallet app on your iPhone, tap the “+”

Read the rest

Automatic WordPress Plugin Updates

I wrote a plugin for our local U3A group, but I didn’t want to add it to the official WordPress.org repository as it had no relevance to the general WordPress user base. However, I still wanted to make it as easy as possible for people to install and update but WordPress won’t know how to check for updates on its own. That’s where Plugin Update Checker comes in.

Plugin Update Checker is a lightweight PHP library that adds WordPress-style update notifications to custom or private plugins. Once configured, your plugin behaves just like an official WordPress.org hosted plugin: WordPress checks … Read the rest