The Winners Of The 2025 Obfuscated C Code Contest

One of the most exciting challenges available to any software developer is that of writing brilliantly working code that’s so obtuse, so indecipherable, and opaque, that even its own author would struggle to grasp its inner workings after returning to it a year later. While for some this is just how they naturally write code, for others it’s part of the International Obfuscated C Coding Challenge (IOCCC), with 2025’s entrants once again showing their mettle.

The IOCCC judges entries among a range of categories, as it can be hard to otherwise quantify what is the ‘best’ entry, with ground rules limiting what the entry can entail. Generally as long as your code adheres to the C11 standard with a source size of 4,993 bytes or less and final binary size of under 2,503, is accompanied by a GNU-style Makefile and doesn’t turn a judge’s computer into a raging inferno — it should qualify.

Among the winning entries we got fun ones like ‘Most likely to shock’ by [Yusuke Endoh] which generates a Lichtenberg figure in ASCII in the terminal. There are also quite practical ones, such as the ‘Best real emulator’ winner by [Nick Craig-Wood], whose entry is a functional Game Boy emulator. Although not full-featured, it can play a range of real GB ROMs, just do not expect to get any sounds or fancy terminal-based graphics.

Automatic Tutorial Generator Is Perhaps The Best-Case For Vibe Coding

Quick question: how did you learn to code? It probably wasn’t bribing someone a year or two ahead of you in CS to finish all your homework, but that’s exactly what ‘vibe coders’ are doing — even in class. Odds are, you learned by working through exercises, following tutorials, and doing it yourself. Finding good tutorials isn’t getting any easier in the age of LLMs, and that’s where [Deven Jarvis]’s Lathe comes in: it’s a project to get an LLM to make the tutorial for you. Instead of doing the work for you, it gets the clanker to show you how to do it yourself.

Everyone’s different, so this may not apply to you, but it’s a journey/destination sort of problem. Some people just want a piece of software, and they can vibe code until the oceans dry up and will have no interest in this project. Other people take great joy in learning how to do things; [Deven] is one of those. A good tutorial is a great way to learn, since it artificially softens the learning curve compared to just jumping into a project with a man page or a datasheet.

Of course you’re still faced with the hallucination problem, something [Deven] admits in his excellent write-up. As he points out, the advantage is that you can call whatever model you plug into Lathe on its BS, and try and get a correct answer. Try that on Reddit, or most other places online. Sure, the tutorials aren’t going to match the best human-generated content, and [Deven] admits that. He’s using it for topics (like slicer design) that don’t have easy tutorials online — and sadly, his prediction that nobody is going to bother making good learning resources like they used to when they’ll just be scraped by LLMs is very likely true. It’s not that your options are vibe code or vibe-generated tutorial, but if that’s the direction the world is going, we’ll take the tutorial, thanks.

Getting the LLM to hold your hand through a tutorial might not appeal to the most Butlerian among us, but it’s a big step from that to the full cognitive surrender some people worry about.

Powering Up A Pluggable Module From The 1948 IBM 604 Electronic Calculator

In that awkward transition phase between electromechanical accounting systems used in the 1940s and the introduction of fully digital computers we find systems such as the IBM 604 Electronic Calculator, advertised for accounting, calculating and engineering tasks. While not capable of complex instructions, loops and other advanced features, it did use an interesting modular architecture with easily swappable modules containing a vacuum tube and associated components. Recently [Ken Shirriff] took a poke at one of these and even powered it up.

This kind of pluggable system would become a staple of computer systems, as they enabled the use of modules or cards with specific functions that could be swapped and combined at will to increase system flexibility, lower costs and make repairs a snap. For the IBM 604 a total of about 1250 vacuum tubes were used, apparently all of which were found on these pluggable modules.

The module that [Ken] got his hands on has a thyratron tube, which is effectively a high current switch and rectifier. In the short demonstration video you can see it being used to switch a lamp on and off, with further details explained in the article.

Despite being rather limited in its functionality and limited by the punch card input and output speed, the IBM 604 was still a smashing commercial success with over 5600 units produced. A transistorized prototype version with 2200 transistors and 95% less power usage was created in 1954 that formed the basis for the IBM 608, the world’s first commercial all-transistorized calculator.

The 608 didn’t last too long, however, as at that point the breakneck pace of semiconductor technology meant that any newly released product was already obsolete by the time it hit the market. Despite this, fundamentals like pluggable modules would keep showing up over and over, ranging from the 1950s Bendix G-15 to even modern day systems, including PCs with pluggable RAM and expansion cards as well as mainframes where hot swapping of even entire CPU modules is just another feature.

Continue reading “Powering Up A Pluggable Module From The 1948 IBM 604 Electronic Calculator”

Discovery Of An Active Wind From The Milky Way’s Central Black Hole

One of the fun aspects of astrophysics is that much of it involves phenomena which you cannot exactly study from up close, with the supermassive black hole (SMBH) at the center of this galaxy – called Sagittarius A* (Sgr A) – being a great example. Although it’s been predicted since 1971 that black holes like Sgr A radiate energy which then pushes away nearby matter to create something akin to solar wind, this had so far not been proven. Now astronomers have discovered evidence for this emanating from Sgr A*.

Using five years worth of observations made with the Atacama Large Millimeter/Submillimeter Array (ALMA) and correlating it with other observations, a Southern Lobe of movement was identified, along with evidence for a Northern Lobe. Unlike a star where you are dealing with relatively massive quantities of matter being hurled into space, in the case of a very quiet SMBH like Sqr A* you are talking about occasional small wisps of gas of which a fraction gets turned into the radiation that then exerts pressure on the remaining gas.

It is speculated to be exactly this quiescent nature of Sgr A* that makes it so difficult to find evidence of SMBH wind, though one could also argue that having a well-fed SMBH whose event horizon rapidly expands would be fascinating from an astrophysics perspective, but less exciting for any nearby inhabited planets.

Pico-Driven Ultrasound Enables Scaled Acoustic Model Of Home Stereo

There are plenty of ways to get sound into your house: good old fashioned headphones, the Dolby surround setup we all lusted after back in the day, or the 21st century’s ubiquitous soundbar, with its ‘spatial audio’ magic. Which will work in your space? If you were an audio engineer, you’d set up listening area and use a microphone to map the space– but that would be thousands of points and sounds like tedium. [PlasmatronX] had a better idea: use Schlieren imaging to see the sound waves as the travel through the space. Schlieren imaging has trouble with audio frequencies, though, and imaging the entire living room was going to be difficult. So he scaled it all down– including the sound waves, by shifting to ultrasonic frequencies.

He’s using the usual mirror-and-razor Schlieren setup with an 8″ telescope mirror– and if you don’t know what that is, we did a deep dive on this kind of optical flow visualizer a while back. Inside the circular imaging area where that lets him see density changes, he’s set up what he calls a CAT– Computer Acoustic Tomography– array. It’s a rig on a turntable he can set up ultrasonic transducers on, to match the various speaker setups he wants to test, and turn so he can see from all angles what the scaled-down waves are doing. To capture those waves, which aren’t going to be standing still, he adds a stroboscope. All the ultrasound signals are being generated by a Pi Pico, and are scaled 4:1 in the frequency domain– that is, a high 10kHz whine becomes inaudible 40kHz. Those signals are fed through a DIY 8-channel amp into both ultrasonic transducers and larger ‘cat-repellent speakers’ from AliExpress.

The microcontroller is actually a Pico 2W, which is using its “W” to communicate via Bluetooth with a Pi 4. That SBC is running the camera, the stepper for the turntable, and image processing, along with the timing for the audio signals. After that it’s a matter of setting up a scaled down 7.1 surround setup and itty-bity soundbar, and test it on a (stuffed) guinea pig. Obviously you can see a big difference between the steered beams from the tiny soundbar and the true surround, but how that translates to listening pleasure will be at least somewhat subjective.

What’s less subjective is the obvious effect soft furnishings add to the simulation. Now he doesn’t take the time to find a material that will scale the frequency response of a set of curtains, but we’re not sure how much that matters. At 5kHz or 20kHz, they’re going to deaden sound, and you can see that here, and you can see it’s a much bigger deal for the shaped beams of the soundbar than it is for surround sound. In the end, [PlasmatronX] decides to stick to headphones, but the whole video is very much worth watching, so we’ve embeddded it below. If you want to try it yourself he’s put his code on GitHub.

Thanks to [PlasmatronX] for the tip!

Continue reading “Pico-Driven Ultrasound Enables Scaled Acoustic Model Of Home Stereo”

Server racks branded with Internet Archive

News Sites Are Blocking Internet Archive Over AI Scraping Fears

Especially in this era of the Internet, the role of the Internet Archive’s Wayback Machine has become increasingly essential as more and more web content vanishes into the ether or is surreptitiously altered to hide salient details. More recently a new worry has seemingly cropped up in the form of scraping of data for so-called AI systems, or at least that’s part of the excuses being offered for blocking the Wayback Machine’s web crawlers, with [Andrew Deck] and [Hanaa’ Tameez] of [Nieman Lab] detailing the impact and reasons provided.

Some news outlets like The Baltimore Banner insist that they’re only blocking the Wayback Machine crawlers because they are worried that LLM chatbots would otherwise ‘improperly cite’ the source of content, while outlets like The Atlantic have put a blanket anti-scraping policy in place. Meanwhile news outlets are generally happy to let paid commercial news archiving outlets like ProQuest and LexisNexis index their content, showing a potential financial incentive.

Whatever the reasons, the direct effect is that as content is modified or vanishes during for example a system migration, buy-out or bankruptcy, researchers who rely on the Wayback Machine are pretty much forced to rely on paid offerings by ProQuest and kin, without the pure archiving focus and free access to information. It will also leave big holes in what the Wayback Machine can cover in its archives, with news especially becoming very spotty.

Incidentally there’s an ongoing petition over at SaveTheArchive.com which people can sign.

Three brown pancakes are sitting in a frying pan.

Optimizing Pancakes From Chemical Principles

Although parents and teachers like to point out the deep link between cooking and chemistry, most people don’t deliberately apply any chemical principles beyond acid/base reactions to their recipes. Not so [Ben Kazez]: he’s written a thorough exploration of the chemical journey to the perfect pancake, and made a calculator for others to use with their own ingredients.

The goal is to optimize the pancakes along four dimensions: interior texture (light and smooth), a tangy flavour, rise, and a crisp, brown exterior layer. The tang comes from residual acids, and since lactic acid produces the best taste, dairy-based acid sources (such as Greek yoghurt or buttermilk) are preferable. Acids also react with baking soda to release carbon dioxide, making them a part of one of the four rising agents. The other three are carbon dioxide released when double-acting baking powder is heated, steam released from the batter, and air bubbles stabilized by egg white foam.

Dairy products, besides contributing acid, also provide a protein structure to keep the interior smooth. In a normal wheat-heavy pancake, two proteins (glutenin and gliadin) interact to form tough strands of gluten. Fats bind to hydrophobic amino acids in these proteins and shorten the gluten chains, hence the name shortening. Adding ricotta cheese also replaces some of this gluten network with a smoother structure of previously-denatured dairy proteins. Dairy products also contribute to the Maillard reaction between reducing sugars (such as lactose, glucose, and fructose) and amino acids, which causes the browning of the pancake’s surface. Besides being brown, the surface should be crisp; since amylose, found in corn starch, forms a brittle, glassy, crackly network when dehydrated, corn starch was added.

The result is a set of chemical equations which can be tuned to create perfect pancakes, combined in the calculator. This summary doesn’t do justice to the depth of the research here; [Ben] also investigated optimal batter resting times, fermentation, cooking fats, cooking surfaces, and spatula properties. If all this has you interested in more about dairy proteins, check out our article on cheesemaking.

Featured image: “Buttermilk pancakes from a recipe by Darina Allen” by [Didym].