Ok mais logo faço aqui um fio com os pormenores, mas pra jå deixem-me mostrar-vos o setup que desde hå muito quis ter para escrever no computador, inspiradíssimo no OmmWriter, usando só ferramentas livres.

O editor Ă© o FocusWriter, a banda sonora Ă© do @mads100tist@mads100tist e os sons do teclado vĂȘm de uma biblioteca caseira que alinhei, usando samples do snd.dev

Video

​ Read More

@zotero@zotero I noticed that some combinations of XFCE appearance (light) themes and Zotero made the menu “disappear” (black on black) as the window title was dark. Changing the Zotero to a dark theme or changing the XFCE theme worked (but then, I liked the dark window title on a light theme best
). Should I try to open an issue about this, or is it a XFCE issue? I don’t want to burden the maintainers but it was a bit disturbing not to find the menus


​ Read More

“Audaz”, PĂșblico, a palavra que procuram Ă© “audaz”. NĂŁo vale de muito as regulares colunas de defesa da lĂ­ngua portuguesa quando depois Ă© pontapĂ©s destes

Image

​ Read More

Anteontem concretizei finalmente uma ideia de há anos – uma pequena biblioteca #python para emitir sons com cada tecla que pressionamos. Espero logo ter energia pra gravar um pequeno vídeo de demo e publicar o repositório

​ Read More
In-reply-to » Advent of Code 2025 starts tomorrow. đŸ„łđŸŽ„

I rewrote all my solutions in Rust (except for day 10 part 2) and these are the runtimes on my i7-3770 from 2013 (this measures CLOCK_PROCESS_CPUTIME_ID, not wallclock):

day01/1 [      00.000501311] Result: 1066
day01/2 [      00.000400298] Result: 6223
day02/1 [      00.000358848] Result: 12586854255
day02/2 [      00.000750711] Result: 17298174201
day03/1 [      00.000106537] Result: 17405
day03/2 [      00.000404632] Result: 171990312704598
day04/1 [      00.000257517] Result: 1626
day04/2 [      00.007495342] Result: 9173
day05/1 [      00.000237212] Result: 505
day05/2 [      00.000142731] Result: 344423158480189
day06/1 [      00.000229629] Result: 4076006202939
day06/2 [      00.000279552] Result: 7903168391557
day07/1 [      00.000204422] Result: 1622
day07/2 [      00.000283816] Result: 10357305916520
day08/1 [      00.029427421] Result: 84968
day08/2 [      00.028089859] Result: 8663467782
day09/1 [      00.000310304] Result: 4764078684
day09/2 [      00.015512554] Result: 1652344888
day10/1 [      00.000796663] Result: 375
day10/2 [      --.---------] Result: 15377 (Z3)
day11/1 [      00.000416804] Result: 753
day11/2 [      00.000660528] Result: 450854305019580
day12/1 [      00.000336081] Result: 577
day12/2 [      00.000000695] Result: no part 2

A little under 90 ms total.

On my Samsung NC10 netbook from 2011 with its Intel Atom N455 at 1.6 GHz:

day01/1 [      00.003771326] Result: 1066
day01/2 [      00.003267317] Result: 6223
day02/1 [      00.003902698] Result: 12586854255
day02/2 [      00.006659479] Result: 17298174201
day03/1 [      00.000747544] Result: 17405
day03/2 [      00.002737587] Result: 171990312704598
day04/1 [      00.001263892] Result: 1626
day04/2 [      00.044985301] Result: 9173
day05/1 [      00.001696761] Result: 505
day05/2 [      00.000978962] Result: 344423158480189
day06/1 [      00.001387660] Result: 4076006202939
day06/2 [      00.001734248] Result: 7903168391557
day07/1 [      00.001295528] Result: 1622
day07/2 [      00.001809659] Result: 10357305916520
day08/1 [      00.277251443] Result: 84968
day08/2 [      00.284359332] Result: 8663467782
day09/1 [      00.003152407] Result: 4764078684
day09/2 [      00.071123459] Result: 1652344888
day10/1 [      00.005279527] Result: 375
day10/2 [      --.---------] Result: 15377 (Z3)
day11/1 [      00.003273342] Result: 753
day11/2 [      00.005139719] Result: 450854305019580
day12/1 [      00.002857552] Result: 577
day12/2 [      00.000004421] Result: no part 2

A little over 700 ms total.

I like this. You get performance that’s more or less in the ballpark of C, but without the footguns.

​ Read More
In-reply-to » If your very popular project with lots of stars on GitHub is over 10 years old, and you’re still at a pre-1.0 version because you’re using SemVer and a 1.0 would mean making some kind of commitment and that’s somehow not desirable for you, then I think you’re doing something wrong. đŸ€”

@movq@www.uninformativ.de Hmmm 🧐

​ Read More

If your very popular project with lots of stars on GitHub is over 10 years old, and you’re still at a pre-1.0 version because you’re using SemVer and a 1.0 would mean making some kind of commitment and that’s somehow not desirable for you, then I think you’re doing something wrong. đŸ€”

​ Read More

https://li-ma.nl/

«Our online catalogue comprises the largest media art collection in the Netherlands. Search through more than 3,500 works of art, from video-art pioneers from the 1960s to up-and-coming talents and well-known contemporary artists working with the latest technologies. New works are continuously added. The works are available for screenings, exhibitions and research.»

Via @ranoya@ranoya

#NewMediaArt #CreativeCoding #DigitalPreservation

​ Read More

Got a nice conspiracy theory for you:

https://mastodon.social/@mcc/115670290552252848

Actually wait I just thought about this and realized that the precise timing of the ACTUAL GitHub seed bank, by which I mean the Arctic Code Vault, on 2020-02-02, makes it more or less a perfect snapshot of pre-Copilot GitHub. Also precisely timed before we all got brain damage from COVID. This is the only remaining archive of source code by people with a fully working sense of smell

(Bonus points because the Arctic World Archive is located in Svaldbard and that’s the name of the AI in Stacey Kade’s “Cold Eternity”.)

​ Read More

«  a #FAUUSP tem a satisfação de anunciar o inĂ­cio da disponibilização pĂșblica da coleção digital da revista #Habitat, com o lançamento das 15 primeiras ediçÔes, publicadas entre 1950 e 1954. Esta etapa marca mais um avanço no compromisso assumido com a difusĂŁo ampla e qualificada dessa revista fundamental para a histĂłria da arte, da arquitetura e do urbanismo no Brasil.

Desde o anĂșncio inicial, recebemos numerosos contatos de pesquisadoras e pesquisadores de diferentes regiĂ”es do paĂ­s, demonstrando a enorme expectativa em torno do acesso digital Ă  Habitat. Tal interesse reforça a relevĂąncia deste projeto, viabilizado pela generosidade dos herdeiros da Habitat Editora Ltda. e pelo trabalho dedicado de profissionais da FAU-USP envolvidos em sua organização, digitalização e curadoria.

As demais ediçÔes serĂŁo publicadas, de forma gradual, atĂ© completarmos a coleção integral — 84 nĂșmeros no total. Enquanto isso, convidamos o pĂșblico a explorar as capas de todas as ediçÔes, que jĂĄ estĂŁo disponĂ­veis no portal​ dedicado Ă  publicação, e​ que antecipam a riqueza grĂĄfica e editorial da revista: ​

https://habitat.fau.usp.br/index
»

​ Read More

Me antecipando aqui, mas, salvo engano, sĂĄbado e domingo, dias 20 e 21 de dezembro, entre 15h e 18h de 2025 vai rolar oficina de solda no Garoa Hacker Clube em #SĂŁoPaulo!

[assim que estiver na agenda do clube e na wiki eu ponho o link aqui]

Vamos ter uns kits simpåticos à venda pra quem quiser comprar, pode também levar alguma coisa de casa que queira soldar
 eu vou no domingo 21. #hackerspace

​ Read More

#Processing & #py5 tip:
Remember the shapes you put on draw() will be redrawn over and over, and if they don’t move (leaving a trail) you might want to either clean each frame with background(...), or stop the draw loop (noLoop() in Processing or no_loop() in py5), otherwise you kill the anti-aliasing of the lines/strokes/edges!

I’m posting this tip because even using these tools for years and knowing this, today I briefly thought something was odd/broken because my lines were ugly with no “smoothing” :D

”`python
import py5

def setup():

py5.size(200, 200)
py5.stroke_weight(2)
# a line that will drawn once only
py5.line(10, 10, 190, 90)  

def draw():

# you could clean the frame here with background(200)
# this other line will be redrawn many times
py5.line(10, 110, 190, 190) 

def key_pressed():

py5.save('out.png')

py5.run_sketch()

”`

Image

​ Read More

#Processing & #py5 tip:
Remember the shapes you put on draw() will be redrawn over and over, and if they don’t move (leaving a trail) you might want to either clean each frame with background(...), or stop the draw loop (noLoop() in Processing or no_loop() in py5), otherwise you kill the anti-aliasing of the lines :D

”`python
import py5

def setup():

py5.size(200, 200)
py5.stroke_weight(2)
# a line that will drawn once only
py5.line(10, 10, 190, 90)  

def draw():

# you could clean the frame here with background(200)
# this other line will be redrawn many times
py5.line(10, 110, 190, 190) 

def key_pressed():

py5.save('out.png')

py5.run_sketch()

”`

Image

​ Read More
In-reply-to » I finished all 12 days of Advent of Code 2025! #AdventOfCode https://adventofcode.com — did it in my own language, mu (Go/Python-ish, dynamic, int/bool/string, no floats/bitwise). Found a VM bug, fixed it, and the self-hosted mu compiler/VM (written in mu, host in Go) carried me through. đŸ„ł

@prologic@twtxt.net How on earth did you do that so quickly, especially day 10? People were struggling with this a lot. đŸ€Ż

​ Read More

I cleaned up all my of AoC (Advent of Code) 2025 solutions, refactored many of the utilities I had to write as reusable libraries, re-tested Day 1 (but nothing else). here it is if you’re curious! This is written in mu, my own language I built as a self-hosted minimal compiler/vm with very few types and builtins.

https://git.mills.io/prologic/aoc2025

​ Read More
In-reply-to » Day 9 also required some optimizations, if you aren't careful, you end up with really inefficient algorithms with time/memory complexity beyond what a typical machine has đŸ€Ł

@movq@www.uninformativ.de I shrank Day 9 Part 2 from “cover the whole map” to “only track the interesting lines.” By compressing coordinates to just the unique x/y breakpoints, the grid got tiny. I still flood-fill and do the corner-pair checks, but now on that compact grid with weighted prefix sums for instant rectangle checks. Result: far less RAM, way less CPU, same correct answer.

​ Read More

Day 9 also required some optimizations, if you aren’t careful, you end up with really inefficient algorithms with time/memory complexity beyond what a typical machine has đŸ€Ł

​ Read More

Day 7 was pretty tough, I initially ended up implementing an exponential in both time and memory solution that I killed because it was eating all the resources on my Mac Studio, and this poor little machine only has 32GB of memory (I stopped it at 118GB of memory, swapping badly!), This is what I ended up doing before/after:

  • Before: Time O(2^k · L), memory O(2^k), where k is the number of splitters along a reachable path and L is path length. Exponential in k.
  • After: Time O(R·C) (or O(R·C + s) with s split events), memory O©, where R = rows, C = columns. Polynomial/linear in grid size.

​ Read More
In-reply-to » My current PC is from 2013, so I never even bothered to check, but as it turns out: My motherboard still has a serial port. đŸ€Ż I thought these had long died out by then. To be honest, I didn’t have the need for one, either, not until recently 
 So I completely lost track if PCs have these things or not.

Bought more cheap slot plates (with bad reviews and people complaining about the pin order, because I could’nt find a product without such reviews), but those are simply correct now and just work. đŸ€Ș

​ Read More
In-reply-to » Did I mention mu only supports ints? đŸ€” I'm not sure if I'll need flots for this year's AoC? đŸ€”

(Well, one part late in the calendar might need floats, depending on how you solve it 
)

​ Read More

I’m having to write my own functions like this in mu just to solve AoC puzzles :D

fn pow10(k) {
    p := 1
    i := 0
    while i < k {
        p = p * 10
        i = i + 1
    }
    return p
}

​ Read More

I’m seeing crashes in the 3D subsystem. (Gallium? Glamor? Whatever other Mesa thing they have? No idea.) In the logs I find this:

malloc(): unaligned tcache chunk detected

And that’s why I still care about Rust and want to learn more about it, even though it’s giving me so much headache and I’ve given up so many times. Because Rust currently seems to be the only popular systems programming language that tries to eliminate these error classes.

And of course “the Rust experiment” in the Linux kernel has recently been concluded as “successful”, so that alone is reason enough for me:

https://lwn.net/Articles/1049831/

​ Read More
In-reply-to » Come back from my trip, run my AoC 2025 Day 1 solution in my own language (mu) and find it didn't run correctly đŸ€Ł Ooops!

That’s the right answer! You are one gold star closer to decorating the North Pole. [Continue to Part Two]

Whoo! Making progress! With AoC 2025 solutions implemented in my own toy language đŸ€Ł

​ Read More
In-reply-to » Come back from my trip, run my AoC 2025 Day 1 solution in my own language (mu) and find it didn't run correctly đŸ€Ł Ooops!

Ahh that’s because I forgot to call main() at the end of the source file. mu is a bit of a dynamic programming language, mix of Go(ish) and Python(ish).

$ ./bin/mu examples/aoc2025/day1.mu 
Execution failed: undefined variable readline

​ Read More

Come back from my trip, run my AoC 2025 Day 1 solution in my own language (mu) and find it didn’t run correctly đŸ€Ł Ooops!

$ ./bin/mu examples/aoc2025/day1.mu
closure[0x140001544e0]

​ Read More

Using #Python’s #pathlib to compare two repos and get back some missing files from a “recovered” version of a repo (mostly stuff in .gitignore that is handy not to discard right now).

from pathlib import Path

a = Path('sketch-a-day')
b = Path('sketch-a-day_broken')

files_a =  {p.relative_to(a) for p in a.rglob('*')
    if '.git' not in str(p)
    if 'cache' not in str(p)
    if 'checkpoint' not in str(p)
}
files_b =  {p.relative_to(b) for p in b.rglob('*')
    if '.git' not in str(p)
    if 'cache' not in str(p)
    if 'checkpoint' not in str(p)
}
missing = files_b - files_a

for p in missing:
    (b / p).rename((a / p))

​ Read More

Como ficaria as sua #VidaDigital se vocĂȘ perdesse acesso Ă  sua conta do #Google (gmail, drive, photos e etc.)? Isso pode acontecer e acontece.

Tento pensar nisso pelo menos uma vez por ano. De tempos em tempos uso google.com/takeout e fica cada vez mais difĂ­cil.

Impulsionei agora pouco um post sobre uma pessoa trancada pra fora da conta da #Apple, um desastre também.

​ Read More
In-reply-to » Advent of Code 2025 starts tomorrow. đŸ„łđŸŽ„

Alright, Advent of Code is over:

https://www.uninformativ.de/blog/postings/2025-12-12/0/POSTING-en.html

It’s been quite the time sink, especially with the DOS games on top, but it was fun. đŸ„ł

In case you’re wondering: All puzzles (except for part 2 of day 10) were doable in Python 1 on SuSE Linux 6.4 and ran in a finite time on the Pentium 133. Puzzle 10/2 might have been doable as well if I had better education. đŸ€Ł

​ Read More
In-reply-to » @lyse I swear, Her vlog is all I needed to cleanse my soul! Full of pure human interactions (whenever there is any), No BS No pretending and No Nonsense. Again, Thank you!

@aelaraji@aelaraji.com Yes, exactly. It also blows my mind that with sooo much less budget and equipment, her videos are way superior to productions of big TV stations.

​ Read More

What the fresh hell! “Glance” wants to take over my Android lock screen and won’t take NO for an answer, just “Not now — so I’ll ask again later!”

Updade: found the app and disabled it, I hope it won’t be able ta ask again anything.

​ Read More
In-reply-to » Use more WebP, I guess.

Webp, though it has been around for a long while, wasn’t fully supported on all browsers until recently. The other formats have been in use for such a long time, proving to work just fine, that the advantages Webp provides haven’t been seemingly enough to merit a switch.

Google is also the one behind Webp, and, well, people don’t trust, nor like, them much.

​ Read More
In-reply-to » Use more WebP, I guess.

Webp, though it has been around for a long while, wasn’t fully supported on all browsers until recently. The other formats has been in use for such a long time, proving to work just fine, that the advantages Webp provides haven’t been seemingly enough to merit a switch.

Google is also the one behind Webp, and, well, people don’t trust, nor like, them much.

​ Read More

#FediAjuda #AjudaMastodon meu irmĂŁo precisa comprar um computador, ele precisa navegar e rodar alguns programas de desenho, tipo inkscape. Ele sabe um pouco de SketchUp, e nĂŁo sei se consigo tirar ele do Windows :((

Estamos no Brasil, alguma sugestão/dica perto de 2mil reais parcelados? Da Suponho que tela de 15”, i3 e SSD seja o mínimo?

​ Read More