Commit Graph
27 Commits
Author SHA1 Message Date
ed d3460e3b53 docs(twitter): add 1786551881504104518 corpus (NOTimothyLottes 'pure ASM is easy, bloat is hard')
7-post debate with @SebAaltonen + @Nerfoxingaround. NOTimothyLottes:
back in the day wrote DOS extender (32-bit mode), Sound Blaster drivers,
VGA interface, UI + audio synth + sequencer/editor, all in assembly,
dead easy - a lot easier than bringing up a triangle in Vulkan.
Nothing complex about ASM with a good macro preprocessor; easier than
HLLs because you know exactly what you get; interrupts and syscalls
are easy. The mess came later when systems forced C ABI library
interfaces with their stacks and junk - then C++ made it worse.
'Pure ASM is easy, its interfacing with the bloat world that got
hard.' Philosophical backbone of his single-file-C / no-debugger
lifestyle.
2026-07-27 01:46:13 -04:00
ed 60231356bb docs(twitter): add 1870351985855119449 corpus (NOTimothyLottes STORAGE_TEXEL_BUFFER aliasing)
18-post single-author technical walkthrough, 6 PNGs. Defines streaming
qualifier alphabet (W=writeonly coherent, R=readonly, A=atomics,
E=streaming readonly/exclusive, F=streaming writeonly/final) for
future-compat code even though Vulkan is missing them. Only 32/64/128-
bit type descriptors kept; type aliasing for fast path, explicit
type only when buffer compression might help someday. No 16-bit
<U,S>NORM, no 9E5/sRGB buffer access. AMD buffer atomics get signage
from opcode so UINT32 TEXEL buffer can alias r32ui/r32i. Few hundred
macros for STB access. Continuation of the bind-everything-once
engine cleanup.
2026-07-27 01:45:02 -04:00
ed 2dd370ae39 docs(twitter): add 1917656437473399108 corpus (NOTimothyLottes 'C is not assembly' punchline)
10-post thread. 9 of 10 posts are duplicates of posts 2-10 in the
existing merged 1917646466417381426 corpus (same conversation, gallery-
dl anchored to this leaf URL). The unique value here is post 10
(2025-04-30 19:04:57): 'I laugh when people say C is like assembly,
they are missing what we actually did in assembly back then, which
was all registers and globals and gotos, no stacks. It's radically
different than good assembly.' Same content also captured in bootslop
references/X.com - Onat & Lottes Interaction 1.png.ocr.md.
2026-07-27 01:42:25 -04:00
ed df60414c98 docs(twitter): add 1948009807161721332 corpus (NOTimothyLottes single-file-C + mmap log dev setup)
13-post thread with @Karyuuntei. Single-source C includes only __FILE__;
WIN32 + VK headers inlined with structural-type rewrites (64-bit ints
not pointers) to get 'toward C--'. GLSL and C mixed in same file,
sharing defines. One external include for compiled SPIR-V; spirv-opt
as pre-processor (else IHV compilers 10x slower). Dev setup: 2
terminals each with own shell script, one loops regenerating SPIR-V,
other loops recompiling+running. MINGW64 not VS. Mmap log format:
{[restart]|[ms]|[line]|[hex]|[dec]|[comment]}, fixed-size lines,
lock-free (one atomic add), wraps, clear = rm. 0.3ms startup.
2026-07-27 00:20:04 -04:00
ed 1dbcafd8c2 docs(twitter): add 1950860870818439202 corpus (NOTimothyLottes 'build engine from asm' announcement)
55-post thread, HIGHEST engagement NOTimothyLottes thread in corpus
(312 likes, 15 reposts, 20147 views), 1 MP4 video. The canonical
project-announcement thread: 'people claim assembly is hard; a good
counter would be showing how to build a x86-64 WIN32 Vulkan engine
from scratch in ASM.' Posts 2-3 lay out the rationale (game logic
on GPU = no point avoiding asm; re-arch argument-gather for cold-
cache via store multicast + linear prefetch). Post 7+ defend the
WIN32-as-Linux-strategy (Valve/Proton + Wine). Post 22 reveals CRT
setup (low-res, bitmap fonts). Post 50 the punchline: no triangles,
PS-free, CS-only, all gfx generated vintage-PC-style on compute GPUs.
Post 51: VK wins for compute because VkEvents pipelinable vs DX12's
serializing barriers vs GL's lack of pipelining. Post 55: live
systems as 'the IDE' with function keys as save/restore pallet,
snapshot the entire project as one file.
2026-07-27 00:13:11 -04:00
ed fcf70065e6 docs(twitter): add 1951347512088088657 corpus (NOTimothyLottes 'engine' project announcement)
5-post thread. Announcement of next at-home project: build-from-assembly
video series + public-domain 'engine' = live-edit toy for GPU-side
PC game dev. Won't run on Intel iGPUs (binding limits). Memory model is
CART-style (RAM CART buffer = snapshotted + dynamic GPU = not). GPU-
side editing tools for shader source + bind tables, build-the-editors-
in-it, load/store to CART. Sized for what a single person could pull
off, not TBs of team-gen content.
2026-07-27 00:11:57 -04:00
ed ea9ca0e738 docs(twitter): add 2075403544111263795 corpus (NOTimothyLottes KMSDRM + framebuffer font + @darrellprograms)
6-post thread. Prefers framebuffer-console boot over graphical
login; converting LottesCode6x12 font to PSF2 for framebuffer terminal
source-editing; wants Vulkan swap bringup without X/Wayland.
@darrellprograms suggests SDL KMSDRM option. NOTimothyLottes:
'zero development effort' is the wrong goal for him - the goal is
to push the state of the art, use SDL source as reference. Tangent:
VT switching + VRAM page-out + exclusive GPU ownership.
2026-07-27 00:10:16 -04:00
ed 57f26b0aec docs(twitter): add 1688491417109196800 corpus (NOTimothyLottes CRT-on-LCD sub-pixel multiplexing)
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.
2026-07-26 22:12:06 -04:00
ed 56538f8e3d docs(twitter): add 2061252886453944549 corpus (NOTimothyLottes debug philosophy + @retrotink2)
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'.
2026-07-26 22:12:03 -04:00
ed 2b2ff48a35 docs(twitter): add 2011429743053111302 corpus (NOTimothyLottes color-forth permutation space + @VPCOMPRESSB)
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.
2026-07-26 21:43:24 -04:00
ed 212d29c5f1 docs(twitter): add 2061124942968545433 corpus (NOTimothyLottes CART-as-log + GPU-rendered hex)
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.
2026-07-26 21:43:23 -04:00
ed 58af0e7bb1 docs(twitter): add 1951638140600381942 corpus (NOTimothyLottes SPIR-V-from-data + 'cart file')
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.
2026-07-26 21:43:21 -04:00
ed 2fe6afa15d docs(twitter): add 2074725506050642021 corpus (NOTimothyLottes RADV + queue setup)
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}.
2026-07-26 21:37:44 -04:00
ed b3e4c9c1c6 docs(twitter): add 2075769880092037309 corpus (NOTimothyLottes Vulkan queue-choice rethink)
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.
2026-07-26 21:37:42 -04:00
ed ffc39fc6a2 docs(twitter): add 2076833886827376782 corpus (NOTimothyLottes J_/JNzI1_ goto macros + nanorc)
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.
2026-07-26 21:36:18 -04:00
ed 186a71321a docs(twitter): add 2078729662021111958 corpus (NOTimothyLottes 64KiB aligned jump-window + @noop_dev exchange)
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.
2026-07-26 21:36:15 -04:00
ed f603a7bf69 docs(twitter): add 2078349730204078527 corpus (NOTimothyLottes 8-byte aligned Forth word)
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.
2026-07-26 21:36:13 -04:00
ed 60510ac349 docs(twitter): add 2078257788732461389 corpus (NOTimothyLottes nasm-bootstrapped 4KiB Linux Forth)
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.
2026-07-26 21:35:03 -04:00
ed d2ee4f0ea0 docs(twitter): add 2079746130309415185 corpus (NOTimothyLottes micro macro-forth rough-draft)
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.
2026-07-26 21:33:59 -04:00
ed 41be106888 docs(twitter): add 2076534605193036043 corpus (NOTimothyLottes X_/G_ macro + assembly-style control flow)
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.
2026-07-26 21:22:36 -04:00
ed 175bce00f3 docs(twitter): add 1737201090058219980 corpus (NOTimothyLottes logger + multi-session design)
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).
2026-07-26 21:21:17 -04:00
ed c271307215 docs(twitter): add 1736161886079533186 corpus (NOTimothyLottes VK engine retrospective)
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.
2026-07-26 21:19:35 -04:00
ed 1d581651fe docs(twitter): add 2073543950497898839 corpus (Wine audio exclusive-mode bug) 2026-07-26 21:17:53 -04:00
ed 0f80938a55 docs(twitter): add 2076893128515112995 corpus (NOTimothyLottes error-check disasm)
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.
2026-07-26 21:15:16 -04:00
ed 0d51c3541d fix(twitter_threads): strip trailing slashes from --media-dir and --output
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.
2026-07-26 21:12:20 -04:00
ed dc99722bf8 saples updated 2026-07-05 19:09:22 -04:00
ed 3f5a2b0659 samples 2026-07-05 18:52:32 -04:00