In praise of Lightroom Classic

At present, there are two pieces of software that I consider superb – PhpStorm (a program by an astonishingly talented Prague-based company, which I use to write PHP, HTML, Javascript, CSS etc. and which error-checks your code to within an inch of it’s life before you even run it) and now, Adobe Lightroom[1]Although, as it happens, you really don’t want to run them both at the same time as they hog so much memory….

I briefly mentioned my admiration for the latter in a previous blog post. So much so, I regret not learning it until last summer. I have been getting into[2]That’s right, Flickr is still a thing. It also obeys my I’m-not-going-to-explain-this-very-clearly-am-I? theory of online communities – notably that they’re friendliest and … Continue reading photography again recently.

Lightroom gets quite a bit of stick, mostly for Adobe’s subscription model as much as anything, though the Photography plan – at £10 a month with Photoshop as well, is arguably a bargain. Here’s what I like about it[3]I should add I’ve not tried Capture One, which lots of people like:

  • All edits are entirely non-destructive and the whole history is retained.
  • They’ve made it near impossible to accidentally delete your photos: you have to reject them first, then specifically choose the Delete from Disk option, rather than the default “remove from Lightroom”. Even so, your RAW files are still in the macOS Trash. And on your memory card until you erase (or preferably, reformat) it, because, also, despite constant pressure, Adobe have refused to add any sort of command to wipe SDHC cards from within Lightroom.
  • Your catalogue files are backed up daily by default and you’re prompted to do this when closing the app. The catalogue backups are SQLite databases in clearly timestamped directories, which accumulate forever until you get rid of them.
  • Likewise, your photos themselves live in a directory structure entirely of your choosing – I went with /Pictures/yyyy/yyyy-mm/yyyy-mm-dd – which you can move anywhere on any drive. You do need to learn the basics of how Lightroom syncs files and folders, and preferably not start moving things around in Finder by yourself – ask Lightroom to move it for you so it doesn’t lose track of your files. But compare the clean and simple nature of all this to Apple’s latest obscure, proprietary incarnation of their Photos app, where everything is dumped in a huge hidden package file you fear could corrupt itself at any moment and over which you have little control.[4]Another reason not to use Apple Photos is how it insists on running an AI scan of your entire library which it’s impossible to switch off – although, small tip, opening the Photos app … Continue reading So when you inevitably run out of disk space and need to move things around, it’s a lot less stressful. And, once Lightroom has generated the preview files, you can perform your edits on them without access to the originals.
  • For professional photographers, it’s easy to setup separate catalogues for different client projects.
  • Excellent keyboard shortcuts – of which some of my favourites: Q to toggle in and out of Spot Removal, and [ and ] to vary the size of the brush. Holding down spacebar to switch between spot removal (or whatever else you’re doing) and the ability to move around the image. Z to toggle between two customisable zoom levels. \ to toggle between the original “before” image and your working version.
  • I don’t use HDR the often, but it’s a better implementation than anything else I’ve tried. Lightroom just doesn’t do a ‘dramatic’ setting (which imho looks hugely unrealistic – now some people really do like that sort of style, but I like to imagine they’re the same people who are into emoji and memes…) Also though, if there isn’t enough in common between the images – i.e. something has moved – it’ll simply refuse to merge them, rather than do a mediocre job.
  • Similarly, Spot removal is simply much higher quality than other apps I’ve tried (e.g. Pixelmator Pro, Serif Affinity Photo[5]though it’s very nice to see Serif making something popular again, as someone who loved PagePlus back in the 90s. Tips: if you get a blurry mess, try making the brush a bit larger. Also remember to use the H shortcut to show where it’s cloned the replacement from, which you can then drag around if lines don’t match up. It’s very quick too – this photo includes, oh I don’t know, 50+ instances of spot removal to clear large amounts of guano and chewing gum off Canterbury’s unloved paving stones? Yet I was able to do that in a few minutes on a nine-year-old Mac Mini (the previously mentioned hold-the-spacebar trick helps too).
  • I love the Flickr integration. The Flickr API hasn’t changed much on the surface (it’s a nearly twenty year-old legacy codebase), but the uploading support is solid, and being able to use all your existing keywords and metadata without having to enter it again, and merely dragging the image into the Flickr folder and clicking Publish is wonderful.
  • A side benefit: if Flickr ever did shut down for good, I already have a folder of everything I’ve published in the database, so it would be easy to move it somewhere else (and Lightroom includes a fairly sophisticated HTML gallery builder in the Web module, so you don’t need to make something by hand or rely on 3rd-party services).
  • Lightroom replicates the Fuji film simulations (Astia, Vevia, Classic Chrome etc. the various Acros monochrome versions…) very nicely. It’s not identical to Fuji’s own extraordinary technique, but you can regenerate JPEGs or TIFFs with your chosen film directly on the camera later using the RAW files if you prefer[6]and indeed you need to do that if you want to send the photos to a smartphone, because the Fuji Cam Remote app – 602 reviews and a measly average 1.4 out of 5 on the App Store that’s … Continue reading, however I’m not good enough to spot the difference between Adobe and Fuji’s work.
  • Martin Belam recently wrote about object selection in Photoshop. I’ve not been using Photoshop much lately, however there are a couple of similar features that have recently made it into Lightroom, which are astounding; specifically Select Subject and Select Sky. These take at most, 5+ seconds to run – again, this is on a computer that’s close to a decade old now – and providing your subject is relatively big, Select Subject is very accurate, regardless what said subject is (it correctly picked out a squirrel and the tree it was climbing for example, and will highlight multiple people in the frame, cyclists, people holding umbrellas etc etc.). You can of course modify the mask further, but for me it’s usually been spot on – and you can then invert it if you want to desaturate the background, for example. Colour Range is decent too, although it’s common to find the colour you’ve chosen in parts of the image you don’t want, so you should expect to use the refine slider or manually paint out areas you don’t want (when you’re using masks, remember the O shortcut to colour the mask red or green etc. so you can see the area that’ll be affected by it).
  • Another feature that’s maybe even more magical for me – the Transform panel. Because it means I can take a photo of a four-storey building from ground level, with all the inherent perspective, drag a couple of horizontal and vertical guides over it and Lightroom will magically straighten the whole thing out so it appears I shot it perfectly; dead centre, straight on, almost in mid-air. It does this by squashing the wider part of the photo and bringing in the area to the left or right, say, to fill the empty space, so you do need to leave some room around the edges of the frame otherwise your building will be cropped. But it’s a superb tool, which doesn’t appear to noticeably distort or otherwise harm humans or animals; the end result; more professional looking images with nice straight lines with, again, minimal effort.
  • Finally, exactly what happens should you ever stop paying your Adobe Creative Cloud subscription? Well, you can use everything except the Develop and Map modules – i.e. you can still access, search, sort, export, print and manage the metadata of photos, just not perform edits.

So in summary, Lightroom: some amazing maths tricks and the workflow and UX is amazing – even if it does eat RAM and freeze occasionally, it very much feels like it’s been battle tested by generations of photographers.


  • If you want to learn Lightroom, I’d suggest doing what I did and watching a few hours of the official tutorial videos before you even open it for the first time. It’ll help you understand what the hell is going on.
  • You don’t need to learn everything at once. e.g. I’m still at a stage where I have little understanding how the Tone Curve works (I’m privately convinced a lot of other people who’ve done tutorials about it don’t fully get it themselves either). I just use the Color panel and adjust the tint through trial and error.
  • Don’t waste your money on buying other people’s presets. Just learn a bit of the app at the time, and shoot in RAW so you can come back and re-edit in the future.
  • For the record, I’ve never once used the new Lightroom CC version.


1 Although, as it happens, you really don’t want to run them both at the same time as they hog so much memory…
2 That’s right, Flickr is still a thing. It also obeys my I’m-not-going-to-explain-this-very-clearly-am-I? theory of online communities – notably that they’re friendliest and most encouraging where they remain sufficiently narrowly focused on the population actively developing experience in a learning a particular Thing; everyone therefore appreciates the dedication, difficulty and frustration of doing the Thing even moderately well, and realises they’re probably not personally the best at it, so they can’t help but be supportive of the Thing(s) others may have created, and use them for inspiration. The lack of “influencers”, and people using it as somewhere to paste all their screenshots or indiscriminately backup every photo they ever took, as in the early years, probably helps considerably too.
3 I should add I’ve not tried Capture One, which lots of people like
4 Another reason not to use Apple Photos is how it insists on running an AI scan of your entire library which it’s impossible to switch off – although, small tip, opening the Photos app itself will pause the background process doing that, if all the fan noise is annoying you.
5 though it’s very nice to see Serif making something popular again, as someone who loved PagePlus back in the 90s
6 and indeed you need to do that if you want to send the photos to a smartphone, because the Fuji Cam Remote app – 602 reviews and a measly average 1.4 out of 5 on the App Store that’s entirely deserved due to the highly confusing and unreliable nature of the initial connection – won’t let you copy RAW files into an iCloud folder, it only works with the Apple Photos app

Software to avoid: ExpanDrive

Expandrive is a program that lets you mount external connections (SSH servers, Google Drive etc.) as volumes on a Mac, so you can drag/drop/save/load as if they were local.

Both the old version I had (6.4.7) and the newest release of version 7 essentially won’t connect to anything at all for me – either servers I run myself or Google Drive/Dropbox (in the case of the last two they get stuck in an infinite loop.)

This is on Mac running macOS Mojave 10.14.6.

There are log files, but they weren’t massively useful.

Didn’t get far with their live support. Similar complaints on Trustpilot. I believe it’s quite a small team (though more than one). Their apps are still actively developed, but if one doesn’t work and they can’t help you…

I asked if they operated a test server, which would be useful for diagnosing problems as they could use it to check the logs at their end. But they don’t.

Possibly the thing to get instead if you really need it is Transmit ($45), though I have gone back to moving files via the command line.

You accidentally deleted your entire Apple Photos library. How to undelete it.

e.g. you’re trying to view the package contents of the “Photos Library” (in /Users/[username]/Pictures/), so you can check an original file, RAW image, etc. – but you’re not thinking properly, accidentally click the wrong option in the menu and send the entire contents to the Recycle Bin by mistake.

You stop the deletion immediately, and the Photo Library isn’t in the Recycle Bin, and still appears to be in the usual location in the Finder, but, on launching Photos (macOS Mojave 10.14.6, in this case) it says it has failed to repair the library and invites you to open another one.

The fix is very simple – first, disconnect your Time Machine drive (or any other automated backup location) to avoid harming your backups.

  • close Photos if it’s open
  • hold down the command + option (alt) keys while clicking the icon
  • the Photos app will open and should immediately offer to repair the library for you.
  • supply password when prompted
  • wait a while (a few minutes for 80GB of photos in my case) while the photolibraryd process rebuilds the library (you’ll see a fairly accurate progress meter)
  • browse / continue to use the library for a while to check everything is still there and ok (mine was).

On a related note, I highly recommend Adobe Lightroom Classic (superbly well thought out app, very powerful and perhaps also the best designed keyboard shortcuts I have ever seen). The £10 a month Creative Cloud subscription is worth it (get the one that also gives you Photoshop). It’s considerably better at things like HDR and spot removal/healing brushes than, for example, Pixelmator Pro, Affinity Photo etc.

Only issue is that it can eat memory. Keep an eye on that and be prepared to relaunch if it, as has happened to me a couple of times, it creeps up to 9GB.

The WordPress Gutenberg block editor – a FAQ for cynics

Is it any good?

Meh. But I’ve reached the stage where I’ll no longer disable it by default.

Will it save you any time?

That depends on who “you” are and what you’re doing / writing. There are keyboard shortcuts (if you post often enough to memorise them), but you’ll probably find yourself using the mouse a lot more.

You’ll need to relearn where some things are in the sidebar (e.g. permalink settings) – and it doesn’t quite have feature parity there yet (unless I’m mistaken).

It’s certainly more useful friendly and (imho) also better having a toolbar and menus that adapt to the context.

The editor writing area is also incredibly uncluttered, though much of the stuff has been shoved in the (fixed width) sidebar that’s now full of sections you’ll need to learn to navigate or expand or collapse as needed, and also of course every other page in the WordPress admin area is exactly how it’s always been.

I’d describe it as stable – I’ve not had any real javascript errors yet.

What happens with old and new posts?

New posts

Once you disable the Classic Editor plugin, when you begin every new post you’ll start in the block editor.

Old posts

  • Crucially, turning on Gutenberg (by disabling the Classic Editor plugin) doesn’t make any difference to existing posts (created pre-Gutenberg, in TinyMCE) until you edit them.
  • When you do edit an old post, you get the new “minimalist” view, but your post is converted to a single “classic block” in “classic edit” mode. Once you place the cursor somewhere, you’ll see the familiar TinyMCE toolbar with font styles, buttons to add remove links and so on.

You can leave that intact and make simple edits, or add other blocks around it, or use the “convert to blocks” button, which splits a classic block up by paragraphs (and with some “intelligent” stuff based on the content.)

Classic Blocks also give you an ‘Edit as HTML’ option.

Here’s a slightly longer guide to avoid repeating what others have written.

What happens if you decide to turn Classic Editor back on for some reason?

Any posts you’ve written in the block editor would still display correctly: the code that renders Gutenberg blocks is in WordPress core. You can still edit them too, but you won’t see the new interface and you should switch to text mode – then you can see the HTML comment tags (because that’s how it works) used by the block editor to mark the start and end of blocks, and any extra metadata such as block titles.

All these HTML comment tags are only stored in the “posts” database table, they’re never sent to a user’s web browser. (The overall output seems just as clean as before.)

Converting blocks from one type to another

You’ll want to do this quite often. To change a block type, you click it’s icon (on the far left of the toolbar) – each block type has a different icon – e.g. the paragraph marker for a paragraph block, or a bookmark-style thing for headings.

There are limits on which block types you can convert between, some of which seem unnecessarily restrictive.


Shortcodes are still supported, but you need to paste them into a Shortcode block.

The “custom HTML” block type

Two key differences from Classic blocks:

  • HTML blocks don’t mess around with your code, adding
    or tags with every line break the way the old WordPress editor used to.
  • in HTML blocks, you can toggle between source and preview instantly without having to open a separate tab.

This would be the one to use for newsletters.

Reusable blocks

Key thing to remember: these aren’t empty templates you fill in each time – i.e. you can obviously reuse them across multiple posts, but editing a reusable block changes every instance of it across the site.

Also once you create them, unhelpfully they’re always labelled ‘Untitled’. You need to go to the Block Manager page (you can get to this via the … dropdown menu on the far-right when editing, under Tools > Manage all reusable blocks)

Detailed guide to reusable blocks

Shifting blocks around

Note you can shade several blocks in using the keyboard and the icon changes to a ‘stack’, you can then move them together using the up/down icons.

Block patterns

Frankly of very limited use right now.

A block pattern is a collection of predefined blocks and they are inserted all at once. (Add a block, choose ‘Patterns’ and use the dropdown menu to select the type you want.)

There isn’t really a way to configure your own patterns via the UI (though someone has written a ‘Custom block patterns’ plugin).

It’s possible to generate them by writing/updating a theme or plugin.

Compatibility with ‘Post templates’ plugin

(because I have a client who uses this). It’s a plugin that’s no longer updated so is not Gutenberg compatible.

You can still create new posts using post templates (i.e. go to Templates and choose ‘New post fromtemplate’).

When you do, it will appear as a single “classic block” and you will need to edit it manually.

Display – meta panels underneath the editor

(You may want to reduce clutter)

There’s a setting to show hide/all these individually, but it’s buried several menus deep.

  • Create or edit a post
  • Click on the three dot icon on the far right
  • then Preferences at the very bottom
  • then the Panels lh-menu item on the modal window that appears
  • then under ‘Additional’ you can show/hide all the sections (hiding things doesn’t get rid of any of the old settings)

Mac shortcut tips – playing live radio stations with a single keypress

Using macOS Mojave, iTunes, some apple script and BetterTouchTool (£)

  • Create a playlist entry for the radio station in iTunes
  • Create a script file like this:

tell application "iTunes"
play track "BBC World Service"
end tell
  • Add a shortcut in BetterTouchTool, using the Execute Terminal Command option: e.g. osascript /path/to/bbcws.scpt

(Remember you can use modifier keys for variations. e.g. F18, shift-F18, cmd-F18)


Whilst I have streamlined the way I access audio over the years, by putting all my preferred stations in iTunes playlist, to avoid having to launch individual websites or apps, you generally still have to first switch to iTunes etc. (Launchbar currently doesn’t support playing live streams properly).

With this solution, I can literally just hit a button and it’ll start within a second. (If you have a digital watch, e.g. a Casio, I suggest activating the hourly chime if you want to avoid missing the start of news bulletins etc.)

Q: But what about iTunes being abolished in Catalina? Yes, well I’m not planning to upgrade for some time, and when I reach that point I’ll probably switch to VLC or something.


Letsencrypt on Debian 10 – switching to new ‘snap’ based Certbot

Official instructions:

If you’ve upgraded a machine Debian 10 (Buster) or later you’ll see a warning like this:

Your system is not supported by certbot-auto anymore.
certbot-auto and its Certbot installation will no longer receive updates.
You will not receive any bug fixes including those fixing server compatibility
or security problems.
Please visit to check for other alternatives.

Certbot, the tool for updating Let’s Encrypt certificates, is now distributed via Snap.  If you haven’t heard of that, Snap is a new package format – the point is it’s more cross platform – so a single package will currently support Ubuntu, Debian, Fedora, Arch Linux, Manjaro, and CentOS/RHEL.  More details >

This means you need to:

then, typically you already have a weekly cron file that calls certbot to renew the certificates, and restarts your apache or nginx server (the latter step is important because otherwise it’ll keep serving a cached copy of the old certificate, which will eventually expire).

Here’s the (old) contents of my /etc/cron.weekly/certbot:

/home/william/letsencrypt/certbot-auto renew
service nginx reload

You need to remove the line calling certbot-auto, but leave the one restarting nginx once a week.  You might choose to rename the cron file or add a comment to make it clearer to your future self why it’s needed.

Next, check snap is to up to date:

sudo snap install core; sudo snap refresh core

Install the certbot package:

sudo snap install --classic certbot

Then you can test a manual update either:

sudo certbot certonly --nginx

(on the interactive version you’re presented with a list of sites to choose from)

Finally, do a renewal “dry-run” to check for problems:

sudo certbot renew --dry-run

The key points about dry-runs:

  • they use the Let’s Encrypt staging environment, so you don’t hit rate limits
  • therefore, real certificates aren’t requested or saved
  • it’s basically testing that Let’s Encrypt end is able successfully handshake with your server, can write files to correct places etc.


Renewals can use one of three methods: crontab, cron files or systemctl timers.

On the servers I’ve installed so far, certbot has automatically setup a timer. You can verify it has by running systemctl as follows:

$ systemctl list-timers
Mon 2021-02-15 12:12:00 GMT 1h 43min left Mon 2021-02-15 07:57:03 GMT 2h 31min ago snap.certbot.renew.timer snap.certbot.renew.service

So certificate refreshes will happen automatically, but remember you need to handle regularly restarting your web server (and weekly is as good an interval as any to do that).

Here’s another link to the documentation:

PhpStorm gotcha: all PHP errors missing – “No errors found in this file”

If all your PHP errors and warnings suddenly disappear from your IDE editor window, despite you having the language level configured correctly etc., double check you haven’t turned on Reader Mode by accident, as by default it hides “error and warning highlighting and the inspection widget”.

Therefore you’ll see the message “No errors found in this file” when pressing F2, even though there are some.

Also by default, it turns on font ligatures (the fancier versions of =>, != etc.) so if you’re seeing those and wondering why, even though you have the boxes unticked in Preferences Editor > Font, or Editor > Color Scheme > Color Scheme Font / Console Font – again, check it’s not activated.

All this is configurable in Preferences > Editor > Reader Mode.

Note that Reader Mode is toggled on and off for individual files.

Jetbrains official docs

My UK iPhone mail-in battery replacement experience

Here’s a detailed review of how Apple’s mail-based, UK iPhone battery replacement service works, using two different phones in late 2020.

last update 10 Dec 2020

First you start here:

  • Scroll down and choose ‘arrange a shipment’, which, after Apple ID login, will lead you through picking the device, the cost your address details and a credit/debit card pre-authorisation.

The rule of thumb is that Apple will do repair and battery replacements for phones, tablets, etc. that they were selling until five years ago. After that, the model becomes “vintage” : for the next two years you can get it repaired by an authorised service provider (there are plenty of those in the UK) but not directly by Apple. After that, it’s officially “obsolete”: Apple will no  longer sell replacement parts, so you’ll have to hunt around for someone who has hoarded them and appears trustworthy enough to know what they’re doing.

Therefore, you might plan a battery replacement before your five years are up and you might – as I did with an iPhone 6S – choose to first replace the battery first after, say, 2.5 years – I’d reached close to 1,000 charge cycles at this point – and then again after 4 – 4.5, before time runs out.

The UK mail-in battery replacement option was (I believe) introduced somewhere between 2018 and 2020 – I don’t recall it being available the last time, either that or the turnaround time put me off, though that did mean I got to chat to an Apple certified technician at Storefront and get an idea of what they did (including taking hi-res photos of the phone, including the display, ports, assessing the condition of the screen) and a look at the diagnostic tools they used.  The actual dis/re-assembly process (out of sight) took them, as I recall, around 20-30 minutes.

Back then, Apple offered battery replacements for a reduced £25, due to all the fuss over CPU throttling (for the record – I consider that a feature rather than a drawback, given it kicks in due to a combination of temperature, charge remaining and power draw, it’s not active all the time.  In most situations, having your phone power off in the cold is much more inconvenient than a slight slowdown).  It’s worth noting that Apple changed the power management chip for more recent models.  Where they screwed up of course (personal opinion) was in the transparency and the PR.

As of November 2020, the battery replacement current cost for less expensive iPhones (e.g. for an iPhone 6S) is £37.50 for the repair, £6.20 for shipping, plus 20% VAT, or £52.44 inc VAT in total.)

Sending the phone to Apple

  • roughly 3-4 days after I started the repair (requires credit card details), received a box (slim enough to fit through large letterbox) to send it back in. The box itself (a “single wall” box made by Veritiv, who design and manufacture packaging) is well constructed, and has the manufacture date along with all the weight, burst proof certifications etc. on the back.
  • The pack comes with an instruction book (9 steps, 24 languages, 36 pages) and a spare SIM eject tool: you need to remove the SIM – this is standard for in-store repairs at authorised retailers like Storefront, too – Apple don’t want to worry about looking after your SIM, cases, cables or any other accessories.
  • You do need to turn off Find my… (iPhone), of course (Apple’s website has a mechanism that checks this in real time and doesn’t let you continue until it’s done) – there was some additional advice to remove the phone from your list of devices in iCloud, which I did to be on the safe side.
  • Your phone goes in a thin translucent foam padded bag, which some tape you unpeeled and stick down, then you put it inside a slim iPhone style white cardboard box (you’ll get it back in one of these too, they’re nice and worth holding onto…), then you put that inside the brown cardboard box, which you’re also advised to tape down (no tape provided).
  • You also get a pre-paid (24 hour, tracked) Royal Mail grey polythene bag which has a postage label preattached.
  • You don’t need to include any notes or paperwork (remember Apple can reference both the tracking code and the serial number of the iPhone itself).
  • You can do what I did, and use the new Royal Mail parcel collection service which costs 60p for this item, to avoid a trip to the post office. When the postman delivers your post, s/he takes the parcel, scans the barcode (they have a proper laser barcode reader for that, not a phone camera) and then it’s automatically in Royal Mail’s standard tracking system.  You’ll get a confirmation email from Royal Mail immediately.

Although the entire process – online ordering, status emails, credit card purchase info, payment receipt etc. is fully Apple white-label branded, they contract the servicing out to Unipart Logistics in Lutterworth (they support servicing jobs for London Apple Stores too, apparently).

The day of repair (both repairs took a single day each, with time either side for delivery of return box, the return itself, and the repaired phone being sent back.)

iPhone 6s – Nov 2020

  • 8am – Royal Mail tracking shows parcel received
  • 11:31am – Apple email: “We’ve received your product / we’ll start the repair now”.
  • 5:02pm – Apple email: “Your product will ship soon / our technicians have successfully repaired your product”.
  • 7:01pm – Apple email: “We’ve repaired your product / Your product has been repaired and we’re sending it back to you. You should receive it in about two business days.”  iPhone SE – Dec 2020
  • 10:47am – Apple email: “We’ve received your product / we’ll start the repair now”.
  • 6:47pm – Apple email: “Your product will ship soon / our technicians have successfully repaired your product”.
  • 7:01pm – Apple email: “We’ve repaired your product / Your product has been repaired and we’re sending it back to you.

This is all much faster than I anticipated. (I was expecting a ~ 2-3 day turnaround in normal circumstances, and longer now, given social distancing disruption and the possibility of reduced staff levels due to illness.)

Receiving your phone

  • The “We’ve repaired your product” email identifies the courier as UKMail and had a tracking number to a Syncreon page which was active later that evening.  In fact, UKMail is part of DHL (presumably because they thought UKMail was a friendlier name for the British market).

Syncreon is a “supply chain solutions” company (a bit like Capita or Serco, but not quite) and one of the things they do is handle Apple’s delivery tracking.

In both cases – delivered by DHL the following afternoon. Note the Syncreon page shows basic tracking, including ‘Out for delivery’ status, but you will also find a  ‘manage your delivery’ link – this leads to a DHL UK homepage.  If you paste the tracking code in the email and your postcode again, it will give you a one hour estimated window, based on your position in the courier’s daily drop list (displayed below graphically).

An estimated time and position won’t appear until mid-morning, in one case an hour or two after the package was out for delivery.

As is currently the situation in the UK, couriers put the on the (open) doorstep, take a photo of it sitting there and ask for your name before leaving, as a contactless proof of delivery.

The phone comes wrapped in a UK DHL parcel bag (size medium) with a brand-new, taped grey box and the iPhone protected in the same way as when you sent it – padded bag inside white cardboard box.

I recommend keeping the boxes in case you ever need to send your phone to someone else.

Also in the box: an A5 sheet of paper labelled “AppleCare Product Service Summary”. It confirms you have a 90-day warranty on the repair.  The summary includes your repair ID and the phone’s serial number (which is enough to extract not just the storage size of the phone but also its colour and the various LTE bands).

Did I get my original phone back? Yes. Matching serial number and IMEI, and screen/case appeared in identical condition.

iOS software versions

On powering on, I used Coconut Battery to check the manufacturer date of the new battery:

iPhone 6S –  45 days old (good), 0 power cycles, only 10% charge (probably for safety reasons).
iPhone 5E – 268 days old (presumably because they are in lower demand), 30% charge (printed on the Product Service Summary)

For both a iPhone 6S running iOS14.2, and an iPhone 5E 1st gen running iOS13.7, I received the same phone back but with factory reset to iOS14.2. Upgrading the SE to the latest version before sending it in was deliberate on my part, to see if they would wipe it even though it was up to date. Whereas at a previous in-store replacement at Stormfront (a UK Apple service provider), the technician didn’t reset the device.  My guess is that this UTL load some diagnostic firmware onto the phone first and run tests, though why this wasn’t needed at an AASP I’m not sure (and with a Mac, you can boot a recovery partition from an external drive without needing to do anything to the phone, indeed with Filevault enabled).

Recommendation: as it’s always questionable to describe early versions of iOS releases as “finished”, I wouldn’t get a battery replacement soon after a new version has come out: wait until the .2 or .3 release, so you don’t end up with something that’s unstable, or has poor battery life, or new bugs in 3rd-party apps which the developers have not yet got around to fixing.

The Product Service Summary for both phones states:

“Our technicians also installed the latest operating system and confirmed that your product passed our quality tests”.

Restoring the phone from the backup

This will depend on your backup size, for reference, a 19GB backup took around 18 minutes to the first boot. The restore is enough to get you to the stage where you have an internet connected phone, a working home screen and the app download process has begun. This is very CPU intensive – and needed an additional half hour or so downloading the 140 apps I have on the phone.  iPhones from 2015 are limited not just by the CPU but also the NAND write speed  (e.g. an 7th generation iPod Touch (2019) will be considerably snappier when installing applications.)  Note: all your apps are downloaded online, but you get the version you had installed previously, not the latest one  (although it will often be a more recent app if you’ve migrated from iOS13 to iOS14).

I recommend backing up iOS devices with iTunes, not iCloud, for speed and security reasons.

iTunes will have restored your entire photo library (and seems now to download music too, or at least some of it).

The default COVID-19 exposure tracking settings for an iOS14 restore are for it to remain deactivated if it was previously switched off, but with the app availability notifications enabled.

The default bluetooth setting seems to be inconsistent (Apple used to reactivate it on each update, that isn’t always happening for me now.)

Your previous iOS software and app auto update toggle settings are all preserved, along with most other things (screen brightness, volume level and so on).

In short, iOS restore remains very slick / polished, though I did choose to power-cycle the phone after it apparently stalled on iCloud setting restoration.

Also, I was able to get through the entire reinstall process without the SIM inserted (in previous iterations the phone would have refused to go any further.)

Battery issue with iOS14 (and working fix)

After allowing ~48 hours for things to settle down, I was still losing an alarming amount of battery when the system was idle (e.g. 60% overnight).  Absolutely zero application usage was being reported during this time.  Tried removing widgets, but didn’t seriously expect this to work (and it didn’t) – besides, widget use should be reported in the table.

Battery loss was also happening during the day. It didn’t seem to happen whilst in full airplane mode (with no wi-fi) so my suspicions were Wi-Fi calling, or more likely, a corrupt wifi setting (this was a restore from a iOS 13.7 install to a 14.2 clear install, which could be problematic.)

Resolved by resetting network settings (in practice, all this requires you to do is re-enter wifi passwords – and if necessary, any static networking settings; note that wi-fi calling was still enabled without me needing to do anything.)   So try changing that, make a note of the battery life, and leave the system connected to wifi but idle for an hour or two and see if the battery is stable now.

It might be worth clearing network settings regardless if you’re upgrading to iOS14 – it’s a lot less hassle that starting completely from scratch (i.e. clean system where you restore apps and settings individually).

Overall verdict:

  • Fast process and minimal hassle.
  • Quite expensive (as expected), but thorough repair, was confident in the testing process, use new and genuine parts and you get 3 month warranty.

If anyone wants to fact check me on any of this, do feel free to email.

Switch to Gmail basic HTML with a simple URL change

updated 17 March 2021 (change to CSS selector needed)

HTML view

Rather than needing to use any menus or special links, you can just change the URL from:…


(where the 0 increments if you are switching between more than one account.)

Mobile view <– recommended

This is the same web app you’ll get in iOS on Safari.  It uses JS, it looks modern, and it’s very fast.  Disadvantages on desktop: you can only see a few messages at a time and there’s a seriously cutdown feature set – e.g. you can’t format or add attachments when composing – though most of the keyboard shortcuts work for navigating folders, searching, starting a new message (but again, not for formatting text).

However, the lack of bloat is a big deal – both from the lack of sluggishness when switching to a pinned tab of your inbox – also the mobile view is exactly what most people would have in mind when describing as a “distraction free” email environment, with the lack of menus, navigation bars, icons etc. (Even the plain HTML view is quite “busy” in this respect.)   You can switch back to desktop at any point via the settings menu.

I recommend using a browser custom stylesheet to make the width sensible on large monitors (unfortunately .qf is the only useful CSS class that Google add to the page, you may need to apply it only to the Gmail site via a browser extension):

 html.qf body {
  width: 600px;
  margin: 0 auto!important;


Benefits / situations where basic HTML or mobile views are useful:

  • poor connections
  • reduced memory usage (I had a Gmail tab that had been open for only a few hours, and switching to basic HTML cut memory use from 445MB to just over 200MB)
  • potential battery savings on mobile



Troubleshooting custom WordPress WP-CLI commands running on WP Engine’s SSH Gateway

This is a one line fix if you have missing string/array output from a custom WP-CLI command when using the WP Engine “SSH Gateway”.


    • WP Engine is a WordPress hosting company*.
    • They have an SSH Gateway – where you login to a separate machine and it will pass a limited range of useful commands to your actual server (basic file management, a MySQL console client, WP-CLI)
    • WP-CLI is a timesaving WordPress command line utility.

The problem is the unorthodox way the gateway works suppresses ordinary output from certain commands – e.g. print_r or echo.  Symptom: you run a  WP-CLI command of your own through the SSH gateway and lines of text you’re expecting are missing.

First, you should switch from WP_CLI::line() (deprecated now anyway) to WP_CLI::log() – the line() method doesn’t work because, if you dig into the source code, you’ll see it just echos the output, however log() uses the proper wp-cli Logger class.

That’s fine if you want to output strings. Unfortunately, it doesn’t work if you need to print an array.

This does though:

fwrite( STDOUT, print_r($foo, TRUE) );

To unpack that, we’re using print_r to neatly print the array. The second argument for print_r returns its value as a string.   You need not fopen STDOUT first, as you would for another file handle.

And that’s it.

* Would I recommend WP Engine? No, given I have hosting knowledge myself, and when I asked for their assistance with this particular problem, their support agent told me it was out of scope and I should look at StackOverflow, for which they have earned this mildly passive aggressive paragraph in a blog post that will sink without trace.   However, many people do like them, and if you’re a WordPress developer, you may well inherit a client with a site hosted there one day.