news
Programming Leftovers
-
Great Lakes Consulting Services Inc ☛ Enhance Simulations with Type-Stable Code
In this Julia for Devs post, we will discuss improving the performance of simulation code written in Julia by eliminating sources of type-instabilities.
We wrote another post detailing what type-stability is and how type-instabilities can degrade performance. We also showed how SnoopCompile.jl and Cthulhu.jl can be used to pinpoint causes of type-instability.
This post will cover some of the type-instabilities we helped one of our clients overcome.
-
FreeBSD ☛ Software Bill of Materials (SBOM) for FreeBSD Project
Commissioned by the Sovereign Tech Agency, the Foundation is pleased to share that work began in April 2025 on a new project to enable Software Bill of Materials (SBOMs) for FreeBSD. This effort is part of a broader set of five strategic initiatives focused on advancing Zero Trust builds, SBOM adoption, CI/CD automation, enhanced security in Ports and Packages, and reducing technical debt.
The project runs from April to December 2025, aiming to improve existing and implement new tooling and processes for FreeBSD SBOMs.
-
Chris Wellons ☛ Parameterized types in C using the new tag compatibility rule
C23 has a new rule for struct, union, and enum compatibility finally appearing in compilers starting with GCC 15, released this past April, and Clang later this year. The same struct defined in different translation units (TU) has always been compatible — essential to how they work. Until this rule change, each such definition within a TU was a distinct, incompatible type. The new rule says that, ackshually, they are compatible! This unlocks some type parameterization using macros.
-
Wouter Groeneveld ☛ No Time To Learn (Web) Framework X
It can be quite difficult to judge whether Framework X is worth your valuable time. Most often, the answer is no—especially for web frameworks. Jake Lazaroff claims that Web Components will outlive your JavaScript framework. He also mentions the typical analysis paralysis period during the start of a new project: which framework to pick? The hot new stuff? The trusty older ones? None at all and roll your own? Or, god forbid, the Ancient One (jQuery) with some custom stuff thrown on top?
-
Wolfgang ☛ Paragraph flowing as a fold
A simple, useful, plain-text variant of Donald Knuth’s paragraph-filling algorithm can be expressed as a fold. This algorithm runs in time linear to the length of its input and usually produces better results than the classic greedy text-flow algorithm.
-
Artyom Bologov ☛ Lisp Logical Pathnames
So I (as any Lisper) decided to experiment with these obscure things. And figure out how they actually work. Including the gory details of how implementations do LPs and how to use them “portably”.
This post was prompted by Nicolas Martyanoff’s post on pathnames and the mention of logical pathnames there.
-
Arun Raghavan ☛ The Unbearable Anger of Broken Audio
In large centralised organisations, there is a support function whose (thankless) job it is to absorb some of that impact before passing it on to the people who are responsible for fixing the problem. In the F/OSS community, sometimes we’re lucky to have folks who step up to help users and triage issues. Usually though, it’s just maintainers managing this.
-
The Register UK ☛ Cosmoe: New C++ toolkit for building native Wayland apps
Cosmoe is a modern C++ UI library, but it's also a new iteration of a project with roots in one of the most elegant GUIs ever written.
Cosmoe pulls off several neat tricks. Although it's a newly announced project, it is surprisingly mature and complete, while being lightweight. Also, for a one-man project, it has pretty good existing third-party documentation, and quite a lot of existing example code – even complete apps. It's a new project and there is, admittedly, a to-do list of stuff that doesn't work right yet, but at 112 lines it's fairly small.
Cosmoe Wayland is a set of C++ libraries, with supporting infrastructure and tools, plus style guides and so on. It needs no supporting programs or runtime, and lets developers build multithreaded Linux apps in C++ that natively target Wayland. Although it's new, it has well-established guidelines and a distinctive, fresh, and clean look and feel. The API is complete and stable, and fairly unlikely to undergo radical changes, as it follows standards first released just under 30 years ago.
-
Perl / Raku
-
[Repeat] Perl ☛ Analysing FIT data with Perl: producing PNG plots
Now that we’ve extracted data from the FIT file, what else can we do with it? Since this is time series data, the most natural next step is to visualise the data values over time. Since I know that Gnuplot handles time series data well,1 I chose to use Chart::Gnuplot to plot the data.
An additional point in Gnuplot’s favour is that it can plot two datasets on the same graph, each with its own y-axis. Such functionality is handy when searching for correlations between datasets of different y-axis scales and ranges that share the same baseline data series.
-
-
R / R-Script
-
Rlang ☛ R Package Quality: Package Popularity
In our previous post, we introduced the four components that make up a litmus package score: documentation, popularity, code quality, and maintenance. In this post, we’ll look at package popularity. Package popularity is an interesting, and sometimes controversial, measure. In our experience it often sparks strong (and usually negative) reactions. The idea is simple: if a package is widely used, bugs are more likely to be found and fixed, and if the maintainer steps away, there’s a higher chance someone else will take over. Of course, high usage doesn’t mean a package is risk-free. But popularity can provide helpful context. Consider this example: [...]
-
Rlang ☛ How to draw a candlestick chart in R? – Both ggplot2 and plotly
Candlestick charts are a type of financial chart used to depict the price movements of an asset over a specific period. Each “candlestick” represents a time frame—such as a day, hour, or minute—and displays four key pieces of data: the opening price, closing price, highest price, and lowest price within that period. The body of the candlestick shows the range between the opening and closing prices, while the wicks (also known as shadows) extend to the highest and lowest prices. If the closing price is higher than the opening price, the candlestick is typically colored green or left hollow to indicate a price increase. Conversely, if the closing price is lower than the opening price, it is colored red or filled to signify a price decrease.
-
Rlang ☛ How to make a Financial Times Plot with ggplot2 in R?
In order to draw a plot having a similar pattern with above one, I will use only ggplot2 and ggpubr packages. Texts are from windows family. I do not import any extra fonts.
-
Rlang ☛ R Package Quality: Package Popularity
-
Rlang ☛ admiral 1.3.0: documentation go!!
The second half of 2025 brings us once again to an exciting ADaM in R Asset Library • admiral {admiral} release! Read through this blog post to learn more what is available in ADaM in R Asset Library • admiral {admiral} 1.3.
-
Rlang ☛ A Simple Bayesian Multi-state Survival Model for a Clinical Trial
This post shows how to use the elementary theory of discrete time Markov Chains to construct a multi-state model of patients progressing through various health states in a randomized clinical trial comparing different treatments [...]
-
-
Shell/Bash/Zsh/Ksh
-
University of Toronto ☛ Some notes on X terminals in their heyday
I recently wrote about how the X Window System didn't immediately have (thin client) X terminals. X terminals are now a relatively obscure part of history and it may not be obvious to people today why they were a relatively significant deal at the time. So today I'm going to add some additional notes about X terminals in their heyday, from their introduction around 1989 through the mid 1990s.
-
-
Java/Golang
-
The New Stack ☛ Inside Java's Language Renaissance
I get Travis’ sentiment. In 2005, when the creator of Ruby on Rails, David Heinemeier Hansson, dropped his famous quote — “Whoops! It worked. We are up and running.” — while demoing Rails scaffolding for the first time, Travis was likely using Java 1.4. Not only were there no record classes, switch expressions or pattern matching — there were also no lambda functions, streams or generics, and J2EE was the framework du jour, complete with SOAP and WSDL support. And here was DHH building a functioning blog from scratch, live on stage in 16 minutes, without ever saying the word “enterprise” or “bean.” It was glorious.
And so, the next decade of my life was spent writing Ruby and Go, staying uninterested and uninformed of Java’s quiet and rapid progress, until a series of events led to the acquisition of our company and my joining the Java Platform Group at Oracle.
-
Zombie Zen ☛ >Why Go Rocks for Building a Lua Interpreter
I recently needed to build a custom Lua interpreter in Go. The exact reasons aren’t important for this blog post, but neither the reference implementation — which I will be referring to as “C Lua” throughout this article — nor the other open source Go Lua intepreters I could find were a good fit for my needs. Building a Lua interpreter ended up being a rather enjoyable months-long side quest. I’ve had a number of folks ask me to write about the experience since these sorts of projects usually highlight interesting aspects of both the implementation language and the interpreted language. So here we are!
-
Anton Zhiyanov ☛ Go 1.25 interactive tour
Go 1.25 is scheduled for release in August, so it's a good time to explore what's new. The official release notes are pretty dry, so I prepared an interactive version with lots of examples showing what has changed and what the new behavior is.
-
-
Rust
-
Rust Weekly Updates ☛ This Week In Rust: This Week in Rust 605
Hello and welcome to another issue of This Week in Rust!
-