RSSAmplifier

Blog

Runxi Yu on Runxi Yu’s Website

Recent content in Runxi Yu on Runxi Yu’s Website

runxiyu.orgRSS feed ↗28 posts

Latest posts

X.509 certificates

For document signatures and such, run this (only when you fully understand the command): s="$(mktemp)" cat > "$s" << EOF -----BEGIN CERTIFICATE----- MIIBzjCCAXSgAwIBAgIUaHmeGPiA6P9Uma8qBTFZKDzeAMkwCgYIKoZIzj0EAwIw GzEZMBcGA1UEAwwQUnVueGkgWXUgUm9vdCBDQTAeFw0yNjA3MDMxNjE1MDRaFw0y ODEwMDUxNjE1MDRaMDIxETAPBgNVBAMMCFJ1bnhpIFl1MR0wGwYJKoZIhvcNAQkB…

Classes and schedules

GTBOOKS191 Tue 09:00 10:00 LEC Wed 09:00 10:00 DIS Thu 09:00 10:00 LEC Fri 09:00 10:00 DIS PHIL297 Tue 10:00 11:30 LEC Thu 10:00 11:30 LEC HONORS135 Wed 10:00 12:00 SEM EECS203 Tue 12:00 13:30 LEC Thu 12:00 13:30 LEC Fri 10:00 12:00 DIS EECS280 Mon 12:00 13:30 LEC Wed 12:00 13:30 LEC Fri 12:30 14:30 LAB

Getting Wayland to work on unprivileged Incus container

incus config device add "$CONTAINER" wayland proxy \ connect=unix:"$XDG_RUNTIME_DIR"/"$WAYLAND_DISPLAY" \ listen=unix:/run/user/1000/wayland-0 \ bind=container \ uid=1000 gid=1000 mode=0660 \ security.uid=1000 security.gid=1000 incus config device add "$CONTAINER" gpu gpu No need to mess with ID mapping or anything like that, apparently. Works much better than waypipe for GPU-accelerated…

Supervising services with tmux

Properly configuring your service manager is good and all, but sometimes I just want to start a few services on startup and be able to tinker with them as I go. My solution is just to run my stuff in a tmux. I mean, this is a shell script. You can specify things and wait for readiness in whatever way you wish. #!/bin/sh set -ux session="tmuxsvc" tmux has-session -t "$session" 2>/dev/null && { tmux…

Environment variables indicative of coding agents

These might be useful to block or otherwise indicate things to LLM coding agents when they encounter your project, for example refusing to build or run tests, or telling the agent it&rsquo;s performing copyright infringement (which appears to be effective in causing them to bail). The below is a list of environment variables highly indicative of LLM agents. There are other methods, such as…

Converting shallow Git bundles into normal repositories

Let&rsquo;s say you have a shallow Git bundle, i.e., not all referenced objects are present. How do you convert it into a normal shallow repository? Initialize the target as a bare-repo with your desired object-format. git init --bare --object-format=sha1 target.git && cd target.git Find the start of the pack in each bundle (version 2 packs starts with 5041 434b 0000 0002 ). In my case it&rsquo;s…

CCC 2026

CCC 的全称是 Colloquium Cognitionis Callidum , 这个拉丁文短语的大意是 “Wise Symposium of Knowledge”, 中文的字面意思是:有识之士的知识座谈会。 起初的发起人 Norman Zhu 与 Alex Shi 是两位包玉刚学校的热爱科学,数学,历史和人文的中学生。 中学生知识座谈会的想法也吸引了来自上海的国际学校, 美高、加高的志同道合的同学们一起组织,操办,招募,演讲。 到目前为止,CCC 已经成功举办了八期暑假营、三期寒假营, 以及三期与太阳花民工子弟学校合作的学术营。 今年夏天的 CCC 营是第 12 期,命名为 CCC XII。 不论是初中生,高中生还是成年人, 许多热爱知识和学术的心在一起,一定会碰撞出火花。 往届甚至有几位小学生坚持参与两天的活动。 因此,只要你对课堂之外的世界充满好奇,…

On (not) using “cryptographic hashes” for hash table keys

A hash table maps keys to buckets (or, sometimes, more complex schemes such as bucket directories and sizes, as seen in extendible hashing , probe chains in open addressing, etc.). In every case there is a function h : keys → { 0 , 1 } ∗ h : \text{keys} \to \{0, 1\}^* (or some prefix or reduction thereof) whose output the scheme consults to decide where a key lives. What must h h be? The naïve…

Reducing ML-KEM-768 encapsulation key sizes by 24 octets

Disclaimer: I am not a cryptographer. There may be serious bugs or side channels! The minimum MTU for IPv6 is 1280 octets; if you subtract the 40-octet IPv6 header and the 8-octet UDP header, you get 1232 usable octets. ML-KEM-768 public keys are 1184 octets long, leaving little space for other protocol material that you might want to stuff into a single UDP packet. Can you compress ML-KEM-768…

A continued, brief, incomplete, and mostly wrong history of programming languages

With apologies to the original . (Please read it before this one.) 2009. Pike and Thompson, who invented C, return to invent C again, this time a relatively verbose, garbage-collected, type/method based, statically typed, not too but kinda object oriented programming language, without single implementation inheritance or multiple interface inheritance, with C-like syntax that isn&rsquo;t C-like…

Bandwidth-Optimized ML-KEM via Speculative Decapsulation

Abstract ML-KEM-768 public keys are 1184 bytes, which is regrettable for UDP-based protocols at the IPv6 MTU floor of 1232 bytes of payload. We present BOMSD, a technique that saves k k bytes on the initial public-key transmission by truncating the public key and having the receiver speculatively maintain 2 8 k 2^{8k} parallel protocol branches until downstream AEAD authentication disambiguates…

My view of the state of post-quantum cryptography

ML-KEM Fast, medium-small-ish among PQ, but do you trust the cryptanalysis for now? Classic McEliece 60 years of cryptanalysis, unbroken; megabyte public keys; ciphertext sizes are nice though. Never getting into Noise or TLS. CSIDH Beautiful NIKE, small keys, slow as hell, do you really trust isogenies, also everyone says it&rsquo;s small because we benchmark CSIDH-512 but does that actually give…

My nginx configuration

Just for future reference for myself. user nginx; worker_processes auto; pcre_jit on; error_log /var/log/nginx/error.log warn; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; charset utf-8; charset_types text/plain text/html text/css text/javascript application/javascript application/json; server_tokens off; client_max_body_size 1m;…

GPL upgrades via section 14 proxy delegation

I am not a lawyer. This is provided solely for the purposes of general information and does not constitute legal advice, guidance, or counsel. No attorney-client relationship is established by the provision of this information, and no reliance should be placed on this information in lieu of seeking professional legal advice. All information is provided &ldquo;as is&rdquo;, without warranty of any…

California’s Digital Age Assurance Act, and FOSS

These solely represent my own interpretation and opinions. Some parts might be wrong &mdash; actually &mdash; some parts will be wrong. Please tell me somewhere. I am not a lawyer. This is provided solely for the purposes of general information and does not constitute legal advice, guidance, or counsel. No attorney-client relationship is established by the provision of this information, and no…

Alpine Linux packages I maintain

main/autoconf main/automake main/axel main/groff main/links main/make community/cwm community/dillo community/fluxbox community/ii community/neomutt community/oksh community/progress community/stagit community/unicode-character-database community/znc testing/acmeleaf testing/arahli testing/dacnis testing/sethrawall Please report issues on aports as usual. I don&rsquo;t have formal regression…

Using FIDO2 security keys with U-M Okta

Although the onboarding process initially requires the Okta Verify mobile app, it is possible to use Okta with hardware FIDO2 security keys or software passkey implementations such as KeePassXC .

It is incorrect to “normalize” // in HTTP URL paths

(See discussion on Lobsters . Some additions were added on 2026-05-02, to clarify things seen on HN.) Collapsing // to / inside an HTTP URL path is not normalization. If done by the origin, or a party authorized to rewrite URLs on behalf of the origin, it may be considered canonicalization or rewriting, just like rewriting /sillyclownwithnonstandardname/ to /%F0%9F%A4%A1/ ( /🤡/ ) can be correct…

中文人称代词:他、她、𲰼、𲎿

中文里人称代词的历史还是挺悠久的,我没法在短时间内解释清楚。 不过,有几个重点还是可以列举一下: “他”本来是中性代词,可以无论性别,用于任何的人 “她”是由刘半农在 1920 年左右首创并推广的女性代词,部分原因包括方便翻译 现在,“他”一般默认男性,女性个体一般使用“她” 但是“他”毕竟是人字旁,不是什么男子旁,凭什么成为男性专用的代词呢? 我觉得更合适的方案是: “他”用作中性的代词,涵盖所有的人 “𲎿”作为指代 非二元性别 的人的代词 “她”作为女性代词 “𲰼”作为男性代词,因为是男子旁 其中, “𲎿”是 Unicode 17.0 中加入的新字,左边是一个“㐅”,右边是一个“也”,念 tā “𲰼”是 Unicode 17.0 中加入的新字,左边是一个“男”,右边是一个“也”,念 tā The history of personal pronouns in Chinese…

What does the AGPL require?

I am not a lawyer. This is provided solely for general information purposes and does not constitute legal advice, guidance, or counsel. No attorney-client relationship is established by the provision of this information, and no reliance should be placed on this information in lieu of seeking professional legal advice. All information is provided &ldquo;as is&rdquo;, without warranty of any kind,…

Free Software is still important for our environment

Recently I got to operate a Windows 11 machine. It was a ThinkPad T14 produced in 2020, with 16 gigabytes of RAM, a relatively recent Intel Core i5, and a 512-gigabyte PCIe SSD. This is much more powerful than one of my usual computers, a ThinkPad X220i. When I opened taskmgr I was met with about 200 processes 1 . Opening a new window in explorer , the file manager, takes about 5 seconds to…

Incus FreeBSD Virtual Machines

This is more or less just a note to self. apk add qemu-modules incus create images:freebsd/15.0 "$container" --vm incus config set "$container" security.secureboot=false incus start "$container" Also, FreeBSD doesn&rsquo;t come with VirtIO input drivers that work with incus, so: incus config set "$container" raw.qemu.conf - << EOF [device "fbsd_usb_kbd"] driver = "usb-kbd" [device…

Links out

These are just some links that I&rsquo;ve found really worth saving. Noise Exploer The Noise Protocol Framework Plan 9 Desktop Guide

Microblog

random thought: Both UNIX and Plan 9 heavily utilize ambient namespace authority. Sure, in Plan 9 you have per-process namespaces and that&rsquo;s good and all, but (1) you can still use #hash devices to mount random things, but (2) more importantly, the namespace is still ambient, it&rsquo;s not that things a process needs are explicitly passed to it on startup. If, say, we consider a scheme…

Portfolio sample

None of the lists indicated here are exhaustive. Personal projects Fast Git libary for Go Git library for Hare Declarative dns-persist-01 ACME client Opinionated Git-based server/client suite for Internet Mail TLS SNI dispatcher based on SCM_RIGHTS Ogg Opus Internet radio stream seccomp_unotify-based SOCKS5 proxifier for Linux University SSO VPN helper HMAC-based OpenID Connect linked Discord…

Portfolio sample

Scratchpad

New desktop computer wishlist Component Choice Approximate Price CPU AMD Threadripper PRO 9955WX (16C/32T, Zen 5) $1,649 Motherboard ASUS Pro WS WRX90E-SAGE SE (EEB, WRX90) $1,300 RAM 1× 64GB DDR5-4800/5600 ECC RDIMM $400–600 GPU AMD Radeon RX 6400 $100–130 Boot NVMe 256GB PCIe 4.0 NVMe M.2 $30–50 Home NVMe 1TB PCIe 4.0 NVMe M.2 $80–120 Storage 3× existing 3.5" SATA HDDs (ZFS mirror) reuse Cooler…

Webrings

University of Michigan