Programming Language Christmas OrnamentsPermalink

Joe Warren:

Christmas Ornaments based on programming language logos.

Generated using Haskell & Waterfall CAD

For all your nerdy 3D printable Christmas decoration needs. New logos are still being added. Since I first saw the repo Terraform, BigQuery, Python, Snowflake, Go, Rust, and Ruby have been added.

Close up photo of a pink Gleam Christmas ornament hanging in a Christmas tree.
Gleam ornament. Photo credit: Joe Warren.

Using Podman and OCI Containers on FreeBSDPermalink

Dave Cottlehuber:

14.2-RELEASE now includes OCI-compatible images, and the Podman toolkit on FreeBSD is ready to use them, on both amd64 and arm64 systems.

In the aarch64 and amd64 download directories, you’ll see 3 official OCI-format images. The naming may be a little confusing at first, but should make sense once you start using them.

Each image comprises a subset of a standard FreeBSD base.txz release tarball, for various use cases.

It’s taken a long time, but it’s great to see support for Docker-style workflows on FreeBSD. I never found using jails directly to be a suitable substitute, and using Docker more was one of the reasons I stopped using FreeBSD on the desktop, and my servers back in 2019.

Dave Cottlehuber on Lobsters with some additional details:

[OP here] dfr@ has ported the podman tooling to FreeBSD, so that the existing kernel jail functionality can be used with podman tools, and OCI images. The releng team has integrated his tooling to generate images that are produced entirely within the official FreeBSD Release process, thus giving a high degree of trust and provenance.

You can then import these into your own FreeBSD tools, and play with them as you like.

But what you get at runtime is a bona fide FreeBSD jail, with the same FreeBSD goodies you would expect.

My personal observation, at least in these early days, is that it makes building and deploying custom jails much simpler, as it allows deploying as a single step, as the build already combined base container + app + storage in a single step. Managing secrets for databases etc still needs to be done separately.

Speeding Up Ruby by Rewriting C in RubyPermalink

JP Camara:

There is a recent language comparison repo which has been getting shared a lot. In it, CRuby was the third slowest option, only beating out R and Python.

With YJIT, Fibonacci gets a massive boost - going from 16.88 seconds down to 2.06 seconds. It’s close to the speed of node.js at that point!

YJIT makes a more modest difference for the looping example - going from 33.43 seconds down to 25.57 seconds. Why is that?

Interesting dive into the newer 1 Ruby internals with the YJIT JIT compiler. I also find it fascinating to see the spread of times across the languages, ranging half a second to over a minute — to produce exactly the same result!

  1. For about a decade Ruby was my primary programming language. However, it’s been 5 years since I stopped using it regularly and a lot has changed in that time. I did write the new-post script for this site in Ruby though.

Measuring and Improving rustls's Multi-threaded PerformancePermalink

The rustls project:

Compared to previous reports, the benchmark tool can now perform the same benchmarks in many threads simultaneously. Each thread runs the same benchmarking operation as before, and threads do not contend with each other except via the internals of the TLS library.

As before, the benchmarking is performed by measuring a TLS client “connecting” to a TLS server over a memory buffer – there is no network latency, system calls, or other overhead that would be present in a typical networked application. This arrangement actually should be the worst case for multithreaded testing: every thread should be working all the time (rather than waiting for IO) and therefore contention on any locks in the library under test should be maximal.

A fantastic showing by rustls with much higher handshakes-per-second and low latency with little variance as well. Testing was performed on an 80‑core Ampere Altra ARM server against BoringSSL and two versions of OpenSSL.

Console Modders Use NES Expansion Port to Add Support for Wireless Controllers and Enhanced SoundPermalink

Ernie Smith writing at Tedium:

In case you were not aware of this previously, fandom always finds a way. Whether in the form of video game translation mods that emerged from the late ’90s emulation scene or the impressive work that has been done to bring PC gaming to Linux via Proton, there have always been attempts to stretch the accepted definition of what our video came consoles allow us to do.

Now, we have a new addition to add to that list: After 39 years, console modders have begun to develop ways to use the Nintendo Entertainment System’s infamous expansion slot, a key example of vestigial manufacturing. In honor of this amazing feat, which is being used to add Bluetooth and Famicom Disk System support to the console, I thought it might be good to take a look back at this fascinating wrinkle of history. Today’s Tedium ponders the legacy of the NES Expansion Port, and where it’s going next.

It’s fantastic how accessible low volume PCB production is these days. There’s so many neat projects that hobbyists and small-scale professionals are able to design and build that previously were not possible—the NES Hub being one of them.