A black circuit board with many colored banana connector plugs in placed on a table. Behind it, two analogue voltage dials stand on either side of an oscilloscope stand. The oscilloscope is a cheap model, with a small LCD display and an exposed red circuit board.

Building An Analogue Computer To Simulate Neurons

The rapidly-improving speed and versatility of digital computers has mostly driven analogue computers out of use in modern systems, as has the relative difficulty of programming an analogue computer. There is a kind of art, though, in weaving together a series of op-amps to perform mathematical calculations; between this, a historical interest in the machines, and their rarity value, it’s no wonder that new analogue computers are being designed even now, such as [Markus Bindhammer]’s system.

The computer is built around a combined circuit board and patch panel, based on the designs included in three papers in a online library of analogue computer references. The housing around the patch panel took design cues from the Polish AKAT-1 analogue computer, including the two dial voltage indicators and an oscilloscope display, in this case an inexpensive DSO-138. The patch panel uses banana connectors and the jumper wires use stackable connectors, so several wires can be connected to the same socket.

The computer itself has a summing amplifier circuit, a multiplier circuit, an integrator, and square, triangle, and sine wave generators. This simple set of tools is enough to simulate both simple and complex math; for example, [Markus] squared five volts with the multiplier, resulting in 2.5 volts (the multiplier divides the result by ten). A more advanced example is a leaky-integrator model of a neuron, which simulates a differential equation.

We’ve covered a few analogue computers before, as well as a neuron-simulating circuit similar to [Markus]’s demonstration.

A circuit board card is shown, with a blue panel on one side. On the panel are switches and an RS-232 port.

Spoofing An Emergency Traffic Preemption Signal

There’s a well-known movie trope in which a hacker takes control of the traffic lights in a city, causing general mayhem or creating a clear getaway path. Unlike many Hollywood representations of hacking, this is actually possible in principle; many cities install Emergency Vehicle Preemption (EVP) systems in their traffic signals to turn them green when an emergency vehicle is approaching. To see what it would actually take to control one of these, [xssfox] reverse-engineered a Strobecom II EVP system.

Most EVP systems, particularly older ones, use a strobing infrared light to alert a traffic signal to an approaching emergency vehicle. To avoid misuse, vehicles often encode a vehicle ID in the infrared signal. There have been some claims that a Flipper Zero can trigger these systems, but none that were well-verified, and probably with good reason; anyone actually trying this against a live system is courting serious legal trouble. To see whether this was actually possible [xssfox] obtained real hardware and tried to reverse-engineer the infrared protocol.

There are two main manufacturers for optical EVP systems: GTT Opticom and Tomar Strobecom. [xssfox] managed to buy a Tomar power supply which handled the processing for signal transmission, and which worked with Opticom systems. Looking at the output of this revealed that it encoded data by skipping pulses, which should be simple enough for Flipper Zero to replicate.

To reverse-engineer the Strobecom protocol, [xssfox] managed to buy a Strobecom optical signal processor, which would normally detect an emergency signal. This worked by modulating the length of infrared pulses. After some brute-forcing, a transmitter using an Arduino Nano and an infrared LED managed to activate the preemption signal, and even to transmit a vehicle ID. It seems that Strobecom systems, at least, are fairly demanding in terms of the signals they accept; signals had to be precisely timed, and in at least some systems, a valid vehicle ID would be needed to change the light.

If you’d like to learn more, we’ve gone into the technology of North American traffic signals before.

A 3D-printed mechanism is clamped between the jaws of a pair of calipers, which are surrounded by 3D-printed covers. A hammer is resting against one of the jaws, and a man's gloved hand is holding the calipers.

Embossing Precision Ball Joints For A Micromanipulator

[Diffraction Limited] has been working on a largely 3D-printed micropositioner for some time now, and previously reached a resolution of about 50 nanometers. There was still room for improvement, though, and his latest iteration improves the linkage arms by embossing tiny ball joints into them.

The micro-manipulator, which we’ve covered before, uses three sets of parallel rod linkages to move a platform. Each end of each rod rotates on a ball joint. In the previous iteration, the parallel rods were made out of hollow brass tubing with internal chamfers on the ends. The small area of contact between the ball and socket created unnecessary friction, and being hollow made the rods less stiff. [Diffraction Limited] wanted to create spherical ball joints, which could retain more lubricant and distribute force more evenly.

The first step was to cut six lengths of solid two-millimeter brass rod and sand them to equal lengths, then chamfer them with a 3D-printed jig and a utility knife blade. Next, they made two centering sleeves to hold small ball bearings at the ends of the rod being worked on, while an anti-buckling sleeve surrounded the rest of the rod. The whole assembly went between the jaws of a pair of digital calipers, which were zeroed. When one of the jaws was tapped with a hammer, the ball bearings pressed into the ends of the brass rod, creating divots. Since the calipers measured the amount of indentation created, they was able to emboss all six rods equally. The mechanism is designed not to transfer force into the calipers, but he still recommends using a dedicated pair.

In testing, the new ball joints had about a tenth the friction of the old joints. They also switched out the original 3D-printed ball mount for one made out of a circuit board, which was more rigid and precisely manufactured. In the final part of the video, he created an admittedly unnecessary, but useful and fun machine to automatically emboss ball joints with a linear rail, stepper motor, and position sensor.

On such a small scale, a physical ball joint is clearly simpler, but on larger scales it’s also possible to make flexures that mimic a ball joint’s behavior.

Building A Dependency-Free GPT On A Custom OS

The construction of a large language model (LLM) depends on many things: banks of GPUs, vast reams of training data, massive amounts of power, and matrix manipulation libraries like Numpy. For models with lower requirements though, it’s possible to do away with all of that, including the software dependencies. As someone who’d already built a full operating system as a C learning project, [Ethan Zhang] was no stranger to intimidating projects, and as an exercise in minimalism, he decided to build a generative pre-trained transformer (GPT) model in the kernel space of his operating system.

As with a number of other small demonstration LLMs, this was inspired by [Andrej Karpathy]’s MicroGPT, specifically by its lack of external dependencies. The first step was to strip away every unnecessary element from MooseOS, the operating system [Ethan] had previously written, including the GUI, most drivers, and the filesystem. All that’s left is the kernel, and KernelGPT runs on this. To get around the lack of a filesystem, the training data was converted into a header to keep it in memory — at only 32,000 words, this was no problem. Like the original MicroGPT, this is trained on a list of names, and predicts new names. Due to some hardware issues, [Ethan] hasn’t yet been able to test this on a physical computer, but it does work in QEMU.

It’s quite impressive to see such a complex piece of software written solely in C, running directly on hardware; for a project which takes the same starting point and goes in the opposite direction, check out this browser-based implementation of MicroGPT. For more on the math behind GPTs, check out this visualization.

Continue reading “Building A Dependency-Free GPT On A Custom OS”

A cylindrical neodymium-iron-boron magnet in shown on a grey background. A white line of boiling liquid surrounds the top edge of the magnet, and a cloud of condensing vapor hangs over it.

Homemade Liquid Oxygen Demonstrates Paramagnetism

Liquid nitrogen isn’t exactly an everyday material, but it’s acquired conveniently enough to be used in extreme overclocking experiments, classroom demonstrations, chemistry and physics experiments, and a number of other niche applications. Liquid oxygen, by contrast, is dangerous enough that it’s only really used in rocket engines. Nevertheless, [Electron Impressions] made some of his own, and beyond the obvious pyrotechnic experimentation, demonstrated its unusual magnetic properties. Check out the video, below.

The oxygen in this case was produced by electrolysis through a proton-exchange membrane, which vented the hydrogen into the atmosphere and routed the oxygen into a Dewar flask mounted at the cold end of a Stirling cryo-cooler. The cooler had enough power to produce about 30 to 40 milliliters of liquid oxygen per hour, enough to build up an appreciable amount in short order. As expected, the pale blue liquid caused burning paper to disappear in a violent flame, and a piece of paper soaked in it almost exploded when ignited.

Continue reading “Homemade Liquid Oxygen Demonstrates Paramagnetism”

A brass and steel mechanism is shown, with a series of rotary dials on the front. Each dial is made out of a brass ring around the stone center. A man’s hand is behind the mechanism, turning a handle.

Interplanetary Clock Keeps Time Across The Solar System

There are some clocks, mostly in or around international airports, which have multiple faces to show the time at various cities around the world. Taking more a forward-looking approach is [Chronova Engineering], who built a clock to display the time on four different planets: Earth, Mars, Jupiter, and Saturn.

The clock doesn’t have any hands, but it uses rotating dials to represent a top-down view of each planet from it’s north pole. The dials have degree markings to represent rotation relative to each planet’s prime meridian; for the gas giants, rotation is measured by the rotation of the planet’s core. Each dial’s center is made out of a circular stone tile with patterns similar to those seen on the planet; Earth, for example, is represented with sodalite. Three pointers mounted around the dial indicate the longitudes which are currently experiencing sunrise, noon, and sunset. The mechanism can be turned with a handle or a knob, and a mechanical counter keeps track of the number of Earth days that have passed.

Continue reading “Interplanetary Clock Keeps Time Across The Solar System”

An animated set of circles and lines are drawn on a black screen. Meanwhile, in a smaller window in the lower right corner, the boot screen of a Game Boy is displayed.

Running Pokémon With A Compass And Straightedge

The ancient question of whether or not it’s possible to construct a circle with the same area as a given square using only a drawing compass and straightedge was finally answered in 1882, where it was proved that pi is a transcendental number, meaning it cannot be accurately represented in a compass-and-straightedge system. This inability to accurately represent pi is just one of the ways in which these systems resemble a computer, a similarity that [0x0mer] explored in CasNum.

The core of the program represents operations with a drawing compass and unmarked straightedge. There are only a few operations that can be used for calculation: constructing a line through two points, constructing a circle centered at one point and intersecting another point, and constructing the intersection(s) of two lines, a line and a circle, or two circles. An optional viewer visualizes these operations. Another class builds on top of this basic environment to perform arithmetic and logical operations, representing numbers as points in the Cartesian plane. To add two numbers, for example, it constructs the midpoint between them, then doubles the distance from the origin.

There are some examples available, including the RSA algorithm. [0x0mer] also altered a Game Boy emulator to implement the ALU instructions using compass and straightedge operations. In testing, it took about fifteen minutes to boot, and runs at a “totally almost playable” speed, near one FPS. This is after extensive caching has been applied to minimize computation time; the performance here is impressive, but in a more qualitative than quantitative sense.

Being virtual, this system is discrete, but a physical compass and straightedge form a simple analog computer capable of dealing with continuous values.