Jiayu's Blog

Blog subtitle

My Huawei Honorcup Marathon 2 experience

In October this year, I took part in the Huawei Honorcup Marathon 2 conducted by Codeforces, with a first prize of USD$10,000 at stake, and managed to place 59th out of 236 submissions globally. I didn't win the USD$10,000, nor any Huawei devices or a job.

Managing personal DNS records with Terraform

If you own a domain or run a website, chances are you had to set some DNS records before. The usual way of doing this involves logging in to your account on your registrar's website and clicking your way through their UI.


I think Terraria is a great game, and according to Steam I've spent 572 hours of my life in it. I'm eagerly awaiting the 1.4 update, and when its out I want to run a server and start over with some friends.

Automatically solving picross puzzles from a screenshot

I recently worked on a picross solver that solves puzzles from a screenshot of the puzzle. The solver uses traditional image processing techniques (without machine learning) to recognise puzzle hints from a screenshot, and constraint programming to find a solution.

Deploying Leiningen projects to GitHub Package Registry

I recently got access to GitHub Package Registry, which is currently in beta. According to its documentation, GitHub Package Registry supports npm, RubyGems, Maven, Docker and NuGet packages at the moment. Out of curiousity, I decided to try to publish a Clojure library to GitHub Package Registry, since Clojure code is often distributed in the Maven repository format as well.

Telegram animated stickers

This morning, Telegram added support for animated stickers: Animated Stickers Done Right We launched stickers back in January 2015. Since then, the Telegram sticker format has been adopted by other apps to reach a total of 2 billion people. Today we're introducing a new format for animated stickers.

Edge detection with ImageMagick

Recently, I was trying to generate line art from Ken Sugimori Pokémon artwork, like this Turtwig here: I came across this site which did a pretty good job out of the box, with some more options for customisation:

2D accelerated rendering with SDL in Chicken Scheme

After my semi-successful attempt at writing a terminal-based CHIP-8 intepreter in Go (more about it in a separate post), I've decided to try again using Chicken Scheme and SDL, mostly as an excuse to pick up another Lisp dialect and to escape from the limitations of the terminal (mainly the lack of keyup events).

Benchmarking Go code

I recently attended GopherCon Singapore 2019, and one of the talks was about optimising Go code, by Daniel Martí. I managed to find a set of his slides from a previous conference that he gave the same talk at: Optimizing Go code without a blindfold Daniel Martí at dotGo 2019 https://www.

Fuzzy-searching GitHub or GitLab repositories

Here's a script that will open a GitHub repository in your browser: #!/bin/sh - if [ -z "$1" ]; then echo "usage: github repo-slug" >&2 exit 1 fi open "https://github.com/$1" (open is macOS specific, on other OSes you'll use something else, perhaps the $BROWSER variable, sensible-browser or xdg-open instead.