How to fix “The Plugin Store is not available” in Craft

If you get the following error message when accessing the plugin store in Craft 3, this might be the solution. The Plugin Store is not available Open the Chrome Developer Tools console and reload the page. In the network tab, the request to the plugin store should return an HTTP 500 error. If you look […]

How to fix HP scanning errors in MacOS

If you made the mistake of buying an HP printer and encountered one of the following symptoms: Scanner does not work. Both HP Easy Scan and the OSX Printers and Scanners utilities fail. Printing might still work. In HP Easy Scan, you get a message that says Scanner reported an error: An error occurred while […]

Why Chrome 72 broke your Chromecast app

Since Chrome 72 came out, the Chromecast button stopped working on my home server. Plex and Emby users report similar having issues. This change was not officially announced, but it happens on all platforms. If your Chromecast sender application stopped working, it’s probably because Chrome only supports casting from HTTPS sources since Chrome 72 (released […]

How to clear Terminal output on Mac

If you want to delete all previous output in an OS X terminal window, just press Cmd + K. This will clear the output, but it won’t kill the currently running tasks. I often use this command to remove thousands of lines of logs, so that the new output is easier to search. If you […]

How to change the default Google Assistant timer and clock

A few weeks ago, I bought a Samsung S9. The hardware is great, but the software is terrible. The first thing I did was uninstall the Samsung bloatware and install my favourite apps. I replaced Samsung Clock with Google Clock. Google Clock allows you to set multiple timers, among other things. You might also want […]

How to flatten a directory on Linux and MacOS

If you want to flatten a directory with lots of deeply nested files (for example ./2012/06/09/images/previews/200×200/image1.jpg becomes ./image1.jpg), you can run this simple command: find target/ -mindepth 2 -type f -exec mv -i ‘{}’ target/ ‘;’ All the files in target‘s subdirectories will be moved directly under target. If multiple files have the same name […]

LocalStorage gotchas in Internet Explorer and Safari

localStorage.setItem will throw an “Access denied” error in Internet Explorer InPrivate Browsing mode. Likewise, Safari will give you QUOTA_EXCEEDED_ERR: DOM Exception 22: An attempt was made to add something to storage that exceeded the quota. To avoid those errors, you will need to wrap your localStorage access in a try/catch block.

How to speed up apt-get on Digital Ocean

For some reason, downloading packages using apt-get install was unusually slow on DigitalOcean this week, barely exceeding 4kbps. Since DigitalOcean droplets are configured to download packages from mirrors.digitalocean.com, all I had to do was to revert them to the default Ubuntu sources using these two commands: sudo sed -i “s/mirrors.digitalocean/archive\.ubuntu/g” /etc/apt/sources.list sudo apt-get update Downloads […]

Deleting directories while preserving symlinks

At work, we needed to replace a pre-existing folder with a symlink. We wanted to symlink the user’s .git/hooks folder to ../build/git-hooks every time the script was run. We wanted to delete .git/hooks if it existed and replace it with a symlink, but we also wanted to avoid deleting ../build/git-hooks‘s contents by accident if the […]