QuickTime as a Tape Archival FormatPermalink

Chris Hanson:

A lot of people think QuickTime is a “video format,” but that’s not really accurate. Video and audio playback are applications atop the QuickTime container format; the container format itself is a means of representing multiple typed tracks of time-based media, each of which may have their own representation in the form of samples interpreted according to their own CODECs.

All of these are represented within a file as atoms which represent well-identified bags of data with arbitrary size and content, making it very easy to write general-purpose tooling and also to extend over time. (The last major extension to the low-level design was in the 1990s, to support 64-bit atom sizes, so it’s quite a stable format already.)

QuickTime, like TrueType before it has proven to be quite a well-designed format. If you’re looking for inspiration for a binary data format these feel like great candidates.

Everybody Codes Programming ChallengesPermalink

Unleash your problem-solving skills by tackling puzzles with code, in any programming language you love. Whether you’re a seasoned developer or just starting out, our platform offers challenges for all levels, allowing you to learn, grow, and have fun along the way!

I’m Emil Kaczyński, and I’m the one behind the madness you’re going to experience here (sorry!). I was just a regular full-stack developer who loved programming. One day, a friend showed me Advent of Code, and I got really into solving programming puzzles! I completed every event from 2015 multiple times, using different programming languages, and then I got curious about what it’s like to create something similar. I hope you’ll have a great time here!

If you’ve taken part in Advent of Code before this will be quite familiar. Emil notes:

Have you heard of Advent of Code? If yes, then you’re ready for Everybody Codes! It’s similar, but with its own twists. Everybody Codes is both easier and harder at the same time, yet friendlier and trickier too!

Blackberry Releases QNX Everywhere Free for Non-Commercial UsePermalink

I can’t seem to find a decent announcement post on the QNX website, so here’s Thom Holwerda writing on OSNews:

Well, it seems the company is trying to reverse course, and has started courting the enthusiast community once again. This time, it’s called QNX Everywhere, and it involves making QNX available for non-commercial use for anyone who wants it. No, it’s not open source, and yes, it requires some hoops to jump through still, but it’s better than nothing. In addition, QNX also put a bunch of open source demos, applications, frameworks, and libraries on GitLab.

Notably there is now a pre-built image for the Raspberry Pi 4 with an accompanying book: Introduction to the QNX RTOS with Raspberry Pi by Elad Lahav. The source of the book is also on GitLab.

Many years ago I used QNX for a project at university. We used its built-in RPC mechanism to coordinate behaviour across multiple machines and wrote a GUI using its built in toolkit. I remember QNX being quite usable, with a familiar and capable GUI. It was also quite compact, having a version that could run from a single floppy disk. The system was quite responsive due to low system requirements and real-time nature.

QNX was also quite straightforward to program for, with a comprehensive suite of C++ libraries for the system. I can certainly recommend playing around with it if you’re interested in learning about alternate operating systems, especially hard real-time ones.

RISC-V Vector Extension OverviewPermalink

Wojciech Muła:

The goal of this text is to provide an overview of RISC-V Vector extension (RVV), and compare — when applicable — with widespread SIMD vector instruction sets: SSE, AVX, AVX-512, ARM Neon and SVE.

The RISC-V architecture defines four basic modes (32-bit, 32-bit for embedded systems, 64-bit, 128-bit) and several extensions. For instance, the support for single precision floating-point numbers is added by the F extension.

The vector extension is quite a huge addition. It adds 302 instructions plus four highly configurable load & store operations. The RVV instructions can be split into three groups:

  • related to masks,
  • integer operations,
  • and floating-point operations.

When a CPU does not support floating-point instructions, it still may provide the integer subset.

RVV introduces 32 vector registers v0, …, v31, a concept of mask (similar to AVX-512), and nine control registers.

Detailed, but not too long overview of the RISC-V vector extensions.

RMK Mechanical Keyboard FirmwarePermalink

RMK by Haobo Gu:

Rust keyboard firmware library with layers, macros, real-time keymap editing, wireless(BLE) and split support

The README shows a comprehensive list of features including USB and Bluetooth connectivity, ARM and RISC-V support, real-time layout editing, and a low power mode that claims month of battery life.

The firmware is built upon the Embassy async embedded Rust framework.