RSSAmplifier

Blog

Home on codebase

Recent content in Home on codebase

codebase.zoneRSS feed ↗147 posts

Latest posts

how to asses a hype

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…

frontmatter

quoting in dynamic values 
 It’s a bit counterintuitive, but the following works, no escaping of the double quotes is required:

Stop Targeting Junior Devs

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…

Endlich: ein xDD zum aktuellen Hype um LLMs

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.

a quick vi survival guide

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.

CI/CD server landscape in 2026

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.

useful add-ons

This is a collection of useful CLI utilities, which usually are not by default installed by GNU/Linux distributions.

Unified Kernel Images

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.

building an Unified Kernel Image with dracut

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

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.

UEFI glossary

Terms used in the domain of UEFI and related domains, and their abbreviation

Linux on UEFI platforms

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..

Linux userspace tools for UEFI firmware

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..

starting Payara Micro

starting Payara Micro from the command line 
 Here are the command line parameters that I use most often when starting Payara Micro:

quick client setup walkthrough

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:

dhcpd setup


 
 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.

wireless setup

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…

boot process on UEFI platforms

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.…

network setup with iproute2 and net-tools commands

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.

why I don't use AI tools for coding or writing in general

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

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.

psqlrc - the psql config file

The configuration file for psql is psqlrc . 
 There are several options for the location of the system-wide psqlrc :

dhcpcd setup

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.:

adding ssh keys for comfortable push/pull

With your ssh public key registered with Gitea, you can push and pull to and from Gitea without being asked for your password
for every action.

renaming the default branch of a repo in Gitea

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 .

run Gitea behind a proxy

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.

run Gitea with TLS

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.

gitignore files

Can be added to repos that are created with Gitea. gitignore files go into <gitea-install-dir>/conf/gitignore .

custom label files

Label files with labels to categorize issues/tickets go into <gitea-install-dir>/conf/options . &#xA; Gitea 1.19 introduced a pretty cool new label format. There is an example of a label file on the gitea GitHub page&#xA; Advanced.yaml .&#xA;At the time of writing the YAML example misses the three mandatory dashes &lsquo;&mdash;&rsquo;, that indicate the start of a new YAML document.

importing repos into Gitea

Repos that have been created outside gitea can be imported, or in Gitea speak adopted , and managed by Gitea.&#xA;I&rsquo;m using both terms import and adopt here.

issues and fixes

starting gitea with another user than defined in gitea.conf &#xA; results in: &#xA; &#xA;... 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&#xA;error: could not lock config file…

some notes on installing Gitea

I&rsquo;ve been running a heavily outdated version of Gitea. Rather than doing an update on it, I just reinstalled it.

interface naming schemes

there are several naming schemes in Linux: &#xA; &#xA; the &ldquo;traditional&rdquo; or &ldquo;classic&rdquo; naming scheme of the nineties with iface names eth0, eth1, wlan0, wlan1, etc.&#xA;Interfaces get their names assigned by the kernel on a first-come, first-serve policy as they are probed by the network&#xA;interface drivers. With nowadays complex hardware, this way of naming is no longer…

setting the kernel log level

kernel log levels &#xA; Messages sent by the kernel fall into 8 categories of log levels 0 to 7, with log level 0/KERN_EMERG having the highest&#xA;priority and log level 7/KERN_DEBUG having the lowest priority:

installing your own Root CA certificate

Before you can install your own Root CA Certificate you need to set up your own CA (Certificate Authority).

XBPS package manager

working with the XBPS package manager.

date/time

dateFormat works only for secific date &#xA; the following works and renders on August 17th, 2025, the string 2025-08-17 :

hugo new

&#xA;rudolf@idoru:/opt/intra/site/dev/codebase/content/techdoc/frontend/hugo/code-shreds(main)$ hugo new section.md&#xA;Error: no existing content directory configured for this project&#xA; &#xA; hugo new only works as expected when invoked outside the content dir.&#xA;Additionally, the page kind is not automatically resolved but must be given with the argument -k <kind> .

page

section

getting a section &#xA; &#xA;{{- $rootSection := .Site.GetPage (print '/' .Section '/_index.md') -}}&#xA;

string

concatenating strings &#xA; Strings can be concatenated with print : &#xA; &#xA;{{ $fruits := (print $someOtherFruits ' kiwi' ' banana' ) }}&#xA;

setting the system and hardware clock

TLDR? Head straight to putting it all together . &#xA; time formats UTC and local time; time zones &#xA; The world&rsquo;s primary time standard is UTC , which is short for Coordinated Universal Time .&#xA;UTC is defined as the time at the meridian with a longitude of 0°.&#xA;It is the successor of GMT , Greenwich Median Time (Greenwich, UK, is located at the meridian with longitude 0°).

how to prevent your home dir from getting littered

For most Linux distributions, even in a pristine bare minimum installation, the home directory&#xA;of a user is already littered with a bunch of .whatever files and directories,&#xA;that contain program configurations, colloquially called dot-files. This gets worse over time,&#xA;as more programs are installed and used.

switch

traditional switch statement &#xA; The traditional switch statement has a test expression and a switch code block.&#xA;In a switch code block, only switch statements are allowed.&#xA;A switch statement starts with a case label and a value or a default label,&#xA;followed by a colon, followed by one or more statements;

basic git concepts

overview of a git repo &#xA; The following picture shows the structure of a git repo and illustrates the flow of data between the repo&rsquo;s components.&#xA;The arrows also illustrate the workflow when working with git, with each arrow labeled with the corresponding git command&#xA;(i.e. add for the command git add ):

archiving git repos

There are three ways for creating an archive from a git repo:&#xA; git archive ,&#xA; git bundle ,&#xA;and plain tarballs. Spoiler: as long as you want to archive the local repo in its current state&#xA;&ndash;that is with uncommitted changes&ndash;&#xA;making a tarball from a git repo is not only the most simple&#xA;way to create an archive from a git repo, but also the best one.

editing EXIF data with ExifTool

so what is EXIF? &#xA; EXIF (Exchangeable Image File Format) is a standard format maintained by the Japan Electronic and Information&#xA;Technology Industries Association (JEITA) for metadata in digital images. EXIF is used&#xA;to tag image files with metadata like image width and height, bits per pixel, camera settings&#xA;like shutter speed and a whole host of other image specific data like the…

migrating Java Server Faces 2.3 to Jakarta Faces 4.0

Work in Progress &ndash; I&rsquo;m still in the transition from Java Server Faces 2.3 to Jakarta Faces 4.0&#xA;and will add here whatever I will encounter. &#xA; Jakarta Faces 3.0 didn&rsquo;t bring any new features or changes, but was just a renaming of the&#xA; javax.faces namespace to the jakarta.faces namespace. So I&#xA;did the migration straight from Java Server Faces 2.3 to Jakarta Faces…

migrating JPA 2.2 to 3.0

changes &#xA; There are no new features in JPA 3.0. The changes in 3.0 just reflect the transition from&#xA;Java EE to Jakarta EE by renaming the prefix of the JPA API packages, renaming the prefix of config vars&#xA;in config files like persistence.xml and introducing the new Jakarta specific namespace&#xA;for XML config files.&#xA;Additionally, avoiding the use of the name Java avoids legal…

Jakarta Faces performance tuning

approaches to apply right from the start &#xA; &#xA; prefer HTML over JSF tags. &#xA; no logic in getters (can be called multiple times) &ndash; especially for the rendered attribute. &#xA; avoid logic in EL expressions. &#xA; avoid using h:outputText. instead, use an EL expressions. &#xA; if you need to escape HTML, it&rsquo;s better to use an EL function. &#xA; use AJAX where possible. &#xA;…