š Hi, the current time is about a half past seven in the morning š.
@lyse@lyse.isobeef.org I can tell you this right now, writing assembly / machine code is fucking hard work⢠š Iām sure @movq@www.uninformativ.de can affirm 𤣠And when it all goes to shit⢠(which it does often), man is debugging fucking hard as hell! Without debug symbols I canāt use the regular tools like lldb or gdb š
@prologic@twtxt.net Yeah, the parser part is what I typically enjoy. Havenāt really looked into code generation itself.
Iām currently looking at your µ commits from the last few days. Holy cow! :-)
println(1, 2) was bring printed as 1 2 in the bytecode VM and 1 nil when natively compiled to machine code on macOS. In the end it turned out the machine code being generated / emitted meant that the list pointers for the rest... of the variadic arguments was being slot into a register that was being clobbered by the mu_retain and mu_release calls and effectively getting freed up on first use by the RC (reference counting) garbage collector š¤¦āāļø
@lyse@lyse.isobeef.org Yeah I remember you said some days back that your interest in compilers was rekindled by my work on mu (µ) š
pwgen --no-capitalize --no-numerals 5 and since that already showed up in DDG search results, I simply appended the last two, which yielded nothing on DDG and Google).
Dang it, thereās a Swede by the username of Quongsi: https://www.flashback.org/u1404408 :-D
println(1, 2) was bring printed as 1 2 in the bytecode VM and 1 nil when natively compiled to machine code on macOS. In the end it turned out the machine code being generated / emitted meant that the list pointers for the rest... of the variadic arguments was being slot into a register that was being clobbered by the mu_retain and mu_release calls and effectively getting freed up on first use by the RC (reference counting) garbage collector š¤¦āāļø
@prologic@twtxt.net Tada, congratulations! I find that rather interesting, thanks for telling us. :-)
@movq@www.uninformativ.de How about āQuongsiā? I generated the first five letters with pwgen --no-capitalize --no-numerals 5 and since that already showed up in DDG search results, I simply appended the last two, which yielded nothing on DDG and Google).
What kind of project is it? Maybe we can help you find a name or nudge you in the right direction.
The tt URLs View now automatically selects the first URL that I probably are going to open. In decreasing order, the URL types are:
- markdown media URLs (images, videos, etc.)
- markdown or plaintext URLs
- subjects
- mentions
I might differentiate between mentions of subscribed and unsubscribed feeds in the future. The odds of opening a new feed over an already existing one are higher.
Whoo! I fixed one of the hardest bugs in mu (µ) I think Iāve had to figure out. Took me several days in fact to figure it out. The basic problem was, println(1, 2) was bring printed as 1 2 in the bytecode VM and 1 nil when natively compiled to machine code on macOS. In the end it turned out the machine code being generated / emitted meant that the list pointers for the rest... of the variadic arguments was being slot into a register that was being clobbered by the mu_retain and mu_release calls and effectively getting freed up on first use by the RC (reference counting) garbage collector š¤¦āāļø
@lyse@lyse.isobeef.org True !
@prologic@twtxt.net In my opinion, the integrity isnāt lost. The same input data always result in the same output hash, no matter when you calculate the hashes. Itās true that a corrupt database contents yields to corrupt hashes, but then you have a whole bigger problem than just receiving different hashes. :-D
Trying to come up with a name for a new project and every name is already taken. 𤣠The internet is full!
@zvava@twtxt.net By hashing definition, if you edit your message, it simply becomes a new message. Itās just not the same message anymore. At least from a technical point of view. As a human, personally I disagree, but thatās what Iām stuck with. Thereās no reliable way to detect and ācorrectā for that.
Storing the hash in your database doesnāt prevent you from switching to another hashing implementation later on. As of now, message creation timestamps earlier than some magical point in time use twt hash v1, messages on or after that magical timestamp use twt hash v2. So, a message either has a v1 or a v2 hash, but not both. At least one of them is never meaningful.
Once you āupgradeā your database schema, you can check for stored messages from the future which should have been hashed using v2, but were actually v1-hashed and simply fix them.
If there will ever be another addressing scheme, you could reuse the existing hash column if it supersedes the v1/v2 hashes. Otherwise, a new column might be useful, or perhaps no column at all (looking at location-based addressing or how it was called). The old v1/v2 hashes are still needed for all past conversation trees.
In my opinion, always recalculating the hashes is a big waste of time and energy. But if it serves you well, then go for it.
@zvava@twtxt.net The problem you now then is you lose integrity of the message content if you compute the hashes at runtime rather than on the way in. So if your message content or database becomes corrupt in any way, so do your hashes.
Espanha proĆbe concursos de design especulativos sem remuneração: a externalização do risco criativo em troca da promessa de visibilidade, prestĆgio ou āoportunidades futurasā passa a implicar atĆ© 2 anos de prisĆ£o
Trying to relax after the last working shift of the year. Iāve got a nice view of #SĆ£oPaulo as the evening falls.
@shinyoukai@neko.laidback.moe The CSS 404ing highlights the improvability of the content to noise ratio. :-)
@movq@www.uninformativ.de The asshats are everywhere. Luckily, it has been rather quiet so far. But of course, I now jinxed it.
Building native compilers is hard 𤣠Building bytecode VM / interpreters is way easier š¤£
@shinyoukai@neko.laidback.moe Very cool! š
@shinyoukai@neko.laidback.moe Nice! š
@movq@www.uninformativ.de Thanks! š
O Mattermost, vem-se a saber, não é uma escolha sensata: tem vÔrios componentes proprietÔrios (e é pouco transparente quanto a isso)
https://isitreallyfoss.com/projects/mattermost/
Fico aliviado de na @d3 termos optado pelo Rocket.Chat, que embora não sendo perfeito, cumpre em tudo o que é preciso e (ainda) é software livre.
āResisting GenAI & Big Tech in Higher Educationā by @danmcquillan@danmcquillan
https://danmcquillan.org/resisting_genai_highered_cjuu.html
(via @catarinac@catarinac)
@prologic@twtxt.net This is a really cool project, thatās for sure. š
@lyse@lyse.isobeef.org ⦠I was about to write āit really is worse where you liveā, then I heard the first bang out on the street. š¤£
Itās this time of the year again, where people burn money on the streets.
@shinyoukai@neko.laidback.moe Nah itās more like thereās a lot of repeated code, because when you go from source language to intermediate representation to machine code, well you just end up writing a lot of the same patterns over and over again. I need to dedupe this I think.
@kiwu@twtxt.net Ooof š¢ Thatās rough!
The compiler technique Iām using here is to not āemitā most of the runtime if itās actually never used in your program, and also dropping dead code in the SSA pass.
@movq@www.uninformativ.de Iāve managed to bring a simple āHello World!ā in mu (µ) (at least on macOS / Darwin / ARM64) down to ~86KB (previously ~146KB) š„³
Hmmm I need to figure out a way to reduce the no. of lines of code / complexity of the ARM64 native code emitter for mu (µ). Itās insane really, itās a whopping ~6k SLOC, the next biggest source file is the compiler at only ~800 SLOC š¤
@movq@www.uninformativ.de I think I can get binaries even smaller with a bit more work and effort š¤ But yeah still working on the native code generation (at least for macOS targets)
@prologic@twtxt.net Oh! š¤
@movq@www.uninformativ.de Oh thatās fine, Mu can compile to native code and so far binaries. at least on macOS are in the order of Kb in size š
@prologic@twtxt.net That might be a challenge, at least in 16-bit Real Mode: The OS follows the model of COM files on DOS, i.e. the size of the binary cannot exceed 64 KiB and heap+stack of the running program will have to fit into that same 64 KiB. š (The memory layout is very rigid, each process gets such a 64 KiB slice.)
And in 64-bit Long Mode, there is no ākernelā yet. The thing in the video is literally just a small bare-metal program.
But some day, maybe. š
@movq@www.uninformativ.de Itād be cool if you could get µ (Mu) running in your little toyOS 𤣠Youād technically only have to swap out the syscall() builtin for whatever your toy OS supports š¤
Almost all photos turned out to be blurred today. That made sorting a very quick process. Delete, delete, delete, ⦠https://lyse.isobeef.org/waldspaziergang-2025-12-26/
Seeing this run on real hardware is so satisfying, even if itās just a small example. š
My little toy operating system from last year runs in 16-bit Real Mode (like DOS). Since Iāve recently figured out how to switch to 64-bit Long Mode right after BIOS boot, I now have a little program that performs this switch on my toy OS. It will load and run any x86-64 program, assuming itās freestanding, a flat binary, and small enough (< 128 KiB code, only uses the first 2 MiB of memory).
Here Iām running a little C program (compiled using normal GCC, no Watcom trickery):
https://movq.de/v/b27ced6dcb/los86%2D64.mp4
https://movq.de/v/b27ced6dcb/c.png
Next steps could include:
- Use Rust instead of C for that 64-bit program?
- Provide interrupt service routines. (At the moment, it just keeps interrupts disabled.)
Iām still deciding if I want to watch #Pluribus. When people told me Carol only wanted to meet the English speaking āimuneā people it was such a turn off⦠like, it sounds rather offensiveā¦
@thecanine@twtxt.net I see š¤ Very cool though! š
@prologic@twtxt.net Not even entirely sure how I did it myself, but likely a lucky combination of the new tail swirl, the legs closer to the screen being bigger and the head looking slightly to the side (eye & ear position), with bottom part of the hair, going behind the snout. The white is just an outline, around most of my works, so I donāt think that plays a part.
@movq@www.uninformativ.de @prologic@twtxt.net Holy shit, this is sooo fucking cool! :-) Wow, I absolutely love it. Itās extremely fascinating what these optimizers do.
Woof, woof, @thecanine@twtxt.net! Thatās cute.
Thank you! Merry Christmas! š
@movq@www.uninformativ.de I have not, thanks! <3
@prologic@twtxt.net @movq@www.uninformativ.de Oh, I take my 0°C over the 36°C anytime! Even with yesterdayās gray and windy sleet in my face. However, there are definitely more pleasant times to walk in town, Iāll give you that. For example on 0°C sunny today: https://lyse.isobeef.org/waldspaziergang-2025-12-25/
@movq@www.uninformativ.de I watched a few of these thanks to you! Very cool shit⢠š
In case you havenāt seen it yet:
Matt Godboltās āAdvent of Compiler Optimisationsā!
https://www.youtube.com/playlist?list=PL2HVqYf7If8cY4wLk7JUQ2f0JXY_xMQm2
@movq@www.uninformativ.de Ooof thatās chilly š„¶
@prologic@twtxt.net And I froze my ass off yesterday at -5°C and strong winds. š¤£
thatās a whopping 36°C today š„µ
@dce@hashnix.club merry Christmas to you too!
@thecanine@twtxt.net Is it because youāve used white pixels around it to sort of give it aht 3D look? š Hmm? š¤
@bender@twtxt.net Itās fun living in the future isnāt it š¤£
@prologic@twtxt.net merry Christmas! I keep forgetting you live in our future. š
š Merry Xmas š š
This one is a slightly more 3D looking, as well as the first one, with the tail swirled.

@movq@www.uninformativ.de Hahaha, this is hilarious! :ā-D
@prologic@twtxt.net š Merry Christmas and stuff š š
@lyse@lyse.isobeef.org Lovely! We also just had some snow. š Not a lot, but still. š
(Lol, I totally read that as ārootfsā. š¤Ŗ)
š Merry (2025) Xmas yāall š Ho ho ho! š
@movq@www.uninformativ.de Only the roofs are a little white. Itās also windy here. https://lyse.isobeef.org/weisse-weihnachten-2025-12-24/01.jpg
pão de lol
@lyse@lyse.isobeef.org Oooh, nice! ā We only have cold stormy weather over here. š„“
Indeed, tiny, tiny snowflakes coming down.
Oh, thatās cute: https://movq.de/v/046fb6ee70/s.png DuckDuckGo puts a little helmet on the duck when you search for Skyrim. (Katria is a Skyrim character.)
@lyse@lyse.isobeef.org Thanks. š (Do I say that? The WM canāt answer. š¤£)
A cool new open/free #book on #CreativeCoding by Stig MĆøller Hansen is out!
https://stigmollerhansen.dk/resume/learning-creative-coding/
@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.
Happy birthday Katrina! https://www.uninformativ.de/blog/postings/2025-12-23/0/POSTING-en.html :-)
Oh wow, there might be snow tomorrow! Probably not much, though. Letās see.
@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. ;-)
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. š
I just had a closer look at https://git.mills.io/prologic/mu and it motivated me to do some compiler building myself again. Hopefully, I find some time in the next free days. Iām bad at it, but itās always great fun.
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
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",
}
@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.
@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.
@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.
@prologic@twtxt.net Hm, I didnāt notice anything. Perhaps I was asleep? š
Hey EU friends š wtf happened to the EU Internet today for about 40 minutes or so?
š¼
@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.
@movq@www.uninformativ.de Ah, cool! :-) Yeah, itās very wild what is happening under the hood all the time.
@prologic@twtxt.net You write so much code ⦠itās incredible. š
This feels useful: Rustās Block Pattern
@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.
@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
Wow, @movq@www.uninformativ.de, 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
@kiwu@twtxt.net Ta, same to you!
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.
No fake lafufu
cc @shizamura
@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?) š¤£
@shinyoukai@neko.laidback.moe But I thought Alpine was one of the good distroās left. š¢ Whatās it doing wrong?
@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.