Making The Case For COBOL

Perhaps rather unexpectedly, on the 14th of March this year the GCC mailing list received an announcement regarding the release of the first ever COBOL front-end for the GCC compiler. For the uninitiated, COBOL saw its first release in 1959, making it with 63 years one of the oldest programming language that is still in regular use. The reason for its persistence is mostly due to its focus from the beginning as a transaction-oriented, domain specific language (DSL).

Its acronym stands for Common Business-Oriented Language, which clearly references the domain it targets. Even with the current COBOL 2014 standard, it is still essentially the same primarily transaction-oriented language, while adding support for structured, procedural and object-oriented programming styles. Deriving most of its core from Admiral Grace Hopper‘s FLOW-MATIC  language, it allows for efficiently describing business logic as one would encounter at financial institutions or businesses, in clear English.

Unlike the older GnuCOBOL project – which translates COBOL to C – the new GCC-COBOL front-end project does away with  that intermediate step, and directly compiles COBOL source code into binary code. All of which may raise the question of why an entire man-year was invested in this effort for a language which has been declared ‘dead’ for  probably at least half its 63-year existence.

Does it make sense to learn or even use COBOL today? Do we need a new COBOL compiler?

Continue reading “Making The Case For COBOL”

Ultra Light VORON X-Beam Milled From Aluminium Tube Stock

Voron X/Y carriage overview.
Voron X/Y carriage overview.

When it comes to 3D printing using fused deposition modeling (FDM) technology, there are two main groups of printers: Cartesian and CoreXY, with the latter being the domain of those who wish to get the fastest prints possible, courtesy of the much more nimble tool head configuration. Having less mass in the X/Y carriage assembly means that it can also move faster, which leads to CoreXY FDM enthusiasts to experiment with carbon fiber and a recent video by [PrimeSenator] in which an X-beam milled out of aluminium tube stock that weighs even less than a comparable carbon fiber tube is demonstrated.

As the CoreXY FDM printer only moves in the Z-direction relative to the printing surface, the X/Y axes are directly controlled by belts and actuators. This means that the faster and more precise you can move the extruder head along the linear rails, the faster you can (theoretically) print. Ditching the heavier carbon fiber for these milled aluminium structures on a Voron Design CoreXY printer should mean less kinetic inertia, with the initial demonstrations showing positive results.

The interesting thing about this ‘speed printing’ community is that not only the raw printing speeds, but also that in theory CoreXY FDM printers are superior in terms of precision (resolution) and efficiency (e.g. build volume). All of which makes these printers worthy of a look next time one is shopping for an FDM-style printer.

Continue reading “Ultra Light VORON X-Beam Milled From Aluminium Tube Stock”

Knowing Your Place: The Implications Of GPS Spoofing And Jamming

Artificial satellites have transformed the world in many ways, not only in terms of relaying communication and for observing the planet in ways previously inconceivable, but also to enable incredibly accurate navigation. A so-called global navigation satellite system (GNSS), or satnav for short, uses the data provided by satellites to pin-point a position on the surface to within a few centimeters.

The US Global Positioning System (GPS) was the first GNSS, with satellites launched in 1978, albeit only available to civilians in a degraded accuracy mode. When full accuracy GPS was released to the public under the 1990s Clinton administration, it caused a surge in the uptake of satnav by the public, from fishing boats and merchant ships, to today’s navigation using nothing but a smartphone with its built-in GPS receiver.

Even so, there is a dark side to GNSS that expands beyond its military usage of guiding cruise missiles and kin to their target. This comes in the form of jamming and spoofing GNSS signals, which can hide illicit activities from monitoring systems and disrupt or disable an enemy’s systems during a war. Along with other forms of electronic warfare (EW), disrupting GNSS signals form a potent weapon that can render the most modern avionics and drone technology useless.

With this in mind, how significant is the threat from GNSS spoofing in particular, and what are the ways that this can be detected or counteracted?

Continue reading “Knowing Your Place: The Implications Of GPS Spoofing And Jamming”

Silence Of The IPods: Reflecting On The Ever-Shifting Landscape Of Personal Media Consumption

On October 23rd of 2001, the first Apple iPod was launched. It wasn’t the first Personal Media Player (PMP), but as with many things Apple the iPod would go on to provide the benchmark for what a PMP should do, as well as what they should look like. While few today remember the PMP trailblazers like Diamond’s Rio devices, it’s hard to find anyone who doesn’t know what an ‘iPod’ is.

Even as Microsoft, Sony and others tried to steal the PMP crown, the iPod remained the irrefutable market leader, all the while gaining more and more features such as video playback and a touch display. Yet despite this success, in 2017 Apple discontinued its audio-only iPods (Nano and Shuffle), and as of May 10th, 2022, the Apple iPod Touch was discontinued. This marks the end of Apple’s foray into the PMP market, and makes one wonder whether the PMP market of the late 90s is gone, or maybe just has transformed into something else.

After all, with everyone and their pet hamster having a smartphone nowadays, what need is there for a portable device that can ‘only’ play back audio and perhaps video?

Continue reading “Silence Of The IPods: Reflecting On The Ever-Shifting Landscape Of Personal Media Consumption”

Bare-Metal STM32: Using The I2C Bus In Master-Transceiver Mode

As one of the most popular buses today for on- and inter-board communication within systems, there’s a good chance you’ll end up using it with an embedded system. I2C offers a variety of speeds while requiring only two wires (clock and data), which makes it significantly easier to handle than alternatives, such as SPI. Within the STM32 family of MCUs, you will find at least one I2C peripheral on each device.

As a shared, half-duplex medium, I2C uses a rather straightforward call-and-response design, where one device controls the clock, and other devices simply wait and listen until their fixed address is sent on the I2C bus. While configuring an STM32 I2C peripheral entails a few steps, it is quite painless to use afterwards, as we will see in this article. Continue reading “Bare-Metal STM32: Using The I2C Bus In Master-Transceiver Mode”

Data Alignment Across Architectures: The Good, The Bad And The Ugly

Even though a computer’s memory map looks pretty smooth and very much byte-addressable at first glance, the same memory on a hardware level is a lot more bumpy. An essential term a developer may come across in this context is data alignment, which refers to how the hardware accesses the system’s random access memory (RAM). This and others are properties of the RAM and memory bus implementation of the system, with a variety of implications for software developers.

For a 32-bit memory bus, the optimal access type for some data would be a four bytes, aligned exactly on a four-byte border within memory. What happens when unaligned access is attempted – such as reading said four-byte value aligned halfway into a word – is implementation defined. Some hardware platforms have hardware support for unaligned access, others throw an exception that the operating system (OS) can catch and fallback to an unaligned routine in software. Other platforms will generally throw a bus error (SIGBUS in POSIX) if you attempt unaligned access.

Yet even if unaligned memory access is allowed, what is the true performance impact? Continue reading “Data Alignment Across Architectures: The Good, The Bad And The Ugly”

Training Doppler Radar With Smart Watch IMUs Data For Activity Recognition

When it comes to interpreting sensor data automatically, it helps to have a large data set to assist in validating it, as well as training when it concerns machine learning (ML). Creating this data set with carefully tagged and categorized information is a long and tedious process, which is where the idea of cross-domain translations come into play, as in the case of using millimeter wave (mmWave) radar sensors to recognize activity of e.g. building occupants with the IMU2Doppler project at Smash Lab of Carnegie Mellon University.

The most commonly used sensor type when it comes to classifying especially human motion are inertial measurement units (IMU) such as accelerometers and gyroscopes, which are found in everything from smartphones to smart watches and fitness bands. For these devices it’s common to classify measurement patterns as matches a particular activity, such as walking, jogging, or brushing one’s teeth. This makes them both well-defined and very accessible.

As for why a mmWave-based Doppler radar would be preferred for monitoring e.g. building occupants is the privacy aspect compared to using cameras, and the inconvenience of equipping people with a body-worn IMU. Using Doppler radar it would theoretically be possible for people to track activities within their own home, as well as in a medical setting to ensure patients are safe, or at a gym to track one’s performance, or usage of equipment. All without the use of cameras or personal sensors. In the past, we’ve seen a similar approach that used targeted laser beams.

As promising as this sounds, at this point in time the number of activities that are recognized with reasonable accuracy (~70%) is limited to ten types. Depending on the intended application this may already be sufficient, though as the published paper notes, there is still a lot of room for growth.

Continue reading “Training Doppler Radar With Smart Watch IMUs Data For Activity Recognition”