
How it’s going? This is how it’s going: https://movq.de/v/b744b63cc1/oh-fuck-sleep.mp4
How it’s going? This is how it’s going: https://movq.de/v/b744b63cc1/oh-fuck-sleep.mp4
Saw Windows 11 for the first time today and genuinely had to ask if this is really Windows. Looks a lot like KDE.
(At first, I thought the touchpad of that laptop was broken, because a right click on the desktop didn’t do anything. But it worked just fine. It just takes ~10 seconds for the popup to show.)
One week of not tinkering with my OS and I’ve already forgot ~80% of it. 🙄
I’ve seen people refer to themselves as “Quakers” and I thought, “yeah, I liked those games, too!” But apparently, they mean something else. 😬 https://en.wikipedia.org/wiki/Quakers
Super tired lately and not doing much on the programming front. 🫤
Every time I go to the office, I get nothing done. Unbelievable.
View from my window last evening:
Moon, Venus, an airplane in the top left corner, wind parks in the distance.
(This is already too much for a standard camera. The moon is super bright, the rest is not. Guess I should go HDR some day?)
Why do programmers confuse Halloween and Christmas?
QmVjYXVzZSBPY3QgMzEgPSBEZWMgMjUuCg==
🤪
Yet another internet outage. Getting more and more of those. 😒
Let’s finish this day with this masterpiece. (I still don’t understand how just two instruments can produce such a big sound.) // YOB - Adrift in the Ocean // https://www.youtube.com/watch?v=Uif5XmYF7_k #NowPlaying
Das Firmenhandy sagt mir nach einem Update: „Dein Pixel kann jetzt noch mehr!“ Aha. Ist es jetzt ein Voxel? Kann’s jetzt mehr als 256 Farben? Oder was? Ich bin eindeutig nicht die Zielgruppe solcher Sprüche …
I really need to catch up on your recent twtxt proposals/developments. I’m totally lost in my other projects at the moment. 🫣
Didn’t really work on my OS this week. Well, editor and assembler also run on DOS now, but that wasn’t hard (still cool!):
https://movq.de/v/13bf8c77b9/los-tools-on-dos.mp4
The subshell thingy also works on DOS, I like that.
„Das Leben ist hart“, albert ein Stein.
– irgendwer auf YouTube
An all time favorite. // Amorphis - Drifting Memories // https://www.youtube.com/watch?v=WoY4oJkpBEs #NowPlaying
ISS (the long “line” on the right) passing Venus and Saturn:
Jupiter and its moons a few days ago:
Not spectacular shots, but hey, it’s something.
Also saw the crescent Venus and Saturn’s rings through my scope (you know, the one for bird watching).
Preaching to the choir, I guess: The PC is Dead: It’s Time to Make Computing Personal Again
Friendly, regular reminder to always check if a TV show has already been cancelled before you start watching it.
Alright, I have a little 8086 assembler for my toy OS going now – or rather a proof-of-concept thereof. It only supports a tiny fraction of the instruction set. It was an interesting learning experience, but I don’t think trying to “complete” this program is worth my time.
The whole thing is just a learning project, I don’t want to actually make a usable OS. There are a few more things I want to have a look at and then I’ll eventually move on to 386/amd64 later this year (hopefully).
The editor can launch a new shell now:
https://movq.de/v/6ec68b50dd/los86-edit-shell.mp4
Trivial to implement but super useful. It allows for simple but meaningful dev cycles: Edit source code, run/test it, back to editor. That’s what I do in the video.
(The Brainfuck program is silly, but I got nothing else at the moment.)
The I/O cache is also getting better. All that back and forth doesn’t hit the disk at all, once cached.
This whole thing is much more fun and interesting when you run it from a real floppy disk. It’s a 5.25" floppy in the video (so it’s actually floppy 😅). Disk seek times can be catastrophic and you don’t notice any of this on modern disks.
My OS has a Brainfuck interpreter now and this counts as a programming language, right? We’re feature complete now. 😂
I just used screego to help a family member with their Windows PC. Flawless experience! 💚
I’ve made it a habit to always put on my noise cancelling headphones when going to bed (without music). It’s pure heaven. 😂 Silence and darkness. I fall asleep within minutes. 😂 Good night. 😴
And that was the first time Vim ever crashed on me:
Vim: Caught deadly signal SEGV
Vim: preserving files...
Vim: Finished.
Segmentation fault (core dumped)
I was using Ctrl+P
to scroll through the completion list. 🤔 Reproducible. Ctrl+N
still works.
Hopefully fixed by this: https://github.com/vim/vim/commit/8d0bb6dc9f2e5d94ebb59671d592c1b7fa325ca6
“2025” doesn’t look right. That looks like a date which is absurdly far into the future. Like 2199 or something.
In the process of temporarily removing and securing all my hard disks. They’ll be turning this building into a construction site for the next weeks/months. Lots of heavy drilling and hammering. Not sure what this means for spinning disks and I’d rather be on the safe side. 🫤
… aaaaaaand I had the first bug in my toy OS that was caused by caching. 😂 Bloody caching. (It only triggered in error conditions, but still.)
For some reason, I was using calc all this time. I mean, it’s good, but I need to do base conversions (dec, hex, bin) very often and you have to type base(2)
or base(16)
in calc to do that. That’s exhausting after a while.
So I now replaced calc with a little Python script which always prints the results in dec/hex/bin, grouped in bytes (if the result is an integer). That’s what I need. It’s basically just a loop around Python’s exec()
.
$ mcalc
> 123
123 0x[7b] 0b[01111011]
> 1234
1234 0x[04 d2] 0b[00000100 11010010]
> 0x7C00 + 0x3F + 512
32319 0x[7e 3f] 0b[01111110 00111111]
> a = 10; b = 0x2b; c = 0b1100101
10 0x[0a] 0b[00001010]
> a + b + 3 * c
356 0x[01 64] 0b[00000001 01100100]
> 2**32 - 1
4294967295 0x[ff ff ff ff] 0b[11111111 11111111 11111111 11111111]
> 4 * atan(1)
3.141592653589793
> cos(pi)
-1.0
The fact that the official Python docs don’t clearly state what a function returns, grinds my gears. This has cost me so much time over the years. You always have to read through a huge block of text.
You could at least put a list of possible return values in there (always at the same location, please!), here’s a mockup:
Noon in summer:
And noon in winter:
The difference never fails to make me go “whoa”. 😅
This evening, Saturn will show up right next to a crescent moon:
Let’s see if I can catch that in a photo.
It needs to be said: Retrocomputing and old systems like DOS or OS/2 are fun and all, but a UNIX shell and its userland tools are the most powerful things I’ve ever seen. You can pry that from my cold dead hands. 😅
This looks like something @lyse might enjoy building: https://imgur.com/gallery/balancing-fisherman-tutorial-YNnsTh1
Okay, this is pretty cool. My 8086 toy OS running on my old Pentium from an actual floppy disk. 😍 I just love that sound and the feeling of using floppies. This brings back so many memories from my early DOS days.
The cp-unopt
program copies a file and intentionally uses small unaligned reads/writes (hopefully triggers more bugs).
The I/O cache works “okay-ish”, I guess. When sha1
runs, it has to do a few reads for the first file and basically none for the second one. Both could have been served entirely from the cache, theoretically. (But even just having an I/O cache in the first place speeds up things dramatically.)
Notice how there’s an EA
file. That’s a left-over from OS/2, because I copied some files to the floppy using OS/2. In other words, my FAT12 implementation survives OS/2 writing to it. 🥳 (But I guess it should show up as EA DATA.SF
. My current code starts at the left and stops at the first space.)
https://movq.de/v/d4d50d3c74/los86-on-p133-from-floppy-small2.mp4
Made a little text editor for my 8086 toy operating system today. It can’t do much, but it allows for some basic editing. 💾
That was probably the last “big” thing I did for that OS in the near future. Vacation is coming to an end.
It’s getting Winter-y. Here’s that tree again: https://movq.de/v/07262a1e12/IMG_20241229_142030.jpg-small.jpg
After taking a short break for Christmas business, I’ve worked on my little toy operating system for the 8086 again.
It understands the basics of FAT12 now. I’ve actually never sat down before to learn how FAT works. 🤦 Well, better late than never, I guess.
It can’t do subdirectories nor timestamps and I probably won’t implement that. One flat directory is good enough for my purposes and the OS has no notion of time, yet, anyway.
It’s really cool to be able to exchange files with the Linux host or other DOS VMs. 🥳
I loved to watch the “Curiosity Show” when I was a kid (the German version, of course – to this day, nothing in German television is in English, it’s all dubbed horribly). And it’s on YouTube now! 🥳 https://www.youtube.com/@CuriosityShow/videos
If you don’t like Advent of Code because it’s just more programming on top of your day job, I’d like to suggest doing the following days in isolation:
And maybe even:
The first two can be solved by creativity and exploration, they’re not just “use algorithm $foo
” like many other puzzles. They require hardly any programming at all.
The other two do need a bit of programming, but 2024/14 was pretty interesting and unconventional.
twtxt was on HackerNews yesterday and I think none of us noticed. 😂 https://news.ycombinator.com/item?id=42488983
2024 was a funny year: The year begins and ends with calendar week 1:
The one in January being 2024-W01 and the one in December 2025-W01.
🤓
(Hmmm, my printed LaTeX calendar using tikz-kalender gets it wrong or uses different week definitions. It shows next week as 53. 🤔)
Why have I never checked out KolibriOS before? That thing is crazy. 😳
I’ve been making a little toy operating system for the 8086 in the last few days. Now that was a lot of fun!
I don’t plan on making that code public. This is purely a learning project for myself. I think going for real-mode 8086 + BIOS is a good idea as a first step. I am well aware that this isn’t going anywhere – but now I’ve gained some experience and learned a ton of stuff, so maybe 32 bit or even 64 bit mode might be doable in the future? We’ll see.
It provides a syscall interface, can launch processes, read/write files (in a very simple filesystem).
Here’s a video where I run it natively on my old Dell Inspiron 6400 laptop (and Warp 3 later in the video, because why not):
https://movq.de/v/893daaa548/los86-p133-warp3.mp4
(Sorry for the skewed video. It’s a glossy display and super hard to film this.)
It starts with the laptop’s boot menu and then boots into the kernel and launches a shell as PID 1. From there, I can launch other processes (anything I enter is a new process, except for the exit at the end) and they return the shell afterwards.
And a screenshot running in QEMU:
Props to you if you can easily spot the scrollbar in this picture:
People doing Advent of Code in this language is the craziest thing I’ve seen: https://www.uiua.org/
A blog post of mine is on the front page of HackerNews again. Not sure if I like this. 🤔 Let’s hope there won’t be people shouting at me this time. Angry nerds can get quite emotional …
As I was typing my password, I hit Tab
and expected it to auto-complete. 🤦
I was today years old when I learned that Firefox supports custom per-domain CSS. Is this new? I thought I had tried a while ago and it only worked globally. 🤔
@-moz-document domain(movq.de)
{
div { border: 1px solid red; }
}
Either way, I love that I don’t need a plugin for that. 🥳
Goodbye Blender, I guess? 🤔
A bit annoying, but not much of a problem. The only thing I did with Blender was make some very simple 3D-printable objects.
I’ll have a look at the alternatives out there. Worst case is I go back to Art of Illusion, which I used heavily ~15 years ago.
I learned numbers today.
$ printf '\xC2\xB9, \xC2\xBC, \xD9\xA4, \xE1\xAA\x96, \xE3\x8D\xA4, \xDB\xB0, \xE2\x9D\xBB, \xE2\x91\xB9, 1' | grep -o '[0-9]'
¹
¼
٤
᪖
㍤
۰
❻
⑹
1
Sad that it doesn’t match on ⅵ
.
Confused by:
$ printf '\xE2\x9D\xBB, \xE2\x91\xB9, 1' | grep -o '[1-6]'
1
$ printf '\xE2\x9D\xBB, \xE2\x91\xB9, 1' | grep -o '[1-7]'
❻
⑹
1
So ❻
and ⑹
are a 7?
Still haven’t dug up why it needs the extra ASCII 1
for anything to match. Maybe tomorrow.
Found this … fancy … souvenir we brought back from our trip to Florida in the 1990ies. 😅 https://movq.de/v/167e8d04ef/a.ff.jpg
First Advent of Code visualization this year:
https://movq.de/v/e14086cc1c/MVI_8057.MOV.mp4
It’s for day 8. Don’t look if you don’t want to get spoiled. If you don’t know the puzzle, you’ll hardly understand what this is doing – but it’s fancy and colorful and fun to look at, right? 😅
This is Java 1 (AWT) running on a Pentium 133 on OS/2 Warp 4.
So, AI cheaters have ruined the global Advent of Code leaderboard:
https://old.reddit.com/r/adventofcode/comments/1h9cub8/discussion_on_llm_cheaters/
And they don’t even try to hide it anymore.
At this point, any kind of speed contest or ranking has become meaningless. Seeing this kind of behavior is sad and probably unavoidable, because there will always be a few who spoil things for everyone.
The only way going forward, I can think of, is to remove the global ranking and just have private leaderboards. Basically what these two people have said:
Cheaters won’t get public attention anymore. AoC won’t be “officially” ruined by cheaters anymore. If you want to do a speed contest, you can still do that in private leaderboards.
(Honestly, I’d prefer it if AoC didn’t have any kind of ranking anyway. I’m not really fast enough to compete, but it’s always at the back of my head. And last year I made rank 116 once, so it’s not completely impossible. All this creates a lot of pressure that I have to fight and try to ignore. 🤣)
Someone explain to me real quick what the appeal of Bluesky is, especially when compared to Mastodon.
I’m on vacation now. First order of business: Sit in the armchair for “a few minutes” (= sleep tight for 3 hours straight). 😴
I admit that I only follow the groff mailing list to get the occasional email from Doug McIlroy in my mailbox: https://lists.gnu.org/archive/html/groff/2024-12/msg00025.html
I’ve been using Mastodon too much lately. The constant notifications are becoming too stressful. I really do prefer slow communication, like twtxt. ✌️
So, who’s doing Advent of Code? Had some fun this morning:
And how should we handle spoilers here on twtxt? base64? 😅
Someone posted something on Mastodon with a future timestamp and now it’s permanently “trending” on various front pages of various instances:
Ready for takeoff. Just one more week to go. 🎅 #AdventOfCode
I’m going to have a pizza and there’s nothing you can do about it. 🍕
It’s been so rainy and windy and cold these last few days, I hardly left the house. 😩
I didn’t realize that the queens of our very common black ants are huge: https://www.youtube.com/watch?v=UjbAsdiE7ZI
twtxt.net lost its dark mode? It’s glaringly bright now. 😎
Since we’re liking masked musicians here on twtxt, let me share this gem with you:
https://www.youtube.com/watch?v=E4X56wIOZns
Glass Beams - Full Performance (Live on KEXP)
Had a test drive on a foldable e-bike today and now I’m extremely tempted to get one of those things. 😅
Maybe it’s time to think about taking the website and all software offline.
This will open the gates of hell, allowing lawyers to harass free software developers. Not because of the actual content of those proposed laws, because there is supposed to be an exemption for free software – but because there is a great tradition here in germany, where lawyers just make false claims and try to extort money from you. Can you safely ignore them? Should you seek legal council immediately? You never know. It’s best to avoid becoming a target in the first place.
Besides, the current wording is just an EU thing. It will have to be transformed into german law (and french law and spanish law …), which means our legislative bodies can screw up things big time. It’s quite possible that they won’t include that exemption or include it in a very vague and ambiguous way.
I’m really angry right now and hopefully I’ll think differently tomorrow.
Numbers are hard. I just almost accidentally sent 33k€ to someone via bank transfer, because the banking website interpreted 334.90
as 33490,00
. 😬 This is germany, so it wants a comma, not a dot …
I love Al and his bass: https://www.youtube.com/watch?v=IwnDKcoVHmY
The german government fell apart yesterday and now we’re probably going to have new elections within the next 4-5 months.
It’s too early to tell, but it’s not looking good. We don’t have an orange clown (yet), but the country is deeply divided. Right and far-right parties are on the rise.
😐
Tried to get a Covid booster, lady at the phone told me: “Nah, fuck off, you’re too young.” 🥴
Funny wobbly moon sets:
https://movq.de/v/4bba078992/moon1.ff.jpg
I also tried to do a little stacked thingy, not too happy with it:
So, I’m forced to use WhatsApp now. Someone told me: “Hey, I’ve been doing $thing
, check my status!” Okay, fine, I open that and it shows a photo.
Then, while looking at that photo, it’s suddenly gone. No, not gone – there are several photos and it switched automatically to the next one. The timeout appears to be four seconds.
JFC, I’m getting too old for this. Let me look at the damn photo! Don’t rush me! 😂
I’m seeing strange lights in the sky. None of my cameras are sensitive enough to make a video.
It’s probably one of two things:
Either way, looks fancy.
That was a nice 12km walk today. Got home just in time before all the Halloweenies got out. 😅
There might be a bug in jenny that causes it to re-fetch archived feeds on every run. Probably happens on edits/deletes. I’ll look into it soon-ish.
Time to put up the christmas decoration, I guess. 🤷✨
My first PC as a kid had an amber monitor, so this feels right at home:
https://www.youtube.com/watch?v=PeuH0YmWkI4
💛
When you try to change a file that’s currently running, it used to say text file busy
. Example:
First terminal:
$ cc -Wall -Wextra -o test test.c
$ cp test run
$ ./run
Second terminal:
$ cp test run
cp: cannot create regular file 'run': Text file busy
But on my machines today, it crashes the running program. 🤨 As soon as I run the cp
, I get a coredump:
$ ./run
... time passes, I do "cp test run" in a second terminal ...
Bus error (core dumped)
How odd. Another mystery to solve …
This is so funny – and very true. 😃 The ancient German art of complaining: https://youtu.be/FcFmVfAg8V0?t=720
Speaking of typing, do you know this game? https://zty.pe/
TIL: The word “eldritch”, as in “eldritch horror”, does not refer to some small village in England. 🥴 https://www.etymonline.com/word/eldritch
There’s this rumor that you can create a WhatsApp account with a burner phone, then link the phone to a browser on your desktop PC (web.whatsapp.com) and never have to use the phone again. This just doesn’t work. Every ~2 weeks, the session in the browser will time out and you have to re-link again. 🙄
I hope you guys in the US get safely through the next storm. 😳
That is a fun little rabbit hole: https://rodarmor.com/blog/whence-newline/
Going through some old CDs.
Jam & Spoon - Angel (DJ Misjah Remix)
I’ve always liked this track, but ~30 years ago I didn’t have good headphones. Now I do and only now do I realize how “dense” the atmosphere of this track is. 😳 Guess my speakers back then simply didn’t render most of the bass … 🤦
What’s going on with the timestamps on HackerNews articles? 🤔 A lot of them are off: https://movq.de/v/1341904fa5/s.png
There’s a lot more activity in Geminispace than I realized: gemini://warmedal.se/~antenna/
I have no intention of dropping support for Gopher or Gemini from jenny.
Someone recommended a nice (German) talk:
https://media.ccc.de/v/ds24-394-linux-hello-world-nur-mit-einem-hex-editor
Luckily, everything™ is easier™ on DOS with .COM
files. A fun little time killer to make a HELLO.COM
using only a hex editor, the Intel docs and the DOS interrupt list.
That ModR/M stuff is easy in the end, but it took me quite some time to understand it. 🥴
(I’m still new to DOS on this level and didn’t know that all segment registers are initialized to the same values, apparently, so copying CS to DS was not necessary. Too lazy to update the screenshot. File size shrinks by 4 bytes.)
There are so many insects this year. Flies, ants, bugs. This isn’t normal. It’s almost like the ecosystem is getting out of balance.
Alright, before I go and watch Formula 1 😅, I made two PRs regarding the two “competing” ideas:
(replyto:…)
(edit:…)
and (delete:…)
As a first step, this summarizes my current understanding. Please comment! 😊
Held another “talk” about Git today at work. It was covering some “basics” about what’s going on in the .git
directory. Last time I did that was over 11 years ago. 😅 (I often give introductions about Git, but they’re about day to day usage and very high-level.)
I’ve gotta say, Git is one of the very few pieces of software that I love using and teaching. The files on your disk follow a simple enough format/pattern and you can actually teach people how it all works and, for example, why things like rebasing produce a particular result. 👌
I’m bad with faces, I know that. But I’m having a really hard time recognizing Linus in this video:
https://www.youtube.com/watch?v=4WCTGycBceg
Basically a different person to me. Is it just me or has he really changed that much? 😳
Trying to sum up the current proposal (keeping hashes):
(edit:<a href="?search=3f36byq" class="tag">#3f36byq</a>)
tells clients to update the twt <a href="?search=3f36byq" class="tag">#3f36byq</a>
with the content of this particular twt.(delete:<a href="?search=3f36byq" class="tag">#3f36byq</a>)
advises clients to delete <a href="?search=3f36byq" class="tag">#3f36byq</a>
from their storage.Right?
Regarding jenny development: There have been enough changes in the last few weeks, imo. I want to let things settle for a while (potential bugfixes aside) and then I’m going to cut a new release.
And I guess the release after that is going to include all the threading/hashing stuff – if we can decide on one of the proposals. 😂
When will I learn to not look at my work’s smartphone in my free time? 😂 Opened the corporate chat, instant regret.
A nice afternoon. Mild weather (~23°C), sitting on the balcony, working a bit on jenny, and spamming twt’s. 😅
The bug in jenny that @aelaraji found:
Jenny has to look for the metadata fields, it must find the # prev = ...
line. To do so, I naively wrote something along these lines:
for line in content.splitlines():
if line.startswith('# prev = '):
...
Problem is, we use \u2028 a lot in twtxt feeds and Python interprets those as line separators as well. That’s not what we want here. Jenny must only split at a \n
.
Now @prologic had a quote/copy of some of his metadata fields in a twt. Like so:
# prev = foo bar
Perfectly legitimate, but now jenny found the # prev =
twice (once in the actual header, once in a twt), didn’t know what to do, and thus did not fetch the archived feeds. 🤦
Should be fixed in this commit: https://www.uninformativ.de/git/jenny/commit/6e8ce5afdabd5eac22eae4275407b3bd2a167daf.html
Alright, I saw enough broken threads lately to be motivated enough to extend the --fetch-context
thingy: It can now ask Yarn pods for twt hashes.
https://www.uninformativ.de/git/jenny/commit/eefd3fa09083e2206ed0d71887d2ef2884684a71.html
This is only done as a last resort if there’s no other way to find the missing twt. Like, when there’s a twt that begins with just a hash and no user mention, there’s no way for jenny to know on which feed that twt can be found, so it’ll ask some Yarn pod in that case.
It’s been a little over 14 years since Isis broke up and I have yet to find a band as good as them. Not a single song that disappoints (at least since the Oceanic album). Glad I could see them live a couple of times. // Isis - Grey Divide // https://www.youtube.com/watch?v=eI2-8I3j4Vg #NowPlaying
Interesting read about the Windows 95 bluescreen by Raymond Chen:
https://devblogs.microsoft.com/oldnewthing/20240903-00/?p=110205
All this Virtual Machine Manager stuff went completely over my head back then … 🤯
There was a time when WebKit (I think it was WebKit) stored metadata of downloads in extended attributes. Like the URL you were downloading it from.
https://movq.de/v/f79b94485a/s.png
This was really useful. 🤔 Chromium also did it for a while and then they removed it due to privacy concerns. Now none of the popular browsers do it anymore. 🫤
This would have been a lovely morning, wind softly rustling in the trees. If it wasn’t for the constant droning of the air planes. 🫤
I also saw a string of starlink satellites passing by. What a strange sight that was.
In the process of tweaking my little static HTML index/thumbnail creator so that it a) properly supports dark/ligh mode and, more importantly, b) gracefully degrades on ancient browsers.
Why? Because I often exchange data via HTTP with old systems and my tooling automatically invokes that indexer/thumbnailer script. 🥴 It’s really annoying when I just see garbage in Netscape 2 or IE5.
Screenshots and videos: https://movq.de/v/348819c482
Found this in an old copyright notice from 1993:
These images are not for use with the Microsoft Windows environment. Using these patterns in a Windows environment consitutes a copyright violation.
Someone clearly didn’t like Windows.
The next jenny release will (probably) stop supporting the old “Hash Tag Extension”, which was deprecated at the end of 2022. It was once used for threading and looked like this:
#<tsvhqdq https://twtxt.net/search?tag=tsvhqdq>
I don’t see them being used in the wild anymore. But if you happen to fetch really old feeds (or some archived feeds), things might break a little.
There was a garbage bag incident last night and I had to clean up the kitchen for two hours. 😂 Now I’m sore as fuck. Good thing I have a day off today, huh? 🤪
There was an outage of the Mastodon server I use this morning. A good reminder that this is a service that someone else hosts (and I don’t even pay for it). Could be gone tomorrow.
Now that I’ve got a server to spare (the Matrix one is gone), I might look into hosting a snac instance. 🤔
RIP, Matrix server. 🪦
$ doas rcctl stop synapse
synapse(ok)
You might have seen me popping up on IRC. This is how it looks:
That’s EZirc from the 1990ies. (It says it needs Warp 4, but runs fine on Warp 3.)
Lots of this old stuff still works (technically), but as @lyse said: A lot of it really is dead. There’s not much going on anymore in Usenet.
The soundtrack of World of Goo 2 is amazing. It’s quite epic and melancholic at times.
https://www.youtube.com/watch?v=sAUwyCOaGoc
It doesn’t fit the “cuteness” of the game at all – but there are a lot of contradictions in that game anyway, it’s an important aspect.
Speaking of web server logs: Unless someone posts one of my blog posts on HackerNews (I never do that myself, don’t even have an account), my twtxt.txt
file is always the most requested resource. 😂 It easily gets several thousand hits, way more than the blog’s Atom feed. 😂
@prologic I didn’t want to hijack @bender’s thread: There’s two things that feel a bit unexpected regarding the requests of 159.196.9.199 in my logs:
This morning’s task: Making the thumbnails in my blog compatible with IBM WebExplorer 1.0 on OS/2 Warp 3. 🤪
Before:
https://movq.de/v/b7443c8873/a.jpg
After:
https://movq.de/v/b7443c8873/b.jpg
And the fix was using -define jpeg:sampling-factor=2x1
when creating the thumbnails using ImageMagick.
I’m not really sure, though, what’s going on. 🤔
More context: https://tilde.zone/@movq/112981572946464025
Just realized that phone came with a bunch of “hidden” Meta/Facebook services pre-installed and they cannot be uninstalled, so I guess me trying to “fight” WhatsApp is pointless anyway. 🤪
… and then people call me a “luddite”. 🤣🖕
They promised rain. I ain’t seeing any rain so far. 🫤
I love shell scripts because they’re so pragmatic and often allow me to get jobs done really quickly.
But sadly they’re full of pitfalls. Pitfalls everywhere you look.
Today, a coworker – who’s highly skilled, not a newbie by any means – ran into this:
$ bash -c 'set -u; foo=bar; if [[ "$foo" -eq "bar" ]]; then echo it matches; fi'
bash: line 1: bar: unbound variable
Why’s that happening? I know the answer. Do you? 😂
Stuff like that made me stop using shell scripts at work, unless they’re just 4 or 5 lines of absolutely trivial code. It’s now Python instead, even though the code is often much longer and clunkier, but at least people will understand it more easily and not trip over it when they make a tiny change.
QOTD: What’s your favorite technological advancement in the last ~10 years? 🤔
Got a bit bored for a second and “googled” my own domain. DuckDuckGo’s results are almost completely spammed by results from twtxt.net: https://duckduckgo.com/?q=%22uninformativ.de%22 🥴😅
In case you missed it: World of Goo 2 is out. https://worldofgoo2.com/
I actually didn’t have the first part yet (only played the demo in ~2008), so I get them both. Brilliant games! 😍
The Android system upgrade tool on my phone (Android 13 → 14) is so clever, it can only update via WLAN – not LAN. Booo!
But hey, at least there is a system upgrade tool.
Saw an “owl” in the woods today: https://movq.de/v/a7c2130c18/IMG_20240803_094845.jpg.jpg
What the heck is going on here today, so many messages. 😂
Wayland wants to make every frame perfect. I wish web devs had the same goal. Instead, we’re stuck with this:
https://movq.de/v/112a927861/hiccupfx/
😂😭
I’m putting all efforts to switch to Wayland on hold for another 2 years, minimum.
As we all know, writing a Wayland compositor from scratch is next to impossible. Luckily, there’s the wlroots project which aims to build a base library for this task. Basically every compositor except for GNOME and KDE uses it. (This is good! The less fragmentation, the better.)
wlroots is still very volatile, lots of changes with every release. Downstream users (i.e., the projects that write the actual compositor) have to constantly “chase” changes in wlroots. dwl, my favorite compositor at the moment, has recently switched their main
branch to target the wlroots git version instead of the latest release. My understanding is that they have to do this in order to keep up with wlroots (maybe I’m wrong).
Everything is volatile and a moving target.
Why does any of this matter for me? Because I have to eventually fork dwl or at least keep a patch set, and I don’t have the stamina to constantly fiddle with this stuff. I’m running my own X11 window manager, it’s highly specialized, and using just “some Wayland compositor out there” is a huge step backward that I’m not willing to take. I tried, it’s just painful and annoying with zero benefits.
So … it was fun experimenting with Wayland a bit, but I’m now back to waiting for things to settle down considerably.
Today is one of those days where I’m really grumpy and have typed out lots and lots of rants. Luckily, I all deleted them in the end instead of sending them. 😂
Regarding complexity budget, slow software, all that:
Very few people do take pride in building simple, elegant, high-quality systems, do they? Why is that? Why are huge shiny things with tons of features more attractive? 🤔
I never explicitly thought about this, to be honest. It was only at the back of my head. And I never tried to teach our younger “students” at work: “Hey, it’s a great achievement to build something simple and elegant. That’s something to be proud of!”
Worse, simple software is often described as “boring”. Yes, in a way, it is boring, because your brain doesn’t have to get into overdrive to understand it. But that’s exactly the point. And it’s hard to achieve that! Simple software isn’t just “fewer lines of code”, you have to be pretty clever to solve a problem in a simple and elegant way. So it’s something to be proud of.
Could this be an intuitive, emotional way to get more people on board the “simple software”-train? 🤔
The “Matrix Experiment”, i.e. running a Matrix server for our family, has failed completely and miserably. People don’t accept it. They attribute unrelated things to it, like “I can’t send messages to you, I don’t reach you! It doesn’t work!” Yes, you do, I get those messages, I just don’t reply quickly enough because I’m at work or simply doing something else.
I’ll probably shut it down.
Nobody cares about privacy. The reasons I bring up in discussions are “too nerdy”. They put all their stuff to Google or Apple, so why would messaging be any different? (We’re not even using all those Matrix crypto stuff … That would be insane.)
It’s a lost cause. I’m frustrated.
Will I give in and use WhatsApp instead? Not sure yet.
We desperately need to start a Slow Software movement. High quality, intentionally designed, low defect software done at a quarter of the pace for the same price. Because we've been destroying the mental health of developers for the last quarter century, and what do we have to show for it but a giant mess?
This sums up the Matrix experience: https://cathode.church/@apothecary/112742706806370926
I don’t run a bug tracker, instead all my projects link to this page:
https://uninformativ.de/bugs.html
It basically says, when you find a bug, please send me an email.
Now I’ve read this:
https://utcc.utoronto.ca/~cks/space/blog/programming/EmailVsForgesUnfortunate
I hadn’t thought about this before. That’s a quite valid reason. 🫤 Sadly, it applies to any truly independent self-hosted service. That OAuth thingy (“Sign in with GitHub”) might be the only compromise …
(I rarely get any feedback on my projects, btw. jenny might be an exception, because we’re talking about it here sometimes. Overall, the number of bug reports has dropped significantly since I moved away from GitHub.)
Trying to learn this on double bass now:
https://www.youtube.com/watch?v=KCcf7GeBq-M
Too bad my electric double bass will never sound as majestic as an acoustic one.
Speaking of programming languages, I’m so glad that I’ve spent so much time doing C and a little bit of Assembler over the years. It’s the perfect foundation for my recently acquired retrocomputing hobby. 😅 You can target basically any platform with C – DOS, OS/2, Windows NT, UNIX, … Had I gone all-in on Java (as University and employers nudged me to in the mid-2000’s), I probably wouldn’t have this skill set now. 🤔
Always makes me giggle a bit like an idiot when I see OS/2’s equivalent of the “trash” or “recycle bin”. The English original calls it “shredder” (which is appropriate – it deletes files, there is no delay like in Windows 95’s “recycle bin”) …
… but the German word for it is “Reißwolf”. That used to be a more or less common term, but nowadays it’s quite archaic. And it sounds needlessly violent. 😂🐺
One of the important lessons:
I like to put as little strain as possible on the floppy disks that I have, especially when installing operating systems. I thus like to prepare disk images on my modern Linux box in QEMU (where I can use floppy images instead of actual disks) and then transfer them over to my real retro box.
Older operating systems like OS/2 make extensive use of CHS addressing and even store some of this information in the HPFS filesystem header. CHS info spreads all over the place. So, simply creating a QEMU disk image, installing something and then copying to another drive probably won't work, because QEMU guesses some CHS geometry that won’t necessarily match that of the target drive.
The solution is to a) create a QEMU disk image of the exact same size (in bytes) as the intended target drive, b) configure a matching CHS geometry in QEMU. The latter can be done like so:
-drive file=warp3.raw,if=none,id=disk1,format=raw
-device ide-hd,drive=disk1,cyls=495,heads=16,secs=32,bios-chs-trans=none
How do you know the correct CHS geometry? Ask the BIOS of the target machine.
And then be very thankful that we don’t have to deal with this anymore today. 😂
There’s something special about writing your own programs for OS/2 in C and finally getting it to work after sifting through lots of ancient docs. ✨
I’d be totally lost without KO Myung-Hun's website and Open Watcom v2. 🙏
(I’m making a little tool to dump floppy disks to image files. I know these programs already exist – I’m doing it for fun and to learn. The task itself is not complicated, but finding the correct docs is.)
I needed to create a ZIP file under OS/2 2.1 and what’s the easiest™ way to do that?
Use WinZip under WIN-OS/2. 🤦
I know there are native ZIP programs for OS/2, but WinZip is what I was having readily available, and that basically sums up much of OS/2’s history. 🥴
Thinking about what to do for the next Advent of Code. 🤔
Writing the solutions as DOS programs in C was super fun last year and I don’t think I can top that. 💾
Something in the realm of retrocomputing would be nice. I wonder how far I can get using QuickBASIC 4.5. Haven’t touched this in ages – but I have a feeling that this could be rather painful. 😂
Or maybe I’ll just go for Rust again, because I’m not using that a lot and keeping up with it could be useful. Or maybe a mix of both, “as many puzzles as possible with QB 4.5, Rust for the rest”. 🤔
Sometimes I come across a file that still uses tabs for indentation and then I find out that I haven’t touched that thing for over a decade. Boom, time flies. 😳
Well, today was a productive day.
How have I missed Linux’s landlock? 🤔 Maybe we’ll get something like OpenBSD’s pledge/unveil some day. For now, landlock appears to be more complicated, but we’ll see how it goes. Gotta play with this some time. 🤔
What a night. The first storm cluster passed us in about 25km distance.
The second one hit us right in the face. The sky was constantly flashing and there was a continuous rumble, not individual thunder. (You can’t really hear it in the video, I was too close to the window …)
https://movq.de/v/e949ae6403/MVI_7687.MOV.mp4
Most of the lightning was inside the clouds, apparently.
https://movq.de/v/e949ae6403/IMG_7648.JPG
No water damage this time, luckily.
That heat is driving me crazy. Do I have a fever? Is everything ok? Feels like my head is on fire. 🥵
So I’ve been wondering why some copy-and-paste actions “don’t work” on Wayland. Turns out, in Wayland there’s only one clipboard (like in probably most other OSes): The one where you select something and then hit ^C
to copy it (it’s called the CLIPBOARD
selection). They have intentionally not included the PRIMARY
selection of X11 where you can just select some text to copy it and use the middle-mouse button to paste it.
Almost 10 years ago, they started an initiative to bring back PRIMARY
:
https://wiki.gnome.org/Initiatives/Wayland/PrimarySelection
That protocol is still “unstable” and thus not every Wayland client supports it:
https://wayland.app/protocols/primary-selection-unstable-v1
I honestly didn’t really look into this before and I didn’t know that it’s still unstable/unsupported, hence my confusion. (To be fair, I don’t know for certain if that particular protocol is already 10 years old. It looks like it because the copyright notice at the bottom says so, but no idea if that’s a reliable source.)
This is one of those things that are very subjective. The Wayland guys apparently thought that it was a “usability problem” to have two clipboards, so they removed one of them. Actually, the mechanism of X11 is totally generic, there are an “infinite” number of clipboards and we have just settled on using only two.
This is an interesting topic because Wayland is so old now that it looks like it has missed the developments of the last ~10 years or more: Way back in the past, I was indeed very confused about the different X11 clipboards because some clients used CLIPBOARD
(hit ^C
) and others only used PRIMARY
(middle-mouse) – but this has long settled down. Most clients now have something like ^C
to explicitly copy data into CLIPBOARD
and ^V
to paste it. It’s the standard thing now. And then on top of that power-users can additionally use PRIMARY
where you just select text. This is a good and powerful thing, if you ask me.
I use both clipboards all the time. My mental model knows where the data goes. PRIMARY
is like a short-term clipboard and CLIPBOARD
is long-term. I think this is much better than just having one clipboard and I kind of feel like making good use of this is what keeps me from having to install a clipboard manager.
A little improv on double bass with a live echo effect, turned out better than expected:
https://movq.de/v/0a0969059a/2024-06-25--19-59-29--58376.ogg
Still a noob, but I can see some progress and I enjoy playing very much. 😊
(Use headphones, probably sounds like crap otherwise.)
I noticed these two benches:
https://movq.de/v/19f5512396/IMG_20240623_104210.jpg
The dark area below them? It’s not a shadow, it’s dirt. O_o
Not gonna lie, hacking on dwl is fun. Not sure if it’s worth it (is Wayland really going to win?), but it’s fun. 😅
In (old, pre-compositor) X11, windows were rectangles on screen. Every normal X11 client could query all windows and their positions. Tools like slop were easy to implement: You can use it to interactively select one of the windows on the screen, e.g. to make a screenshot of that window. slop just queries the window under the mouse pointer, it can then highlight it and read its position. Done. (slop includes more bloat/eyecandy, but that’s beside the point.)
Afaik, that’s not possible on Wayland. slurp exists but there is no standard way (yet?) for it to query the window tree. It’s different for each Wayland compositor. slurp’s README includes an example for Sway; for dwl you need this patch; and selecting individual windows probably does not work at all on labwc (because those guys try to stick only to established protocols/standards – an admirable goal).
This is just a small example. I think things like these slow down Wayland progress/adoption a lot. You could get a lot more done on X11 because the rules weren’t so strict. On Wayland, everything has to become an official protocol (that each compositor then has to implement individually) or it’s going to be an incompatible, unofficial, compositor-specific solution.
Both approaches have pros and cons. Wayland is much more idealistic than the “wild west” of X11. The price is that it takes a hell of a lot more time and energy to push things forward on Wayland.
Even if it might sound a bit overdramatic: Having a “mostly working” dwl Wayland setup now is a huge relief. 😅 It’s quite the weight off my shoulders.
There are still lots of items on my TODO list, but if X.Org were to die tomorrow, I wouldn’t be completely screwed. Only, like, 30% screwed.
There’s hope regarding Wayland.
I’ve tried dwl a few years back, but my keyboard didn’t work. This appears to have been fixed, probably due to advances in wlroots and this commit.
And look at it: It’s just about 3000 lines of C code. That is hackable. That is something that I can fix, extend, or adapt if needed. That is the way to go.
Thank goodness, finally some good news.
There’s the european soccer cup currently going on. I sometimes watch some of those matches. As do my neighbors.
When there’s a goal, though, it takes them a whole minute to begin cheering. That is some excessive buffering. 😂
Got a new pack of rosin for my double bass. There was a large bubble of air trapped inside. 🥴 It slowly made its way up over the course of a couple of days and now it finally burst. 😅
The little story behind the “pipes” screensaver: https://devblogs.microsoft.com/oldnewthing/20240611-00/?p=109881
(Hurts a little that he felt the need to clarify that “this was in the days before widespread Internet access”. 😅🧓)
Speaking of “AI” … I guess I gotta find out soon how to disable/sabotage Microsoft’s “Recall”, before this garbage takes over the family computers. 😩
(There’s no way the people in question will switch operating systems. I’ve tried, countless times.)
Wundervolles Hörspiel aus dem Jahre 2008:
Genau so isses heute immer noch. 😂😭
Wasted another hour trying to get Windows XP to work again (while avoiding totally shady stuff). Not much success.
Windows XP has scarred me for life. 😂 I bought this thing, cost me 140 bucks, but I can’t use it anymore because Microsoft says so. Screw that.
I won’t buy commercial software anymore and haven’t done so in a long time. You want an online activation or, better yet, some sort of subscription? Screw that.
Up until the end of the 1990ies and very early 2000s, it was okay to buy commercial software. Things like StarOffice 3.1 still work just fine today, because you can just install it, done.
Free/libre software is the way to go.
Good old (bitmap) Helvetica works as a GUI font again:
https://movq.de/v/2456cfb05a/helvetica.png
This broke a year ago and I gave up on it. Now it’s back. Crisp fonts, just like in the terminal. 💚
This is much easier for me to read. Maybe it’s because of my myopia. Everything is a little bit fuzzy anyway and font antialiasing on top is really exhausting for me.
I’ve been using DuckDuckGo for years now, worked fine. Today it’s down – and now I’m learning that it runs on Bing? 😳
https://www.searchenginemap.com/
Why do I keep getting hits by a DuckDuckBot then?
www.uninformativ.de 20.191.45.212 - - [23/May/2024:03:00:48 +0200] "GET / HTTP/1.1" 200 659 "http://www.uninformativ.de/" "DuckDuckBot/1.1; (+http://duckduckgo.com/duckduckbot.html)"
iTerm2 now has ChatGPT integration 🚮 https://iterm2.com/news.html
OS/2 2.0 wasn’t much of a success, huh? So, sure, go ahead and repurpose those disks. 😂
https://movq.de/v/5ad2630508/IMG_20240519_072303.jpg-small.jpg
Anyone got a link to a robots.txt that “blocks” all the “AI” stuff?
Thinking about disabling the two extra buttons for “forward” and “backward” on my mouse, because today’s websites don’t support this anymore, and it’d safe me the constant moments of “oh for fuck’s sake”. 🙄
I was able to take a photo of the large sunspots that made the news these days:
https://www.uninformativ.de/pics/photo/astro/2024-05-11--IMG_7512-sun-AR3664.jpg
It’s not a super high quality shot, my scope isn’t good enough for that. Still cool to see. 😎
Another thing that doesn’t work anymore after blocking network traffic from my Android phone: Some push notifications.
I run a Matrix server for our family. I use “FluffyChat” on my phone. Traffic from the phone to my Matrix server is allowed and chatting in FluffyChat works.
But I don’t get any notifications anymore on new messages.
So, what’s going on here? Does FluffyChat, which only really needs to talk to my own server, rely on some cloud service for notifications? Seriously? 🤔 How does that work, does this cloud service see all my notifications or what?
Anyone around who did app development on Android? Can you shed some light on this?
One thing I’ve learned from locking down my Android phone (see #pknsrda):
The data for assisted GPS does not come from Google or, better yet, A PUBLIC SERVICE, but from a server hosted by the hardware manufacturer. Without regularly fetching fresh A-GPS data, the GPS performance is much worse (https://en.wikipedia.org/wiki/Assisted_GNSS).
This means that the hardware manufacturer has (more or less) direct control over whether I’m able to use GPS or not. This isn’t an Android setting, it’s buried deep within the device, no way to change the URL. If that manufacturer decides one day to cut me off, for whatever reason, or goes bankrupt or whatever, then I’ll have to buy a new phone.
And of course, this data transfer is encrypted as well, so I don’t know what my phone sends to those servers.
All this smartphone business is such a clusterfuck. I should have never bought one of those things.
I have a day off, national holiday.
What happened so far:
I take this as a sign to not do any computer stuff today. 🤣
Experiment: Locking down my Android phone in the firewall, only allowing outgoing connections that I approve of. Let’s see how that goes.
Even just looking at the log of attempted connections is scary. This thing is talking to everything all the time. Worse, there are some system apps that regularly query the device’s GPS location and you can’t turn that off … Shitty spy device. 🙄
QOTD: How large is your shell history? No history, 500 lines, 10'000, 100'000, something else?
One great feature of Vim (and probably other editors) is “keyword completion”: Type the beginning of a word, then press Ctrl-N and Vim will give autocompletion options by scanning all the words in the current file. For example, when I now type “au” and then Ctrl-N, it will suggest “autocompletion”.
This is so very useful when writing text / prose. It’s especially useful for German text with all those long words like “Informationssicherheitsbeauftrager”. I use this feature all time and I sorely miss it when I’m forced to use some other crappy editor. 😩
YouTube introduces a “stable volume” feature:
https://movq.de/v/ad0dd48aac/a.jpg
Once filmmakers realize that people just want stable volume instead of SUPER LOUD SECTIONS (…andreallyquietones…), then maybe I can finally remove the limiter from my pipewire filter chain. 🥴
In case you need a profile picture: https://thispersondoesnotexist.com/
Is this “flat UI” madness ever going to end? I’m beginning to lose hope.
Since I finally configured X11 in this VM for shenanigans …
The original tuXeyes running in a SuSE Linux 6.4 VM and my clone from 2017 (which does not depend on a now ancient version of Qt):
If you’re using jenny on Python 3.12, it will spit out a deprecation warning regarding datetime.utcnow()
. This will be fixed in the next release.
I think I’ll be doing this again:
https://dataswamp.org/~solene/2022-07-01-oldcomputerchallenge-v2-rtc.html
The source code of “DOS 4” was released:
https://github.com/microsoft/MS-DOS/tree/main/v4.0
Not without issues:
https://www.os2museum.com/wp/how-not-to-release-historic-source-code/
(Hence “DOS 4” in quotes, is it 4.00 or 4.01? Probably the latter.)
More DOS 4 history:
One of the Xfce devs tries to estimate how many people use his software and is a bit surprised:
https://alexxcons.github.io/blogpost_9.html
😅
I have months of intense security compliance theater ahead of me and wish for a quick and painless death.
Ich frag’ mich schon oft, wie das für die englischen Muttersprachler sein muss, all diese sogenannten Markennamen zu benutzen. „Ich benutze Fenster 11! Das hier ist eine KraftPunkt-Präsentation. Den Kode für dieses Skript habe ich vom Deppendrehkreuz.“ All sowas. 🤔
Me feed just rolled over. Let’s see if something breaks. 😂