--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/bin/# Mon Jun 29 12:50:56 2026 -0400
@@ -0,0 +1,2 @@
+#!/usr/bin/env bash
+cat
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/bin/qimgv-stdin Mon Jun 29 12:50:56 2026 -0400
@@ -0,0 +1,7 @@
+#!/usr/bin/env bash
+
+set -euo pipefail
+
+cat > ~/scratch/qimgv-tmp
+qimgv ~/scratch/qimgv-tmp
+rm -f ~/scratch/qimgv-tmp
--- a/bin/watch-latex Mon Mar 02 13:12:13 2026 -0500
+++ b/bin/watch-latex Mon Jun 29 12:50:56 2026 -0400
@@ -5,4 +5,4 @@
NAME="$1"
shift
-echo "$NAME".tex "$@" | peat "mklatex $NAME"
+echo *.tex "$@" | peat "mklatex $NAME"
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/bin/x Mon Jun 29 12:50:56 2026 -0400
@@ -0,0 +1,1 @@
+scratch
\ No newline at end of file
--- a/fish/config.fish Mon Mar 02 13:12:13 2026 -0500
+++ b/fish/config.fish Mon Jun 29 12:50:56 2026 -0400
@@ -149,7 +149,7 @@
set -g -x ANSIBLE_NOCOWS 1
set -g -x DFT_COLOR 'always' # disable stupid pipe detection
-set -g -x DFT_WIDTH 10000000000 # stop trying to be smart
+# set -g -x DFT_WIDTH 10000000000 # stop trying to be smart
set -g -x DFT_TAB_WIDTH 8 # tabs are 8 characters wide
set -g -x DFT_DISPLAY side-by-side
set -g -x DFT_CONTEXT 8 # more context
--- a/gitignore Mon Mar 02 13:12:13 2026 -0500
+++ b/gitignore Mon Jun 29 12:50:56 2026 -0400
@@ -21,5 +21,6 @@
sjl-*-push.sh
sjl-*-pull.sh
*.sif
+Rplots.pdf
*.waiting
--- a/htoprc Mon Mar 02 13:12:13 2026 -0500
+++ b/htoprc Mon Jun 29 12:50:56 2026 -0400
@@ -38,7 +38,7 @@
column_meter_modes_0=1 1 1
column_meters_1=RightCPUs2 Tasks LoadAverage Uptime
column_meter_modes_1=1 2 2 2
-tree_view=0
+tree_view=1
sort_key=39
tree_sort_key=0
sort_direction=-1
@@ -48,7 +48,7 @@
screen:Main=PID USER PRIORITY NICE M_RESIDENT STATE PERCENT_CPU PERCENT_MEM TIME Command
.sort_key=M_RESIDENT
.tree_sort_key=PID
-.tree_view=0
+.tree_view=1
.tree_view_always_by_pid=1
.sort_direction=-1
.tree_sort_direction=1
--- a/lispwords Mon Mar 02 13:12:13 2026 -0500
+++ b/lispwords Mon Jun 29 12:50:56 2026 -0400
@@ -132,6 +132,7 @@
(2 define-interface)
(1 make-option make-boolean-options make-group)
(1 quit-on-ctrl-c)
+(1 print-help-and-exit)
; metabang-bind
--- a/stumpwm/bioinf.lisp Mon Mar 02 13:12:13 2026 -0500
+++ b/stumpwm/bioinf.lisp Mon Jun 29 12:50:56 2026 -0400
@@ -1,7 +1,10 @@
(in-package :stumpwm-user)
-(defun random-base ()
+(defun random-rna-base ()
+ (random-elt "GCAU"))
+
+(defun random-dna-base ()
(random-elt "GCAT"))
(defun random-phred ()
@@ -13,21 +16,42 @@
(setf (char result i) (random-phred)))
result))
+
+(defun random-rna-string (n)
+ (let ((result (make-string n)))
+ (dotimes (i n)
+ (setf (char result i) (random-rna-base)))
+ result))
+
+(defcommand random-rna (n) ((:integer "Length: "))
+ (pbcopy (random-rna-string n)))
+
+
(defun random-dna-string (n)
(let ((result (make-string n)))
(dotimes (i n)
- (setf (char result i) (random-base)))
+ (setf (char result i) (random-dna-base)))
result))
(defcommand random-dna (n) ((:integer "Length: "))
(pbcopy (random-dna-string n)))
+
(defun random-fasta-string (entries entry-length)
(str:join #\newline
(loop :for i :from 0 :below entries
:collect (format nil ">seq ~D" i)
:collect (random-dna-string entry-length))))
+(defcommand random-fasta
+ (entries entry-length)
+ ((:integer "Entries: ")
+ (:integer "Entry Length: "))
+ (check-type entries (integer 1 *))
+ (check-type entry-length (integer 1 *))
+ (pbcopy (random-fasta-string entries entry-length)))
+
+
(defun random-fastq-string (entries entry-length)
(str:join #\newline
(loop :for i :from 0 :below entries
@@ -36,14 +60,6 @@
:collect "+"
:collect (random-phred-string entry-length))))
-(defcommand random-fasta
- (entries entry-length)
- ((:integer "Entries: ")
- (:integer "Entry Length: "))
- (check-type entries (integer 1 *))
- (check-type entry-length (integer 1 *))
- (pbcopy (random-fasta-string entries entry-length)))
-
(defcommand random-fastq
(entries entry-length)
((:integer "Entries: ")
--- a/stumpwm/key-mapping.lisp Mon Mar 02 13:12:13 2026 -0500
+++ b/stumpwm/key-mapping.lisp Mon Jun 29 12:50:56 2026 -0400
@@ -41,12 +41,11 @@
("H-O" "spotify")
("H-o" "files")
("H-t" "zoom-meeting")
- ("H-P" "papers")
("F26" "prev")
("S-F26" "next")
("H-q" "exec lock-screen")
("H-y" "screenshot")
- ("H-Y" "delayed-screenshot")
+ ("H-Y" "exec switch-yubikey")
("H-r" "rain")
("H-e" "budget")
("H-E" "spend")
--- a/vim/custom-dictionary.utf-8.add Mon Mar 02 13:12:13 2026 -0500
+++ b/vim/custom-dictionary.utf-8.add Mon Jun 29 12:50:56 2026 -0400
@@ -574,3 +574,11 @@
FAST5
POD5
nondeterministic
+Sniffles2
+hg38
+hg19
+GIAB
+Truvari
+bcftools
+hg37
+LLQR
--- a/vim/vimrc Mon Mar 02 13:12:13 2026 -0500
+++ b/vim/vimrc Mon Jun 29 12:50:56 2026 -0400
@@ -779,6 +779,32 @@
augroup END
" }}}
+" FASTQ {{{
+
+function! SelectFASTQRead() " {{{
+ execute "normal! $?^@\<cr>V3j"
+endfunction " }}}
+
+function! MinimeraRead() " {{{
+ execute "silent '<,'>! \<c-w>lG\<c-w>hG"
+endfunction " }}}
+
+augroup ft_fastq
+ au!
+
+ autocmd BufNewFile,BufRead *.fastq set filetype=fastq
+
+ au FileType fastq setlocal nowrap
+
+ au FileType fastq xnoremap <buffer> ir :<c-u>call SelectFASTQRead()<cr>
+ au FileType fastq xnoremap <buffer> ar :<c-u>call SelectFASTQRead()<cr>
+ au FileType fastq onoremap <buffer> ir :<c-u>call SelectFASTQRead()<cr>
+ au FileType fastq onoremap <buffer> ar :<c-u>call SelectFASTQRead()<cr>
+
+ au FileType fastq nmap <buffer> <localleader>m var:<c-u>silent '<,'>w !minimera-stdin.sh<cr>
+augroup END
+
+" }}}
" Firefox {{{
augroup ft_firefox