2019-06-11

Defining Shell Aliases for Subcommands

If you spend any time using the command line, you're probably familiar with aliases. The idea is to substitute a short and easy name for frequently-typed or long commands. For example, the following common alias lets you shorten ls -la to just ll:

alias ll='ls -la'

Some commands, like git, provide hierarchical subcommands. To view the status of a git repository, you run git status, where git is the command your shell executes and status is the subcommand interpreted by Git. Git also provides an alias feature very much like shell aliases. The command git config --global alias.st status defines an alias st for the status subcommand, so that you only need to type git st. What if you could define new subcommands like that anywhere you wanted?


2018-10-04

Automating Hyper Light Drifter's 800 Dash Challenge on the Nintendo Switch

I do all of my gaming these days on a Nintendo Switch (with the exception of Zachtronics games on my Linux machine). Lately I've been playing Hyper Light Drifter, a gorgeous retro-styled action adventure game that its creator calls a mix of 2D Zelda and Diablo. The game is challenging, but plays nearly perfectly. Except…

There is one optional challenge which calls for you to dash 800 times consecutively in a confined space. This requires you to button mash with precise timing while directing the character in a circle to avoid bumping into any walls. It's brutal, and discussion spaces related to the game are filled with stories and complaints about this challenge.

After many failed attempts and probably tens of thousands of button mashes later, I decided there was probably a better way. On the PC version, many players have decided to simply cheese the game by abusing the keyboard controls or even using a program to automate the entire feat. Doing this on the Switch is a bit trickier, though.


2018-09-19

How to Set Up Dynamic DNS with OpenWrt and Gandi LiveDNS

OpenWrt supports quite a few dynamic DNS providers in its very nice ddns-scripts package. Many of them are free, but if you already pay for a domain name and DNS hosting at Gandi.net why not just use that? Unfortunately Gandi is not a supported provider, but it's fairly straightforward to get it working with a custom update script.