6-post thread, 6 images, HIGHEST engagement NOTimothyLottes thread in
corpus (98 likes, 18 reposts, 12960 views). CRT emulation on LCDs can
trigger LCD hardware bugs - Steam Deck example: 2x1 {G,RB} checker
inside a window affects the scan outside the window (Deck scan is
90deg rotated). Theory: 90deg scan gives {(bottom)R, G, B (top)}
sub-pixel components; alternate {G,RB} per pixel for new sub-pixel
pattern at different virtual resolution. Linear-energy-conserving in
theory, breaks down in practice. Tangent post 6 from
@realtimekeith on voltage-inversion crosstalk varying across TN/IPS/VA.
3-post tangent. Same root post as 2061124942968545433 (no-debugger
debug / mmap log file evolving toward CART). @retrotink2 (RetroTink
hardware-modder) replies 'here I am still debugging by looking at
if a single LED turns on'; NOTimothyLottes: 'that plus an
oscilloscope, this is the way'.
3-post thread, 1 image. Links a YouTube video on exploring the
permutation space of color-forth-like systems. @VPCOMPRESSB asks if
the program should optimize its own code at/after init for every
subsequent exec to be hyper-specialized. NOTimothyLottes: yes can do
that, but those systems are already faster than human response time
(without external Linux kernel deps); will be able to recompile all
binary code (including GPU-side) in a tiny fraction of frame time.
3-post thread. Replaces the mmap fixed-size log file with a CART file
mmapped on CPU with mapped GPU access (no file IO) + background page
walker to prevent paging out. Beginning of CART is a grid of 32-bit
unsigned values, hex-dumped as the 'log file' to either term or GPU
render. Same framework for CPU and GPU debug ('write and it just
appears'). Visualized as 4-bit/char hex terminal with hex font.
7-post multi-person thread (NOTimothyLottes / @onatt0 / @EskilSteenberg
/ @olson_dan). On-the-fly SPIR-V generation instead of GLSL: cart file
= 'code+data' restartable package, macro-assembly-style language
where defines are played back interleaved for ILP/loop-unroll, SPIR-V
out direct (no GLSL step). Inspired by C64 SID tracker pattern +
instrument. CPU does the SPIR-V generation from data the GPU can
read/write.
5-post thread. vkGetShaderInfoAMD available on RADV (will be filing
optimization bugs). DEVICE_UNCACHED_BIT_AMD works on RADV for
low-latency CPU/GPU. Header-free Vulkan: VkPhysicalDeviceLimits
replaced with 63 64-bit values (504 bytes) for direct byte offset.
Next: another beam-racing effort on Linux, separate queue for
present-only to fully decouple {dispatch, swap}.
4-post thread, highest-engagement NOTimothyLottes thread in the corpus
(42 likes, 5063 views, 2 reposts). Don't search for the ideal
{presentation,graphics,compute} queue - just use queue 0. AMD: render
via compute on queue 0, present on queue 1, decouple for front-buffer
racing. NVIDIA: queue 1 is DMA, queue 2 is compute; queue 0 = gfx +
present, dispatch on queue 2 by default. Tangent: someone complaining
about the bitmap font in Post 1 looking like a captcha.
6-post thread. Root: commits fully to {if,goto} control flow via
better macros (J_(label) -> goto label; JNzI1_(label,v) ->
if(v!=0) goto label;). Customizes nanorc syntax-highlight to color
them. Tangent: someone suggesting Perl DSL, not invited to the
'better software' conference.
11-post thread. Root: 4-byte overhead interpreter with 64KiB aligned
window of directly-jumpable words (write to ax doesn't change other
48 bits), cuts source size in half. Tangent with @noop_dev covering
cold-cache misses, runtime-macroassembler idea, 4K Atari 2600 emu
precedent. End: GPU code generation for AMD where 8+ bitfields in
an opcode means the simple interpreter won't work.
4-post x86-64 interpreter work: all 0-6 arg syscalls in 32 bytes,
embed interpreter inside words with 3-byte overhead (AD lodsd + FF E0
jmp rax), force lower 32-bit but keep 64-bit, pack interpreted forth
words in aligned 8-bytes. Tangent post 4 from @NOTimothyLottes
self-replying about custom bytecode + on-load decompression.
4 posts, 1 image. Post 1 = the actual content (nasm, ELF64, 4 KiB binary
target, radical Forth, no C baggage). Posts 2-4 = tangent with @furan
about the bitmap font in Post 1's screenshot. gallery-dl pulled the
whole conversation tree.
5-post design walkthrough of a branch-free 8-bit/word color-forth variant
for code generation: ~62 dict entries/page with paging, call/return
inlined by the compiler, branch-free compile + branch-free execution,
lookup-table pre-compile writes unaligned 8-bytes. Intended for tiny
self-contained chunks that include their own codegen. Whitney-esk in
single-char vars, non-Whitney in no higher-order arrays.
3-post companion to 2063733456144597200 + 2076893128515112995: defines
X_ = return, G_ = goto. Moves from C-style {if,while,do,switch,for} to
assembly-style {if,goto} so static branch prediction (backward=taken,
forward=not_taken) is explicit. Plus exit-with-error now properly
drains the background console render thread.
3-post sibling to the 1736161886079533186 VK retrospective: same public-
domain release context, Dec 2023. Covers the mmap-ring-buffer error
logger and the multi-session rationale (crash auto-reload + log
preservation, no debugger).
10-post single-author walkthrough of his old Vulkan pipeline: warm-all-pages
startup, auto-relaunch on crash, single-SPIR-V plus spec-constants, Bind-
Everything-Once, SSBO-as-4-types aliasing, GPU-side game logic, hardware-
style fixed resources. High engagement (36 likes, 3778 views). Closes
with the ruthless-anti-complexity thesis.
6-post single-author walkthrough of the fast-path error-check pattern:
volatile store __LINE__ + error code, TEST, conditional forward branch
to a distant Err() call. Companion to the 2063733456144597200 thread
which established the macro system via the conversation with
@winning_tactic.
Path objects with trailing separators (e.g. './media/') intermittently
failed to glob on Windows after download_media.py had just finished
writing the directory. Normalize via rstrip('/\\\\') before Path()
re-wrapping so the CLI is forgiving regardless of OS path quirks.
Repro: gallery-dl ran + immediate render with trailing slash on the
just-created media/ dir -> glob returned nothing -> markdown emitted
no ![Media N] lines. Removing the trailing slash fixed it; this makes
both work.