N3694: Functions with Data - Closures in C (A Comprehensive Proposal Overviewing Blocks, Nested Functions, and Lambdas)
Comments ⌘ Read more
How to write a complete GNOME application in Lua
This article is intended to be a comprehensive guide to writing your first GNOME app in Lua using LuaGObject. The article assumes that you already understand Lua and want to get started with building beautiful native applications for GNOME. I also assume you know how to use a command line to install and compile software. Having some knowledge of the C programming language, as well as the Make, Gettext, and Flatpak software will be hel … ⌘ Read more
UNIX99: UNIX for the TI-99/4A
I’ve been working on developing an operating system for the TI-99 for the last 18 months or so. I didn’t intend this—my original plan was to develop enough of the standard C libraries to help with writing cartridge-based and EA5 programs. But that trek led me quickly towards developing an OS. As Unix is by far my preferred OS, this OS is an approximation. Developing an OS within the resources available, particularly the RAM, has been challenging, but also surprisingly doab … ⌘ Read more
@itsericwoodward@itsericwoodward.com, hi there! Welcome to the twtverse! It seems you have a typo on your site address, an extra “c”.
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.
st tries not to redraw immediately after new data arrives:
https://git.suckless.org/st/file/x.c.html#l1984
The exact timings are configurable.
This is the PR that changed the timing in VTE recently (2023):
https://gitlab.gnome.org/GNOME/vte/-/issues/2678
There is a long discussion. It’s not a trivial problem, especially not in the context of GTK and multiple competing terminal widgets. st dodges all these issues (for various reasons).
We covered quite some ground in the two and a half hours today. The weather was nice, mostly cloudy and just 23°C. That’s also why we decided to take a longer tour. We saw four deer in the wild, three of which I managed to just ban on film, quality could be better, though. My camera produced a hell lot of defocused photos this time. Not sure what’s going on with the autofocus. https://lyse.isobeef.org/waldspaziergang-2025-07-10/
When the sun came out, colors were just beautiful:

Just realized: One of the reasons why I don’t like “flat UIs” is that they look broken to me. Like the program has a bug, missing pixmaps or whatever.
Take this for example:
https://movq.de/v/8822afccf0/a.png
I’m talking about this area specifically:
https://movq.de/v/8822afccf0/a%2Dhigh.png
One UI element ends and the other one begins – no “transition” between them.
The style of old UIs like these two is deeply ingrained into my brain:
https://movq.de/v/8822afccf0/b.png
https://movq.de/v/8822afccf0/c.png
When all these little elements (borders, handles, even just simple lines, …) are no longer present, then the program looks buggy and broken to me. And I’m not sure if I’ll ever be able to un-learn that.
It annoys me when I clone a git repository A in order to build and self-host some software, only to realize later that I also needed to clone repos B, C and D. I’m not saying that’s a bad thing–logical separation of code between, say, a client and a server is very handy–but some projects do not communicate very well when you need multiple tools to get it running independently.
@prologic@twtxt.net … or just bullshit.
I’m Alex, COO at ColdIQ. Built a $4.5M ARR business in under 2 years.
Some “C-level” guy telling people what to do, yeah, I have my doubts.
@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 … 🤣
Nothing makes you feel better than mowing a wet lawn, while rain falls, under 33°C temperature, with 80% humidity. I loved every step I took!
New oil and gas fields incompatible with Paris climate goals
Opening any new North Sea oil and gas fields is incompatible with achieving the Paris Climate Agreement goals of limiting warming to 1.5°C or holding warming to “well below 2°C” relative to preindustrial levels, finds a new report published by UCL academics. ⌘ Read more
Having some fun with SIRDS this morning.
What you should see: https://movq.de/v/dae785e733/disp.png
And the tutorial I used for my C program: https://www.ime.usp.br/~otuyama/stereogram/basic/index.html
Genode OS Framework 25.05 released
It’s been 9 years since we disrupted Genode’s API. Back then, we changed the execution model of components, consistently applied the dependency-injection pattern to shun global side effects, and largely removed C-isms like format strings and pointers. These changes ultimately paved the ground for sophisticated systems like Sculpt OS. Since then, we identified several potential areas for further safety improvements, unlocked by the evolution of the C++ core langu … ⌘ Read more
10biForthOS: a full 8086 OS in 46 bytes
An incredibly primitive operating system, with just two instructions: compile (1) and execute (0). It is heavily inspired by Frank Sergeant 3-Instruction Forth and is a strip down exercise following up SectorForth, SectorLisp, SectorC (the C compiler used here) and milliForth. Here is the full OS code in 46 bytes of 8086 assembly opcodes. ↫ 10biForthOS sourcehut page Yes, the entire operating system easily fits right here, inside an OSNews quote block: … ⌘ Read more
One of the nicest things about Go is the language itself, comparing Go to other popular languages in terms of the complexity to learn to be proficient in:
- Go:
25keywords (Stack Overflow); CSP-style concurrency (goroutines & channels)
- Python 2:
30keywords (TutorialsPoint); GIL-bound threads & multiprocessing (Wikipedia)
- Python 3:
35keywords (Initial Commit); GIL-bound threads,asyncio& multiprocessing (Wikipedia, DEV Community)
- Java:
50keywords (Stack Overflow); threads +java.util.concurrent(Wikipedia)
- C++:
82keywords (Stack Overflow);std::thread, atomics & futures (en.cppreference.com)
- JavaScript:
38keywords (Stack Overflow); single-threaded event loop &async/await, Web Workers (Wikipedia)
- Ruby:
42keywords (Stack Overflow); GIL-bound threads (MRI), fibers & processes (Wikipedia)
@bender@twtxt.net Here’s a short-list:
- Simple, minimal syntax—master the core in hours, not months.
- CSP-style concurrency (goroutines & channels)—safe, scalable parallelism.
- Blazing-fast compiler & single-binary deploys—zero runtime dependencies.
- Rich stdlib & built-in tooling (gofmt, go test, modules).
- No heavy frameworks or hidden magic—unlike Java/C++/Python overhead.
Render a Guitar Pro score in real time on Linux
Tuxguitar is a quite powerful application written in a mixture of Java / C. It is able to render a score in real time either via Fluidsynth or via pure MIDI. The development of Tuxguitar started in 2008 on Sourceforce and after a halt in 2022, the project restarted on Github and is still actively developed. The goal of this article is to try to render a score via Tuxguitar, and various other applications connected to Tuxguitar, via Jack … ⌘ Read more
Zum Entsetzen aller Beteiligten, wie auch umstehender Personen und einiger schamfreier Gaffer, welche sich an jenem tosenden Unheil zu ergötzen vermochten, folgte nun des Wochensortiments schrecklichste Geißel: 𝕯𝖊𝖗 𝕸𝖔𝖓𝖙𝖆𝖌.
Und es sollten sich die Wolken teilen, um über ihnen nimmer endende Irrungen und Wirrungen an bovinem Fäkal und fremdgetriebener Lethargie zu erbrechen, auf dass sie zu erkennen gezwungen wären, welche Urkraft der irrealen Zusammenkunft letztlich Herrschaft über sie darstellen sollte: 𝕯𝖆𝖘 𝕭𝖎𝖑𝖉𝖙𝖊𝖑𝖊𝖋𝖔𝖓.
So zogen sie alsbald hin, zu tun wie ihnen geheißen, wohlgleich sie – diesem Schauerspiel trotzend – Trost suchten im einzigen ihnen sicher geglaubten Elixir, das dem Abgrund unter ihnen gleichend tiefschwarz glitzernd Erlösung oder mithin als Mindestmaß Linderung versprach, lag jenes doch in unmittelbarer Nähe befindlich hoffnungsschürend bereit:
K̸͓͙͖̥͗͛ä̷̯̼̤͔̈́f̵̧̿̋͒̈f̷̫̝̖̾̓c̸̛͔̀ḣ̶̳͋̓͊ë̷̫̟́͜͝͝n̵̨̳̬̒?̴̩̈́̄ ☕
5 Linux Commands You’ve Probably Never Heard Of
In this article, I will show you five Linux commands you’ve probably never heard of. They’re simple, practical, and designed to make your…
[Continue reading on InfoSec Write-ups »](https://infosecwriteups.c … ⌘ Read more
Firefox moves to GitHub
Context from reddit:
https://groups.google.com/a/mozilla.org/g/firefox-dev/c/QnfydsDj48o/m/8WadV0_dBQAJ
They made the decision to move from hg.mozilla.org to GitHub last year. They are in the final legs of that migration.
Using C++ type aliasing to avoid the ODR problem with conditional compilation, part 1
Comments ⌘ Read more
So, we’re at roughly 30°C now and my brain is in lala land. 🥵☹️
An i386 Hobby sperating system with graphics, multitasking, networking and an i386 C compiler
Comments ⌘ Read more
Trinity Desktop Environment R14.1.4 released
The Trinity Desktop Environment, the modern-day continuation of the KDE 3.x series, has released version R14.1.4. This maintenance release brings new vector wallpapers and colour schemes, support for Unicode surrogate characters and planes above zero (for emoji, among other things), tabs in kpdf, transparency and other new visual effects for Dekorator, and much more. TDE R14.1.4 is already available for a variety of Linux distributions, and c … ⌘ Read more
RetrOS-32: a 32bit hobby operating system with graphics, multitasking, and more
RetrOS-32 is a 32bit operating system written from scratch, with graphics, multitasking and networking capabilities. The kernel is written in C and assembly, while the userspace applications are written in C++, using Make for compilation, all licensed under the MIT license. It runs on Qemu, of course, but a variety of real hardware is also supported, which is pretty cool and r … ⌘ Read more