The genAI hype is crashing against reality. The profits that the use of genAI have been promised have not
materialized. No near-total white-collar jobs wipe-out happened, as some doomsday fortune-teller predicted.
Companies re-hire call center agents they fired a while ago. Seems that genAI chatbots wasn’t such a good bet.
Codebases are more bug-ridden than ever. Using genAI…
The recurring theme of the disappearing developer … Now it’s the undergraduate students and junior devs who are getting targeted.
From low-code, no-code, ADF to outsourcing, from time to time crops up some “innovative” way to replace lots if not almost
all of those pesky devs that take just too much time to churn out the stuff we want from them. Didn’t work…
BDD, MDD, TDD und andere DDs haben mir und den Teams, mit denen ich gute Software bauen konnte, nicht besonders viel
gebracht oder wurden gar nicht erst eingesetzt. Domain Driven Design nehme ich hier raus, dazu gleich mehr.
This is for when you get stuck with an abomination of an editor called vi.
No sophisticated vi-foo here, this is just the basics that get you covered for simple editing of files.
It’s been a while since I have checked what is going on in the development of CI/CD servers. I’ve worked extensively
with Bamboo and TeamCity, and have a fair amount of exposure to GitLab and GitHub. Time for a quick survey.
A Unified Kernel Image (UKI) is a combination of an UEFI boot stub, a Linux kernel, and further (optional) resources
like an initrd, all combined into a single UEFI image. This file can either be directly invoked by the UEFI firmware bootloader
or by a bootloader like rEFInd or an OS’ bootloader.
The dracut man page describes dracut as a ’low-level tool for generating an initramfs/initrd image’, but with ‘uefi=yes’ in dracut’s config, dracut builds an UEFI image that is executable by an UEFI firmware. This is perfect for building an Unified Kernel Image.
UEFI Images are a class of files that contain executable code, aka EFI applications. UEFI images can be loaded and
executed by an UEFI firmware.
The first set of bytes in the UEFI
Image file contains an image header that defines the encoding of the executable image.
Various information on working with UEFI in Linux, i.e., access to UEFI firmware variables, security considerations for accessing UEFI firmware variables, UEFI features in Linux, etc..
Information on some Linux userspace tools for working with UEFI firmware, i.e. how to register a Linux kernel with the UEFI firmware boot manager, reading and manipulating UEFI firmware variables, building an UKI, etc..
This walkthrough is for a quick client machine network setup by hand. The examples are for a fictive client machine with
the following client and network values:

 
 dhcpcd reached its EOL in the end of 2022 and is now superseded by kea . 
 
 One reason to use dhcpd any longer is when a migration is to kea 
version 1.9.1 or later is not possible.
preparations 
 check if wlan0 is powered up 
 
 iwlist wlan0 power
 
 list available networks with iwlist 
 
 iwlist wlan0 scanning
 
 generate config block for SSID with wpa_passphrase 
 wpa_passphrase computes a 256-bit PSK and generates a configuration block for the network
with the SSID (Service Set Identifier) or ESSID (Extended Service Set…
The UEFI specification is no fun read and for some topics, I found it hard to understand. This document describes the boot process on UEFI platform from the moment a machine is powered up until the moment the OS takes control over the machine. I put this document together from information from the UEFI spec and some other sources. Running Intel CPU’s, I focus on the Intel platform here.…
In Linux, the network setup of a machine is done with the iproute2 tools. The iproute tools supersede
the now obsolete net-tools, which include, among others, the well known ifconfig ,
 route and netstat commands.
If I tell people that I don’t to use AI tools for coding or my site, I see incredulous looks and get remarks from which
I conclude that people see me in the backwards camp. I use the following rule that has proven itself in science, when
I evaluate new tools and techniques: the more outrageous the claim, the more convincing the arguments for supporting
it must be. Some simple…
ANSI escape codes (more formally, ANSI escape sequences) are in-band signaling codes to control cursor location,
color, and a bunch of other options on command line terminals.
dhcpcd (Dynamic Host Configuration Protocol Client Demon) is the demon responsible for querying a
DHCP server (i.e., ISC kea) and configure the machine for the network it is about to join from the lease it receives
from the DHCP server. A DHCP lease contains configuration values, i.e.:
I was already tired for a while that the default repo name in git was master . So I took the opportunity when
updating Gitea to rename the default branch of the corresponding git repos to main .
This has the advantage that I don’t have to remember the port on which Gitea is running and can just type
 https://idoru/gitea into my browser’s address bar.
You need two certificates: the certificate chain to the Root CA and the certificate for gitea.
I’m running an own root CA in my LAN (mostly for fun and educational purpose) and issued a cert for gitea.
Label files with labels to categorize issues/tickets go into <gitea-install-dir>/conf/options . 
 Gitea 1.19 introduced a pretty cool new label format. There is an example of a label file on the gitea GitHub page
 Advanced.yaml .
At the time of writing the YAML example misses the three mandatory dashes ‘—’, that indicate the start of a new YAML document.
Repos that have been created outside gitea can be imported, or in Gitea speak adopted , and managed by Gitea.
I’m using both terms import and adopt here.
starting gitea with another user than defined in gitea.conf 
 results in: 
 
... routers/init.go:74:mustInitCtx() [F] code.gitea.io/gitea/modules/git.InitFull(ctx) failed: failed to set git global config diff.algorithm, err: exit status 255 - warning: unable to access '/home/rudolf/.config/git/gitconfig': Permission denied
error: could not lock config file…
there are several naming schemes in Linux: 
 
 the “traditional” or “classic” naming scheme of the nineties with iface names eth0, eth1, wlan0, wlan1, etc.
Interfaces get their names assigned by the kernel on a first-come, first-serve policy as they are probed by the network
interface drivers. With nowadays complex hardware, this way of naming is no longer…
kernel log levels 
 Messages sent by the kernel fall into 8 categories of log levels 0 to 7, with log level 0/KERN_EMERG having the highest
priority and log level 7/KERN_DEBUG having the lowest priority:

rudolf@idoru:/opt/intra/site/dev/codebase/content/techdoc/frontend/hugo/code-shreds(main)$ hugo new section.md
Error: no existing content directory configured for this project
 
 hugo new only works as expected when invoked outside the content dir.
Additionally, the page kind is not automatically resolved but must be given with the argument -k <kind> .
TLDR? Head straight to putting it all together . 
 time formats UTC and local time; time zones 
 The world’s primary time standard is UTC , which is short for Coordinated Universal Time .
UTC is defined as the time at the meridian with a longitude of 0°.
It is the successor of GMT , Greenwich Median Time (Greenwich, UK, is located at the meridian with longitude 0°).
For most Linux distributions, even in a pristine bare minimum installation, the home directory
of a user is already littered with a bunch of .whatever files and directories,
that contain program configurations, colloquially called dot-files. This gets worse over time,
as more programs are installed and used.
traditional switch statement 
 The traditional switch statement has a test expression and a switch code block.
In a switch code block, only switch statements are allowed.
A switch statement starts with a case label and a value or a default label,
followed by a colon, followed by one or more statements;
overview of a git repo 
 The following picture shows the structure of a git repo and illustrates the flow of data between the repo’s components.
The arrows also illustrate the workflow when working with git, with each arrow labeled with the corresponding git command
(i.e. add for the command git add ):
There are three ways for creating an archive from a git repo:
 git archive ,
 git bundle ,
and plain tarballs. Spoiler: as long as you want to archive the local repo in its current state
–that is with uncommitted changes–
making a tarball from a git repo is not only the most simple
way to create an archive from a git repo, but also the best one.
so what is EXIF? 
 EXIF (Exchangeable Image File Format) is a standard format maintained by the Japan Electronic and Information
Technology Industries Association (JEITA) for metadata in digital images. EXIF is used
to tag image files with metadata like image width and height, bits per pixel, camera settings
like shutter speed and a whole host of other image specific data like the…
Work in Progress – I’m still in the transition from Java Server Faces 2.3 to Jakarta Faces 4.0
and will add here whatever I will encounter. 
 Jakarta Faces 3.0 didn’t bring any new features or changes, but was just a renaming of the
 javax.faces namespace to the jakarta.faces namespace. So I
did the migration straight from Java Server Faces 2.3 to Jakarta Faces…
changes 
 There are no new features in JPA 3.0. The changes in 3.0 just reflect the transition from
Java EE to Jakarta EE by renaming the prefix of the JPA API packages, renaming the prefix of config vars
in config files like persistence.xml and introducing the new Jakarta specific namespace
for XML config files.
Additionally, avoiding the use of the name Java avoids legal…
approaches to apply right from the start 
 
 prefer HTML over JSF tags. 
 no logic in getters (can be called multiple times) – especially for the rendered attribute. 
 avoid logic in EL expressions. 
 avoid using h:outputText. instead, use an EL expressions. 
 if you need to escape HTML, it’s better to use an EL function. 
 use AJAX where possible. 
…