EPROM-based Enigma Machine

The Enigma machine is perhaps one of the most legendary devices to come out of World War II. The Germans used the ingenious cryptographic device to hide their communications from the Allies, who in turn spent an incredible amount of time and energy in finding a way to break it. While the original Enigma was a complicated electromechanical contraption, [DrMattRegan] recently set out to show how its operation can be replicated with an EPROM.

The German Enigma machine was, for the time, an extremely robust way of coding messages. Earlier versions proved somewhat easy to crack, but subsequent machines added more and more complexity rendering them almost impenetrable. The basis of the system was a set of rotors which encrypted each typed letter to a different one based on the settings and then advanced one place in their rotation, ensuring each letter was encrypted differently than the last. Essentially this is a finite-state machine, something perfectly suited for an EPROM. With all of the possible combinations programmed in advance, an initial rotor setting can be inputted, and then each key press is sent through the Enigma emulator which encrypts the letter, virtually advances the rotors, and then moves to the next letter with each clock cycle.

[DrMattRegan]’s video, also linked below, goes into much more historical and technical detail on how these machines worked, as well as some background on the British bombe, an electromechanical device used for decoding encrypted German messages. The first programmable, electronic, digital computer called Colossus was also developed to break encrypted Enigma messages as well, demonstrating yet another technology that came to the forefront during WWII.

Continue reading “EPROM-based Enigma Machine”

Solar-Powered E-Reader With No Buttons

Modern e-readers such as the Amazon Kindle are incredible pieces of engineering, but that doesn’t mean there’s no room for improvement. A device custom-built to your own specifications is always going to provide a more satisfying experience than something purchased off the shelf. That’s why [fel88] put together this custom e-reader which offers a number of unique features, such as a solar panel on the back and button-free operation.

One issue with modern e-readers, at least as [fel88] sees it, is that they have a lot of unnecessary features. This project removes most of them, stripping down the device to its core functionality: a straightforward menu for selecting books and gesture-sensing for navigating the menu as well as changing the pages. The only physical input on the device is a small reed switch to turn the device on. A 3D printed case holds the e-ink display and encloses the inner workings, driven by an Arduino Mega 2560 and powered by three lithium-ion capacitors (LICs) and a small solar panel.

By dropping all of the unnecessary features, the device doesn’t need to waste energy with things like WiFi or Bluetooth and can get around 880 pages on a single charge, not counting any extra energy coming in through the solar panel while it’s operating. The LICs will also theoretically improve its life cycle as well. If you’re still stuck with a paperweight when you formerly had a working e-reader, though, there are plenty of ways to bring old devices back to life as well.

Inexpensive Repairable Laptops, With Apple Style

Despite a general lack of real-world experience, many teenagers are overly confident in their opinions, often to the point of brashness and arrogance. In the late 90s and early 00s I was no different, firmly entrenched in a clichéd belief that Apple computers weren’t worth the silicon they were etched onto—even though I’d never actually used one. Eventually, thanks to a very good friend in college, a bit of Linux knowledge, and Apple’s switch to Intel processors, I finally abandoned this one irrational belief. Now, I maintain an array of Apple laptops for my own personal use that are not only surprisingly repairable and hacker-friendly but also serve as excellent, inexpensive Linux machines.

Of course, I will have ruffled a few feathers suggesting Apple laptops are repairable and inexpensive. This is certainly not true of their phones or their newer computers, but there was a time before 2016 when Apple built some impressively high quality, robust laptops that use standard parts, have removable batteries, and, thanks to Apple dropping support for these older machines in their latest operating systems, can also be found for sale for next to nothing. In a way that’s similar to buying a luxury car that’s only a few years old and letting someone else eat the bulk of the depreciation, a high quality laptop from this era is only one Linux install away from being a usable and relatively powerful machine at an excellent bargain. Continue reading “Inexpensive Repairable Laptops, With Apple Style”

Copying Commodore Data Tapes, 40 Years Late

Unless you handle the backups for a large corporation, bank, or government entity, you likely haven’t stored much data to tape recently. But magnetic storage used to be fairly mainstream back in the 1980s for all kinds of computer programs. Plenty of computers used standard cassette tapes for this too but you couldn’t just copy them with standard audio equipment. You’d need something like this 1560 datasette from [Jan].

The core problem with using Hi-Fi equipment to copy tapes storing data instead of audio is that data tapes need to be much more precise in order to avoid losses that might not be noticeable in an audio recording. In the 80s computer companies like Commodore built tape drives specifically for their computers, so [Jan]’s project uses two of these 1530 drives to build this “1560” datasette. (No working 1530 hardware was harmed in this build.) An inverter circuit in one tape deck is used to provide the signal to write the data to the other tape, reliably copying data from these data tapes in a way Hi-Fi never could.

[Jan] does lament not having something like this back in the 80s when the Commodore was in its heyday, but there’s still a dedicated retrocomputing scene for these machines that will get plenty of use out of projects like this. If you need to go the other direction in time, there are also interfaces that allow data tapes from old Commodores to be read by modern computers with USB.

Continue reading “Copying Commodore Data Tapes, 40 Years Late”

Shelved Kindle Gets New Life As Weather Display

In the rush to always have the latest and greatest, it’s not uncommon that perfectly serviceable hardware ends up collecting dust in a drawer somewhere. If you’ve got an old Kindle laying around, you may be interested in this write-up from [Hemant] that shows a practical example of how the popular e-reader can be pushed into service as a weather dashboard.

The first step is to jailbreak the Kindle, providing the user with root access to the device. From there the Kindle Unified Application Launcher (KUAL) is installed along with USBNetwork which allows you to connect to the reader over SSH. With root access and a network connection, the real project of converting it to a weather dashboard begins. [Hemant] split the project into two parts here, a Node.js server that scrapes weather data from the internet and converts it into an image, and a client for the Kindle that receives this image for display.

The Kindle has a number of quirks and issues that [Hemant] covers as well, including handling image ghosting on the e-ink display as well as a problem where the device will hang if the Internet connection is lost. For those with jailbroken Kindles that want to put their devices back into useful service, this is an excellent guide for getting started and [Hemant] also provided all of the source code on the project’s GitHub page.

There has been a long tradition of using Kindles for things other than e-readers, and even devices with major hardware problems can still have useful life in them thanks to this project which allows the e-ink display to have a second life on its own.

Import GPU: Python Programming With CUDA

Every few years or so, a development in computing results in a sea change and a need for specialized workers to take advantage of the new technology. Whether that’s COBOL in the 60s and 70s, HTML in the 90s, or SQL in the past decade or so, there’s always something new to learn in the computing world. The introduction of graphics processing units (GPUs) for general-purpose computing is perhaps the most important recent development for computing, and if you want to develop some new Python skills to take advantage of the modern technology take a look at this introduction to CUDA which allows developers to use Nvidia GPUs for general-purpose computing.

Of course CUDA is a proprietary platform and requires one of Nvidia’s supported graphics cards to run, but assuming that barrier to entry is met it’s not too much more effort to use it for non-graphics tasks. The guide takes a closer look at the open-source library PyTorch which allows a Python developer to quickly get up-to-speed with the features of CUDA that make it so appealing to researchers and developers in artificial intelligence, machine learning, big data, and other frontiers in computer science. The guide describes how threads are created, how they travel along within the GPU and work together with other threads, how memory can be managed both on the CPU and GPU, creating CUDA kernels, and managing everything else involved largely through the lens of Python.

Getting started with something like this is almost a requirement to stay relevant in the fast-paced realm of computer science, as machine learning has taken center stage with almost everything related to computers these days. It’s worth noting that strictly speaking, an Nvidia GPU is not required for GPU programming like this; AMD has a GPU computing platform called ROCm but despite it being open-source is still behind Nvidia in adoption rates and arguably in performance as well. Some other learning tools for GPU programming we’ve seen in the past include this puzzle-based tool which illustrates some of the specific problems GPUs excel at.

Genetic Algorithm Runs On Atari 800 XL

For the last few years or so, the story in the artificial intelligence that was accepted without question was that all of the big names in the field needed more compute, more resources, more energy, and more money to build better models. But simply throwing money and GPUs at these companies without question led to them getting complacent, and ripe to be upset by an underdog with fractions of the computing resources and funding. Perhaps that should have been more obvious from the start, since people have been building various machine learning algorithms on extremely limited computing platforms like this one built on the Atari 800 XL.

Unlike other models that use memory-intensive applications like gradient descent to train their neural networks, [Jean Michel Sellier] is using a genetic algorithm to work within the confines of the platform. Genetic algorithms evaluate potential solutions by evolving them over many generations and keeping the ones which work best each time. The changes made to the surviving generations before they are put through the next evolution can be made in many ways, but for a limited system like this a quick approach is to make small random changes. [Jean]’s program, written in BASIC, performs 32 generations of evolution to predict the points that will lie on a simple mathematical function.

While it is true that the BASIC program relies on stochastic methods to train, it does work and proves that it’s effective to create certain machine learning models using limited hardware, in this case an 8-bit Atari running BASIC. In previous projects he’s also been able to show how similar computers can be used for other complex mathematical tasks as well. Of course it’s true that an 8-bit machine like this won’t challenge OpenAI or Anthropic anytime soon, but looking for more efficient ways of running complex computation operations is always a more challenging and rewarding problem to solve than buying more computing resources.

Continue reading “Genetic Algorithm Runs On Atari 800 XL”