From b7a79951c52929f393c994ac9ab64ca7864b7f97 Mon Sep 17 00:00:00 2001 From: Malin Freeborn Date: Wed, 21 May 2025 16:11:11 +0200 Subject: [PATCH 1/6] adjust LaTeX notes --- writing/tex/calendar.md | 12 ++++++++++++ writing/{latex_setup.md => tex/tex_packages.md} | 4 ++-- 2 files changed, 14 insertions(+), 2 deletions(-) create mode 100644 writing/tex/calendar.md rename writing/{latex_setup.md => tex/tex_packages.md} (92%) diff --git a/writing/tex/calendar.md b/writing/tex/calendar.md new file mode 100644 index 0000000..08e55e4 --- /dev/null +++ b/writing/tex/calendar.md @@ -0,0 +1,12 @@ +--- +title: "Calendar" +tags: [ "writing", "tex", "fun" ] +requires: [ "LaTeX Packages" ] +--- + +```sh +yplan $(date +%Y) > ${file}.tex +pdflatex -output-directory=/tmp/ ${file}.tex +mv /tmp/${file}.pdf . +``` + diff --git a/writing/latex_setup.md b/writing/tex/tex_packages.md similarity index 92% rename from writing/latex_setup.md rename to writing/tex/tex_packages.md index fe7cd42..d7d42cc 100644 --- a/writing/latex_setup.md +++ b/writing/tex/tex_packages.md @@ -1,5 +1,5 @@ --- -title: "LaTeX Setup the Hard Way" +title: "LaTeX Packages" tags: [ "writing" ] --- @@ -21,7 +21,7 @@ ls /opt/texlive/${YEAR}/texmf-dist/scripts/texlive/tlmgr.pl ``` Double-check the year. -It should *not* match the real year, it should match the `texlive`. +It should *not* match the current year, it should match the `texlive`. ## Problems along the Path From 556dba6f296bdb0eb9f23e2aa957aadf0a27e8e2 Mon Sep 17 00:00:00 2001 From: Malin Freeborn Date: Sat, 24 May 2025 23:27:06 +0200 Subject: [PATCH 2/6] scan ports with havn --- networking/port_scan.md | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 networking/port_scan.md diff --git a/networking/port_scan.md b/networking/port_scan.md new file mode 100644 index 0000000..bb5c0d5 --- /dev/null +++ b/networking/port_scan.md @@ -0,0 +1,25 @@ +--- +title: "Port Scan" +tags: [ "networking" ] +repo: 'https://github.com/mrjackwills/havn/' +--- + +`havn` scans ports. +It's not in many repos, but if you can `cargo install havn`. + + +```sh +havn -h +havn -a +domain=splint.rs +havn -p 19-90 ${domain} +``` + +That last command doesn't work reliably, so increase the number of retries (`-r`), or decrease concurrent requests (`-c`). + + +```sh +havn -p 19-443 -r 6 ${domain} +havn -p 1-1000 -c 500 -r 5 ${domain} +``` + From 1a17ffda7f998584711b5a46a600c78e198fc264 Mon Sep 17 00:00:00 2001 From: Malin Freeborn Date: Sat, 24 May 2025 23:27:45 +0200 Subject: [PATCH 3/6] do not jaquays the docs --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 1b269cc..9633487 100644 --- a/README.md +++ b/README.md @@ -44,6 +44,8 @@ They should not assume the reader knows much beyond common terminal commands, an People should be able to read an article from the beginning, then keep going until the end, and then stop. Articles should not take a detour through a chain of other articles of unknown size. +[Do not Jaquays documentation](https://splint.rs/posts/no_links) + ## Be Opinionated - Guides should not ask the reader to select options half-way through. From c08ad6f17518958e74439a8141a9e3aba9005026 Mon Sep 17 00:00:00 2001 From: Malin Freeborn Date: Sun, 25 May 2025 20:10:05 +0200 Subject: [PATCH 4/6] update taskwarrior --- data/task/contexts.md | 34 +++++++++++++ data/{taskwarrior => task}/task.md | 70 ++++++++------------------ data/task/taskwarrior_configuration.md | 20 ++++++++ data/{taskwarrior => task}/timew.md | 0 4 files changed, 76 insertions(+), 48 deletions(-) create mode 100644 data/task/contexts.md rename data/{taskwarrior => task}/task.md (60%) create mode 100644 data/task/taskwarrior_configuration.md rename data/{taskwarrior => task}/timew.md (100%) diff --git a/data/task/contexts.md b/data/task/contexts.md new file mode 100644 index 0000000..4ed3638 --- /dev/null +++ b/data/task/contexts.md @@ -0,0 +1,34 @@ +--- +title: "Taskwarrior Contexts" +tags: [ "data", "task" ] +requires: [ "Taskwarrior" ] +--- + +# Contexts + +Set three contexts by their tags: + +```sh +task context define work +sa or +hr +``` + +```sh +task context define study +ed or +void or +rat +``` + +```sh +task context define home -sa -hr -ed -void -rat +``` + +Change to the first context. + +```sh +task context work +``` + +Then stop. + +```sh +task context none +``` + diff --git a/data/taskwarrior/task.md b/data/task/task.md similarity index 60% rename from data/taskwarrior/task.md rename to data/task/task.md index dc3019f..231b859 100644 --- a/data/taskwarrior/task.md +++ b/data/task/task.md @@ -1,6 +1,6 @@ --- -title: "task" -tags: [ "organization" ] +title: "Taskwarrior" +tags: [ "data", "organization" ] --- Set up the configuration file: @@ -9,6 +9,18 @@ Set up the configuration file: task ``` +Taskwarrior published a new feature to synchronize tasks others, but the feature was not ready. +The server's default installation instructions assume that users pay for hosting services. +All listed providers run proprietary software and actively support genocide. + + +To ignore the synchronization, tell the configuration file to use a local synchronization file. + +``` +task config sync.local.server_dir +task config data.location ~/.local/state/ +``` + Add a task: ```sh @@ -44,18 +56,16 @@ task add project:house buy potted plant task add proj:house.repair buy screwdriver task add proj:house.repair buy shelf brackets task add pro:house.paint buy white paint -task add pro:house.paint buy red paint -task add pro:house.paint buy black paint -task add pro:house.paint buy brushes + +for t in "buy red paint" "buy black paint" "buy brushes" ; do + task add pro:house.paint $t +done ``` ## Summary ```sh task pro:house sum -``` - -```sh task burndown.daily pro:house ``` @@ -63,44 +73,12 @@ The summaries will show how fast a project is being completed, and when you can # Tags + ```sh task add +buy toothbrush -``` - -You can then see only tasks which involve buying something with: - -```sh task +buy ``` -# Contexts - -Set three contexts by their tags: - -```sh -task context define work +sa or +hr -``` - -```sh -task context define study +ed or +void or +rat -``` - -```sh -task context define home -sa -hr -ed -void -rat -``` - -Change to the first context. - -```sh -task context work -``` - -Then stop. - -```sh -task context none -``` - # Review View list of tasks completed in the last week: @@ -111,21 +89,17 @@ task end.after:today-1wk completed # User Defined Attributes -Make a UDA 'size'. +Define a new attribute for tasks called 'size'. +The 'user defined attribute' (UDA) needs a `type` and `label`. ```sh task config uda.size.type string -``` - -```sh task config uda.size.label Size ``` +You can also ensure task tasks can only be `large`, `medium`, or `small`, then set a default. ```sh task config uda.size.values large,medium,small -``` - -```sh uda.size.default=medium ``` diff --git a/data/task/taskwarrior_configuration.md b/data/task/taskwarrior_configuration.md new file mode 100644 index 0000000..6930373 --- /dev/null +++ b/data/task/taskwarrior_configuration.md @@ -0,0 +1,20 @@ +--- +title: "Taskwarrior Configuration" +tags: [ "data", "task" ] +requires: [ "Taskwarrior" ] +--- + +Show your current config: + + +```sh +task show +``` + +Use machine-readable output to make a config file with all configuration keys shown, then make it your configuration file. + +```sh +task _show > ${file} +mv ${file} ~/.config/task/taskrc +``` + diff --git a/data/taskwarrior/timew.md b/data/task/timew.md similarity index 100% rename from data/taskwarrior/timew.md rename to data/task/timew.md From 3fec180a140527cf9d567512d04c677a0f145a1e Mon Sep 17 00:00:00 2001 From: Malin Freeborn Date: Thu, 5 Jun 2025 20:46:13 +0200 Subject: [PATCH 5/6] add python projects with Makefiles --- system/Makefiles/python_projects.md | 98 +++++++++++++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 system/Makefiles/python_projects.md diff --git a/system/Makefiles/python_projects.md b/system/Makefiles/python_projects.md new file mode 100644 index 0000000..57eeb0f --- /dev/null +++ b/system/Makefiles/python_projects.md @@ -0,0 +1,98 @@ +--- +title: "Python Projects with Makefiles" +tags: [ "tutorial", "system", "makefiles", "graphviz", "python" ] +requires: [ "Makefiles" ] +--- + +If you have a python script which requires a packages - e.g. `graphviz` - you can automate the setup with a `Makefile`. +The `Makefile` will: + +1. Make three copies of an 8-line installer script. +2. Use one of the installer script to install local packages. +3. Install a symbolic link to python. +3. Make a script called `activate`, which tells python to use + +# Context + +Python coders don't like updating their projects, they just expect everyone to install the same version of everything that they have. +Historically, people dealt with this by installing only half a dozen copies of `graphviz`; but now each python project uses a local environment, with a local copy of `graphviz`, which means everyone gets to install a new copy of `graphviz` every time they try out a project. + +Downloading 40MB of software for each 40-line script you write is called 'virtual environments' because it sounds cool. +We can make it even cooler with `make`, but not yet, because python - like the fae of old - will not fetch anything until you know its true name. + +# Setup + +```sh +command -v python +realpath `!!` +``` + +You must reveal that true path, because `python` is always a relative symbolic link, to an absolute symbolic link, which leads to a shortcut. +We can finally let `make` know how to invoke python, and where it will install `graphviz`. + +If your python's version is '3.14', then python needs its packages placed in `${somewhere}/lib/python3.14/site-packages/`. +You must create a new, local, name for these packages, because - like the fey of old - python demands a private name in return for revealing its true name. + +I'll call mine `camelot`, because the path is long and arduous. +Set up the Makefiles like this: + +```make +py_link != command -v python +py != realpath $(py_link) +version != basename $(py) + +virtenv = camelot +``` + +Now you can ask for a local `pip` script, which can install the python packages: + +```make + [...] + +$(virtenv)/bin/pip: + $(py) -m venv $(virtenv) +``` + +Finally, list the packages you want in `requirements.txt`, and make `pip` install from it. + + +```sh +ppkg=graphviz +echo ${ppkg} > requirements.txt +``` + +```make + [...] + +pkgs = $(virtenv)/lib/$(version)/site-packages/ + +$(pkgs): $(virtenv)/bin/pip +$(pkgs): requirements.txt + $(virtenv)/bin/pip install -r $< +``` + +The complete Makefile looks like this: + + +```make +all: .default + +py_link != command -v python +py != realpath $(py_link) +version != basename $(py) + +virtenv = camelot + +$(virtenv)/bin/pip: + $(py) -m venv $(virtenv) + +pkgs = $(virtenv)/lib/$(version)/site-packages/ + +$(pkgs): $(virtenv)/bin/pip +$(pkgs): requirements.txt + $(virtenv)/bin/pip install -r $< + +.PHONY: .default +.default: $(pkgs) +``` + From 7e2487f0d354f2b2321a8d353db377122e16f4fc Mon Sep 17 00:00:00 2001 From: Malin Freeborn Date: Thu, 5 Jun 2025 20:46:33 +0200 Subject: [PATCH 6/6] formatting --- system/Makefiles/patterns.md | 1 - 1 file changed, 1 deletion(-) diff --git a/system/Makefiles/patterns.md b/system/Makefiles/patterns.md index 60290a1..cd541e6 100644 --- a/system/Makefiles/patterns.md +++ b/system/Makefiles/patterns.md @@ -1,4 +1,3 @@ - --- title: "Makefile Patterns" tags: [ "system", "make" ]