<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="/atom.xsl" type="text/xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>drafts</title>
  <id>https://pype.dev/drafts/atom.xml</id>
  <updated>2026-10-06T19:30:00Z</updated>
  <subtitle>My thoughts and streams of consciousness organized into barely coherent posts about things</subtitle>
  <link href="https://pype.dev/drafts/" rel="alternate" type="text/html"></link>
  <link href="https://pype.dev/drafts/atom.xml" rel="self" type="application/atom+xml"></link>
  <author>
    <name>Nic Payne</name>
  </author>
  <generator uri="https://github.com/WaylonWalker/markata-go">markata-go</generator>
  <entry>
    <title>markata-go Migration Research</title>
    <id>https://pype.dev/markata-go-migration-research/</id>
    <updated>2026-10-06T19:30:00Z</updated>
    <published>2026-10-06T19:30:00Z</published>
    <link href="https://pype.dev/markata-go-migration-research/" rel="alternate" type="text/html"></link>
    <summary type="text">Research on markata-go, the Go rewrite of the Python markata static site generator, to support migrating pype.dev. All sources are primary: the GitHub repo...</summary>
    <content type="html">&lt;p&gt;Research on &lt;a href=&#34;https://github.com/WaylonWalker/markata-go&#34;&gt;markata-go&lt;/a&gt;, the Go rewrite of the Python &lt;a href=&#34;https://markata.dev&#34;&gt;markata&lt;/a&gt; static site generator, to support migrating pype.dev. All sources are primary: the GitHub repo (README, &lt;code&gt;docs/&lt;/code&gt;, &lt;code&gt;spec/&lt;/code&gt;, releases, issues, commit history), pkg.go.dev, and Waylon&amp;rsquo;s own sites (waylonwalker.com now runs on markata-go; &lt;code&gt;go.waylonwalker.com&lt;/code&gt; is the deployment).&lt;/p&gt;&#xA;&lt;p&gt;Repo state as of research date: &lt;strong&gt;v0.13.0, &amp;ldquo;Beta (0.x) - API may change between minor versions&amp;rdquo;&lt;/strong&gt;, created 2026-01-22, 2 stars, 51 open issues, essentially solo-maintained by WaylonWalker (853 contributions) + dependabot. &lt;a href=&#34;https://github.com/WaylonWalker/markata-go&#34;&gt;Source&lt;/a&gt;, &lt;a href=&#34;https://pkg.go.dev/github.com/WaylonWalker/markata-go&#34;&gt;pkg.go.dev&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Important caveat:&lt;/strong&gt; the project is &amp;ldquo;open source but &lt;strong&gt;not open contribution&lt;/strong&gt;&amp;rdquo; — PRs are not reviewed or merged; bugs/feature requests go through issues only. &lt;a href=&#34;https://github.com/WaylonWalker/markata-go/blob/main/CONTRIBUTING.md&#34;&gt;CONTRIBUTING.md&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;1-installation-cli&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;1. Installation + CLI&lt;/span&gt; &lt;a href=&#34;#1-installation-cli&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;install-options&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Install options&lt;/span&gt; &lt;a href=&#34;#install-options&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://github.com/WaylonWalker/markata-go/blob/main/docs/installation.md&#34;&gt;docs/installation.md&lt;/a&gt;, &lt;a href=&#34;https://github.com/WaylonWalker/markata-go&#34;&gt;README&lt;/a&gt;&lt;/p&gt;&#xA;&lt;pre class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# One-liner (Linux/macOS)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -sSL https://raw.githubusercontent.com/WaylonWalker/markata-go/main/install.sh &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; bash&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# (also published at https://waylonwalker.github.io/markata-go/install.sh)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# jpillora installer&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -sL https://i.jpillora.com/WaylonWalker/markata-go &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; bash&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# eget&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;eget WaylonWalker/markata-go&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# mise (from GitHub releases)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mise use -g github:WaylonWalker/markata-go&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Go install (Go 1.22+; v0.13.0 toolchain reports Go 1.26)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;go install github.com/WaylonWalker/markata-go/cmd/markata-go@latest&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# or pinned: ...@v0.13.0&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Distributed as a single dependency-free binary. &lt;code&gt;markata-go update&lt;/code&gt; is a built-in self-update command. &lt;a href=&#34;https://github.com/WaylonWalker/markata-go/releases/tag/v0.5.0&#34;&gt;v0.5.0 release notes&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h3 id=&#34;cli-commands&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;CLI commands&lt;/span&gt; &lt;a href=&#34;#cli-commands&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://github.com/WaylonWalker/markata-go/blob/main/docs/reference/cli.md&#34;&gt;docs/reference/cli.md&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Global flags: &lt;code&gt;-c/--config&lt;/code&gt;, &lt;code&gt;-m/--merge-config&lt;/code&gt; (repeatable), &lt;code&gt;-o/--output&lt;/code&gt;, &lt;code&gt;-q/--quiet&lt;/code&gt;, &lt;code&gt;-v/--verbose&lt;/code&gt;, &lt;code&gt;--color/--no-color&lt;/code&gt;, &lt;code&gt;--log-format&lt;/code&gt;, &lt;code&gt;--no-input&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;table&gt;&#xA;&lt;thead&gt;&#xA;&lt;tr&gt;&#xA;&lt;th&gt;Command&lt;/th&gt;&#xA;&lt;th&gt;What it does&lt;/th&gt;&#xA;&lt;/tr&gt;&#xA;&lt;/thead&gt;&#xA;&lt;tbody&gt;&#xA;&lt;tr&gt;&#xA;&lt;td&gt;&lt;code&gt;build&lt;/code&gt;&lt;/td&gt;&#xA;&lt;td&gt;Full build. Flags: &lt;code&gt;--clean&lt;/code&gt;, &lt;code&gt;--dry-run&lt;/code&gt;, &lt;code&gt;--fast&lt;/code&gt; (skip minify/CSS purge/Tailwind/Pagefind), &lt;code&gt;--benchmark-json&lt;/code&gt;, &lt;code&gt;--benchmark-detailed&lt;/code&gt;&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;tr&gt;&#xA;&lt;td&gt;&lt;code&gt;serve&lt;/code&gt;&lt;/td&gt;&#xA;&lt;td&gt;Dev server + live reload. &lt;code&gt;-p/--port&lt;/code&gt;, &lt;code&gt;-H/--host&lt;/code&gt;, &lt;code&gt;--no-reload&lt;/code&gt;, &lt;code&gt;--no-watch&lt;/code&gt;, &lt;code&gt;--open&lt;/code&gt;, &lt;code&gt;--fast&lt;/code&gt;&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;tr&gt;&#xA;&lt;td&gt;&lt;code&gt;new [title]&lt;/code&gt;&lt;/td&gt;&#xA;&lt;td&gt;Create post. &lt;code&gt;--dir&lt;/code&gt;, &lt;code&gt;--draft&lt;/code&gt;, &lt;code&gt;--tags&lt;/code&gt;; interactive mode via charmbracelet/huh. Built-in content templates: post, page, docs, article, note, photo, video, link, quote, guide, inline, contact, author&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;tr&gt;&#xA;&lt;td&gt;&lt;code&gt;init&lt;/code&gt;&lt;/td&gt;&#xA;&lt;td&gt;Scaffold a new site&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;tr&gt;&#xA;&lt;td&gt;&lt;code&gt;config show/get/set/validate/init&lt;/code&gt;&lt;/td&gt;&#xA;&lt;td&gt;Resolved config in YAML/JSON/TOML; dot-notation get (&lt;code&gt;feeds.defaults.items_per_page&lt;/code&gt;); &lt;code&gt;set&lt;/code&gt; preserves formatting&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;tr&gt;&#xA;&lt;td&gt;&lt;code&gt;migrate&lt;/code&gt;&lt;/td&gt;&#xA;&lt;td&gt;&lt;strong&gt;Python-markata migration tool&lt;/strong&gt; (see §2)&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;tr&gt;&#xA;&lt;td&gt;&lt;code&gt;tui&lt;/code&gt;&lt;/td&gt;&#xA;&lt;td&gt;k9s-style interactive TUI: posts/tags/feeds views, &lt;code&gt;/&lt;/code&gt; filter expressions&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;tr&gt;&#xA;&lt;td&gt;&lt;code&gt;lsp&lt;/code&gt; / &lt;code&gt;lsp setup --editor helix&lt;/code&gt;&lt;/td&gt;&#xA;&lt;td&gt;Language server: wikilink completion, frontmatter completion/hover, diagnostics&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;tr&gt;&#xA;&lt;td&gt;&lt;code&gt;list&lt;/code&gt;&lt;/td&gt;&#xA;&lt;td&gt;List posts/tags/feeds (`&amp;ndash;format table&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;tr&gt;&#xA;&lt;td&gt;&lt;code&gt;search&lt;/code&gt;&lt;/td&gt;&#xA;&lt;td&gt;Content search: &lt;code&gt;--filter&lt;/code&gt;, &lt;code&gt;--fields&lt;/code&gt;, &lt;code&gt;--fuzzy&lt;/code&gt;, &lt;code&gt;--limit&lt;/code&gt;&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;tr&gt;&#xA;&lt;td&gt;&lt;code&gt;lint&lt;/code&gt;&lt;/td&gt;&#xA;&lt;td&gt;Frontmatter/content checks with fixers (incl. natural-language datetime fixing)&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;tr&gt;&#xA;&lt;td&gt;&lt;code&gt;explain &amp;lt;topic&amp;gt;&lt;/code&gt;&lt;/td&gt;&#xA;&lt;td&gt;Built-in docs, e.g. &lt;code&gt;markata-go explain feeds&lt;/code&gt;&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;tr&gt;&#xA;&lt;td&gt;&lt;code&gt;benchmark&lt;/code&gt;&lt;/td&gt;&#xA;&lt;td&gt;Build benchmarks + pprof&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;tr&gt;&#xA;&lt;td&gt;&lt;code&gt;import&lt;/code&gt;&lt;/td&gt;&#xA;&lt;td&gt;Import external content (PESOS pattern)&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;tr&gt;&#xA;&lt;td&gt;&lt;code&gt;encryption&lt;/code&gt;&lt;/td&gt;&#xA;&lt;td&gt;&lt;code&gt;check&lt;/code&gt;, &lt;code&gt;generate-password&lt;/code&gt;, &lt;code&gt;encrypt-posts&lt;/code&gt; subcommands&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;tr&gt;&#xA;&lt;td&gt;&lt;code&gt;aesthetic&lt;/code&gt;&lt;/td&gt;&#xA;&lt;td&gt;Theme/aesthetic tooling&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;tr&gt;&#xA;&lt;td&gt;&lt;code&gt;agent&lt;/code&gt;&lt;/td&gt;&#xA;&lt;td&gt;Install/doctor bundled agent-skill integrations (&lt;code&gt;agent doctor&lt;/code&gt; drift-checks installed skill)&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;tr&gt;&#xA;&lt;td&gt;&lt;code&gt;blogroll&lt;/code&gt;&lt;/td&gt;&#xA;&lt;td&gt;Blogroll commands incl. &lt;code&gt;blogroll update&lt;/code&gt;&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;tr&gt;&#xA;&lt;td&gt;&lt;code&gt;version&lt;/code&gt;&lt;/td&gt;&#xA;&lt;td&gt;&lt;code&gt;--short&lt;/code&gt; supported&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;2-config-format&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;2. Config format&lt;/span&gt; &lt;a href=&#34;#2-config-format&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;file-discovery&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;File discovery&lt;/span&gt; &lt;a href=&#34;#file-discovery&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;p&gt;markata-go does &lt;strong&gt;not&lt;/strong&gt; auto-read &lt;code&gt;markata.toml&lt;/code&gt;. It looks for (first found wins): &lt;code&gt;./markata-go.toml&lt;/code&gt;, &lt;code&gt;./markata-go.yaml&lt;/code&gt;, &lt;code&gt;./markata-go.yml&lt;/code&gt;, &lt;code&gt;./markata-go.json&lt;/code&gt;, &lt;code&gt;.markata-go.*&lt;/code&gt;, &lt;code&gt;~/.config/markata-go/config.toml&lt;/code&gt;, or &lt;code&gt;--config&lt;/code&gt;/&lt;code&gt;--merge-config&lt;/code&gt;. &lt;a href=&#34;https://github.com/WaylonWalker/markata-go/blob/main/docs/guides/configuration.md&#34;&gt;configuration.md&lt;/a&gt;, &lt;a href=&#34;https://github.com/WaylonWalker/markata-go/blob/main/docs/reference/cli.md&#34;&gt;cli.md&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;All config is namespaced under &lt;code&gt;[markata-go]&lt;/code&gt; (also accepts YAML/JSON). Env overrides use &lt;code&gt;MARKATA_GO_&lt;/code&gt; prefix (e.g. &lt;code&gt;MARKATA_GO_OUTPUT_DIR=dist&lt;/code&gt;). Config &lt;code&gt;include = [...]&lt;/code&gt; supports splitting config across files; &lt;code&gt;[[markata-go.feeds]]&lt;/code&gt; merges by &lt;code&gt;slug&lt;/code&gt;. &lt;a href=&#34;https://github.com/WaylonWalker/markata-go/blob/main/docs/guides/configuration.md&#34;&gt;configuration.md&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h3 id=&#34;core-schema-markata-go&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Core schema (&lt;/span&gt;&lt;code&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;[markata-go]&lt;/span&gt;&lt;/code&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;)&lt;/span&gt; &lt;a href=&#34;#core-schema-markata-go&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;p&gt;&lt;code&gt;output_dir&lt;/code&gt; (default &lt;code&gt;&amp;quot;output&amp;quot;&lt;/code&gt;), &lt;code&gt;url&lt;/code&gt;, &lt;code&gt;title&lt;/code&gt;, &lt;code&gt;description&lt;/code&gt;, &lt;code&gt;author&lt;/code&gt;, &lt;code&gt;license&lt;/code&gt;, &lt;code&gt;assets_dir&lt;/code&gt; (default &lt;code&gt;&amp;quot;static&amp;quot;&lt;/code&gt;), &lt;code&gt;templates_dir&lt;/code&gt; (default &lt;code&gt;&amp;quot;templates&amp;quot;&lt;/code&gt;), &lt;code&gt;hooks&lt;/code&gt; (default &lt;code&gt;[&amp;quot;default&amp;quot;]&lt;/code&gt;), &lt;code&gt;disabled_hooks&lt;/code&gt;, &lt;code&gt;concurrency&lt;/code&gt; (0=auto). PWA-ish fields also present in the schema: &lt;code&gt;icon&lt;/code&gt;, &lt;code&gt;lang&lt;/code&gt;, &lt;code&gt;theme_color&lt;/code&gt;, &lt;code&gt;background_color&lt;/code&gt;, &lt;code&gt;start_url&lt;/code&gt;, &lt;code&gt;display&lt;/code&gt;, &lt;code&gt;short_name&lt;/code&gt;, &lt;code&gt;site_name&lt;/code&gt;, &lt;code&gt;repo_url&lt;/code&gt;, &lt;code&gt;repo_branch&lt;/code&gt;, &lt;code&gt;twitter_card&lt;/code&gt;, &lt;code&gt;twitter_handle&lt;/code&gt;/&lt;code&gt;twitter_site&lt;/code&gt;, &lt;code&gt;rss_description&lt;/code&gt;, &lt;code&gt;site_version&lt;/code&gt;. &lt;a href=&#34;https://github.com/WaylonWalker/markata-go/blob/main/docs/guides/configuration.md&#34;&gt;configuration.md&lt;/a&gt; + this repo&amp;rsquo;s own &lt;code&gt;markata-go.toml&lt;/code&gt; which already carries them.&lt;/p&gt;&#xA;&lt;p&gt;Other sections seen in docs: &lt;code&gt;[markata-go.glob]&lt;/code&gt; (&lt;code&gt;patterns&lt;/code&gt; default &lt;code&gt;[&amp;quot;pages/**/*.md&amp;quot;,&amp;quot;posts/**/*.md&amp;quot;]&lt;/code&gt;, &lt;code&gt;use_gitignore&lt;/code&gt;, &lt;code&gt;slug_mode&lt;/code&gt;, &lt;code&gt;slug_rules&lt;/code&gt;), &lt;code&gt;[markata-go.markdown]&lt;/code&gt; + &lt;code&gt;[markata-go.markdown.highlight]&lt;/code&gt;, &lt;code&gt;[markata-go.wikilinks]&lt;/code&gt; (&lt;code&gt;warn_broken&lt;/code&gt;, &lt;code&gt;strict_wikilinks&lt;/code&gt; under &lt;code&gt;[markata-go]&lt;/code&gt;), &lt;code&gt;[markata-go.theme]&lt;/code&gt;, &lt;code&gt;[markata-go.feed_defaults]&lt;/code&gt;, &lt;code&gt;[[markata-go.feeds]]&lt;/code&gt;, &lt;code&gt;[[markata-go.nav]]&lt;/code&gt; (&lt;code&gt;label&lt;/code&gt;, &lt;code&gt;url&lt;/code&gt;, &lt;code&gt;external&lt;/code&gt;), &lt;code&gt;[markata-go.components.nav]&lt;/code&gt;, &lt;code&gt;[markata-go.sidebar]&lt;/code&gt;/&lt;code&gt;[[markata-go.sidebar.nav]]&lt;/code&gt;, &lt;code&gt;[markata-go.encryption]&lt;/code&gt;, &lt;code&gt;[embeds]&lt;/code&gt;, &lt;code&gt;[markata-go.head]&lt;/code&gt; + &lt;code&gt;[[markata-go.head.alternate_feeds]]&lt;/code&gt;, &lt;code&gt;[markata-go.blogroll]&lt;/code&gt;, &lt;code&gt;[content_templates]&lt;/code&gt;. &lt;a href=&#34;https://github.com/WaylonWalker/markata-go/blob/main/docs/guides/configuration.md&#34;&gt;configuration.md&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h3 id=&#34;migration-tooling-markata-go-migrate&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Migration tooling — &lt;/span&gt;&lt;code&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;markata-go migrate&lt;/span&gt;&lt;/code&gt; &lt;a href=&#34;#migration-tooling-markata-go-migrate&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://github.com/WaylonWalker/markata-go/blob/main/docs/reference/cli.md&#34;&gt;cli.md&lt;/a&gt;&lt;/p&gt;&#xA;&lt;pre class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;markata-go migrate                          &lt;span class=&#34;c1&#34;&gt;# full analysis&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;markata-go migrate --dry-run&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;markata-go migrate config -i markata.toml -o markata-go.toml   &lt;span class=&#34;c1&#34;&gt;# also accepts pyproject.toml&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;markata-go migrate filter &lt;span class=&#34;s2&#34;&gt;&amp;#34;templateKey in [&amp;#39;blog&amp;#39;, &amp;#39;til&amp;#39;]&amp;#34;&lt;/span&gt;     &lt;span class=&#34;c1&#34;&gt;# check a filter expression&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;markata-go migrate templates &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;path&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;                           &lt;span class=&#34;c1&#34;&gt;# check pongo2 compat&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Exit codes: 0 clean, 1 warnings, 2 incompatibilities, 3 error. There is a &lt;code&gt;docs/guides/migration.md&lt;/code&gt; in the repo.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Known bug:&lt;/strong&gt; the migrate tool has emitted invalid TOML (nested &lt;code&gt;[markata-go.description.description]&lt;/code&gt; tables from a &lt;code&gt;[markata.auto_description.description]&lt;/code&gt;-style Python config) — &lt;a href=&#34;https://github.com/WaylonWalker/waylonwalker.com/issues/20&#34;&gt;WaylonWalker/waylonwalker.com issue #20&lt;/a&gt;, supposedly fixed by &lt;code&gt;fix(migrate): generate valid TOML for string fields (#208)&lt;/code&gt; in &lt;a href=&#34;https://github.com/WaylonWalker/markata-go/releases/tag/v0.5.0&#34;&gt;v0.5.0&lt;/a&gt;. Always run &lt;code&gt;markata-go config validate&lt;/code&gt; after migrating.&lt;/p&gt;&#xA;&lt;p&gt;This repo&amp;rsquo;s &lt;code&gt;markata-go.toml&lt;/code&gt; already exists and appears to be migrate-tool output — feed filter strings carried over verbatim, &lt;code&gt;page_size&lt;/code&gt; preserved.&lt;/p&gt;&#xA;&lt;h2 id=&#34;3-markdown-features&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;3. Markdown features&lt;/span&gt; &lt;a href=&#34;#3-markdown-features&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Engine: &lt;strong&gt;goldmark&lt;/strong&gt; (deps include &lt;code&gt;yuin/goldmark&lt;/code&gt;, &lt;code&gt;goldmark-highlighting&lt;/code&gt;, &lt;code&gt;goldmark-emoji&lt;/code&gt;, &lt;code&gt;goldmark-figure&lt;/code&gt;, &lt;code&gt;goldmark-anchor&lt;/code&gt;, CJK ext, &lt;code&gt;abhg.dev/goldmark/*&lt;/code&gt;). &lt;a href=&#34;https://pkg.go.dev/github.com/WaylonWalker/markata-go&#34;&gt;pkg.go.dev deps&lt;/a&gt;, &lt;a href=&#34;https://github.com/WaylonWalker/markata-go/compare/v0.9.0...v0.10.0&#34;&gt;v0.10.0 changelog&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Config: &lt;code&gt;[markata-go.markdown] extensions = [&amp;quot;tables&amp;quot;,&amp;quot;strikethrough&amp;quot;,&amp;quot;autolinks&amp;quot;,&amp;quot;tasklist&amp;quot;]&lt;/code&gt;; spec also lists &lt;code&gt;typographer&lt;/code&gt; (smart quotes, &lt;strong&gt;default true&lt;/strong&gt;), &lt;code&gt;definition_list&lt;/code&gt;, &lt;code&gt;footnote&lt;/code&gt;. &lt;a href=&#34;https://github.com/WaylonWalker/markata-go/blob/main/docs/guides/configuration.md&#34;&gt;configuration.md&lt;/a&gt;, &lt;a href=&#34;https://github.com/WaylonWalker/markata-go/blob/main/spec/spec/CONTENT.md&#34;&gt;spec/CONTENT.md&lt;/a&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Admonitions &lt;code&gt;!!!&lt;/code&gt;:&lt;/strong&gt; supported via a goldmark extension in the render stage. &lt;strong&gt;Verified against source: types are a hardcoded whitelist&lt;/strong&gt; — &lt;code&gt;note, info, tip, hint, success, warning, caution, important, danger, error, bug, example, quote, abstract, aside, seealso, reminder, attention, todo, settings, vsplit, chat, chat-reply&lt;/code&gt; (&lt;code&gt;admonitionTypes&lt;/code&gt; map in &lt;code&gt;pkg/plugins/admonitions.go&lt;/code&gt;). Unknown types are NOT parsed — they render as literal paragraphs. &lt;code&gt;!!! scripture&lt;/code&gt; / &lt;code&gt;!!! background-thought&lt;/code&gt; do &lt;strong&gt;not&lt;/strong&gt; work. Confirmed live: &lt;code&gt;???+ success&lt;/code&gt; in this repo rendered &lt;code&gt;&amp;lt;details class=&amp;quot;admonition success&amp;quot; open&amp;gt;&lt;/code&gt; while &lt;code&gt;!!! scripture&lt;/code&gt; rendered literal text. No config option for custom types exists. &lt;a href=&#34;https://github.com/WaylonWalker/markata-go/blob/main/docs/reference/plugins.md&#34;&gt;plugins.md&lt;/a&gt;, &lt;a href=&#34;https://github.com/WaylonWalker/markata-go/blob/main/docs/guides/markdown.md&#34;&gt;markdown.md&lt;/a&gt;, &lt;code&gt;pkg/plugins/admonitions.go:17&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Collapsible &lt;code&gt;???&lt;/code&gt; / &lt;code&gt;???+&lt;/code&gt;:&lt;/strong&gt; supported (&lt;code&gt;???&lt;/code&gt; collapsed, &lt;code&gt;???+&lt;/code&gt; open), renders native &lt;code&gt;&amp;lt;details&amp;gt;/&amp;lt;summary&amp;gt;&lt;/code&gt;. &lt;a href=&#34;https://github.com/WaylonWalker/markata-go/blob/main/docs/guides/markdown.md&#34;&gt;markdown.md&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Wikilinks:&lt;/strong&gt; &lt;code&gt;[[slug]]&lt;/code&gt;, &lt;code&gt;[[slug|text]]&lt;/code&gt;, &lt;code&gt;[[slug#fragment]]&lt;/code&gt;, &lt;code&gt;[[slug#frag|text]]&lt;/code&gt;; case-insensitive slug lookup, then &lt;code&gt;aliases&lt;/code&gt; frontmatter (synonyms: &lt;code&gt;alias&lt;/code&gt;, &lt;code&gt;handle&lt;/code&gt;, &lt;code&gt;handles&lt;/code&gt;); unresolved → rendered literal + &lt;code&gt;wikilink_warnings&lt;/code&gt; in &lt;code&gt;post.Extra&lt;/code&gt;; &lt;code&gt;strict_wikilinks = true&lt;/code&gt; fails the build. &lt;strong&gt;&lt;code&gt;[[ slug ]]&lt;/code&gt; WITH SPACES WORKS&lt;/strong&gt; — &lt;code&gt;wikilinks.go:151&lt;/code&gt; does &lt;code&gt;strings.TrimSpace(groups[1])&lt;/code&gt;, verified against this repo&amp;rsquo;s build output (spaced daily-note links resolve with full hover-preview data attributes). &lt;a href=&#34;https://github.com/WaylonWalker/markata-go/blob/main/docs/reference/plugins.md&#34;&gt;plugins.md&lt;/a&gt;, &lt;code&gt;pkg/plugins/wikilinks.go:151&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Attrs &lt;code&gt;{#id .class}&lt;/code&gt;:&lt;/strong&gt; supported — spec shows &lt;code&gt;![alt](img.png){.shadow .bordered}&lt;/code&gt;, &lt;code&gt;*em*{.accent}&lt;/code&gt;, &lt;code&gt;`code`{.inline-code}&lt;/code&gt;, &lt;code&gt;[[link]]{.wikilink-pill}&lt;/code&gt;, &lt;code&gt;{#hero-image}&lt;/code&gt;. &lt;a href=&#34;https://github.com/WaylonWalker/markata-go/blob/main/spec/spec/CONTENT.md&#34;&gt;spec/CONTENT.md&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Code highlighting:&lt;/strong&gt; goldmark-highlighting (chroma); &lt;code&gt;[markata-go.markdown.highlight] theme = &amp;quot;dracula&amp;quot;&lt;/code&gt;, &lt;code&gt;line_numbers&lt;/code&gt;. &lt;a href=&#34;https://github.com/WaylonWalker/markata-go/blob/main/docs/guides/markdown.md&#34;&gt;markdown.md&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Tables:&lt;/strong&gt; via &lt;code&gt;tables&lt;/code&gt; extension. Typographer/smart quotes: &lt;code&gt;typographer = true&lt;/code&gt; default in spec. &lt;a href=&#34;https://github.com/WaylonWalker/markata-go/blob/main/docs/guides/configuration.md&#34;&gt;configuration.md&lt;/a&gt;, &lt;a href=&#34;https://github.com/WaylonWalker/markata-go/blob/main/spec/spec/CONTENT.md&#34;&gt;spec/CONTENT.md&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Heading anchors/permalinks:&lt;/strong&gt; &lt;code&gt;heading_anchors&lt;/code&gt; plugin + &lt;code&gt;goldmark-anchor&lt;/code&gt;; TOC plugin (&lt;code&gt;toc&lt;/code&gt;, &lt;code&gt;post.Extra.toc_html&lt;/code&gt;). &lt;a href=&#34;https://github.com/WaylonWalker/markata-go/blob/main/docs/reference/plugins.md&#34;&gt;plugins.md&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Markdown containers:&lt;/strong&gt; generic &lt;code&gt;::: name&lt;/code&gt; fenced divs with &lt;code&gt;{#id .class data-attr}&lt;/code&gt; — a possible escape hatch for admonition-like custom blocks (no title/collapse semantics). &lt;a href=&#34;https://github.com/WaylonWalker/markata-go/blob/main/docs/guides/markdown-containers.md&#34;&gt;markdown-containers.md&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Extras present:&lt;/strong&gt; mermaid (incl. lightbox/pan-zoom, CLI/Chromium pre-render), chartjs fenced blocks, &lt;code&gt;contribution-graph&lt;/code&gt; fenced block, csv_fence, glossary, webawesome components, Obsidian-style &lt;code&gt;&amp;lt;!-- embed not found: attachment --&amp;gt; ![[attachment]]&lt;/code&gt; embeds, oEmbed external link cards. &lt;a href=&#34;https://github.com/WaylonWalker/markata-go/blob/main/docs/reference/plugins.md&#34;&gt;plugins.md&lt;/a&gt;, &lt;a href=&#34;https://github.com/WaylonWalker/markata-go/releases/tag/v0.7.0&#34;&gt;v0.7.0&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;4-frontmatter&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;4. Frontmatter&lt;/span&gt; &lt;a href=&#34;#4-frontmatter&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://github.com/WaylonWalker/markata-go/blob/main/docs/guides/frontmatter.md&#34;&gt;frontmatter.md&lt;/a&gt;, &lt;a href=&#34;https://github.com/WaylonWalker/markata-go/blob/main/docs/reference/plugins.md&#34;&gt;plugins.md load section&lt;/a&gt;, &lt;a href=&#34;https://github.com/WaylonWalker/markata-go/blob/main/spec/spec/DATA_MODEL.md&#34;&gt;spec/DATA_MODEL.md&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Built-in fields: &lt;code&gt;title&lt;/code&gt;, &lt;code&gt;slug&lt;/code&gt;, &lt;code&gt;date&lt;/code&gt; (+ &lt;code&gt;modified&lt;/code&gt;, and date aliases for cross-SSG compat), &lt;code&gt;published&lt;/code&gt; (default &lt;strong&gt;false&lt;/strong&gt;), &lt;code&gt;draft&lt;/code&gt; (never rendered), &lt;code&gt;skip&lt;/code&gt;, &lt;code&gt;tags&lt;/code&gt;, &lt;code&gt;description&lt;/code&gt; (auto-generated if absent), &lt;code&gt;template&lt;/code&gt; (default &lt;code&gt;post.html&lt;/code&gt;; also object form &lt;code&gt;{default:, card:, feed:}&lt;/code&gt;), &lt;code&gt;aliases&lt;/code&gt;, &lt;code&gt;authors&lt;/code&gt;/&lt;code&gt;author&lt;/code&gt;/&lt;code&gt;writer&lt;/code&gt;, &lt;code&gt;image&lt;/code&gt;/&lt;code&gt;video&lt;/code&gt;/&lt;code&gt;cover_image&lt;/code&gt;/&lt;code&gt;thumbnail&lt;/code&gt;/&lt;code&gt;og_image&lt;/code&gt;/&lt;code&gt;hero_video&lt;/code&gt;, &lt;code&gt;private&lt;/code&gt;, &lt;code&gt;jinja&lt;/code&gt; (bool gate for jinja_md), &lt;code&gt;config_overrides&lt;/code&gt;, &lt;code&gt;css_class&lt;/code&gt;. Unknown fields land in &lt;code&gt;Extra&lt;/code&gt; and are filterable (&lt;code&gt;Extra.series == &#39;X&#39;&lt;/code&gt;).&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;published&lt;/code&gt; semantics match Python markata:&lt;/strong&gt; &lt;code&gt;false&lt;/code&gt; = rendered but excluded from feeds/sitemap/RSS (&amp;ldquo;shadow page&amp;rdquo;); &lt;code&gt;true&lt;/code&gt; = included. &lt;code&gt;draft: true&lt;/code&gt; = not rendered at all.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;templateKey&lt;/code&gt;:&lt;/strong&gt; still a real field — filters like &lt;code&gt;templateKey in [&#39;blog-post&#39;]&lt;/code&gt; are used in migrate docs, and &lt;code&gt;encryption.private_tags&lt;/code&gt; matches against templateKey as well as tags. &lt;a href=&#34;https://github.com/WaylonWalker/markata-go/blob/main/docs/reference/cli.md&#34;&gt;cli.md migrate section&lt;/a&gt;, &lt;a href=&#34;https://github.com/WaylonWalker/markata-go/releases/tag/v0.8.0&#34;&gt;v0.8.0 changelog&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Slugs:&lt;/strong&gt; auto-generated from filename by default (&lt;code&gt;flat&lt;/code&gt; mode): lowercase, spaces→hyphens, strip special chars, collapse hyphens. &lt;code&gt;[markata-go.glob] slug_mode = &amp;quot;flat&amp;quot; | &amp;quot;path&amp;quot;&lt;/code&gt; plus per-prefix &lt;code&gt;[[markata-go.glob.slug_rules]]&lt;/code&gt; (longest prefix wins) — the &amp;ldquo;hybrid&amp;rdquo; v0.9.0 capability. &lt;code&gt;index.md&lt;/code&gt;/&lt;code&gt;README.md&lt;/code&gt; map to directory root; &lt;code&gt;slug: &amp;quot;&amp;quot;&lt;/code&gt; or &lt;code&gt;/&lt;/code&gt; = homepage; frontmatter &lt;code&gt;slug&lt;/code&gt; always wins; nested &lt;code&gt;slug: &amp;quot;a/b&amp;quot;&lt;/code&gt; allowed; leading/trailing slashes stripped. &lt;a href=&#34;https://github.com/WaylonWalker/markata-go/blob/main/docs/guides/configuration.md&#34;&gt;configuration.md&lt;/a&gt;, &lt;a href=&#34;https://github.com/WaylonWalker/markata-go/blob/main/spec/spec/DATA_MODEL.md&#34;&gt;spec/DATA_MODEL.md&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Dates:&lt;/strong&gt; accepts RFC3339, &lt;code&gt;YYYY-MM-DD HH:MM:SS&lt;/code&gt;, &lt;code&gt;YYYY-MM-DD&lt;/code&gt;, US &lt;code&gt;01/15/2024&lt;/code&gt;, European &lt;code&gt;15-01-2024&lt;/code&gt;, &lt;code&gt;January 15, 2024&lt;/code&gt;, &lt;code&gt;Jan 15, 2024&lt;/code&gt;. &lt;a href=&#34;https://github.com/WaylonWalker/markata-go/blob/main/docs/reference/plugins.md&#34;&gt;plugins.md&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;5-feeds-filter-language&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;5. Feeds + filter language&lt;/span&gt; &lt;a href=&#34;#5-feeds-filter-language&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;strong&gt;Filters are Python-like expressions — the same syntax family as Python markata.&lt;/strong&gt; This site&amp;rsquo;s existing filters port verbatim. &lt;a href=&#34;https://github.com/WaylonWalker/markata-go/blob/main/docs/guides/frontmatter.md&#34;&gt;frontmatter.md&lt;/a&gt;, &lt;a href=&#34;https://github.com/WaylonWalker/markata-go/blob/main/spec/spec/DATA_MODEL.md&#34;&gt;spec/DATA_MODEL.md&lt;/a&gt;&lt;/p&gt;&#xA;&lt;pre class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;filter&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;published == True&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;filter&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;draft == False&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;filter&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#39;go&amp;#39; in tags&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;filter&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;date &amp;gt;= &amp;#39;2024-01-01&amp;#39; and date &amp;lt; &amp;#39;2025-01-01&amp;#39;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;filter&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;slug.startswith(&amp;#39;tutorials/&amp;#39;)&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;filter&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;template == &amp;#39;tutorial.html&amp;#39;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;filter&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Extra.series == &amp;#39;Web Scraping with Go&amp;#39;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;filter&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;published == True and (&amp;#39;go&amp;#39; in tags or &amp;#39;python&amp;#39; in tags)&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;filter&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;not draft&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Operators: &lt;code&gt;==&lt;/code&gt; &lt;code&gt;!=&lt;/code&gt; &lt;code&gt;&amp;gt;&lt;/code&gt; &lt;code&gt;&amp;gt;=&lt;/code&gt; &lt;code&gt;&amp;lt;&lt;/code&gt; &lt;code&gt;&amp;lt;=&lt;/code&gt; &lt;code&gt;in&lt;/code&gt; &lt;code&gt;and&lt;/code&gt; &lt;code&gt;or&lt;/code&gt; &lt;code&gt;not&lt;/code&gt;; string methods &lt;code&gt;startswith&lt;/code&gt;, &lt;code&gt;lower().contains(...)&lt;/code&gt;; built-ins &lt;code&gt;today&lt;/code&gt;, &lt;code&gt;now&lt;/code&gt;, &lt;code&gt;True&lt;/code&gt;, &lt;code&gt;False&lt;/code&gt;, &lt;code&gt;None&lt;/code&gt;; &lt;code&gt;date(2024,1,1)&lt;/code&gt; constructor in spec. (Python markata extras &lt;code&gt;timedelta&lt;/code&gt;/&lt;code&gt;parse&lt;/code&gt; not confirmed — check &lt;code&gt;migrate filter&lt;/code&gt;.) Note the TUI/CLI search uses a slightly different dialect (&lt;code&gt;tags contains &amp;quot;go&amp;quot;&lt;/code&gt;, &lt;code&gt;title startswith &amp;quot;How&amp;quot;&lt;/code&gt;).&lt;/p&gt;&#xA;&lt;h3 id=&#34;feed-config&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Feed config&lt;/span&gt; &lt;a href=&#34;#feed-config&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://pkg.go.dev/github.com/WaylonWalker/markata-go&#34;&gt;pkg.go.dev README&lt;/a&gt;&lt;/p&gt;&#xA;&lt;pre class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;markata-go&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;feed_defaults&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;items_per_page&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;10&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;orphan_threshold&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;markata-go&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;feed_defaults&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;formats&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;html&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;rss&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;atom&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;false&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;json&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;false&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;markata-go&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;feed_defaults&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;templates&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;html&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;feed.html&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;card&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;card.html&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;[[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;markata-go&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;feeds&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;slug&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;blog&amp;#34;&lt;/span&gt;            &lt;span class=&#34;c&#34;&gt;# slug = &amp;#34;&amp;#34; → homepage index.html&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;title&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Blog&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;description&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;All blog posts&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;filter&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;published == True&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;sort&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;date&amp;#34;&lt;/span&gt;            &lt;span class=&#34;c&#34;&gt;# or &amp;#34;Extra.series_order&amp;#34; etc.&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;reverse&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;items_per_page&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;10&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;markata-go&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;feeds&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;formats&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;html&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;rss&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;atom&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;json&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Formats per feed: &lt;code&gt;html&lt;/code&gt; → &lt;code&gt;/{slug}/index.html&lt;/code&gt; (paginated), &lt;code&gt;rss&lt;/code&gt; → &lt;code&gt;/{slug}/rss.xml&lt;/code&gt;, &lt;code&gt;atom&lt;/code&gt; → &lt;code&gt;atom.xml&lt;/code&gt;, &lt;code&gt;json&lt;/code&gt; → &lt;code&gt;feed.json&lt;/code&gt;, &lt;code&gt;markdown&lt;/code&gt; → &lt;code&gt;index.md&lt;/code&gt;, &lt;code&gt;text&lt;/code&gt; → &lt;code&gt;index.txt&lt;/code&gt;, plus a &lt;code&gt;sitemap&lt;/code&gt; per-feed format. Pagination via &lt;code&gt;items_per_page&lt;/code&gt;/&lt;code&gt;page_size&lt;/code&gt;, &lt;code&gt;orphan_threshold&lt;/code&gt;. &lt;code&gt;auto_feeds&lt;/code&gt; generates per-tag feeds automatically. &lt;a href=&#34;https://pkg.go.dev/github.com/WaylonWalker/markata-go&#34;&gt;pkg.go.dev&lt;/a&gt;, &lt;a href=&#34;https://github.com/WaylonWalker/markata-go/releases/tag/v0.10.0&#34;&gt;v0.10.0 changelog&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;6-templates&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;6. Templates&lt;/span&gt; &lt;a href=&#34;#6-templates&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Engine: &lt;strong&gt;pongo2&lt;/strong&gt; (&amp;ldquo;Jinja2-like&amp;rdquo;) — &lt;code&gt;{{ }}&lt;/code&gt;, &lt;code&gt;{% %}&lt;/code&gt; syntax, &lt;code&gt;|safe&lt;/code&gt; etc. &lt;a href=&#34;https://pkg.go.dev/github.com/WaylonWalker/markata-go&#34;&gt;pkg.go.dev&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Lookup order for &lt;code&gt;post.template&lt;/code&gt;: project &lt;code&gt;templates/&lt;/code&gt; dir → theme templates → default theme fallback. Missing template → raw &lt;code&gt;article_html&lt;/code&gt;. &lt;a href=&#34;https://github.com/WaylonWalker/markata-go/blob/main/docs/guides/frontmatter.md&#34;&gt;frontmatter.md&lt;/a&gt;, &lt;a href=&#34;https://github.com/WaylonWalker/markata-go/blob/main/docs/reference/plugins.md&#34;&gt;plugins.md&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Template context: &lt;code&gt;post&lt;/code&gt;, &lt;code&gt;body&lt;/code&gt; (= &lt;code&gt;post.ArticleHTML&lt;/code&gt;), &lt;code&gt;config&lt;/code&gt;, &lt;code&gt;core&lt;/code&gt;; in jinja_md content templates also &lt;code&gt;posts&lt;/code&gt;, &lt;code&gt;filter&lt;/code&gt;, &lt;code&gt;map&lt;/code&gt;, &lt;code&gt;today&lt;/code&gt;, &lt;code&gt;now&lt;/code&gt;. Field access is Go-style exported names in examples (&lt;code&gt;post.Title&lt;/code&gt;, &lt;code&gt;post.Date.Format&lt;/code&gt;, &lt;code&gt;post.Extra.toc_html&lt;/code&gt;) — but template-variable casing has been a moving target (documented in agent-skill commit c7923e3); pongo2 generally resolves case-insensitively. Custom filters: &lt;code&gt;media_url&lt;/code&gt;, &lt;code&gt;is_video&lt;/code&gt;, &lt;code&gt;length/first/last/sort/reverse/selectattr/map/join/default/upper/lower/title&lt;/code&gt;, &lt;code&gt;forloop&lt;/code&gt; vars. Template helpers &lt;code&gt;render_feed&lt;/code&gt;/&lt;code&gt;feed_posts&lt;/code&gt; exist. &lt;a href=&#34;https://github.com/WaylonWalker/markata-go/blob/main/docs/reference/plugins.md&#34;&gt;plugins.md&lt;/a&gt;, &lt;a href=&#34;https://github.com/WaylonWalker/markata-go/blob/main/docs/guides/frontmatter.md&#34;&gt;frontmatter.md media fields&lt;/a&gt;, &lt;a href=&#34;https://github.com/WaylonWalker/markata-go/blob/main/spec/spec/CONTENT.md&#34;&gt;spec/CONTENT.md&lt;/a&gt;&lt;/p&gt;&#xA;&lt;pre class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;{%&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;post.Extra.toc_html&lt;/span&gt; &lt;span class=&#34;cp&#34;&gt;%}&lt;/span&gt;&lt;span class=&#34;x&#34;&gt;&amp;lt;aside&amp;gt;&lt;/span&gt;&lt;span class=&#34;cp&#34;&gt;{{&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;post.Extra.toc_html&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;|&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;safe&lt;/span&gt; &lt;span class=&#34;cp&#34;&gt;}}&lt;/span&gt;&lt;span class=&#34;x&#34;&gt;&amp;lt;/aside&amp;gt;&lt;/span&gt;&lt;span class=&#34;cp&#34;&gt;{%&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;endif&lt;/span&gt; &lt;span class=&#34;cp&#34;&gt;%}&lt;/span&gt;&lt;span class=&#34;x&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;{%&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;p&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;filter&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;published == true&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;)[:&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;cp&#34;&gt;%}&lt;/span&gt;&lt;span class=&#34;x&#34;&gt;- &lt;/span&gt;&lt;span class=&#34;cp&#34;&gt;{{&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;p.Title&lt;/span&gt; &lt;span class=&#34;cp&#34;&gt;}}{%&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;endfor&lt;/span&gt; &lt;span class=&#34;cp&#34;&gt;%}&lt;/span&gt;&lt;span class=&#34;x&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;{%&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;with&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;post.image&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;|&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;media_url&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;post.video&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;as&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;m&lt;/span&gt; &lt;span class=&#34;cp&#34;&gt;%}{%&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;m&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;|&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;is_video&lt;/span&gt; &lt;span class=&#34;cp&#34;&gt;%}&lt;/span&gt;&lt;span class=&#34;x&#34;&gt;&amp;lt;video src=&amp;#34;&lt;/span&gt;&lt;span class=&#34;cp&#34;&gt;{{&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;m&lt;/span&gt; &lt;span class=&#34;cp&#34;&gt;}}&lt;/span&gt;&lt;span class=&#34;x&#34;&gt;&amp;#34;&amp;gt;&lt;/span&gt;&lt;span class=&#34;cp&#34;&gt;{%&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;endif&lt;/span&gt; &lt;span class=&#34;cp&#34;&gt;%}{%&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;endwith&lt;/span&gt; &lt;span class=&#34;cp&#34;&gt;%}&lt;/span&gt;&lt;span class=&#34;x&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;code&gt;jinja_md&lt;/code&gt; plugin = jinja-in-markdown equivalent; gated per-post by &lt;code&gt;jinja: true&lt;/code&gt; frontmatter. &lt;a href=&#34;https://github.com/WaylonWalker/markata-go/blob/main/docs/reference/plugins.md&#34;&gt;plugins.md&lt;/a&gt;, &lt;a href=&#34;https://github.com/WaylonWalker/markata-go/blob/main/spec/spec/CONTENT.md&#34;&gt;spec/CONTENT.md&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Migration note:&lt;/strong&gt; &lt;code&gt;markata-go migrate templates&lt;/code&gt; checks pongo2 compat, but Jinja2↔pongo2 differences (e.g. &lt;code&gt;{% with %}&lt;/code&gt;, macro support gaps, different autoescape behavior) mean the 30 templates in &lt;code&gt;templates/&lt;/code&gt; need manual review. Verified live: &lt;code&gt;templates/base_head.html&lt;/code&gt; &lt;code&gt;{% include &amp;quot;head.html&amp;quot; %}&lt;/code&gt; fails (file absent — Python markata may have supplied it) and poisons the whole project-template chain → 697 parse errors → every page falls back to built-in theme.&lt;/p&gt;&#xA;&lt;h2 id=&#34;7-feature-parity-vs-this-site-s-python-plugins&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;7. Feature parity vs this site’s Python plugins&lt;/span&gt; &lt;a href=&#34;#7-feature-parity-vs-this-site-s-python-plugins&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;&lt;thead&gt;&#xA;&lt;tr&gt;&#xA;&lt;th&gt;Python markata feature/plugin&lt;/th&gt;&#xA;&lt;th&gt;markata-go equivalent&lt;/th&gt;&#xA;&lt;th&gt;Source&lt;/th&gt;&#xA;&lt;/tr&gt;&#xA;&lt;/thead&gt;&#xA;&lt;tbody&gt;&#xA;&lt;tr&gt;&#xA;&lt;td&gt;&lt;code&gt;plugins.password_protection&lt;/code&gt; (client-side decrypt)&lt;/td&gt;&#xA;&lt;td&gt;&lt;strong&gt;&lt;code&gt;encryption&lt;/code&gt; plugin + CLI.&lt;/strong&gt; &lt;code&gt;[markata-go.encryption]&lt;/code&gt;, &lt;code&gt;private_tags&lt;/code&gt; map tag/&lt;strong&gt;templateKey&lt;/strong&gt;→key name, keys from env vars, &lt;code&gt;enforce_strength&lt;/code&gt;, &lt;code&gt;min_password_length&lt;/code&gt;, &lt;code&gt;default_key&lt;/code&gt;; &lt;code&gt;markata-go encryption check/generate-password/encrypt-posts&lt;/code&gt;; &lt;code&gt;private: true&lt;/code&gt; frontmatter + robots.txt; encrypted cards on feed pages; plaintext-leak sealing. Configured in this repo&amp;rsquo;s &lt;code&gt;markata-go.toml&lt;/code&gt; (&lt;code&gt;protected-post = &amp;quot;default&amp;quot;&lt;/code&gt;, key via &lt;code&gt;MARKATA_GO_ENCRYPTION_KEY_DEFAULT&lt;/code&gt;); both protected posts verified encrypted in &lt;code&gt;markout-go&lt;/code&gt;.&lt;/td&gt;&#xA;&lt;td&gt;&lt;a href=&#34;https://github.com/WaylonWalker/markata-go/releases/tag/v0.7.0&#34;&gt;v0.7.0&lt;/a&gt;, &lt;a href=&#34;https://github.com/WaylonWalker/markata-go/releases/tag/v0.8.0&#34;&gt;v0.8.0&lt;/a&gt;, &lt;a href=&#34;https://github.com/WaylonWalker/markata-go/blob/main/docs/guides/encryption.md&#34;&gt;encryption.md&lt;/a&gt;&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;tr&gt;&#xA;&lt;td&gt;&lt;code&gt;plugins.wikilinks_hover&lt;/code&gt; (disabled here)&lt;/td&gt;&#xA;&lt;td&gt;&lt;strong&gt;&lt;code&gt;wikilink_hover&lt;/code&gt; — built-in, enabled by default&lt;/strong&gt; since v0.7.0; renders &lt;code&gt;data-title&lt;/code&gt;/&lt;code&gt;data-description&lt;/code&gt;/&lt;code&gt;data-date&lt;/code&gt; on &lt;code&gt;.wikilink&lt;/code&gt; anchors. Verified in this site&amp;rsquo;s build output.&lt;/td&gt;&#xA;&lt;td&gt;&lt;a href=&#34;https://github.com/WaylonWalker/markata-go/releases/tag/v0.7.0&#34;&gt;v0.7.0&lt;/a&gt;&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;tr&gt;&#xA;&lt;td&gt;&lt;code&gt;plugins.md_video&lt;/code&gt; (&lt;code&gt;![]()&lt;/code&gt;→&lt;code&gt;&amp;lt;video&amp;gt;&lt;/code&gt;)&lt;/td&gt;&#xA;&lt;td&gt;&lt;strong&gt;Built-in &lt;code&gt;md_video&lt;/code&gt; plugin&lt;/strong&gt; (same name) exists in markata-go; also &lt;code&gt;youtube&lt;/code&gt; plugin (URL-on-own-line → lite/nocookie embed), &lt;code&gt;embeds&lt;/code&gt; (oEmbed, Obsidian `&lt;!-- embed not found: file --&gt;&lt;/td&gt;&#xA;&lt;td&gt;&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;tr&gt;&#xA;&lt;td&gt;![[file]]&lt;code&gt;), &lt;/code&gt;is_video&lt;code&gt;/&lt;/code&gt;media_url` filters.&lt;/td&gt;&#xA;&lt;td&gt;&lt;a href=&#34;https://github.com/WaylonWalker/markata-go/blob/main/docs/reference/plugins.md&#34;&gt;plugins.md&lt;/a&gt;&lt;/td&gt;&#xA;&lt;td&gt;&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;tr&gt;&#xA;&lt;td&gt;&lt;code&gt;plugins.analytics&lt;/code&gt; (disabled here)&lt;/td&gt;&#xA;&lt;td&gt;&lt;code&gt;stats&lt;/code&gt; plugin (post/feed/site stats), &lt;code&gt;contribution-graph&lt;/code&gt; fenced block, chartjs blocks; analytics guide at &lt;code&gt;docs/guides/analytics.md&lt;/code&gt;.&lt;/td&gt;&#xA;&lt;td&gt;&lt;a href=&#34;https://github.com/WaylonWalker/markata-go/blob/main/docs/reference/plugins.md&#34;&gt;plugins.md&lt;/a&gt;&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;tr&gt;&#xA;&lt;td&gt;&lt;code&gt;plugins.build_thoughts&lt;/code&gt; (custom: builds thoughts feed from external API)&lt;/td&gt;&#xA;&lt;td&gt;&lt;strong&gt;No equivalent.&lt;/strong&gt; &lt;code&gt;import&lt;/code&gt; command only does RSS/Atom/JSONFeed — thoughts API has no feed endpoint (verified: &lt;code&gt;/feed.json&lt;/code&gt; → 404). Port as pre-build script generating &lt;code&gt;pages/thoughts/*.md&lt;/code&gt; (fix &lt;code&gt;scripts/sync-thoughts.py&lt;/code&gt; — wrong output dir, no frontmatter), or keep calling it before builds.&lt;/td&gt;&#xA;&lt;td&gt;this repo &lt;code&gt;plugins/build_thoughts.py&lt;/code&gt;, &lt;code&gt;scripts/sync-thoughts.py&lt;/code&gt;&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;tr&gt;&#xA;&lt;td&gt;&lt;code&gt;markata.plugins.prevnext&lt;/code&gt; (disabled here)&lt;/td&gt;&#xA;&lt;td&gt;&lt;code&gt;prevnext&lt;/code&gt; built-in (Collect stage).&lt;/td&gt;&#xA;&lt;td&gt;&lt;a href=&#34;https://github.com/WaylonWalker/markata-go/blob/main/docs/reference/plugins.md&#34;&gt;plugins.md&lt;/a&gt;&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;tr&gt;&#xA;&lt;td&gt;&lt;code&gt;markata.plugins.publish_source&lt;/code&gt; (enabled here — serves &lt;code&gt;.md&lt;/code&gt;/&lt;code&gt;.txt&lt;/code&gt; sources)&lt;/td&gt;&#xA;&lt;td&gt;Feed &lt;code&gt;markdown&lt;/code&gt;/&lt;code&gt;text&lt;/code&gt; output formats cover per-feed sources; per-post &lt;code&gt;.md&lt;/code&gt; source publishing unconfirmed.&lt;/td&gt;&#xA;&lt;td&gt;&lt;a href=&#34;https://pkg.go.dev/github.com/WaylonWalker/markata-go&#34;&gt;pkg.go.dev feed formats&lt;/a&gt;&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;tr&gt;&#xA;&lt;td&gt;&lt;code&gt;markata.plugins.service_worker&lt;/code&gt; (disabled here)&lt;/td&gt;&#xA;&lt;td&gt;Not in built-in plugin list. &lt;strong&gt;Probably absent.&lt;/strong&gt;&lt;/td&gt;&#xA;&lt;td&gt;&lt;a href=&#34;https://github.com/WaylonWalker/markata-go/blob/main/docs/reference/plugins.md&#34;&gt;plugins.md&lt;/a&gt;&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;tr&gt;&#xA;&lt;td&gt;&lt;code&gt;markata.plugins.manifest&lt;/code&gt; / PWA fields&lt;/td&gt;&#xA;&lt;td&gt;PWA config keys exist (&lt;code&gt;theme_color&lt;/code&gt;, &lt;code&gt;start_url&lt;/code&gt;, &lt;code&gt;display&lt;/code&gt;, &lt;code&gt;short_name&lt;/code&gt;…); a dedicated manifest.json writer not confirmed in plugin list.&lt;/td&gt;&#xA;&lt;td&gt;this repo&amp;rsquo;s markata-go.toml, &lt;a href=&#34;https://github.com/WaylonWalker/markata-go/blob/main/docs/guides/configuration.md&#34;&gt;configuration.md&lt;/a&gt;&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;tr&gt;&#xA;&lt;td&gt;RSS&lt;/td&gt;&#xA;&lt;td&gt;&lt;code&gt;rss&lt;/code&gt;/&lt;code&gt;atom&lt;/code&gt;/&lt;code&gt;jsonfeed&lt;/code&gt; write-stage plugins + per-feed formats + head &lt;code&gt;alternate_feeds&lt;/code&gt;&lt;/td&gt;&#xA;&lt;td&gt;&lt;a href=&#34;https://github.com/WaylonWalker/markata-go/blob/main/docs/reference/plugins.md&#34;&gt;plugins.md&lt;/a&gt;&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;tr&gt;&#xA;&lt;td&gt;Sitemap&lt;/td&gt;&#xA;&lt;td&gt;&lt;code&gt;sitemap&lt;/code&gt; plugin + per-feed sitemap format&lt;/td&gt;&#xA;&lt;td&gt;&lt;a href=&#34;https://github.com/WaylonWalker/markata-go/blob/main/docs/reference/plugins.md&#34;&gt;plugins.md&lt;/a&gt;&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;tr&gt;&#xA;&lt;td&gt;404 page&lt;/td&gt;&#xA;&lt;td&gt;Built-in 404 mechanism w/ slug suggestions + live-search fallback (v0.7.0); &lt;code&gt;didyoumean&lt;/code&gt;-style suggestions&lt;/td&gt;&#xA;&lt;td&gt;&lt;a href=&#34;https://github.com/WaylonWalker/markata-go/releases/tag/v0.7.0&#34;&gt;v0.7.0&lt;/a&gt;&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;tr&gt;&#xA;&lt;td&gt;Covers / OG images&lt;/td&gt;&#xA;&lt;td&gt;&lt;code&gt;structured_data&lt;/code&gt; (JSON-LD/OG/Twitter), &lt;code&gt;og_image&lt;/code&gt; frontmatter, themed OG card templates, &lt;code&gt;og_image_service&lt;/code&gt; screenshot-based OG images&lt;/td&gt;&#xA;&lt;td&gt;&lt;a href=&#34;https://github.com/WaylonWalker/markata-go/blob/main/docs/reference/plugins.md&#34;&gt;plugins.md&lt;/a&gt;, &lt;a href=&#34;https://github.com/WaylonWalker/markata-go/releases/tag/v0.7.0&#34;&gt;v0.7.0&lt;/a&gt;&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;tr&gt;&#xA;&lt;td&gt;jinja_md&lt;/td&gt;&#xA;&lt;td&gt;&lt;code&gt;jinja_md&lt;/code&gt; built-in (&lt;code&gt;jinja: true&lt;/code&gt; frontmatter)&lt;/td&gt;&#xA;&lt;td&gt;&lt;a href=&#34;https://github.com/WaylonWalker/markata-go/blob/main/docs/reference/plugins.md&#34;&gt;plugins.md&lt;/a&gt;&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;tr&gt;&#xA;&lt;td&gt;redirects&lt;/td&gt;&#xA;&lt;td&gt;&lt;code&gt;redirects&lt;/code&gt; write plugin&lt;/td&gt;&#xA;&lt;td&gt;&lt;a href=&#34;https://github.com/WaylonWalker/markata-go/blob/main/docs/reference/plugins.md&#34;&gt;plugins.md&lt;/a&gt;&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;tr&gt;&#xA;&lt;td&gt;&lt;code&gt;markata summary&lt;/code&gt; TUI counts&lt;/td&gt;&#xA;&lt;td&gt;&lt;code&gt;markata-go tui&lt;/code&gt; + &lt;code&gt;list&lt;/code&gt;/&lt;code&gt;search&lt;/code&gt; cover similar ground&lt;/td&gt;&#xA;&lt;td&gt;&lt;a href=&#34;https://github.com/WaylonWalker/markata-go/blob/main/docs/reference/cli.md&#34;&gt;cli.md&lt;/a&gt;&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;tr&gt;&#xA;&lt;td&gt;&lt;code&gt;heading_link&lt;/code&gt; permalinks&lt;/td&gt;&#xA;&lt;td&gt;&lt;code&gt;heading_anchors&lt;/code&gt; built-in&lt;/td&gt;&#xA;&lt;td&gt;&lt;a href=&#34;https://github.com/WaylonWalker/markata-go/blob/main/docs/reference/plugins.md&#34;&gt;plugins.md&lt;/a&gt;&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;tr&gt;&#xA;&lt;td&gt;Search&lt;/td&gt;&#xA;&lt;td&gt;&lt;code&gt;pagefind&lt;/code&gt; built-in (skipped by &lt;code&gt;--fast&lt;/code&gt;); optional bleve/searchcraft work in flight&lt;/td&gt;&#xA;&lt;td&gt;&lt;a href=&#34;https://github.com/WaylonWalker/markata-go/blob/main/docs/reference/plugins.md&#34;&gt;plugins.md&lt;/a&gt;&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;tr&gt;&#xA;&lt;td&gt;Bundled agent skill for site repos&lt;/td&gt;&#xA;&lt;td&gt;&lt;code&gt;markata-go agent install&lt;/code&gt; ships a &lt;code&gt;markata-go-site&lt;/code&gt; skill (SKILL.md + topics/reference/examples)&lt;/td&gt;&#xA;&lt;td&gt;&lt;code&gt;spec/spec/AGENTS.md&lt;/code&gt;, &lt;code&gt;markata-go agent --help&lt;/code&gt;&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;tr&gt;&#xA;&lt;td&gt;Extras not in Python version&lt;/td&gt;&#xA;&lt;td&gt;tailwind CDN automation, cdn_assets vendoring, mermaid, chartjs, glossary, series, webmentions, blogroll/reader, garden view w/ knowledge graph, mentions, link_collector/link graph, keyboard nav, view transitions, random_post, image optimization, LSP, serve control center&lt;/td&gt;&#xA;&lt;td&gt;&lt;a href=&#34;https://github.com/WaylonWalker/markata-go/blob/main/docs/reference/plugins.md&#34;&gt;plugins.md&lt;/a&gt;, release notes&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;8-extensibility&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;8. Extensibility&lt;/span&gt; &lt;a href=&#34;#8-extensibility&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Built-in plugin set is large (30+) and configurable via &lt;code&gt;hooks&lt;/code&gt;/&lt;code&gt;disabled_hooks&lt;/code&gt; (&lt;code&gt;hooks = [&amp;quot;default&amp;quot;, &amp;quot;python_docs&amp;quot;]&lt;/code&gt; style). &lt;a href=&#34;https://github.com/WaylonWalker/markata-go/blob/main/docs/reference/plugins.md&#34;&gt;plugins.md&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;True external plugins: Go-only and effectively compile-time.&lt;/strong&gt; &lt;code&gt;pkg/plugins/registry.go&lt;/code&gt; registers built-ins. The practical paths: &lt;strong&gt;fork + recompile&lt;/strong&gt; (we already build from source via &lt;code&gt;go install&lt;/code&gt;), or template/jinja_md + config for most needs. There&amp;rsquo;s a &lt;code&gt;docs/guides/plugin-development.md&lt;/code&gt; and an agent-skill topic &lt;code&gt;plugin-creation.md&lt;/code&gt;. &lt;a href=&#34;https://github.com/WaylonWalker/markata-go/blob/main/spec/spec/PLUGINS.md&#34;&gt;spec/PLUGINS.md&lt;/a&gt;, &lt;a href=&#34;https://github.com/WaylonWalker/markata-go/blob/main/CONTRIBUTING.md&#34;&gt;CONTRIBUTING.md&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Policy: PRs not accepted — so a needed feature means a fork or an issue request. &lt;a href=&#34;https://github.com/WaylonWalker/markata-go/blob/main/CONTRIBUTING.md&#34;&gt;CONTRIBUTING.md&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Escape hatches: &lt;code&gt;jinja_md&lt;/code&gt; for computed content, &lt;code&gt;config_overrides&lt;/code&gt; per post, &lt;code&gt;import&lt;/code&gt; command, feed &lt;code&gt;markdown&lt;/code&gt;/&lt;code&gt;text&lt;/code&gt; outputs, &lt;code&gt;::: name&lt;/code&gt; containers, env-var-driven scripts pre-build.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;9-development-pace-maturity&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;9. Development pace &amp;amp; maturity&lt;/span&gt; &lt;a href=&#34;#9-development-pace-maturity&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Repo created &lt;strong&gt;2026-01-22&lt;/strong&gt;; releases: v0.4.0 (2026-01-24), v0.5.0 (~01-25), v0.6.0 (01-31), v0.7.0 (02-19), v0.8.0 (02-21), v0.9.0, v0.10.0 (04-20), … v0.13.0 (2026-10-02) — &lt;strong&gt;roughly monthly minors, hundreds of commits each&lt;/strong&gt; (v0.9→v0.10 = 772 commits). &lt;a href=&#34;https://pkg.go.dev/github.com/WaylonWalker/markata-go&#34;&gt;pkg.go.dev versions&lt;/a&gt;, &lt;a href=&#34;https://github.com/WaylonWalker/markata-go/releases&#34;&gt;releases&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Self-described &lt;strong&gt;&amp;ldquo;Beta (0.x) — API may change between minor versions&amp;rdquo;&lt;/strong&gt;; release notes explicitly warn to smoke-test custom templates/themes on upgrade. &lt;a href=&#34;https://github.com/WaylonWalker/markata-go&#34;&gt;README&lt;/a&gt;, &lt;a href=&#34;https://github.com/WaylonWalker/markata-go/releases&#34;&gt;v0.9.0 notes&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Waylon dogfoods heavily:&lt;/strong&gt; waylonwalker.com homepage says &amp;ldquo;Building markata-go, the engine behind this site&amp;rdquo;; &lt;code&gt;go.waylonwalker.com&lt;/code&gt; is live; repo &lt;code&gt;WaylonWalker/waylonwalker.com&lt;/code&gt; has &lt;code&gt;markata-go.toml&lt;/code&gt; + split &lt;code&gt;config/*.toml&lt;/code&gt;; he runs a &amp;ldquo;builder admin&amp;rdquo; for live builds and edits via &lt;code&gt;md.waylonwalker.com&lt;/code&gt;. &lt;a href=&#34;https://waylonwalker.com//&#34;&gt;homepage&lt;/a&gt;, &lt;a href=&#34;https://github.com/WaylonWalker/waylonwalker.com&#34;&gt;waylonwalker.com repo&lt;/a&gt;, &lt;a href=&#34;https://waylonwalker.com/shots/new-fast-mode-in-markata-go-is-fun/&#34;&gt;fast-mode post&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Community: 2 stars, 2 forks, 51 open issues, 2 contributors — &lt;strong&gt;solo project&lt;/strong&gt;, not open to PRs. &lt;a href=&#34;https://github.com/WaylonWalker/markata-go&#34;&gt;repo&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Ecosystem extras already in flight: LSP (&lt;code&gt;markata-go lsp&lt;/code&gt;), TUI, agent-skill bundle, &lt;a href=&#34;/helm/&#34; class=&#34;glossary-term&#34; title=&#34;helm - package manager for k8s&#34; data-hover-title=&#34;helm&#34;&gt;helm&lt;/a&gt;/k8s deploy docs, builder-admin service, local admin CMS issue (#986). &lt;a href=&#34;https://github.com/WaylonWalker/markata-go/blob/main/docs/reference/cli.md&#34;&gt;cli.md&lt;/a&gt;, &lt;a href=&#34;https://github.com/WaylonWalker/markata-go/issues&#34;&gt;issues&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;10-known-gotchas-issues-observed&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;10. Known gotchas (issues + observed)&lt;/span&gt; &lt;a href=&#34;#10-known-gotchas-issues-observed&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;markata-go migrate&lt;/code&gt; can emit invalid TOML&lt;/strong&gt; for nested Python config sections (&lt;code&gt;auto_description&lt;/code&gt;) — validate with &lt;code&gt;config validate&lt;/code&gt;. &lt;a href=&#34;https://github.com/WaylonWalker/waylonwalker.com/issues/20&#34;&gt;waylonwalker.com#20&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Slug mode changes URLs&lt;/strong&gt;: &lt;code&gt;path&lt;/code&gt;/&lt;code&gt;hybrid&lt;/code&gt; modes change URL structure — &amp;ldquo;review links and redirects before switching&amp;rdquo;. &lt;a href=&#34;https://github.com/WaylonWalker/markata-go/releases&#34;&gt;v0.9.0 notes&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Tailwind managed preflight off by default&lt;/strong&gt; since v0.9.0 — sites depending on it must re-enable. &lt;a href=&#34;https://github.com/WaylonWalker/markata-go/releases&#34;&gt;v0.9.0 notes&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;0.x breaking changes are routine&lt;/strong&gt; — pin the version (&lt;code&gt;eget&lt;/code&gt;/mise pin, or &lt;code&gt;go install …@vX.Y.Z&lt;/code&gt;), smoke-test templates on upgrade. &lt;a href=&#34;https://github.com/WaylonWalker/markata-go&#34;&gt;README&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Encryption pitfalls were real (plaintext leaks, missing decryption assets on feed pages) — fixed in v0.8.0; keep the version ≥0.8 and read &lt;code&gt;docs/guides/encryption.md&lt;/code&gt; before relying on it. &lt;a href=&#34;https://github.com/WaylonWalker/markata-go/releases/tag/v0.8.0&#34;&gt;v0.8.0&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Optional theme assets (lite-yt CSS/JS, GLightbox, mermaid, webmentions, encryption) loaded site-wide rather than per-need — cosmetic/perf, open issue &lt;a href=&#34;https://github.com/WaylonWalker/markata-go/issues/980&#34;&gt;#980&lt;/a&gt;.&lt;/li&gt;&#xA;&lt;li&gt;pongo2 ≠ Jinja2: &lt;code&gt;migrate templates&lt;/code&gt; is a checker, not a rewriter — expect manual edits to custom templates.&lt;/li&gt;&#xA;&lt;li&gt;Case sensitivity in templates (&lt;code&gt;post.Title&lt;/code&gt; vs &lt;code&gt;post.title&lt;/code&gt;) has churned — check the agent-skill &lt;code&gt;template-context&lt;/code&gt; reference and test.&lt;/li&gt;&#xA;&lt;li&gt;Private posts stay out of &lt;code&gt;auto_feeds&lt;/code&gt; public tag feeds — intended behavior, don&amp;rsquo;t be surprised if private-tagged posts are missing from tag pages. &lt;a href=&#34;https://github.com/WaylonWalker/markata-go/pull/979&#34;&gt;PR #979&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Env var for encryption keys is &lt;code&gt;MARKATA_GO_ENCRYPTION_KEY_DEFAULT&lt;/code&gt; (not &lt;code&gt;_DEFAULT_KEY&lt;/code&gt; as the spec table says) — verified by build error message.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;migration-risk-summary-for-pype-dev&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;MIGRATION RISK SUMMARY (for pype.dev)&lt;/span&gt; &lt;a href=&#34;#migration-risk-summary-for-pype-dev&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;strong&gt;Ports cleanly (verified in local markout-go build):&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;All feed &lt;code&gt;filter&lt;/code&gt; strings — same Python-like expression language; all 17 feeds generated (192 output dirs incl. archive/variants).&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;published&lt;/code&gt;/&lt;code&gt;draft&lt;/code&gt; frontmatter semantics, &lt;code&gt;tags&lt;/code&gt;, &lt;code&gt;templateKey&lt;/code&gt; filtering, &lt;code&gt;YYYY-MM-DD HH:MM:SS&lt;/code&gt; dates.&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;!!!&lt;/code&gt;/&lt;code&gt;???&lt;/code&gt;/&lt;code&gt;???+&lt;/code&gt; admonitions for whitelisted types, &lt;code&gt;[[slug]]&lt;/code&gt; &lt;strong&gt;and&lt;/strong&gt; &lt;code&gt;[[ slug ]]&lt;/code&gt; spaced wikilinks (resolve + hover previews), GFM tables, typographer, heading anchors, syntax highlighting.&lt;/li&gt;&#xA;&lt;li&gt;Nav, RSS/Atom/JSON per feed, sitemap, 404, prevnext, OG/structured data, pagefind search, tailwind automation.&lt;/li&gt;&#xA;&lt;li&gt;Encryption: &lt;code&gt;templateKey: protected-post&lt;/code&gt; posts encrypted via &lt;code&gt;private_tags&lt;/code&gt; map + &lt;code&gt;MARKATA_GO_ENCRYPTION_KEY_DEFAULT&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;Needs custom work:&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Custom admonition types&lt;/strong&gt; (&lt;code&gt;scripture&lt;/code&gt; ×70, &lt;code&gt;background-thought&lt;/code&gt; ×14, &lt;code&gt;source&lt;/code&gt; ×2) — hardcoded whitelist, no PRs accepted → file upstream issue and/or codemod to a supported type (e.g. &lt;code&gt;quote&lt;/code&gt;) with matching title.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;plugins/build_thoughts.py&lt;/code&gt;&lt;/strong&gt; — pre-build script writing &lt;code&gt;pages/thoughts/*.md&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;30 Jinja templates&lt;/strong&gt; — every &lt;code&gt;markata.config.*&lt;/code&gt;/&lt;code&gt;post.*&lt;/code&gt; var reference needs rewriting to the go context; the &lt;code&gt;head.html&lt;/code&gt; include alone poisons the chain. Recommendation: adopt the default theme + palette/aesthetic CSS instead of porting.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Admonition typos in content&lt;/strong&gt;: &lt;code&gt;waring&lt;/code&gt;, &lt;code&gt;Scripture&lt;/code&gt;, &lt;code&gt;Exodusds&lt;/code&gt; (were silently unstyled under Python markata too).&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;No equivalent (probably):&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Custom Python plugins generally — no Python plugin runtime.&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;service_worker&lt;/code&gt; plugin; per-post &lt;code&gt;publish_source&lt;/code&gt; (feed-level markdown/text exists); PWA manifest writer unconfirmed.&lt;/li&gt;&#xA;&lt;li&gt;Python-specific filter helpers (&lt;code&gt;timedelta&lt;/code&gt;, &lt;code&gt;parse&lt;/code&gt;) — verify in &lt;code&gt;migrate filter&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;</content>
    <author>
      <name>Nic Payne</name>
      <uri>https://pype.dev</uri>
    </author>
  </entry>
  <entry>
    <title>Neovim Markdown Journaling Research</title>
    <id>https://pype.dev/neovim-markdown-journaling-research/</id>
    <updated>2026-10-04T06:00:00Z</updated>
    <published>2026-10-04T06:00:00Z</published>
    <link href="https://pype.dev/neovim-markdown-journaling-research/" rel="alternate" type="text/html"></link>
    <summary type="text">Research on the current Neovim plugin landscape for writing/journaling in Markdown, oriented around this site&#39;s workflow: a markata blog with YAML...</summary>
    <content type="html">&lt;p&gt;Research on the current Neovim plugin landscape for writing/journaling in&#xA;Markdown, oriented around this site&amp;rsquo;s workflow: a markata blog with YAML&#xA;frontmatter, mkdocs-material-style &lt;code&gt;!!! scripture&lt;/code&gt; / &lt;code&gt;??? scripture&lt;/code&gt;&#xA;admonitions, &lt;code&gt;[[ slug ]]&lt;/code&gt; wikilinks, and a custom &lt;code&gt;pypeaday.daily&lt;/code&gt; module&#xA;(copier templates + telescope/fzf pickers + live_grep backlinks).&lt;/p&gt;&#xA;&lt;h2 id=&#34;1-lazyvim-lang-markdown-extra-what-it-actually-does&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;1. LazyVim &lt;/span&gt;&lt;code&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;lang.markdown&lt;/span&gt;&lt;/code&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt; extra — what it actually does&lt;/span&gt; &lt;a href=&#34;#1-lazyvim-lang-markdown-extra-what-it-actually-does&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Source of truth (current &lt;code&gt;main&lt;/code&gt;):&#xA;&lt;a href=&#34;https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/plugins/extras/lang/markdown.lua&#34;&gt;https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/plugins/extras/lang/markdown.lua&lt;/a&gt;&#xA;Docs: &lt;a href=&#34;https://github.com/LazyVim/lazyvim.github.io/blob/main/docs/extras/lang/markdown.md&#34;&gt;https://github.com/LazyVim/lazyvim.github.io/blob/main/docs/extras/lang/markdown.md&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;As of 2026, the extra installs/configures:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;marksman&lt;/strong&gt; via nvim-lspconfig (&lt;code&gt;servers = { marksman = {} }&lt;/code&gt;) — markdown&#xA;LSP with &lt;code&gt;[[wikilink]]&lt;/code&gt; completion, go-to-definition, references&#xA;(backlinks), and dead-link diagnostics. Big deal: most of what&#xA;&lt;code&gt;pypeaday.daily.find_backlinks()&lt;/code&gt; does via telescope live_grep, marksman&#xA;gives via &lt;code&gt;grr&lt;/code&gt;/&lt;code&gt;vim.lsp.buf.references&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;markdownlint-cli2&lt;/strong&gt; via nvim-lint (and none-ls if installed), plus&#xA;conform.nvim formatters &lt;code&gt;prettier&lt;/code&gt;, &lt;code&gt;markdownlint-cli2&lt;/code&gt;, and &lt;code&gt;markdown-toc&lt;/code&gt;&#xA;(the last only runs when the buffer contains &lt;code&gt;&amp;lt;!-- toc --&amp;gt;&lt;/code&gt;). Mason&#xA;auto-installs &lt;code&gt;markdownlint-cli2&lt;/code&gt; + &lt;code&gt;markdown-toc&lt;/code&gt;. LazyVim switched from&#xA;markdownlint-cli to cli2 in 2024:&#xA;&lt;a href=&#34;https://github.com/LazyVim/LazyVim/pull/3843&#34;&gt;https://github.com/LazyVim/LazyVim/pull/3843&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;markdown-preview.nvim&lt;/strong&gt; (&lt;code&gt;iamcco/markdown-preview.nvim&lt;/code&gt;) — browser&#xA;preview on &lt;code&gt;&amp;lt;leader&amp;gt;cp&lt;/code&gt; (markdown buffers only).&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;render-markdown.nvim&lt;/strong&gt; (&lt;code&gt;MeanderingProgrammer/render-markdown.nvim&lt;/code&gt;) —&#xA;in-buffer rendering. LazyVim replaced &lt;code&gt;headlines.nvim&lt;/code&gt; with this plugin&#xA;back in 2024:&#xA;&lt;a href=&#34;https://github.com/LazyVim/LazyVim/pull/4139&#34;&gt;https://github.com/LazyVim/LazyVim/pull/4139&lt;/a&gt;. LazyVim&amp;rsquo;s config disables&#xA;heading icons and checkbox rendering, and maps a&#xA;&lt;code&gt;&amp;lt;leader&amp;gt;um&lt;/code&gt; toggle via &lt;code&gt;Snacks.toggle&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;There is &lt;strong&gt;no prose/spell/grammar extra&lt;/strong&gt; in LazyVim — the full extras list&#xA;contains nothing like a &lt;code&gt;lang.text&lt;/code&gt; or &lt;code&gt;extras.spelling&lt;/code&gt;. Prose tooling has&#xA;to be added by hand.&lt;/p&gt;&#xA;&lt;p&gt;The import already exists in &lt;code&gt;~/.config/nvim/lua/config/lazy.lua&lt;/code&gt; (line 53)&#xA;alongside ~15 other extras — verified 2026-10-04. If plugins look missing,&#xA;&lt;code&gt;:Lazy sync&lt;/code&gt; will reconcile; &lt;code&gt;:LazyExtras&lt;/code&gt; shows what&amp;rsquo;s active.&lt;/p&gt;&#xA;&lt;p&gt;Built-in LazyVim defaults that matter for prose (no plugin needed):&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;FileType autocmd already sets &lt;code&gt;wrap&lt;/code&gt; and &lt;code&gt;spell&lt;/code&gt; for markdown:&#xA;&lt;code&gt;lazyvim/config/autocmds.lua&lt;/code&gt; (&lt;code&gt;wrap_spell&lt;/code&gt; augroup, patterns include&#xA;&lt;code&gt;markdown&lt;/code&gt;). So spell+wrap are already on.&lt;/li&gt;&#xA;&lt;li&gt;Toggles already mapped: &lt;code&gt;&amp;lt;leader&amp;gt;us&lt;/code&gt; spell, &lt;code&gt;&amp;lt;leader&amp;gt;uw&lt;/code&gt; wrap,&#xA;&lt;code&gt;&amp;lt;leader&amp;gt;um&lt;/code&gt; render-markdown (with the extra), &lt;code&gt;&amp;lt;leader&amp;gt;uz&lt;/code&gt; Snacks zen&#xA;mode, &lt;code&gt;&amp;lt;leader&amp;gt;uD&lt;/code&gt; Snacks dim — see &lt;code&gt;lazyvim/config/keymaps.lua&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;2-render-markdown-nvim-capabilities-and-the-admonition-gap&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;2. render-markdown.nvim — capabilities and the admonition gap&lt;/span&gt; &lt;a href=&#34;#2-render-markdown-nvim-capabilities-and-the-admonition-gap&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Repo: &lt;a href=&#34;https://github.com/MeanderingProgrammer/render-markdown.nvim&#34;&gt;https://github.com/MeanderingProgrammer/render-markdown.nvim&lt;/a&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Renders headings, code blocks, inline code, horizontal rules, list&#xA;bullets, &lt;strong&gt;checkboxes (with user-defined states)&lt;/strong&gt;, block quotes,&#xA;&lt;strong&gt;callouts&lt;/strong&gt;, tables, links, LaTeX, per the README feature list.&lt;/li&gt;&#xA;&lt;li&gt;Callouts: supports GitHub (&lt;code&gt;[!NOTE]&lt;/code&gt;, &lt;code&gt;[!TIP]&lt;/code&gt;, &lt;code&gt;[!IMPORTANT]&lt;/code&gt;,&#xA;&lt;code&gt;[!WARNING]&lt;/code&gt;, &lt;code&gt;[!CAUTION]&lt;/code&gt;) and the full Obsidian set (&lt;code&gt;[!QUOTE]&lt;/code&gt;,&#xA;&lt;code&gt;[!TODO]&lt;/code&gt;, etc.). Custom callouts are fully supported — each entry is&#xA;&lt;code&gt;name = { raw = &#39;[!SCRIPTURE]&#39;, rendered = &#39; Scripture&#39;, highlight = &#39;...&#39; }&lt;/code&gt;.&#xA;Wiki reference:&#xA;&lt;a href=&#34;https://github.com/MeanderingProgrammer/render-markdown.nvim/wiki/Callouts&#34;&gt;https://github.com/MeanderingProgrammer/render-markdown.nvim/wiki/Callouts&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Custom callout titles (&lt;code&gt;&amp;gt; [!quote] Psalm 119&lt;/code&gt;) are supported:&#xA;&lt;a href=&#34;https://github.com/MeanderingProgrammer/render-markdown.nvim/issues/109&#34;&gt;https://github.com/MeanderingProgrammer/render-markdown.nvim/issues/109&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Checkboxes: &lt;code&gt;- [ ]&lt;/code&gt; / &lt;code&gt;- [x]&lt;/code&gt; render as icons, and arbitrary custom states&#xA;(&lt;code&gt;- [/]&lt;/code&gt;, &lt;code&gt;- [&amp;gt;]&lt;/code&gt;, etc.) are configurable (&lt;code&gt;checkbox.custom&lt;/code&gt;).&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;mkdocs &lt;code&gt;!!!&lt;/code&gt;/&lt;code&gt;???&lt;/code&gt; admonitions are NOT supported.&lt;/strong&gt; The plugin is&#xA;treesitter-driven over the standard markdown parser; admonition blocks&#xA;are just indented text to it. Callout support was added for the&#xA;&lt;code&gt;&amp;gt; [!x]&lt;/code&gt; blockquote syntax only&#xA;(&lt;a href=&#34;https://github.com/MeanderingProgrammer/render-markdown.nvim/issues/20&#34;&gt;https://github.com/MeanderingProgrammer/render-markdown.nvim/issues/20&lt;/a&gt;).&lt;/li&gt;&#xA;&lt;li&gt;The main alternative, &lt;code&gt;OXY2DEV/markview.nvim&lt;/code&gt;, also only renders&#xA;&lt;code&gt;&amp;gt; [!x]&lt;/code&gt; callouts for markdown — its &amp;ldquo;admonitions&amp;rdquo; support is for&#xA;&lt;strong&gt;Asciidoc&lt;/strong&gt;, not mkdocs:&#xA;&lt;a href=&#34;https://github.com/OXY2DEV/markview.nvim/wiki/Markdown&#34;&gt;https://github.com/OXY2DEV/markview.nvim/wiki/Markdown&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Even &lt;code&gt;markdown-preview.nvim&lt;/code&gt; can&amp;rsquo;t preview mkdocs admonitions — open&#xA;feature request: &lt;a href=&#34;https://github.com/iamcco/markdown-preview.nvim/issues/618&#34;&gt;https://github.com/iamcco/markdown-preview.nvim/issues/618&lt;/a&gt;.&#xA;The faithful preview for &lt;code&gt;!!! scripture&lt;/code&gt; is the markata/mkdocs build&#xA;itself, not an editor plugin.&lt;/li&gt;&#xA;&lt;li&gt;Conceal/anti-conceal: &lt;code&gt;anti_conceal&lt;/code&gt; hides the plugin&amp;rsquo;s virtual text on&#xA;the cursor line so you can edit raw source; &lt;code&gt;win_options.conceallevel&lt;/code&gt;&#xA;is managed per rendered/raw view. Known upstream limitation: concealed&#xA;text + &lt;code&gt;wrap&lt;/code&gt; keeps stale line breaks (neovim issue #14409), documented&#xA;in &lt;a href=&#34;https://github.com/MeanderingProgrammer/render-markdown.nvim/blob/HEAD/doc/limitations.md&#34;&gt;https://github.com/MeanderingProgrammer/render-markdown.nvim/blob/HEAD/doc/limitations.md&lt;/a&gt;.&#xA;Practical tradeoff: rendered mode is great for reading/journaling review;&#xA;expect to live with &lt;code&gt;&amp;lt;leader&amp;gt;um&lt;/code&gt; toggling or anti-conceal while editing.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;3-obsidian-nvim-fit-for-a-non-obsidian-vault&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;3. obsidian.nvim — fit for a non-Obsidian vault&lt;/span&gt; &lt;a href=&#34;#3-obsidian-nvim-fit-for-a-non-obsidian-vault&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Repo (community fork, actively maintained; &lt;code&gt;epwalsh/obsidian.nvim&lt;/code&gt; is the&#xA;legacy upstream): &lt;a href=&#34;https://github.com/obsidian-nvim/obsidian.nvim&#34;&gt;https://github.com/obsidian-nvim/obsidian.nvim&lt;/a&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;A &amp;ldquo;workspace&amp;rdquo; is just a directory of markdown — no &lt;code&gt;.obsidian/&lt;/code&gt; config&#xA;required. &lt;code&gt;workspaces = { { name = &amp;quot;pype.dev&amp;quot;, path = &amp;quot;~/projects/personal/pype.dev&amp;quot; } }&lt;/code&gt;&#xA;is a valid setup.&lt;/li&gt;&#xA;&lt;li&gt;Provides &lt;code&gt;:Obsidian today [OFFSET]&lt;/code&gt; / &lt;code&gt;dailies&lt;/code&gt;, &lt;code&gt;new_from_template&lt;/code&gt;,&#xA;&lt;code&gt;template&lt;/code&gt; (substitutions, date/time formats), &lt;code&gt;backlinks&lt;/code&gt;,&#xA;&lt;code&gt;follow_link&lt;/code&gt;, &lt;code&gt;search&lt;/code&gt;, &lt;code&gt;link&lt;/code&gt;, &lt;code&gt;links&lt;/code&gt;. See command list in README.&lt;/li&gt;&#xA;&lt;li&gt;Completion of &lt;code&gt;[[&lt;/code&gt; wiki links and &lt;code&gt;#&lt;/code&gt; tags via blink.cmp or nvim-cmp;&#xA;newer versions do this through an in-process LSP so it works with any&#xA;completion engine.&lt;/li&gt;&#xA;&lt;li&gt;Caveats:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Search/backlinks require &lt;code&gt;ripgrep&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;Only activates inside workspace paths; the whole pype.dev repo would be&#xA;one workspace, so &lt;code&gt;:Obsidian search&lt;/code&gt; scans posts+pages together&#xA;(probably fine).&lt;/li&gt;&#xA;&lt;li&gt;Default wikilink style is &lt;code&gt;[[id|alias]]&lt;/code&gt;-ish (&lt;code&gt;wiki_link_id_prefix&lt;/code&gt;);&#xA;the &lt;code&gt;[[ slug ]]&lt;/code&gt;-with-spaces convention used by markata is configured&#xA;via &lt;code&gt;wiki_link_func&lt;/code&gt;. Also &lt;code&gt;disable_frontmatter&lt;/code&gt;/custom&#xA;&lt;code&gt;note_frontmatter_func&lt;/code&gt; matters since it would otherwise write&#xA;Obsidian-style frontmatter (&lt;code&gt;id&lt;/code&gt;, &lt;code&gt;aliases&lt;/code&gt;, &lt;code&gt;tags&lt;/code&gt;) that markata&#xA;doesn&amp;rsquo;t want.&lt;/li&gt;&#xA;&lt;li&gt;Its built-in checkbox/conceal UI is deprecated in favor of&#xA;render-markdown.nvim — set &lt;code&gt;ui.enable = false&lt;/code&gt; and let&#xA;render-markdown handle visuals.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Verdict: overlaps ~80% with the existing &lt;code&gt;pypeaday.daily&lt;/code&gt; module (daily&#xA;notes, templates, backlinks). The genuinely new capability is &lt;code&gt;[[&lt;/code&gt;&#xA;completion and structured wikilink following — but &lt;strong&gt;marksman (already&#xA;in lang.markdown) gives wikilink completion, &lt;code&gt;gd&lt;/code&gt; link following, and&#xA;&lt;code&gt;grr&lt;/code&gt; backlinks for free&lt;/strong&gt;, so obsidian.nvim is optional rather than&#xA;foundational. If adopted, keep &lt;code&gt;pypeaday.daily&lt;/code&gt; for copier template&#xA;creation and use obsidian.nvim only for links/completion.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;4-alternatives-brief-survey&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;4. Alternatives — brief survey&lt;/span&gt; &lt;a href=&#34;#4-alternatives-brief-survey&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;telekasten.nvim&lt;/strong&gt; (&lt;a href=&#34;https://github.com/nvim-telekasten/telekasten.nvim&#34;&gt;https://github.com/nvim-telekasten/telekasten.nvim&lt;/a&gt;):&#xA;telescope-based zettelkasten + journal; daily/weekly notes, templates,&#xA;backlinks, calendar. Works, but low recent activity and it duplicates&#xA;the existing copier+telescope workflow. Not recommended here.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;zk-nvim&lt;/strong&gt; (&lt;a href=&#34;https://github.com/zk-org/zk-nvim&#34;&gt;https://github.com/zk-org/zk-nvim&lt;/a&gt;): Neovim frontend for&#xA;the &lt;code&gt;zk&lt;/code&gt; CLI (a real LSP + note DB). Solid and maintained, but it wants&#xA;the &lt;code&gt;zk&lt;/code&gt; binary and a &lt;code&gt;zk&lt;/code&gt;-style notebook — another parallel system, not&#xA;a fit for markata frontmatter/slugs.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;neorg&lt;/strong&gt; (&lt;a href=&#34;https://github.com/nvim-neorg/neorg&#34;&gt;https://github.com/nvim-neorg/neorg&lt;/a&gt;): still releasing (9.x),&#xA;but it&amp;rsquo;s its own &lt;code&gt;.norg&lt;/code&gt; file format — incompatible with a markdown&#xA;blog. Maintainer activity is low (focus shifted to the &lt;code&gt;lux&lt;/code&gt; Lua package&#xA;manager): &lt;a href=&#34;https://github.com/nvim-neorg/neorg/discussions/1673&#34;&gt;https://github.com/nvim-neorg/neorg/discussions/1673&lt;/a&gt;. Skip.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Preview&lt;/strong&gt;: &lt;code&gt;markdown-preview.nvim&lt;/code&gt; (browser, in the extra, &lt;code&gt;&amp;lt;leader&amp;gt;cp&lt;/code&gt;)&#xA;is the maintained option. &lt;code&gt;glow.nvim&lt;/code&gt; is abandoned — its own README&#xA;points at render-markdown.nvim:&#xA;&lt;a href=&#34;https://github.com/ellisonleao/glow.nvim/&#34;&gt;https://github.com/ellisonleao/glow.nvim/&lt;/a&gt; (fork &lt;code&gt;shcode/nvim-glow&lt;/code&gt;&#xA;exists but is a terminal renderer, no help for admonitions). For this&#xA;site, &lt;code&gt;markata&lt;/code&gt;&amp;rsquo;s own build/serve is the only faithful preview.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Focus&lt;/strong&gt;: don&amp;rsquo;t install zen-mode/twilight. LazyVim already maps&#xA;&lt;code&gt;Snacks.zen()&lt;/code&gt; to &lt;code&gt;&amp;lt;leader&amp;gt;uz&lt;/code&gt; and &lt;code&gt;Snacks.toggle.dim()&lt;/code&gt; to &lt;code&gt;&amp;lt;leader&amp;gt;uD&lt;/code&gt;&#xA;(folke&amp;rsquo;s snacks.nvim replaced his standalone plugins:&#xA;&lt;a href=&#34;https://github.com/folke/snacks.nvim/blob/main/docs/zen.md&#34;&gt;https://github.com/folke/snacks.nvim/blob/main/docs/zen.md&lt;/a&gt;).&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Tables&lt;/strong&gt;: &lt;code&gt;tabular&lt;/code&gt; is already installed (&lt;code&gt;:Tabularize /|&lt;/code&gt;), and&#xA;prettier (via conform &lt;code&gt;&amp;lt;leader&amp;gt;cf&lt;/code&gt;) aligns markdown tables automatically.&#xA;If auto-growing tables are wanted, &lt;code&gt;Kicamon/markdown-table-mode.nvim&lt;/code&gt; or&#xA;&lt;code&gt;dhruvasagar/vim-table-mode&lt;/code&gt; are the options — probably unnecessary.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;List/checkbox ergonomics&lt;/strong&gt;: &lt;code&gt;bullets.vim&lt;/code&gt;&#xA;(&lt;a href=&#34;https://github.com/bullets-vim/bullets.vim&#34;&gt;https://github.com/bullets-vim/bullets.vim&lt;/a&gt;) auto-continues lists on&#xA;&lt;code&gt;&amp;lt;CR&amp;gt;&lt;/code&gt;/&lt;code&gt;o&lt;/code&gt;, renumbers with &lt;code&gt;gN&lt;/code&gt;, indents with &lt;code&gt;&amp;gt;&amp;gt;&lt;/code&gt;/&lt;code&gt;&amp;lt;&amp;lt;&lt;/code&gt;, and toggles&#xA;checkboxes with &lt;code&gt;&amp;lt;leader&amp;gt;x&lt;/code&gt; — including partial-completion parent&#xA;checkboxes. Perfect fit for prayer-request checklists.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Link editing nicety&lt;/strong&gt;: &lt;code&gt;antonk52/markdowny.nvim&lt;/code&gt; adds vim-style&#xA;surround ops for &lt;code&gt;[text](url)&lt;/code&gt; links. Optional quality-of-life.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;5-spell-wrap-prose-ergonomics&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;5. Spell / wrap / prose ergonomics&lt;/span&gt; &lt;a href=&#34;#5-spell-wrap-prose-ergonomics&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Already handled by LazyVim core: &lt;code&gt;spell&lt;/code&gt; + &lt;code&gt;wrap&lt;/code&gt; FileType autocmd for&#xA;markdown; &lt;code&gt;&amp;lt;leader&amp;gt;us&lt;/code&gt; / &lt;code&gt;&amp;lt;leader&amp;gt;uw&lt;/code&gt; toggles; &lt;code&gt;spelllang = &amp;quot;en&amp;quot;&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;Worth adding in an ftplugin/autocmd: &lt;code&gt;linebreak&lt;/code&gt; (wrap at words, not&#xA;mid-word), &lt;code&gt;breakindent&lt;/code&gt; (wrapped lines keep list indent), &lt;code&gt;wrapmargin&lt;/code&gt;/&#xA;&lt;code&gt;colorcolumn&lt;/code&gt; hygiene, and &lt;code&gt;conceallevel=2&lt;/code&gt; + &lt;code&gt;concealcursor=nc&lt;/code&gt; if you&#xA;want rendered-markdown to look clean while keeping cursor-line raw.&#xA;Note &lt;code&gt;smoothscroll&lt;/code&gt; is globally disabled in this config&#xA;(&lt;code&gt;vim.opt.smoothscroll = false&lt;/code&gt;) — re-enable it locally for markdown if&#xA;long wrapped paragraphs feel jumpy.&lt;/li&gt;&#xA;&lt;li&gt;Prose LSPs:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;harper-ls&lt;/strong&gt; (&lt;a href=&#34;https://github.com/Automattic/harper&#34;&gt;https://github.com/Automattic/harper&lt;/a&gt;,&#xA;&lt;a href=&#34;https://writewithharper.com&#34;&gt;https://writewithharper.com&lt;/a&gt;): Rust grammar/spelling LSP aimed at&#xA;developers; markdown-aware, fast, no Java. Installable via mason&#xA;(&lt;code&gt;harper_ls&lt;/code&gt; in lspconfig), every linter toggleable&#xA;(&lt;code&gt;linters.sentence_capitalization&lt;/code&gt;, &lt;code&gt;long_sentences&lt;/code&gt;, etc.). Best&#xA;current default for prose grammar. Caution: it flags in every buffer&#xA;it attaches to — scope it to &lt;code&gt;markdown&lt;/code&gt; filetype only.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;ltex-ls is dead&lt;/strong&gt; — &lt;code&gt;valentjn/ltex-ls&lt;/code&gt; is archived&#xA;(&lt;a href=&#34;https://github.com/valentjn/ltex-ls&#34;&gt;https://github.com/valentjn/ltex-ls&lt;/a&gt;). Maintained fork:&#xA;&lt;strong&gt;ltex-plus/ltex-ls-plus&lt;/strong&gt; (&lt;a href=&#34;https://github.com/ltex-plus/ltex-ls-plus&#34;&gt;https://github.com/ltex-plus/ltex-ls-plus&lt;/a&gt;),&#xA;still LanguageTool-based (heavy JVM, but deeper grammar rules).&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;vale&lt;/strong&gt; (&lt;a href=&#34;https://vale.sh&#34;&gt;https://vale.sh&lt;/a&gt;): CLI style-guide linter; usable through&#xA;nvim-lint&amp;rsquo;s &lt;code&gt;vale&lt;/code&gt; linter. Best if you want house-style rules&#xA;(write-good/proselint packs), more setup than value for journaling.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Soft punctuation niceties: &lt;code&gt;pensieve&lt;/code&gt;/&lt;code&gt;cmp-dictionary&lt;/code&gt; are mostly dead&#xA;ends; the spell dictionary via &lt;code&gt;zg&lt;/code&gt; + blink &lt;code&gt;buffer&lt;/code&gt;/&lt;code&gt;spell&lt;/code&gt; source&#xA;covers the practical case.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;recommended-additions-for-this-setup&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Recommended additions for this setup&lt;/span&gt; &lt;a href=&#34;#recommended-additions-for-this-setup&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Ordered by value ÷ effort.&lt;/p&gt;&#xA;&lt;h3 id=&#34;1-lang-markdown-extra-is-already-enabled-zero-new-code&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;1. lang.markdown extra is already enabled (zero new code)&lt;/span&gt; &lt;a href=&#34;#1-lang-markdown-extra-is-already-enabled-zero-new-code&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;p&gt;&lt;code&gt;~/.config/nvim/lua/config/lazy.lua&lt;/code&gt; line 53 already imports it. Verify&#xA;marksman attaches with &lt;code&gt;:LspInfo&lt;/code&gt; in a note buffer. Then:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;gd&lt;/code&gt; on &lt;code&gt;&amp;lt;a href=&amp;quot;/2025-09-13-notes/&amp;quot; class=&amp;quot;wikilink&amp;quot; data-title=&amp;quot;2025-09-13 Notes&amp;quot; data-description=&amp;quot;yesterday: 2025-09-11-notes&amp;quot; data-date=&amp;quot;2025-09-13&amp;quot;&amp;gt;2025-09-13 Notes&amp;lt;/a&amp;gt;&lt;/code&gt; jumps to the note&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;grr&lt;/code&gt; (LSP references) is a richer backlinks view than the live_grep&#xA;pattern in &lt;code&gt;find_daily_files&lt;/code&gt;/&lt;code&gt;find_backlinks&lt;/code&gt; — keep the telescope one,&#xA;it searches the spaced &lt;code&gt;[[ slug ]]&lt;/code&gt; convention regardless of whether&#xA;marksman resolves it.&lt;/li&gt;&#xA;&lt;li&gt;Caveat: marksman treats the git root (&lt;code&gt;pype.dev&lt;/code&gt;) as the workspace, which&#xA;is what we want. Verify it resolves the spaced &lt;code&gt;[[ slug ]]&lt;/code&gt; form; if not,&#xA;completion still works for &lt;code&gt;[[slug]]&lt;/code&gt; and markata tolerates both.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;2-markdown-writing-mode-ftplugin-tiny-high-value&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;2. Markdown writing-mode ftplugin (tiny, high value)&lt;/span&gt; &lt;a href=&#34;#2-markdown-writing-mode-ftplugin-tiny-high-value&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;p&gt;&lt;code&gt;~/.config/nvim/after/ftplugin/markdown.lua&lt;/code&gt; (LazyVim loads &lt;code&gt;after/ftplugin&lt;/code&gt;&#xA;automatically — no spec needed):&lt;/p&gt;&#xA;&lt;pre class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;vim.opt_local&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;linebreak&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;      &lt;span class=&#34;c1&#34;&gt;-- wrap at word boundaries&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;vim.opt_local&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;breakindent&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;    &lt;span class=&#34;c1&#34;&gt;-- keep list indentation on wrapped lines&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;vim.opt_local&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;smoothscroll&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;   &lt;span class=&#34;c1&#34;&gt;-- undo the global `false` for prose&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;vim.opt_local&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;conceallevel&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;      &lt;span class=&#34;c1&#34;&gt;-- conceal markup for rendered view&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;vim.opt_local&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;concealcursor&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;nc&amp;#34;&lt;/span&gt;  &lt;span class=&#34;c1&#34;&gt;-- show raw text on the cursor line in insert&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;vim.opt_local&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;spell&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;          &lt;span class=&#34;c1&#34;&gt;-- redundant w/ LazyVim autocmd, explicit is fine&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;-- map j/k to gj/gk for wrapped-line navigation (markdown buffers only)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;vim.keymap&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;set&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;({&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;n&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;x&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;j&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;gj&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;buffer&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;remap&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;false&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;})&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;vim.keymap&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;set&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;({&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;n&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;x&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;k&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;gk&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;buffer&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;remap&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;false&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;})&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;3-render-markdown-tweaks-a-scripture-callout-checkbox-states&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;3. render-markdown tweaks + a &lt;/span&gt;&lt;code&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;scripture&lt;/span&gt;&lt;/code&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt; callout + checkbox states&lt;/span&gt; &lt;a href=&#34;#3-render-markdown-tweaks-a-scripture-callout-checkbox-states&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;pre class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;-- lua/plugins/markdown.lua&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;MeanderingProgrammer/render-markdown.nvim&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;opts&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;c1&#34;&gt;-- re-enable what LazyVim&amp;#39;s extra disables&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;n&#34;&gt;checkbox&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;enabled&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;unchecked&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;icon&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;󰄱 &amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;checked&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;icon&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;󰱒 &amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;custom&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &lt;span class=&#34;n&#34;&gt;praying&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;raw&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;[/]&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;rendered&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;󱑂 &amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;highlight&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;RenderMarkdownWarn&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;n&#34;&gt;callout&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;c1&#34;&gt;-- !!! scripture has no renderer; if you ever write&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;c1&#34;&gt;-- &amp;gt; [!scripture] in blog posts this makes it pretty.&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;scripture&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &lt;span class=&#34;n&#34;&gt;raw&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;[!SCRIPTURE]&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &lt;span class=&#34;n&#34;&gt;rendered&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;󰗶 Scripture&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &lt;span class=&#34;n&#34;&gt;highlight&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;RenderMarkdownHint&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;n&#34;&gt;anti_conceal&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;enabled&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;-- cursor line shows raw markdown&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Reality check: &lt;strong&gt;nothing renders &lt;code&gt;!!! scripture&lt;/code&gt; blocks in the editor&lt;/strong&gt; —&#xA;they&amp;rsquo;ll show as plain indented text (which is honest: markata is the only&#xA;real renderer). If visual distinction matters, &lt;code&gt;util.mini-hipatterns&lt;/code&gt; is&#xA;already enabled — add a pattern:&lt;/p&gt;&#xA;&lt;pre class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;-- inside the existing mini.hipatterns spec&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;local&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;hipatterns&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;require&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;mini.hipatterns&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;opts&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;highlighters&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;admonition&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;pattern&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;^!?%?+ +%w+.*&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;group&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Special&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;4-bullets-vim-for-prayer-request-checklists-one-line-high-value&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;4. bullets.vim for prayer-request checklists (one line, high value)&lt;/span&gt; &lt;a href=&#34;#4-bullets-vim-for-prayer-request-checklists-one-line-high-value&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;pre class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;bullets-vim/bullets.vim&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ft&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;markdown&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;code&gt;&amp;lt;leader&amp;gt;x&lt;/code&gt; toggles &lt;code&gt;- [ ]&lt;/code&gt;/&lt;code&gt;- [x]&lt;/code&gt;, &lt;code&gt;&amp;lt;CR&amp;gt;&lt;/code&gt;/&lt;code&gt;o&lt;/code&gt; continue list items,&#xA;&lt;code&gt;&amp;gt;&amp;gt;&lt;/code&gt;/&lt;code&gt;&amp;lt;&amp;lt;&lt;/code&gt; adjust nesting. Docs:&#xA;&lt;a href=&#34;https://github.com/bullets-vim/bullets.vim&#34;&gt;https://github.com/bullets-vim/bullets.vim&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h3 id=&#34;5-optional-heavier-lifts-only-if-felt-needed&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;5. Optional, heavier lifts (only if felt needed)&lt;/span&gt; &lt;a href=&#34;#5-optional-heavier-lifts-only-if-felt-needed&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;harper-ls&lt;/strong&gt; grammar checking, scoped to markdown:&lt;/p&gt;&#xA;&lt;pre class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;s2&#34;&gt;&amp;#34;neovim/nvim-lspconfig&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;opts&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;servers&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;n&#34;&gt;harper_ls&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;filetypes&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;markdown&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;settings&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;harper-ls&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;linters&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;sentence_capitalization&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;false&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;long_sentences&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;false&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;obsidian.nvim&lt;/strong&gt; for &lt;code&gt;[[&lt;/code&gt; completion + &lt;code&gt;:Obsidian backlinks&lt;/code&gt; — only if&#xA;marksman&amp;rsquo;s LSP completion of wikilinks proves insufficient. Keep&#xA;&lt;code&gt;ui.enable = false&lt;/code&gt; and continue using &lt;code&gt;pypeaday.daily&lt;/code&gt; + copier for note&#xA;creation. Expect to write a &lt;code&gt;wiki_link_func&lt;/code&gt; to emit &lt;code&gt;[[ slug ]]&lt;/code&gt; and a&#xA;&lt;code&gt;note_frontmatter_func&lt;/code&gt; matching markata&amp;rsquo;s frontmatter.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;bottom-line&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Bottom line&lt;/span&gt; &lt;a href=&#34;#bottom-line&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;The copier+telescope daily-notes system is already doing the job of an&#xA;entire plugin category (telekasten/zk/obsidian daily notes). The real gaps&#xA;are: marksman wikilink navigation (free, already enabled via lang.markdown),&#xA;rendered checkboxes/callouts (render-markdown, in the extra), checkbox&#xA;toggling (bullets.vim), wrapped-line ergonomics (a 6-line ftplugin), and&#xA;optional grammar checking (harper-ls). &lt;code&gt;!!!&lt;/code&gt; admonitions are a markata-side&#xA;concern — no editor plugin renders them; at most, highlight the marker line.&lt;/p&gt;&#xA;</content>
    <author>
      <name>Nic Payne</name>
      <uri>https://pype.dev</uri>
    </author>
  </entry>
  <entry>
    <title>OBC Networking</title>
    <id>https://pype.dev/obc-networking/</id>
    <updated>2026-05-16T12:26:46Z</updated>
    <published>2026-05-16T12:26:46Z</published>
    <link href="https://pype.dev/obc-networking/" rel="alternate" type="text/html"></link>
    <summary type="text">Spectrum brings internet in via coax to their modem. The modem feeds the Eero (acting as gateway, handing out 192.168.4.0/24). Downstream of the Eero is the...</summary>
    <content type="html">&lt;h2 id=&#34;network&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;network&lt;/span&gt; &lt;a href=&#34;#network&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Spectrum brings internet in via coax to their modem. The modem feeds the Eero&#xA;(acting as gateway, handing out 192.168.4.0/24). Downstream of the Eero is the&#xA;old Spectrum router still emitting an SSID on 192.168.1.0/24 — needs turning&#xA;off (requires Spectrum admin access).&lt;/p&gt;&#xA;&lt;h2 id=&#34;printer&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;printer&lt;/span&gt; &lt;a href=&#34;#printer&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;The printer was originally self-assigned static IP 192.168.1.165. After&#xA;switching to Eero DHCP (192.168.4.0/24), it now gets 192.168.4.25. The admin&#xA;desktop has a static rule configured for it, but the port config on the desktop&#xA;still had the old 192.168.1.165 address — had to update it to point to&#xA;192.168.4.25. The port name is stuck as IP_192.168.1.165 (couldn&amp;rsquo;t be changed).&lt;/p&gt;&#xA;&lt;p&gt;The DHCP-assigned 192.168.4.25 is subject to change — need to iron that out.&lt;/p&gt;&#xA;&lt;h3 id=&#34;admin-password-reset&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;admin password reset&lt;/span&gt; &lt;a href=&#34;#admin-password-reset&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;From the main menu, tap &lt;strong&gt;Counter&lt;/strong&gt; → &lt;strong&gt;Display Keyboard&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;Enter: &lt;code&gt;stop, 0, 0, stop, 0, 1&lt;/code&gt; via the on-display keypad&lt;/li&gt;&#xA;&lt;li&gt;A password prompt appears — enter: &lt;code&gt;9272 9272 9272 9272&lt;/code&gt; (9272 × 4)&lt;/li&gt;&#xA;&lt;li&gt;Tap &lt;strong&gt;End&lt;/strong&gt; (this is &amp;ldquo;OK&amp;rdquo;)&lt;/li&gt;&#xA;&lt;li&gt;From the new menu: &lt;code&gt;stop, 0&lt;/code&gt; on the on-display keypad, then &lt;code&gt;C&lt;/code&gt; on the keypad&lt;/li&gt;&#xA;&lt;li&gt;This opens the admin password reset menu&lt;/li&gt;&#xA;&lt;li&gt;Set new password to: &lt;code&gt;12345678&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;NOTE: I put a sticky note on the side of the printer with these instructions&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;h3 id=&#34;how-to-get-to-network-settings&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;how to get to network settings&lt;/span&gt; &lt;a href=&#34;#how-to-get-to-network-settings&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;p&gt;After the admin password reset, I navigated through the menus to find the&#xA;network settings and changed from static IP to &lt;strong&gt;Auto (DHCP)&lt;/strong&gt;. Didn&amp;rsquo;t write&#xA;down the exact path — next time I&amp;rsquo;m at the printer I need to document it.&lt;/p&gt;&#xA;&lt;h2 id=&#34;todo&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;todo&lt;/span&gt; &lt;a href=&#34;#todo&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; turn off &amp;ldquo;Olivet Bible Church&amp;rdquo; SSID on the old Spectrum router (requires admin portal access)&lt;/li&gt;&#xA;&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; wall-mount Eero 2 to extend range to kid&amp;rsquo;s wing&lt;/li&gt;&#xA;&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; consider getting a 4th Eero for Fellowship Hall coverage&lt;/li&gt;&#xA;&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; set the printer to a DHCP reservation on the Eero so its IP doesn&amp;rsquo;t change&lt;/li&gt;&#xA;&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; fix the shared password between OBC-Admin and OBC-Guest (currently the same)&lt;/li&gt;&#xA;&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; re-run the damaged ethernet cable from the networking closet to the sanctuary&#xA;&lt;ul&gt;&#xA;&lt;li&gt;once done, plug blue #4 into the switch, feeding Eero 3 at the tech bar&lt;/li&gt;&#xA;&lt;li&gt;Eero 3 can then feed Switch 3 for the tech bar devices&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Eero 3 might be able to do this without a new run depending on strength of their back-haul&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;topology&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;topology&lt;/span&gt; &lt;a href=&#34;#topology&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;figure&gt;&#xA;&lt;img src=&#34;https://cdn.statically.io/gh/pypeaday/images.pype.dev/main/blog-media/20260517133911_bfaa446e.png&#34; alt=&#34;20260517133911_bfaa446e.png&#34;&gt;&#xA;&lt;/figure&gt;&#xA;</content>
    <author>
      <name>Nic Payne</name>
      <uri>https://pype.dev</uri>
    </author>
  </entry>
  <entry>
    <title>DataOps</title>
    <id>https://pype.dev/dataops/</id>
    <updated>2026-05-07T06:33:03Z</updated>
    <published>2026-05-07T06:33:03Z</published>
    <link href="https://pype.dev/dataops/" rel="alternate" type="text/html"></link>
    <summary type="text">old: using-restic-to-backup-my-home-directory</summary>
    <content type="html">&lt;p&gt;old: &lt;a href=&#34;/using-restic-to-backup-my-home-directory/&#34; class=&#34;wikilink&#34; data-title=&#34;Using restic to backup my home directory&#34; data-description=&#34;I need to backup my personal $HOME to my NAS cause there&amp;#39;s a lot in there, and mostly my git projects with .env files all over. Plus some docker data&#34; data-date=&#34;2025-07-16&#34; data-preview=&#34;I need to backup my personal $HOME to my NAS cause there&amp;#39;s a lot in there, and mostly my git projects with .env files all over. Plus some docker data&#34;&gt;Using restic to backup my home directory&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;NOTE: zfs-ops is now in my &lt;a href=&#34;/forgejo/&#34; class=&#34;glossary-term&#34; title=&#34;self-hosted code forge - codeberg - fork of gittea&#34; data-hover-title=&#34;forgejo&#34;&gt;forgejo&lt;/a&gt; instance. ghost, ghost-vault, and my desktop clone from forgejo&#xA;NOTE: zfs-ops and homelab-mono/dataops are separate, they could be combined&lt;/p&gt;&#xA;&lt;h2 id=&#34;things-to-backup&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Things to Backup&lt;/span&gt; &lt;a href=&#34;#things-to-backup&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Desktop&#xA;&lt;ul&gt;&#xA;&lt;li&gt;projects + workspaces&#xA;sans .venv and other stuff&lt;/li&gt;&#xA;&lt;li&gt;home directory&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Server&#xA;&lt;ul&gt;&#xA;&lt;li&gt;zfs datasets in tank (nas, &lt;a href=&#34;/docker/&#34; class=&#34;glossary-term&#34; title=&#34;docker - container runtime&#34; data-hover-title=&#34;docker&#34;&gt;docker&lt;/a&gt;, etc.)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;aurora-desktop-disk-layout&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Aurora (Desktop) Disk Layout&lt;/span&gt; &lt;a href=&#34;#aurora-desktop-disk-layout&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;&lt;thead&gt;&#xA;&lt;tr&gt;&#xA;&lt;th&gt;Device&lt;/th&gt;&#xA;&lt;th&gt;Size&lt;/th&gt;&#xA;&lt;th&gt;Pool&lt;/th&gt;&#xA;&lt;th&gt;Datasets&lt;/th&gt;&#xA;&lt;th&gt;Mounts&lt;/th&gt;&#xA;&lt;th&gt;Role&lt;/th&gt;&#xA;&lt;/tr&gt;&#xA;&lt;/thead&gt;&#xA;&lt;tbody&gt;&#xA;&lt;tr&gt;&#xA;&lt;td&gt;Samsung 970 EVO NVMe&lt;/td&gt;&#xA;&lt;td&gt;500 GB&lt;/td&gt;&#xA;&lt;td&gt;—&lt;/td&gt;&#xA;&lt;td&gt;—&lt;/td&gt;&#xA;&lt;td&gt;&lt;code&gt;/&lt;/code&gt;, &lt;code&gt;/home&lt;/code&gt;, &lt;code&gt;/boot&lt;/code&gt;&lt;/td&gt;&#xA;&lt;td&gt;Boot + OS&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;tr&gt;&#xA;&lt;td&gt;Samsung 870 EVO SATA&lt;/td&gt;&#xA;&lt;td&gt;1 TB&lt;/td&gt;&#xA;&lt;td&gt;—&lt;/td&gt;&#xA;&lt;td&gt;—&lt;/td&gt;&#xA;&lt;td&gt;—&lt;/td&gt;&#xA;&lt;td&gt;VMs / scratch / future&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;tr&gt;&#xA;&lt;td&gt;Crucial BX500 SATA&lt;/td&gt;&#xA;&lt;td&gt;2 TB&lt;/td&gt;&#xA;&lt;td&gt;&lt;code&gt;docker-storage-zfs&lt;/code&gt; 🡒 &lt;code&gt;orbit&lt;/code&gt; (planned)&lt;/td&gt;&#xA;&lt;td&gt;&lt;code&gt;volumes/&lt;/code&gt;, &lt;code&gt;projects/&lt;/code&gt;&lt;/td&gt;&#xA;&lt;td&gt;&lt;code&gt;/var/docker-storage-zfs&lt;/code&gt;, &lt;code&gt;~/projects&lt;/code&gt;&lt;/td&gt;&#xA;&lt;td&gt;Primary — Docker volumes + projects&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;tr&gt;&#xA;&lt;td&gt;Seagate IronWolf HDD&lt;/td&gt;&#xA;&lt;td&gt;4 TB&lt;/td&gt;&#xA;&lt;td&gt;&lt;code&gt;depot&lt;/code&gt;&lt;/td&gt;&#xA;&lt;td&gt;&lt;code&gt;sanoid/&lt;/code&gt;, &lt;code&gt;restic/&lt;/code&gt;, &lt;code&gt;nvme-rsync/&lt;/code&gt;&lt;/td&gt;&#xA;&lt;td&gt;—&lt;/td&gt;&#xA;&lt;td&gt;Backup target&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;how&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;How&lt;/span&gt; &lt;a href=&#34;#how&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Desktop&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Will use 2TB disk, renaming docker-storage-zfs to orbin for kicks, I knew I&amp;rsquo;d regret naming it docker-storage-zfs anyways from &lt;a href=&#34;/desktop-crash-2026/&#34; class=&#34;wikilink&#34; data-title=&#34;Desktop Crash 2026&#34; data-description=&#34;Desktop crashed days ago, apparently my primary drive has been going bad for a while and eventually it just died.&#34; data-date=&#34;2026-04-22&#34; data-preview=&#34;Desktop crashed days ago, apparently my primary drive has been going bad for a while and eventually it just died.&#34;&gt;Desktop Crash 2026&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;projects&lt;/code&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;zfs dataset mounted to ~/projects&lt;/li&gt;&#xA;&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; will need to ignore it in the $HOME backup solution&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;docker-volumes&lt;/code&gt; will just be named &lt;code&gt;volumes&lt;/code&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;mounted to &lt;code&gt;/var/docker-storage-zfs/&lt;/code&gt;, might change mountpoint, only relevant to my compose files&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;$HOME&lt;/code&gt; directory is NOT zfs&#xA;&lt;ul&gt;&#xA;&lt;li&gt;rsync to a zfs dataset on an external SSD, same one that projects is on but the difference is that projects is mounted from there and the home directory is just backed up to it.&lt;/li&gt;&#xA;&lt;li&gt;from there backup to NAS just like projects&amp;hellip; so no matter what we&amp;rsquo;ll go from the 2 or 4 TB disk in my desktop to ghost:/tank/&amp;hellip; and then tank replicates to to the harbor zpool, and that&amp;rsquo;s all local in my house across 2 machines (desktop and NAS, NAS has tank and harbor)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Local backup to 4TB disk on device, pool will be &lt;code&gt;depot&lt;/code&gt; and I can setup &lt;code&gt;depot&lt;/code&gt; -&amp;gt; &lt;code&gt;tank&lt;/code&gt; if I find it relevant&amp;hellip;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;the redundancy to my NAS would give me only redundancy, maybe for off-site set something up from &lt;code&gt;depot&lt;/code&gt; -&amp;gt; &lt;code&gt;ghost-vault:/tank&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; ?? $HOME&lt;/li&gt;&#xA;&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; ?? projects&lt;/li&gt;&#xA;&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; ??docker volumes&#xA;&lt;ul&gt;&#xA;&lt;li&gt;specific volumes maybe?&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Server&#xA;&lt;ul&gt;&#xA;&lt;li&gt;tank -&amp;gt; harbor is local redundancy&lt;/li&gt;&#xA;&lt;li&gt;sanoid sends configured zfs datasets from tank -&amp;gt; ghost-vault&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;todos&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;TODOs&lt;/span&gt; &lt;a href=&#34;#todos&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; rename &lt;code&gt;docker-storage-zfs&lt;/code&gt; to &lt;code&gt;orbit&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; create &lt;code&gt;projects&lt;/code&gt; zfs dataset in &lt;code&gt;orbit&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; setup zfs dataset for home directory backup on &lt;code&gt;orbit&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; set mountpoint for projects&lt;/li&gt;&#xA;&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; set mountpoint for docker volumes dataset&lt;/li&gt;&#xA;&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; restart the ai stack containers after validating compose file volume path is correct&#xA;&lt;ul&gt;&#xA;&lt;li&gt;the &amp;ldquo;&amp;hellip;/volume/&amp;rdquo; part will probably be wrong&lt;/li&gt;&#xA;&lt;li&gt;just kept the mountpoint as /var/docker-storage-zfs/&lt;em&gt;for orbit/volumes/&lt;/em&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; setup appropriate backup (rsync, restic, etc.) for home directory to &lt;code&gt;orbit&lt;/code&gt;&amp;rsquo;s backup dataset&lt;/li&gt;&#xA;&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; setup sanoid snapshot schedule in zfs-ops&lt;/li&gt;&#xA;&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; setup syncoid script/systemd for &lt;code&gt;orbit&lt;/code&gt; to &lt;code&gt;depot&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; recover the rest of my projects from emergency or home-restore&lt;/li&gt;&#xA;&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; remove orbit/emergency&lt;/li&gt;&#xA;&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; remove orgit/home-restore&lt;/li&gt;&#xA;&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; remove orbit/volumes/mcphub&lt;/li&gt;&#xA;&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; remove orbit/volumes/tdarr maybe?&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;</content>
    <author>
      <name>Nic Payne</name>
      <uri>https://pype.dev</uri>
    </author>
  </entry>
  <entry>
    <title>Talking with Jason about Real Estate</title>
    <id>https://pype.dev/talking-with-jason-about-real-estate/</id>
    <updated>2026-04-28T14:12:53Z</updated>
    <published>2026-04-28T14:12:53Z</published>
    <link href="https://pype.dev/talking-with-jason-about-real-estate/" rel="alternate" type="text/html"></link>
    <summary type="text">license took 1 month, $1k, test, done. - hard part is getting started - no client base - no knowledge - 80% of agents fail - renewal rates show 80% don&#39;t...</summary>
    <content type="html">&lt;ul&gt;&#xA;&lt;li&gt;license took 1 month, $1k, test, done.&lt;/li&gt;&#xA;&lt;li&gt;hard part is getting started&#xA;&lt;ul&gt;&#xA;&lt;li&gt;no client base&lt;/li&gt;&#xA;&lt;li&gt;no knowledge&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;80% of agents fail&#xA;&lt;ul&gt;&#xA;&lt;li&gt;renewal rates show 80% don&amp;rsquo;t renew every 3 years (national &amp;ldquo;clock&amp;rdquo;)&lt;/li&gt;&#xA;&lt;li&gt;no leads&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Jason has a system for his agents&#xA;&lt;ul&gt;&#xA;&lt;li&gt;14 people work for him&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;advice&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Advice&lt;/span&gt; &lt;a href=&#34;#advice&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;find someone who is looking to grow agents&lt;/li&gt;&#xA;&lt;li&gt;commit or don&amp;rsquo;t do it, but don&amp;rsquo;t quit&lt;/li&gt;&#xA;&lt;li&gt;takes a month to learn&#xA;&lt;ul&gt;&#xA;&lt;li&gt;3 months to ramp up&lt;/li&gt;&#xA;&lt;li&gt;2 months to close first house&lt;/li&gt;&#xA;&lt;li&gt;first 6 months without a paycheck&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;takes 2 years to build it&lt;/li&gt;&#xA;&lt;li&gt;would never go back to the car business&lt;/li&gt;&#xA;&lt;li&gt;Century21 is in Appleton&#xA;&lt;ul&gt;&#xA;&lt;li&gt;jamesville&lt;/li&gt;&#xA;&lt;li&gt;altuna&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;</content>
    <author>
      <name>Nic Payne</name>
      <uri>https://pype.dev</uri>
    </author>
  </entry>
  <entry>
    <title>Desktop Setup 2026</title>
    <id>https://pype.dev/desktop-setup-2026/</id>
    <updated>2026-04-26T07:09:48Z</updated>
    <published>2026-04-26T07:09:48Z</published>
    <link href="https://pype.dev/desktop-setup-2026/" rel="alternate" type="text/html"></link>
    <summary type="text">after desktop-crash-2026 I need to set new things up, I&#39;ll track work here</summary>
    <content type="html">&lt;h2 id=&#34;overview&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Overview&lt;/span&gt; &lt;a href=&#34;#overview&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;after &lt;a href=&#34;/desktop-crash-2026/&#34; class=&#34;wikilink&#34; data-title=&#34;Desktop Crash 2026&#34; data-description=&#34;Desktop crashed days ago, apparently my primary drive has been going bad for a while and eventually it just died.&#34; data-date=&#34;2026-04-22&#34; data-preview=&#34;Desktop crashed days ago, apparently my primary drive has been going bad for a while and eventually it just died.&#34;&gt;Desktop Crash 2026&lt;/a&gt; I need to set new things up, I&amp;rsquo;ll track work here&lt;/p&gt;&#xA;&lt;h2 id=&#34;services&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Services&lt;/span&gt; &lt;a href=&#34;#services&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; NEED TO SETUP &lt;a href=&#34;/docker/&#34; class=&#34;glossary-term&#34; title=&#34;docker - container runtime&#34; data-hover-title=&#34;docker&#34;&gt;DOCKER&lt;/a&gt; WAIT FOR ZFS&lt;/li&gt;&#xA;&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; speakr&#xA;&lt;ul&gt;&#xA;&lt;li&gt;took it, and all the &amp;ldquo;ai&amp;rdquo; stack off &amp;lsquo;phantomlink&amp;rsquo;&lt;/li&gt;&#xA;&lt;li&gt;it came back with all my data after shifting it around disks&lt;/li&gt;&#xA;&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; need to reverify this after zfs dataset move&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; ollama&#xA;&lt;ul&gt;&#xA;&lt;li&gt;lazydocker + &lt;code&gt;E&lt;/code&gt; to pop a shell&lt;/li&gt;&#xA;&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; validate model migration from boot disk volumes path to zfs&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; whisper_asr&#xA;&lt;ul&gt;&#xA;&lt;li&gt;up just fine, speakr using it for transcription&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; open-webui&#xA;&lt;ul&gt;&#xA;&lt;li&gt;corrupted database, not sure what to do&lt;/li&gt;&#xA;&lt;li&gt;new instance&amp;hellip; just lose what I had&lt;/li&gt;&#xA;&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; dad-can-i-wear-this model&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; remove /var/docker-storage-zfs/volumes/ after ollama migration&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;ssh&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;SSH&lt;/span&gt; &lt;a href=&#34;#ssh&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Need to update my new ssh config and handles keys. I&amp;rsquo;ll use this as an&#xA;opportunity to not proliferate tons of keys on my machine. I was making new&#xA;keys per user per client machine per target machine&amp;hellip; I think I&amp;rsquo;ll just go&#xA;back to ssh&amp;rsquo;ing as myself and only generate keys per client. ie. from my&#xA;desktop I&amp;rsquo;ll only need 1 key except in the case of some of my boxes where I&#xA;setup a different user, so maybe I&amp;rsquo;ll be cleaning up the users on some things&#xA;as well&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; &lt;a href=&#34;/forgejo/&#34; class=&#34;glossary-term&#34; title=&#34;self-hosted code forge - codeberg - fork of gittea&#34; data-hover-title=&#34;forgejo&#34;&gt;forgejo&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; pihole (I dont think this is around anymore, it&amp;rsquo;s the .3 in my old ssh config)&lt;/li&gt;&#xA;&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; pihole-vpn (is this still around?)&lt;/li&gt;&#xA;&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; opnsense&#xA;&lt;ul&gt;&#xA;&lt;li&gt;update admin from dumbledore to nic?&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; ghost&lt;/li&gt;&#xA;&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; ghost-vault&lt;/li&gt;&#xA;&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; router (same config as opnsense, probably dont&amp;rsquo; need both)&lt;/li&gt;&#xA;&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; pi3 (this is the real pihole I think)&lt;/li&gt;&#xA;&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; rootpi3 (config for root user&amp;hellip; why not just sudo su when I login?)&lt;/li&gt;&#xA;&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; miix&lt;/li&gt;&#xA;&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; jetkvm&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;data&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Data&lt;/span&gt; &lt;a href=&#34;#data&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;see &lt;a href=&#34;/dataops/&#34; class=&#34;wikilink&#34; data-title=&#34;DataOps&#34; data-description=&#34;old: using-restic-to-backup-my-home-directory&#34; data-date=&#34;2026-05-07&#34; data-preview=&#34;old: using-restic-to-backup-my-home-directory&#34;&gt;DataOps&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;plans-to-build&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Plans to build&lt;/span&gt; &lt;a href=&#34;#plans-to-build&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;vibe code an observability thing that&#xA;&lt;ul&gt;&#xA;&lt;li&gt;runs a restore in a container&lt;/li&gt;&#xA;&lt;li&gt;run some &lt;a href=&#34;/kind/&#34; class=&#34;glossary-term&#34; title=&#34;kind - kubernetes in docker&#34; data-hover-title=&#34;kind&#34;&gt;kind&lt;/a&gt; of setup in that container at least for my shell and neovim and things&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;networking for babyblue-aurora -&amp;gt; aurora transition&lt;/li&gt;&#xA;&lt;li&gt;lament draft posts that are lost&lt;/li&gt;&#xA;&lt;li&gt;ssh keys&amp;hellip; lost .skm directory, look if it&amp;rsquo;s copied anywhere otherwise rotate keys and simplify&lt;/li&gt;&#xA;&lt;li&gt;workspace backup everynight&amp;hellip; abuse git for this&#xA;&lt;ul&gt;&#xA;&lt;li&gt;or rsync to external drive, you have zfs on aurora now&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;opencode to address neovim logs&lt;/li&gt;&#xA;&lt;li&gt;switch to zellij?&#xA;&lt;ul&gt;&#xA;&lt;li&gt;what would have to translate from tmux? probably quite a few keybindings&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;</content>
    <author>
      <name>Nic Payne</name>
      <uri>https://pype.dev</uri>
    </author>
  </entry>
  <entry>
    <title>Desktop Crash 2026</title>
    <id>https://pype.dev/desktop-crash-2026/</id>
    <updated>2026-04-22T05:57:40Z</updated>
    <published>2026-04-22T05:57:40Z</published>
    <link href="https://pype.dev/desktop-crash-2026/" rel="alternate" type="text/html"></link>
    <summary type="text">Desktop crashed days ago, apparently my primary drive has been going bad for a while and eventually it just died.</summary>
    <content type="html">&lt;h2 id=&#34;pc-crash&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;PC Crash&lt;/span&gt; &lt;a href=&#34;#pc-crash&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Desktop crashed days ago, apparently my primary drive has been going bad for a while and eventually it just died.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;live-booted to ubuntu server&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;found restic backup script to NAS&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;edited to be smaller, but did the backup to the NAS&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;rsync&amp;rsquo;d &lt;a href=&#34;/docker/&#34; class=&#34;glossary-term&#34; title=&#34;docker - container runtime&#34; data-hover-title=&#34;docker&#34;&gt;docker&lt;/a&gt; volumes to BX500 SSD which is a zfs pool&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;captured what I did on ghost at /home/nic/aurora-recovery-report.md and /home/nic/aurora-crash-disk-health-report.md&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;plan&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;PLAN&lt;/span&gt; &lt;a href=&#34;#plan&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; install &lt;sub&gt;ubunto&lt;/sub&gt; Aurora on 500 GB Samsung&lt;/li&gt;&#xA;&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; create zfs dataset for projects /tank/volumes/projects&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; which disk?&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; mount zfs dataset /tank/volumes/projects to /home/nic/projects&lt;/li&gt;&#xA;&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; zfs for home? probably not, keep home on ext4&lt;/li&gt;&#xA;&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; mount old home and sync directly&#xA;&lt;ul&gt;&#xA;&lt;li&gt;restoring old backups to 2TB disk, will selectively copy things over&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; jetkvm key rotation&#xA;&lt;ul&gt;&#xA;&lt;li&gt;I recovered the old id_rsa one but I&amp;rsquo;m going to simplify my ssh key usage, so sticking with my default key, updated this in the jetkvm /settings/advanced webui&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; restore restic backup to a temp location &lt;code&gt;/var/docker-storage-zfs/home-restore/&lt;/code&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; figure out what to keep&#xA;&lt;ul&gt;&#xA;&lt;li&gt;.skm (or consolidate keys)&lt;/li&gt;&#xA;&lt;li&gt;&lt;/li&gt;&#xA;&lt;li&gt;???&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; install windsurf in an ubuntu distrobox&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; &lt;code&gt;distroboc create UbuntuDev --image=ubuntu:22.04&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; &lt;a href=&#34;https://windsurf.com/download/editor?os=linux&#34;&gt;https://windsurf.com/download/editor?os=linux&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; manual install method from distrobox&lt;/li&gt;&#xA;&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; restore .windsurf? it&amp;rsquo;s super old&amp;hellip;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;outcome&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Outcome&lt;/span&gt; &lt;a href=&#34;#outcome&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;p&gt;This is going terribly&amp;hellip; blog post coming on what I should&amp;rsquo;ve done. What&amp;rsquo;s&#xA;actually happening is that I basically just lost everything on that desktop&#xA;except my homelab repo thank God&amp;hellip;&lt;/p&gt;&#xA;&lt;h2 id=&#34;plans-to-build&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Plans to build&lt;/span&gt; &lt;a href=&#34;#plans-to-build&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;vibe code an observability thing that&#xA;&lt;ul&gt;&#xA;&lt;li&gt;runs a restore in a container&lt;/li&gt;&#xA;&lt;li&gt;run some &lt;a href=&#34;/kind/&#34; class=&#34;glossary-term&#34; title=&#34;kind - kubernetes in docker&#34; data-hover-title=&#34;kind&#34;&gt;kind&lt;/a&gt; of setup in that container at least for my shell and neovim and things&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;networking for babyblue-aurora -&amp;gt; aurora transition&lt;/li&gt;&#xA;&lt;li&gt;lament draft posts that are lost&lt;/li&gt;&#xA;&lt;li&gt;ssh keys&amp;hellip; lost .skm directory, look if it&amp;rsquo;s copied anywhere otherwise rotate keys and simplify&lt;/li&gt;&#xA;&lt;li&gt;workspace backup everynight&amp;hellip; abuse git for this&#xA;&lt;ul&gt;&#xA;&lt;li&gt;or rsync to external drive, you have zfs on aurora now&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;opencode to address neovim logs&lt;/li&gt;&#xA;&lt;li&gt;switch to zellij?&#xA;&lt;ul&gt;&#xA;&lt;li&gt;what would have to translate from tmux? probably quite a few keybindings&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;I&amp;rsquo;ve been drowning in anxiety and depression over tech and AI, work and requirements, and my desktop SSD catastrophically failing while I didn&amp;rsquo;t have an up to date backup&amp;hellip; projects, ssh keys, ideas&amp;hellip; gone. And that&amp;rsquo;s ok, life goes on, so here&amp;rsquo;s my start of a hectic list of what I&amp;rsquo;m doing to setup my desktop again. This will turn into a small post, a sister-post to the one I need to write about how I should&amp;rsquo;ve recovered from my live boot environment&lt;/p&gt;&#xA;</content>
    <author>
      <name>Nic Payne</name>
      <uri>https://pype.dev</uri>
    </author>
  </entry>
  <entry>
    <title>Fixing Firefox Launcher on Kubuntu 22</title>
    <id>https://pype.dev/fixing-firefox-launcher-on-kubuntu-22/</id>
    <updated>2026-04-11T10:32:50Z</updated>
    <published>2026-04-11T10:32:50Z</published>
    <link href="https://pype.dev/fixing-firefox-launcher-on-kubuntu-22/" rel="alternate" type="text/html"></link>
    <summary type="text">Problem: Firefox installed but missing from KDE/Plasma app menu - Root cause: No .desktop launcher file — Firefox only worked from terminal - Solution:...</summary>
    <content type="html">&lt;ul&gt;&#xA;&lt;li&gt;Problem: Firefox installed but missing from KDE/Plasma app menu&lt;/li&gt;&#xA;&lt;li&gt;Root cause: No .desktop launcher file — Firefox only worked from terminal&lt;/li&gt;&#xA;&lt;li&gt;Solution: Created desktop entry with standard KDE fields&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;pre&gt;&lt;code&gt;&#xA;[Desktop Entry]&#xA;Version=1.0&#xA;Name=Firefox&#xA;GenericName=Web Browser&#xA;Comment=Web Browser&#xA;Exec=firefox %u&#xA;Terminal=false&#xA;Icon=firefox&#xA;Type=Application&#xA;Categories=Network;WebBrowser;&#xA;MimeType=x-scheme-handler/http;x-scheme-handler/https;&#xA;StartupNotify=true&#xA;StartupWMClass=firefox&#xA;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Location: ~/.local/share/applications/firefox.desktop (user-local, no sudo needed)&lt;/li&gt;&#xA;&lt;li&gt;Discovery step: Checked /usr/share/applications/ — empty for Firefox&lt;/li&gt;&#xA;&lt;li&gt;Applied fix: Ran kbuildsycoca5 to rebuild Plasma&amp;rsquo;s menu cache&lt;/li&gt;&#xA;&lt;li&gt;Result: Firefox now appears in app menu (Network category) and Alt+F2 autocomplete&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;</content>
    <author>
      <name>Nic Payne</name>
      <uri>https://pype.dev</uri>
    </author>
  </entry>
  <entry>
    <title>Florida Packing</title>
    <id>https://pype.dev/florida-packing/</id>
    <updated>2026-03-20T07:26:28Z</updated>
    <published>2026-03-20T07:26:28Z</published>
    <link href="https://pype.dev/florida-packing/" rel="alternate" type="text/html"></link>
    <summary type="text">girls don&#39;t need their sleeping bags - I don&#39;t need my BJJ stuff</summary>
    <content type="html">&lt;h2 id=&#34;packing-notes&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Packing notes&lt;/span&gt; &lt;a href=&#34;#packing-notes&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;girls don&amp;rsquo;t need their sleeping bags&lt;/li&gt;&#xA;&lt;li&gt;I don&amp;rsquo;t need my BJJ stuff&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;my-inventory&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;My inventory&lt;/span&gt; &lt;a href=&#34;#my-inventory&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;4 pairs sleeping underwear + shorts&#xA;= 4 t-shirts&lt;/li&gt;&#xA;&lt;li&gt;2 hoodies (1 light 1 heavy)&lt;/li&gt;&#xA;&lt;li&gt;orange 1/4 zip&lt;/li&gt;&#xA;&lt;li&gt;2 pair socks (more if forecast is sub 70)&lt;/li&gt;&#xA;&lt;li&gt;1 pair swimming trunks is probably enough&lt;/li&gt;&#xA;&lt;li&gt;2 shorts&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;</content>
    <author>
      <name>Nic Payne</name>
      <uri>https://pype.dev</uri>
    </author>
  </entry>
  <entry>
    <title>Oration on Agents and being crushed by responsibility</title>
    <id>https://pype.dev/oration-on-agents-and-being-crushed-by-responsibility/</id>
    <updated>2026-03-16T20:18:23Z</updated>
    <published>2026-03-16T20:18:23Z</published>
    <link href="https://pype.dev/oration-on-agents-and-being-crushed-by-responsibility/" rel="alternate" type="text/html"></link>
    <summary type="text">The intention of this note is to become a blog post:</summary>
    <content type="html">&lt;p&gt;The intention of this note is to become a blog post:&lt;/p&gt;&#xA;&lt;h2 id=&#34;raw-recording&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Raw Recording&lt;/span&gt; &lt;a href=&#34;#raw-recording&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Okay, this is the oration for a blog post, maybe an open letter of sorts, as I am just wrestling with my new job and the responsibilities that either are put on me or that I&amp;rsquo;ve put on myself as the world is changing.&#xA;And software development and software engineering and code writing&#xA;is just changing, thanks to AI, thanks to agents and their introduction into the corporate environment.&#xA;The internet is full of opinions and ideas that push and pull and prod people in different directions.&#xA;And every one of those ideas has contexts, which is necessary to keep in mind when filtering the ideas.&#xA;At a smaller startup where you can have a $200 a month Claude Code subscription for all of your engineers, that&amp;rsquo;s gonna&#xA;yield certain results that&amp;rsquo;s going to encourage and invite certain people into that space to use those tools, the clawed tools, or Gemini or Codex.&#xA;I work at a big company, Caterpillar.&#xA;We have a GitHub co-pilot, but through co-pilot we have access to the &lt;a href=&#34;/kind/&#34; class=&#34;glossary-term&#34; title=&#34;kind - kubernetes in docker&#34; data-hover-title=&#34;kind&#34;&gt;kind&lt;/a&gt; of frontier large language models.&#xA;From there, we have access to the co-pilot harness, whether it&amp;rsquo;s co-pilot CLI or the co-pilot integration with Visual Studio code, or the other IDEs like JetBrains, et cetera.&#xA;Out there in the world, he has certain opinions from some people.&#xA;You have people who are very pro agents like Steve Yeage, who has been a big influence to me over the last several months, as I&amp;rsquo;ve definitely jumped into the deep end of agentic coding.&#xA;I haven&amp;rsquo;t even really opened my IDD in months, except for small things that I want to do by hand.&#xA;enterprise grade work for the last three months or so and maybe a little longer has been fully written and produced by agents and i&amp;rsquo;ve been using AI to write code to some capacity or another since chad gpt came out really since like claude sonnet 3.5 but this thinking that i am doing is&#xA;It&amp;rsquo;s really supposed to be about me, so this blog post I want to write is me processing thoughts on the expectation change that&amp;rsquo;s placed on developers in certain environments for certain types of work.&#xA;I guess even that, like that sounds kind of vague.&#xA;So I can only speak to myself.&#xA;So I need to put a big annotation and plaster this blog post with this big caveat message that this is me, this is my experience, this is my position, and this is not a truth that is wide reaching.&#xA;It&amp;rsquo;s not any kind of prediction on the, you know,&#xA;the larger change happening in the world.&#xA;This is just where I am at.&#xA;So maybe for the post to make sense, I need to give a brief amount of history about me and my work.&#xA;I&amp;rsquo;m not a trained software engineer, but I&amp;rsquo;ve been, I guess I&amp;rsquo;ve been a pretty impressive asset in my employment.&#xA;I&amp;rsquo;ve been at Caterpillar for nine years, and in that nine years or over in the last several years, I&amp;rsquo;ve moonlit, moonlighted a little bit.&#xA;And at every place I&amp;rsquo;ve done any other amount of work, I&amp;rsquo;ve just consistently impressed people.&#xA;Now, this really just leads me to have more imposter syndrome because I know or I have learned what impresses people,&#xA;And it isn&amp;rsquo;t necessarily excellence, although I try to do things well and I want to solve problems and maintain the systems that I build to solve those problems.&#xA;But I don&amp;rsquo;t write the best code.&#xA;I&amp;rsquo;m not the smartest developer.&#xA;I don&amp;rsquo;t know the most.&#xA;I get to know the things I work with and I learn a lot and I work fast because I have&#xA;Not a super unique, but a rare ability to focus in, when the stars align, to focus and produce more than the next person.&#xA;Not every next person, but a lot of the next people, a lot of the people I work with, I outperform.&#xA;And that&amp;rsquo;s been true, or it has seemed true, from every review, pretty much every review I&amp;rsquo;ve ever received, that&amp;rsquo;s been true.&#xA;And as I&amp;rsquo;ve had that just personal truth be reflected in my work, it&amp;rsquo;s been enhanced with AI because I&amp;rsquo;ve been an early adopter and even as a, even as somewhat of a skeptic, like I&amp;rsquo;ve tried to maintain a posture of skepticism.&#xA;But since Opus 4.5,&#xA;Even though I might talk like a skeptic, I am leaning into agents hard.&#xA;And I am practicing my own harness engineering with my nexus project.&#xA;And I&amp;rsquo;m using it to do engineering work at Caterpillar that&amp;rsquo;s going into production for us, which is like data platform type of work.&#xA;It&amp;rsquo;s not custom, it&amp;rsquo;s not external customer facing.&#xA;It&amp;rsquo;s internal tooling, which is what I mostly built.&#xA;And the thing I&amp;rsquo;m really trying to wrap my head around, or I guess I&amp;rsquo;m trying to explain, is without AI, I was out producing a lot of people.&#xA;And with AI, you can produce just a shit ton of code.&#xA;And I&amp;rsquo;m trying to do that part well, but in my own gifts and curses of hyper focus and&#xA;Wanting to meet expectations and solve problems, I&amp;rsquo;m jumping into the new frontier very quickly.&#xA;But something I&amp;rsquo;ve noticed is that as I&amp;rsquo;ve produced a lot, people are just impressed.&#xA;And they&amp;rsquo;re not necessarily impressed with the excellence.&#xA;They&amp;rsquo;re impressed with how I talk about things.&#xA;They&amp;rsquo;re impressed with how much I do, and they&amp;rsquo;re impressed with the output they see.&#xA;But the result of a bunch of code isn&amp;rsquo;t all of the code itself.&#xA;And I haven&amp;rsquo;t read all the code I&amp;rsquo;ve produced with agents.&#xA;I&amp;rsquo;ve certainly tried to test most of it or had most of it tested.&#xA;But as I&amp;rsquo;ve sought to do this and as I&amp;rsquo;ve been working in this capacity of using agents very heavily, I just feel kind of torn.&#xA;in trusting the agents and in working with the agents in the ways that I think are appropriate, but also collaborating with other humans who are also using AI.&#xA;But are they using AI in a trustworthy way?&#xA;I don&amp;rsquo;t know, and I&amp;rsquo;m not sure how to validate it.&#xA;But my managers seem to think I know how to validate it, and they seem impressed with the work I do, and they seem impressed with my understanding of AI and agentic coding.&#xA;And so I feel all of this pressure to continue to be a top performer like I have been since before AI.&#xA;I feel a lot of pressure to, I don&amp;rsquo;t want to coach people in how I do things, but I&amp;rsquo;m being asked to coach people and how I do things because other people I work with notice me.&#xA;And I guess I&amp;rsquo;m almost, I&amp;rsquo;m just kind of tired of being noticed.&#xA;Because being noticed is not resulting in me becoming rich.&#xA;And money is not the most important thing.&#xA;But man, I&amp;rsquo;d love to just make enough money to fuck off for the rest of my life and never look at a computer ever again.&#xA;I would love&amp;hellip;&#xA;to not have to continue to maintain systems that I build or that other people build or to collaborate with people I don&amp;rsquo;t know, who might not even be long term.&#xA;That&amp;rsquo;s the one thing about Caterpillar is I&amp;rsquo;m working with a lot of contractors.&#xA;And nothing wrong with contracting, I&amp;rsquo;ve done that.&#xA;Nothing wrong with being a contractor, but&#xA;They could disappear at any moment, and all the code that they write, and even today, all the code that they prompt and have an agent right becomes my problem, my maintenance issue, my responsibility.&#xA;And it just is,&#xA;It&amp;rsquo;s just making me nervous to maintain and to understand and to continue to work under conditions that I can&amp;rsquo;t even tell if I&amp;rsquo;m making them for myself or if they&amp;rsquo;re real expectations.&#xA;Like if I fell off the face of the earth or if I dropped agentic coding entirely and I just went back to coding by hand completely, would my output continue to impress people today?&#xA;I don&amp;rsquo;t know the answer to that.&#xA;But I certainly wouldn&amp;rsquo;t be solving problems as fast, but would I be creating less problems?&#xA;Like I&amp;rsquo;ve solved a lot of problems in three months in my new role here with Forge.&#xA;But I don&amp;rsquo;t know how many problems I&amp;rsquo;ve created.&#xA;Only time will tell.&#xA;And the thing is, the guys I work with who are contractors, they might not be around long enough for time to tell, but because I&amp;rsquo;m not rich yet, I probably will be long enough, or be around long enough.&#xA;to experience those bugs and those problems that I don&amp;rsquo;t know about yet.&#xA;And I am just feeling so much pressure to be the best and to be the one to solve problems.&#xA;And I don&amp;rsquo;t know if I&amp;rsquo;m putting it on me or if cat&amp;rsquo;s putting it on me or if my project manager is putting it on me.&#xA;I&amp;rsquo;m just really struggling with the amount of responsibility I feel.&#xA;And I&amp;rsquo;m feeling frustrated about it because that amount of responsibility feels like it has scaled a lot with agents, with AI, but not my paycheck.&#xA;And in fact, my paycheck has gone down quite a bit.&#xA;And I&amp;rsquo;m not more relaxed.&#xA;I&amp;rsquo;m making about half of what I&amp;rsquo;ve made over the last couple of years.&#xA;And I&amp;rsquo;m not more relaxed.&#xA;I don&amp;rsquo;t feel freer.&#xA;I don&amp;rsquo;t feel like I have 50% of the responsibility that I did.&#xA;Cal Autonomy awoke something in me for purpose, but that feels like it&amp;rsquo;s already starting to die.&#xA;I&amp;rsquo;m already tired.&#xA;I&amp;rsquo;m, I don&amp;rsquo;t know about burnt out, but I&amp;rsquo;m tired.&#xA;I was reviewing some code that one of these contractors I&amp;rsquo;m working with.&#xA;It&amp;rsquo;s actually only an intern.&#xA;He&amp;rsquo;s not even a contractor.&#xA;He&amp;rsquo;s an intern.&#xA;And I&amp;rsquo;m reviewing a pull request of his.&#xA;And damn, it&amp;rsquo;s a lot of code.&#xA;And it looks somewhat useful.&#xA;But I don&amp;rsquo;t know exactly how to test it.&#xA;That&amp;rsquo;s not true actually, I do know how to test it, but I don&amp;rsquo;t own enough of our infrastructure at Caterpillar to test it easily.&#xA;So do I trust him?&#xA;Do I trust his prompt?&#xA;Do I trust his harness?&#xA;Do I trust the tests that I have already put in the code base to capture and block any breakages he might have introduced with this code for the code I&amp;rsquo;ve already been producing?&#xA;It&amp;rsquo;s different when I&amp;rsquo;m intimately familiar with the code base.&#xA;And I&amp;rsquo;ve been, I don&amp;rsquo;t know, definitely two other places at least where I had very intimate familiarity with the system and with the code and with the platform.&#xA;But the one I&amp;rsquo;m on right now is new, and I built it.&#xA;I built it with agents.&#xA;I built it to replace a thing that was never even working.&#xA;But I built it.&#xA;It&amp;rsquo;s mine.&#xA;It&amp;rsquo;s not somebody else&amp;rsquo;s.&#xA;It&amp;rsquo;s not that we&amp;rsquo;ll document it.&#xA;There&amp;rsquo;s a lot of documentation, but it&amp;rsquo;s all been agent produced, and even though I&amp;rsquo;ve reviewed it, it&amp;rsquo;s hard for me to organize it in the right way in a way that makes sense.&#xA;I&amp;rsquo;m just feeling so frustrated that it seems like, as the tools are getting better, as developers are able to move faster, it feels like I am expected to move faster.&#xA;but I&amp;rsquo;m not expected to make any more money.&#xA;I&amp;rsquo;m not expected to be compensated anymore for the increase in velocity and responsibility.&#xA;It&amp;rsquo;s almost like if I could produce, this metric is not gonna be real, but let&amp;rsquo;s just, for the sake of argument, make it up.&#xA;If I can write 30,000 lines of code in a year and make $100,000, I feel fine about that, whatever that number means.&#xA;But now I can actually produce 300,000 lines of code in a year.&#xA;I&amp;rsquo;m definitely producing 10 times more code than normal.&#xA;I don&amp;rsquo;t know if I&amp;rsquo;m doing 10 times more engineering, but I am making exactly the same amount of money.&#xA;And so why did I do it?&#xA;Why am I leaning into it so hard?&#xA;Why am I trying to still be the front runner to be on the bleeding edge when caterpillar is not going to pay anymore?&#xA;And I could go somewhere else.&#xA;I could go to Avant.&#xA;I could make more.&#xA;It&amp;rsquo;s a system I&amp;rsquo;m familiar with.&#xA;It&amp;rsquo;s even people I know.&#xA;And there&amp;rsquo;s AI there too.&#xA;But it&amp;rsquo;s a system I know.&#xA;It&amp;rsquo;s a system I know how to support and maintain.&#xA;And there&amp;rsquo;s not an expectation that I&amp;rsquo;m going to produce 10,000 lines of code this week.&#xA;But right now at Caterpillar, it feels like I am expected to write 10,000 lines of code this week.&#xA;And deploy it and maintain it and solve new problems.&#xA;All in an incredibly political and hectic, chaotic environment where there isn&amp;rsquo;t an appropriate amount of leadership over me.&#xA;I am the expert in AI in my group.&#xA;And that feels retarded.&#xA;I am the professional agentic engineer and that is just scary because I&amp;rsquo;m not good enough to be that.&#xA;I&amp;rsquo;m not Steve Yeagie, I&amp;rsquo;m not Simon Willison, I haven&amp;rsquo;t been a developer for 20 years.&#xA;I&amp;rsquo;m just a guy who learned some Python to solve some problems and happen to work faster than a lot of people and that reputation has really&#xA;It&amp;rsquo;s treated me well for sure.&#xA;And my disposition to problem solving has, up until recently, I felt like I had been, like I&amp;rsquo;ve been compensated well by my company, but then I&amp;rsquo;ve also been able to do more work outside of one job for me to feel the value of my own skills.&#xA;But now with AI changing everything,&#xA;Can I show you what&amp;rsquo;s on the back of my story?&#xA;It feels like I&amp;rsquo;ve given up the personal gains.&#xA;One second, Alia.&#xA;So I&amp;rsquo;ve given up personally realizing the benefit of my own skill.&#xA;And now I am like in a position where&#xA;Caterpillar, and only Caterpillar, is reaping the benefit of my new scheme in agentic engineering.&#xA;And I think that&amp;rsquo;s just ticking me off because I stayed with Catt to do something good for the world.&#xA;And I think we can do something good for the world.&#xA;But I&amp;rsquo;m tired.&lt;/p&gt;&#xA;&lt;h2 id=&#34;notes-and-summarization&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Notes and Summarization&lt;/span&gt; &lt;a href=&#34;#notes-and-summarization&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;h2 id=&#34;possible-titles&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Possible Titles&lt;/span&gt; &lt;a href=&#34;#possible-titles&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Agents, Responsibility, and the Cost of Going Faster&lt;/li&gt;&#xA;&lt;li&gt;The Irony of 10x&lt;/li&gt;&#xA;&lt;li&gt;More Output, Less Upside&lt;/li&gt;&#xA;&lt;li&gt;When AI Made Me Faster and Poorer&lt;/li&gt;&#xA;&lt;li&gt;Being Crushed by Responsibility&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;working-angle&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Working Angle&lt;/span&gt; &lt;a href=&#34;#working-angle&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;This should probably be a personal essay, not a manifesto about AI. The core tension:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;agents made me dramatically more productive&lt;/li&gt;&#xA;&lt;li&gt;that productivity increased the responsibility I carry&lt;/li&gt;&#xA;&lt;li&gt;the financial upside I used to realize personally has gone down, not up&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;section-stub-opening-scene&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Section Stub: Opening Scene&lt;/span&gt; &lt;a href=&#34;#section-stub-opening-scene&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Prompt:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Start with a concrete moment. Maybe reviewing a massive PR from the intern / contractor side of the system.&lt;/li&gt;&#xA;&lt;li&gt;What did I feel in that moment: confusion, dread, pressure, responsibility, skepticism?&lt;/li&gt;&#xA;&lt;li&gt;What was the specific thought: &amp;ldquo;I might own all of this later, even if I did not really produce or validate all of it myself.&amp;rdquo;&lt;/li&gt;&#xA;&lt;li&gt;Can I open with one sharp sentence that names the tension right away?&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Possible opener idea:&lt;/p&gt;&#xA;&lt;p&gt;&amp;ldquo;Agentic coding has made me faster than ever, but it has also made me feel responsible for more than I can honestly hold in my head.&amp;rdquo;&lt;/p&gt;&#xA;&lt;h2 id=&#34;section-stub-this-is-about-me-not-everyone&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Section Stub: This Is About Me, Not Everyone&lt;/span&gt; &lt;a href=&#34;#section-stub-this-is-about-me-not-everyone&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Prompt:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Add a strong caveat early: this is not prediction, prescription, or universal truth.&lt;/li&gt;&#xA;&lt;li&gt;Name my context: big company, internal platform work, political environment, mixed team ownership, frontier models via Copilot.&lt;/li&gt;&#xA;&lt;li&gt;What about my temperament matters here? Hyperfocus, initiative, problem solving, pressure sensitivity, desire to meet expectations.&lt;/li&gt;&#xA;&lt;li&gt;What would I want a reader to not mishear?&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;section-stub-who-i-was-before-agents&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Section Stub: Who I Was Before Agents&lt;/span&gt; &lt;a href=&#34;#section-stub-who-i-was-before-agents&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Prompt:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Briefly describe my work history and self-understanding.&lt;/li&gt;&#xA;&lt;li&gt;I am not formally trained, so what made me valuable anyway?&lt;/li&gt;&#xA;&lt;li&gt;What does it mean that people were impressed before AI too?&lt;/li&gt;&#xA;&lt;li&gt;Pull in relevant threads from &lt;code&gt;pages/blog/forge-ahead.md&lt;/code&gt;: prior projects, practical problem solving, being useful, learning systems by doing.&lt;/li&gt;&#xA;&lt;li&gt;What gifts do I think God gave me that made me effective before this shift?&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Questions to answer:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;What kind of worker was I before agents entered my workflow?&lt;/li&gt;&#xA;&lt;li&gt;What did I already know how to do well?&lt;/li&gt;&#xA;&lt;li&gt;What part of my value came from focus rather than brilliance?&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;section-stub-why-i-leaned-into-agentic-coding&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Section Stub: Why I Leaned Into Agentic Coding&lt;/span&gt; &lt;a href=&#34;#section-stub-why-i-leaned-into-agentic-coding&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Prompt:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Explain that I did not stumble into this accidentally; I chose to go hard.&lt;/li&gt;&#xA;&lt;li&gt;Why did it feel natural to me to adopt agents aggressively?&lt;/li&gt;&#xA;&lt;li&gt;What about the mission at Caterpillar Autonomy made the leap feel worth it?&lt;/li&gt;&#xA;&lt;li&gt;Pull in &lt;code&gt;pages/blog/cat-autonomy-2-0.md&lt;/code&gt;: I stayed because the work felt meaningful, not merely because it was interesting.&lt;/li&gt;&#xA;&lt;li&gt;Mention harness engineering / Nexus / experimentation if it helps show this was a deliberate investment.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Questions to answer:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Why did I trust this direction enough to reorganize my work around it?&lt;/li&gt;&#xA;&lt;li&gt;Was I chasing novelty, usefulness, recognition, mission, or all of the above?&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;section-stub-what-actually-changed&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Section Stub: What Actually Changed&lt;/span&gt; &lt;a href=&#34;#section-stub-what-actually-changed&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Prompt:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Describe the practical change in my day-to-day work.&lt;/li&gt;&#xA;&lt;li&gt;I am no longer mainly writing code line by line; I am directing, reviewing, testing, and integrating generated work.&lt;/li&gt;&#xA;&lt;li&gt;What changed about the quantity of output?&lt;/li&gt;&#xA;&lt;li&gt;What changed about how coworkers and managers perceived me?&lt;/li&gt;&#xA;&lt;li&gt;What changed about the kind of questions people started asking me?&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Questions to answer:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;When did I realize this was not just autocomplete, but a new mode of working?&lt;/li&gt;&#xA;&lt;li&gt;What does &amp;ldquo;enterprise-grade work fully written and produced by agents&amp;rdquo; actually mean in practice?&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;section-stub-the-hidden-cost-of-speed&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Section Stub: The Hidden Cost of Speed&lt;/span&gt; &lt;a href=&#34;#section-stub-the-hidden-cost-of-speed&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Prompt:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Write about the gap between output and understanding.&lt;/li&gt;&#xA;&lt;li&gt;I can ship more, but I do not always know the code as intimately as hand-written systems I built before.&lt;/li&gt;&#xA;&lt;li&gt;Testing is not the same as ownership.&lt;/li&gt;&#xA;&lt;li&gt;Documentation existing is not the same as confidence.&lt;/li&gt;&#xA;&lt;li&gt;What kinds of future problems does speed create?&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Questions to answer:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;What do I know I have not fully read?&lt;/li&gt;&#xA;&lt;li&gt;What kinds of bugs or maintenance traps am I afraid I am creating?&lt;/li&gt;&#xA;&lt;li&gt;What does it feel like to build something that works but still feels partially foreign?&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;section-stub-responsibility-without-clear-boundaries&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Section Stub: Responsibility Without Clear Boundaries&lt;/span&gt; &lt;a href=&#34;#section-stub-responsibility-without-clear-boundaries&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Prompt:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;This may be the emotional center before the money section.&lt;/li&gt;&#xA;&lt;li&gt;Describe the contractor / intern dynamic and why it intensifies the burden.&lt;/li&gt;&#xA;&lt;li&gt;Their output can become my long-term maintenance problem.&lt;/li&gt;&#xA;&lt;li&gt;The organization sees me as someone who understands AI and agents, so responsibility pools onto me.&lt;/li&gt;&#xA;&lt;li&gt;Ask whether the pressure is explicit or self-imposed, but note that the body feels it either way.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Questions to answer:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Who is actually accountable when AI-assisted code breaks six months from now?&lt;/li&gt;&#xA;&lt;li&gt;What does it mean to be treated like the local expert when I do not feel like one?&lt;/li&gt;&#xA;&lt;li&gt;Why is being noticed beginning to feel costly instead of rewarding?&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;section-stub-the-financial-irony&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Section Stub: The Financial Irony&lt;/span&gt; &lt;a href=&#34;#section-stub-the-financial-irony&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Prompt:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;State this clearly and concretely.&lt;/li&gt;&#xA;&lt;li&gt;For years, I realized more value from my output because I worked two jobs concurrently.&lt;/li&gt;&#xA;&lt;li&gt;Due to the new role, new responsibility, and the demands of agentic coding in this environment, I had to go down to one job.&lt;/li&gt;&#xA;&lt;li&gt;So the irony is: the tools make me dramatically more productive, but I personally realize less economic upside from my own gifts and skills than I did before.&lt;/li&gt;&#xA;&lt;li&gt;Keep this grounded and honest, not whiny.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Questions to answer:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;What exactly have I lost financially?&lt;/li&gt;&#xA;&lt;li&gt;Why does this feel bigger than &amp;ldquo;I want more money&amp;rdquo;?&lt;/li&gt;&#xA;&lt;li&gt;Where do the gains of AI go when an individual contributor gets faster?&lt;/li&gt;&#xA;&lt;li&gt;If I can now produce 10x more code, why does my life not feel lighter, freer, or better compensated?&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Possible thesis sentence:&lt;/p&gt;&#xA;&lt;p&gt;&amp;ldquo;Agentic coding increased the value I create at work, while decreasing the share of that value I personally get to realize.&amp;rdquo;&lt;/p&gt;&#xA;&lt;h2 id=&#34;section-stub-mission-meaning-and-fatigue&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Section Stub: Mission, Meaning, and Fatigue&lt;/span&gt; &lt;a href=&#34;#section-stub-mission-meaning-and-fatigue&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Prompt:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Reaffirm the good: this is meaningful work, and that matters to me.&lt;/li&gt;&#xA;&lt;li&gt;Tie back to autonomy, safety, and the reasons I stayed at Caterpillar.&lt;/li&gt;&#xA;&lt;li&gt;Then tell the truth: meaning does not cancel fatigue.&lt;/li&gt;&#xA;&lt;li&gt;What has already started to feel tired, dulled, or overdrawn in me?&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Questions to answer:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;What purpose did this role awaken in me?&lt;/li&gt;&#xA;&lt;li&gt;Why does that sense of purpose already feel threatened?&lt;/li&gt;&#xA;&lt;li&gt;How do I talk honestly about fatigue without pretending I am fully burned out if I am not sure?&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;section-stub-questions-i-cannot-yet-answer&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Section Stub: Questions I Cannot Yet Answer&lt;/span&gt; &lt;a href=&#34;#section-stub-questions-i-cannot-yet-answer&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Prompt:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Let the essay breathe here instead of forcing a neat conclusion.&lt;/li&gt;&#xA;&lt;li&gt;Gather the real unresolved questions.&lt;/li&gt;&#xA;&lt;li&gt;If I stopped using agents, would I still impress people?&lt;/li&gt;&#xA;&lt;li&gt;Would I solve fewer problems or create fewer future ones?&lt;/li&gt;&#xA;&lt;li&gt;Am I carrying real expectations or anticipated ones?&lt;/li&gt;&#xA;&lt;li&gt;Is this making me a better engineer, or just a faster source of output and responsibility?&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;section-stub-conclusion&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Section Stub: Conclusion&lt;/span&gt; &lt;a href=&#34;#section-stub-conclusion&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Prompt:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;End modestly, not with a manifesto.&lt;/li&gt;&#xA;&lt;li&gt;I am not anti-AI.&lt;/li&gt;&#xA;&lt;li&gt;I am not saying agents are bad.&lt;/li&gt;&#xA;&lt;li&gt;I am trying to tell the truth about what this transition has cost me personally.&lt;/li&gt;&#xA;&lt;li&gt;Land on the mismatch between speed, responsibility, and reward.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Possible closing direction:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;The tools are real.&lt;/li&gt;&#xA;&lt;li&gt;The gains are real.&lt;/li&gt;&#xA;&lt;li&gt;The responsibility is real.&lt;/li&gt;&#xA;&lt;li&gt;The redistribution of value is also real.&lt;/li&gt;&#xA;&lt;li&gt;I am still trying to understand what faithfulness looks like inside that tension.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;material-to-weave-in&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Material To Weave In&lt;/span&gt; &lt;a href=&#34;#material-to-weave-in&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;My lack of formal software engineering background&lt;/li&gt;&#xA;&lt;li&gt;My history of being useful by solving practical problems quickly&lt;/li&gt;&#xA;&lt;li&gt;My tendency toward hyperfocus and over-responsibility&lt;/li&gt;&#xA;&lt;li&gt;The shift from hand-written confidence to agent-mediated uncertainty&lt;/li&gt;&#xA;&lt;li&gt;The contractor / intern maintenance concern&lt;/li&gt;&#xA;&lt;li&gt;The drop from two incomes to one&lt;/li&gt;&#xA;&lt;li&gt;The irony that Cat benefits more from my increased output than I do&lt;/li&gt;&#xA;&lt;li&gt;The Christian framing around calling, providence, stewardship, and fatigue&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;things-to-avoid&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Things To Avoid&lt;/span&gt; &lt;a href=&#34;#things-to-avoid&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;sounding like I am making universal claims about all AI use&lt;/li&gt;&#xA;&lt;li&gt;sounding bitter without being specific&lt;/li&gt;&#xA;&lt;li&gt;centering line-count metrics too much without translating them into responsibility&lt;/li&gt;&#xA;&lt;li&gt;pretending I have fully landed on a conclusion&lt;/li&gt;&#xA;&lt;li&gt;making this a complaint post about coworkers instead of a reflection on burden and change&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;</content>
    <author>
      <name>Nic Payne</name>
      <uri>https://pype.dev</uri>
    </author>
  </entry>
  <entry>
    <title>I Was Saved From A Cult</title>
    <id>https://pype.dev/i-was-saved-from-a-cult/</id>
    <updated>2026-03-02T05:30:25Z</updated>
    <published>2026-03-02T05:30:25Z</published>
    <link href="https://pype.dev/i-was-saved-from-a-cult/" rel="alternate" type="text/html"></link>
    <summary type="text">I&#39;m getting coffee with a guy from church today, we&#39;re planning to swap some stories about how the Lord has worked in our lives in a few specific ways. He...</summary>
    <content type="html">&lt;h2 id=&#34;introduction&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Introduction&lt;/span&gt; &lt;a href=&#34;#introduction&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;I&amp;rsquo;m getting coffee with a guy from church today, we&amp;rsquo;re planning to swap some&#xA;stories about how the Lord has worked in our lives in a few specific ways. He&#xA;has some history in the New Age movement, and I&amp;rsquo;m very interested in that&#xA;story. My offering to him will be my own story, fairly short it might be, of&#xA;how God protected me from long-term involvement in a hypercharasmatic cult.&lt;/p&gt;&#xA;&lt;h2 id=&#34;theological-context&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Theological Context&lt;/span&gt; &lt;a href=&#34;#theological-context&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;This dove-tails well with Andrew&amp;rsquo;s sermon yesterday, noting that in many&#xA;Charasmatic circles the gift of the Holy Spirit becomes more important than the&#xA;person of Jesus who gives the Spirit, and who gives Salvation. This is the crux&#xA;of my own experience as well.&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-group&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;The Group&lt;/span&gt; &lt;a href=&#34;#the-group&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;The group was called &amp;ldquo;Wind and Fire Ministries&amp;rdquo; and they had their own purpose-built building out in the middle of nowhere,&#xA;but close enough for me to drive to. I grew up in Iowa, a 10 minute drive on&#xA;the interstate landed you pretty quick in the scene of any low-budget horror&#xA;movie. The building was definitely nice, there was even some land, but there&#xA;was nothing around it.&lt;/p&gt;&#xA;&lt;h2 id=&#34;how-i-got-involved&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;How I Got Involved&lt;/span&gt; &lt;a href=&#34;#how-i-got-involved&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;I barely remember how I got involved - a kid I was in high school with went there regularly and then one adult who helped out in my&#xA;church&amp;rsquo;s youth group did as well. I can still vividly remember him telling me&#xA;about an experience he had at this place - a &amp;ldquo;slayed in the spirit&amp;rdquo; &lt;a href=&#34;/kind/&#34; class=&#34;glossary-term&#34; title=&#34;kind - kubernetes in docker&#34; data-hover-title=&#34;kind&#34;&gt;kind&lt;/a&gt; of&#xA;experience.&lt;/p&gt;&#xA;&lt;h2 id=&#34;my-experience&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;My Experience&lt;/span&gt; &lt;a href=&#34;#my-experience&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;I was hungry, desperate even, for spiritual experiences and this&#xA;&amp;ldquo;ministry&amp;rdquo; was extremely welcoming and accessible. My parents didn&amp;rsquo;t know&#xA;anything about what went on there, and to be fair they didn&amp;rsquo;t do a ton of&#xA;ultra-weird stuff when I was there&amp;hellip; flag-waving and tongues were enough to&#xA;probably ruffle some fundie feathers. I never fell to the ground shaking or&#xA;spoke in tongues (not for lack of awkwardly trying upon the instruction of a&#xA;member there though). I remember going one night and staying for hours while&#xA;the head honcho was doing annointings with oil and I wanted to be annointed&#xA;because I wanted to speak in tongues because I wanted an &amp;ldquo;experience&amp;rdquo;. By God&amp;rsquo;s&#xA;grace I was never given a super emotional experience there - the emphasis was&#xA;always on gifts and supernatural things, not on the person and work of the Lord&#xA;Jesus&lt;/p&gt;&#xA;</content>
    <author>
      <name>Nic Payne</name>
      <uri>https://pype.dev</uri>
    </author>
  </entry>
  <entry>
    <title>Premarital Session 3 April 2026</title>
    <id>https://pype.dev/premarital-session-3-april-2026/</id>
    <updated>2026-02-26T05:14:37Z</updated>
    <published>2026-02-26T05:14:37Z</published>
    <link href="https://pype.dev/premarital-session-3-april-2026/" rel="alternate" type="text/html"></link>
    <summary type="text">To surface unspoken expectations and ground shared life; emotionally, spiritually, and physically, in service to the Lord and each other.</summary>
    <content type="html">&lt;h1 id=&#34;expectations-intimacy-and-shared-life&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Expectations, Intimacy, and Shared Life&lt;/span&gt;&lt;/h1&gt;&#xA;&lt;h2 id=&#34;purpose&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Purpose&lt;/span&gt; &lt;a href=&#34;#purpose&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;To surface unspoken expectations and ground shared life; emotionally, spiritually, and physically, in service to the Lord and each other.&lt;/p&gt;&#xA;&lt;h2 id=&#34;key-scriptures&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Key Scriptures&lt;/span&gt; &lt;a href=&#34;#key-scriptures&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;1 Corinthians 7:1–5; Hebrews 13:4; Proverbs 24:3–4; Ecclesiastes 4:9–12&lt;/p&gt;&#xA;&lt;div class=&#34;admonition note&#34;&gt;&#xA;&lt;p class=&#34;admonition-title&#34;&gt;1 Corinthians 7:1–5 (LEB)&lt;/p&gt;&#xA;&lt;p&gt;7Now concerning the things about which you wrote: “It is good for a man not to touch a woman.” 2 But because of sexual immorality, let each man have his own wife and let each woman have her own husband. 3 The husband must fulfill his obligation to his wife, and likewise also the wife to her husband. 4 The wife does not have authority over her own body, but her husband does. And likewise also the husband does not have authority over his own body, but his wife does. 5 Do not defraud one another, except perhaps by agreement, for a time, in order that you may devote yourselves to prayer, and then you should be together again, lest Satan tempt you because of your lack of self control.&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;admonition note&#34;&gt;&#xA;&lt;p class=&#34;admonition-title&#34;&gt;Hebrews 13:4&lt;/p&gt;&#xA;&lt;p&gt;Marriage must be held in honor by all, and the marriage bed be undefiled, because God will judge sexually immoral people and adulterers.&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;admonition note&#34;&gt;&#xA;&lt;p class=&#34;admonition-title&#34;&gt;Proverbs 24:3-4&lt;/p&gt;&#xA;&lt;p&gt;3 By wisdom a house is built,  and by understanding it is established.  4 And by knowledge, rooms are filled  with all riches, precious and pleasant.&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;admonition note&#34;&gt;&#xA;&lt;p class=&#34;admonition-title&#34;&gt;Ecclesiastes 4:9-12&lt;/p&gt;&#xA;&lt;p&gt;9 Two are better than the one, for they enjoy a better reward for their toil. 10 For if they fall, one will help up his companion. But pity the one who falls and there is no one to help him up. 11 Also if two lie together, they can keep each other warm. But how can one person be warm? 12 Although an assailant may overpower one person, two may withstand him. A threefold cord is not easily broken!&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;h2 id=&#34;themes&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Themes&lt;/span&gt; &lt;a href=&#34;#themes&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Many marital wounds come from unspoken expectations.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Not just unspoken, but a pattern of letting your expectations be unmet can lead to strife.&lt;/li&gt;&#xA;&lt;li&gt;It&amp;rsquo;s up to both people in the marriage to be on the lookout: remember, together you face unspoken expectations, you do not face each other&amp;rsquo;s expectations, be united&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Intimacy is covenantal and requires safety, communication, and grace.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;No one is safer to talk to than your spouse (within reason, I think there&amp;rsquo;s a place for men&amp;rsquo;s/women&amp;rsquo;s group &lt;a href=&#34;/kind/&#34; class=&#34;glossary-term&#34; title=&#34;kind - kubernetes in docker&#34; data-hover-title=&#34;kind&#34;&gt;kind&lt;/a&gt; of stuff, pastoral counseling, etc. but in general no one should be safer to share something with than your spouse)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Faithfulness is sustained through shared rhythms and priorities.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Patterns are powerful&lt;/li&gt;&#xA;&lt;li&gt;In our lives, I for sure notice when we slip into patterns of lack-of-intimacy or communication, and the longer you &amp;ldquo;get by&amp;rdquo; the easier it is to live that way&lt;/li&gt;&#xA;&lt;li&gt;&amp;ldquo;Missing something once is a mistake, missing something twice is the start of a new habit.&amp;rdquo; The point being that it takes work to communicate, and you should plan to communicate often. Missing a date, or an agreed-upon-time to talk about something once is just a mistake, but don&amp;rsquo;t let yourselves push off hard conversations (either together or individually)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;discussion-prompts&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Discussion Prompts&lt;/span&gt; &lt;a href=&#34;#discussion-prompts&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;expectations&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Expectations&lt;/span&gt; &lt;a href=&#34;#expectations&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;p&gt;What are you most looking forward to in daily married life?&lt;/p&gt;&#xA;&lt;p&gt;What concerns you about sharing life so closely?&lt;/p&gt;&#xA;&lt;h3 id=&#34;intimacy&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Intimacy&lt;/span&gt; &lt;a href=&#34;#intimacy&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;p&gt;How do you communicate needs, boundaries, and fears?&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;with great trust in your spouse&lt;/li&gt;&#xA;&lt;li&gt;openly, hopefully.&lt;/li&gt;&#xA;&lt;li&gt;do not assume the first thing said is what is meant, maybe you need to work through it together to figure out what one of you needs&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;How will you protect intimacy after marriage?&lt;/p&gt;&#xA;&lt;h3 id=&#34;shared-life&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Shared Life&lt;/span&gt; &lt;a href=&#34;#shared-life&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;p&gt;How do you approach money and financial decisions?&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Our approach: God gives us everything and we recognize that any ordered system requires a hierarchy of decision makers. I &amp;ldquo;make the final decision&amp;rdquo; which is often to trust what Kassia wants to do with some money. Kassia asks me about financial things, not for permission, but for information. Then from the information, we decide together and if we disagree it&amp;rsquo;s up to me to put my foot down on it or defer to her in our disagreement (both circumstances happen)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;What rhythms help you remain spiritually grounded?&lt;/p&gt;&#xA;&lt;h2 id=&#34;mentor-contribution&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Mentor Contribution&lt;/span&gt; &lt;a href=&#34;#mentor-contribution&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Share principles, not details, regarding intimacy and finances.&lt;/p&gt;&#xA;&lt;p&gt;Emphasize patience, mutual service, and long-term faithfulness.&lt;/p&gt;&#xA;</content>
    <author>
      <name>Nic Payne</name>
      <uri>https://pype.dev</uri>
    </author>
  </entry>
  <entry>
    <title>Premarital Session 2 - March 2026</title>
    <id>https://pype.dev/premarital-session-2-march-2026/</id>
    <updated>2026-02-26T05:14:05Z</updated>
    <published>2026-02-26T05:14:05Z</published>
    <link href="https://pype.dev/premarital-session-2-march-2026/" rel="alternate" type="text/html"></link>
    <summary type="text">To normalize conflict and equip the couple to handle it with humility, clarity, and grace.</summary>
    <content type="html">&lt;h1 id=&#34;communication-conflict-and-forgiveness&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Communication, Conflict, and Forgiveness&lt;/span&gt;&lt;/h1&gt;&#xA;&lt;h2 id=&#34;purpose&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Purpose&lt;/span&gt; &lt;a href=&#34;#purpose&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;To normalize conflict and equip the couple to handle it with humility, clarity, and grace.&lt;/p&gt;&#xA;&lt;h2 id=&#34;key-scriptures&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Key Scriptures&lt;/span&gt; &lt;a href=&#34;#key-scriptures&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;James 1:19–20; Proverbs 15:1; Ephesians 4:25–32; Matthew 18:21–35&lt;/p&gt;&#xA;&lt;p&gt;James 1:19–20 (LEB): 19 Understand this, my dear brothers: every person must&#xA;be quick to hear, slow to speak, slow to anger, 20 for human anger does not&#xA;accomplish the righteousness of God.&lt;/p&gt;&#xA;&lt;p&gt;Proverbs 15:1 (LEB): A soft answer will turn away wrath, but a word of trouble will stir anger.&lt;/p&gt;&#xA;&lt;p&gt;Ephesians 4:25–32 (LEB): 25 Therefore, putting aside the lie, speak truth each one of you with his neighbor, because we are members of one another. 26 Be angry and do not sin; do not let the sun set on your anger, 27 nor give place to the devil. 28 The one who steals must steal no longer, but instead must labor, working with his own hands what is good, so that he may have something to share with the one who has need. 29 No rotten word must proceed from your mouth, but only something good for the building up of the need, in order that it may give grace to those who hear, 30 and do not grieve the Holy Spirit of God, by whom you were sealed for the day of redemption. 31 All bitterness, and rage, and wrath, and clamor, and abusive speech, must be removed from you, together with all wickedness. 32 Become &lt;a href=&#34;/kind/&#34; class=&#34;glossary-term&#34; title=&#34;kind - kubernetes in docker&#34; data-hover-title=&#34;kind&#34;&gt;kind&lt;/a&gt; toward one another, compassionate, forgiving one another, just as also God in Christ has forgiven you.&lt;/p&gt;&#xA;&lt;p&gt;Matthew 18:21–35 (LEB): 21 Then Peter came up to him and said, “Lord, how many times will my brother sin against me and I will forgive him? Up to seven times?” 22 Jesus said to him, “I do not say to you up to seven times, but up to seventy times seven! 23 “For this reason the kingdom of heaven may be compared to a man—a king—who wanted to settle accounts with his slaves. 24 And when he began to settle them, someone was brought to him who owed ten thousand talents. 25 And because he did not have enough to repay it, the master ordered him to be sold, and his wife and his children and everything that he had, and to be repaid. 26 Then the slave threw himself to the ground and began to do obeisance to him, saying, ‘Be patient with me, and I will pay back everything to you!’ 27 So the master of that slave, because he had compassion, released him and forgave him the loan. 28 But that slave went out and found one of his fellow slaves who owed him a hundred denarii, and taking hold of him, he began to choke him, saying, ‘Pay back everything that you owe!’ 29 Then his fellow slave threw himself to the ground and began to implore him, saying, ‘Be patient with me and I will repay you!’ 30 But he did not want to, but rather he went and threw him into prison until he would repay what was owed. 31 So when his fellow slaves saw what had happened, they were extremely distressed, and went and reported to their master everything that had happened. 32 Then his master summoned him and said to him, ‘Wicked slave! I forgave you all that debt because you implored me! 33 Should you not also have shown mercy to your fellow slave as I also showed mercy to you?’ 34 And because he was angry, his master handed him over to the merciless jailers until he would repay everything that was owed. 35 So also my heavenly Father will do to you, unless each of you forgives his brother from your hearts!”&lt;/p&gt;&#xA;&lt;h2 id=&#34;themes&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Themes&lt;/span&gt; &lt;a href=&#34;#themes&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Conflict reveals the heart; it does not create sin.&lt;/p&gt;&#xA;&lt;p&gt;Patterns of hostility matter more than isolated arguments.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;But do not allow yourself to over-generalize in your frustration: &amp;ldquo;He always &amp;hellip;&amp;rdquo;, &amp;ldquo;She never &amp;hellip;&amp;rdquo;&lt;/li&gt;&#xA;&lt;li&gt;I probably struggled with this in reading far too much into arguments and taking Kassia&amp;rsquo;s frustration with me way too personally, creating hostility when there was only frustration&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;True repentance and forgiveness are essential marital practices.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Your stuck with your person, are you going to stay frustrated forever?&lt;/li&gt;&#xA;&lt;li&gt;Remind yourself of the gospel at every argument, &amp;ldquo;Jesus has forgiven me so much more than I am/feel owed by my spouse right now&amp;rdquo;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;discussion-prompts&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Discussion Prompts&lt;/span&gt; &lt;a href=&#34;#discussion-prompts&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;What is your instinct under tension: withdrawal, pursuit, defensiveness?&lt;/p&gt;&#xA;&lt;p&gt;What makes it hard for you to apologize or forgive?&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;For me it is correctness: I find it hard to apologize for trying to be correct (or understood) when that pursuit ends up hurting Kassia in some way&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;practical-emphasis&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Practical Emphasis&lt;/span&gt; &lt;a href=&#34;#practical-emphasis&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Listening before responding.&lt;/p&gt;&#xA;&lt;p&gt;Speaking clearly without accusation.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Classic advice to avoid &amp;ldquo;you&amp;rdquo; statements, use &amp;ldquo;I&amp;rdquo; statements&lt;/li&gt;&#xA;&lt;li&gt;I might recommend &amp;ldquo;reviewing&amp;rdquo; fights after the fact, as a team see what went well or poorly and what could use work for the next time&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Addressing issues at appropriate times.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Sometimes it has to wait a day&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;mentor-contribution&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Mentor Contribution&lt;/span&gt; &lt;a href=&#34;#mentor-contribution&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Share a recurring conflict you have faced and what you learned over time.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;dishes before bed&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;if you want something done, do it yourself pretty much&lt;/li&gt;&#xA;&lt;li&gt;you will also change over time&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;what it means to be a patient parent&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Emphasize growth, patience, and the importance of humility.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;/premarital-session-3-april-2026/&#34; class=&#34;wikilink&#34; data-title=&#34;Premarital Session 3 April 2026&#34; data-description=&#34;To surface unspoken expectations and ground shared life; emotionally, spiritually, and physically, in service to the Lord and each other.&#34; data-date=&#34;2026-02-26&#34; data-preview=&#34;To surface unspoken expectations and ground shared life; emotionally, spiritually, and physically, in service to the Lord and each other.&#34;&gt;Premarital Session 3 April 2026&lt;/a&gt;&lt;/p&gt;&#xA;</content>
    <author>
      <name>Nic Payne</name>
      <uri>https://pype.dev</uri>
    </author>
  </entry>
  <entry>
    <title>Premarital Session 1 - Feb 2026</title>
    <id>https://pype.dev/premarital-session-1-feb-2026/</id>
    <updated>2026-02-26T05:10:53Z</updated>
    <published>2026-02-26T05:10:53Z</published>
    <link href="https://pype.dev/premarital-session-1-feb-2026/" rel="alternate" type="text/html"></link>
    <summary type="text">To establish a biblical vision of marriage that shapes expectations, priorities, and endurance.</summary>
    <content type="html">&lt;h1 id=&#34;covenant-calling-and-friendship&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Covenant, Calling, and Friendship&lt;/span&gt;&lt;/h1&gt;&#xA;&lt;h2 id=&#34;purpose&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Purpose&lt;/span&gt; &lt;a href=&#34;#purpose&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;To establish a biblical vision of marriage that shapes expectations, priorities, and endurance.&lt;/p&gt;&#xA;&lt;h2 id=&#34;key-scriptures&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Key Scriptures&lt;/span&gt; &lt;a href=&#34;#key-scriptures&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Genesis 2:18–25; Malachi 2:14; Ephesians 5:31–32; Proverbs 18:22&lt;/p&gt;&#xA;&lt;div class=&#34;admonition note&#34;&gt;&#xA;&lt;p class=&#34;admonition-title&#34;&gt;Genesis 2:18-25&lt;/p&gt;&#xA;&lt;p&gt;18 Then the Lord God said, “It is not good for the man to be alone. I will&#xA;make a helper (עֵ֫זֶר |e-zer ) corresponding (נֶ֫גֶד | ne-ged) to him.” 19 The&#xA;Lord God formed out of the ground every wild animal and every bird of the&#xA;sky, and brought each to the man to see what he would call it. And whatever the&#xA;man called a living creature, that was its name. 20 The man gave names to all&#xA;the livestock, to the birds of the sky, and to every wild animal; but for the&#xA;man no helper was found corresponding to him. 21 So the Lord God caused a deep&#xA;sleep to come over the man, and he slept.&#xA;God took one of his ribs and closed the flesh at that place. 22 Then the Lord&#xA;God made the rib he had taken from the man into a woman and brought her to the&#xA;man. 23 And the man said:  This one, at last, is bone of my bone  and flesh of&#xA;my flesh;  this one will be called “woman,”  for she was taken from man.&#xA;24 This is why a man leaves his father and mother and bonds with his wife, and&#xA;they become one flesh. 25 Both the man and his wife were naked, yet felt no&#xA;shame.&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;admonition success&#34;&gt;&#xA;&lt;p class=&#34;admonition-title&#34;&gt;helper corresponding&lt;/p&gt;&#xA;&lt;p&gt;This is the helper opposite him - balance&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;admonition note&#34;&gt;&#xA;&lt;p class=&#34;admonition-title&#34;&gt;Malachi 2:14&lt;/p&gt;&#xA;&lt;p&gt;And you ask, “Why?” Because even though the Lord has been a witness between&#xA;you and the wife of your youth, you have acted treacherously against her. She&#xA;was your marriage partner and your wife by covenant.&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;admonition warning&#34;&gt;&#xA;&lt;p class=&#34;admonition-title&#34;&gt;God as the witness&lt;/p&gt;&#xA;&lt;p&gt;&amp;ldquo;the wife of your youth&amp;rdquo; Since a Jewish marriage was religious and involved a&#xA;covenant, God served as the witness (Mal 2:10). Thus, a Jewish man abandoning&#xA;his Jewish wife was tantamount to abandoning a vow to God Himself.&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;admonition note&#34;&gt;&#xA;&lt;p class=&#34;admonition-title&#34;&gt;Ephesians 5:31-32&lt;/p&gt;&#xA;&lt;p&gt;31 For this reason a man will leave his father and mother and be joined to&#xA;his wife, and the two will become one flesh. 32 This mystery is profound, but I&#xA;am talking about Christ and the church.&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;admonition note&#34;&gt;&#xA;&lt;p class=&#34;admonition-title&#34;&gt;Proverbs 18:22&lt;/p&gt;&#xA;&lt;p&gt;A man who finds a wife finds a good thing  and obtains favor from the Lord.&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;h2 id=&#34;themes&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Themes&lt;/span&gt; &lt;a href=&#34;#themes&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Marriage is covenantal, not consumerism sustained by feelings.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Serving your spouse is serving the Lord, as long as you both seek to serve&#xA;Jesus then you will naturally (since it&amp;rsquo;s a natural consequence of serving the&#xA;Lord) serve one another &lt;strong&gt;with the right heart&lt;/strong&gt;. Your service is not to each&#xA;other directly, it is to the Lord&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;God uses marriage as a primary means of sanctification.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Parenting is hard because you are forced to put your needs on hold for the&#xA;sake of your kids sometimes, but love makes it easier and kids are level 2.&#xA;Level 1 is your spouse - as you put your needs on hold for your spouse Jesus&#xA;changes your heart to help you really see that other person as equally as&#xA;valuable as yourself. Not necessarily &lt;strong&gt;more valuable&lt;/strong&gt;, that isn&amp;rsquo;t the point,&#xA;the point is that the ground is level at the foot of the cross, and daily&#xA;consistent rendering of service to your spouse &lt;strong&gt;as to the Lord&lt;/strong&gt; is a&#xA;transformative experience in the direction of seeing others how Jesus does.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Friendship and unity go right along with roles, logistics, and preferences.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Dedicate yourselves to the Lord and friendship will follow.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;discussion-prompts&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Discussion Prompts&lt;/span&gt; &lt;a href=&#34;#discussion-prompts&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;What do you believe makes a marriage “successful”?&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;calm and charitable disagreement&lt;/li&gt;&#xA;&lt;li&gt;established and respected order&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Devin will be the head&lt;/li&gt;&#xA;&lt;li&gt;the head of the body should probably listen to the body quite intensely before making decisions&amp;hellip;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;do people outside your marriage see Jesus as a crucial player in your&#xA;relationship or is all about the 2 of you? Culture would have it look like 2&#xA;puzzle pieces that fit together perfectly, but the reality is that a godly&#xA;marriage should frame the gospel. When people look at your relationship, they&#xA;shouldn&amp;rsquo;t just see 2 best friends in love, they should somewhat immediately see&#xA;and know about Jesus&amp;rsquo; role in your relationship&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Where do you think cultural ideas about marriage fall short?&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;literally everywhere&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;What promises feel most weighty to you as you think about your vows?&lt;/p&gt;&#xA;&lt;p&gt;How do you currently cultivate friendship and closeness?&lt;/p&gt;&#xA;&lt;h2 id=&#34;mentor-contribution&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Mentor Contribution&lt;/span&gt; &lt;a href=&#34;#mentor-contribution&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Share briefly how covenant faithfulness has shaped your own marriage.&lt;/p&gt;&#xA;&lt;p&gt;Share how unity is built intentionally over time, not assumed.&lt;/p&gt;&#xA;&lt;h2 id=&#34;reflection&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Reflection&lt;/span&gt; &lt;a href=&#34;#reflection&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;What do you hope God will form in you through marriage?&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;/premarital-session-2-march-2026/&#34; class=&#34;wikilink&#34; data-title=&#34;Premarital Session 2 - March 2026&#34; data-description=&#34;To normalize conflict and equip the couple to handle it with humility, clarity, and grace.&#34; data-date=&#34;2026-02-26&#34; data-preview=&#34;To normalize conflict and equip the couple to handle it with humility, clarity, and grace.&#34;&gt;Premarital Session 2 - March 2026&lt;/a&gt;&#xA;&lt;a href=&#34;/premarital-session-3-april-2026/&#34; class=&#34;wikilink&#34; data-title=&#34;Premarital Session 3 April 2026&#34; data-description=&#34;To surface unspoken expectations and ground shared life; emotionally, spiritually, and physically, in service to the Lord and each other.&#34; data-date=&#34;2026-02-26&#34; data-preview=&#34;To surface unspoken expectations and ground shared life; emotionally, spiritually, and physically, in service to the Lord and each other.&#34;&gt;Premarital Session 3 April 2026&lt;/a&gt;&lt;/p&gt;&#xA;</content>
    <author>
      <name>Nic Payne</name>
      <uri>https://pype.dev</uri>
    </author>
  </entry>
  <entry>
    <title>Cannalyze</title>
    <id>https://pype.dev/cannalyze/</id>
    <updated>2025-12-27T06:44:31Z</updated>
    <published>2025-12-27T06:44:31Z</published>
    <link href="https://pype.dev/cannalyze/" rel="alternate" type="text/html"></link>
    <summary type="text">A self-hostable habit tracker with special attention given to gardening habits</summary>
    <content type="html">&lt;p&gt;A self-hostable habit tracker with special attention given to gardening habits&lt;/p&gt;&#xA;</content>
    <author>
      <name>Nic Payne</name>
      <uri>https://pype.dev</uri>
    </author>
  </entry>
  <entry>
    <title>QR Harbor</title>
    <id>https://pype.dev/qr-harbor/</id>
    <updated>2025-12-26T05:13:22Z</updated>
    <published>2025-12-26T05:13:22Z</published>
    <link href="https://pype.dev/qr-harbor/" rel="alternate" type="text/html"></link>
    <summary type="text">The QR side of Digital Harbor</summary>
    <content type="html">&lt;p&gt;The QR side of &lt;a href=&#34;https://mydigitalharbor.com&#34;&gt;Digital Harbor&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;features&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Features&lt;/span&gt; &lt;a href=&#34;#features&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;self-service QR code generator&#xA;&lt;ul&gt;&#xA;&lt;li&gt;frames&lt;/li&gt;&#xA;&lt;li&gt;colors&lt;/li&gt;&#xA;&lt;li&gt;brandingicons&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;dynamic link resolution&lt;/li&gt;&#xA;&lt;li&gt;analytics&lt;/li&gt;&#xA;&lt;li&gt;simple API&#xA;&lt;ul&gt;&#xA;&lt;li&gt;see &lt;a href=&#34;https://hovercode.com/api/&#34;&gt;hovercode&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.qrcode-monkey.com/qr-code-api-with-logo/?utm_source=google_c&amp;amp;utm_medium=cpc&amp;amp;utm_campaign=&amp;amp;utm_content=&amp;amp;utm_term=qr%20monkey_e&amp;amp;gad_source=1&amp;amp;gad_campaignid=12510385649&amp;amp;gclid=Cj0KCQiAgbnKBhDgARIsAGCDdldVoC-8vXDpWy1MZ_u0M--AtiCfEF7-ZCGS6KeCGoQ2nWzK_RmaOmkaAru0EALw_wcB&#34;&gt;QR Code Monkey&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;infra&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Infra&lt;/span&gt; &lt;a href=&#34;#infra&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;dynamic qr codes&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;tunnel&lt;/li&gt;&#xA;&lt;li&gt;UI for 302s&lt;/li&gt;&#xA;&lt;li&gt;UI for QRs&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;</content>
    <author>
      <name>Nic Payne</name>
      <uri>https://pype.dev</uri>
    </author>
  </entry>
  <entry>
    <title>Mindful</title>
    <id>https://pype.dev/mindful/</id>
    <updated>2025-12-26T05:10:27Z</updated>
    <published>2025-12-26T05:10:27Z</published>
    <link href="https://pype.dev/mindful/" rel="alternate" type="text/html"></link>
    <summary type="text">Reminder and alarm app</summary>
    <content type="html">&lt;p&gt;Reminder and alarm app&lt;/p&gt;&#xA;&lt;h2 id=&#34;features&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Features&lt;/span&gt; &lt;a href=&#34;#features&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;quick templates&lt;/li&gt;&#xA;&lt;li&gt;works everywhere (mobile, desktop)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;todos&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;TODOs&lt;/span&gt; &lt;a href=&#34;#todos&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;premium sign-up&lt;/li&gt;&#xA;&lt;li&gt;test password reset&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;</content>
    <author>
      <name>Nic Payne</name>
      <uri>https://pype.dev</uri>
    </author>
  </entry>
  <entry>
    <title>Notifiq</title>
    <id>https://pype.dev/notifiq/</id>
    <updated>2025-12-26T05:08:54Z</updated>
    <published>2025-12-26T05:08:54Z</published>
    <link href="https://pype.dev/notifiq/" rel="alternate" type="text/html"></link>
    <summary type="text">Note: this began in event-details-updates-via-notifications-as-a-service and is the first iteration of this idea</summary>
    <content type="html">&lt;blockquote&gt;&#xA;&lt;p&gt;Note: this began in &lt;a href=&#34;/event-details-updates-via-notifications-as-a-service/&#34; class=&#34;wikilink&#34; data-title=&#34;Event Details Updates via Notifications as a Service&#34; data-description=&#34;I&amp;#39;ve moved these notes to soonish&#34; data-date=&#34;2025-09-02&#34; data-preview=&#34;I&amp;#39;ve moved these notes to soonish&#34;&gt;Event Details Updates via Notifications as a Service&lt;/a&gt; and is the first iteration of this idea&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;h2 id=&#34;projects&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Projects&lt;/span&gt; &lt;a href=&#34;#projects&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;/soonish/&#34; class=&#34;wikilink&#34; data-title=&#34;Soonish&#34; data-description=&#34;Personal events tracker dashboard&#34; data-date=&#34;2025-09-13&#34; data-preview=&#34;Personal events tracker dashboard&#34;&gt;Soonish&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;/mindful/&#34; class=&#34;wikilink&#34; data-title=&#34;Mindful&#34; data-description=&#34;Reminder and alarm app&#34; data-date=&#34;2025-12-26&#34; data-preview=&#34;Reminder and alarm app&#34;&gt;Mindful&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;docs&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Docs&lt;/span&gt; &lt;a href=&#34;#docs&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Consider the &lt;a href=&#34;https://support.pushover.net/i8-how-much-does-pushover-cost-is-there-a-subscription&#34;&gt;Pushover Docs&lt;/a&gt; for inspiration on notifiq docs as well&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;notes&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Notes&lt;/span&gt; &lt;a href=&#34;#notes&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;h2 id=&#34;use-cases&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Use Cases&lt;/span&gt; &lt;a href=&#34;#use-cases&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Event Details and updates&lt;/li&gt;&#xA;&lt;li&gt;IT ticketing system&lt;/li&gt;&#xA;&lt;li&gt;Volunteer reminder system&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;requirements&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Requirements&lt;/span&gt; &lt;a href=&#34;#requirements&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;a href=&#34;/apprise/&#34; class=&#34;glossary-term&#34; title=&#34;Apprise - github project that&amp;#39;s awesome about notifications&#34; data-hover-title=&#34;apprise&#34;&gt;apprise&lt;/a&gt; server/library&lt;/li&gt;&#xA;&lt;li&gt;CMS with users and roles + a database&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;updates need to POST to apprise&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;ol start=&#34;3&#34;&gt;&#xA;&lt;li&gt;notification backbone&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;SMS&lt;/li&gt;&#xA;&lt;li&gt;email (requires domain to offer a real service)&#xA;&lt;ul&gt;&#xA;&lt;li&gt;maybe managers could bring their own email server?&lt;/li&gt;&#xA;&lt;li&gt;no, just make it configurable - people setup the whole thing or they pay me&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;ol start=&#34;4&#34;&gt;&#xA;&lt;li&gt;infra&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Temporal instead of webserver patterns may lead to easier scaling&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;drafting&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Drafting&lt;/span&gt; &lt;a href=&#34;#drafting&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Been working in Windsurf with gpt-5 mostly on outlining the requirements for soonish&lt;/li&gt;&#xA;&lt;li&gt;My immediate goal is to have very detailed specs for the project to best utilize AI while building it without allowing the AI to drive any meaningful aspect of the development&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;ideas&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Ideas&lt;/span&gt; &lt;a href=&#34;#ideas&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;WorkOS for auth for B2B for soonish&lt;/li&gt;&#xA;&lt;li&gt;remind.notifiq.net/&lt;url&gt; as a usecase for soonish&#xA;&lt;ul&gt;&#xA;&lt;li&gt;configured reading times, so just get reminded at the next one&lt;/li&gt;&#xA;&lt;li&gt;phase 2 of this idea might be grabbing the content of the url and sending the notification with some of that content&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;message-priority&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Message Priority&lt;/span&gt; &lt;a href=&#34;#message-priority&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Events should have a priority of some &lt;a href=&#34;/kind/&#34; class=&#34;glossary-term&#34; title=&#34;kind - kubernetes in docker&#34; data-hover-title=&#34;kind&#34;&gt;kind&lt;/a&gt; so that business hours can be considered easily&lt;/li&gt;&#xA;&lt;li&gt;Should channels have similar types of preferences? I suppose I need to think about the different user flows&#xA;&lt;ul&gt;&#xA;&lt;li&gt;automated event makes critical ticket outside business hours - force update subscribers based on&amp;hellip;. whatever they&amp;rsquo;re subscribed with/desired channels&lt;/li&gt;&#xA;&lt;li&gt;event update is critical - all subscribers need to know on their desired channels&lt;/li&gt;&#xA;&lt;li&gt;those above 2 are the same&lt;/li&gt;&#xA;&lt;li&gt;event update is not critical - do the signal to everyone but channels take into consideration that it&amp;rsquo;s info only, so respect a business hours/quiet hours and notify during appropriate time.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;frontends&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Frontends&lt;/span&gt; &lt;a href=&#34;#frontends&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Use NiceGUI for a default events front end as a toy example to demonstrate notifiq use cases&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Use react for something like pager duty maybe - just to see what kind of things windsurf can do with it&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;competitors&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Competitors&lt;/span&gt; &lt;a href=&#34;#competitors&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://zenduty.com/pricing/&#34;&gt;zenduty&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;progress&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Progress&lt;/span&gt; &lt;a href=&#34;#progress&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;november-22-2025&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;November 22 2025&lt;/span&gt; &lt;a href=&#34;#november-22-2025&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;added auto-sub of creator to event (visibility)&#xA;&lt;ul&gt;&#xA;&lt;li&gt;auto subscription_selector made for autosub:default&lt;/li&gt;&#xA;&lt;li&gt;subscription_selector for event.tag == channel.tag as well&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;</content>
    <author>
      <name>Nic Payne</name>
      <uri>https://pype.dev</uri>
    </author>
  </entry>
  <entry>
    <title>Work Compensation Note</title>
    <id>https://pype.dev/work-compensation-note/</id>
    <updated>2025-12-01T05:57:40Z</updated>
    <published>2025-12-01T05:57:40Z</published>
    <link href="https://pype.dev/work-compensation-note/" rel="alternate" type="text/html"></link>
    <summary type="text">Anthony asked me what I needed to be happy and I didn&#39;t have a good answer, but I did ask for clarity on the chaos at work. I&#39;ve thought more about it and I...</summary>
    <content type="html">&lt;h2 id=&#34;work-compensation-notes&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Work Compensation Notes&lt;/span&gt; &lt;a href=&#34;#work-compensation-notes&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Anthony asked me what I needed to be happy and I didn&amp;rsquo;t have a good answer,&#xA;but I did ask for clarity on the chaos at work. I&amp;rsquo;ve thought more about it and&#xA;I think I&amp;rsquo;ll just be honest with him. I have moon-lit in the past, exceeded&#xA;expectations at Cat, and made double my salary. I don&amp;rsquo;t need to go back to&#xA;that, but I want to ask him what he makes in total comp and what the horizon&#xA;looks like for me at Cat. Not because I want prestige, but because I want to&#xA;prioritize my family and if I can give financial freedom to them (and myself)&#xA;&lt;strong&gt;much&lt;/strong&gt; earlier than if I was solo-loyal to Cat, that&amp;rsquo;s a real thing I need to&#xA;wrestle with. So my question for him will be how much of that gap can Cat close&#xA;over time?&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;</content>
    <author>
      <name>Nic Payne</name>
      <uri>https://pype.dev</uri>
    </author>
  </entry>
  <entry>
    <title>Advent 2025 Calendar</title>
    <id>https://pype.dev/advent-2025-calendar/</id>
    <updated>2025-12-01T05:57:40Z</updated>
    <published>2025-12-01T05:57:40Z</published>
    <link href="https://pype.dev/advent-2025-calendar/" rel="alternate" type="text/html"></link>
    <summary type="text">advent-isaiah-8-17</summary>
    <content type="html">&lt;h2 id=&#34;sunday&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Sunday&lt;/span&gt; &lt;a href=&#34;#sunday&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;pre&gt;&lt;code&gt;Nov. 30&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;pre&gt;&lt;code&gt;Isaiah&#xA;8:17&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;pre&gt;&lt;code&gt;As you look at your life or the world around you, where does&#xA;it seem like God is hiding his face? How do you hold onto&#xA;hope in those situations?&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;&lt;a href=&#34;/advent-isaiah-8-17/&#34; class=&#34;wikilink&#34; data-title=&#34;Advent - Isaiah 8:17&#34; data-description=&#34;!!! note &amp;#34;Isaiah 8:17&amp;#34;&#34; data-date=&#34;2025-12-01&#34; data-preview=&#34;!!! note &amp;#34;Isaiah 8:17&amp;#34;&#34;&gt;Advent - Isaiah 8:17&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;monday&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Monday&lt;/span&gt; &lt;a href=&#34;#monday&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;pre&gt;&lt;code&gt;Dec. 1&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;pre&gt;&lt;code&gt;Psalm&#xA;39:7&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;pre&gt;&lt;code&gt;What are you looking or hoping for in this Advent season?&#xA;Consider bringing those things to God.&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;&lt;a href=&#34;/advent-psalm-39-7/&#34; class=&#34;wikilink&#34; data-title=&#34;Advent - Psalm 39:7&#34; data-description=&#34;!!! note &amp;#34;Psalm 39:7&amp;#34;&#34; data-date=&#34;2025-12-01&#34; data-preview=&#34;!!! note &amp;#34;Psalm 39:7&amp;#34;&#34;&gt;Advent - Psalm 39:7&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;tuesday&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Tuesday&lt;/span&gt; &lt;a href=&#34;#tuesday&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;pre&gt;&lt;code&gt;Dec. 2&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;pre&gt;&lt;code&gt;Psalm&#xA;130:7&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;pre&gt;&lt;code&gt;How have you experienced God’s consistent,&#xA;dependable love in the past? How does that ground&#xA;your hope for the future?&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;&lt;a href=&#34;/advent-psalm-130-7/&#34; class=&#34;wikilink&#34; data-title=&#34;Advent - Psalm 130:7&#34; data-description=&#34;!!! note &amp;#34;Psalm 130:7&amp;#34;&#34; data-date=&#34;2025-12-02&#34; data-preview=&#34;!!! note &amp;#34;Psalm 130:7&amp;#34;&#34;&gt;Advent - Psalm 130:7&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;wednesday&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Wednesday&lt;/span&gt; &lt;a href=&#34;#wednesday&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;pre&gt;&lt;code&gt;Dec. 3&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;pre&gt;&lt;code&gt;Isaiah&#xA;40:31&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;pre&gt;&lt;code&gt;Consider the parts of life that feel most exhausting right&#xA;now. What could it look like to put your hope in God for&#xA;strength and direction?&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;h2 id=&#34;thursday&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Thursday&lt;/span&gt; &lt;a href=&#34;#thursday&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;pre&gt;&lt;code&gt;Dec. 4&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;pre&gt;&lt;code&gt;1 Peter&#xA;1:3&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;pre&gt;&lt;code&gt;How does Jesus’ resurrection from death shape your hope&#xA;for both the future and life today?&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;h2 id=&#34;friday&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Friday&lt;/span&gt; &lt;a href=&#34;#friday&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;pre&gt;&lt;code&gt;Dec. 5&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;pre&gt;&lt;code&gt;Romans&#xA;8:20-21&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;pre&gt;&lt;code&gt;What will life be like in God&#39;s fully liberated and healed&#xA;world? What will be the best part of that world?&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;h2 id=&#34;saturday&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Saturday&lt;/span&gt; &lt;a href=&#34;#saturday&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;pre&gt;&lt;code&gt;Dec. 6&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;pre&gt;&lt;code&gt;Romans&#xA;8:24-25&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;pre&gt;&lt;code&gt;What does it look like for you to actively but patiently&#xA;wait for God right now?&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;pre&gt;&lt;code&gt;Watch the Hope Video&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;pre&gt;&lt;code&gt;DAY VERSE REFLECTION QUESTION&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;h2 id=&#34;sunday-1&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Sunday&lt;/span&gt; &lt;a href=&#34;#sunday-1&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;pre&gt;&lt;code&gt;Dec. 7&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;pre&gt;&lt;code&gt;Isaiah&#xA;26:3&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;pre&gt;&lt;code&gt;What situations of conflict are you currently facing?&#xA;Where are you struggling to find internal peace?&#xA;Consider inviting God into those situations.&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;h2 id=&#34;monday-1&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Monday&lt;/span&gt; &lt;a href=&#34;#monday-1&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;pre&gt;&lt;code&gt;Dec. 8&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;pre&gt;&lt;code&gt;Isaiah&#xA;9:6-7&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;pre&gt;&lt;code&gt;As you reflect on your relationships with others and the&#xA;state of the world, how does God’s promise to bring&#xA;unending peace among all humankind make you feel?&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;h2 id=&#34;tuesday-1&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Tuesday&lt;/span&gt; &lt;a href=&#34;#tuesday-1&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;pre&gt;&lt;code&gt;Dec. 9&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;pre&gt;&lt;code&gt;Zechariah 9:9-10&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;pre&gt;&lt;code&gt;How is God’s promised king different from the rulers of&#xA;this world, who often bring “peace” through domination&#xA;and violence?&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;h2 id=&#34;wednesday-1&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Wednesday&lt;/span&gt; &lt;a href=&#34;#wednesday-1&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;pre&gt;&lt;code&gt;Dec. 10&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;pre&gt;&lt;code&gt;John&#xA;16:33&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;pre&gt;&lt;code&gt;What do you think Jesus means when he says that he has&#xA;&amp;quot;overcome the world?&amp;quot; How might that understanding bring&#xA;peace during times of trouble?&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;h2 id=&#34;thursday-1&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Thursday&lt;/span&gt; &lt;a href=&#34;#thursday-1&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;pre&gt;&lt;code&gt;Dec. 11&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;pre&gt;&lt;code&gt;Colossians 1:19-20&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;pre&gt;&lt;code&gt;When Paul says “all things” here, he means everything God&#xA;created, including you. How does it feel to know that God is&#xA;reconciling everything to himself?&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;h2 id=&#34;friday-1&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Friday&lt;/span&gt; &lt;a href=&#34;#friday-1&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;pre&gt;&lt;code&gt;Dec. 12&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;pre&gt;&lt;code&gt;&#xA;Ephesians 2:14-15&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;pre&gt;&lt;code&gt;Where in your world are peacemakers needed right now?&#xA;What might it look like to bring Jesus’ kind of peace to&#xA;these places?&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;h2 id=&#34;saturday-1&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Saturday&lt;/span&gt; &lt;a href=&#34;#saturday-1&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;pre&gt;&lt;code&gt;Dec. 13&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;pre&gt;&lt;code&gt;Ephesians&#xA;4:3&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;pre&gt;&lt;code&gt;What might it look like for us to “keep the unity of the Spirit”&#xA;as agents of God’s peace today?&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;pre&gt;&lt;code&gt;Watch the Peace Video&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;pre&gt;&lt;code&gt;DAY VERSE REFLECTION QUESTION&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;h2 id=&#34;sunday-2&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Sunday&lt;/span&gt; &lt;a href=&#34;#sunday-2&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;pre&gt;&lt;code&gt;Dec. 14&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;pre&gt;&lt;code&gt;Psalm 105:43&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;pre&gt;&lt;code&gt;The ancient Israelites experienced inexpressible joy when&#xA;God brought them out of slavery in Egypt. When in your life&#xA;have you experienced moments of inexpressible joy?&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;h2 id=&#34;monday-2&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Monday&lt;/span&gt; &lt;a href=&#34;#monday-2&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;pre&gt;&lt;code&gt;Dec. 15&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;pre&gt;&lt;code&gt;Isaiah 51:3&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;pre&gt;&lt;code&gt;What would it be like for all of the broken-down, desolate&#xA;places in your community to be made new, like a&#xA;flourishing garden?&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;h2 id=&#34;tuesday-2&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Tuesday&lt;/span&gt; &lt;a href=&#34;#tuesday-2&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;pre&gt;&lt;code&gt;Dec. 16&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;pre&gt;&lt;code&gt;Luke 2:10-11&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;pre&gt;&lt;code&gt;How do you think you would feel if your people had been&#xA;suffering under foreign rule for centuries and you saw an&#xA;angel appear, announcing that your long-awaited king&#xA;had finally come?&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;h2 id=&#34;wednesday-2&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Wednesday&lt;/span&gt; &lt;a href=&#34;#wednesday-2&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;pre&gt;&lt;code&gt;Dec. 17&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;pre&gt;&lt;code&gt;John 15:10-11&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;pre&gt;&lt;code&gt;What’s the difference between commanding people with a&#xA;motivation to control them and commanding people with a&#xA;motivation to bless them and fill their lives with joy? How do&#xA;Jesus’ commands bring joy?&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;h2 id=&#34;thursday-2&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Thursday&lt;/span&gt; &lt;a href=&#34;#thursday-2&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;pre&gt;&lt;code&gt;Dec. 18&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;pre&gt;&lt;code&gt;Matthew 5:11-12&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;pre&gt;&lt;code&gt;What’s your first impulse when you’re insulted or&#xA;persecuted? Why do you think Jesus tells us to rejoice&#xA;when people mistreat us for following his ways?&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;h2 id=&#34;friday-2&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Friday&lt;/span&gt; &lt;a href=&#34;#friday-2&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;pre&gt;&lt;code&gt;Dec. 19&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;pre&gt;&lt;code&gt;2 Corinthians&#xA;6:10&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;pre&gt;&lt;code&gt;When we face difficult circumstances, how can we hold&#xA;both joy and grief together?&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;h2 id=&#34;saturday-2&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Saturday&lt;/span&gt; &lt;a href=&#34;#saturday-2&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;pre&gt;&lt;code&gt;Dec. 20&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;pre&gt;&lt;code&gt;Romans 15:13&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;pre&gt;&lt;code&gt;As God fills us with hope, that hope spills out onto others.&#xA;What words or actions could you offer in order to give&#xA;hope to others?&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;pre&gt;&lt;code&gt;Watch the Joy Video&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;pre&gt;&lt;code&gt;DAY VERSE REFLECTION QUESTION&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;h2 id=&#34;sunday-3&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Sunday&lt;/span&gt; &lt;a href=&#34;#sunday-3&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;pre&gt;&lt;code&gt;Dec. 21&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;pre&gt;&lt;code&gt;Mark 12:29-30&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;pre&gt;&lt;code&gt;What do you think it looks like to love God with everything&#xA;you’ve got, including your strength, affection, intellect, and&#xA;entire being?&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;h2 id=&#34;monday-3&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Monday&lt;/span&gt; &lt;a href=&#34;#monday-3&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;pre&gt;&lt;code&gt;Dec. 22&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;pre&gt;&lt;code&gt;Mark&#xA;12:29-31&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;pre&gt;&lt;code&gt;How does loving your neighbor as yourself relate&#xA;to loving God?&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;h2 id=&#34;tuesday-3&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Tuesday&lt;/span&gt; &lt;a href=&#34;#tuesday-3&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;pre&gt;&lt;code&gt;Dec. 23&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;pre&gt;&lt;code&gt;Luke 6:35&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;pre&gt;&lt;code&gt;When you read about God being kind to ungrateful and&#xA;wicked people, how do you feel?&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;h2 id=&#34;wednesday-3&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Wednesday&lt;/span&gt; &lt;a href=&#34;#wednesday-3&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;pre&gt;&lt;code&gt;Dec. 24&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;pre&gt;&lt;code&gt;1 John 4:8-9&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;pre&gt;&lt;code&gt;What do you think it means when the Bible says&#xA;God not only acts in love but is love?&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;h2 id=&#34;thursday-3&#34;&gt;&lt;span class=&#34;heading-wear-glyph&#34;&gt;Thursday&lt;/span&gt; &lt;a href=&#34;#thursday-3&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;pre&gt;&lt;code&gt;Dec. 25&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;pre&gt;&lt;code&gt;1 John 4:17&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;pre&gt;&lt;code&gt;How would you describe the difference between Jesus’&#xA;way of love and the common understanding of love as&#xA;something you can fall in or out of?&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;pre&gt;&lt;code&gt;Watch the Love Video&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;</content>
    <author>
      <name>Nic Payne</name>
      <uri>https://pype.dev</uri>
    </author>
  </entry>
</feed>