#GitHub #GitHubPages #fail This is driving me madā¦
Images randomly deciding not to load on all my pages.
Is it just me? Is it my browserās fault? Is it just in Brazil?
I was working on this #shapely + #trimesh page⦠and I can only see the last image (the animated gif)!
https://abav.lugaralgum.com/material-aulas/Processing-Python-py5/shapely-e-trimesh.html
Update: On this exact page I have bungled the image URLs (I blame Marktext for being stupid and not using a relative reference). But I swear loading problems have been going on other well formed pages.
XMPP Interop Testing: MOAR TESTS!
Ever heard of XMPP Interop Testing? Itās this cool project that helps make sure different XMPP servers can all work
together smoothly. Our XMPP Interop Testing project provides a suite of automated tests that can be integrated into
CI/CD pipelines to verify the compliance and interoperability of XMPP server implementations.
Late last year, we reported that we had secured funding graciously provided by NLnet that allowed
us to massively build out t ⦠ā Read more

Since Fastly acquired and recently shut down glitch.com, some of my ancient webapps are no longer available, nor do I have any plans to make them available again - all had either zero, or very few monthly visits, used outdated libraries and would be a waste of money, to continue hosting and updating elsewhere.
All art archives remain unaffected and all projects shut down before 2025, were already permanently deleted, but if thereās someone out there, still relying on the recently discontinued projects, somehow - you can reach out and request their source code.
These requests will only be honoured, until the end of this year, when we plan to permanently delete, all of this data (both webapps and files only hosted on Amazons CDN).
Canine out °_°
Prosodical Thoughts: Debian repository key change
We have been working on some changes to our Debian/Ubuntu package repository.
If you use our repository to keep up to date with new Prosody packages, you
need to take action before 4th August 2025 to continue receiving updates
smoothly.
The āaptā utility has been moving towards a new format for specifying package
repositories. If you are familiar with putting deb lines in a sources.list
file, [that method is changing](ht ⦠ā Read more
Hi roman at shibboleths.org! Why do you use java? My lynx browser has no java.
If you think the EU-US agreement is good news, think again:
āWe will replace Russian gas and oil with significant purchases of US LNG, oil and nuclear fuels,ā the European Commission President says in a statement.
https://www.bbc.com/news/live/c5y0d0yz282t?post=asset%3A23c287b5-7113-4081-8b9d-71b8de41df4c#post
@prologic@twtxt.net Iād expect a custom build like that to cost at least 50ā000⬠here in Europe. Used campers with 100ā000 - 200ā000 km already on their clock are 20-40kā¬, apparently. š
@prologic@twtxt.net Cool! What program do you use to draw this up?
Stuff that nobody needs:
systemctl uses ANSI escape codes to underline text (\e[4m) and then it also uses special escape codes ā that Wikipedia classifies as ānot in the standardā, but I havenāt looked it up ā to change the color of the underline. That color change is barely noticeable in the first place.
Some terminals donāt support this and now my systemctl output is blinking because of that.
guys i use VPS systems from time to time and they scare me. wdym they have every port open by default and the firewall is your responsibility. what the fuck bro
Global update: Trump in Scotland says EU trade deal has 50-50 chance as tariff row grows. Gaza sees 9 more starvation deaths (122 total); UN says famine is deliberate. Thai-Cambodia clashes kill 16, displace 135k. US raid in Syria kills top ISIS leader & sons.
You know youāre getting old when thereās quite a few scripts in your ~/bin that you use daily, but you havenāt edited them once in well over 10 years ā¦
@lyse@lyse.isobeef.org Oh, huh, maybe it was just my GNOME 2 themes back then that didnāt show the icon. š¤
I like the looks of your window manager. Thatās using Wayland, right?
Oh, no. Itās still X11. All my recent Wayland comments resulted from me trying to switch, but I think itās still too early. Being unable to use QEMU (because it canāt capture the mouse pointer) is a pretty big blocker for me. This is completely broken, it just happens to be unnoticeable with modern guest OSes, so itās probably not a priority for devs.
(Not to mention that I would have to fork and substantially extend dwl in order to āreplicateā my X11 WM. And then, after having done that, Iād have to follow upstream Wayland development, for which I donāt have the resources. Things would need to slow down before I can do that.)
all that wasted space of the windows not making use of the full screen!!!1
Heh. Iāve been using tiling WMs for ~15 years now, so itās actually kind of refreshing to see something different for a change. š
Probably close to the older Windowses.
That particular theme is a ripoff of OS/2 Warp 3: https://movq.de/v/6c2a948882/s.png š
We ran some similar brownish color scheme (donāt recall its name) on Win95 or Win98
Oh god. Yeah, I wasnāt a fan of those, either. š„“
@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
@lyse@lyse.isobeef.org True, at least old versions of KDE had icons:
https://movq.de/v/0e4af6fea1/s.png
GNOME, on the other hand, didnāt, at least to my old screenshots from 2007:
https://www.uninformativ.de/desktop/2007%2D05%2D25%2D%2Dgnome2%2Dlaptop.png
I switched to Linux in 2007 and no window manager I used since then had icons, apparently. Crazy. An icon-less existence for 18 years. (But yeah, everything is keyboard-driven here as well and there are no buttons here, either.)
Anyway, my draft is making progress:
https://movq.de/v/5b7767f245/s.png
I do like this look. š
@kat@yarn.girlonthemoon.xyz Cool! I just got an idea for work tomorrow: Use dmenu to quickly start different SSH tunnels I routinely need.
@movq@www.uninformativ.de I havenāt used KDE or GNOME for ages, but Iām sure KDE at least used to show application icons in the title bars. They proabably still do. But then, one could argue that KDE is mimicking Windows. I never thought like that, I always found KDE way superior, because I was able to configure it like a madman.
In i3, I donāt have any application icons. I remember missing them at the beginning. But I donāt even have the classical minimize, maximize and close buttons in the title bar either. Just the title. Being mostly keyboard driven and a tiling window manager, these buttons are not super useful, anyway.
@movq@www.uninformativ.de @kat@yarn.girlonthemoon.xyz Iām just used to it because I deal with such things all the time. :-)
Hereās an example of X11/Xlib being old and archaic.
X11 knows the data type ācardinalā. For example, the window property _NET_WM_ICON (which holds image data for icons) is an array of ācardinalā. I am already not really familiar with that word and Iām assuming that it comes from mathematics:
https://en.wikipedia.org/wiki/Cardinal_number
(It could also be a bird, but probably not: https://en.wikipedia.org/wiki/Cardinalidae)
We would probably call this an āintegerā today.
EWMH says that icons are arrays of cardinals and that theyāre 32-bit numbers:
https://specifications.freedesktop.org/wm-spec/latest-single/#id-1.6.13
So itās something like 0x11223344 with 0x11 being the alpha channel, 0x22 is red, and so on.
You would assume that, when you retrieve such an array from the X11 server, youād get an array of uint32_t, right?
Nope.
Xlib is so old, they use char for 8-bit stuff, short int for 16-bit, and long int for 32-bit:
That is congruent with the general C data types, so it does make sense:
https://en.wikipedia.org/wiki/C_data_types
Now the funny thing is, on modern x86_64, the type long int is actually 64 bits wide.
The result is that every pixel in a Pixmap, for example, is twice as large in memory as it would need to be. Just because Xlib uses long int, because uint32_t didnāt exist, yet.
And this is something that I wouldnāt know how to fix without breaking clients.
We finally got a caliper donated for this yearās scout flea market. We didnāt sell it, but kept it ourselves. It will come in very handy every now and then in our material store. For example, I missed having a caliper in the past when sorting our random assortment of screws or measuring the depth of a hole. Itās a wee bit banged up (probably happened during transport) and didnāt come with a box, but the latter is now solved.
The lid and bottom came from a wardrobe back panel I got from a mate, the sides were rocket sticks in their former lives. I found some scrap of felt in our material store and some hinges laying around in the drawers of my own workshop.
Unfortunately, the table saw teared up the plywood veneer fibres badly, even though I put tape around to prevent that. This is the first time it didnāt work. At. All. To cover that up, I painted the box with some decades old tinting paint (price tag says Deutsche Mark, not Euro!) from my paint cabinet. Itās awesome, works absolutely perfectly and doesnāt smell the slightest bit. I reckon, this caliper box is plenty good enough for occasional use at our scout material store.
Only figured this out yesterday:
pinentry, which is used to safely enter a password on Linux, has several frontends. Thereās a GTK one, a Qt one, even an ncurses one, and so on.
GnuPG also uses pinentry. And you can configure your frontend of choice here in gpg-agent.conf.
But what happens when you donāt configure it? Whatās the default?
Turns out, pinentry is a shellscript wrapper and itās not even that long. Here it is in full:
#!/bin/bash
# Run user-defined and site-defined pre-exec hooks.
[[ -r "${XDG_CONFIG_HOME:-$HOME/.config}"/pinentry/preexec ]] && \
. "${XDG_CONFIG_HOME:-$HOME/.config}"/pinentry/preexec
[[ -r /etc/pinentry/preexec ]] && . /etc/pinentry/preexec
# Guess preferred backend based on environment.
backends=(curses tty)
if [[ -n "$DISPLAY" || -n "$WAYLAND_DISPLAY" ]]; then
case "$XDG_CURRENT_DESKTOP" in
KDE|LXQT|LXQt)
backends=(qt qt5 gnome3 gtk curses tty)
;;
*)
backends=(gnome3 gtk qt qt5 curses tty)
;;
esac
fi
for backend in "${backends[@]}"
do
lddout=$(ldd "/usr/bin/pinentry-$backend" 2>/dev/null) || continue
[[ "$lddout" == *'not found'* ]] && continue
exec "/usr/bin/pinentry-$backend" "$@"
done
exit 1
Preexec, okay, then some auto-detection to use a toolkit matching your desktop environment ā¦
⦠and then it invokes ldd? To find out if all the required libraries are installed for the auto-detected frontend?
Oof. I was sitting here wondering why it would use pinentry-gtk on one machine and pinentry-gnome3 on another, when both machines had the exact same configs. Yeah, but different libraries were installed. One machine was missing gcr, which is needed for pinentry-gnome3, so that machine (and that one alone) spawned pinentry-gtk ā¦
gomdn: Yet another Static Site Generator
Yet another Static Site Generator (SSG), but this one is mine.
Itās a stupidly simple Go program ( wc says 229 lines), more like a
hack, really, but I donāt need something like Hugo. Most of the real
work is done by the goldmark package, of course. This is mostly just a
wrapper, deciding if something needs to be rebuilt.
Iāve been using a Perl script together with cmark (originally
Markdown.pl) since forever. And before that the old [txt2tags](htt ⦠ā Read more
I have a Python script that transforms the original YouTube channel Atom feed into a more useful Atom feed by removing the spam description and replacing it with the video duration, filtering out videos by title, duration, etc. I just updated it to exclude the damn Shorts garbage more efficiently. Finally, YouTube updated their Atom feed generation, so that the video URL contains /short/ if itās of this useless kind. Never thought that they ever actually will improve their Atom feeds. Thank you, much appreciated!
@kat@yarn.girlonthemoon.xyz I have absolutely no idea, but I wouldnāt be surprised if it uses the closest full image after your cut point and not the one before. Hence, the deltas between the two full images have nothing to really refer to. So, the video player just shows the first full image it finds and āfreezesā the image until the video stream actually hits it.
Let me try to visualize it, | represent full images, . just subsequent deltas:
Original start of video
ā
|......|.....|........|......|..
ā ā
Cut point Cut point
Resulting video:
....|.....|........|....
āāāā
This is where it freezes
Could be complete bullshit, though. Wouldnāt be the first time that Iām wrong. :-)
Iām just curious, what exact command line do you use to cut the video?
i should work on my PHP project again just so i have an excuse to use htmx
@lyse@lyse.isobeef.org yesss itās not my idea but itās sooo fun here ngl like i should use it more!!
Sorry shibboleths.org! I get a warning with my ip, even when I use lynx with a german IP from
I have this very simple #Python script that uses #imageio to convert all PNG files on a folder into a #GIFAnimation, and this is a #FreeSimpleGUI version of it (I usually run a command line version).
As I usually run #gifsicle on the command line after creating a GIF, I decided to update it to add #pygifsicle to do it for me and save a step.
https://github.com/villares/sketch-a-day/blob/main/admin_scripts/make-gif.py
@kat@yarn.girlonthemoon.xyz Nice use of dmenu.
Maybe someone can explain this to me.
An #EU citizen trying to access Facebook today faces the following choices (see screenshots).
In there, they say that they are asking this again to comply with #EU rules, and yet the question - and the options to choose from - are the same they had in the past.
So, hm, how does this make them comply with something they werenāt complying before? Whatās the detail Iām missing?
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.)
Ā«Using data from Morgane Laouenan et al., the map is showing birthplaces of the most ānotable peopleā around the world. Data has been processed to show only one person for each unique geographic location with the highest notability rank. Click below to show people only from a specific category.
Made by Topi Tjukanov.Ā»
https://tjukanovt.github.io/notable-people
via @mekaru@mekaru
#wikidata #cartography
Nooooooooooooooooooooooooooooooooooooooooooooooooooooooo, the doctors have started using AI voice agents and they understand jack shit. ššš
Zip It! - Finding File Similarity Using Compression Utilities - Computerphile ā Read more
Thinking about doing āWayland Wednesdayā. Only use Wayland every Wednesday. Collect bugs, report bugs, fix bugs.
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.)
Another hacky #Python script using the #HackMD API⦠this one is to change the write permissions⦠you might want to adapt it or check out the other API helper methods:
The WM_CLASS Property is used on X11 to assign rules to certain windows, e.g. āthis is a GIMP window, it should appear on workspace number 16.ā It consists of two fields, name and class.
Wayland (or rather, the XDG shell protocol ā core Wayland knows nothing about this) only has a single field called app_id.
When you run X11 programs under Wayland, you use XWayland, which is baked into most compositors. Then you have to deal with all three fields.
Some compositors map name to app_id, others map class to app_id, and even others directly expose the original name and class.
Apparently, there is no consensus.
@prologic@twtxt.net @bender@twtxt.net Thatās what I thought as well, sounds way too expensive to me. But I have no idea what the prices are over here. Probably also astronomical. Campers sit around most of the time, one really would need to use them a lot to justify spending so much money on them.
But yeah, each to their own (expensive) hobbies. :-) I, for example, burn my money on tools that I donāt really⢠need. :-P
@lyse@lyse.isobeef.org which browser do you use? Chrome, Edge, and Firefox, under Ubuntu, all show it fine.
Lazy-fedi-question⦠I have a āworkingā(?) code example of TF-IDF #tfidf using #scikitlearn and I know the main concepts, but all the tutorials I find are a bit ā I donāt want to be harsh but ācrappy⦠Can someone point me to some nice open resource on it?
i made a new tumblr account to interact with fandom last week. while using the site today i got logged out and when i logged back in i was told my account was terminated. mullenweg will pay for this
@lyse@lyse.isobeef.org I do my timetracking in a little Python script, locally. Every now and then, I push the data to our actual service. Problem solved ā but itās a completely unpopular approach, they all want to use the web site. I donāt get it. Then, of course, when itās down, shit hits the fan. (Luckily, our timetracking software is neither developed nor run by us anymore. Itās a silly cloud service, but the upside is that Iām not responsible anymore. š¤·)
Some of our oldschool devs tried to roll out local timetracking once, about 15 years ago. I donāt remember anymore why they failed ā¦
This is developed inhouse, Iām just so glad that weāre not a software engineering company. Oh wait. How embarrassing.
Oh to be anonymous on the internet. That must be nice. š
@movq@www.uninformativ.de This is a really good example of āsimplicityā but achieves the intent and goals š
(Now, I donāt know if your screen reader can work with this. Let me know if it doesnāt.)
I donāt use a screen reader fortunately (actually theyāre pretty garbage). So all good š (I juse use full-screen zoom).
@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.
For example, I reckon software should treat stdout and stderr with care and never output logs or other such garbage to stdout that cannot possibly be useful in a UNIX pipeline š
@prologic@twtxt.net Hm, I wouldnāt say that. Go code could fall into that category as well.
Maybe this topic could use a blog post / article, that explains what itās about. Iām finding it hard to really define what āsuckless-like softwareā is. š¤ (Their own philosophy focuses too much on elitism, if you ask me.)
@prologic@twtxt.net Ah, Iām referring to software thatās similar to that of suckless.org: Small, minimal codebases, small tools, but still useful. dmenu is probably the best example and also farbfeld.
Hereās the author of Anubis talking about some of their experiences:
https://xeiaso.net/blog/why-i-use-suckless-tools-2020-06-05/
(You can skip the long config and keybinds part.)
Ignite Realtime Blog: Empowering Digital Sovereignty with Openfire: A Secure and Customizable Communication Platform
In todayās interconnected world, digital sovereignty has become increasingly important for individuals and organizations seeking to maintain control over their data, infrastructure, and technologies. Openfire, an open-source, real-time collaboration (RTC) server that uses the XMPP (Extensible Messaging and Presence ⦠ā Read more
@eldersnake@we.loveprivacy.club This wasnāt always the case, though. Quake3, Quake4, Unreal Tournament 99 and 2004 are examples of games that used to run very well as native Linux games. But that was 20+ years ago ā¦
A good blog post that makes some good points: Can I ethically use LLMs?
@movq@www.uninformativ.de reminds me how many Windows games using Proton (or WINE with similar patches) on Linux run better than some of the old native Linux binaries.
@lyse@lyse.isobeef.org I have to say, this sounds much worse than our stuff at work. š«© (We donāt use any Microsoft services, at least not for core tools.)
I hear you, @movq@www.uninformativ.de! :ā-(
At work, too. For a few weeks now when I try to log into this horrible Outlook web intershit (Because why would they fix the Evolution integration?! Itās cactus for well over a year now. Probably more like two.), it forwards me to the corporate weblogin, I enter my credentials, even do the bloody MFA crap and get redirected back to Outlook. āLoading mailboxā¦ā āPlease wait for us to log you out, do not close this window while this process is underway.ā Fuck you! I have to delete the cookies for this damn domain each and every fucking time. Otherwise, this goes in circles forever. I tried the game for 15 minutes, no joke.
But wait, thereās more! Why just fuck it up only a little bit? This week I get logged out at the middle of the day. Every. Single. Day. Not even close to eight hours since I started, no. What the hell!? I reckon I just donāt even bother reauthenticating anymore in the arvo. No more e-mails for Lyse after lunch. Fuck it. Itās just distraction, anyway, right?!
Cheers @danzin@danzin, was it you who added a PR to core #Python about pprint?
(listening to #corepy #podcast)
Update: Thank you so much for improving Python @danzin@danzin !
core.py: PyCon US 2025 Recap
Starting from: 01:32:45 https://podcasters.spotify.com/pod/show/corepy/episodes/PyCon-US-2025-Recap-e347dc3
https://anchor.fm/s/eb6edc3c/podcast/play/104100675/https%3A%2F%2Fd3ctxlq1ktw2nl.cloudfront.net%2Fstaging%2F2025-5-13%2Fb281ac3a-b0ec-49b9-b31d-7a90031e910d.mp3#t=5565
Someone did a thing:
https://social.treehouse.systems/@ariadne/114763322251054485
Iāve been silently wondering all the time if this was possible, but never investigated: Keep doing X11 but use Wayland as a backend.
This uses XWaylandās ārootfulā mode, which basically just gives you a normal Wayland window with all the X11 stuff happening inside of it:
https://www.phoronix.com/news/XWayland-Rootful-Useful
In other words, put such a window in fullscreen and you (more or less) have good old X11 running in a Wayland window.
(For me, personally, this wonāt be the way forward. But itās a very interesting project.)
@movq@www.uninformativ.de Yes, flat UIs are broken! Iām used to that by now, but itās still more work to recognize than when there are borders around buttons, etc.
These are lists in your Inkscape example, right? (Iām too lazy to start Inkscape myself and look at it. And writing this took longer than just seeing for myself, but here we are. I met up with one of my best schoolmate this morning and itās fucking hot already. So I blame the heat.) Nested tabs are probably an own death sin in itself. I know, I know, the upper ones can be made into windows and dragged around, but still.
whaaaat. how did i get here? last time I used gopher/veronica/etc was in the mid 90s, in the Temple University computer labs. Probably on a DEC Ultrix Unix account
@movq@www.uninformativ.de Yeah, itās been a while. Didnāt feel this long, though. Not at all, Iām quite surprised. :-O
But like with every quality content, there is no publishing schedule. Eventually, @mckinley@mckinley.cc will write another article for all of us. :-)
Updating my āhow install and use #py5ā pages, check them out if you want to ā⦠draw and experiment some #CreativeCoding with #Python ā¦ā
EN: https://abav.lugaralgum.com/como-instalar-py5/index-EN.html
ES: https://abav.lugaralgum.com/como-instalar-py5/index-ES.html
@movq@www.uninformativ.de itās sooo bad here on the east coast of the US omg 102F/38C heat here!!
Theyāre all talks, not real hands-on trainings like you did.
I love listening to good, well-structured talks. Problem is, not everybody is a good speaker and many screw it up. š„“ Iām certainly not a great speaker, which is why I gravitate more towards āworkshopsā, in the hopes that people ask questions and discussions arise. Doesnāt always work out. 𤣠At the very least, I almost always have some other person connect to the projector/beamer/screenshare and then they do the stuff ā this avoids me being wwwwaaaaaaaaayyyy too fast.
We are usually drowned in stress and tight deadlines, hence events like today are super rare ⦠We used to do it more often until ~10 years ago.
Once a year the security guys organize a really great hacking event, though.
Oh dear, Iād love to participate in that. 𤯠That sounds like a lot of fun. (Why donāt we do this?!)
@movq@www.uninformativ.de Interesting internal education sessions are way too infrequent here as well. There are a bunch of āknowledge transferā meetings actually, but 90% of the topics already sound totally boring to me. The other 9% talks turned out to be underwhelming, sadly. I only attended a single one where it was delivered what has been promised. Theyāre all talks, not real hands-on trainings like you did.
Once a year the security guys organize a really great hacking event, though. Teams can volunteer to hand in their software dev instances and all workmates are invited to hack them and report security vulnerabilities. Thatās a lot of fun, but also gets frustrating towards the end when you donāt make any progress. :-) Thereās also some actual hands-on training in advance for preparation of the two days. Unfortunately, I missed the last event due to my own project being very stressful at the time.
When I had a Do What You Want Day I also show my direct teammates what I learned in the hopes of this being interesting to them as well. Iām the only one in my team using this opportunity, sadly.
I did a ālectureā/āworkshopā about this at work today. 16-bit DOS, real mode. š¾ Pretty cool and the audience (devs and sysadmins) seemed quite interested. š„³
- People used the Intel docs to figure out the instruction encodings.
- Then they wrote a little DOS program that exits with a return code and they used uhex in DOSBox to do that. Yes, we wrote a COM file manually, no Assembler involved. (Many of them had never used DOS before.)
- DEBUG from FreeDOS was used to single-step through the program, showing what it does.
- This gets tedious rather quickly, so we switched to SVED from SvarDOS for writing the rest of the program in Assembly language. nasm worked great for us.
- At the end, we switched to BIOS calls instead of DOS syscalls to demonstrate that the same binary COM file works on another OS. Also a good opportunity to talk about bootloaders a little bit.
- (I think they even understood the basics of segmentation in the end.)
The 8086 / 16-bit real-mode DOS is a great platform to explain a lot of the fundamentals without having to deal with OS semantics or executable file formats.
Now that was a lot of fun. š„³ Itās very rare that we do something like this, sadly. I love doing this kind of low-level stuff.
** My measurer **
My dad is an electrical engineer and physicist. Measuring things is a core part of his professional life, and something he seems to spend a lot of time doing around the house. This is all to say my dad is relatively expert in the ways of measuring things so I think itās hilarious that he calls absolutely anything he is using to measure anything elseāmy measurer.ā Measuring tape, oscilloscope, scale, volt meter, bubble level, table spoons, whatever. Theyāre allāmy measurer.ā ā Read more
think iām gonna use this license on my git repos going forward. it kicks ass https://anticapitalist.software/
But on PC I use lynx.
@movq@www.uninformativ.de Iām feeling SO dumb right now š
I used to think !! was a sudo argument and never used it out of that context! Thanks for the $(!!) tip š¤
Saw this on Mastodon:
https://racingbunny.com/@mookie/114718466149264471
18 rules of Software Engineering
- You will regret complexity when on-call
- Stop falling in love with your own code
- Everything is a trade-off. Thereās no ābestā 3. Every line of code you write is a liability 4. Document your decisions and designs
- Everyone hates code they didnāt write
- Donāt use unnecessary dependencies
- Coding standards prevent arguments
- Write meaningful commit messages
- Donāt ever stop learning new things
- Code reviews spread knowledge
- Always build for maintainability
- Ask for help when youāre stuck
- Fix root causes, not symptoms
- Software is never completed
- Estimates are not promises
- Ship early, iterate often
- Keep. It. Simple.
Solid list, even though 14 is up for debate in my opinion: Software can be completed. You have a use case / problem, you solve that problem, done. Your software is completed now. There might still be bugs and they should be fixed ā but this doesnāt āaddā to the program. Donāt use āsoftware is never doneā as an excuse to keep adding and adding stuff to your code.
Okay, hereās a thing I like about Rust: Returning things as Option and error handling. (Or the more complex Result, but itās easier to explain with Option.)
fn mydiv(num: f64, denom: f64) -> Option<f64> {
// (Letās ignore precision issues for a second.)
if denom == 0.0 {
return None;
} else {
return Some(num / denom);
}
}
fn main() {
// Explicit, verbose version:
let num: f64 = 123.0;
let denom: f64 = 456.0;
let wrapped_res = mydiv(num, denom);
if wrapped_res.is_some() {
println!("Unwrapped result: {}", wrapped_res.unwrap());
}
// Shorter version using "if let":
if let Some(res) = mydiv(123.0, 456.0) {
println!("Hereās a result: {}", res);
}
if let Some(res) = mydiv(123.0, 0.0) {
println!("Huh, we divided by zero? This never happens. {}", res);
}
}
You canāt divide by zero, so the function returns an āerrorā in that case. (Option isnāt really used for errors, IIUC, but the basic idea is the same for Result.)
Option is an enum. It can have the value Some or None. In the case of Some, you can attach additional data to the enum. In this case, we are attaching a floating point value.
The caller then has to decide: Is the value None or Some? Did the function succeed or not? If it is Some, the caller can do .unwrap() on this enum to get the inner value (the floating point value). If you do .unwrap() on a None value, the program will panic and die.
The if let version using destructuring is much shorter and, once you got used to it, actually quite nice.
Now the trick is that you must somehow handle these two cases. You must either call something like .unwrap() or do destructuring or something, otherwise you canāt access the attached value at all. As I understand it, it is impossible to just completely ignore error cases. And the compiler enforces it.
(In case of Result, the compiler would warn you if you ignore the return value entirely. So something like doing write() and then ignoring the return value would be caught as well.)
@aelaraji@aelaraji.com I use Alt+. all the time, itās great. š
FWIW, another thing I often use is !! to recall the entire previous command line:
$ find -iname '*foo*'
./This is a foo file.txt
$ cat "$(!!)"
cat "$(find -iname '*foo*')"
This is just a test.
Yep!
Or:
$ ls -al subdir
ls: cannot open directory 'subdir': Permission denied
$ sudo !!
sudo ls -al subdir
total 0
drwx------ 2 root root 60 Jun 20 19:39 .
drwx------ 7 jess jess 360 Jun 20 19:39 ..
-rw-r--r-- 1 root root 0 Jun 20 19:39 nothing-to-see
@kat@yarn.girlonthemoon.xyz I guess that qualifies as an āArch momentā, albeit the first one I encountered. Iām running this since 2008 and itās usually very smooth sailing. š
@lyse@lyse.isobeef.org Yeah, YMMV. Some games work(ed) great in Wine, others not at all. I just use it because itās easier than firing up my WinXP box. (I donāt use Wine for regular applications, just games.)
@movq@www.uninformativ.de Must be a decode ago that I last used Wine. I wanted to play GTA2, but that didnāt go as planned.
pledge() and unveil() syscalls:
@movq@www.uninformativ.de That sounds great! (Well, they actually must have recorded the audio with a potato or so.) You talked about pledge(ā¦) and unveil(ā¦) before, right? I somewhere ran across them once before. Never tried them out, but these syscalls seem to be really useful. They also have the potential to make one really rethink about software architecture. I should probably give this a try and see how I can improve my own programs.
Speaking of Wine, Arch Linux completely fucked up Wine for me with the latest update.
- 16-bit support is gone.
- Performance of 3D games is horrible and unplayable.
Arch is shipping a WoW64 build now, which is not yet ready for prime time.
And then I realized that thereās actually only one stable Wine release per year but Arch has been shipping development releases all the time. Thatās quite unusual. Iām used to Arch only shipping stable packages ⦠huh.
Hopefully things will improve again. Iām not eager to build Wine from source. Iād rather ditch it and resort to my real Windows XP box for the little (retro)gaming that I do ⦠š«¤
@prologic@twtxt.net Ahhh, right, my bad, I could have easily found that. š¤¦
Thereās also a project page which lists some limitations of this study: https://www.media.mit.edu/projects/your-brain-on-chatgpt/overview/
It certainly sounds plausible. āUse it or lose it.ā
@movq@www.uninformativ.de I think itās here on MITās website: Your Brain on ChatGPT: Accumulation of Cognitive Debt when Using an AI Assistant for Essay Writing Task š¤
@prologic@twtxt.net But is there a source for it? Am I too stupid to use that site? š¤Ŗ
@kat@yarn.girlonthemoon.xyz uh, i use yandex mail which uses HTML by default
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.
@prologic@twtxt.net Iām trying to call some libc functions (because the Rust stdlib does not have an equivalent for getpeername(), for example, so I donāt have a choice), so I have to do some FFI stuff and deal with raw pointers and all that, which is very gnarly in Rust ā because youāre not supposed to do this. Things like that are trivial in C or even Assembler, but I have not yet understood what Rust does under the hood. How and when does it allocate or free memory ⦠is the pointer that I get even still valid by the time I do the libc call? Stuff like that.
I hope that I eventually learn this over time ⦠but I get slapped in the face at every step. Itās very frustrating and Iām always this š¤ close to giving up (only to try again a year later).
Oh, yeah, yeah, I guess I could ājustā use some 3rd party library for this. socket2 gets mentioned a lot in this context. But I donāt want to. I literally need one getpeername() call during the lifetime of my program, I donāt even do the socket(), bind(), listen(), accept() dance, I already have a fully functional file descriptor. Using a library for that is total overkill and Iād rather do it myself. (And look at the version number: 0.5.10. The library is 6 years old but theyāre still saying: āNah, weāre not 1.0 yet, we reserve the right to make breaking changes with every new release.ā So many Rust libs are still unstable ā¦)
⦠and I could go on and on and on ⦠š¤£
@movq@www.uninformativ.de make that 4 people! i use plain text when i can because this page convinced me lmfao
@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.
@lyse@lyse.isobeef.org ⦠because you, me, and that guy over there in the corner are the only three people left using plain-text email. 𫤠(And probably Stallman.)
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():
@bmallred@staystrong.run Ahhh this is an agent Iām tryining to play the game of Connect3. It uses a library written in Go Iāve been working on that supports Neuroevolution using Genetic Algorithms. Some features include: Mutation, Speciation, Lamarckian Evolution/Inheritence.
So I was using this function in Rust:
https://doc.rust-lang.org/std/path/struct.Path.html#method.display
Note the little 1.0.0 in the top right corner, which means that this function has been āstable since Rust version 1.0.0ā. Weāre at 1.87 now, so weāre good.
Then I compiled my program on OpenBSD with Rust 1.86, i.e. just one version behind, but well ahead of 1.0.0.
The compiler said that I was using an unstable library feature.
Turns out, that function internally uses this:
https://doc.rust-lang.org/std/ffi/struct.OsStr.html#method.display
And that is only available since Rust 1.87.
How was I supposed to know this? š¤Øš«©
@bender@twtxt.net I know I know! I donāt know why I ever signed up and used it and still continue to pay for the silly thing. Twtxt/Yarn is so much better in every way š¤£
@prologic@twtxt.net yes, I never understood you using micro.blog (and paying for it, nonetheless!). I donāt like it (as a platform), and have an unexplainable dislike for its creator.
@prologic@twtxt.net do you remember Hamachi? Tailscale/Headscale is Hamachi on steroids. They are used primarily for creating a VPN among all your devices so they can talk to one another as if they were on the same LAN, even when theyāre not. That was, mostly, my WireGuard usage.
I still have WireGuard runningābecause it is so lite that it doesnāt matterāto use as regular VPN, but Headscale keeps all my devices connected forming their own āmini-Internetā 100% of the time.
@bender@twtxt.net Whatās awesome about it btw? I use WireGuard pretty heavily here. And my entire family also use it to keep a VPN connection back to our home network
Iāve told that whomever has this link will be able to watch live the third and edition of āSecret Garden festivalā.
āWe bring you the delights of Scott Marshall Hurdy Gurdy, and Bristolās Dead Space Chamber Music, with a little Sieben to kick off proceedings. Come join us in the garden!ā
Starting now!
@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. š¤·
Lately (since there are AI summaries at the top), each time I Google for the answer to a question, the AI summary has at least a part of the answer wrong. It makes up laws that do not exist, books that were never published - in sum, well written sentences that make linguistic sense, but with made up content.
Let me repeat: each time. Maybe I only search for hard stuff, or fringe stuff, or this some other explanation - but seriously, itās hard to understand how isnāt Google ashamed of its AI overviews⦠or not sued under some regulation regarding fake news.
PS: yes, I know, my fault for using Google as a search engine.
@aelaraji@aelaraji.com got new screenies? Show them for the rest of us! Last I saw them was at the very early development stage.
@movq@www.uninformativ.de Thanks. Itās already over, the heat got us. :-(
Of Pointlessware and CEOs
Had a moment, to check up on some of the companies, I stopped following, get to The Browser Company and see their newest product - itās just Chrome, with an AI chat window pop-up and thatās it. Something Canary Chrome, come with already.
I see Theo from T3.gg, making fun of it on YouTube and promoting āhisā product - an AI chat app, where you can choose from multiple models, by all the popular AI companies. Something I already have a worse version of, at work and I donāt even use it.
Thereās also an interview, about the future of virtual keyboards, surely this is at least actually a real thing and not more pointless horse shit. I check the website of the keyboard SDK, and itās around 20 identical apps, that just copy the same keyboard SDK/api and slap chatgpt features on top - in the App Store, these are surrounded by chatgpt clones, that just feed the users prompts, into the real thing and put ads, next to the answers.
Will the majority of US citizens shelter Ukraine against russian aggression and occupation?
@kat@yarn.girlonthemoon.xyz toally forgiven, and welcome back! :-) Whatās new? Tell us all about it!
[$] Improving iov_iter
The iov_iter interface is used to
describe and iterate through buffers in the kernel. David Howells led a combined storage and
filesystem session at
the 2025 Linux Storage,
Filesystem, Memory Management, and BPF Summit (LSFMM+BPF) to discuss ways
to improve iov_iter. His topic\āØproposal listed a few different ideas including replacing some
iov_iter types and possibly allowing mixed types in chains of ⦠ā Read more