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. š
#c4kknra
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.
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",
}
(#c6rrdzq) @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.
(#c6rrdzq) @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.
(#c6rrdzq) @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.
(#c6rrdzq) @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?
(#2hgjg3q) @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.
(#jta6w7a) @movq@www.uninformativ.de Ah, cool! :-) Yeah, itās very wild what is happening under the hood all the time.
(#dddn3ja) @prologic@twtxt.net You write so much code ⦠itās incredible. š
This feels useful: Rustās Block Pattern
(#jta6w7a) @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.
(#jta6w7a) @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
(#tm3x4qa) @kiwu@twtxt.net Ta, same to you!
(#dddn3ja) @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?) š¤£
(#huts53q) @shinyoukai@neko.laidback.moe But I thought Alpine was one of the good distroās left. š¢ Whatās it doing wrong?
(#dddn3ja) @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.
(#iaunzca) @movq@www.uninformativ.de Oh, a table of contents is indeed a great idea!
(#knxgcuq) @kiwu@twtxt.net Finally doing some Assembler again. š Just a tiny little bit at least.
(#iaunzca) @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
(#iaunzca) @movq@www.uninformativ.de Interesting. I never found a big use for these kind of lists in general. But I might give it a shot again.
(#crgs3xa) @movq@www.uninformativ.de Not sure what it had in its beak. It looked a wee bit like a large biscuit. But it must have been rock-hard.
(#knxgcuq) @kiwu@twtxt.net Iām doing great, howāre ya going? Just two more days and then I never have to work anymore. In this year.
I just baked two trays of gingerbread. One definitely good one and another experiment.
This morning was also super pretty: https://lyse.isobeef.org/morgensonne-2025-12-19/
(#7sw2ifq) @lyse@lyse.isobeef.org Awww, 03.jpg. š Yeah, we also had a nice sunset. I was on the road, though, so no photos.
(#iaunzca) Ooooooooooh! If your .vimrc is as messy as mine, youāll be pleased to learn that Tagbar can show a sorted list of all key mappings:
https://movq.de/v/0f37d13a01/s.png
š¤Æ
Magpie and sunset: https://lyse.isobeef.org/waldspaziergang-2025-12-18/
(#ftqfrta) @movq@www.uninformativ.de Pretty sure all my mu solutions are very slow, but not so slow as I optimized most of the implementations to avoid as much brute forcing as I could.
(#ftqfrta) @prologic@twtxt.net It is, yes.
(#ftqfrta) @movq@www.uninformativ.de This is the total amount of cpu time consumed right?
(#ftqfrta) 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.
(#ltabnaq) @movq@www.uninformativ.de Hmmm š§
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. š¤
(#6p6xg7a) @shinyoukai@neko.laidback.moe I think I never watched it. In any case, enjoy reading your books.
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ā.)
(#iaunzca) @movq@www.uninformativ.de Neither have I. :-D
(#6p6xg7a) @shinyoukai@neko.laidback.moe These are all Debian release names: https://www.debian.org/releases/
(#4k4z3la) @kiwu@twtxt.net evening!!!
(#fqh5rnq) @prologic@twtxt.net How on earth did you do that so quickly, especially day 10? People were struggling with this a lot. š¤Æ
(#fqh5rnq) @movq@www.uninformativ.de Haha š
(#fqh5rnq) @prologic@twtxt.net Jesus, that was quick. š
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.
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. š„³
(#te6p5oa) @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.
(#te6p5oa) @prologic@twtxt.net How did you optimize that? š¤
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 š¤£
Ooops, Iāve run into a bug or limitation with mu for Day 9 š¤
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:
(#hbz2oeq) @shinyoukai@neko.laidback.moe Good š