The optional module, imagick, is not installed, or has been disabled – Digital Ocean

Before I start, the full disclosure is I don’t think this error message makes much difference. After resolving this I have not noticed any improvements with image handling, but some-people (me included) just like clearing warning messages! So, if you’re like me and just want to get rid of the bits of red on your WordPress health check then here’s some help.

The Error:

When running a WordPress health check you will get the following error

The WordPress Hosting Team maintains a list of those modules, both recommended and required, in the team handbook (opens in a new tab).

Warning The optional module, imagick, is not installed, or has been disabled.


What does Imagick do?

To use their own words “Imagick is a native php extension to create and modify images using the ImageMagick API”. it will enable you to edit your images much easier with the ability to add in loads of different effects and customisations natively in the WordPress media gallery.

It is also used to optimise the image you upload to WordPress and create different version fo images for different situations. Imagick also works with a larger range of image types and is thought to produce higher quality images overall. With that said, WordPress functions perfectly fine without it so installing is at your own risk and completely up to you.

The Fix For Digital Ocean Hosting:

On Debian/Ubuntu SSH into your server using terminal and do the following:

$ sudo apt install php-imagick
$ sudo systemctl reload apache2

If you run the PHP-FPM service, you also need to restart PHP-FPM service for Apache.

If you are hosting on anything else, or don’t have access to your server please consult with your host to solve this issue. Also note that the module is optional and not required, to reinforced what I have said previously I have noticed zero difference and merely did it to get rid of the warning – do so at your own risk.


How To Do An EE Digital eSim Swop

Despite it being a standard feature in many Android phones it took Apple until the iPhone XS to implement a dual sim of sorts. Even then you need to have one as an eSim and that limits the networks that can support it. Thankfully EE were one of the first, so for the last few years I have been using two sims in my iPhone, one for work and one for personal.

One major pain is dealing with moving phones. I do that quite a bit, so ordering a paper EE eSim each time became a pain, not to mention an expense at £1.50 a time. Preplanning helps a little, but there has still been times I’ve been without service because I’ve broken my phone and can’t just pop my sim in another.

Thankfully EE have a solution, and you can now download an EE eSim for your iPhone in seconds! Here’s how to do a digital EE eSim swop.

You will need your current sim to be working to receive a text message, and also have already set up your new handset and downloaded the My EE app.

Once you’ve done that on your new phone in the My EE app, open the menu and go to Settings > Device and SIM > Replace my SIM > and select your number.

You will then have two options on supporting devices, SIM card — Post (2 to 4 days) at a cost of £1.50. Or eSim — instant download at a cost of 50p.

Tap on eSim, then select this device, and you’ll be on your way to transferring your number.

You will then get a notification that the eSim is ready to download, and then you can go through the normal set up options. This gives you the facility to choose labels for the numbers, which iMessage number is used and lots of others. Once completed you will need to activate the new sim by receiving a text to your old phone, put the supplied code into the app on your new phone, and you’re ready to go.

This is usually instant but can take unto an hour, turn your new phone off and on again to refresh everything, and you’re good to go on your new handset with a new EE eSim.

Head into Settings > Mobile data to change any of the options you’re selected on set up. If in any doubt call 150 from a working EE phone.

Ghost Members Sign Up Form Not Working? Three Things To Check

Sending email newsletters from Ghost can be a draughting experience, especially if you have not done anything like this before. A big issue I have come across is the signup form not working for people trying to get set up. It either does nothing, or just spins and doesn’t set up a subscriber.

This is more than likely due to the email service and nothing you have done wrong. Emails are actually split into two types on Ghost so you might be able to send out a newsletter to thousands of people, but none of them are able to log in. The two types of emails sent by your Ghost install are:

  • Bulk – Your actual newsletter. So you can send test emails and posts out to all of your subscribers.
  • Transactional – These are everything else. Sign up emails, log in emails and everything else to do with memberships.

If you’re having issues these areas are where to check.

Set Up Mailgun API

Chances are you’ve already done this, most guides walk you through this part. Head into your Labs section, turn on Members and at the bottom under Email Newsletter settings paste in your Mailgun API and the domain you are using.

If in doubt click on the links under the boxes to head straight to the area you need in Mailgun. Don’t forget to change your region to EU if you have an EU flag next to your domain.

This will enable you to send all your ‘bulk’ emails.

Set Up SMTP

Depending on where you host your Ghost blog, this part may not be needed, however if your on Digital Ocean like me, you’ll need to send your transactional emails by SMTP and not direct from your server.

SSH into your droplet and

nano /var/www/ghost/config.production.json

Then copy in this code to replace the mail JSON item that is there already. Changing the “user” and “pass” to your own Mailgun details.

If you have a droplet in the EU change the “host” to your version.

"mail": {
"from": "Your name <noreply@your_domain>",
"transport": "SMTP",
"options": {
"service": "Mailgun",
"host": "smtp.mailgun.org",
"port": 465,
"secureConnection": true,
"auth": {
"user": "your_user_name",
"pass": "your_password"
}
}
},

Also set the email you want these transaction emails to appear from as this is different from your newsletter ones. An email address that is in use anyway is advisable to avoid spam filters.

This should allow you to send all of your transactional emails.

Check Domain And SSL

This is the part that drove me crazy. I have set everything up and still my Ghost members subscribe from did not work. This was due to a miss match in the domain set up in my production.json. So head back into there:

nano /var/www/ghost/config.production.json

And check right at the top where it says “URL” that this is https:// and not http:// if you are using SSL – which you will be.

"url": "https://YOURDOMAIN",

Your sign up form should now be working correctly and you can start gaining subscribers!

MX Master 3 Freezing On Mac? Here’s The Fix!

After denying it for quite a while, I succumbed to getting myself a third-party mouse, and you can’t buy anything other than the MX Master 3. It’s more comfortable, more accurate and is packed full of power user features that allow you to mould its usage to your will. There is one small issue though, every so often an update comes around which causes the mouse to freeze and disconnect at random intervals — but here’s the fix.

If you have this issue, each time the MX Master 3 freezes up you will notice random Bluetooth devices connect and disconnect before disappearing. This happens at random intervals and lasts for anywhere between a few seconds up to a minute. All the time you will be unable to use the mouse. It looks something like this.

The issue stems from Apples use of hand off. An amazing feature that allows you to move seamlessly from device to device with minimal fuss — but also with a tendency to break things that don’t work with it. If you’ve got your mouse paired to more than one device using the same iCloud, Apple is trying to sync them across all of them and failing.


The MX Master supports up to three devices with the click of a button, so I have no idea why iCloud is trying to do this, but they broke it nonetheless. To fix this, head into System Preferences > General > and untick the box next to ‘Allow handoff between this Mac and your iCloud devices’.

You will suffer if you use AirPods or something meant to use handoff between your devices — but your mouse will function as it should!

How To Start Hacking Roam Research

As with everything I get invested in I like to go in deep and see what it can really do. One of the easiest ways to start to mould Roam Research to your will and make it unique for your use case is to add in CSS or JS. These are two official supported ways that are easy to implement and can also be removes at your will.

Roam/css

You can easily change the look and feel of Roam by tweaking the CSS of the pages. This can go from a little light modding, to in-depth changes on how the layout looks.

To start create a page called roam/css and simply add in a code block that specifies css. There are a huge range of options available already created and shared on the help pages. I am currently using ‘Better Roam Research’ to add in dark mode.

Don’t forget to change the code block to specify css, it defaults to Clojure.

Roam/js

If you want to go further into Roam and really start building things that customise it to your usage then roam/js is the place to be. There are a huge number of scripts available that do everything from add more buttons, to change the way Roam works in the browser.

To add in this capability create a page call roam/js or just a block with this as its only contents. Nested under this write the following. {{[[roam/js]]}}, this will give you the following warning.

It is worth paying attention to this, and only run scripts you are familiar with as there are security and safety issues to bear in mind with javascript. If you are completely sure, click “Yes, I know what I am doing” once you have nested the script you wish to use underneath. You can stop the js from running at any point by clicking “stop this”.

This particular script I am running allows me to clear out empty Daily Notes pages and can be found here.

Posting Read Books On Goodreads To Micropub

After spending some time setting up posting films to micropub, I really wanted to get my reading sorted. There are great options out there like indiebookclub – but I wanted to automate it and make it possible every time I finish a book on my kindle.

With nothing fitting the bill I delved into the API (which is pretty good by the way) and came up with a solution. It relies on a developer key from Goodreads so I don’t promise how long this will work, they could pull this or remove your access to it at any point.

Developer Key

Goodreads will let anyone set up a developer key for access to their API, all you need to add are a few details about yourself and agree to the developer terms. If you break these terms, they are well within their right to stop you using the service – so please read them.

Once agreed, you will need the top part labeled ‘key’ – keep this safe and don’t share it with anyone as it gives access to all of your information and you can read/write to your Goodreads account with it. A full list of API abilities are available here.

From here I researched what is available through the API and discovered you can pull books you have read from the following feed.

https://www.goodreads.com/review/list/[ID].xml?key=[key]&shelf=read

I have focused on updating micro.pub whenever I finish a book, but you can find extra information about books in your shelf by chaining after the & to be currently-reading or to-read.

IFTTT

Once you have this information it is pretty easy to set up a posting trigger in your service of choice. IFTTT is completely free so is a win straight off the bat, but as a caveat is a little more complex to set up and I found a little limited to work with. This is personal preference, of course, but IFTTT is still very straight forward to set up.

Click on Create and chose RSS as your IF (the trigger), choose new item in feed and paste in your RSS feed. The Then (action) part is a Webhook to allow you to post to micropub services. For this example, I am going to run through micro.blog, but they all will all be pretty much the same.

Make a web request, and then put in the URL of your service, in this case it is https://micro.blog/micropub. Method is POST and content type is usually application/x-form-url-encoded. In the body you need two bits of information, an access code and what you want the post to display. This will be dependent on your service but in my micro.blog case I use the following.

access_token=ABCDEF&content={{EntryContent}}&name={{ItemTitle}}

With the access token generated in the setting of my micro.blog.

You can customise the body content to whatever you want to display in the post. If you leave this as is, then it will display the raw content of the RSS feed.

Zapier

This is a much more rounded service that makes it much easier to customise the post content, but at a cost of £20 per month. For this cost, you get the ability to automate many more things, so it might be worth considering but please bear this in mind.

Start by creating a new Zap, the trigger is RSS and the event is a new item in the feed. Paste in the RSS feed you have saved and that is all you need to do on this step as you don’t need any information to access this feed. On the next step Zapier will find the data — so make sure you’ve at least read one book, and then pull everything into Zapier.

The action is Webhooks, and the action event needs to be POST to tell micropub to post information. By customising the request you can go as deep as you like, this is where Zapier makes it so easy to post images, ratings and everything the feed contains effortlessly and understandably. To do this put the Micropub url into the first box, in my case this is https://micro.blog/micropub and leave the Payload type as Form.

Click the plus sign under Data, and type content into the first box, and then you can customise the post until your heart is content. Click the plus button again and type access_token into the first box and in the second one copy in an access code from micro.blog. Your service may not require this, but will usually require some kind of authentication.

All the other topics can remain as they are by default, by clicking continue you are given the option to test the post. Do this and check that everything appears correctly — you can always go back and change things before re-testing. This is another option that makes Zapier a great service to work with. Once you’re happy, finish everything off and now every time you finish a book it will post to Micropub.

How To Post Films Watched To Micropub

I am currently experimenting with moving all of my social things to micro.blog. I know I have tried this before (twice) but this time I don’t want it to be my blog I just want a place to hang out and post everything to. This will mainly be an Instagram replacement, posting checkins as most importantly books and films I have watched.

I can’t quite work out Goodreads yet, but by using Letterboxed I can post watched film easily using Micropub. You can of course use this with micro.blog but also with any service that support Micropub, so also applies to WordPress and other more mainstream services.

Choose your way

There are two relatively easy ways to do this, one free and one paid, both with pros and cons. They both rely on singing up to Letterboxed, and using your profile RSS feed to post updates. So, whichever you choose, you will need to sign up and then copy your feed address from your profile page. Once logged in, on the menu bar furthest to the right you will notice an RSS icon. Right click and copy this first.

IFTTT

This method is completely free so is a win straight off the bat, but as a caveat is a little more complex to set up and I found a little limited to work with. This is personal preference, of course, but IFTTT is still very straight forward to set up.

Click on Create and chose RSS as your IF (the trigger), choose new item in feed and paste in your RSS feed from Letterboxed. The Then (action) part is a Webhook to allow you to post to micropub services. For this example, I am going to run through a micro.blog, but they will all be pretty much the same.

Screenshot 2020 07 24 at 09 27 01 1Make a web request, and then put in the URL of your service, in this case it is https://micro.blog/micropub. Method is POST and content type is usually application/x-form-url-encoded. In the body you need two bits of information, an access code and what you want the post to display. This will be dependent on your device but in my micro.blog case I use the following.

access_token=ABCDEF&content={{EntryContent}}&name={{ItemTitle}}

With the access token generated in my setting of my micro.blog.

You can customise the body content to whatever you want to display in the post. If you leave this as is, then it will display the raw content of the RSS feed.

Zapier

This is a much more rounded service that makes it much easier to customise the post content, but at a cost of £20 per month. For this cost, you get the ability to automate many more things, so it might be worth considering but please bear this in mind.

Screenshot 2020 07 24 at 09 11 31 1Start by creating a new Zap, the trigger is RSS and the event is a new item in the feed, Past in the Letterboxed RSS feed you have saved and that is all you need to do on this step as you don’t need any information to access this feed. On the next step Zapier will find the data — so make sure you’ve at least recorded one watched film, and then pull everything into Zapier.

The action is Webhooks, and the action event needs to be POST to tell micropub to post information. By customising the request you can go as deep as you like, this is where Zapier makes it so easy to post images, ratings and everything the feed contains effortlessly and understandably. To do this put the Micropub url into the first box, in my case this is https://micro.blog/micropub and leave the Payload type and Form.

Click the plus sign under Data, and type content into the first box, and then you can customise the post until your heart is content. Click the plus button again and type access_token into the first box and in the second one copy in an access code from micro.blog. Your service may not require this, but will usually require some kind of authentication.

Screenshot 2020 07 24 at 09 12 01 1All the other topics can remain as they are by default, by clicking continue you are given the option to test the post. Do this and check that everything appears correctly — you can always go back and change things before re-testing. This is another option that makes Zapier a great service to work with. Once you’re happy, finish everything off and now every time you review a film it will post to Micropub.

How To Track Zwift Route Badges

I would hope that no body starts morning that I am not writing about enough technology lately, but I’m finding it hard to write about anything at all. Never mind getting motivated to write about the very little news going around. I have been spending my time riding my bike when weather allows, but when the bad weather comes I have to take it inside to the virtual playground of Zwift.

Writing recently in my newsletter I covered my love of the cycling (and running) platform and trying to gamify my cycling as much as possible. I’m still in the very early stages but having just crossed into level 11, my aim is to complete as many of the available routes as possible. Unfortunately Zwift is not great at this, and although the information is obtainable, it’s not easy to work with. So I spent some time building a way to track it.


There are loads of posts discussing several online and offline manual methods plotting out distances, XP points and the dreaded hilly bits. Thankfully a huge amount of data exists about each route, because so many people have ridden them. While looking for ways to automate this I stumbled on some spreadsheet methods on Reddit, and put together my own version combining several of them.

It’s dead easy to use, most routes link to information about the route you will take and the world used. The spreadsheet itself outlines distance covered (KM) and distance claimed (M) during the route, as well as the XP you will be rewarded for completing it. After a few weeks I am only at 12 % due to better weather currently, but I have done some of the worst – Road to Sky up Alpe Du Zwift, and Mountain 8 up the Epic KOM I particularly hated.


Don’t forget some worlds are only open on certain days so plan accordingly. Grab the spreadsheet from here and start Zwifting!

Cracking the Todoist Code

Since sharing my Todoist set up and how I get things done loads of people have given me some ideas and shared their experience. One of which I wanted to try to help out with, and that is the natural language input. This feels amazingly natural to me, but for some feels like a bit of a code — so let’s crack it together.

On Mac, you can use Control+Command+A to open quick add. Or to start your entry, regardless of platform, just tap or click on the Plus icon. Quick Add is the fastest way to:

  • Add a new task
  • Set a due date and time for a task
  • Attach a label to a task
  • Set the priority level for a task
  • Add a task to a project
  • Assign a task to a collaborator

Date And Time

If you can’t crack this bit then there might not be much help for you, as it’s that easy. Simply write out when you want to complete the task exactly how you would say it. For example, “tomorrow at 4pm” or “every other Tuesday starting March 3rd”.

Call mum next wednesday at 2pm

This can be as simple or as powerful as you need it to be. Most tasks you add will have a context date e.g. next Friday, or an actual date 2nd March, but some don’t fit into this pattern. Luckily, Todoist understands even complicated expressions and will interrupt what you need pretty much all the time.

Repeating Tasks

For things that crop up regularly, or just every so often, you will soon get to grips with typing ‘every’ to get these set up. Every is the start of all things repeating and is really helpful for even the most complex things.

Call mum every wednesday

But it doesn’t have to stop there, you can arrange tasks for whenever suits you.

Call mum every other week day

Call mum every wedneday june 2nd to july 1st

For those tasks that you want to happen a specific period after you complete it put in an !.

Call mum every! week

This will set up a task to call mum exactly a week after you complete the last item. You can of course use every! Day, month, year — depends on how often you want to do it.

Labels

Labels help me highlight something that I want to know at specific times. For example, I have a morning tag, and a someday tag, so I don’t need to give these due dates or times, but I can find these tasks easily when required.

To add a tag just put a @ before the name.

Call mum next wednesday @morning

You can make these as complex or as easy as you like. Some people like to have tags for tasks they need to do while driving, or when they have a spare 5 minutes.

Call mum next wednesday @driving

Screenshot 2020 05 20 at 14 12 45 1

Priority

I have never adopted priorities in either email flags or my tasks, but it helps hugely if you want to sift through all your tasks and really get down to how important things are. To assign a priority (flag) just type p1, p2 or p3.

Call mum next wednesday p1

So, when your tasks are listed in Today view or Upcoming view they will be sorted by priority so you can get the most important things done first.

Projects

Projects are the main sorting point for most users set up in Todoist. They can be used in a variety of ways to highlight long-term project or simply having an area to assign task to — such as home and work.

To move a task to a project you simply put a # before it. You can type all of it out or just the first few letters and then tap on the suggestion.

Call Mum next wednesday #home

Todoist Quick Add 1

Collaborator

If you need some help, or just want to allocate your task to someone else that you work with, you can do this by typing a + and then their name. Again type it all out, or just the first few letters and then tap their name in the popup suggestion.

Call Mum next wednesday +Jon

This is only possible in shared projects so make sure you have assigned the correct project first. The above example would not work, but the following will if you share a home project with Jon.

Call mum next wednesday #home +Jon



Linking it all

The real power of all these ‘codes’ is that you can link them all together and make powerful but quick entires into your task list. This rapidly becomes second nature and allows you to brain dump effortlessly with minimal sorting afterwards.

So setting a reminder to call mum at 7pm every 7 days for 8 weeks, adding it to your routines task and attaching a personal tag becomes

call mum every! week until 8th july #routines @personal

You’ll be using Todoist as power user in no time and setting it up to remind you of everything you need. Why not sign up and give it a shot as I’d love to see your setups or how you use Todoist to help you get things done.

How I use Todoist To Organise My Life

So. No apologies here, but I ripped off this idea directly from Matt Birchler’s write-up on his Things set up. Even though he is a strong believer in the ability of Things, and also everyone in the replies seems to think the Todoist design is trash, I think very much that we have the same outlook on GTD. The basis of this revolves around “offloading your brain” so you can focus on other things.

I never set levels of tasks that I HAVE to get done each day, but I DO aim to get 3 main things ticked off each working day. This set up has been how I get everything done daily and also why I forget loads of meaningless stuff. I would love you all to give Todoist a try here. This isn’t a GTD set up, but it’s my set up and it all starts with the Inbox.

Inbox

More or less everything starts life in here. All my tasks from heavy-duty projects to simple reminders start life as a string of text in my inbox. Having tried almost all the major task managers, I am sure most people would agree that Todoist does it best for just dumping everything in and this is the reason why I struggle to take to any other app.

Todoist Setup Screenshots 1

Whenever any tasks arise I use the Mac shortcut or the widget on iOS to quickly add it to my inbox. If the task can be done straight away and within 5 minutes this is the only time it doesn’t get added because I will complete that task straight away. If I know when it needs to be done I can allocate the due date then in natural language and forget about it.

The power of being able to just type out something like “follow up with Geoff in 2 months #work” and never have to think about it again is the biggest thing that improves my productivity and also my mental health.

Moving And Tagging

I have a recurring task to sort my Inbox at 7:30 every morning which is usually the time I am sitting down at my desk. I tried doing this as my last thing each day but it didn’t stick. My habits dictate I never leave work without having completed everything or moved things to the following day so this became the best way for me to pick anything up that has been missed or cropped up later.

The next stage of my to-dos life begins when this notification goes off. I then go through all of my tasks, allocating them due dates and times and moving them to projects. As with the Inbox, if I can do this straight away and within 5-10 minutes I will do this task and cross it off. So, not every task lives a long life or makes it any further than my inbox.


Projects

I don’t use Projects as Todoist intend, or indeed how any task manager apps think you will use it. This is simply because I never really have many large scale projects to complete. I have just a few that I use more like areas that my task relates to. These are:

  • One-Off tasks – anything that I need to get done and that’s the end of it. Most home things end up here.
  • Work – most of my stuff ends up here, small or large tasks to get done. Going forward my team will move to a shared Task managing platform, so we can allocate things, but at the moment this is just me.
  • Routines – Anything that is reoccurring such as put the bin out, read my meters, set my Strava goals for the week.
  • Creative – any writing tasks or newsletter projects I want to complete. These usually contain a link to the relevant Ulysses Sheet.

Todoist Upcoming Mac 1

The Upcoming Screen

This is where I spend most of my time, with the upcoming screen (previously next 7 days) of the Mac app open. This gives me an overview of the next few days, and allows me to put in times if I need to and arrange my day fully. There is never a time that a task doesn’t have a due date, so this screen gives me everything.

I am not afraid to push something if other things crop up so from this screen I can just drag a task to another day, but also add tasks for other days effortlessly. Before the upcoming screen I found myself switching between areas depending on what I was doing, so now things are much more streamlined. I have a calendar subscription set up for an overview if I am not sat at my desk, this works really well with the Stock iOS app.


Little Tricks

I have picked up some little things over the few years I have been using Todoist that really help me. These don’t fit into any area but are worth sharing anyway.

  • Event Tickets – if I am going anywhere I save a PDF of the tickets (either the email or the web conformation) attach this to a reminder that pops up and the event start time. That way I am not searching my emails when I get there.
  • Morning Tag – This is a new one stolen from Matt, but is working very well. Instead of trying to guess times, anything that I want to do first thing I allocate a Morning tag to.
  • Drag in Emails – If you use Apple Mail on Mac or iPadOS you can drag in an email as a Todoist item and it will link straight to it. Mind Blown.
  • Browser extension – Get this to save any Safari links you need to refer to.
  • Due dates based on last completed date – If you want to set a reoccurring reminder for a length of time after that last one use a ! After the every. For example, “task every! week” will create a task one week after you complete the last one.

Improvements

There are a few things that I do desire from Things. None of these are critical, I wouldn’t say I miss them, but would help for my specific use case.

  • Create Project – There are times when I create items that then turn into a much larger project. I currently have to copy these into a new project, but in Things the option exists to create one from an item.
  • Someday – I long for this to be an option in Todoist. I just like to dump longer term things into here and leave them to plan later. I have tried to do something similar with tags but it just never really stuck.
  • Start Dates – oh boy this is a big one. I want to be able to set a start date for some tasks that take a while or are easier done slowly over time such as writing my newsletter. Currently, I have to set a “start newsletter” task and then another “finish newsletter” task. I would love to set it as a current task or ongoing task in Upcoming.
  • Calendar Items – Another big one I would love is to see upcoming calendar events in the Upcoming screen, so I can work my tasks around meetings.


The End

There are a ridiculous number of apps and services I have tried, and I still get suckered into new ones all the time. However, Todoist works well for me, and has done for years. My set up has gone through so many changes that it doesn’t resemble anything like what I started with and will probably change in the future. The great thing is that Todoist is available everywhere, and is improving all the time.

Check out Todoist and share your set up with me.