20 ans !
Eh oui, cela fait 20 ans déjà ! C’est en septembre 2005 que ce blog vit le jour, recueil de notes et de remarques sur une actualité déjà assez liberticide à l’époque. Petit-à-petit, les notes sont devenues plus longues, les billets plus construits, illustrés, puis relayés au fil des années par différents supports numériques. De quelques […] ⌘ Read more
@itsericwoodward@itsericwoodward.com, hi there! Welcome to the twtverse! It seems you have a typo on your site address, an extra “c”.
L’autre pause estivale
Oui, vous avez correctement lu le titre : c’est à nouveau une pause pour ce blog, qui ne verra donc pas de nouveaux articles avant mi-septembre. Bien évidemment, chers lecteurs, chères lectrices, chers bots d’IA, je compte sur les plus forts d’entre vous pour alimenter la section « commentaires » afin de faire tenir les moins solides, ceux […] ⌘ Read more
Panique : la BCE improvise de plus en plus son euro numérique
La presse française étant ce qu’elle est (c’est à dire aussi subventionnée que médiocre), ce que Trump a réalisé en matière de cryptomonnaies est bien évidemment passé à peu près inaperçu de ce côté-ci de l’Atlantique. Pourtant, la Banque Centrale Européenne vient d’en faire récemment les frais… Pour comprendre ce qui se passe, il faut […] ⌘ Read more
Video: C Programming on System 6 - VCFMW, CMaster ⌘ Read more
37C3 and New Year’s Eve 2023
Another one from the vaults. The 37C3 conference took place in
December, 2023. This report was mostly written in January, 2024.
Mostly finished it at night in my cottage between 28 and 29th
December, then edited and added some stuff in July, 2025. So… Only
1.5 years late?
It was a little ironic, and a little sad, that I was finishing the
37C3 report during 38C3. I didn’t manage to get any tickets for me and
#3 for 38C3 and had to make do with watching the stream.
The links to the talks go to [C … ⌘ Read more
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.
Music discovery made easy
With the YouTube Music web player, you get new releases, covers, and hard-to-find songs
Nginx 正式擁抱現代 JavaScript!
說起 Nginx,大多數人的印象的可能是:高性能、穩定、省資源、配置簡單。確實,這個用 C 語言寫出來的服務器工具,十幾年來一直在互聯網基礎設施中扮演着 “守門員” 的角色。但話說回來,Nginx 雖然快,但 “太靜態” 也是它的一個老問題。隨着前後端分離、邊緣計算、接口鑑權、灰度路由等需求變多,越來越多開發者發現,僅靠傳統的配置語法已經不夠用了。我們需要在轉發請求前 “想一想”、攔截一下、判斷一 ⌘ Read more
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:

Løsningen? At flytte repo’et helt op i C:/, OG omnavngive alle de mapper jeg kan styre til enkelt-bogstavs-navne.
Ahh… nu virker det.
🤦♂️ 🤦♂️ ⌘ Read more
Løsningen? At flytte mit repo helt op i C:/. Hov, det var faktisk ikke nok. Stien er stadig over 260 bytes…
🤦♂️ ⌘ Read more
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:

I’m talking about this area specifically:

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:


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: 
And the tutorial I used for my C program: https://www.ime.usp.br/~otuyama/stereogram/basic/index.html
La France au pied du mur
Le constat, posé il y a quelques jours, ne peut plus être évité : si la France n’est pas encore en faillite, c’est pour des raisons purement psychologiques, mais concrètement tout le monde sait que le moindre frisson sur les marchés pourrait emporter l’Hexagone dans un ouragan financier qui emporterait la République avec lui. Ce n’est […] ⌘ Read more
glibc 堆內存管理:原理、機制與實戰
在內存管理領域,glibc(GNU C Library)通過 brk 和 mmap 兩大系統調用,構建了一套高效的堆內存管理機制。這種設計大幅減少了系統調用的頻次,顯著提升內存利用率。在 glibc 的管理架構中,堆內存以層級化的方式組織,包含分配區(Arena)、堆(Heap)和內存塊(Chunk)。其中,主 Arena 依賴 brk 系統調用實現內存分配,而子 Arena 則通過 mmap 完 ⌘ Read more
分佈式事務的解決方案—Seata TCC 模式
在分佈式事務解決方案中有 Seata AT 模式,但是 AT 模式要求是關係型數據庫(因爲 undolog 表需要和業務保持原子性),此時如果事務中存在非關係型數據庫(如 Redis、ES 等),那麼 AT 模式就無法滿足要求了,如下圖所示: 此時我們就需要 Seata TCC 模式來幫助我們解決這種場景下的分佈式事務問題。1、認識 Seata TCC 模式 TCC(Try-C ⌘ Read more
Le pouvoir a cyniquement choisi le laxisme
« Champion, mon frère », c’est avec cette interjection colloquiale que Macron a salué la victoire du PSG en Ligue des Champions dans la nuit de samedi à dimanche, au moment même où plusieurs quartiers de la capitale subissaient les assauts de hordes violentes que les forces de l’ordre peinaient franchement à juguler. Finalement, tout s’est déroulé […] ⌘ Read more
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
En finir avec l’argent liquide, vraiment ?
Tout le monde sait que l’insécurité est provoquée par le trafic de drogue. Mais si, c’est évident ! Dès lors, à ce constat indiscutable, on peut proposer des solutions à la fois simples, rapides et tout à fait à portée du premier politicien qui passe par là, n’importe quel clown fera l’affaire. Tenez, prenons Dardmalin, il […] ⌘ 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.
PEP 793: PyModExport: A new entry point for C extension modules
In this PEP, we propose a new entry point for C extension modules, by which one can define a module using an array of PyModuleDef_Slot structures without an enclosing PyModuleDef structure. This allows extension authors to avoid using a statically allocated PyObject, lifting the most common obstacle to making one compiled library file usable with both regular and free-threaded builds of CPython. ⌘ Read more
Flutter 與 Rust 跨界聯手:打造跨平臺開發新紀元
使用 Rust 與 Flutter 的理由假設我們需要獲取當前設備的電池電量。如果沒有任何插件提供這種功能,那就必須解決兩個問題:如何在本地代碼和 Flutter 之間傳輸數據,以及如何處理不同平臺的特定語言(如 C++/Kotlin/Swift 等)。數據傳輸挑戰——在 Flutter 應用和本地代碼之間傳輸大量數據時,創建綁定以實現在兩者間的數據交換是必要的。這個過程涉及到大量的樣板代 ⌘ Read more
Deals: iPad mini 7 for $399
iPad mini 7 is a powerful miniature tablet that features the A17 processor with Apple Intelligence support, 8″ LCD display, a 12mp front and rear camera, 128 GB storage, USB-C charging, and support for optional Apple Pencil Pro. iPad mini is offered in multiple color options at this 20% discount price, taking $100 off the … Read More ⌘ Read more
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