on OS user interfaces
A lot of the time, our preferences for what an OS user interface should look like come down, ultimately, to either nostalgia or past experiences. Someone gets annoyed at a UI change and their instinctive reaction is to assume that whatever “the old way” was, was inherently better.
This especially applies to people who use Linux (or any of the BSDs, but for purposes of this page, I’ll refer to any of the “free desktops” as Linux), since it is rarely ever their first operating system – usually they started off with either Windows or macOS, and picked up habits and assumptions from that.
gxter, a GXT file utility
I have recently developed a small library and command-line utility in Rust that opens and creates GXT files from older Grand Theft Auto games. GXT files (description of format) are binary-based lists of localizable text strings that are used both by the game’s executable and all the game/mission scripts. Since the games are meant to be released in different languages, using a separate format for storing strings makes sense.
The program supports, and was tested on, files from GTA III, Vice City and San Andreas, and should also work with the “Stories” games, which are based on Vice City’s engine.
shogi move parser
I’ve decided to write a little script using JS that reads a Japanese notation for a move in shogi and tries to convert it into English.
ascii table
midnight commander subshell bug
After updating Alpine Linux on my VPS to version 3.14, I noticed that Midnight
Commander (mc) crashed with a segmentation fault around 90% of the time, and
at other times it ran, but refused to accept any input.
At first, I thought that it had to do with the OS update itself and something
was wrong with the version of mc or some other package built in Alpine, so I
tried building mc with ncurses instead of slang as it was before, but to no
effect. To make matters worse, the bug disappeared when I tried to trace it in
strace or valgrind.
linux framebuffer palette switching
Just like graphical terminals such as urxvt, the Linux framebuffer has an
option to change the built-in palette. Distributions like Ubuntu use it to make
the palette look nicer during bootup.
cuda debugging notes
So, turns out, when you run a program that uses CUDA, either directly or
indirectly (my program runs on CUDA, but uses OpenCL instead), there are
issues preventing libasan
from working. More specifically, if you run a program with libasan, the CUDA
libraries will not work, and the OpenCL ones will not display an NVIDIA platform
as available in the first place.
From my experience, seems like there are similar issues preventing Valgrind from working, either.
irssi tips and tricks
Recently found myself using irssi on a setup that’s slightly unusual, so I’m recording the information I found useful for posterity.
To switch windows, use
Alt+ number keys for windows 1-10, orAlt+ top row (qwertyuiop) for windows 11-20.Alt+Left/Ctrl+pandAlt+Right/Ctrl+nswitches to the previous or next window respectively. It loops around from first to last or vice versa.The script
revolveis useful, since it compresses consecutive joins/leaves onto a single line. Useful for channels where there’s not a lot of activity.
my impressions from the streets of rage series
As a kid, I didn’t have any 16-bit consoles, and at best, my experience with them was restricted to playing them for a short while when hanging out with my family’s old friends and their kids. Out of the games I got to experience that way, I played Sonic 1 and 2, Columns, Tom & Jerry: Frantic Antics and other games, but not any of the Streets of Rage games. Instead, the first time I discovered this games was when I discovered emulators.
vim hints
These are some of the useful settings and functions I use when working with vim.
cvlvl6 fanfic
Trying to preserve an old page that I had a hard time finding online.
note on cpan
Note to self: if your distro’s repositories don’t have a Perl package, it’s best
to install them from CPAN instead. A tool called cpan minus (In Alpine, its
packaged as perl-app-cpanminus) can do it easily, either installing packages
into one’s home directory or globally.
riichi mahjong
One of my big interests is things relating to riichi mahjong (リーチ麻雀): a variant of the Chinese tabletop game “mahjong” invented in Japan. It’s a rather complicated, but fun game where the players take turns picking and discarding tiles (which function similar to cards in a game like poker) in order to build a winning hand.
midnight commander tips
Assorted key combinations that are useful in MC.
freetype hinting settings
I have a bunch of FreeType settings that I prefer on my systems, and these differ from the defaults on basically every Linux distro these days.
2026 update: This is a rather old post, made back when the monitors I used were pretty low-resolution, and saving every pixel of space seemed like a good idea. These days, high-DPI monitors are more common, and the old settings I preferred look absolutely terrible on these.
my pixel art
Here be pixel-art dragons.
Alpine Linux
This page will host an assortment of tips and tricks collected while using Alpine Linux.
pixel art fonts
This is the page where I’ll be hosting all the pixel art fonts which I drew.
trying to do assembly-level debugging in gdb
GDB seems to have been clearly made with source-level debugging in mind, the kind where the source code of the program is available. Sometimes this is not the case, or you just don’t want to bother looking for the source code. Here I’ll put a bunch of useful commands.
Phantasy Star Online: Blue Burst on Wine
Occasionally I play the old multiplayer action-RPG “Phantasy Star Online: Blue Burst”. On Windows, it works fine, but to make it work better on Linux (via Lutris), some extra steps may be needed.
about me
name: /dev/urandom (sometimes dev or rnd for short)
date of birth: june 1993
job: programmer, currently unemployed
tech: i’m mostly a computing and retro software/gaming dork. i am kind of a linux/open-source fan, although i try not to be a jerk about it as some do. i occasionally code something in C or C++ in my personal time, and am currently figuring out Rust.
favorite movies: typically old comedies and silly action movies of the 80s and 90s, but I also like an occasional modern one.
assorted shell scripts
shell scripts:
grab lines from dictionary, convert them into up-to-16-byte strings, do a binary dump
for x in `cat input_words.txt`; do echo $x | tr -d \\n | dd ibs=16 conv=sync 2>/dev/null | xxd; done
convert a .vgz directory to a .vgm one, along with updating all the playlists:
rename ".vgz" ".vgm.gz" *.vgz; gzip -d *.vgm.gz; sed -i "s/\.vgz/\.vgm/" *.m3u
(requires rename from util-linux and not from perl)
profiling utility hints
Some small hints for profiling utilities used on Linux systems.
riichi mahjong cheatsheet
shell parameter expansion
This is a small cheat sheet to remind me of how parameter expansion works in unix shells.