home tags events about login

nilix rss

lv. 0̶̢͓̯͇̦̙̲͈̜̠̩̰̜̿͒̅̄0̴̛̺̫̠̫͚̱̙̪̩̇͂̆͋̀͂̇̈̋́̋̿̇͘ cyber mage (she/her)

dragon, witch, combat doll

you might learn more

nilix posted 17 Mar 2026 17:59 +0000

came up with a neat way to simplify text rendering in the new taro. since i'm always either:

  • drawing multiple lines of text in a listbox
  • or drawing a single line of text in a label or text entrybox

when drawing a line of text, when i reach a newline, i increment the address and return it, so the calling function can draw the next line of text without having to reseek to it; when i reach the end of the string, i return a null short for the calling function to check against :>

nilix posted 16 Mar 2026 18:13 +0000

ugh i have had multiple people tell me recently during my job search how brave it was that i quit my job and am trying to fight the current...

as i explained at the beginning of my last blog post, it's not like i had a choice. i literally couldn't function anymore, so yeah i guess there's an element of bravery in quitting instead of letting them fire me but the end result would have been the same

nilix posted 16 Mar 2026 04:37 +0000

banging my head against the wall all day has been very frustrating however i am getting used to thinking like a stack machine again and i have made a bit of progress ^^

nilix posted 15 Mar 2026 22:58 +0000

my font rendering adventures are not going well -.-

|00 @System     &vector $2 &wst      $1 &rst    $1 &eaddr  $2 &ecode  $1 &pad     $1 &r       $2 &g      $2 &b     $2 &debug  $1 &halt $1
|10 @Console    &vector $2 &read     $1 &pad    $5 &write  $1 &error  $1
|20 @Screen     &vector $2 &width    $2 &height $2 &auto   $1 &pad    $1 &x       $2 &y       $2 &addr   $2 &pixel $1 &sprite $1
|30 @Audio0     &vector $2 &position $2 &output $1 &pad    $3 &adsr   $2 &length  $2 &addr    $2 &volume $1 &pitch $1
|40 @Audio1     &vector $2 &position $2 &output $1 &pad    $3 &adsr   $2 &length  $2 &addr    $2 &volume $1 &pitch $1
|50 @Audio2     &vector $2 &position $2 &output $1 &pad    $3 &adsr   $2 &length  $2 &addr    $2 &volume $1 &pitch $1
|60 @Audio3     &vector $2 &position $2 &output $1 &pad    $3 &adsr   $2 &length  $2 &addr    $2 &volume $1 &pitch $1
|80 @Controller &vector $2 &button   $1 &key    $1 &func   $1
|90 @Mouse      &vector $2 &x        $2 &y      $2 &state  $1 &pad    $3 &scrollx $2 &scrolly $2
|a0 @File      &vector $2 &success  $2 &stat   $2 &delete $1 &append $1 &name    $2 &length  $2 &read   $2 &write $2
|b0 @File_      &vector $2 &success  $2 &stat   $2 &delete $1 &append $1 &name    $2 &length  $2 &read   $2 &write $2
|c0 @DateTime   &year   $2 &month    $1 &day    $1 &hour   $1 &minute $1 &second  $1 &dotw    $1 &doty   $2 &isdst $1

( variables )

|0000

( program )

|0100 ( -> )

  ( default theme ) 
  #028d .System/r DEO2 
  #0a8d .System/g DEO2 
  #098d .System/b DEO2
  
  load_font

  #0400 .Screen/width DEO2
  #0300 .Screen/height DEO2
  
  #0010 .Screen/x DEO2
  #0010 .Screen/y DEO2
  ;wtf  uf2/draw
  
BRK

@load_font ( -- )

  ;font_file .File/name DEO2
  #2100 .File/length DEO2
  ;font .File/read DEO2
  
JMP2r

@wtf "Taro 20 "or 20 "something $1
@font_file "font.uf2 00

@uf2/draw ( text* -- )
	
	[ LIT2 15 -Screen/auto ] DEO
	[ LIT2r 03 -Screen/sprite ]
	&>w
		LDAk DUP ?{ POP POP2 POP2r JMP2r }
		#0000 ROT #20 SUB
		( addr ) DUP2 #50 SFT2 ;font/glyphs ADD2 .Screen/addr DEO2
		( move ) ;font ADD2 LDA .Screen/x DEI2 ADD2
		( draw ) [ DEOkr DEOkr ] .Screen/x DEO2
		INC2 !&>w

@font $100
&glyphs $2000

@neauoire i can't really identify what i'm doing wrong here

screenshot of my font rendering test which ends up saying "4AROORSOMETHING" instead of "Taro or something"

nilix posted 15 Mar 2026 00:06 +0000

taro backend is rewritten as a 9p filesystem, just gotta clean things up a bit and push the changes, (also push the changes to xrxs itself) then i can start fucking around with the uxn side :D

nilix posted 14 Mar 2026 03:17 +0000

awww yeah we got the basics down. can probably have the whole backend of taro rewritten as a 9p filesystem by the end of the weekend

nilix replied 14 Mar 2026 01:14 +0000
in reply to: https://merveilles.town/users/neauoire/statuses/116224837018485966

@neauoire thanks! i'm gonna do all rendering in uxn though, it's more or less gonna be the same broad strokes architecture as taro currently is, just instead of communicating over STDIO it'll communicate over 9p, and instead of the backend being written in crystal with event loops it'll be in C using the xrxs approach!

but i'm sure as i redo the whole frontend i'll have more than a few questions for you since i haven't really touched uxntal in a couple years ^^;

nilix replied 13 Mar 2026 22:18 +0000
in reply to: https://cafe.nilfm.cc/u/nilix/h/DmGYKVvVR2nnM9tX42

ok we have a basic ass library that lets us build 9p filesystems really fast, like this :>

#include "xrxs/types.h"
#include "xrxs/fns.h"

enum FileType {
  CTL = 1,
  DATA
};

void xrxs_attach(Req* r) {
  respond(r, nil);
}

void xrxs_read(Req* r) {
  Aux* a = r->fid->file->aux;
  switch (a->type) {
    case DATA:
      readstr(r, "some data\n");
      respond(r, nil);
      break;
    default:
      respond(r, nil);
  }
}

void xrxs_write(Req* r) {
  respond(r, nil);
}

int threadmaybackground(void) { return 1; }

void threadmain(int argc, char* argv[]) {

    Srv* fs = xrxs_create(xrxs_read, xrxs_write, xrxs_attach);
    
    xrxs_build(fs->tree->root, "ctl", nil, DMAPPEND | 0600, create_aux(CTL));
    xrxs_build(fs->tree->root, "data", nil, 0400, create_aux(DATA));
    
    xrxs_srv(fs, nil, "/home/nilix/n");
}

nilix replied 13 Mar 2026 20:18 +0000
in reply to: https://cafe.nilfm.cc/u/nilix/h/29qW1x8H2J3R55VNSm

i decided to revisit xrxs as a generalized framework and keep it in plan9port c instead of migrating it to go, so i'm experimenting with what abstractions to include in the framework and what to leave to individual applications

nilix posted 13 Mar 2026 20:00 +0000

feels nice to be writing C again ngl

nilix posted 13 Mar 2026 15:37 +0000

full of CHAOS and RAGE

nilix posted 12 Mar 2026 19:40 +0000

tracing the through line between xrxs, taro, and kuro; i see something really cool waiting to be built

nilix shared 12 Mar 2026 15:45 +0000
original: cblgh@merveilles.town

textual offcuts from an unpublished essay

textual offcuts from an unpublished essay

When I engage with new technologies questions linger in the afterglow of the initial excitement. Am I wasting my time? What impact is this having on me?

I think that whenever we find ourselves enamoured with a novelty from the labs of humanity we should sooth fears of missing out. And instead ask questions. What do I gain from this? What do I lose? What does the purveyor gain from my adoption? How do I want to use this new thing? Questioning: do I even want this? To pause and consider the risks. Risks exist independent of our perception.

In Charlie Stross's noughties novel Accelerando, the main character is a prolific and virtuosic user of artificial agents, which in the book are computer programs that perform acts at his bidding. The primary interface for this novel substrate is a pair of glasses. In one part of the book the main character loses his computational glasses. Lost with them is the capacity for any kind of engagement with the world. He finds himself cognitively bereft, lost in a non-capacious haze.

Smart glasses exist today. I don't have any nor does anyone I know. I could make an analogy to "agentic AI", but I don't use LLMs. Instead, the smart device I consult every day is the smartphone. Where I live there is a personal identification app, produced and owned by a consortium of the biggest banks. This app is woven into all facets of life. If my phone breaks, I lose access to the identification app. A minor personal catastrophe ensues. I lose the ability to pay bills or file taxes. I can kiss goodbye to making second hand purchases on the regional version of eBay. In spite of my physical debit cards, most Internet transactions fail because I will have lost the ability to countersign. Out of town family can't contact me, and I can only let them know through the grace of the few others around with their phone number. Public transit would become an immense hassle. When my smartphone breaks the haze settles on me too.

Reducing this dependence relationship on technologies feels important. Whether for gadgets, technologies, or information networks. I don't want to be reliant on technology where I lack a voice in how it operates, any say in future changes. So that when deprived, whether temporary or otherwise, I keep my change-making capacity.

nilix shared 12 Mar 2026 14:14 +0000
original: shibacomputer@post.lurk.org

In 2015 I was on a beach in Hawai'i helping build the prototype of what became Signal. I argued that the app needed pseudonyms because abusers know their victims' phone numbers. I lost the fight that day. History proved me right, and Signal would move to usernames under @Mer__edith's stewardship.

In this new essay, I trace the line from Barlow's Declaration of Independence of Cyberspace through smart-home forensics, metadata killings, and Archive Team's non-consensual Tumblr scrape to ask: when did we decide that a jpeg is a photograph, that a profile is a person, that storage is memory?

The answer involves a boat off Honolulu, the early days of Signal, Iran's missiles over Amazon's Dubai AWS facilities, and the communities already building for a world where the server goes dark. This is an essay about infrastructure, memory, archiving without consent, and what we lose when we mistake the filesystem for memory.

It is also the angriest and most personal text I've ever written. I'm furious, and you should be too. We bet an entire civilisation on a brutal and unreliable stack. Now, fate has come to collect that wager.

California has a lot to fucking answer for.

https://newdesigncongress.org/en/pub/who-will-remember-us-when-the-servers-go-dark/

A young man seen from behind, leaning on the railing of a sailboat. He's wearing a light blue t-shirt, looking out over deep blue Pacific water toward a hazy Honolulu skyline in the distance. The sun is bright and warm on his skin and the back of his neck. Above him, a weathered green canvas canopy. The boat's rigging, ropes, and a small wooden box are visible to his left. The water is calm with small ripples catching the light. January 2015.

nilix posted 11 Mar 2026 21:51 +0000

i've made ~$650 from contract work this month. and i got an anonymous donation for about 13 bucks (thank you whoever you are <3). that's about 1/3 of my monthly expenses before child support. any help is appreciated, whether you can spare a few bucks for a donation or wanna hire me for this or that: https://lightcrystal.systems/support

nilix replied 10 Mar 2026 22:11 +0000
in reply to: https://types.pl/users/agentultra/statuses/116207099223262148

@agentultra i found a torrent of the master edition in cbz format on a certain catgirl-adjacent site and ran it through some scripts to load it onto the device (cause the reMarkable 2 can only read PDFs and only up to 100MB per file)! i wish i could say i got it in a more morally upstanding way but i can't justify spending the money on hard copies ><

nilix posted 10 Mar 2026 21:25 +0000

been reading BLAME! on my reMarkable 2. this is what eInk was made for

nilix posted 08 Mar 2026 17:47 +0000

ughhggg needed me some eep

nilix shared 04 Mar 2026 18:14 +0000
original: neauoire@merveilles.town

I woke up with an idea for a book, I wrote down the first page.

I woke up with an idea for a book, I wrote down the first page.

An ultratourmaline light is ever present but for the luminescent ripple awakened by a wave breaking, the spark from two rocks colliding or the storms igniting the crests of dunes; but here, nothing natural grows with eyes to see it. Eyes came from elsewhere.

Shielded from the winds above, invisible but to the darkness, Den Azar kneels onto the wet fiberglass, bend over the feroplastic membrane, bite at the loose shale and succulent cables; masticates, voraciously, my precious fabric before sinking into a satiated sleep.

The blizzard accumulates in small mounds of ash around her ceramic legs and pools in the recesses of her closing golden eyes.

The storm blows itself out, glass, the ocean reflects nothing back. A million sunflowers at the bottom of the Abyss stir.

Den Azar kicks at suffocating miasma, it liquefies, a metallic arc lights up the night. A sunflower notices and immediately looses interest. He swims through the lye, caustic, immaterial, wormlike toward the surface. Two iridescent florets of gold bloom.

"Hummingbirds?"

nilix posted 02 Mar 2026 22:56 +0000

so i've got a couple pupils and a little webdev project rn but i'm still very much living off of my savings and trying to bootstrap things here;

if you like my open source work and can spare a few bucks for my livelihood i would very much appreciate a donation

alternatively if you're in need of a sofware/web designer/developer or tech educator (see my CV and my consultancy) DM, email, or message me on signal per your preference; i'd love to see if we can work together :>

it should go without saying i do not use genAI in any of my work

#openSource #fediHire #mutualAid #noGenAI

nilix posted 28 Feb 2026 22:03 +0000

wish people would cherish one another instead of killing each other :<