@zvava@twtxt.net I might misunderstand what you wrote, but only hashing the message once and storing the hash together with the message in the database seems a way better approch to me. It’s fixed and doesn’t change, so there’s no need to recompute it during runtime over and over and over again. You just have it. And can easily look up other messages by hash.

​ Read More
In-reply-to » Mastodon has a “Wrapstodon 2025” now, showing you a “wrap up” of the year. Of course, a pointless funny shitpost was my most “successful” post in 2025. 😂

@movq@www.uninformativ.de Maybe there’s another meaning I’m not aware of, but this doesn’t look like a shitpost to me. Congrats, I guess. ;-)

​ Read More

2025 end the year rewind:

Compared to only 3 new artworks in 2024 and next to no work, on other projects, this year I not only met the self-imposed goal of monthly pixelart, but exceeded it by 50%, with 18 additions in total.

Relicensed the majority of canine faction owned art and projects, under two less restrictive Creative Commons licensees*. This also applies retroactively, to everyone who used/archived our art and projects, back when the old license didn’t allow it.

Disappointed by the current state of the Internet and continued lack of competition among browsers, completely reworked the main website* and made Smol Drive** (a new image gallery project), both made to be compatible with as many web and Gemini browsers, as possible.

*see https://thecanine.smol.pub
**see https://thecanine.smol.pub/smolbox

​ Read More

Oh great, I received an e-mail that my SMTP credentials have been exposed. Once again, just another shitty scanner that generates garbage reports from tests it doesn’t understand. Thank you for nothing!

conf := &Config{
    SMTPHost: "smtp.example.com",
    SMTPPort: 587,
    SMTPUser: "user",
    SMTPPass: "hunter2",
    SMTPFrom: "from@example.com",
}

​ Read More
In-reply-to » Hey EU friends 👋 wtf happened to the EU Internet today for about 40 minutes or so?

@prologic@twtxt.net I’ve been awake at that time, didn’t notice anything. đŸ€” Where was that BGP analyzer again 
 😅 There’s a tool that keeps track of these things, right? I forgot what it was.

​ Read More
In-reply-to » Hey EU friends 👋 wtf happened to the EU Internet today for about 40 minutes or so?

@prologic@twtxt.net @movq@www.uninformativ.de A crocodile had bitten the big submarine internet cable that connects Australia to Europe. The investigations revealed that some construction work last week accidentally tore up the protective layer around it. That went unnoticed, unfortunately, so marine life had an easy job today. For just 40 minutes, they were quite fast in repairing the damage if you ask me! These communication cables are fricking large.

Just kidding, I completely made that up. :-D I didn’t notice any outage either. But I didn’t try to connect to Down Under at the time span in question.

​ Read More
In-reply-to » Hey EU friends 👋 wtf happened to the EU Internet today for about 40 minutes or so?

@movq@www.uninformativ.de From 2:50 PM to 3:23 PM AEST (+10 UTC) there was an outage. Everything went “up” on Down Detector, my EU region went offline, numerous sites were unavailable, and so on. Basically everything to/from the EU appeared to basically go kaput.

​ Read More
In-reply-to » This feels useful: Rust’s Block Pattern

@movq@www.uninformativ.de Very nice! I often wish other languages had something similar. Sometimes, I use lambdas, but that also looks ugly and feels a bit like a misuse. Other times, just the normal blocks are enough, but it’s not the same. Especially with the mutability aspects as the article explains. Typically, I just put it in a function or ignore it if it’s just a few lines.

​ Read More
In-reply-to » Wow, @movq, so many tables. No idea what I expected (I'm totally clueless on this low-level stuff), but that was quite an interesting surprise to me. https://www.uninformativ.de/blog/postings/2025-12-21/0/POSTING-en.html

@lyse@lyse.isobeef.org These tables get shuffled around every time your OS switches to another process. It’s crazy that so much is going on behind the scenes.

​ Read More
In-reply-to » Wow, @movq, so many tables. No idea what I expected (I'm totally clueless on this low-level stuff), but that was quite an interesting surprise to me. https://www.uninformativ.de/blog/postings/2025-12-21/0/POSTING-en.html

@lyse@lyse.isobeef.org I was surprised by that as well. 😅 I thought these were features that you can use, but no, you must do all this.

By the way, I now fixed the issue that I mentioned at the end and it works on the netbook now. đŸ„ł

https://www.uninformativ.de/blog/postings/2025-12-21/0/netbook.jpg

​ Read More

There is a #Processing survey going on at:

https://docs.google.com/forms/d/e/1FAIpQLSduTT2cWlXzr7QG_g4LJ-Op6LwVTI7dtXHCGVH_FdI0BK00qg/viewform

I’m happy it mentions #py5 at some point.

At the end there is this invitation for the Processing Discord server. I find it unfortunate that the Processing Foundation is moving the community towards a closed, opaque platform controlled by a corporation, when they have the open and searchable forum powered by Discourse. I wish I understood the reasoning. I know Discord can be “convenient” but IMHO the downsides are much bigger.

#CreativeCoding #Discourse

​ Read More

@movq@www.uninformativ.de @kiwu@twtxt.net it just so happens to be a happy coincidence that I’m extending mu’s capabilities to now include a native toolchain-free compiler (doesn’t rely on any external gcc/clang or linkers, etc) that lowers the mu source code into an intermediate representation / IR (what @movq@www.uninformativ.de refers to as “thick layers of abstractions”
) and finally to SSA + ARM64 + Mach-O encoder to produce native binary executables (at least for me on my Mac, Linux may some later?) đŸ€Ł

​ Read More

@kiwu@twtxt.net Assembly is usually the most low-level programming language that you can get. Typical programming languages like Python or Go are a thick layer of abstraction over what the CPU actually does, but with Assembler you get to see it all and you get full control. (With lots of caveats and footnotes. 😅)

I’m interested in the boot process, i.e. what exactly happens when you turn on your computer. In that area, using Assembler is a must, because you really need that fine-grained control here.

​ Read More
In-reply-to » H
 Ho
 How have I not heard about vim-tagbar before? 😳

@lyse@lyse.isobeef.org Yeah, well, given that I didn’t need this for such a long time, it’s probably not an essential tool. 😅

I’ve often wanted to have an outline of text documents, though, and tagbar/ctags can do that as well:

https://movq.de/v/3c6d1a13d6/tagbar-md.png

https://movq.de/v/abc58e6d66/tagbar-latex.png

This isn’t as powerful as the “Navigator” tool in StarOffice/LibreOffice (which can be used to rearrange the document), but still pretty useful:

https://www.uninformativ.de/blog/postings/2024-05-23/0/so31.mp4

​ Read More

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
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