The Wiert Corner – irregular stream of stuff

Jeroen W. Pluimers on .NET, C#, Delphi, databases, and personal interests

  • My badges

  • Twitter Updates

  • My Flickr Stream

  • Pages

  • All categories

  • Enter your email address to subscribe to this blog and receive notifications of new posts by email.

    Join 1,835 other subscribers

Archive for the ‘C’ Category

memory spy by b0rk (Julia Evans): visualise how C how variables are represented in memory

Posted by jpluimers on 2026/08/06

[Wayback/Archive] memory spy

It is universal for most other programming languages too as explained in [Wayback/Archive] New playground: memory spy

why is it useful to look at C?

You might be wondering – I don’t write C! Why should I care how C programs represent variables in memory?
In this playground I’m mostly interested in showing people how integers and floats are represented. And low-level languages generally all represent integers and floats in the same way – a 32-bit unsigned int is going to be the same in C, C++, Rust, Go, Swift, etc. The exact name of the type is different, but the representation is the same.
In higher-level languages like Python it’s a little different, but under the hood a float in Python contains a C double, so the C representation is still pretty relevant.

Via

Read the rest of this entry »

Posted in C, Conference Topics, Conferences, Development, Event, Software Development | Leave a Comment »

Windows XP activation algorithm cracked, keygen updated • The Register

Posted by jpluimers on 2026/08/05

20260805: edits as since scheduling, some links suffered link rot and a new tool appeared.

For my link archive because – for offline usage – sometimes Windows XP is still useful to run tools that have never been made compatible with less ancient hardware/software combinations.

The xp_activate32.exe mentioned below emulates the phone-activation response and is the important bit for me as I can re-use existing Windows XP license keys that I already have.

The WindowsXPKg generates new Windows XP license keys.

Read the rest of this entry »

Posted in C, C++, Development, Power User, Software Development, Windows, Windows Development, Windows XP | Leave a Comment »

UNIX V4 tape successfully recovered

Posted by jpluimers on 2026/08/04

I forgot to schedule this post, but it was great news: a 50+ year old Unix V4 tape that was discovered in November 25 and digitally restored in December 25.

This was a big step forward in restoring the History of Unix.

There was a lot of coverage, but I think this thread was was the coolest part. It starts at [Wayback/Archive] Rob Ricci: “While cleaning a storage room,…” – discuss.systems.

An archive of the tape is now at for instance UNIX V4 tape from University of Utah (raw) : Computer History Museum : Free Download, Borrow, and Streaming : Internet Archive.

Not just the tape was found back, also the 1974 letter accompanying it: Letter to Martin Newell on UNIX delivery to University of Utah : Ken Thompson : Free Download, Borrow, and Streaming : Internet Archive.

If you want to play around with it yourself, then try [Wayback/Archive] UNIX v4 (1973) – Vintage Terminals (which I found through the thread I mentioned above).

Two of the many articles that covered the recovery (pun intended):

Read the rest of this entry »

Posted in Software Development, Development, Power User, History, *nix, C, Retrocomputing, Unix | Leave a Comment »

Why octal is important (via @jpluimers on Twitter: “@b0rk @jilles_com Acids vs bases.”)

Posted by jpluimers on 2026/03/03

A few years back I tweeted [Wayback/Archive] Jeroen Wiert Pluimers @wiert@mastodon.social on Twitter: “@b0rk @jilles_com Acids vs bases.”

Ph scale of acids vs bases.

It was a kind of tongue-in-cheek reaction (with a way better picture below) to a very valuable post by b0rk (Julia Evans) on both Twitter and Mastodon [Wayback/Archive] Julia Evans on Twitter: “bases” / [Wayback/Archive] Julia Evans: “bases title: bases # we usually…” – Mastodon for two reasons:

  1. There are various interpretations of bases
  2. Octal is very important to educate as errors introduced by its support are hard to spot even if you do know about octal.

Back to Julia’s post:

Read the rest of this entry »

Posted in *nix, *nix-tools, 68k, 8086, Assembly Language, bash, bash, C, C++, Chemistry, Conference Topics, Conferences, Development, EPS/PostScript, Event, Haskell, History, Java, Java Platform, JavaScript/ECMAScript, Jon Skeet, LifeHacker, Mathematics, PDP-11, Perl, PHP, Power User, Python, science, Scripting, Software Development, x86 | Leave a Comment »

25 years ago, around this period, the InterBase 6 / Firebird 1 prerelease gaping security hole was detected: a user politically with password correct would gain database access

Posted by jpluimers on 2025/12/24

Before Firebird version 1.0 got released, a gaping security hole that InterBase introduced in 1994 before InterBase 6.0 (mostly written in C) got open sourced in 2000 was detected by the team that frantically tried the Firebird fork to first get building on various platforms, then released.

It had a maximum CVSS score of 10.0 because it could access the security database in read/write mode, thereby allowing adding users with SYSDBA privileges.

The detection is now about 25 years ago; on 20260109 the publication (by IBPhoenix) of the bug will be 25 years ago too.

So below are some links, including the original InterBase 6 source which was hard to find as the attachments of the original release links had not been archived in the Wayback Machine.

But first some of the code parts, which also shows the source file I did find back:

Read the rest of this entry »

Posted in C, Database Development, Development, Firebird, History, InterBase, Software Development | Tagged: | Leave a Comment »

Is this the ultimate XKCD “Dependency” derivative?

Posted by jpluimers on 2025/11/29

xkcd modern digital infrastructure torn down by a satisfied looking cat

Besides the August 2025 XKCD infrastructure dependency inspired cartoon on the right, the more recent and great [Wayback/Archive] XCKD: Dependency derivative below is a monumental piece as it combines the recent:

  • fiber outage of the Internet Archive
  • DoS of Cloudflare by itself
  • AWS us-east-1 dependencies outage
  • Crowdstrike DoS of Windows machines
  • framework-du-jour mentality in the JavaScript world
  • many more¹

Image [Wayback/Archive] 36247840bf294a9d.png (1080×1389) from [Wayback/Archive] xyla 🐀🪇: “someone pls alt text this shit…” – buy shitpost cheap:

Read the rest of this entry »

Posted in *nix, Amazon.com/.de/.fr/.uk/..., AWS Amazon Web Services, C, CDN (Content Delivery Network), Cloud, Cloudflare, cURL, Development, Fun, Hardware, Infrastructure, ISP, JavaScript/ECMAScript, Network-and-equipment, Node.js, npm, Power User, Rust, Scripting, Software Development, Web Development | Tagged: , | Leave a Comment »

When compiler optimisations cause memcpy undefined behaviour: Fix a crash trying to save an empty AudioStream by hpvb · Pull Request #100422 · godotengine/godot · GitHub

Posted by jpluimers on 2025/11/25

The libc C standard library memcpy function is very fast, but because of that also very dumb and with a list of circumstances where its behaviour is undefined (a great opportunity to introduce vulnerabilities in your code). The specs of those are in [Wayback/Archive] memcpy, memcpy_s – cppreference.com, including:

The behavior is undefined if either dest or src is an invalid or null pointer.

With C compilers becoming smarter and smarter, their optimisations can hide the fact that you call memcpy with parameters causing undefined behaviour.

This is a nice example of that: [Wayback/Archive] Fix a crash trying to save an empty AudioStream by hpvb · Pull Request #100422 · godotengine/godot · GitHub

The change is relatively simple, but hardly shows why the change is there. Only one line got changed in [Wayback/Archive] Fix a crash trying to save an empty AudioStream by hpvb · Pull Request #100422 · godotengine/godot · GitHub

Read the rest of this entry »

Posted in C, Development, Software Development | Tagged: , , | Leave a Comment »

GitHub – RfidResearchGroup/ChameleonUltra: The new generation chameleon based on NRF52840 makes the performance of card emulation more stable. And gave the chameleon the ability to read, write, and decrypt cards.

Posted by jpluimers on 2025/11/18

[WaybackSave/Archive] GitHub – RfidResearchGroup/ChameleonUltra: The new generation chameleon based on NRF52840 makes the performance of card emulation more stable. And gave the chameleon the ability to read, write, and decrypt cards.

Via: [Wayback/Archive] Angry Nerds 260 – Opladen voor WHY2025 – YouTube

Related: [Wayback/Archive] ChameleonUltra NFC/RFID Reader/Writer/Simulator from Dim6 Tech on Tindie

It is also available from various Asian sites.

Query: [Wayback/Archive] chameleon nfc reader writer at DuckDuckGo

Way more lightweight than Flipper Zero (less chance of getting it confiscated at border controls as well) but also less powerful/flexible.

--jeroen

Posted in C, Development, Hardware Development, Software Development | Leave a Comment »

Rudimentary DaynaPORT packet driver to use WiFi from DOS using BlueSCSI: GitHub – cml37/daynaport-dos-packet-driver

Posted by jpluimers on 2025/10/08

Despite beta or early alpha quality [Wayback/Archive] GitHub – cml37/daynaport-dos-packet-driver by by [Wayback/Archive] RetroTech Chris – YouTube is very cool.

Main source: [Wayback/Archive] daynaport-dos-packet-driver/src/dayna.c at main · cml37/daynaport-dos-packet-driver · GitHub

Related:

Read the rest of this entry »

Posted in C, Development, Hardware Development, Hardware Interfacing, MS-DOS, Network-and-equipment, SCSI, Software Development, TSR Terminate and Stay Resitent, Turbo C | Leave a Comment »

What Every Programmer Should Know about How CPUs Work • Matt Godbolt • GOTO 2024 – YouTube

Posted by jpluimers on 2025/09/10

[Wayback/Archive] What Every Programmer Should Know about How CPUs Work • Matt Godbolt • GOTO 2024 – YouTube

Main takeaways for me:

  • CPU pipelines have grown a lot longer than I was aware off
  • there are many more internal registers than I was anticipating
  • clever ways to convert if statements to non-jumps

--jeroen

Posted in .NET, Assembly Language, C, C#, C++, Delphi, Development, Python, Scripting, Software Development | Leave a Comment »