I’ve got a prototype of my hardcopy simulator going. I’m typing on the keyboard and the “display” goes to the printer:
https://movq.de/v/56feb53912/s.png
https://movq.de/v/235c1eabac/MVI_8810.MOV.mp4
The biiiiiiiiiig problem is that the print head and plastic cover make it impossible to see what’s currently being printed, because this is not a typewriter. This means: In order to see what I just entered, I have to feed the paper back and forth and back and forth … it’s not ideal.
I got that idea of moving back/forth from Drew DeVault, who – as it turned out – did something similar a few years back. (I tried hard to read as little as possible of his blog post, because figuring things out myself is more fun. But that could mean I missed a great idea here or there.)
But hey, at least this is running on my Pentium 133 on SuSE Linux 6.4, printer connected with a parallel cable. 😍
(Also, yes, you can see the printouts of earlier tests and, yes, I used ed(1)
wrong at one point. 🤪 And ls
insisted on using colors …)
Dear @doctormo@doctormo, I’m a great admirer of your work in general and hopefully I won’t creep you out by telling everyone I’m your fan!
As a creator of digital vector-based art I find the color management stuff (trying to figure how to generate things to print “in CMYK”) mind boggling. I slowly try to read and acquire the concepts and vocabulary to understand more about this. I’m grateful for your work in this area. Thank you!
@prologic@twtxt.net Yes, this is another instance of restricting “personal” computing. You won’t be able to install arbitrary software anymore (“sideloading”, as they call it).
It’s not unique, it’s not new. Boiling the frog alive.
We’re heading towards this: https://www.gnu.org/philosophy/right-to-read.html
James Gleick: “The lie of AI”
https://around.com/the-lie-of-ai/
Long read, it starts with Claude Shannon and Markov chains…
@movq@www.uninformativ.de Yeah I just got a bit curious after watching your video and reading your OP 😅
[47°09′34″S, 126°43′49″W] Raw reading: 0x68964931, offset +/-4
[47°09′28″S, 126°43′31″W] Raw reading: 0x689335B1, offset +/-1
[47°09′37″S, 126°43′28″W] Raw reading: 0x6891E431, offset +/-3
[47°09′51″S, 126°43′42″W] Raw reading: 0x688F08F2, offset +/-5
[47°09′31″S, 126°43′37″W] Reading: 0.77 Sv
Hahaha, I first thought of https://www.youtube.com/watch?v=zA52uNzx7Y4 when I read @kat@yarn.girlonthemoon.xyz’s “lyrics”. ;-)
Doesn’t sound bad, I like it. The synth reminded me of some song by Beast in Black.
mandoc is nicer to read/write than the man
macro package and, most importantly, it’s semantic markup.
HTML output is a bit broken in GNU groff, though (OpenBSD on the left, GNU on the right):
https://movq.de/v/f1898e648f/s.png
🤔
Still, I’m inclined to convert my manpages to mandoc.
@kingdomcome@yarn.girlonthemoon.xyz Yeah, it’s all about simplicity. That’s what got me hooked. In its original form without the extensions, you can even read the raw feed and it doesn’t feel all that bad.
[47°09′35″S, 126°43′14″W] Reading: 1.02000 PPM
[47°09′57″S, 126°43′45″W] Reading: 0.87000 PPM
Heck yeah, that’s damn cool: Reading QR codes without a computer! https://qr.blinry.org/
[47°09′56″S, 126°43′19″W] Reading: 0.36000 PPM
[47°09′32″S, 126°43′25″W] Reading: 0.07 Sv
@movq@www.uninformativ.de According to this screenshot, KDE still shows good old application icons: https://upload.wikimedia.org/wikipedia/commons/9/94/KDE_Plasma_5.21_Breeze_Twilight_screenshot.png
And GNOME used to have them, too: https://upload.wikimedia.org/wikipedia/commons/9/9f/Gnome-2-22_%284%29.png
I like the looks of your window manager. That’s using Wayland, right? The only thing on this screenshot to critique is all that wasted space of the windows not making use of the full screen!!!1 At least the file browser. 8-)
This drives me nuts when my workmates share their screens. I really don’t get it how people can work like that. You can’t even read the whole line in the IDE or log viewer with all the expanded side bars. And then there’s 200 pixels on the left and another 300 pixels on the right where the desktop wallpaper shows. Gnaa! There’s the other extreme end when somebody shares their ultra wide screen and I just have a “regularish” 16:10 monitor and don’t see shit, because it’s resized way too tiny to fit my width. Good times. :-D
Sorry for going off on a tangent here. :-) Back to your WM: It has the right mix of being subtle and still similar to motif. Probably close to the older Windowses. My memory doesn’t serve me well, but I think they actually got it fairly good in my opinion. Your purple active window title looks killer. It just fits so well. This brown one (https://www.uninformativ.de/blog/postings/2025-07-22/0/leafpads.png) gives me also classic vibes. Awww. We ran some similar brownish color scheme (don’t recall its name) on Win95 or Win98 for some time on the family computer. I remember other people visting us not liking these colors. :-D
[47°09′19″S, 126°43′27″W] Reading: 1.34 Sv
[47°09′13″S, 126°43′30″W] Raw reading: 0x68806C51, offset +/-1
[47°09′59″S, 126°43′41″W] Raw reading: 0x687DC951, offset +/-4
[47°09′33″S, 126°43′43″W] Raw reading: 0x687D3CB2, offset +/-3
[47°09′09″S, 126°43′14″W] Reading: 0.13000 PPM
@kat@yarn.girlonthemoon.xyz I kind of like XML because it’s mostly well-defined and easy for humans to read (unlike YAML, which is a complete mess, imho) … and at the same time, it can get complicated really fast. 🫤 But at least it’s plain-text – that’s the important part in this case. 😅
[47°09′08″S, 126°43′36″W] Reading: 1.88 Sv
[47°09′25″S, 126°43′01″W] Raw reading: 0x687C77D1, offset +/-3
[47°09′48″S, 126°43′05″W] Reading: 0.30 Sv
Xfce does one thing very right: It stores its settings in plain-text XML files. This allows me to easily read, track, and maybe even distribute these settings to other machines.
(Unlike GNOME’s dconf, which uses some binary file format. Fun fact: The older and now deprecated gconf also used XML files.)
[47°09′22″S, 126°43′17″W] Raw reading: 0x687B4271, offset +/-1
[47°09′49″S, 126°43′27″W] Reading: 1.87 Sv
[47°09′11″S, 126°43′57″W] Reading: 0.34 Sv
@aelaraji@aelaraji.com And I read the following funny response to that:
Bluesky: Users verify their age by adding a payment method or uploading a photo ID.
Mastodon: Users verify their age by posting pictures of the vintage computer equipment in their homes.
https://beige.party/@maxleibman/114848276288629121
😏
ROFL 🤣 I’ve just read from someone on the Fedi, that Bluesky has started asking people for ID
[47°09′14″S, 126°43′59″W] Raw reading: 0x68752981, offset +/-3
[47°09′09″S, 126°43′30″W] Reading: 0.61 Sv
[47°09′35″S, 126°43′36″W] Reading: 1.44000 PPM
setpriv
on Linux supports Landlock.
@prologic@twtxt.net Yeah, it’s not a strong sandbox in jenny’s case, it could still read my SSH private key (in case of an exploit of some sort). But I still like it.
I think my main takeaway is this: Knowing that technologies like Landlock/pledge/unveil exist and knowing that they are very easy to use, will probably nudge me into writing software differently in the future.
jenny was never meant to be sandboxed, so it can’t make great use of it. Future software might be different.
(And this is finally a strong argument for static linking.)
setpriv
on Linux supports Landlock.
Another example:
$ setpriv \
--landlock-access fs \
--landlock-rule path-beneath:execute,read-file:/bin/ls-static \
--landlock-rule path-beneath:read-dir:/tmp \
/bin/ls-static /tmp/tmp/xorg.atom
The first argument --landlock-access fs
says that nothing is allowed.
--landlock-rule path-beneath:execute,read-file:/bin/ls-static
says that reading and executing that file is allowed. It’s a statically linked ls
program (not GNU ls).
--landlock-rule path-beneath:read-dir:/tmp
says that reading the /tmp
directory and everything below it is allowed.
The output of the ls-static
program is this line:
─rw─r──r────x 3000 200 07-12 09:19 22'491 │ /tmp/tmp/xorg.atom
It was able to read the directory, see the file, do stat()
on it and everything, the little x
indicates that getting xattrs also worked.
3000
and 200
are user name and group name – they are shown as numeric, because the program does not have access to /etc/passwd
and /etc/group
.
Adding --landlock-rule path-beneath:read-file:/etc/passwd
, for example, allows resolving users and yields this:
─rw─r──r────x cathy 200 07-12 09:19 22'491 │ /tmp/tmp/xorg.atom
[47°09′50″S, 126°43′12″W] Reading: 1.94 Sv
[47°09′53″S, 126°43′13″W] Reading: 0.99 Sv
@prologic@twtxt.net Yeah, this really could use a proper definition or a “manifest”. 😅 Many of these ideas are not very wide spread. And I haven’t come across similar projects in all these years.
Let’s take the farbfeld image format as an example again. I think this captures the “spirit” quite well, because this isn’t even about code.
This is the entire farbfeld spec:
farbfeld is a lossless image format which is easy to parse, pipe and compress. It has the following format:
╔════════╤═════════════════════════════════════════════════════════╗
║ Bytes │ Description ║
╠════════╪═════════════════════════════════════════════════════════╣
║ 8 │ "farbfeld" magic value ║
╟────────┼─────────────────────────────────────────────────────────╢
║ 4 │ 32-Bit BE unsigned integer (width) ║
╟────────┼─────────────────────────────────────────────────────────╢
║ 4 │ 32-Bit BE unsigned integer (height) ║
╟────────┼─────────────────────────────────────────────────────────╢
║ [2222] │ 4x16-Bit BE unsigned integers [RGBA] / pixel, row-major ║
╚════════╧═════════════════════════════════════════════════════════╝
The RGB-data should be sRGB for best interoperability and not alpha-premultiplied.
(Now, I don’t know if your screen reader can work with this. Let me know if it doesn’t.)
I think these are some of the properties worth mentioning:
- The spec is extremely short. You can read this in under a minute and fully understand it. That alone is gold.
- There are no “knobs”: It’s just a single version, it’s not like there’s also an 8-bit color depth version and one for 16-bit and one for extra large images and one that supports layers and so on. This makes it much easier to implement a fully compliant program.
- Despite being so simple, it’s useful. I’ve used it in various programs, like my window manager, my status bars, some toy programs like “tuxeyes” (an Xeyes variant), or Advent of Code.
- The format does not include compression because it doesn’t need to. Just use something like bzip2 to get file sizes similar to PNG.
- It doesn’t cover every use case under the sun, but it does cover the most important ones (imho). They have discussed using something other than RGBA and decided it’s not worth the trouble.
- They refrained from adding extra baggage like metadata. It would have needlessly complicated things.
@movq@www.uninformativ.de Yeah that’s why I’m striking this conversation with you 😅 Not only do I respect your opinion quite highly 🤣 But like you say (and I’ve read their philipshpy) it can be a bit “elitism” for sure. I’m genuinely interested in what we think of as software that “doesn’t suck”. Tb be honest I haven’t really put thought to paper myself, but I reckon if I did, I’d have some opinions/ideas…
@eldersnake@we.loveprivacy.club This was an interesting read for sure! 👍 I don’t think it had anything I hadn’t already considered in terms of the ethical/moral points of view. I’m not sure where I stand myself either to be honest. I’ve forced myself to get familiar with the ecosystem and tooling, because in my line of work as a tech lead (staff engineer in sre) you don’t want to be that one guy that ya know 😉 Ethically/Morally though, I’m definitely with the sentiment of this post 😅 Much like the whole Crypto hype yaers back (if y’all remember?!) this is also one of the most energy hungry pieces of “tech” (if you can call it that?) in a while. Then there’s these other issues “stealing people’s work”, “reliance is causing humans to become cognitively weak and neural connections to shrink”, to name a few…
[47°09′47″S, 126°43′12″W] Raw reading: 0x686A9D81, offset +/-5
[47°09′32″S, 126°43′31″W] Raw reading: 0x686A1EF1, offset +/-1
[47°09′35″S, 126°43′25″W] Reading: 0.83 Sv
[47°09′52″S, 126°43′06″W] Raw reading: 0x6864BCD1, offset +/-4
[47°09′57″S, 126°43′52″W] Raw reading: 0x68643031, offset +/-2
[47°09′51″S, 126°43′21″W] Reading: 1.91000 PPM
[47°09′46″S, 126°43′48″W] Reading: 0.18 Sv
@prologic@twtxt.net I like the last two, on the first three you sent. I looked up “Canarvon Gorge”, and read more about it. Thanks for introducing me to it!
[47°09′37″S, 126°43′07″W] Reading: 1.99000 PPM
[47°09′48″S, 126°43′55″W] Raw reading: 0x685EEA31, offset +/-5
[47°09′49″S, 126°43′48″W] Reading: 0.74 Sv
[47°09′30″S, 126°43′18″W] Reading: 1.61000 PPM
Thanks @bender@twtxt.net! Yeah, so super cute. I couldn’t pet them, though. Despite very curious, they were also very restless.
I persuaded my dad to check out the fireflies with me tonight. He only wanted to go for a short trip, so we came just across a couple hundred of them. Otherwise, the thousands mark would have been exceeded in no time. He was super glad I talked him into that. :-)
It was also my first time to see them over the meadows. Those numbers don’t compare to the ones inside the forest, no question, but we probably saw 60 or so. Haven’t come across them there before, I only heard and read about that.
Note to future-Lyse next year: Leaving at 21:45 seems like a good time. We left earlier and had to wait just a few more minutes for them to come out in masses.
Too bad it’s impossible to share photos or videos. My camera isn’t made for that at all, not even close.
[47°09′21″S, 126°43′14″W] Reading: 1.25000 PPM
[47°09′17″S, 126°43′30″W] Raw reading: 0x685AF5B2, offset +/-3
[47°09′35″S, 126°43′09″W] Raw reading: 0x685A4CF2, offset +/-4
[47°09′23″S, 126°43′34″W] Reading: 1.72 Sv
[47°09′47″S, 126°43′52″W] Reading: 1.68 Sv
Unless your Terms of use update email looks and reads the same as the one I got yesterday from mastodon.social
, I don’t wanna know about it, nor do I agree to it.
@kat@yarn.girlonthemoon.xyz Ooh, I’ve got to bookmark that page. 😃
@aelaraji@aelaraji.com I wish I had the luxury of not reading that junk. 😅 But instead, I have a Mutt hotkey that pipes an HTML mail through elinks … Bah.
@movq@www.uninformativ.de > That guy over there in the corner…
I’m literally sitting in a corner chuckles. I rarely get any emails nowadays. But if I do and it is not plain-text, then my Mutt gets to bark at it and I, just… won’t read it. 🤷🏽♂️
@movq@www.uninformativ.de Yeah. :-( But hey, there are at least six of us using mail as it should be™. :-)
I sent the dealer an e-mail about that with all sorts of other issues as well. Let’s see if they fix anything of that some day. Or yet just even read it.
It all started in New York in the early 1980s. Click, now 85, and his friends were sitting at the long bar of the New York Athletic club reading magazine articles about boxing, fencing, judo and wrestling. “One of my mates said, ‘Dude, we don’t do any of those things.’” They had to face it. They were dull. They decided to embrace their dullness.
As a joke, they started The Dull Men’s Club, which involved some very silly, dull activities. They chartered a tour bus but didn’t go anywhere. “We toured the bus. We walked around the outside of the bus a few times. And the driver explained the tyre pressures and turned on the windscreen wipers.”
OpenBSD has the wonderful pledge()
and unveil()
syscalls:
https://www.youtube.com/watch?v=bXO6nelFt-E
Not only are they super useful (the program itself can drop privileges – like, it can initialize itself, read some files, whatever, and then tell the kernel that it will never do anything like that again; if it does, e.g. by being exploited through a bug, it gets killed by the kernel), but they are also extremely easy to use.
Imagine a server program with a connected socket in file descriptor 0. Before reading any data from the client, the program can do this:
unveil("/var/www/whatever", "r");
unveil(NULL, NULL);
pledge("stdio rpath", NULL);
Done. It’s now limited to reading files from that directory, communicating with the existing socket, stuff like that. But it cannot ever read any other files or exec()
into something else.
I can’t wait for the day when we have something like this on Linux. There have been some attempts, but it’s not that easy. And it’s certainly not mainstream, yet.
I need to have a closer look at Linux’s Landlock soon (“soon”), but this is considerably more complicated than pledge()
/unveil()
:
@bender@twtxt.net Both Gopher and Mastodon are a way for me to “babble”. 😅 I basically shut down Gopher in favor of Mastodon/Fedi last year. But the Fediverse doesn’t really work for me. It’s too focused on people (I prefer topics) and I dislike the addictive nature of likes and boosts (I’m not disciplined enough to ignore them). Self-hosting some Fedi thing is also out of the question (the minimalistic daemons don’t really support following hashtags, which is a must-have for me).
I’ll probably keep reading Fedi stuff, I just won’t post that much, I think.
@prologic@twtxt.net Yeah, it’s difficult, you often don’t get what you’d expect. They also make heavy use of 3rd party libraries. IIUC, for random numbers, they refer to this library. I’ve read many times that the Rust stdlib is intentionally minimalistic (to make it easier to maintain and port and all that).
I’m struggling with this, using 3rd party libs for so many things isn’t really my cup of tea. I’ll probably make my own tiny little “standard library”. It’s silly, but I don’t see any other options. 🤷
[47°09′13″S, 126°43′20″W] Raw reading: 0x684880B1, offset +/-1
[47°09′25″S, 126°43′53″W] Reading: 0.33 Sv
[47°09′10″S, 126°43′06″W] Reading: 1.64000 PPM
[47°09′25″S, 126°43′29″W] Raw reading: 0x68414071, offset +/-2
[47°09′01″S, 126°43′54″W] Reading: 1.10 Sv
@kat@yarn.girlonthemoon.xyz That sounds fun! I’m happy to read an article on how you did that. :-)
[47°09′50″S, 126°43′21″W] Reading: 1.61 Sv
[47°09′43″S, 126°43′42″W] Reading: 0.44000 PPM
[47°09′40″S, 126°43′10″W] Reading: 0.84000 PPM
[47°09′56″S, 126°43′42″W] Reading: 1.53 Sv
[47°09′00″S, 126°43′06″W] Reading: 0.42000 PPM
[47°09′32″S, 126°43′48″W] Reading: 0.91000 PPM
[47°09′25″S, 126°43′37″W] Reading: 1.51000 PPM
[47°09′08″S, 126°43′00″W] Reading: 0.51 Sv
@movq@www.uninformativ.de i feel like when i read go code i’m reading some algebra shit where every part is 1-5 letters long and then there’s weird symbols like :=
and it’s just infinitely harder for me to parse and infer meaning from lol. it’s such a me problem
fit 1 $ spin (saw 0.1 * sign fxy) $ rect 0 1 - rect 0 0.99 >> add;
#punctual #livecoding #creativecoding #videoart
@prologic@twtxt.net You can read more about the “cryptic” live coding language Punctual in my newsletter
[47°09′27″S, 126°43′08″W] Reading: 1.15000 PPM
[47°09′29″S, 126°43′22″W] Reading: 1.45 Sv
[47°09′27″S, 126°43′18″W] Raw reading: 0x682DB231, offset +/-4
[47°09′01″S, 126°43′44″W] Reading: 1.09000 PPM
Wanna read something very scary?
Your future doctor is using ChatGPT to pass medical school, so you better start riding a bike and eating healthy now.
😨😨😨
[47°09′52″S, 126°43′50″W] Raw reading: 0x682ABAD1, offset +/-2
[47°09′49″S, 126°43′54″W] Raw reading: 0x682A2E32, offset +/-1
[47°09′13″S, 126°43′49″W] Reading: 1.48 Sv
[47°09′45″S, 126°43′58″W] Reading: 0.22 Sv
@lyse@lyse.isobeef.org I can’t read. 🤦 Yeah, that’s gonna be a problem. I was not yet able to trigger it, though. Maybe they are (like Google) rolling out these changes gradually …
[47°09′54″S, 126°43′30″W] Raw reading: 0x6824BE02, offset +/-2
@bender@twtxt.net Basically the way I’m reading this is 1 RPM
. This is a rather aggressive rate limit actually. This basically makes Github inaccessible and useless for basically anything unless you’re logged in. You can basically kiss “pursuing” casually, anonymously goodbye.
Imagine if I imposed that kind of rate limit on twtxt.net?! 🤣
[47°09′37″S, 126°43′08″W] Raw reading: 0x682477B1, offset +/-3
[47°09′09″S, 126°43′53″W] Reading: 1.45 Sv