Skip to content

Instantly share code, notes, and snippets.

View sparr's full-sized avatar

Clarence "Sparr" Risher sparr

  • Kira Learning
  • New York / San Francisco
View GitHub Profile
@sparr
sparr / gist:9861c782956b3eabae3ac9e1bf4ec6ce
Created September 20, 2024 00:42
Steam Proton all games crashing on EndeavourOS due to Vulkan library package choice
When installing AMD drivers on EndeavourOS I was prompted to choose Vulkan packages. I chose `amdvlk lib32-amdvlk` which turns out to have been a mistake. This led to almost every game using Proton crashing on launch with one of the following two error messages in the logs (among much longer more unique stack traces). The "correct" packages which resolved this issue are `vulkan-radeon lib32-vulkan-radeon`.
Error type 1, from games including Craft the World, Ring of Pain, Slipways:
14981.844:0124:0128:err:vulkan:wine_vkCreateInstance Failed to create instance, res=-9
14981.844:0124:0128:trace:loaddll:free_modref Unloaded module L"C:\\windows\\system32\\winevulkan.dll" : builtin
err: DxvkInstance::createInstance: Failed to create Vulkan 1.1 instance
Error type 2, from games including Banished, Ring of Pain, Slipways:
@sparr
sparr / .Xmodmap
Created September 19, 2024 16:30
xmodmap config to remap unused special keys on Lenovo E15 to audio control
! Remap unused special keys on Lenovo E15 to audio control
! Fn+F9, message box icon, originally XF86Messenger
keycode 224 = XF86AudioPrev NoSymbol XF86AudioPrev
! Fn+F10, phone handset upright icon, originally XF86Go
keycode 226 = XF86AudioPlay NoSymbol XF86AudioPlay
! Fn+F11, phone handset face down icon, originally Cancel
keycode 231 = XF86AudioStop NoSymbol XF86AudioStop
! Fn+F12, star icon, originally XF86Favorites
keycode 164 = XF86AudioNext NoSymbol XF86AudioNext
@sparr
sparr / wait_for_one_process_to_exit.sh
Created September 9, 2024 21:25
Bash script: Wait for one process to exit
#!/bin/bash
#
# This script launches two processes and exits when either of them exits
(
do_thing_1
kill -s SIGHUP $$
) &
(
@sparr
sparr / git-cp.sh
Created August 8, 2024 12:22
Shell script to copy a file in a git repository while retaining its history
#!/bin/sh
#
# Duplicates a file in git, retaining history for the copy
# This requires four commits that cannot(?) be squased
# Inspired by https://stackoverflow.com/q/3887736
# Deprecated by https://github.com/tj/git-extras/blob/main/bin/git-cp
if [ "$#" -ne 2 ]
then
echo "Usage: $(basename "$0") source destination"
@sparr
sparr / gist:008ebfab065bd00c3dd903fa43b9ad55
Created June 13, 2023 16:29
golang proposal for standard tag functionality for json, toml, yaml, etc
This gist is to preserve this proposal draft while I pursue alternate proposals first.
Currently if a package wants to define a struct that can be loaded from arbitrary config files, with encoded/serialized/markup field names different from the struct field names (e.g. changing "FooBar" to "foo_bar" to match conventions, "Miscellaneous" to "misc" for brevity, etc), the package must add separate struct tags for json, toml, yaml, etc. Any encoding not specifically enumerated in the tags will either fall back to using the struct fields directly, or have to implement parsing of another encoding's tags.
While these different encoding packages offer some unique functionality, such as go-yaml's `inline`, encoding/json's `string`, and go-toml's `multiline`, they all share common functionality of specifying the key name and the `omitempty` flag. For use cases where that subset of functionality is sufficient, it would be convenient if most or all of the markup/encoder/serializer/marshaler/etc packages supported a com
@sparr
sparr / test.vue
Last active February 21, 2023 20:11
vue file illustrating github syntax highlight bug
<a>
<b v-if="c?.d" />
</a>
@sparr
sparr / skse_swap.sh
Last active December 11, 2022 21:03
Bash script to rename/symlink SkyrimSELauncher.exe and skse64_loader.exe to enable/disable SKSE for launch via Steam.
#!/bin/bash
# This script manipulates SkyrimSELauncher.exe and skse64_loader.exe so that
# tools like Steam that expect to run SkyrimSELauncher.exe will transparently
# run skse64_loader.exe instead.
# When SKSE is "enabled", SkyrimSELauncher.exe will have been renamed to
# SkyrimSELauncher.exe.orig and replaced with a symlink to skse64_loader.exe
# When SKSE is "disabled", that symlink will be named SkyrimSELauncher.exe.skse
@sparr
sparr / Xorg.0.log
Created January 4, 2021 00:14
computer hard lockup, usually in cpu/gpu intensive activities, this time while video editing
[ 4.659]
X.Org X Server 1.20.10
X Protocol Version 11, Revision 0
[ 4.659] Build Operating System: Linux Manjaro Linux
[ 4.659] Current Operating System: Linux shaggy 5.8.18-1-MANJARO #1 SMP PREEMPT Sun Nov 1 14:10:04 UTC 2020 x86_64
[ 4.659] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-5.8-x86_64 root=UUID=fd2098fb-01b7-4272-be32-a908fd3a2eb5 rw quiet resume=UUID=42821bc8-4cb6-4897-8e37-fad6b3492e9e udev.log_priority=3
[ 4.659] Build Date: 03 December 2020 08:59:12AM
[ 4.659]
[ 4.659] Current version of pixman: 0.40.0
[ 4.659] Before reporting problems, check http://wiki.x.org
@sparr
sparr / journalctl -xe
Created November 13, 2020 16:37
iwlwifi microcode error on arch linux on dell latitude 7390
This is an excerpt showing approximately two cycles, it repeats indefinitely with minor differences as long as wifi is enabled.
Nov 13 07:37:02 shaggy kernel: iwlwifi 0000:02:00.0: Queue 3 is stuck 16 73
Nov 13 07:37:02 shaggy kernel: iwlwifi 0000:02:00.0: Microcode SW error detected. Restarting 0x0.
Nov 13 07:37:02 shaggy kernel: iwlwifi 0000:02:00.0: Start IWL Error Log Dump:
Nov 13 07:37:02 shaggy kernel: iwlwifi 0000:02:00.0: Status: 0x00000040, count: 6
Nov 13 07:37:02 shaggy kernel: iwlwifi 0000:02:00.0: Loaded firmware version: 55.d9698065.0 cc-a0-55.ucode
Nov 13 07:37:02 shaggy kernel: iwlwifi 0000:02:00.0: 0x00000084 | NMI_INTERRUPT_UNKNOWN
Nov 13 07:37:02 shaggy kernel: iwlwifi 0000:02:00.0: 0x000022F0 | trm_hw_status0
Nov 13 07:37:02 shaggy kernel: iwlwifi 0000:02:00.0: 0x00000000 | trm_hw_status1
@sparr
sparr / dice_to_card.pseudocode
Created May 2, 2020 18:25
Convert 3d6 to a playing card
# original idea and base logic from https://www.reddit.com/r/tinycode/comments/gap2jw/6bit_playing_card_deck/
dice_to_card(a,b,y) {
suits = {2:'H', 3:'C', 4:'D', 5:'S'}
if (y>1 and y<6) {
# number cards
rank = ceil(a/2) + (ceil(b/2)-1)*3
if rank==1 rank = 10
return rank, suits[y]
}
elif ((a==1 or a==6) and (b==1 or b==6)) {