eupolicy.social is one of the many independent Mastodon servers you can use to participate in the fediverse.
This Mastodon server is a friendly and respectful discussion space for people working in areas related to EU policy. When you request to create an account, please tell us something about you.

Server stats:

202
active users

#devlog

5 posts5 participants0 posts today

Spacetime boxes and #NicCLIM #gamedev : An ordeal #devlog #commonLisp

screwlisp.small-web.org/lispga

I made a gamedev-my-NicCLIM-oriented spacetime-box class to try and figure upon Olum's stuff. I got tied up making two spacetime boxes, then making one spacetime-box every neighbor of the other, which was a huge problem actually. It seemed to be working at the end. Skip quickly to the extensive and far-ranging if poorly-named conclusions.

Update on my Pi-Hole project: It's live, and it has a display with live data. Really fun project to work on, and kind of scary how many requests are being made just to collect data. 😢

An #Assembly program that dumps itself.

Usefulness? None.
Purpose? None...ish.
It just dumps itself.

No hidden message here, just self-hexdump...

...Although this is me trying to find ways to steganographically hide text/poetry/occult rituals within Assembly instructions.

According to a Ruby one-liner which I fed with the Assembly output, the self-hexdump from Assembly contains letters ("A", "H" and "U"), as well as digits ("0", "1", "6" and "9") so
maybe it's possible to code something both valid (preferably functional as well) as Assembly code AND valid as steganographed text, using different (and particularly atypical) opcodes.

From the alt-text:
Two-window layout screenshot.

Left window: the whole source-code from an Assembly program that dumps itself. The font-size is very thin so it fits the image.

Right window: the output from said program, which was invoked through nodemon (see my previous post where I explained what the heck nodemon is doing in an Assembly code environment).

Code is too long to be alt-text, but it's basically printing itself (at least each byte from section
.text) using printf("%02x ") then finally printing a newline and exiting with code 0. It keeps track of the current pointer and the end boundary of the program using two variables declared in the .bss section (cur and fin, both .quad). The pointer fin points to a label at the very end of the program (after calling sys_exit), called __theend, while the pointer cur starts pointing to main (the program's entry point).

#devlog #programming #gnuasm #asm

The rust rewrite of my Forgejo client already has 20% of the Nuxt version's functionality: It can display profile cards.

Before listing ~~repos~~ *projects*, I'll add auth/account management and Sourcehut support.

(The blur is not added in post. It's to prevent accidental anti-doxxing.)

Using #GNU as Assembler (not Assembly, but the Assembler) and ld Linker to spit out a working BMP gradient image.

Yeah, you read it right. I'm not using
#Assembly to produce an image. I'm, instead, using Assembler directives and macros during compile-time to generate a binary file that happens to be a valid image (BMP) file.

File: tonishing.s (GNU Assembly file)

width = 320
height = 240
area = width * height
_begin:
    .ascii "BM"
    .int fileSize
    .int 0
    .int (_rasterdata - .)

_infoheader:
    .int infoheaderSize
    .int width     # width
    .int height    # height
    .short 1       # planes
    .short 24      # bitcount
    .int 0         # compression
    .int 0         # imagesize
    .int 11811     # xpixperm
    .int 11811     # ypixperm
    .int 0         # colorsused
    .int 0         # colorsimp

infoheaderSize = (. - _infoheader)

_rasterdata:
    n=area+1
    .rept height
        .rept width
            byten=((n*255)/area)&0xFF
            rn=(192*byten)/255
            gn=(64*byten)/255
            bn=(128*byten)/255
            .byte rn,gn,bn
            n=(n-1)
        .endr
    .endr

fileSize = (. - _begin)

File: run.sh (Shellscript)
#!/bin/sh
clear
rm astonishing.bin
rm tonishing.o
as tonishing.s --64 -o tonishing.o
# The pun is _astonishingly_ intended.
strip -R .comment -R .note.gnu.property tonishing.o
ld -n -x -s -N --oformat binary --unique=.note.gnu.property -o astonishing.bin tonishing.o
magick identify -verbose astonishing.bin
I run the whole thing with... wait for it... #nodemon!

That's right: the tool intended for
#Nodejs hot-reloading, is being leveraged for GNU Assembly, which is itself being leveraged for compile-time instructions to produce a whole BMP image.
nodemon -e "s sh" --exec ./run.sh

While I have a
#Codeberg account, it's under my personal name where I published old projects from #GitHub, so I should do a second account for this pseudonym... but I'm not sure if this is against the Codeberg rules... So I'm posting the whole thing through a Calckey post instead.

#programming #devlog #dev #devhacks #quirks #codegolf #experiments #surreal #absurd
Continued thread

Permacommons #devlog 2025-08-19

This took a while to get working, but in my quest to automate all the things I managed to end up with a publish workflow for the `chabeau` crate that seems fairly sane.

1) Stage release on a release branch, using "cargo release"
2) If all checks pass, merge into main (protected branch)
3) Check on main detects new tag & publishes crate (assuming final pre-publication checks are happy)

Concurrency group ensures it only runs once.

a nice procedural way to generate palettes from a subset of colors could be to do a delaunay triangulation of them in YUV (or any better perceptual space), and then use the resulting edges to build gradients. the number of colors of each gradient should be proportional to the edge length.