aaaashley
banner
aaaa.sh
aaaashley
@aaaa.sh
working with the garage door open!
been hacking together a graphical frontend for the vis text editor, and it can now do some basic text editing! i did the rendering (ogl1.1) and text rasterization (anti-aliased shape fill & hardcoded font) myself. (didn't realize OBS also captures my audio... enjoy some of montreal.) #programming
November 17, 2025 at 7:09 AM
getting there
November 14, 2025 at 1:46 PM
see
November 13, 2025 at 7:14 PM
writing a font rasterizer. pictured left to right: exclamation mark, double quote, hash, dollar sign, and percentage. um, you have to look closely, but they're there
November 13, 2025 at 6:37 PM
November 12, 2025 at 7:33 PM
AAAAAAAAAAAAAAAAAAAAAAAAAHHHHHHHHHHAHAHAHAHAHAHAHAHHA WHAT
November 12, 2025 at 6:37 PM
wrote a system that converts a number to a set of ratios and plays them as tones relative to A=440. it's a nice way to intuitively represent the 'simplicity' of a number! (sound on for video (「•-•)「 )
November 3, 2025 at 5:38 PM
pruning #gamedev
September 7, 2025 at 6:08 AM
Using a tree to optimize this & I built a little visualizer #gamedev
September 5, 2025 at 6:39 PM
September 4, 2025 at 7:21 PM
communicating with a rust program using the networking features in the game's scripting language. rust generates a save file (also we have a real save file format now!) and serves it over localhost, and a user program in the game requests and loads it in a loop. #gamedev
September 1, 2025 at 11:49 AM
'traditional polys' vs new rendering technique that involves doing raycasting & shading on the CPU and rendering 'splats', quads on GPU. rays work great with simple shapes (i.e. voxels), and doing lighting CPU-side could allow for more interesting lighting effects. also, it looks cool #gamedev
August 26, 2025 at 8:34 PM
for the dynamic memory allocator for my game, i'm testing bucketing the allocation sizes using the floating point exponent & mantissa. it's all basic bit math, so it's really quick and requires no memory reads. each bucket has its own free list, so best-fit allocation is O(1). #gamedev #programming
August 23, 2025 at 4:59 AM
every typographer makes the same joke in every publication about typography and it makes me laugh every time
August 19, 2025 at 10:27 PM
i've seen a lot of interesting abbreviations of common programming terms (e.g. 'fun' for 'function' in go), but this abbreviation for 'method' takes the cake
August 9, 2025 at 10:11 AM
javascript is a great game engine, actually
July 25, 2025 at 11:18 PM
interesting #webdev thing today: i love JSX syntax but i don't want to bundle a runtime, so I wrote a custom parser that transpiles jsx to native DOM calls. I wrote it as a vite plugin; only 138 lines of code! no error reporting, but otherwise feature rich, and zero (really zero!) overhead.
July 22, 2025 at 10:58 PM
google is experimenting on me and apparently the experiment is "how long can we serve nothing until she stops using google." not that long! i have things i want to know on the internet
July 19, 2025 at 10:16 AM
has google just stopped showing results for anyone else?
July 19, 2025 at 10:16 AM
Apple docs: "yeah totally, you can pass nil. it'll just autofill the data for you. no problem dude"
Apple validation layers: "what the fuck. why would you pass nil. what is wrong with you"
July 5, 2025 at 9:36 PM
here's a video version of the GIF above that doesn't seem to want to cooperate (curse you ffmpeg!!) #coding
June 30, 2025 at 4:18 AM
the game's scripting language can now download files! you can import and run code, fetch html, or even read the weather. it uses a poll system & you basically have to roll your own poll loop (but there is one in the stdlib). internally, it uses the OS' networking tools (had to do some objc lol)
June 30, 2025 at 4:16 AM
The game already ran on Apple devices via MoltenVK, so this was mostly a learning exercise. There are some benefits though. Avoiding MoltenVK reduces code size, and improves CPU & GPU performance as we get closer to the hardware. Most importantly, it saves a TON of memory.

Vulkan / MoltenVK | Metal
June 26, 2025 at 8:50 AM
The rendering code is simple too: the API is built on my personal mental model of how a GPU works, with some hacks and caveats for the idiosyncrasies of specific backends.

here's a code sample so you can see how simple it is. virtually no overhead!!
June 26, 2025 at 8:50 AM
Wrote a custom cross-platform GPU API for my game's engine, so now it can directly speak both Metal and Vulkan through the same rendering code. The new API is designed to be super low-overhead: it doesn't allocate memory or do any hidden work. Here's a (slightly boring...) demo! #gamedev #techart
June 26, 2025 at 8:50 AM