<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Tech on /dev/urandom's dev site</title><link>https://devurandom.xyz/tech/</link><description>Recent content in Tech on /dev/urandom's dev site</description><generator>Hugo</generator><language>en-US</language><lastBuildDate>Fri, 09 Jan 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://devurandom.xyz/tech/index.xml" rel="self" type="application/rss+xml"/><item><title>on OS user interfaces</title><link>https://devurandom.xyz/tech/on_os_user_interfaces/</link><pubDate>Fri, 09 Jan 2026 00:00:00 +0000</pubDate><guid>https://devurandom.xyz/tech/on_os_user_interfaces/</guid><description>&lt;p&gt;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 &amp;ldquo;the old way&amp;rdquo; was, was inherently better.&lt;/p&gt;
&lt;p&gt;This especially applies to people who use Linux (or any of the BSDs, but for
purposes of this page, I&amp;rsquo;ll refer to any of the &amp;ldquo;free desktops&amp;rdquo; as Linux), since
it is rarely ever their first operating system &amp;ndash; usually they started off with
either Windows or macOS, and picked up habits and assumptions from that.&lt;/p&gt;</description></item><item><title>shogi move parser</title><link>https://devurandom.xyz/tech/shogi_parser/</link><pubDate>Thu, 27 Jan 2022 00:00:00 +0000</pubDate><guid>https://devurandom.xyz/tech/shogi_parser/</guid><description>&lt;p&gt;I&amp;rsquo;ve decided to write a little script using JS that reads a &lt;a href="https://en.wikipedia.org/wiki/Shogi_notation#Japanese_notation"&gt;Japanese notation
for a move in
shogi&lt;/a&gt; and tries
to convert it into English.&lt;/p&gt;</description></item><item><title>ascii table</title><link>https://devurandom.xyz/tech/ascii/</link><pubDate>Thu, 23 Dec 2021 00:00:00 +0000</pubDate><guid>https://devurandom.xyz/tech/ascii/</guid><description>A table describing the ASCII character set.</description></item><item><title>midnight commander subshell bug</title><link>https://devurandom.xyz/tech/2021-06-18-mc_bug/</link><pubDate>Fri, 18 Jun 2021 00:00:00 +0000</pubDate><guid>https://devurandom.xyz/tech/2021-06-18-mc_bug/</guid><description>&lt;p&gt;After updating Alpine Linux on my VPS to version 3.14, I noticed that Midnight
Commander (&lt;code&gt;mc&lt;/code&gt;) crashed with a segmentation fault around 90% of the time, and
at other times it ran, but refused to accept any input.&lt;/p&gt;
&lt;p&gt;At first, I thought that it had to do with the OS update itself and something
was wrong with the version of &lt;code&gt;mc&lt;/code&gt; or some other package built in Alpine, so I
tried building mc with &lt;code&gt;ncurses&lt;/code&gt; instead of &lt;code&gt;slang&lt;/code&gt; as it was before, but to no
effect. To make matters worse, the bug disappeared when I tried to trace it in
&lt;code&gt;strace&lt;/code&gt; or &lt;code&gt;valgrind&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>linux framebuffer palette switching</title><link>https://devurandom.xyz/tech/linux_framebuffer_palette/</link><pubDate>Wed, 26 May 2021 00:00:00 +0000</pubDate><guid>https://devurandom.xyz/tech/linux_framebuffer_palette/</guid><description>&lt;p&gt;Just like graphical terminals such as &lt;code&gt;urxvt&lt;/code&gt;, 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.&lt;/p&gt;</description></item><item><title>cuda debugging notes</title><link>https://devurandom.xyz/tech/cuda_debugging/</link><pubDate>Wed, 19 May 2021 00:00:00 +0000</pubDate><guid>https://devurandom.xyz/tech/cuda_debugging/</guid><description>&lt;p&gt;So, turns out, when you run a program that uses CUDA, either directly or
indirectly (my program runs on CUDA, but uses OpenCL instead), &lt;a href="https://github.com/google/sanitizers/issues/629"&gt;there are
issues&lt;/a&gt; preventing &lt;code&gt;libasan&lt;/code&gt;
from working. More specifically, if you run a program with &lt;code&gt;libasan&lt;/code&gt;, the CUDA
libraries will not work, and the OpenCL ones will not display an NVIDIA platform
as available in the first place.&lt;/p&gt;
&lt;p&gt;From my experience, seems like there are similar issues preventing Valgrind from
working, either.&lt;/p&gt;</description></item><item><title>irssi tips and tricks</title><link>https://devurandom.xyz/tech/irssi/</link><pubDate>Tue, 20 Apr 2021 00:00:00 +0000</pubDate><guid>https://devurandom.xyz/tech/irssi/</guid><description>&lt;p&gt;Recently found myself using irssi on a setup that&amp;rsquo;s slightly unusual, so I&amp;rsquo;m
recording the information I found useful for posterity.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;To switch windows, use &lt;code&gt;Alt&lt;/code&gt; + number keys for windows 1-10, or &lt;code&gt;Alt&lt;/code&gt; + top
row (&lt;code&gt;qwertyuiop&lt;/code&gt;) for windows 11-20.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;Alt+Left&lt;/code&gt; / &lt;code&gt;Ctrl+p&lt;/code&gt; and &lt;code&gt;Alt+Right&lt;/code&gt; / &lt;code&gt;Ctrl+n&lt;/code&gt; switches to the previous or
next window respectively. It loops around from first to last or vice versa.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The script &lt;code&gt;revolve&lt;/code&gt; is useful, since it compresses consecutive joins/leaves
onto a single line. Useful for channels where there&amp;rsquo;s not a lot of activity.&lt;/p&gt;</description></item><item><title>vim hints</title><link>https://devurandom.xyz/tech/vim_hints/</link><pubDate>Wed, 07 Apr 2021 00:00:00 +0000</pubDate><guid>https://devurandom.xyz/tech/vim_hints/</guid><description>&lt;p&gt;These are some of the useful settings and functions I use when working with vim.&lt;/p&gt;</description></item><item><title>note on cpan</title><link>https://devurandom.xyz/tech/cpan/</link><pubDate>Tue, 23 Mar 2021 00:00:00 +0000</pubDate><guid>https://devurandom.xyz/tech/cpan/</guid><description>&lt;p&gt;Note to self: if your distro&amp;rsquo;s repositories don&amp;rsquo;t have a Perl package, it&amp;rsquo;s best
to install them from CPAN instead. A tool called &lt;code&gt;cpan minus&lt;/code&gt; (In Alpine, its
packaged as &lt;code&gt;perl-app-cpanminus&lt;/code&gt;) can do it easily, either installing packages
into one&amp;rsquo;s home directory or globally.&lt;/p&gt;</description></item><item><title>midnight commander tips</title><link>https://devurandom.xyz/tech/midnight_commander/</link><pubDate>Wed, 17 Mar 2021 00:00:00 +0000</pubDate><guid>https://devurandom.xyz/tech/midnight_commander/</guid><description>&lt;p&gt;Assorted key combinations that are useful in MC.&lt;/p&gt;</description></item><item><title>freetype hinting settings</title><link>https://devurandom.xyz/tech/freetype_hinting/</link><pubDate>Fri, 26 Feb 2021 00:00:00 +0000</pubDate><guid>https://devurandom.xyz/tech/freetype_hinting/</guid><description>&lt;p&gt;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.&lt;/p&gt;
&lt;!-- cut --&gt;
&lt;p class="update"&gt;&lt;strong&gt;2026 update&lt;/strong&gt;: 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 &lt;em&gt;absolutely terrible&lt;/em&gt; on these.&lt;/p&gt;</description></item><item><title>Alpine Linux</title><link>https://devurandom.xyz/tech/alpine_linux_stuff/</link><pubDate>Fri, 15 Jan 2021 00:00:00 +0000</pubDate><guid>https://devurandom.xyz/tech/alpine_linux_stuff/</guid><description>&lt;p&gt;This page will host an assortment of tips and tricks collected while using
Alpine Linux.&lt;/p&gt;</description></item><item><title>trying to do assembly-level debugging in gdb</title><link>https://devurandom.xyz/tech/gdb_assembly/</link><pubDate>Mon, 02 Nov 2020 00:00:00 +0000</pubDate><guid>https://devurandom.xyz/tech/gdb_assembly/</guid><description>&lt;p&gt;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&amp;rsquo;t want to bother looking for the source code. Here
I&amp;rsquo;ll put a bunch of useful commands.&lt;/p&gt;</description></item><item><title>assorted shell scripts</title><link>https://devurandom.xyz/tech/assorted_shell_scripts/</link><pubDate>Sun, 31 May 2020 00:00:00 +0000</pubDate><guid>https://devurandom.xyz/tech/assorted_shell_scripts/</guid><description>&lt;p&gt;shell scripts:&lt;/p&gt;
&lt;p&gt;grab lines from dictionary, convert them into up-to-16-byte strings, do a binary dump&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;for x in `cat input_words.txt`; do echo $x | tr -d \\n | dd ibs=16 conv=sync 2&amp;gt;/dev/null | xxd; done
&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;p&gt;convert a .vgz directory to a .vgm one, along with updating all the playlists:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;rename &amp;quot;.vgz&amp;quot; &amp;quot;.vgm.gz&amp;quot; *.vgz; gzip -d *.vgm.gz; sed -i &amp;quot;s/\.vgz/\.vgm/&amp;quot; *.m3u
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;(requires rename from &lt;code&gt;util-linux&lt;/code&gt; and not from perl)&lt;/p&gt;</description></item><item><title>profiling utility hints</title><link>https://devurandom.xyz/tech/profiling_hints/</link><pubDate>Sun, 31 May 2020 00:00:00 +0000</pubDate><guid>https://devurandom.xyz/tech/profiling_hints/</guid><description>&lt;p&gt;Some small hints for profiling utilities used on Linux systems.&lt;/p&gt;</description></item><item><title>shell parameter expansion</title><link>https://devurandom.xyz/tech/shell_parameter_expansion/</link><pubDate>Sun, 31 May 2020 00:00:00 +0000</pubDate><guid>https://devurandom.xyz/tech/shell_parameter_expansion/</guid><description>&lt;p&gt;This is a small cheat sheet to remind me of how parameter expansion works in
unix shells.&lt;/p&gt;</description></item></channel></rss>