Toots for modulux@node.isonomia.net account

Written by modulux on 2025-01-29 at 09:34

This is not going to be very popular but the use of data for corpus training is not stealing. It wasn't stealing when people copied music either. IP maximalism is not helpful; it wasn't then, it isn't now. The use of data for these purposes is explicitly allowed for in EU law, and probably part of fair use.

It's also nothing new. All sorts of vital accessibility tools (voice recognition, voice synthesis) or other things such as spell checking rely on corpora.

[#]AI #IP

=> More informations about this toot | View the thread

Written by modulux on 2025-01-28 at 08:04

So, I'd like to try DeepSeek's multimodal model for image description (I'm blind, get off my tits).

Is there a good guide around on how to set it up on a linux server, and does it need a gpu or can it run on cpu, just slower? What are the memory bounds, etc?

=> More informations about this toot | View the thread

Written by modulux on 2025-01-22 at 13:30

I submitted an idea for Thunderbird: suppressing the notification about remote content on emails, keeping it all blocked: https://connect.mozilla.org/t5/ideas/suppress-remote-content-warning-on-email/idi-p/83823?emcs_t=S2h8ZW1haWx8ZGlnZXN0X25vdGlmaWNhdGlvbnxNNjdYTlVRQjRIRDJaN3wtMXxPVEhFUlN8aEs

=> More informations about this toot | View the thread

Written by modulux on 2025-01-22 at 00:30

I was not planning to say much about this, because I have nothing to say that anyone else hasn't said already. Trump seems in many ways disastrous and dangerous, and the potential loss of US power and influence or the fact he may not be able to carry out his complete programme do not make up for much of the damage he is likely to cause.

However, I read this survey that shows that, out of many countries in the world, Europeans are the only people to be consistently against Trump. Now, I don't know about you, but when the world says one thing and Europe says another, I get worried; because historically Europe has been terrible for the rest of the world.

Does that mean I'm changing my mind on this? No, people can be wrong. It does however make me pause.

Survey: https://ecfr.eu/publication/alone-in-a-trumpian-world-the-eu-and-global-public-opinion-after-the-us-elections/

[#]Trump #politics #world #Europe #InternationalRelations

=> More informations about this toot | View the thread

Written by modulux on 2025-01-18 at 18:49

Spent the last 6 hours trying to get a hello world equivalent gui window with a button on rust under windows.

This task which one might think is simple ended up taking literal hours and still hasn't been achieved because: the tutorials for gtk on windows and rust suggest putting msys2 bin directory on the path. This causes rust to fail to build correctly because it uses the wrong gcc and linkers.

Afterwards I managed it by using the appropriate environment variables.

But then I found out the dynamically linked libarries weren't found. I tried getting a way to copy them but it turned out to be too much work so I just moved the executable to the same dir.

Only to find out that gtk4 has no accessibility on Windows. Not bad accessibility, not accessibility that needs to be turned on. No. Accessibility. At all.

So then I decided to try Qt, which wants me to create an account to get an installer. Absolute no.

Got the 1.5gb sources and trying now to get an off-line installer out of it.

To get a fucking window with a button in it.

I don't think it's unreasonable for me to say this state of affairs is complete bullshit, and that most people with a normal level of motivation would have found plenty of opportunities to have given up. I still might.

(Not using NWG because tying the data to the GUI elements is non-trivial, it seems to require copying a lot and using twice the memory.)

[#]a11y #rust #gui #windows

=> More informations about this toot | View the thread

Written by modulux on 2025-01-14 at 08:38

Por dar una opinión, la idea de restringir la acción popular no me convence. Entiendo que pueda parecer la pieza más fácil de tocar, pero el problema está en una judicatura militante y parcial, y no en quién acciona.

=> More informations about this toot | View the thread

Written by modulux on 2025-01-13 at 11:30

I'm having an issue with #Firefox and Semaphore. After it's been running for a while, the Semaphore tab gets to very high CPU usage, with about:performance indicating around 160%. This seems to be a regression with firefox 134, as it didn't use to happen before.

Any clues what I can do about this, or whether I should report a bug?

=> More informations about this toot | View the thread

Written by modulux on 2025-01-13 at 07:33

Bad sign that I'm considering increasing the toot length limit on my instance just to post the #aoc24 entries.

I have it at 5000 chars. If I doubled it, they would definitely fit. I think the longest is around 8500 chars, for day 15-2. Followed by day 21-2 at 7800-ish. The good thing about GTS is, if I want to make this change I need only edit the config file.

=> More informations about this toot | View the thread

Written by modulux on 2025-01-06 at 15:30

Estoy usando un LLM para aprender teoría de filtros. Vale, ya os podéis lanzar a mi cuello, pero antes, me comentáis de algún sitio donde haya información fiable sobre teoría de filtros (polos, ceros, FIR, IIR) en notación que resulte accesible y donde puedas hacer preguntas gilipollas como: el número de coeficientes del numerador del filtro determina el orden del filtro?

Entre tanto, he aprendido algo. Y sí, corro el riesgo de errores o imprecisiones, pero por lo menos tengo un punto de partida.

[#]LLM #aprendizaje #accesibilidad

=> More informations about this toot | View the thread

Written by modulux on 2025-01-03 at 14:31

I have a Thinkpad X270 with an Intel i5-7200U. Windows 11 says the cpu is not on the allowed list to upgrade. In a few months Windows 10 reaches end of life, and the laptop works perfectly fine. I can't realistically move to gnu/linux on this machine because the accessibility is not good enough yet.

Thoughts?

(I attempted changing some registry keys to bypass the cpu check without success, though maybe I need to restart it first.)

=> More informations about this toot | View the thread

Written by modulux on 2024-12-30 at 10:23

Today on "Unix is a coherent, orthogonal system," my cron job refused to run because it has unescaped % signs, which as we all know are totally a thing in any other shell context... oh wait, no they're not.

But for some reason if you put a % sign on a cron job, it assumes you wanted to do a line break, because... well, it's just logical, it's Unix.

(I rarely complain about Unix quirks but this one is weird as hell.)

=> More informations about this toot | View the thread

Written by modulux on 2024-12-28 at 18:44

I was inspired by someone commenting they'd like more conversations about maths in here, so I just want to post about an interesting mathematical result I did not expect.

First, a bit of an introduction. You may know that the Curry-Howard correspondence links computer programs with proofs. If you've heard this and you're not very clear what it means, it means that logic and computation are intimately related. Different types of computation are isomorphic to logics, for example, natural deduction is isomorphic to lambda calculus. If you have a valid program, this program can be understood as proving some sort of theorem. Specifically, a proof is a program, and the formula that is proven is the type for the program. Likewise, if you have the prove of some theorem, this can be understood as a computation, but here comes an important proviso: classical logic uses axioms such as excluded middle that allow certain forms of proof through double negation elimination that are not computable. In these proofs you don't necessarily show how to constract an object O, but negate the negation of O. Intuitionistic logic is different and does not allow the use of excluded middle or other non-computable axioms. When you have the existential of an object, in order to satisfy the proof, you must show how to construct an object that will satisfy it.

This is interesting, but what happens with non-terminating programs? After all, we know from the halting problem that it is impossible in general to mechanically decide if a program will halt. It turns out, non-terminating programs are proofs of false, they can prove anything.

So only terminating programs give us valid proofs. But we already established we cannot tell if a program terminates or not. What a pickle. This is not strictly true though, not if we weaken our programming language so that it is no longer turing-complete. It is possible to make programming languages for which all computations must end in finite time (though not necessarily in reasonable time!). These languages forbid things like infinite loops or infinite recursion. They use techniques such as structural recursion (where a function has to always call a smaller argument, such as a fuel limit) or some kind of proof of productiveness for a computation to be legally valid. These languages are called total languages.

The really weird thing: for the longest time it was believed that total languages are too limited to be useful in terms of universal computation. Certainly, all else equal, writing code in a total language is harder and takes significantly more effort. One specific thing that was thought impossible was for a total language to interpret itself. That is, one cannot write the interpreter for a total language in that total language.

Well, it turns out one can! In a paper titled Breaking through the normalisation barrier, it was shown that this is possible. I think this result is well-known these days, but it still delights me.

https://dl.acm.org/doi/10.1145/2837614.2837623

=> More informations about this toot | View the thread

Written by modulux on 2024-12-28 at 16:02

Reading some people complaining about image descriptions because they help train AI. I'm not sure what interpretation is worse: that there's a new excuse for not including alt text, as if there weren't enough already; or that people may actually earnestly be this spiteful about AI so as to regard helping others as a necessary collateral damage of their Buttlerian jihad.

[#]llm #AI #AltText

=> More informations about this toot | View the thread

Written by modulux on 2024-12-28 at 12:25

I'm not as anti-AI as many, but today I asked on an IRC channel if someone had access to a paper which conducted some empirical research, and someone decided that prompting an LLM with the abstract and pasting the result was just as good as the paper, and now I think I want to scream.

=> More informations about this toot | View the thread

Written by modulux on 2024-12-27 at 22:43

I haven't done a lot of reading this year, much less memorable or useful reading. I think I need to be a bit more intentional about doing that the coming year. It's not that I haven't read anything, just few things that stayed with me. Though a few were very good:

Babel, the Tyrant Baru Cormoran, the 3 Body Problem, Kassiel's Servant, Where Sleeping Girls Lie, The Storm We Made, Light Bringer, Some Desperate Glory, and the Alamaksa series.

Mm, not as bad as I thought.

On non-fiction I read the Kingdom of Characters, the Council of Europ Framework Convention on AI, the ICJ ruling on the occupaiton of Palestine, the UNHCR reporteur's report on Palestine, and quite a few judgements including a peculiar one on wage discrimination from the UK.

=> More informations about this toot | View the thread

Written by modulux on 2024-12-25 at 09:49

Greetings to all,

We're in a very special time of the year. The solstice is gone, days begin to grow longer, the year comes to an end, and we get ready to start a new one. However, today is the most special day of these holidays. Some of you will wonder why.

Today it is 25th of December, and as you all know it is the birthday of someone very, very special. We owe him many of the things we have, yet we take this for granted. It is thanks to him that the modern world is what it is. I'm referring, of course, to the 382nd anniversary of the birth of Isaac Newton. Thanks to him and his great work, Philosophiæ Naturalis Principia Mathematica, we have at hand physical laws dressed in the glorious language of mathematics which ground this technological world we live in. Newton is not responsible for those laws, nor his ultimate discoverer, but he is the first who managed to quantify them to place them at the service of humanity. It is for this reason that he serves as the personalised symbol for a celebration of a universe which is comprehensible and knowable.

Although today we know these laws not to be exact, they suffice to reach the moon. Let us remember them, for they are everyone's birthright:

Lex I: Corpus omne perseverare in statu suo quiescendi vel movendi uniformiter in directum, nisi quatenus a viribus impressis cogitur statum illum mutare.

Law I: Every body persists in its state of being at rest or of moving uniformly straight forward, except insofar as it is compelled to change its state by an exerted force.

Lex II: Mutationem motus proportionalem esse vi motrici impressae, et fieri secundum lineam rectam qua vis illa imprimitur.

Law II: The change of momentum of a body is proportional to the motive force exerted, and happens along the straight line on which the force is realised.

Lex III: Actioni contrariam semper et æqualem esse reactionem: sive corporum duorum actiones in se mutuo semper esse æquales et in partes contrarias dirigi.

Law III: There is to an action always an equal and opposite reaction: or the forces of two bodies on each other are always equal and are directed towards opposite sides.

Let us celebrate the existence of physical laws. Happy Newtonmas!

=> More informations about this toot | View the thread

Written by modulux on 2024-12-25 at 09:48

Saludos, camaradas:

Estamos en una época del año muy especial. Ha pasado el solsticio, los días se alargan, el año se termina, y nos disponemos a comenzar uno nuevo. Sin embargo, hoy es el día más especial de estas vacaciones.

Algunos de vosotros os preguntaréis por qué. Hoy es día 25 de diciembre, y como todos sabéis es el cumpleaños de alguien my, my especial. A él

debemos muchas de las cosas que tenemos y ni siquiera nos fijamos en

ello. Gracias a él, el mundo moderno es lo que es. Estoy hablando, por

supuesto, del 371º aniversario del nacimiento de Isaac Newton. Gracias a

él y a su gran obra, Philosophiæ Naturalis Principia Mathematica,

disponemos de leyes físicas vestidas en el glorioso lenguaje de las

matemáticas que nos permiten vivir en un mundo tecnológico. Newton no es

responsable de la existencia de esas leyes, ni su descubridor último,

pero sí el primero que consiguió cuantificarlas para ponerlas al

servicio de la humanidad. Es por ésto que nos sirve como símbolo

personal de la celebración de un universo comprensible y cognoscible.

Aunque hoy sabemos que estas leyes no son exactas, son suficientes para

llegar a la luna. Recordémoslas, son patrimonio de todos:

Lex I: Corpus omne perseverare in statu suo quiescendi vel movendi

uniformiter in directum, nisi quatenus a viribus impressis cogitur

statum illum mutare.

Ley I: Todo cuerpo se mantiene en estado de reposo o en movimiento

rectilíneao uniforme, salvo que una fuerza lo compela a cambiar de estado.

Lex II: Mutationem motus proportionalem esse vi motrici impressae, et

fieri secundum lineam rectam qua vis illa imprimitur.

Ley II: La variación del movimiento es proporcional a la fuerza motriz

ejercida, y sigue la línea recta en que aquélla se realice.

Lex III: Actioni contrariam semper et æqualem esse reactionem: sive

corporum duorum actiones in se mutuo semper esse æquales et in partes

contrarias dirigi.

Ley III: Ante una acción siempre hay una reacción contraria e igual: o

las acciones de dos cuerpos entre sí son siempre iguales y en sentidos

opuestos.

Celebremos la existencia de las leyes físicas. ¡Feliz Gravidad!Saludos, camaradas:

Estamos en una época del año muy especial. Ha pasado el solsticio, los días se alargan, el año se termina, y nos disponemos a comenzar uno nuevo. Sin embargo, hoy es el día más especial de estas vacaciones. Algunos de vosotros os preguntaréis por qué.

Hoy es día 25 de diciembre, y como todos sabéis es el cumpleaños de alguien my, my especial. A él debemos muchas de las cosas que tenemos y ni siquiera nos fijamos en ello. Gracias a él, el mundo moderno es lo que es. Estoy hablando, por supuesto, del 382º aniversario del nacimiento de Isaac Newton. Gracias a él y a su gran obra, Philosophiæ Naturalis Principia Mathematica, disponemos de leyes físicas vestidas en el glorioso lenguaje de las matemáticas que nos permiten vivir en un mundo tecnológico. Newton no es responsable de la existencia de esas leyes, ni su descubridor último, pero sí el primero que consiguió cuantificarlas para ponerlas al servicio de la humanidad. Es por ésto que nos sirve como símbolo personal de la celebración de un universo comprensible y cognoscible.

Aunque hoy sabemos que estas leyes no son exactas, son suficientes para llegar a la luna. Recordémoslas, son patrimonio de todos:

Lex I: Corpus omne perseverare in statu suo quiescendi vel movendi uniformiter in directum, nisi quatenus a viribus impressis cogitur statum illum mutare.

Ley I: Todo cuerpo se mantiene en estado de reposo o en movimiento rectilíneao uniforme, salvo que una fuerza ejercida lo compela a cambiar de estado.

Lex II: Mutationem motus proportionalem esse vi motrici impressae, et fieri secundum lineam rectam qua vis illa imprimitur.

Ley II: La variación del movimiento es proporcional a la fuerza motriz ejercida, y sigue la línea recta en que aquélla se realice.

Lex III: Actioni contrariam semper et æqualem esse reactionem: sive corporum duorum actiones in se mutuo semper esse æquales et in partes contrarias dirigi.

Ley III: Ante una acción siempre hay una reacción contraria e igual: o las acciones de dos cuerpos entre sí son siempre iguales y en sentidos contrarios.

Celebremos la existencia de las leyes físicas. ¡Feliz Gravidad!

=> More informations about this toot | View the thread

Written by modulux on 2024-12-21 at 10:19

Dos cosas a decir sobre la IA:

Primero, he mantenido una postura contraria a la denominada propiedad intelectual desde hace 25 años y no la voy a cambiar por motivos coyunturales. La exclusión del conocimiento es un mal objetivo, y no es una buena base para montar ningún proyecto de liberación.

Segundo, el que la IA sea inútil para ti no quiere decir que sea inútil para todas las personas. La descripción automática de imágenes y la IA multimodal que permite hacer preguntas sobre una imagen es, quiérase o no, el mayor avance en accesibilidad para personas ciegas en los últimos 20 años. ¿Que viene a un coste energético y emdioambiental excesivo? Es posible, pero hay posibilidades de mejorar la eficiencia, utilizar renovables, y correr las redes localmente donde no necesitan refrigeración.

=> More informations about this toot | View the thread

Written by modulux on 2024-12-20 at 08:09

I suspect the fedi is the sort of place that knows the answer to this:

Is it possible to get replacement cables for a set of Sennheiser HD 660s headphones? The cables detach from the headphones, so it seems like it might be possible to buy them separately. My cable got damaged and the left headphone does not always sound.

[#]AskFedi #audio #headphones #question

=> More informations about this toot | View the thread

Written by modulux on 2024-12-17 at 16:13

I've been solving AoC these days but forgot to post my solutions.

Day 15 was not computationally difficult or requiring of large amounts of maths or complex algorithms, but it was the sort of problem full of detail where you can screw things up easily

Task 1.

fn main() {

let f = read_to_string("input.txt").unwrap();

let mut f = f.split("\n\n");

let tiles = f.next().unwrap();

let mut map = Vec::new();

let mut line = Vec::new();

for i in tiles.chars() {

    if i == '\n' {

        map.push(line);

        line = vec![];

    } else {

        line.push(i);

    }

}

map.push(line);

for i in f.next().unwrap().chars() {

    let rh = map

        .iter()

        .filter_map(|e| e.iter().position(|e2| *e2 == '@'))

        .next()

        .unwrap();

    let rv = map.iter().position(|e| e.contains(&'@')).unwrap();

    match i {

        'v' => {

            let wall = map[rv + 1..]

                .iter()

                .position(|e| e[rh] == '#')

                .map(|e| e + rv + 1)

                .unwrap();

            if let Some(hole) = map[rv + 1..wall]

                .iter()

                .position(|e| e[rh] == '.')

                .map(|e| e + rv + 1)

            {

                let t = map[rv + 1][rh];

                map[hole][rh] = t;

                map[rv][rh] = '.';

                map[rv + 1][rh] = '@';

            }

        }

        '>' => {

            let wall = map[rv][rh + 1..]

                .iter()

                .position(|e| *e == '#')

                .map(|e| e + rh + 1)

                .unwrap();

            if let Some(hole) = map[rv][rh + 1..wall]

                .iter()

                .position(|e| *e == '.')

                .map(|e| e + rh + 1)

            {

                let t = map[rv][rh + 1];

                map[rv][hole] = t;

                map[rv][rh] = '.';

                map[rv][rh + 1] = '@';

            }

        }

        '<' => {

            let wall = map[rv][..rh]

                .iter()

                .enumerate()

                .filter(|e| *e.1 == '#')

                .max_by_key(|k| k.0)

                .map(|e| e.0)

                .unwrap();

            if let Some(hole) = map[rv][wall..=rh - 1]

                .iter()

                .enumerate()

                .filter(|e| *e.1 == '.')

                .max_by_key(|k| k.0)

                .map(|k| k.0 + wall)

            {

                let t = map[rv][rh - 1];

                map[rv][hole] = t;

                map[rv][rh] = '.';

                map[rv][rh - 1] = '@';

            }

        }

        '^' => {

            let wall = map[..=rv - 1]

                .iter()

                .enumerate()

                .filter(|e| e.1[rh] == '#')

                .max_by_key(|k| k.0)

                .map(|e| e.0)

                .unwrap();

            if let Some(hole) = map[wall..=rv - 1]

                .iter()

                .enumerate()

                .filter(|e| e.1[rh] == '.')

                .max_by_key(|k| k.0)

                .map(|e| e.0 + wall)

            {

                let t = map[rv - 1][rh];

                map[hole][rh] = t;

                map[rv][rh] = '.';

                map[rv - 1][rh] = '@';

            }

        }

        _ => (),

    }

}

let mut result = 0;

for i in 0..map.len() {

    for j in 0..map[0].len() {

        if map[i][j] == 'O' {

            result += (100 * i) + j;

        }

    }

}

println!("{}", result);

}

As you can see, nothing too special. The only fun insight was finding the wall and the hole, and that you only need to move the robot, the box right by the robot, and put it in the hole.

[#]aoc24

=> More informations about this toot | View the thread

=> This profile with reblog | Go to modulux@node.isonomia.net account

Proxy Information
Original URL
gemini://mastogem.picasoft.net/profile/109268093588679854
Status Code
Success (20)
Meta
text/gemini
Capsule Response Time
417.603209 milliseconds
Gemini-to-HTML Time
7.50945 milliseconds

This content has been proxied by September (3851b).