Getting art from the National Gallery into Animal Crossing: New Horizons

Animal Crossing: New Horizons is a good game to play during the Great Coronavirus Lockdown of 2020. Even without the bits where you get rewarded for Just Buying More Stuff, it’s a handy reminder whilst we’re not at work of the rewards that capitalism provides for exploiting nature.


In the game you can create little 32×32 artworks which you can display on easels, or floors or your own clothes. Drawing your own pictures is relaxing, but hard.

Getty have provided a tool (explanatory blog post here) which lets you convert any of their artworks into a QR code which you can scan on your phone and send to the game.

For example, here is Picasso’s self-portrait:

They have also provided an importer which takes an IIIF metadata file and allows you to send the image described by the metadata into your game. There is a list of IIIF-participating organisations but navigating those sites and finding works which actually have the IIIF metadata is a giant pain in the ass, so I gave up with that list and wondered about the National Gallery. It’s not on the IIIF’s list, but it turns out that they do have a research wiki and do actually have a test IIIF server!

All you have to do is search and find a painting you like, right-click the red and blue “iiif” logo in the top right corner, copy the URL it links to and paste it into the importer. With luck you’ll then just need to scroll back up to see your imported painting, ready for you to scan!

This means that you can import works like van Gogh’s Sunflowers straight into Animal Crossing to impress all your island visitors. Have fun decorating!

Take note of Inkdrop

Note-taking is a tricky business, especially if you want to be able to easily read and edit them on multiple devices. The things I want to be able to do sounds easy enough: simple Markdown editing, backed by Dropbox, with full-text search, on desktop and mobile. The desktop part of this is easy enough – hello Notepad!

For years I did this very happily on mobile with an app on my Android phone called Draft. It’s since ceased development and isn’t available in the Play store any more (here it is on APK Mirror), and so for a few years I’ve had a simple “docs” folder in my Dropbox, which is full of Markdown-formatted notes, manually sorted into directories.

Whilst this fulfils my minimal requirements, it’s a pain in the ass to find the right note quickly, and the editing experience is far less than ideal. I’ve tried a few other note editors, but I got on with the UI of Draft so well that everything else feels like a poor imitation (the author of Draft does publish other apps and I am a fan of his Feedly client – Newsfold).

And so like all great leaders brought low, I compromised on my ideals.

After looking around, I have landed on Inkdrop. It’s come up a few times on Hacker News since the author has been quite open about making subscriptions to this app his sole source of income (there is a 60 day trial before you have to provide any bank details).

So: simple Markdown editing, cloud sync (not Dropbox), with full-text search, on desktop and mobile. The mobile app does have some text-editing problems because of the component being used, but it’s not (currently) a deal-breaker.

If I do end up wanting to move away from it, there is an “Export all as Markdown” option, which reassures me (even if the filenames are prefixed with an ID), but once I’ve used it for a few more months I may even want to import all my old Markdown notes. There’s no native functionality for this, but Inkdrop lets you write your own plugins, and someone has already written an “Import Markdown” plugin that looks like it should do the job.

So far, I’m a very happy customer, and provided you’re not after a direct Evernote replacement, you probably will be too. There’s even a pre-trial demo version so you can try the UI without having to sign up at all. Give it a go!

Setting up colourised svn diffs

This is mundane, but something I will no doubt forget, and so for my own posterity:

The svn diff is monochrome by default. Let’s install colordiff and change that.

sudo apt-get install colordiff
vi ~/.subversion/config

In the [helpers] section set the diff command to /usr/bin/colordiff

To ensure that when you do svn diff | less the control characters for the colours are rendered correctly you’ll need to set the default options for less:

Edit ~/.bash_profile and add

export LESS=R

Then run source ~/.bash_profile. Done!

Replay of the Wild

It’s not often I want to replay a computer game, but Breath of the Wild is one of those games. I completed it in 2017 after around 160 hours of playtime on the Wii U, and was so exhausted with it I remember clearly thinking that this was a game that had been a wonderful experience but couldn’t be replayed.

18 months later and I was given a copy of the game for the Switch and it took me a few months before I put it in, but as soon I did I was excited to explore the vast open spaces of the Kingdom of Hyrule once again.

The game is pretty much identical to the version I’d already played on the Wii U, with maybe a slightly longer draw distance, but even when playing in handheld mode you still get an incredible sense of exploration and space. Despite winning multiple “Game of the Year” awards, one of the main criticisms with it has been that the world you explore is just too empty; although I agree with this, it’s the absence of other characters which gives you such a sense of freedom in the game and gives you the space to experiment and play with the world without feeling a sense of pressure to complete the next step in the story or the next side quest (and heaven knows there are enough of them!).

Basically, this game is not only beautiful but a joy to play, and I’m loving running, flying and swimming through it all over again. I’m 60 hours in, and I can only hope it doesn’t end too soon.

Art detail

Spider-Man: Into the Spider-Verse is the best film I’ve seen in the last six months. It’s imaginative, exciting, funny and constantly visually inventive.

If that wasn’t enough, the artists have posted a slew of content about little details in the film (which Simon Willison has gathered in a twitter thread), and interviewed the team about the processes they used to create such great results. They used and abused their pre-existing in-house tools which allowed them to write custom Python code and use procedural generation to prototype and create detailed CG effects that looked and felt hand-drawn, which is incredible.

And hey, if you want, you can even read the screenplay! Excelsior!

Beautiful world history

Twitter is mostly a cesspit of wailing and existential despair and so I avoid it, but the one beacon of light which does call me back in on a regular basis is Ticia Verveer’s account.

Ticia is an archaeologist who regularly posts photos and articles of incredible discoveries from around the world, from a display of noses once used to “repair” Roman and Greek marble statues in the 19th century to Iron Age mudbricks with 3,000 year old finger impressions.

There’s a constant stream of something to learn and wonder at, and isn’t that what we really want from the internet?

Stop yourself from committing to master with git hooks

This is based on the excellent work of Aaron Hoffman which he’s written up here.

This process adds two git hooks to your repositories which prevent you from committing or pushing to a branch named master.

Add directories

Git hooks live in each of your git repositories rather than in a global location, and so the first thing to do is create the files which will be copied into each repository when you do a git clone (or a git init in an existing local repository).

mkdir -p ~/.git-templates/hooks

Add git hooks

Create a file called pre-commit and give it this content:

prevent commit to local master branch
branch=git symbolic-ref HEAD
if [ "$branch" = "refs/heads/master" ]; then
echo "pre-commit hook: Can not commit to the local master branch."
exit 1

Create a file called pre-push and give it this content:

Prevent push to remote master branch
while read local_ref local_sha remote_ref remote_sha
if [ "$remote_ref" = "refs/heads/master" ]; then
echo "pre-push hook: Can not push to remote master branch."
exit 1
exit 0

Mark them as executable

chmod a+x .git-templates/hooks/*

Set the git init.templateDir configuration variable

git config --global init.templateDir '~/.git-templates'

Add the hooks to an existing local repository clone

Run git init while in your local clone directory. This is a non-destructive command which will copy the new hooks into your REPO/.git/hooks directory

You can double-check the git-init docs if you’re nervous before doing this!

Add the hooks when you clone a repository

Just clone the repo and your hooks will be in the .git/hooks directory!


You will no longer get the sample git hooks copied into REPO/.git/hooks, nor the sample excludes file but they will continue to exist in /usr/share/git-core/templates and can be copied into your ~/.git-templates directory if you want to keep them.

Pentaho problems

I am finding myself using a lot of Pentaho Data Integration at the moment.

It’s a good, powerful, tool, but my god does it have some annoyances.

It’s a drag and drop tool that allows you to process massive amounts of data in parallel, without needing to be an almighty data analyst already. This means that you can bring up the configuration windows for each data processing step you’re working with at the same time, so you can check you’ve named all your variables correctly, and so on.

It has a help system built in, which pops up a window containing the wiki page for the step you’re working with. Except that the help window is modal. The only modal window in the whole application is the one which gives you a guide on what to type into which box or which contains example and values that you might want to copy/paste into your step. Except you can’t. Because modal.

As you run your data process, Pentaho marks each step as in progress, or successful. Except that if you have your process divided up into multiple data transformations then you can only check the status correctly if you close all but the first transformation in the process, run it, and then re-open the sub-transformations from there. Baffling.

When your transformations are running you get a nice real-time log of what’s happening at the bottom of your screen, which you can scroll through. Except that as new lines are added to the log it scrolls it to the bottom. Good luck finding the log message you were looking at before!

More complaining into the void next time! Hope you’re looking forward to it as much as I am!

Downloading a Udemy course

I have bought Go: The Complete Developer’s Guide on Udemy. It’s been a good intro so far, but there are more than 90 videos, and I’d quite like to do some each day at work, where streaming video isn’t always allowed.

The author of this course has allowed his videos to be downloaded, but that’s on a video-by-video basis. I’d like to grab all of them.

udemy-dl has me covered, downloading all the videos in mp4 format and grabbing the subtitles too. This is almost certainly against the Udemy terms and conditions, but in practice will be very useful. Who knows, maybe I’ll even end up buying more courses!