Luke T. Shumaker » imworkingon

Luke is working on
improving the GNU/Linux ecosystem

The "In-progress work" and "Completed work" sections do not include routine maintenance on Parabola GNU/Linux-libre, which is also a solid chunk of what I do.

If you find this work valuable, please consider sponsoring me.

In-progress work 🔗

Ruby's standard JSON gem (which comes bundled with the core Ruby distribution!).

Last updated: by byroot
Status: closed

ruby-json contains code that is not Free under the FSF's definition, not Open Source under the OSI's definition, and not GPL-compatible. This has caused much consternation among folks who care about any of those 3 things.

This PR replaces that non-Free code with Free code, removing friction for Ruby users on GNU/Linux distros that care about those 3 things.

Last updated: by segaja
Status: open

Ruby's standard library has been going through a process of "gemification" where it is converted into a set of Gems that are simply vendored into the main Ruby distribution.

GNU/Linux distros tend to like to de-vendor things. This de-vendoring process is usually inherently a little messy. This MR tries to make it a little less messy in the case of Ruby on Arch Linux and downstream distros.

Besides hopefully making things easier on the Arch devs in the future, it should also make it easier for downstream distros that patch Ruby, such as applying flori/json#567.

Ruby's standard JSON gem (which comes bundled with the core Ruby distribution!).

Last updated: by LukeShu
Status: open

The benchmark numbers given for the Ruby stdlib JSON encoder/decoder are quite outdated, and the benchmark code has been removed. This PR restores and fixes the benchmark code.

This is helpful for justifying that flori/json#567 actually improves performance rather than hurting it. While I believe Software Freedom would be worth hurting performance, it doesn't have to!

Last updated: by lukeshu
Status: open

Some changes to the way that Arch Linux packages systemd that should make it easier for distros downstream of Arch (certainly Parabola, hopefully Artix) to provide init-freedom and support other init systems.

golang.org/x/net is a set of supplementary Go networking libraries. These are used not just by programmers doing advanced networking things in Go, but are also used internally by the Go standard library.

Last updated: by GerritBot
Status: open

The functions html.EscapeString and html.UnescapeString were once the same between "golang.org/x/net/html" and std "html", but have been slowly drifting apart since 2012. This PR ports over documentation and performance improvements from std to x/net.

This will provide a consistent base for fixing bugs in html.UnescapeString that were found when working on the documentation parser in gotk4.

The Go programming language.

#Go
Last updated: by GerritBot
Status: open

The functions html.EscapeString and html.UnescapeString were once the same between "golang.org/x/net/html" and std "html", but have been slowly drifting apart since 2012. This PR ports over documentation and performance improvements from x/net to std.

This will provide a consistent base for fixing bugs in html.UnescapeString that were found when working on the documentation parser in gotk4.

The GNU Binutils are the GNU utilities for working with binary object files: the main ones are the ld linker that combines compiler outputs into a complete program, and the as assembler.

GDB is the GNU Project Debugger for debugging compiled programs.

Last updated: by Tom Tromey
Status: open

The binutils-gdb sources bundle a number of files from other sources (including the autotools, libtools, readline, texinfo, gnulib, zlib, and GDB). I audited the binutils-gdb sources to pin-point exactly which versions were being bundled and what patches were being applied, then wrote a ./bootstrap script to automate that bundling.

As the recent XZ issue taught us, this kind of audit is an important part of supply-chain security. The ./bootstrap script will greatly ease this type of audit in the future, and can even enable enforcing up-to-date-ness of the audit in CI.

Also, hopefully this will make it easier to keep binutils' and GDB's bundled dependencies more up-to-date in the future; as many are quite out-of-date right now.

vboot is Google's Verified Boot reference implementation, and is used by the coreboot userspace tools.

Last updated: by Yu-Ping Wu
Status: open

This fixes a bug in the code that both (1) may allow a specially-crafted partition to bypass a bounds check, and (2) makes it so that the code does not compile when sizeof(size_t)=4 (that is: x86-32).

See also: libreboot#218

Last updated: by LukeShu
Status: open

Just a minor touch-up to configure.ac that I noticed could be made when updating Parabola's pcr/awf package. Parabola makes other software better!

Completed work 🔗

Last updated: by segaja
Status: merged, not yet in a release

Arch Linux's ruby-docs package (version 3.2.5-1) is incomplete; the /usr/share/doc/ruby/capi/html/ directory is empty except for doxygen_crawl.html. This fixes that, so that it includes the full Doxygen output.

Last updated: by H-Sachse
Status: merged, not yet in a release

systemd-nspawn is a container runtime (like Docker or runc or whathaveyou). Notably, nspawn is what Parabola's build-system uses for hermetic builds.

Currently nspawn does not support FUSE filesystems inside of the container. This PR enhances nspawn to support FUSE.

This is of particular utility for build systems, because it will allow build scripts to mount a FUSE overlayfs/unionfs of the root filesystem, which is useful for building software that does not support a DESTDIR-type setting to install to an alternate root. (Recent versions of the Linux kernel support unprivileged in-kernel overlayfs, but at this time it is still too restrictive to support this use-case.)

Last updated: by jgrassler
Status: merged, not yet in a release

mailprocessing's maildirproc(1) program is a mail-filter daemon that can sort emails into folders and such. Somewhere between 1.0.1 and 1.2.7 the daemon lost the ability to gracefully shutdown. This can slow down shutdown of the entire system as the service manager waits for maildirproc to respond to the SIGINT or SIGTERM that it was sent... but it never would. This PR fixes that.

Last updated: by pwithnall
Status: merged, released in 2.81.2

While GI-DocGen markup is largely backward-compatible with GTK-Doc markup, it isn't completely backward-compatible. This fixes some mistakes from when Glib migrated from GTK-Doc to GI-DocGen. I scanned for places where GI-DocGen was emitting unknown HTML tags, which indicate such a mistake. Notably, some of the rendered gregex docs were unreadable.

gotk4 is a project that burries the lede: yes, it is a set of Go bindings to GTK4. But (IMO) more interestingly, ./gir/cmd/gir-generate is a tool for generating Go bindings to GObject Introspection (GI) libraries from the .gir files describing the library.

Last updated: by diamondburned
Status: merged, released in pkg/v0.3.0

The not-quite-markdown format that .gir files use for documentation is under-specified and hard to parse. Right now I'm focusing on how to properly parse it, so that we can have top-notch language-specific documentation for GI libraries.

This PR is laying the groundwork for the new parser.

The mkinitcpio tool generates init-ramdisk images to boot GNU/Linux systems.

Last updated: by foxboron
Status: merged, not yet in a release

This PR adds tests for the earlier ARM zImage work. This was split off into a separate PR from the main ARM zImage PR because the maintainers had concerns about merging binary test files (very understandable, especially given the recent XZ issue!), but didn't want to hold up the main work.

Libreboot is a distribution of coreboot, a Free Software motherboard-firmware platform.

Last updated: by vimuser
Status: merged, released in 20240612

This has the Libreboot build-system apply the fix I submitted to vboot, so that Libreboot can be compiled on x86-32. Libreboot does not use the affected vboot functionality, but the bug was preventing things from compiling.

The mkinitcpio tool generates init-ramdisk images to boot GNU/Linux systems.

Last updated: by foxboron
Status: merged, released in v39

To do its work, mkinitcpio needs to know the version number of the Linux kernel that it is generating an image for; the normal way that it knows this is to sniff the version number from the kernel file. However, it fails to sniff the version number from ARM zImage kernels, which means that Arch Linux ARM and Parabola for ARM need to resort to hacks to get mkinitcpio to work right.

This PR removes that friction by teaching mkinitcpio to understand ARM zImage files.

See also: mkinitcpio#362

Sponsored-by: Umorpha Systems

The file tool sniffs a file to tell you about the file's format.

Status: merged, not yet in a release

This PR improves its ability to detect information about Linux kernel ARM zImage files.

Liberapay is a recurrent donations platform to help fund creators and projects.

Last updated: by Changaco
Status: merged + deployed

When managing your profile, Liberapay nominally supports using your Libravatar federated avatar as your profile pic. However, it only loads avatars from the libravatar.org instance; not actually supporting federation. This PR properly implements the Libravatar federation API to load avatars from any instance.

The file tool sniffs a file to tell you about the file's format.

Status: merged, not yet in a release

To do this, file reads a "magic" file that describes the magic numbers that it might see in a file. This PR fixes a mistake in the magic(5) manual for writing such files.

The mkinitcpio tool generates init-ramdisk images to boot GNU/Linux systems.

Last updated: by foxboron
Status: merged, released in v38

One of the things going on in the secure-boot world is moving toward "Unified Kernel Images" (UKI), which are when the kernel and the init-ramdisk are bundled together into a single file to reduce the risk of a compromised init-ramdisk being able to compromise a secured kernel. This PR reduces friction when using mkinitcpio to generate images directly as UKI without generating a plain init-ramdisk first.

Sponsored-by: Umorpha Systems

EROFS is the Enhanced Read-Only File System, a successor to SquashFS.

Status: merged, released in v1.8

This patchset improves the --help documentation and man-pages of the EroFS userspace tools, and reduces friction by having fsck.erofs accept common command line flags that fsck implementions for other filesystems take.

Sponsored-by: Umorpha Systems

gotk4 is a project that burries the lede: yes, it is a set of Go bindings to GTK4. But (IMO) more interestingly, ./gir/cmd/gir-generate is a tool for generating Go bindings to GObject Introspection (GI) libraries from the .gir files describing the library.

Last updated: by diamondburned
Status: merged, released in pkg/v0.0.6

This PR makes it easier to contribute to gotk4 by improving developer documentation and automated checks.

Daily statuses 🔗

Posted daily on Mastodon with the #DailyStandup tag.

Calendar view
Su M Tu W Th F S
October 2024 13 14 15 16 17
6 7 8 9 10 11 12 October 2024
September 2024 29 30 1 2 3 4 5
22 23 24 25 26 27 28 September 2024
15 16 17 18 19 20 21
8 9 10 11 12 13 14
1 2 3 4 5 6 7
August 2024 25 26 27 28 29 30 31 August 2024
18 19 20 21 22 23 24
11 12 13 14 15 16 17
4 5 6 7 8 9 10
July 2024 28 29 30 31 1 2 3
21 22 23 24 25 26 27 July 2024
14 15 16 17 18 19 20
7 8 9 10 11 12 13
June 2024 30 1 2 3 4 5 6
23 24 25 26 27 28 29 June 2024
16 17 18 19 20 21 22
9 10 11 12 13 14 15
2 3 4 5 6 7 8
May 2024 26 27 28 29 30 31 1
19 20 21 22 23 24 25 May 2024
12 13 14 15 16 17 18
5 6 7 8 9 10 11
April 2024 28 29 30 1 2 3 4
21 22 23 24 25 26 27 April 2024
14 15 16 17 18 19 20
7 8 9 10 11 12 13
March 2024 31 1 2 3 4 5 6
24 25 26 27 28 29 30 March 2024
17 18 19 20 21 22 23
10 11 12 13 14 15 16
3 4 5 6 7 8 9
February 2024 25 26 27 28 29 1 2
18 19 20 21 22 23 24 February 2024
11 12 13 14 15 16 17
4 5 6 7 8 9 10
January 2024 28 29 30 31 1 2 3
21 22 23 24 25 26 27 January 2024
14 15 16 17 18 19 20
7 8 9 10 11 12 13
December 2023 31 1 2 3 4 5 6
24 25 26 27 28 29 30 December 2023
17 18 19 20 21 22 23
10 11 12 13 14 15 16
3 4 5 6 7 8 9
November 2023 26 27 28 29 30 1 2
19 20 21 22 23 24 25 November 2023
12 13 14 15 16 17 18
5 6 7 8 9 10 11
October 2023 29 30 31 1 2 3 4
22 23 24 25 26 27 28 October 2023
15 16 17 18 19 20 21
8 9 10 11 12 13 14
1 2 3 4 5 6 7
September 2023 24 25 26 27 28 29 30 September 2023
17 18 19 20 21 22 23
10 11 12 13 14 15 16
3 4 5 6 7 8 9
August 2023 27 28 29 30 31 1 2
20 21 22 23 24 25 26 August 2023
13 14 15 16 17 18 19
9 10 11 12

I haven't posted a since last Wednesday b/c posting is emotional labor and I've been emotionally used-up by shocking revelations in my personal life.

But! I have been working!

Been doing:
- On Saturday I went to a Colorado Green Builders' Guild event—getting onto HVAC equipment!
- Inventing a test-harness for Single Board Computers that I've been fantasizing about for years (thread/)

Will do:
- Tomorrow I'm going to the Northern Colorado Climate Meetup

- I think I've completed the terrible preprocessor hack that I'm calling `fuse_optdoc.h`
- Working on auditing libfuse's documentation.
- Helping @amerl set up a server

Since Friday:
- The nspawn FUSE PR got merged! github.com/systemd/systemd/pul

Today:
- Re-auditing libfuse to make sure that all end-user-facing options are documented. Involves some fancy wrangling of the C preprocessor. The preprocessor hackery felt like a good self-contained puzzle to solve to start the week.

Yesterday:
- Got the nspawn FUSE PR to pass CI (…but it's failing again now‽)
- Benchmark json patches github.com/flori/json/pull/567 …"interesting" change in baseline variance since April

Today:
- Respond to feedback on the nspawn PR
- Feel spent, figure unstructured work will turn into something productive.… not so far

Other:
- Bugs on lukeshu.com/imworkingon/ 😞

Woops, didn't post Tuesday or yesterday. But it's been productive!

- 's is updated!
- Submitted a Fix to 's Ruby gitlab.archlinux.org/archlinux
- Made a nice README for Parabola's GPL-compatible Ruby releases github.com/parabola-gnulinuxli
- Got to "lgtm" on adding FUSE support to nspawn github.com/systemd/systemd/pul

Today:
- Getting the nspawn FUSE PR's CI to pass
- Updating+benchmarking the GPL-fix to upstream ruby-json.

So I'm working on upgrading 's . But the ARM build takes forever and so my iteration time on solving problems is slow.

In the course of this I've found some bugs in fosstodon.org/@lukeshu/1130699 I'm working around them by disabling affected tests if we're running in a qemu chroot. After I get the bew Ruby out, I'll look into fixing the Qemu bugs... but IDK how I'm going to prioritize that against other existing work.

What I did yesterday:
- Responded to feedback on the nspawn FUSE PR github.com/systemd/systemd/pul
- Looked at upgrading Ruby 3.0→3.2. Filed gitlab.archlinux.org/archlinux

What I'm doing today:
- Upgrading Parabola's Ruby.
- Looking into CI failures on the nspawn FUSE PR.

What I did yesterday:
- Got a new version of the systemd-nspawn FUSE PR pushed off

What I'm doing today:
- Responding to feedback on said PR.
- you decide!

What I did yesterday:
- I was trying to get a new version of the nspawn-fuse PR ready
- but I went down some yaks with the tests, ending up with some hacking on .

What I'm doing today:
- A little more work on mkosi. I want better reporting of its capabilities based on what's installed; no more "error, do you have createrepo_c installed?" 20min into a build. I want a real story for mkosi.
- Anyway, I'm too many yaks deep, I should get back to nspawn-fuse.

No real yesterday or today because of dealing with family stuff.

But I did put up github.com/mailprocessing/mail yesterday morning.

- On Friday I decided to work on stuff to take a break from the doc parser.
- But then some hardware came and I worked on reverse-engineering my Sensi Predict to patch their firmware to hopefully keep them out of landfills.
- But then yak lead to another and now I'm working on supporting FUSE inside of nspawn containers. github.com/systemd/systemd/iss

Yesterday:
- Made a minor change to the glib doc PR based on feedback; it is now landed gitlab.gnome.org/GNOME/glib/-/
- Kept working on getting the gi-docgen parser to pass its tests

Today:
- Still working on the gi-docgen parser. Current status is only 57 failing tests (out of almost 2 million).
- There are some emails I should do. We'll see if I actually do.

- Inching ever closer to my gi-docgen parser tests passing
- I found some mistakes in the glib2 docs' conversion from gtk-doc to gi-docgen, putting together an MR to fix those upstream. (edit: gitlab.gnome.org/GNOME/glib/-/)

So close to being happy with the new gi-docgen parser.

The 71 failures in pymdext.FuzzFencedCodeXHTML are the core HTML-BlockProcessor and the pymdext FencedCode-BlockProcessor clashing with eachother. I know what's wrong, but am trying to figure out a way to fix it that isn't a PITA.

The 4300 failures in gidocgen.FuzzHTML are that plus issues with GI-DocGen syntax extensions. It looks like most of them are the test harness not handling [type@name] links correctly.

Got back from last night (instead of mid-day, because ✨airlines✨).

Gotta email/follow up with several folks who I exchanged business cards with. .

Still working on the new gi-docgen parser.

Whoops, no post yesterday

What I did yesterday:
- Fixed more discrepancies between the new doc-parser and existing gi-docgen
- Reworked the test-util library to be more coherent

What I'm doing today:
- Reworking the tests to use persistent Python processes when testing against gi-docgen (and gtk-doc); this seems to improve the run-time for my expanded >100k entry test corpus from 2h45m to 3m

What I'm doing tomorrow:
- Getting on an airplane and flying to Portland for

Today:
- Updated some out-of-date packages
- Picked up the Parabola stickers to give out at . Very happy with how they turned out.
- Still trying to iron out discrepancies in the new gi-docgen-compatible doc-parser.

I've fixed a number of places where the new doc-parser disagrees with gi-docgen. Hoping to have all of the core markdown disagreements resolved today, and move on to the bits of extension syntax tomorrow. It looks like all of the remaining disagreements in the core markdown might actually be problems in the tests' normalization steps, not actual problems with the parser.

Yesterday:
- Fixed some O(n²) space and time issues in the new doc-parser's inline-parser.

Today:
- Discovered this morning that the build server's sshd wasn't responding. A system update had bungled our SSO config. Fixed that.
- I think I've got the new doc-parser's block parser behavior up to matching Python-Markdown 3.6 (it was matching 3.4.4 before).

Next up:
- Fixing the inline parser. I suspect all of the diffs come down to 1 big bug and 1 small bug.

Still getting the tests for the new doc parser to be identical to gi-docgen . Found a case where memory explodes... it's times like this that I really wish had a linter where I could say "complain at me if this argument escapes"... I started to work on such a thing maybe a year ago, but I never finished fixing the diagnostics coming out of the compiler... I should go back to that at some point.

Friday/weekend::
- Did more work on getting the new doc-parser to match the behavior of newer gi-docgen.
- Sat upgraded the Parabola build server's RAM
- Sun spent some time cataloging the various art & media has (why did coadde use such ridiculous filenames!?)

Today:
- got sucked into spending way too much time still going through the media.
- ordered Parabola stickers to give out at :parabola:
- Keep working on the doc-parser discrepancies.

Python-Markdown has a bug where it screws up string-offsets after certain malformed HTML. The can result in HTML blocks getting mangled.

This used to be very predictable, but w/ an optimization in v3.5.1+, it's not, because it caches things, and whether the cache entry is good or bad (& how bad) depends on exact program flow.

For the last 2 days I've tried to be bug-for-bug compatible with the new behavior, but today I give up & am monkey-patching Python-Markdown to fix the bug.

What I'm doing:
- Testing & debugging the new gotk4 doc-parser.

Challenges/blockers:
- The recent bump of nixpkgs on mainline gotk4 means I probably now need to support the "admonition" syntax that was introduced in gi-docgen 2023.2 (I've been targeting 2023.1).

What I did yesterday:
- I got the new doc-parser wired in to gotk4 and working end-to-end.

What I'm doing today:
- Ironing it out and testing and validating that the output is good. .

I've now got the new doc-parser wired-in and working end-to-end in the gotk4 generator. I need to figure out my strategy for validating that its output is what I expect.

What I'm doing today:
- Got the new doc-parser wired in to gotk4. But I have a few `panic("TODO")`s left for some AST node types in the markdown->godoc renderer.

Might call it a day? Switching from data-flow to the renderer might be too big of a mental context switch to get much more productivity today.

Whoops, no post yesterday.

What I did yesterday:
- Finally got the new systemd out.
- Swapped the gotk4 code back into my head.

What I did/am doing today:
- Getting the new doc-parser wired into gotk4. I've got it done for most types, but I still need to figure class-interface.go.

What I did yesterday:
- Updated a bunch of PRs, as mentioned in yesterday's standup (gotk4 PR landed)
- Said I was gonna follow-up on the vboot 32bit fix, but I realized I didn't have a 32bit box with me, so I didn't get to do that
- Started upgrading 's systemd.

What I did today:
- Upgrading Parabola's systemd. These upgrades aren't (usually) "complicated", but are a bunch of cross-referencing umpteen things. & as cool as .notes.dlopen is, it moved a buncha the things.

What I've done since Tuesday:
- Celebrated a holiday.
- I wanted to celebrate the holiday by pushing out a new libretools release, but I didn't get it out until Saturday lists.parabola.nu/pipermail/de

What I'm doing today:
- Updated (v12) the gotk4 PR github.com/diamondburned/gotk4
- Responded to feedback on the html escape sync CLs golang.org/cl/580896 golang.org/cl/580855
- Respond to feedback on the vboot CL chromium-review.googlesource.c

Yesterday:
- Landed the big libretools flag-parsing overhaul.
- Updated a bunch of servers (personal, Parabola, Umorpha) because of the OpenSSH vuln

Today:
- Landed the last of Bill's libretools patches that are "ready"
- Landed a bunch of libretools doc improvements
- Will finish figuring out the libretools messy v20240327 release

I sort of burned myself out and so didn't post at all last week.

I was still doing things tho:
Lots of work with libretools (dev tools):
- Added style checks (inc but not limited to shfmt)
- 3 bugs found & fixed
- Consistently handle both long/short --help/-h, & generally have more consistent flag handling.
- Review a bunch of Bill's work

Today:
- Figure out what I want to do about the messy v20240327
- Finish/merge the flag stuff
- Maybe finish up some doc improvement

Putting the binutils stuff on pause to do some stuff and maybe respond to issues on other PRs.

- Review Parabola libretools patches
- Updating a few Parabola packages
- Work through the Parabola mailinglist backlog.

Still fussing with the binutils-gdb ./bootstrap patchset.

Whoops, haven't posted in a few days.

Tuesday:
- I had a list of things I was going to respond to, but of those, I only got to the binutils patchset.

Wednesday:
- youtube.com/watch?v=6kcxHlzTsI

Thursday:
- Still working on updating the binutils patchset.

Friday:
- Likewise.

Today:
- Likewise.

The challenge is that I've realized that to be useful going forward, ./bootstrap needs to handle ChangeLogs differently than I have been, so I'm reworking that.

What I did yesterday:
- Studied how data flows through the gotk4 codebase.

What I'm doing today:
- Responding to feedback on the binutils patchset, the http.UnescapeString CLs, and the vboot CL.
- Trying to get the gi-docgen/gtk-doc parser wired into gotk4.

Yesterday:
- Between the power being out & my brain being broken, not much

Today:
- Updated lukeshu.com/imworkingon/ to get "last updated" for pipermail mailinglist archives
- Wrote some notes on email message threading lukeshu.com/blog/message-threa
- Wrote a bit at lukeshu.com/imworkingon/ about why this week's work on is important.

If any of this seems useful or important to you, plz consider throwing a few dollars my way lukeshu.com/sponsor/

What I've been doing the last 3 days:
- Working on a `./bootstrap` for ...

What I'm doing today:
- ...finished and sent it! sourceware.org/pipermail/binut
- Finally responding to feedback on other changes I've sent off.

What I did yesterday, what I'm hopefully wrapping up today:

- Tracking down where all of the bundled files in came from, and writing tooling to keep track of them: fosstodon.org/@lukeshu/1125671

There's PR feedback that I should be responding to (at least: on the html.UnescapeString CLs, and on the vboot CL)

But instead imma spend the day experimenting with changes to binutils. Feeding your creativity is important. I'll respond to the PR feedback tomorrow.

Challenges/blockers:
- I've had a headache basically all day. Not much is getting done.

I've got clamps on my main laptop because the shell cracked, so while that cures I've spent the day:

- Getting to build on and old (32-bit) x60, including submitting a patch to upstream vboot. fosstodon.org/@lukeshu/1125327

What I did yesterday:
- New libretools
- Fussed with upload size limits for labs.parabola.nu
- Forgot to post a standup

What I'm doing today:
- fosstodon.org/@lukeshu/1124816
- Dealing with some 32-bit woes (ruby is uninstallable, some outdated packages)

Yesterday:
- New pacman w/ modern makepkg.conf CFLAGS et c. (Was waiting for all architectures to get GCC 14)
- Mostly update systemd, hit an LDFLAGS issue on ARM
- Progress w/ the labs.parabola.nu lockup

Today:
- More lockup (see my other toots!)
- Figure out what the hell is going on w/ ALARM CFLAGS/LDFLAGS (maybe push out yet another pacman)
- Update systemd, then grub

Challenges:
-ARM flags
- Flying to Indianapolis for the 500. IDK how much work I'll do this week

What I did since Friday:
- Watching the servers for errors. redmine seems to wedge every day at about noon MDT. No idea why.
- Updated gitlab.archlinux.org/archlinux
- Added "last updated by" fields to all the PRs tracked on lukeshu.com/imworkingon/

What I'm doing today:
- Oops, I killed labs with gdb, gotta wait until tomorrow to try debugging it again :(
- Responding to feedback on gitlab.archlinux.org/archlinux
- Updating 's pacman, systemd, grub

Mostly just watching the servers for fallout from the migration and to figure out what the next server-maintenance step is.

What I did yesterday:
- Updated 's libre/ruby2.7
- Added to Parabola pcr/uwsgi-plugin-rack2.7 (I'm pondering if this is worth MR'ing into 's extra/uwsgi)
- Got the Redmine install's Ruby versions all worked out it seems

What I'm doing today:
- Realized that winston.parabola.nu's redmine log is huge, gotta figure out logrotate
- Make sure that I can copy the redmine data over, then update the DNS!
- Didn't get to gitlab.archlinux.org/archlinux yesterday

What I did the other day:
- Gave up on getting 's old custom Redmine working with Ruby 3 for now, decided to proceed with Ruby 2.7, which means...

What I'm doing today
- Updating Parabola's libre/ruby2.7 (which was on 2.7.3, not 2.7.8) including backporting my CVTUTF replacement to it
- Packaging pcr/uwsgi-plugin-rack2.7 to use that
- Let's see if that gets our Redmine working
- edit: Oh, following up gitlab.archlinux.org/archlinux which I had forgotten about

> I'm seeing the pattern that I work on stuff during the weekend, then run out of steam Monday afternoon, then get jack shit done on Tuesday and actually rest on Tuesday. — fosstodon.org/@lukeshu/1123217

> It's wild how *quickly* running out of energy takes you from "I'm being productive" to "I can't get a single thing done, not even shitpost on fedi." Like the transition is a span of minutes. — fosstodon.org/@lukeshu/1124404 (yesterday)

Wanna guess how today went?

Today:
- Ruby version hell

What I did on Saturday:
- Got side-tracked from migrating labs.parabola.nu to a new server by figuring out that pacman 6.1.0 misbehaves if stdin is closed (gitlab.archlinux.org/pacman/pa)

What I'm doing today:
- Updated my price chart (fosstodon.org/@lukeshu/1124355) because I realized that I made a dumb choice about a server size
- Actually(?) migrating labs.parabola.nu to a new server

What I did yesterday:
- Pushed out a new :parabola: libretools lists.parabola.nu/pipermail/de
- Updated a few other Parabola packages
- Got everything(?) on winston.parabola.nu turned back on

Today:
- Migrating labs.parabola.nu to a new server.

Yesterday:
- Responded to a bunch of emails to the dev@ mailing list
- Parabola makes other packages better github.com/luigifab/awf-extend
- Found that 's default `makepkg.conf` needs changed b/c ALARM is still on GCC 12
- Fixed a bug in libretools that causes pain when building members of base-devel

Today:
- New libretools with a fix for that issue
- New pacman with the makepkg.conf change
- New pcr/awf-extended
- New libre/musescore
- Fix Parabola servers

What I did yesterday:
- Updated the gotk#140 PR to drop part that the maintainer doesn't want to merge.
- I said I was going to do things, but really I spent most of the day writing a RELAX NG library for for no real reason.

What I'm doing today:
- So far, not much
- Going to BLUG
- Respond to dev@ Parabola emails
- Talk with Bill about Parabola server migrations

(2/2)

Not something I did, but something that happened:
- Friday's v39 release means that my improvements are now in a stable release. should no longer have to patch mkinitcpio!

What I'm doing today:
- Following up with the gotk4 prep PR
- Working through some of the packaging backlog.
- Working through some of the Parabola email mailinglist backlog

Challenges/blockers:
- Waiting for @amerl to email me some files I'd saved on his laptop

(1/2)

Since Friday:

> If I bum @amerl's then tools are going to improve this weekend.

- Concrete ideas for HiDPI troubleshooting tools
- Tracked down the bug in that causes some apps (like `git gui`) to not have HiDPI text (while others like `gitk` are unaffected). It's already fixed in 9.y beta, so I need to convince them it's worth backporting to 8.6.z stable.
- Reproduced a bug in the Plasma6 screen locker that had been closed as fixed.

What I did today:
- In Boston for !
- Figuring out the flow of data through the gotk4 generator so I can get the I for I need to the right place.
- Had a good time catching up with people at the @fsf office.

Challenges:
- My laptop's charge port has decided to not work. On the bright side, if I bum @amerl's then tools are going to improve this weekend.

Yesterday:
- Decided that supporting malformed lists is a non-goal of my GI-DocGen parser.
- Went back to integrating my parser into the gotk4 generator.

What I'm doing today:
- Integrating my parser into the gotk4 generator. Having to rewrite some things because when I'd started it I didn't know what the shape of the interface of my parser would turn out to be.
- I've got a midnight flight to for the @fsf's conference.

What I did yesterday:
- Reverse engineered some of the Webflow API so we can get the Umorpha website off of it. I should write up some of that on my blog.
- More GI-DocGen parser fixes.

What I'm doing today:
- Giving up mimicking GI-DocGen emitting lists (<ul> / <ol>) that contain things other than <li>
- Still trying to get this parser over the line.
- Prepping to fly to tomorrow night.

What I did yesterday:
- Fixed bugs in my GI-DocGen parser.
- Left the fuzzer running for a few hours to find more bugs.

What I'm doing today:
- Some website-handoff stuff for Umorpha
- Fixing more Gi-DocGen parser bugs.

What I did on Friday and over the weekend:
- Got the Python-Markdown compatible parser for the GI-DocGen thing passing its tests!

What I'm doing today:
- Fixing a CSS bug on narrow-but-not-too-narrow screens on lukeshu.com/imworkingon/ and adding last-updated-by info to the page.
- Figuring out how HTML5 deals with \x00 bytes, for the purposes of the GI-DocGen parser.

What I did yesterday:
- Got my GI-DocGen parser to handle implied-end-tag cases, getting it down to just 3 "types" of test failures.

What I'm doing today:
- I'd really like to say "wrapping up this parser, there are just a few bugs left!" but if the bugs were easy, I'd have already fixed them… so more realistically…
- handling HTML5's "no nested <a> elements" rule

If you'd like to fund this work to improve GI tooling and other GNU/Linux things: lukeshu.com/sponsor/

What I did yesterday:
- Dropped testing-compatibility hacks from the GI-DocGen parser that enable the tests to get the exact newlines as the old Python parser; instead the tests now normalize whitespace between block elements.
- Implemented the HTML5 "block element implies '</p>'" logic in said parser.

What I'm doing today:
- Figuring out how to handle more implied-end-tag cases.
- Figuring out how to handle the "no nested <a> elements" rule.

What I did yesterday:
- Fixed a mistake in golang.org/cl/580855 (my backport of improvements from std "html" to "x/net/html")
- Fixed the "&nLt;" and "&nGt;" bug in html.UnescapeString (but I'm holding off on submitting the bugfix CL(s) until the sync CLs land — github.com/LukeShu/net/tree/lu if you want to see it)
- Fixed my website on mobile

What I'm doing today:
- Contemplating the horror that is HTML's nesting rules in relation to Python-Markdown (Gi-DocGen )

I'm seeing the pattern that I work on stuff during the weekend, then run out of steam Monday afternoon, then get jack shit done on Tuesday and actually rest on Tuesday.

Anyway,

Yesterday:
- Put up golang.org/cl/580896 and golang.org/cl/580855 to sync code between "x/net/html" and std "html"
- Got the HTML entity escaping rules in the GI-DocGen parser worked out.

Today:
- prolly not a lot
- Figuring out how to implement HTML5's nesting rules in the GI-DocGen parser

What I did on Friday:
- Got my GI-DocGen parser normalizing inline HTML per the HTML5 rules

What I did over the weekend:
- Added a viewer for my mastodon posts to lukeshu.com/imworkingon/ , with a cool calendar view
- Worked on more bugs in the GI-DocGen parser
- Started on a PR to fix html.UnescapeString fosstodon.org/@lukeshu/1111014

What I'm doing today:
- Addressing the drift between Go "golang.org/x/net/html" and std "html"
- More GI-DocGen parser bugs

Yesterday:
- I spent the day reworking the GI-DocGen parser's tests, because I realized a lot of the failures I was hitting were quirks in my test suite, not bugs in the code-under-test.

Today:
- Getting the GI-DocGen parser to properly normalize inline HTML, as is now evident that it has to do based on the new test setup.

Yesterday:
- Add "released" detection to lukeshu.com/imworkingon/
- But mostly didn't get to work on things yesterday.
- My mkinitcpio ARM zImage PR got merged!
Today:
- A few more incremental improvements to the imworkingon page
- Chugging through fuzzer-found bugs in my GI-DocGen parser

Friday:
- Got the GTK-Doc/GI-DocGen markdown parser updated to use Nix Flakes and rebased up to gotk4 HEAD
- but didn't really get anything else done

Over the weekend:
- I made lukeshu.com/imworkingon/ to have a cool tracker of what I've been working on (I ack that the page is fairly rough at this point). If you find any of that work valuable, please consider sponsoring me.

Today:
- Responded to more feedback on the mkinitcpio ARM zImage PR
- Honestly, IDK, too many choicies

Yesterday:
- Responded to more feedback on various PRs.
- At , listened to a new class from David of the School
sofree.us/

Today:
- Figure out Flakes enough to rebase the gotk4 markdown parser up to HEAD (since I started my branch, gotk4 has switched from `.nix/default.nix` to Flakes)
- Rather than grinding at fuzzer-found bugs in the gotk4 parser, might get some other (Linux? FUSE? EroFS?) docs improvements fired off?

Yesterday:
- Worked on the gotk4 gi-docgen markdown parser.

Today:
- Responding to more feedback on the mkinitcpio PR
- Responding to feedback on the preliminary gotk4 docs PR.
- Working through more test failures on the gotk4 gi-docgen markdown parser.

Yesterday:
- Responded to some feedback on the mkinitcpio zImage PR
- Responded to some feedback on the @Liberapay @libravatar PR. It is now merged and deployed! Federated avatars now work on Liberapay!
- Kept working on gotk4 GTK-Doc/GI-DocGen markdown parsing.

Today:
- Responding to more feedback on the mkinitcpio PR.
- Still working on the GI-DocGen parser.

Friday:
- who even remembers

Today:
- I spent some time yesterday finally coming back to parsing GTK-Doc/GI-DocGen markup, and I think I'm going to let that be my focus for today.

Yesterday:
- I submitted proper @libravatar federation to @Liberapay github.com/flori/json/pull/567

Today:
- Benchmarking the changes I made to the gem to make it /GPL-compatible. Preliminary results are that my new code is faster than the old proprietary code! github.com/flori/json/pull/567

Yesterday:
- Pushed out libretools v20240403 lists.parabola.nu/pipermail/de ; support for makepkg v6.1!
- Spent way more time than expected reviewing Bill's contributions to libretools

Today:
- Implementing proper @libravatar federation for @Liberapay github.com/liberapay/liberapay
- More libretools contribution reviewing

Yesterday:
- Didn't get through any of my stated goals, but
- I did find an issue in where some package files that are mentioned on the .db file aren't on the mirrors
Today:
- Actually doing a new libretools (see: bug#3622)
- Realistically, I don't think I'm going to be submitting my kernel config-docs patches today, but that's my "if I'm not making progress on the other thing" task today.

Since Thursday:
- Submitted a non-draft version of my PR to make mkinitcpio correctly handle ARM zImage files

Today:
- Updating libretools to work with the new makepkg.
- Getting some kernel devdocs polished up to submit upstream.

Yesterday:
- Figuring out what I want my ruby-json benchmark strategy to be.

Today:
- My script for generating kernels for the mkinitcpio tests has some trouble with kernels v6.0 and older, so dealing with that (I want to go down to v4.15)
- Continuing with ruby-json benchmarking

What I did yesterday:
- Update my mkinitcpio detect-ARM-zImage-files patch to properly deal with more kernel configurations, adding tests for them
- Submit improvements to file(1) and fixes to the magic(5) man-page
- left a script running overnight testing the mkinitcpio patch against a bunch (thousands) of historical kernels...

What I'm doing today:
- ... still leaving that running
- benchmarking the ruby-json replace-CVTUTF PR

What I did yesterday:
- Working on a system for building firmware images for embedded devices/appliances based on (reviving osi-mk from git.parabola.nu/~lukeshu/notsy)

What I'm doing today:
- Still that
- Deploying a git server for Umorpha
- new libretools?

Blockers/concerns:
- I just cant *believe* that hacks I wrote 5 years ago have bit-rotted.
- Parabola's systemd is a version behind
- Parabola's grub is old

:

What I did yesterday:

- Spent some time rebasing things from testbench mkosi up to current mkosi to submit upstream
- Order another phone as a dev tool for my fork

What I'm doing today:

- Push out a SignalApp build
- First day officially working for Umorpha Systems
- Figuring out a good process for building OS disk images (with mkosi?)
- ... deploying a Gitea server appliance
- new libretools version?

Concerns/blockers:

- none?

- Because I was wanting to borrow some code from it, I fixed bitrot in git.lukeshu.com/2git/cvtutf-ma which is the scripts that make the git.lukeshu.com/2git/cvtutf repo, which is the history of the CVTUTF library.

- The last 3 days have been 100% dedicated to finding Olive who pushed out a window screen Saturday night/Sunday morning. She's back home safe now!!!

I don't have an excuse for last week tho.

- Investigated a bug with kmod v31 and v6.3.3 not playing nice on . No conclusion yet.

- workin on the gidocgen parser
- improving btrfs-rec rebuild-mappings

Yesterday:
- So I think the gi-docgen HTML parser is finally bug-free? Fuzzer hasn't found any issues in a while.

Today:
- I saw that @orsinium published his enum library (github.com/orsinium-labs/enum), so I took a peek at it and filed a couple minor PRs :)
- Work on improving the btrfs-rec rebuild-mappings algorithm

Yesterday:
- Had a not very productive day working on the gi-docgen parser

Today:
- Having a very productive day working on the gi-docgen parser. I think I have basically all the parts working, and now I just need to tie things together.

Concerns/blockers:
- idk

- Ugg I'm the worst and haven't been posting standups this week

Today:
- Try to get the gi-docgen html block processor working
- Fuss with MMS

Blockers/Concerns:
- ?

Yesterday:
- Slept 'til 3pm
- found an issue with the gi-docgen blockparser (hence the toots)
- Read Umorpha's mission+values doc
- put the LED in my lightsaber that I drilled the hole for in May
- SIM for testing came, so used it to play w/ my

Today
- Donut's bday! 🐱😍🎂
- fixed the blockparser
- meet w/ Umorpha
- put on router for mom
- put new HDDs in the build server (assuming they arrive)
- so many emails

Concerns
- idk

There is no there is only sleep.

What I did yesterday:
- Mostly just napped
- My aluminum wire came so I spent some time re-doing the brim of my wizard hat

What I'm doing today:
- Ugg, overnight the fuzzer found another issue in the blockparser. Fixing.
- Rework the first part of the btrfs-rec rebuild-chunks algorithm

Blockers/concerns:
- none?

What I did yesterday:
- I thought I got the gi-docgen blockparser working correctly

What I'm doing today:
- Actually the fuzzer found some issues in the night; fixed them
- Proceeding to work on the inlineparser

Concerns/blockers:
- Low energy today. Tempted to just screw off and play with my new Flipper Zero? Or take a nap?

Today was weird because sleep.

What I did Sat/Sun:
- Ordered another SIM card to more easily test this MMS issue
- build server locked up again, idk why. But: 1. SMART errors; so new drives will be here Thursday 🤞 2. Fixed errors from hackers-update.service and shadow.service
- Worked on the gi-docgen parser

What I did today:
- Worked on the gi-docgen parser. Still fuzzing running, but it's looking like I've finally got the blockparser behaving correctly 🤞

No yesterday because I didn't sleep right and spent the day in a half-asleep haze.

But on Thursday I:
- Dealt with the build server overheating
- Presented on Parabola at
- Got a good log trace of the MMS bug in my fork of
- Ordered a Flipper Zero

Today I'm going to:
- Looks like the Parabola build server died because the OOM killer made some bad choices? Looking into that.
- Emails
- Try to wrap up the gi-docgen parser, and PR that into gotk4

What I did yesterday:
- Fight with the Signal build system and Android app signing and dumb user-hostile bullshit
- Read docs on Android telephony

What I'm doing today:
- Work on LUG presentation, give LUG presentation

Blockers/concerns:
- My brain is garbage

What I did yesterday:
- Flew back home from Indianapolis after
- Started updating my fork of from v6.26 to v6.27

What I'm doing today:
- Track down a bug with MMS group messages in my fork of
- Sync with Flynn
- Prepare my presentation on / that I'm giving at the Boulder LUG tomorrow.

Blockers/Concerns:
- I hate Gradle so much