Programming Leftovers
-
Earthly ☛ How Earthly Solved Our CI Problem
The value of a continuous integration pipeline in software development is clear. It allows engineers to test every code change, ensuring deployments are free from regressions in functionality and performance. At Konfig, a startup creating SDKs in many coding languages from our clients’ OpenAPI specs, not having Continuous Integration was a major issue. Code generation software tends to be especially fickle, and many of our code paths are shared across generators for different coding languages, making it easy to introduce bugs. When we made revisions for one customer, it wasn’t uncommon for these changes to be incompatible for another customer. We badly needed CI – and quickly, too. Thus we embarked on (what we thought would be) the treacherous journey of building a CI pipeline that could accommodate our architecture.
-
Brian Callahan ☛ Can GCC use Clang as its assembler?
As a consequence of LLVM containing an integrated assembler, this means that clang can assemble assembly files if you pass them to clang. GCC cannot do this, at least not directly: if you pass gcc an assembly file it will simply pass it onto your assembler, usually GNU as but can be another Unix assembler, such as the Sun assembler, which can be run on Solaris and Illumos.
And so I want to know if it is possible to replace GNU as with clang as the assembler in the GCC toolchain. There is potential to want this, at least one some systems. FreeBSD, specifically FreeBSD 14.0-RELEASE, where will be running our experiment today, no longer ships a /usr/bin/as binary. With LLVM also providing a linker and many other utilities found in the GNU binutils, could GCC become a boutique frontend for the LLVM system?
-
Matt Fantinel ☛ Progressive Enhancement (and why it matters)
I’ve mentioned Progressive Enhancement on this blog once before, when explaining how my blog was built and how Svelte has that concept as one of its main appeals. Since then, it’s something that has stuck with me on everything I’ve built, and as such has shaped the way I work both on personal projects and professionally as well.
This article talks about Progressive Enhancement focusing mainly on websites and web apps, but it’s a concept that may carry over to other areas of development (client-side, at least), though the specifics might differ.
-
Chris Ferdinandi ☛ Your code base should look like one person wrote it (even when you have a team)
When everyone does their own thing in a code base, it can rapidly become a mess of different conventions. That makes it harder to debug issues, harder to maintain the existing code, and harder to add new features.
Conventions make it much easier to know where to look for things, how to update things, and where to add new code.
-
Purism ☛ Easy App Development: Text Forwarding
Playing around with mmcli, I noticed texts don’t stay on the modem; another process was handling these and removing them. Of course, this is just Chatty processing texts as it adds them to the user interface. As a simple way to quit chatty, the killall command is quick and dirty.
-
Purism ☛ Retain Your Control and Customize Everything with Modular Software
Default apps can all be edited, removed, or replaced. For example, our text messaging client Chatty works with the mmcli backend and is well-documented. Once you stop the default messaging client, you can make your own texting system with these basics.
-
Brian Callahan ☛ 2024-01-22: Can GCC use Clang as its assembler?
How to use LLVM as the assembler for GCC, for FreeBSD and other systems
-
Paul Tagliamonte: Writing a simulator to check phased array beamforming 🌀
If you're on the Fediverse, I'd very much appreciate boosts on my toot!
While working on hz.tools, I started to move my beamforming code from 2-D (meaning, beamforming to some specific angle on the X-Y plane for waves on the X-Y plane) to 3-D. I’ll have more to say about that once I get around to publishing the code as soon as I’m sure it’s not completely wrong, but in the meantime I decided to write a simple simulator to visually check the beamformer against the textbooks. The results were pretty rad, so I figured I’d throw together a post since it’s interesting all on its own outside of beamforming as a general topic.
-
Firefox Nightly: Happy New Year – These Weeks in Firefox: Issue 152
-
Perl / Raku
-
Rakulang ☛ Rakudo Weekly 2024.04 Marrow
Scott Sotka introduced the Marrow distribution, which is basically a “Look at a database and create a Cro application for it” application. Currently only Postgresql databases are supported, and with still some database prerequisites, but definitely an interesting development in the ecosystem of the Raku Programming Language!
-
-
R
-
Dirk Eddelbuettel ☛ Dirk Eddelbuettel: x13binary 1.1.60 on CRAN: Upstream Update, Updated Build
The x13binary team is thrilled to share the availability of Release 1.1.60-1 of the x13binary by the US Census Bureau which arrived on CRAN earlier today.
This release brings the package up to speed with the most current release by the Census Bureau. More importantly, we finally made good on an old promise to ourselves and now install the binary by compiling from its Fortran sources! No more pre-made binaries. This required some work by Kirill, Michael, and Jeroen to finalize matter because, as we all know, the CRAN build processes and tool chains can be a little byzantine in their details. Use on platforms not covered by binaries from CRAN (or r-universe) should just work too as the demands on the (Fortran) compiler are fairly standard. All in all the build is fairly lightweight and quick even when rebuilding from source.
-
Rlang ☛ Demystifying bootstrap_stat_plot(): Your Ticket to Insightful Data Exploration
Ever feel like your data is hiding secrets? Like it’s whispering truths but you just can’t quite grasp them? Well, fear not, fellow data sleuths!
-
Rlang ☛ Website Relaunch
It’s been long time since we updated the Forwards website. At some point our continuous integration workflow stopped working and we didn’t have time to fix it.
-
-
Java
-
Red Hat ☛ Speed up Java application startup time with AppCDS
Application startup time for OpenJDK apps can be important for cloud use cases. Start/stop cycles are much more frequent for an application deployed in Kubernetes since configuration changes usually result in a new deployment—a.k.a restart—of the application. Oftentimes, changing something as simple as an environment variable results in redeployments. The time it takes until the application is ready to handle requests matters. In this article, we’ll show how application class data sharing (AppCDS) can help reduce startup time of your Java application.
In our example, we achieve a startup time as low as ~440 milliseconds or ~47% faster than the corresponding startup time without AppCDS. The actual numbers will vary depending on the precise deployment and resource configuration in use as well as on the nature of the application itself. Nevertheless, AppCDS is an OpenJDK feature well worth looking into.
-
TecMint ☛ 12 Best Java IDE’s for GNU/Linux Developers
This article guide highlights the most widely used Java IDEs for developing Java applications.
-