Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
50 most recent check-ins
|
2026-09-25
| ||
| 15:33 | preserve exif metadata and timestamps when converting to jxl ImageMagick drops some metadata during JXL conversion, so copy everything (EXIF, XMP, IPTC, ICC) from the original with exiftool after converting and restore the file timestamps. JPEG COM comments have no home in JXL, so land them in XMP Description, or EXIF UserComment if Description is taken. Also trim the bloated comment blocks. leaf check-in: 21c35006a8 user: andrew tags: master, trunk | |
|
2026-08-30
| ||
| 18:06 |
update AGENTS and README for fossil repo
Replace git references (status/staging/amend/.gitignore) with fossil equivalents in AGENTS.md, note Fossil in README, and add missing git2fossil.fish to the scripts table. check-in: 423311c6b6 user: andrew tags: master, trunk | |
| 06:45 |
add git2fossil.fish to convert git repositories to fossil
Translates gitignore patterns into Fossil's ignore-glob setting, preserves ignored files on a hidden branch with --import-ignored, and sets the admin password to the repo name with a warning. check-in: 07a5bf35db user: sourcehut@lewman.us tags: master, trunk | |
|
2026-08-22
| ||
| 15:33 | update the user agent to something more recent leaf check-in: d56e5f1322 user: sourcehut@lewman.us tags: origin/master, trunk | |
|
2026-08-15
| ||
| 03:43 |
darcs2fossil: set the current user's password to the repo name
The previous commit set the admin password to the repo name, but hardcoded user 'root'. Fossil creates the admin user as the current user, so the password reset failed. Use (whoami) to target the actual admin user and update the warning message. check-in: 6861634e39 user: sourcehut@lewman.us tags: origin/master, trunk | |
| 03:26 |
darcs2fossil: set admin password to repo name and warn about it
Fossil import creates a default root user with no password. Set that password to the repository basename so the repo is immediately usable, but print a yellow warning showing the insecure credentials and the fossil command to change them. check-in: cf2d5af32d user: sourcehut@lewman.us tags: origin/master, trunk | |
| 02:35 | add darcs2fossil.fish to convert darcs repositories to fossil check-in: f9b80f2be6 user: sourcehut@lewman.us tags: origin/master, trunk | |
|
2026-07-28
| ||
| 02:24 | README: add script index table and license section check-in: 8223226c12 user: sourcehut@lewman.us tags: origin/master, trunk | |
| 02:19 |
prismcat: inline hot-path functions for ~66x speedup
Each $(...) call in the per-character loop forked two subshells. Inlining step_state, rand_run, and color_at eliminates the forks, dropping 5000-line runtime from 109s to 1.3s. check-in: e3e3665739 user: sourcehut@lewman.us tags: origin/master, trunk | |
| 02:10 |
prismcat: refactor to functional style
Use readonly constants, pure functions that only read args and write stdout, explicit state threading through step_state, and isolate all I/O in main. Remove dead code (err_exit, add_esc, offset, opts). check-in: 0fd18504e4 user: sourcehut@lewman.us tags: origin/master, trunk | |
| 02:04 |
prismcat: fix shebang to bash since the script uses bashisms
Arrays, local, RANDOM, and C-style for loops are not POSIX sh. check-in: dac813a044 user: sourcehut@lewman.us tags: origin/master, trunk | |
| 01:59 |
add SPDX BSD-3-Clause license headers to all scripts
Skipped lolcat.sh which is MIT-licensed from Avi Halachmi (avih/shlolcat). check-in: 76609cebb3 user: sourcehut@lewman.us tags: origin/master, trunk | |
| 01:56 | prismcat: update header comment to match new name check-in: 529b0fb94d user: sourcehut@lewman.us tags: origin/master, trunk | |
| 01:56 |
rename mistralcat.sh to prismcat.sh
The script is no longer mistral-generated; prismcat better reflects what it does (prism splits light into a rainbow, cat concatenates). check-in: 0162c90ee1 user: sourcehut@lewman.us tags: origin/master, trunk | |
| 01:54 |
mistralcat: use ROYGBIV palette with random per-color run lengths
Replace the full 256-color cycle (which included black and greyscale) with a 21-color palette from the 6x6x6 cube following red through violet. Each color holds for 1-5 characters before advancing, and the rainbow flows continuously across newlines instead of resetting per line. check-in: a425cd9b0c user: sourcehut@lewman.us tags: origin/master, trunk | |
| 01:44 | mistralcat: pipe file args into the read loop so they aren't ignored check-in: 1f0b2db2e4 user: sourcehut@lewman.us tags: origin/master, trunk | |
| 01:01 | izzy_apk_audit: replace sqlite/rss with append-only jsonl output check-in: 0e9f6efabf user: sourcehut@lewman.us tags: origin/master, trunk | |
|
2026-07-27
| ||
| 03:53 |
izzy_apk_audit: format rss descriptions with emoji and sections
Render each feed item with the same emoji, indentation, and section headers used in the terminal output so it is readable in an rss reader instead of a single text blob. check-in: f8aae0e495 user: sourcehut@lewman.us tags: origin/master, trunk | |
| 03:48 |
izzy_apk_audit: use OpenBSD jot for bounded random apk selection
Prefer jot(1) on OpenBSD to pick an index in the valid range directly, falling back to /dev/urandom with modulo on systems without jot. check-in: af7b0e1949 user: sourcehut@lewman.us tags: origin/master, trunk | |
| 03:46 |
izzy_apk_audit: pick apks with /dev/urandom instead of fish random
fish's random builtin is deterministic enough that cron-fired runs could keep selecting the same apk. Read 4 bytes from /dev/urandom and mod them into the index range for unbiased selection on OpenBSD and Linux. check-in: 08eedd4e8f user: sourcehut@lewman.us tags: origin/master, trunk | |
| 03:41 |
izzy_apk_audit: avoid reserved fish variable name "version"
"version" is a special variable in fish 4.x; using it as a local produced runtime warnings. Rename the locals to "appver". check-in: 50c1a9c8e4 user: sourcehut@lewman.us tags: origin/master, trunk | |
| 03:33 |
izzy_apk_audit: persist runs to sqlite and publish an rss feed
Each audit run is now recorded in izzy_apk_audit.sqlite3 along with per-mirror results, and the latest 25 runs are rendered as an RSS feed for public consumption. check-in: 30cdf467ed user: sourcehut@lewman.us tags: origin/master, trunk | |
|
2026-07-21
| ||
| 04:24 |
fix izzy_apk_audit on openbsd: use openssl instead of base64
openbsd ships no `base64` binary; openssl is already a hard dependency, so pipe `openssl dgst -binary` into `openssl base64`. check-in: e8b240de88 user: sourcehut@lewman.us tags: origin/master, trunk | |
| 04:20 |
make izzy_apk_audit portable and single-run
use cksum/openssl/fish random instead of sha256sum/xxd/shuf so it runs on OpenBSD too, and drop the built-in 2-12h sleep loop so scheduling can be handled externally by cron or a systemd timer. check-in: 8ba79e18f3 user: sourcehut@lewman.us tags: origin/master, trunk | |
| 04:07 | first attempt at a script to check random apks on each izzy repo check-in: 8b00fcf856 user: sourcehut@lewman.us tags: origin/master, trunk | |
|
2026-05-31
| ||
| 19:03 | sort snapshots newest-first so we keep the last 30, not the oldest 30 check-in: 2ba1ea310a user: sourcehut@lewman.us tags: origin/master, trunk | |
|
2026-05-23
| ||
| 20:11 | simply script to check my own mirror check-in: fbf17770bd user: sourcehut@lewman.us tags: origin/master, trunk | |
|
2026-05-14
| ||
| 04:56 |
rewrite generate_openbsd_patch_histogram in fish
use htmlq for actual html parsing instead of regex grepping. count
| |
|
2026-05-06
| ||
| 06:37 | fix up AGENTS for all the bots check-in: 08e44683f7 user: sourcehut@lewman.us tags: origin/master, trunk | |
| 06:33 | rename usbmonitor to a txt file check-in: 2a90adae6d user: sourcehut@lewman.us tags: origin/master, trunk | |
| 06:32 | update toggle_ipv6.sh to fish and name it properly check-in: 6ab09c5d48 user: sourcehut@lewman.us tags: origin/master, trunk | |
| 06:28 |
drop -t auto from unix_timestamp.jl shebang
trivial time() call doesn't need threading overhead check-in: 29a04ac685 user: sourcehut@lewman.us tags: origin/master, trunk | |
| 06:24 |
make unix_timestamp.jl executable; add --seconds flag
Previously a manual snippet. Now a standalone executable: - Default: outputs current time in milliseconds (Publii format) - -s / --seconds: outputs Unix epoch seconds (date +%s) check-in: deb96840cf user: sourcehut@lewman.us tags: origin/master, trunk | |
| 06:19 |
add publii_db_stats.jl: blog database analytics and charts
Analyzes a Publii SQLite database and produces terminal tables plus SVG charts for: - Posts per year, month, day-of-week, hour-of-day - Year-over-year posting growth rates - Gaps between consecutive posts - Word count averages, min/max, and bucket distributions - Link counts per post - Estimated reading time - Title statistics - Cumulative posts timeline Requires a Publii db.sqlite path as the only argument. Outputs charts to ./blogstats_charts/. check-in: db2e8229ad user: sourcehut@lewman.us tags: origin/master, trunk | |
| 05:37 |
fix array index 0 error on first filesystem iteration
seq 0 emits 0, which Fish rejects since arrays are 1-indexed. Guard the inner loop with a count check to skip it when no filesystems have been seen yet. check-in: 62a0bca3d8 user: sourcehut@lewman.us tags: origin/master, trunk | |
| 05:32 |
keep 30 snapshots per filesystem instead of globally
Previously the 30-snapshot limit was applied across all filesystems combined within a dataset, meaning a child filesystem with few snapshots could have them pruned while another had many. Now each filesystem independently retains up to 30 snapshots. Also fix the broken $0 in usage message by using (status basename). check-in: 59f1b7576d user: sourcehut@lewman.us tags: origin/master, trunk | |
| 04:54 | add doas/sudo detection check-in: 4c3f2ba0ee user: sourcehut@lewman.us tags: origin/master, trunk | |
|
2026-04-30
| ||
| 07:12 | AGENTS, the new README for agents. check-in: 842ce85b57 user: sourcehut@lewman.us tags: origin/master, trunk | |
|
2026-04-15
| ||
| 08:00 | never delete @initial snapshots as they are used for initial backups and incrementals check-in: d67f2cb431 user: sourcehut@lewman.us tags: origin/master, trunk | |
|
2026-03-19
| ||
| 02:14 | rename update_openbsd_patches to something more descriptive check-in: 1a53a41a8a user: sourcehut@lewman.us tags: origin/master, trunk | |
|
2026-03-18
| ||
| 21:48 | drop the emoji for plaintext enjoyers check-in: ad2bfd77cd user: sourcehut@lewman.us tags: origin/master, trunk | |
| 21:45 | update the year for the LICENSE check-in: 59dc828e46 user: sourcehut@lewman.us tags: origin/master, trunk | |
| 21:44 | add the LICENSE for posterity check-in: 932a2588d5 user: sourcehut@lewman.us tags: origin/master, trunk | |
| 21:42 | hack out a script that builds a histogram of patches by openbsd release that puts out a plaintext histogram txt file. check-in: 1964320256 user: sourcehut@lewman.us tags: origin/master, trunk | |
|
2026-01-16
| ||
| 07:17 |
fix: add improved ZFS snapshot cleanup script
Create v2 script that properly handles nested datasets and chronological ordering. - Use recursive snapshot discovery with -r flag - Sort snapshots by creation time to delete oldest first - Add proper error handling for destroy operations - Use pure fish array operations instead of external commands check-in: ff6a1b721d user: sourcehut@lewman.us tags: origin/master, trunk | |
|
2025-11-24
| ||
| 07:01 | explain what unix_timestamp.jl does check-in: 798cf02e85 user: sourcehut@lewman.us tags: origin/master, trunk | |
| 07:00 | reorganize the repo into archive and non-archive. check-in: 346c8891ff user: sourcehut@lewman.us tags: origin/master, trunk | |
| 06:49 | change perms so we can run it check-in: f152217ca7 user: sourcehut@lewman.us tags: origin/master, trunk | |
| 06:48 | rework the keep last to accept a zpool name as the only argument. confirm it is a valid name check-in: f3aba9e8e9 user: sourcehut@lewman.us tags: origin/master, trunk | |
| 05:42 | major refactor of the script: 1. more portable to generic fish shell 2. better handling of file names with spaces 3. progress bar 4. more functions, less confusion 5. documentation of each function check-in: bf885e4038 user: sourcehut@lewman.us tags: origin/master, trunk | |