From 9df5a746566bc0100eb41a2d6a7d79d0f91a727f Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Fri, 24 Jul 2026 20:33:47 +0300 Subject: Update content for gemtext --- gemfeed/atom.xml | 148 +++++++++++++++++++++++++++---------------------------- 1 file changed, 74 insertions(+), 74 deletions(-) (limited to 'gemfeed') diff --git a/gemfeed/atom.xml b/gemfeed/atom.xml index 863887e8..bb6e1e36 100644 --- a/gemfeed/atom.xml +++ b/gemfeed/atom.xml @@ -1,6 +1,6 @@ - 2026-07-08T17:49:04+03:00 + 2026-07-24T20:33:03+03:00 foo.zone feed To be in the .zone! @@ -28,7 +28,7 @@
Hexai has been an undercover pet project of mine since around mid-last year. As I write this it is at version 0.42.1, so it has been quietly growing for a good while before this first proper write-up.

-Hexai source code
+Hexai source code
Helix editor

Hexai logo
@@ -72,10 +72,10 @@ by Lorenzo Bettini http://www.lorenzobettini.it http://www.gnu.org/software/src-highlite --> -
go install codeberg.org/snonux/hexai/cmd/hexai@latest
-go install codeberg.org/snonux/hexai/cmd/hexai-lsp-server@latest
-go install codeberg.org/snonux/hexai/cmd/hexai-tmux-action@latest
-go install codeberg.org/snonux/hexai/cmd/ask@latest
+
go install github.com/snonux/hexai/cmd/hexai@latest
+go install github.com/snonux/hexai/cmd/hexai-lsp-server@latest
+go install github.com/snonux/hexai/cmd/hexai-tmux-action@latest
+go install github.com/snonux/hexai/cmd/ask@latest
 

If you prefer to build from a checkout, Hexai uses Mage:
@@ -375,8 +375,8 @@ Tags: agent
This is where it becomes useful for agentic coding. There is an agent skill and a slash command built on top of ask: the agent-task-management skill knows how to read and update the ask task list, and the /work-on-tasks command uses that skill to work through a whole backlog on its own — pick the next actionable task, hand it to a fresh sub-agent, mark it done, and continue until nothing actionable is left. That is pretty useful after a planning session where you created a bunch of tasks with their proper dependencies set: point the agent at the project, run /work-on-tasks, and it chews through the queue one task at a time.

-agent-task-management skill
-/work-on-tasks command
+agent-task-management skill
+/work-on-tasks command

Running multiple providers side by side



@@ -456,7 +456,7 @@ Reads a file and echoes each line. Returns early on open errors. These are from Mastodon and LinkedIn. Have a look at my about page for my social media profiles. This list is generated with Gos, my social media platform sharing tool.

My about page
-https://codeberg.org/snonux/gos
+https://github.com/snonux/gos

Table of Contents



@@ -1525,7 +1525,7 @@ int main(void) {
If you want the full feature guide, the README links to a detailed doc for every feature covered here and more:

-gt on Codeberg
+gt on Codeberg
gt logo

The whole thing — code, tests, documentation, even the logo — was built using only LLMs that can run locally on reasonable hardware: Qwen, Gemma, Nemotron, GPT-OSS. To be honest, I didn't run them locally either — I rented Hyperstack VMs with NVidia GPU just to get a feel for the quality before investing in hardware. The point was to test models that don't require a cloud API and could realistically run on your own box.
@@ -2087,7 +2087,7 @@ http://www.gnu.org/software/src-highlite --> by Lorenzo Bettini http://www.lorenzobettini.it http://www.gnu.org/software/src-highlite --> -
go install codeberg.org/snonux/gt/cmd/gt@latest
+
go install github.com/snonux/gt/cmd/gt@latest
 

Or from the source directory: mage install.
@@ -2100,7 +2100,7 @@ http://www.gnu.org/software/src-highlite -->
For the complete and always-up-to-date feature guide, detailed docs for every feature, and the source code, head to the repo.

-gt on Codeberg
+gt on Codeberg

But will I now invest a couple of thousand dollars in hardware to run Qwen 3 Coder Next, Qwen 3.6 35B or 27B? (I used the dense 27B model most of the time to build gt). Unfortunately, no. I don't think it's worth the cost yet, as cloud models are still cheaper and more convenient and the frontier ones also much more "intelligent".

@@ -2139,7 +2139,7 @@ http://www.gnu.org/software/src-highlite -->
Live flamegraph

-I/O Riot NG on Codeberg
+I/O Riot NG on Codeberg

2026-05-08 Unveiling I/O Riot NG — Part 1: a guided tour
2026-05-11 Unveiling I/O Riot NG — Part 2: install and compile once, run everywhere
@@ -2362,7 +2362,7 @@ NOTHING SUSPICIOUS — no unexpected processes, no surprise paths outside /proc,
That's the bottom of the stack. For the dashboard surface (what ior looks like, how the seven tabs behave, how filtering and recording work in practice) Part 1 is the demo-driven tour with all the GIFs. For the install dance and the why-the-binary-is-portable story (eBPF, CO-RE, static linking), Part 2 is the install + portability companion.

-Source on Codeberg
+Source on Codeberg

E-Mail your comments to paul@nospam.buetow.org :-)

@@ -2426,7 +2426,7 @@ NOTHING SUSPICIOUS — no unexpected processes, no surprise paths outside /proc, by Lorenzo Bettini http://www.lorenzobettini.it http://www.gnu.org/software/src-highlite --> -
git clone https://codeberg.org/snonux/ior ~/git/ior
+
git clone https://github.com/snonux/ior ~/git/ior
 cd ~/git/ior
 mage buildDocker
 
@@ -2485,7 +2485,7 @@ sudo cp -v zstd-1.5.5/ # 5) Clone ior + libbpfgo, pin libbpfgo, build the static libbpf archive, install mage. mkdir -p ~/git -git clone https://codeberg.org/snonux/ior ~/git/ior +git clone https://github.com/snonux/ior ~/git/ior git clone https://github.com/aquasecurity/libbpfgo ~/git/libbpfgo git -C ~/git/libbpfgo checkout v0.9.2-libbpf-1.5.1 git -C ~/git/libbpfgo submodule update --init --recursive @@ -2704,7 +2704,7 @@ Old I/O Riot (Systemtap) New ior (libbpf + CO-RE) 2026-05-11 Unveiling I/O Riot NG — Part 2: install and compile once, run everywhere
2026-05-17 Unveiling I/O Riot NG — Part 3: under the hood

-I/O Riot NG on Codeberg
+I/O Riot NG on Codeberg
the original I/O Riot post (2018)

Table of Contents


@@ -2920,8 +2920,8 @@ http://www.gnu.org/software/src-highlite -->
For installing it and the eBPF / CO-RE / static-linking story (why one build runs on every other Linux box you scp it to), see Part 2. For the per-event schema, async-syscall caveats, the probe-generator safeguard against missing new kernel syscalls, and post-mortem SQL on the parquet output, see Part 3.

-Source on Codeberg
-The full in-repo tutorial
+Source on Codeberg
+The full in-repo tutorial

Read the next post of the series:

@@ -3063,7 +3063,7 @@ http://www.gnu.org/software/src-highlite -->
The installation lives in the config repo:

-codeberg.org/snonux/conf/f3s/argocd
+github.com/snonux/conf/f3s/argocd

I deployed it using Helm via a Justfile:

@@ -3160,7 +3160,7 @@ argocd-server-6b9c4b4f8d-kxw7p 1 I didn't want ArgoCD pulling from Codeberg over the internet every time it checks for changes. If Codeberg is down (or my internet is), the cluster can't reconcile. So I set up a Git server inside the cluster itself.

-codeberg.org/snonux/conf/f3s/git-server (at 190473b)
+github.com/snonux/conf/f3s/git-server (at 190473b)

The git-server runs as a single pod in the cicd namespace with two containers sharing a PVC:

@@ -3181,7 +3181,7 @@ http://git-server.cicd.svc.cluster.local/conf.git
 # argocd-apps/cicd/git-server.yaml
 source:
-  repoURL: https://codeberg.org/snonux/conf.git
+  repoURL: https://github.com/snonux/conf.git
   targetRevision: master
   path: f3s/git-server/helm-chart
 
@@ -3571,11 +3571,11 @@ webdav https://kubernetes.default.svc services default
All the config lives here:

-codeberg.org/snonux/conf/f3s
+github.com/snonux/conf/f3s

ArgoCD Application manifests organized by namespace:

-codeberg.org/snonux/conf/f3s/argocd-apps
+github.com/snonux/conf/f3s/argocd-apps

I can't imagine going back to running Helm commands manually.

@@ -3621,7 +3621,7 @@ webdav https://kubernetes.default.svc services default
This is the third and final blog post of the Distributed Systems Simulator series. This part covers advanced simulation examples, the Raft consensus protocol, and the extensible Protocol API.

-ds-sim on Codeberg (modernized, English-translated version)
+ds-sim on Codeberg (modernized, English-translated version)

These are all the posts of this series:

@@ -3877,8 +3877,8 @@ http://www.gnu.org/software/src-highlite -->
  • 208 unit tests
  • 269 configurable settings

  • -ds-sim source code on Codeberg
    -vs-sim source code on Codeberg (original German version, 2008)
    +ds-sim source code on Codeberg
    +vs-sim source code on Codeberg (original German version, 2008)

    Other related posts are:

    @@ -3911,7 +3911,7 @@ http://www.gnu.org/software/src-highlite -->
    This is the second blog post of the Distributed Systems Simulator series. This part covers all 10 built-in protocols with examples.

    -ds-sim on Codeberg (modernized, English-translated version)
    +ds-sim on Codeberg (modernized, English-translated version)

    These are all the posts of this series:

    @@ -4301,7 +4301,7 @@ Programmed Reliable Multicast Events:
    This is the first blog post of the Distributed Systems Simulator series, written for the recent v1.1.0 release. It explores the Java-based Distributed Systems Simulator program I created as my diploma thesis at the Aachen University of Applied Sciences (August 2008). The simulator offers both built-in implementations of common distributed systems algorithms and an extensible framework that allows researchers and practitioners to implement and test their own custom protocols within the simulation environment.

    -ds-sim on Codeberg (modernized, English-translated version)
    +ds-sim on Codeberg (modernized, English-translated version)

    These are all the posts of this series:

    @@ -4357,7 +4357,7 @@ Programmed Reliable Multicast Events:
     # Clone the repository
    -git clone https://codeberg.org/snonux/ds-sim.git
    +git clone https://github.com/snonux/ds-sim.git
     cd ds-sim
     
     # Set JAVA_HOME if needed (e.g. on Fedora Linux)
    @@ -4384,7 +4384,7 @@ mvn package -DskipTests
     
    The project also includes 208 unit tests that can be run with mvn test. Example simulation files for all built-in protocols are included in the saved-simulations/ directory.

    -ds-sim source code on Codeberg
    +ds-sim source code on Codeberg

    Fundamentals



    @@ -4654,7 +4654,7 @@ Message Colors:
    Because of that metaprogramming support, Ruby is a great fit for DSLs. You can get very close to natural language without inventing a brand-new syntax. RCM leans into that: the goal is to read a configuration and understand what happens without jumping between multiple files or templating languages.

    -RCM repo on Codeberg
    +RCM repo on Codeberg

    How the DSL feels



    @@ -5119,7 +5119,7 @@ http://www.gnu.org/software/src-highlite -->
    Loadbars can connect to hundreds of servers in parallel; the GIF above doesn't do it justice — at scale you get a wall of bars that makes it easy to spot outliers and compare hosts at a glance.

    -Loadbars on Codeberg
    +Loadbars on Codeberg

    Table of Contents



    @@ -5539,9 +5539,9 @@ bind-key e run-shell -b "tmux display-message -p '#{pane_id}'
    And here is the full script. It is a bit ugly since it's shell (written with Cursor Agent with GPT-5.2-Codex), and I might (let) rewrite it in Go with proper unit tests, config-file, multi-agent support and release it once I have time. But it works well enough for now.

    -Update 2026-02-08: This functionality has been integrated into the hexai project (https://codeberg.org/snonux/hexai) with proper multi-agent support for Cursor Agent, Claude Code CLI, and Ampcode. The hexai version includes unit tests, configuration files, and better agent detection. While still experimental, it's more robust than this shell script. See the hexai-tmux-edit command for details.
    +Update 2026-02-08: This functionality has been integrated into the hexai project (https://github.com/snonux/hexai) with proper multi-agent support for Cursor Agent, Claude Code CLI, and Ampcode. The hexai version includes unit tests, configuration files, and better agent detection. While still experimental, it's more robust than this shell script. See the hexai-tmux-edit command for details.

    -https://codeberg.org/snonux/hexai
    +https://github.com/snonux/hexai

    -
    $ git clone https://codeberg.org/snonux/conf.git
    +
    $ git clone https://github.com/snonux/conf.git
     $ cd conf
     $ git checkout 15a86f3  # Last commit before ArgoCD migration
     $ cd f3s/prometheus/
    @@ -8813,7 +8813,7 @@ http://www.gnu.org/software/src-highlite -->
     The configuration repository contains a Justfile that automates the deployment. just is a handy command runner—think of it as a simpler, more modern alternative to make. I use it throughout the f3s repository to wrap repetitive Helm and kubectl commands:

    just - A handy way to save and run project-specific commands
    -codeberg.org/snonux/conf/f3s/prometheus
    +github.com/snonux/conf/f3s/prometheus

    To install everything:

    @@ -8893,7 +8893,7 @@ etcd_server_has_leader 1
    The full persistence-values.yaml and all other Prometheus configuration files are available on Codeberg:

    -codeberg.org/snonux/conf/f3s/prometheus
    +github.com/snonux/conf/f3s/prometheus

    The persistent volume definitions bind to specific paths on the NFS share using hostPath volumes—the same pattern used for other services in Part 7:

    @@ -8943,7 +8943,7 @@ http://www.gnu.org/software/src-highlite -->
    The Loki configuration also lives in the repository:

    -codeberg.org/snonux/conf/f3s/loki
    +github.com/snonux/conf/f3s/loki

    To install:

    @@ -9307,7 +9307,7 @@ spec:
    This file is saved as freebsd-recording-rules.yaml and applied as part of the Prometheus installation. The os="freebsd" label (set in the scrape config) ensures these rules only apply to FreeBSD hosts. After applying, the memory panels in the Node Exporter dashboards populate correctly for FreeBSD.

    -freebsd-recording-rules.yaml on Codeberg
    +freebsd-recording-rules.yaml on Codeberg

    Disk I/O metrics limitation



    @@ -9618,8 +9618,8 @@ zfs_pool_free_bytes{pool="zdata"} 3.48809678848e+11
    All ZFS-related configuration files are available on Codeberg:

    -zfs-recording-rules.yaml on Codeberg
    -zfs-dashboards.yaml on Codeberg
    +zfs-recording-rules.yaml on Codeberg
    +zfs-dashboards.yaml on Codeberg

    Monitoring external OpenBSD hosts



    @@ -9742,7 +9742,7 @@ spec:
    This file is saved as openbsd-recording-rules.yaml and applied alongside the FreeBSD rules. Note that OpenBSD doesn't expose a buffer memory metric, so that rule is omitted.

    -openbsd-recording-rules.yaml on Codeberg
    +openbsd-recording-rules.yaml on Codeberg

    After running just upgrade, the OpenBSD hosts appear in Prometheus targets and the Node Exporter dashboards.

    @@ -9762,8 +9762,8 @@ spec:
    All configuration files are available on Codeberg:

    -Prometheus, Grafana, and recording rules configuration
    -Loki and Alloy configuration
    +Prometheus, Grafana, and recording rules configuration
    +Loki and Alloy configuration

    Other *BSD-related posts:

    @@ -10125,7 +10125,7 @@ perl /usr/local/bin/foostats.pl --parse-logs --replicate --report
    The complete source lives on Codeberg here:

    -Foostats on Codeberg
    +Foostats on Codeberg

    Now let's go to some new Perl features:

    @@ -10752,7 +10752,7 @@ p hash.values_at(:a, :c) by Lorenzo Bettini http://www.lorenzobettini.it http://www.gnu.org/software/src-highlite --> -
    $ git clone https://codeberg.org/snonux/conf.git
    +
    $ git clone https://github.com/snonux/conf.git
     $ cd conf
     $ git checkout 15a86f3  # Last commit before ArgoCD migration
     $ cd f3s/
    @@ -11612,7 +11612,7 @@ LAN → FreeBSD CARP VIP (192.168.1.138)
     
    First, install cert-manager to handle certificate lifecycle management for LAN services. The installation is automated with a Justfile:

    -codeberg.org/snonux/conf/f3s/cert-manager
    +github.com/snonux/conf/f3s/cert-manager

    by Lorenzo Bettini http://www.lorenzobettini.it http://www.gnu.org/software/src-highlite --> -
    $ git clone https://codeberg.org/snonux/conf/f3s.git
    +
    $ git clone https://github.com/snonux/conf/f3s.git
     $ cd conf/f3s/examples/conf/f3s/registry
     $ helm upgrade --install registry ./helm-chart --namespace infra --create-namespace
     
    @@ -15683,7 +15683,7 @@ http://www.gnu.org/software/src-highlite --> These are from Mastodon and LinkedIn. Have a look at my about page for my social media profiles. This list is generated with Gos, my social media platform sharing tool.

    My about page
    -https://codeberg.org/snonux/gos
    +https://github.com/snonux/gos

    Table of Contents



    @@ -16286,7 +16286,7 @@ http://www.gnu.org/software/src-highlite -->
    Before wiping the pre-installed #Windows 11 Pro on my new Beelink mini PC, I tested #WSL2 with #Fedora #Linux. I compiled my pet project, I/O Riot NG (ior), which requires many system libraries, including #BPF. I’m impressed—everything works just like on native Fedora, and my tool runs and traces I/O syscalls with BPF out of the box. I might would prefer now Windows over MacOS if I had to chose between those two for work.

    -codeberg.org/snonux/ior
    +github.com/snonux/ior

    Some might hate me saying this, but didnt ...



    @@ -16480,7 +16480,7 @@ http://www.gnu.org/software/src-highlite -->
    Go to:

    -https://codeberg.org/snonux/tasksamurai
    +https://github.com/snonux/tasksamurai

    And follow the README.md!

    @@ -17217,7 +17217,7 @@ PersistentKeepalive = 25
    I have written a Ruby script wireguardmeshgenerator.rb to do this for our purposes:

    -https://codeberg.org/snonux/wireguardmeshgenerator
    +https://github.com/snonux/wireguardmeshgenerator

    I use Fedora Linux as my main driver on my personal Laptop, so the script was developed and tested only on Fedora Linux. However, it should also work on other Linux and Unix-like systems.

    @@ -17227,7 +17227,7 @@ PersistentKeepalive = 25 by Lorenzo Bettini http://www.lorenzobettini.it http://www.gnu.org/software/src-highlite --> -
    > git clone https://codeberg.org/snonux/wireguardmeshgenerator
    +
    > git clone https://github.com/snonux/wireguardmeshgenerator
     > cd ./wireguardmeshgenerator
     > bundle install
     > sudo dnf install -y wireguard-tools
    @@ -19232,7 +19232,7 @@ http://www.gnu.org/software/src-highlite -->
     
    You can find the repository here:

    -https://codeberg.org/snonux/sillybench
    +https://github.com/snonux/sillybench

    Silly FreeBSD host benchmark



    @@ -19244,7 +19244,7 @@ http://www.lorenzobettini.it http://www.gnu.org/software/src-highlite -->
    paul@f0:~ % doas pkg install git go
     paul@f0:~ % mkdir ~/git && cd ~/git && \
    -  git clone https://codeberg.org/snonux/sillybench && \
    +  git clone https://github.com/snonux/sillybench && \
       cd sillybench
     

    @@ -19260,12 +19260,12 @@ go version go1.24.1 freebsd/amdtest -bench=. goos: freebsd goarch: amd64 -pkg: codeberg.org/snonux/sillybench +pkg: github.com/snonux/sillybench cpu: Intel(R) N100 BenchmarkCPUSilly1-4 1000000000 0.4022 ns/op BenchmarkCPUSilly2-4 1000000000 0.4027 ns/op PASS -ok codeberg.org/snonux/sillybench 0.891s +ok github.com/snonux/sillybench 0.891s

    Silly Rocky Linux VM @ Bhyve benchmark


    @@ -19278,7 +19278,7 @@ http://www.lorenzobettini.it http://www.gnu.org/software/src-highlite -->
    [root@r0 ~]# dnf install golang git
     [root@r0 ~]# mkdir ~/git && cd ~/git && \
    -  git clone https://codeberg.org/snonux/sillybench && \
    +  git clone https://github.com/snonux/sillybench && \
       cd sillybench
     

    @@ -19293,7 +19293,7 @@ go version go1.22.9 (Red Hat [root@r0 sillybench]# go test -bench=. goos: linux goarch: amd64 -pkg: codeberg.org/snonux/sillybench +pkg: github.com/snonux/sillybench cpu: Intel(R) N100 BenchmarkCPUSilly1-4 1000000000 0.4347 ns/op BenchmarkCPUSilly2-4 1000000000 0.4345 ns/op @@ -19314,12 +19314,12 @@ http://www.gnu.org/software/src-highlite -->
    root@freebsd:~/git/sillybench # go test -bench=.
     goos: freebsd
     goarch: amd64
    -pkg: codeberg.org/snonux/sillybench
    +pkg: github.com/snonux/sillybench
     cpu: Intel(R) N100
     BenchmarkCPUSilly1      1000000000               0.4273 ns/op
     BenchmarkCPUSilly2      1000000000               0.4286 ns/op
     PASS
    -ok      codeberg.org/snonux/sillybench  0.949s
    +ok      github.com/snonux/sillybench  0.949s
     

    It's a bit better than Linux! I am sure that this is not really a scientific benchmark, so take the results with a grain of salt!
    @@ -19628,7 +19628,7 @@ etcd_disk_wal_fsync_duration_seconds_bucket{le="0.004"} 408 I used Buffer.com to schedule and post my social media messages for a long time. However, over time, there were more problems with that service, including a slow and unintuitive UI, and the free version only allows scheduling up to 10 messages. At one point, they started to integrate an AI assistant (which would seemingly randomly pop up in separate JavaScript-powered input boxes), and then I had enough and decided I had to build my own social sharing tool—and Gos was born.

    https://buffer.com
    -https://codeberg.org/snonux/gos
    +https://github.com/snonux/gos

    Gos features



    @@ -19658,7 +19658,7 @@ etcd_disk_wal_fsync_duration_seconds_bucket{le="0.004"} 408 by Lorenzo Bettini http://www.lorenzobettini.it http://www.gnu.org/software/src-highlite --> -
    git clone https://codeberg.org/snonux/gos.git
    +
    git clone https://github.com/snonux/gos.git
     cd gos
     

    @@ -19946,7 +19946,7 @@ http://www.gnu.org/software/src-highlite -->
    gos --gemtexterEnable --geminiSummaryFor 202410,202411,202412
     

    -Gemtexter
    +Gemtexter

    In case there are HTTP links that translate directly to the Geminispace for certain capsules, specify the Gemini capsules as a comma-separated list as follows:

    @@ -20917,7 +20917,7 @@ Jan 26 17:36:32 f2 apcupsd[2159]: apcupsd shutdown succeeded These are from Mastodon and LinkedIn. Have a look at my about page for my social media profiles. This list is generated with Gos, my social media platform sharing tool.

    My about page
    -https://codeberg.org/snonux/gos
    +https://github.com/snonux/gos

    Table of Contents



    -- cgit v1.2.3