Posts

Dynamically Update DNS When Your Server IP Address Changes

I've been running my website on a Raspberry Pi in my home for years. Whenever my router got restarted, my home would have a new external IP address, and so I needed to find out that IP address, then log into the registrar I use and update the IP address to direct my domain name to my website server. My website didn't really need to be live most of the time, so it didn't bother me occasionally changing the IP address. Recently, I was thinking it must be possible to automate logging into my account and changing the IP address. So I looked up to see if someone had already made a solution, and it turns out there is a standard one. It's called dynamic DNS. Make sure your domain registrar supports dynamic DNS. You can move your domain to another registrar if not. Install ddclient on the server. This is one of several options of software which performs dynamic DNS updates to domain providers. It may not support all registrars. Configure your domain in your registrar to use a ...

Use Joycons with Steam on Linux

Steam appears to support Joycons. They connect individually but not as a single combined controller. There is a toggle in Steam > Settings > Controller for combining Joycons, but it doesn't do anything. The UI here is also a bit weird because the button appears twice. Looking online there is a suggestion that you need Steam Beta. This doesn't make a difference. The solution was to install this driver: https://github.com/DanielOgorchock/joycond After installation, when you connect a Joycon or Pro Controller, you tap the L and R buttons to tell the driver how your controllers are combined. Now steam recognises it as a single controller. However you will need to connect the controller this way before you start Steam (even for your Pro Controller, which you previously would not have needed to do).

Git Stash Specific Changes

Use `git stash push`. You can give it specific files to stash or use `-p` to select specific changes within files. I don't know how long this has been a command for. According to the manpage, this is a more featureful replacement for `git stash save`.

Fix Controller Input when a Game Doesn't Use Steam Input

Background Knowledge Steam Input is an interface for developers to use the controller configuration built into Steam for their games. It is entirely optional and not all games use it. Steam gives you the option to enable and disable Steam Input on a per game basis. Steam has controller button mapping for in-game, Big Picture Mode, and on desktop (outside of games), and mappings for individual games. By default Steam will give certain controllers a desktop mapping that lets you move the mouse and bring up an on-screen keyboard, which is not what you want in a game. If you press F11 in a game and Steam Overlay doesn't appear and you have it configured to appear, Steam thinks that you are not in a game, and therefore it will use the desktop mapping instead of the in-game mapping. Steam Input works by capturing inputs from your controller, suppressing them from the rest of your system and emitting the inputs that you desire instead to the rest of your system. Problem If you are playin...

Import Large Amounts of Data to MySQL Quickly

Importing large amounts of data with SQL `INSERT` statements can take a long time. It's much faster to use MySQL's `LOAD DATA` statement. https://dev.mysql.com/doc/refman/5.7/en/load-data.html The data you upload must be in some CSV format; you can choose delimiters and escape characters. `LOAD DATA INFILE [filename] ...` will look for the file on the server where MySQL is running. Your MySQL user will need file permissions. MySQL is only allowed to read files on the server if they are in a certain directory. `LOAD DATA LOCAL INFILE [filename] ...` will look for the file on the machine that has connected to the MySQL instance. There is no restriction on where the file must be stored so long as your OS user has permission to read it. `LOAD DATA LOCAL` will only execute if you connected to MySQL with the `--secure-file-priv` option. i.e. `mysql -h [hostname] -u user -p db --secure-file-priv` DBMSes other than MySQL hopefully have a similar feature.

In HTML, an Input with Zero Length is Never too Small

Imagine you have an a text input with a minimum length: <input type="text" minLength="1"> Imagine you have a reference to this element and you call `.report Validity` or `.checkValidity`. So long as the input is empty, it will be treated as a valid length. You need to add t he ` required ` attri bute when you want the length to not be zero.

Gaming on Linux Gotchas

I've been PC gaming solely on Linux since the beginning of 2020 and generally things that are meant to work just work; it's just a case of installing a game through Lutris or switching on Proton for all games in Steam. But I've definitely experienced problems that have been some effort to resolve. I'll update this article over time as I find more things. Sometimes the Default Version of Proton Used is Out of Date At any time you will likely have many different versions of proton installed, so that if you have an issue, you can just toggle the version in the game's settings. For some reason when its set to "default" that doesn't always mean the latest version. I'm not sure if this is a bug or something Valve has done to certain games. In my case this was with Doom Eternal. GSync can Default to the Wrong Screen In your NVidia settings, there is a tab called "X Server XVideo Settings", which chooses which of your screens to apply GSync to. I...