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 newer1 Ruby internals with the YJIT JIT compiler. I also find it fascinating to see the spread of times across the languages, ranging from 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.

CSS Print Styles for PDFs and PrintingPermalink

Diana MacDonald 1:

You can use CSS print media styles to present your site’s content for print media, such as actual pages printing or for saving a page as PDF. This can let you write content once for the web and then format it differently for print. For an idea of what you could do with this power, you could:

  • Let readers print your blog posts, recipes, or tutorials on paper.
  • Add the ability to export reports in a SaaS product to PDF.
  • Help customers print invoices, tickets, contracts, or other documents from your website.
  • Convert web pages into a book.

Most resources I’ve found about print styles were written about a decade ago. In this post, I’ll share what I learned and what’s still relevant today.

Print CSS is the lesser known corner of the CSS specification, not often encountered by most web developers. A lot of it was specified in the early days of CSS and has remained stable since. While actual printing is one use case, the more common use these days is probably the generation of PDFs, something that I’ve had a lot of exposure to because I work at YesLogic on the Prince HTML to PDF tool.

Di’s post covers everything you need to know to get started using and developing print CSS in 2024.

  1. Full disclosure I’m married to Diana.