Access To Fresh And Potable Water: An Ancient And Very Current Challenge

Throughout history, clean and potable water has been one of the most prized possessions, without which no human civilization could have ever sustained itself. Not only is water crucial for drinking and food preparation, but also for agriculture, cleaning and the production of countless materials, chemicals and much more. And this isn’t a modern problem: good water supplies and the most successful ancient cultures go hand in hand.

For instance, the retention and management of fresh water in reservoirs played a major role in the Khmer Empire, with many of its reservoirs (baray) surviving to today. Similarly, the Anuradhapure Kingdom in Ceylon (now Sri Lanka) featured massive reservoirs like Kala Wewa that was constructed in 460 CE with a capacity of 123 million m3. In the New World, the Maya civilization similarly created reservoirs with intricate canals to capture rainwater before the dry season started, as due to the karst landscape wells were not possible.

Keeping this water fresh and free from contaminants and pollution was a major problem for especially the Maya, with a recent perspective by Lisa J. Lucera in PNAS Anthropology suggesting that they used an approach similar to modern day constructed wetlands to keep disease and illness at bay, while earlier discoveries also suggest the use of filtration including the use of zeolite.

Continue reading “Access To Fresh And Potable Water: An Ancient And Very Current Challenge”

A devboard with the CH32V003, with a few resistors and bodges, with a USB-C cable plugged into it, and a programmer plus an extra probe attached.

USB PD On CH32V003 Teaches You Everything

How do you talk USB Power Delivery (PD)? Grab a PHY? Use a MCU with one built-in? Well, if you’re hardcore enough, you can do it with just a few resistors and GPIOs. [eeucalyptus] shows you their implementation of USB-PD on a CH32V003, which has no PD peripheral, building a PD trigger, everything is open source, and they walk you through the entire thing including low-level PD basics, too!

It helps that CH32V003 is a 32-bit MCU with a good few resources and peripherals, for instance, an internal comparator. Other than that, you don’t need much in terms of hardware resources, but you do need a steady hand — parts of the firmware had to be written in assembly to keep up with PD timing. Want to tinker with the fruit of this research, perhaps, further build upon the code? There’s an example board on GitHub, too!

Want to try your own luck with this method? There’s a schematic, and logic analyzer captures, and a board to refer to. Again, more than enough information on every single low-level detail! Otherwise, grab an MCU pre-programmed to talk PD, maybe a trigger board chip, or maybe even a PD PHY and implement PD communications with it directly – it’s pretty easy!

We thank [Julianna] for sharing this with us!

Illustrated Kristina with an IBM Model M keyboard floating between her hands.

Keebin’ With Kristina: The One With The Tasty Snacks Board

A pocket cyberdeck-looking thing with a screen and a thumb keyboard.
Image by [MakerM0] via Hackaday.IO
[MakerM0]’s LangCard is an entry into our 2024 Business Card Challenge that just so happens to fit the Keebin’ bill as well.

You might label this a pocket cyberdeck, and that’s just fine with me. The idea here is to have a full-keyboard development board for learning programming languages like CircuitPython, MicroPython, C++, and so on, wherever [MakerM0] happens to be at a given moment.

Open up the LangCard and you’ll find an RP2040 and a slim LiPo battery. I’m not sure what display that is, but there are probably a few that would work just fine were you to make one of these fun learning devices for yourself.

Continue reading “Keebin’ With Kristina: The One With The Tasty Snacks Board”

Fork! Ladybird Browser And SerenityOS To Go Separate Ways

In the monthly Ladybird Browser update video which we’ve placed below, SerenityOS founder [Andreas Kling] announced an interesting development. The browser has been forked from the OS that has been its progenitor, and both projects will now proceed separately. This frees the browser from the SerenityOS insistence on avoiding external libraries, and allows it to take advantage of stable, fast, and mature open source alternatives. This is already paying dividends in compatibility and speed, and is likely to lead further towards a usable everyday browser as time goes by.

As the world of fully-featured web browser engines has contracted from a number of different projects to little more than Google’s Blink and Mozilla’s Gecko, Ladybird has found itself in an unexpected position. It is vital that the browser market retains some competition and does not become a Google monoculture, so while it might not seem so at first glance, the news of Ladybird going alone has the potential to be one of the most far-reaching open source stories of the year.

If you’d like to try Ladybird you’ll have to get your hands slightly dirty and build it yourself, but we’d expect ready-built versions to appear in due course. We took a look at an earlier version of Ladybird last year, as well as SerenityOS itself.

Continue reading “Fork! Ladybird Browser And SerenityOS To Go Separate Ways”

Meccano-based Hellschreiber Machine

[ZXGuesser] has pulled off a true feat of Meccano engineering: building a Meccano Hellschreiber machine. The design is a close replica of the original Siemens Feld-Hell machine as documented here. What is Hellschreiber, you might ask? It’s a very neat method of sending written messages over the air by synchronizing a printing wheel on the receiving end with pulses generated on the transmitter. By quickly moving the print wheel up and down, arbitrary figures can be printed out. If you want to learn more about Hellschreiber, check out this excellent Hackaday post from almost a decade ago!

The Mastodon thread linked above goes into more detail about the difficulty in building this behemoth — and the slight regret of sticking with the authentic QWERTZ keyboard layout! In order to use the Hellschreiber mode, you have to keep up a steady rhythm of typing at about 2.5 characters per second, otherwise, the receiving end will see randomly spaced gaps between each letter. So while having to type at a steady speed [ZXGuesser] also had to work with a slightly different keyboard layout. Despite this difficulty, some very good quality output was generated!

Incredibly, the output looks just like the output from the original, century-old design. We think this is an absolutely incredible accomplishment, and we hope [ZXGuesser] doesn’t follow through on disassembling this amazing replica — or if they do, we hope it’s documented well enough for others to try their hand at it!

Thanks [BB] for the tip!

So Much Going On In So Few Components: Dissecting A Microwave Radar Module

In the days before integrated circuits became ubiquitous, providing advanced functionality in a single package, designers became adept at extracting the maximum use from discrete components. They’d use clever circuits in which a transistor or other active part would fulfill multiple roles at once, and often such circuits would need more than a little know-how to get working. It’s not often in 2024 that we encounter this style of circuit, but here’s [Maurycy] with a cheap microwave radar module doing just that.

Continue reading “So Much Going On In So Few Components: Dissecting A Microwave Radar Module”

SIMD-Accelerated Computer Vision On The ESP32-S3

One of the fun parts of the ESP32-S3 microcontroller is that it got upgraded to the newer Cadence Xtensa LX7 processor core, which turns out to have a range of SIMD instructions that can help to significantly speed up a range of tasks. [Shranav Palakurthi] recently used this to speed up the processing of video frames to detect corners using the FAST method. By moving some operations that benefit from SIMD over to an optimized version written in LX7 ASM, the algorithm’s throughput was increased by 220%, from 5.1 MP/s to 11.2 MP/s, albeit with some caveats.

The problem with the SIMD instructions in the LX7 other than them being very poorly documented – unless you sign an NDA with Cadence –  is that it misses many instructions that would be really useful. For [Shranav] the lack of support for direct misaligned reads and comparing of unsigned 8-bit numbers were hurdles, but could be worked around, with the results available on GitHub.

Much of the groundwork for this SIMD implementation was laid by [Larry Bank], who reverse-engineered the SIMD instructions from available documentation and code samples, finding that the ESP32-S3 misses quite a few common SIMD instructions, including various shifts and unaligned reads and writes. Still, it’s good enough for quite a few tasks, as long as you can make it work with the available instructions.