news
Programming Leftovers
-
Evan Hahn ☛ Fizz Buzz without conditionals or booleans
I recently learned about the Feeling of Computing podcast and listened to the latest episode. One of the hosts challenged listeners to “write Fizz Buzz with no booleans, no conditionals, no pattern matching, or other things that are like disguised booleans.”
-
SciML ☛ Fine-Grained Control in SciML: Introducing SciMLLogging and Enhanced Aliasing
The SciML ecosystem continues to evolve with tools that give you precise control over your scientific computing workflows. Two recent additions—SciMLLogging.jl and the enhanced aliasing specification system—address common pain points in large-scale simulations: managing output verbosity and optimizing memory usage. Together, they provide the granular control needed for production-grade scientific computing.
-
The New Stack ☛ FFmpeg to Google: Fund Us or Stop Sending Bugs
You may never have heard of FFmpeg, but you’ve used it. This open source program’s robust multimedia framework is used to process video and audio media files and streams across numerous platforms and devices. It provides tools and libraries for format conversion, aka transcoding, playback, editing, streaming, and post-production effects for both audio and video media.
FFmpeg’s libraries, such as libavcodec and libavformat, are essential for media players and software, including VLC, Kodi, Plex, Google Chrome, Firefox, and even YouTube’s video processing backend. It is also, like many other vital open source programs, terribly underfunded.
-
DJ Adams ☛ Some ramblings on simple CDS modelling with CDL
I'm taking some time to peruse the Conceptual Definition Language (CDL) topic of the CAP documentation, and stopped at the first example in the Keywords & Identifiers section, which piqued my interest. Let's put this in a file called db/keywords-and-identifiers.cds: [...]
-
[Old] Lawrence Tratt ☛ What Factors Explain the Nature of Software?
I sometimes find myself asked to give advice on how organisations should go about creating software, but often my advice doesn’t gel with those who sought it. Sometimes that’s because only one answer was ever considered acceptable; sometimes I am ignorant of important wider context and my answer is unworthy of consideration.
But, most often, I believe it’s because both sides have different underlying assumptions about the nature of software. These assumptions are so deeply embedded that most of us rarely, if ever, explicitly think about them. It took me many years to realise I had made such assumptions, and many more to be able to articulate them somewhat coherently.
In this post I’m going to define, as best I can, what I consider to be the triad of interacting factors that best define the nature of software. These are inevitably high-level, but my experience is that they are just about specific enough to allow one to make reasonable quality predictions about a given piece of software. I’m not claiming these thoughts to be original, nor do I claim software to be unique in having these factors as their fundamentals.
-
Michail Zarečenskij ☛ Value classes are new data classes
Starting from the "early" days of high-level programming languages, there have been many similar concepts: records (introduced in ALGOL and Pascal), structs, named tuples, case classes, data classes in Kotlin and so on. All of them serve the same fundamental purpose, which is to combine potentially heterogeneous pieces of data into a single unit. Depending on the specifics of the target platform, they may or may not come with additional semantics. But first and foremost, they exist to carry data.
Theoretically, it’s all about so-called product types, because a combined type (whatever it is) can hold the Cartesian product of its values: |X| × |Y|. And here are value classes, which, as the name suggests, also revolve around “values” and are product types as well. They are primarily designed to hold data, but their semantics differ quite a bit from existing constructs in Kotlin.
Let’s unpack and see why it can be a great addition to the language.
-
Zack Radisic ☛ Template Interpreters
It’s well-known that the fastest programming language runtimes get their speed by having an optimizing JIT compiler, famous examples being V8 and HotSpot.
There’s something less known about their baseline bytecode interpreters (the interpreter that runs code by default before JIT kicks in):
They don’t write their bytecode interpreter in a language like C/C++, but actually in assembly (or some similar low-level IR).
To learn more, I went digging into V8 and HotSpot, then built my own interpreter in this style heavily based on HotSpot’s design (simply because I found their code easiest to read).
-
Dirk Eddelbuettel ☛ Dirk Eddelbuettel: digest 0.6.38 on CRAN: Several Updates
Release 0.6.38 of the digest package arrived at CRAN today and has also been uploaded to Debian.
digest creates hash digests of arbitrary R objects. It can use a number different hashing algorithms (
md5,sha-1,sha-256,sha-512,crc32,xxhash32,xxhash64,murmur32,spookyhash,blake3,crc32c,xxh3_64andxxh3_128), and enables easy comparison of (potentially large and nested) R language objects as it relies on the native serialization in R. It is a mature and widely-used package (with 86.8 million downloads just on the partial cloud mirrors of CRAN which keep logs) as many tasks may involve caching of objects for which it provides convenient general-purpose hash key generation to quickly identify the various objects. -
Python
-
Lawrence Tratt ☛ Async and Finaliser Deadlocks
In essence, this code is modelling a classic programming need. A mutex (colloquially a “lock”) guards a shared resource (e.g. a network socket, counter, etc.). When the garbage collector determines that an object is no longer used, it runs its finaliser i.e. its __del__ method. In this case the finaliser acquires the mutex (i.e. locks it), allowing it do something with the shared resource the mutex is guarding, and then releases the mutex (i.e. unlocks it).
-
-
Shell/Bash/Zsh/Ksh
-
[Old] Mike Belousov ☛ Bashisms Part 1
I use too much bash. I've written down some of the more outrageous or useful ones. I think it'll make a good part 1 to an ongoing series.
-
-
Rust
-
Rust Weekly Updates ☛ This Week In Rust: This Week in Rust 625
Hello and welcome to another issue of This Week in Rust!
-
-
Standards/Consortia
-
David Gerrells ☛ what is a favicon?
I must confess. There is this pet peeve I have. Whenever I come across a project, website, or app which sports the default favicon (favorite icon) of whatever framework, tool, or library used to make said project, website, or app, I cannot help but be disappointed. Nay, more than disappointed, the emotion comes close to that of disgust.
-