diff --git a/content/posts/oh-no-git-send-email/index.md b/content/posts/oh-no-git-send-email/index.md
new file mode 100644
index 0000000..06bbbdd
--- /dev/null
+++ b/content/posts/oh-no-git-send-email/index.md
@@ -0,0 +1,131 @@
++++
+date = "2022-04-22"
+draft = false
+path = "/blog/oh-no-git-send-email"
+tags = ["git", "tools"]
+title = "Oh no, `git send-email`"
++++
+
+Say you have to contribute to some boomer project that doesn't believe in
+GitHub or GitLab or Gitea or <...> which would allow for just pushing some
+changes and filing a pull request. Instead, they want an *email*. Gross.
+
+For those who are unfamiliar with the email-patch infrastructure, git is
+*extremely* picky about emails being the exact format it likes and not getting
+modified at all by the client. This means that in practice, you need to send
+your patch emails using `git send-email` as your email client.
+
+The patch-emailing features of git are some of its most infamous for poor
+usability, which is saying something, because git as a whole is known for being
+hard to use.
+
+Theoretically, (by someone who made their own git
+source hosting service that strangely uses emails to submit patches) will tell
+you how to set it up. Well, except if `git send-email` has other ideas: it
+would not send through my email provider for reasons that must have been a bug:
+I seem to recall it was something to do with either a TLS or SMTP
+implementation being broken.
+
+I ended up needing to use a separate *Mail Transfer Agent* (SMTP-speak for
+"SMTP client") and plumb it into git. For this, I used `msmtp`.
+
+{% codesample(desc="`~/.msmtprc`") %}
+# Used to identify which account you are using in the msmtp command line
+account myaccountname
+
+# Tunneled-TLS email configuration. Probably correct for most modern servers,
+# but check your email provider documentation. This is correct for migadu.
+
+host smtp.migadu.com
+port 465
+tls on
+tls_starttls off
+auth on
+user user@example.com
+
+# From address on the envelope. Probably your email, but not necessarily
+# (note that this is distinct from the "from" address in the message body that
+# will be shown to recipients. it needs to match the address subscribed to the
+# mailing list)
+from listsubscriber@example.com
+
+# Use kwallet-query to get the password because kwallet does not support the
+# freedesktop secrets protocol
+# "mail" is the folder on the left hand side of the "Wallet Manager"
+# and user@example.com is the name of the item
+passwordeval kwallet-query -r user@example.com kdewallet -f mail
+{% end %}
+
+Then configure git (I keep this in `~/.gitconfig` as I don't really want to
+check it in for spam reasons, whereas most of my git config is checked in and
+stored at `~/.config/git/config`):
+
+{% codesample(desc="`~/.gitconfig`") %}
+[sendemail]
+ sendmailcmd = /usr/bin/msmtp
+ smtpserveroption = -a
+ smtpserveroption = myaccountname
+ confirm = always
+{% end %}
+
+Finally, you can send an email:
+
+```
+/tmp/nya » git init
+Initialized empty Git repository in /tmp/nya/.git/
+
+/tmp/nya - [main] » echo nyaa > README.md
+/tmp/nya - [main●] » git add -A
+/tmp/nya - [main●] » git commit -m 'initial commit'
+[main (root-commit) 5e2e44d] initial commit
+ 1 file changed, 1 insertion(+)
+ create mode 100644 README.md
+
+/tmp/nya - [main] » echo nyaaaaaaaaaaaaaaaaaaaaa >> README.md
+
+/tmp/nya - [main●] » git commit -am 'more nya'
+[main 3df1f2d] more nya
+ 1 file changed, 1 insertion(+)
+
+# NOTE: you probably want to use --compose to write a message to include with
+# your patch. You can also use --dry-run to do a dry run.
+/tmp/nya - [main] » git send-email --to='somepoorsoul@example.com' --from=message-from@example.com HEAD^
+
+/tmp/jade/jKCO7nnORw/0001-more-nya.patch
+(mbox) Adding cc: Jade Lovelace from line 'From: Jade Lovelace '
+
+From: message-from@example.com
+To: somepoorsoul@example.com
+Cc: Jade Lovelace
+Subject: [PATCH] more nya
+Date: Fri, 22 Apr 2022 20:45:30 -0700
+Message-Id: <20220423034529.3057172-1-message-from@example.com>
+X-Mailer: git-send-email 2.35.2
+MIME-Version: 1.0
+Content-Transfer-Encoding: 8bit
+
+Send this email? ([y]es|[n]o|[e]dit|[q]uit|[a]ll): y
+OK. Log says:
+Sendmail: /usr/bin/msmtp -a message-from@example.com -i somepoorsoul@example.com commitauthor@example.com
+From: message-from@example.com
+To: somepoorsoul@example.com
+Cc: Jade Lovelace
+Subject: [PATCH] more nya
+Date: Fri, 22 Apr 2022 20:45:30 -0700
+Message-Id: <20220423034529.3057172-1-message-from@example.com>
+X-Mailer: git-send-email 2.35.2
+MIME-Version: 1.0
+Content-Transfer-Encoding: 8bit
+
+Result: OK
+```
+
+And, yes, it was received:
+
+{% image(name="received.png", colocated=true) %}
+Screenshot of the email sent by git in an email client.
+
+It shows the patch as you'd see with the output of format-patch.
+{% end %}
+
+See? That was ~~sooooo easy~~ very hard for no reason.
diff --git a/content/posts/oh-no-git-send-email/received.png b/content/posts/oh-no-git-send-email/received.png
new file mode 100644
index 0000000..b752a6e
Binary files /dev/null and b/content/posts/oh-no-git-send-email/received.png differ
diff --git a/templates/index.html b/templates/index.html
index 32069c8..bd1cbe8 100644
--- a/templates/index.html
+++ b/templates/index.html
@@ -7,7 +7,7 @@
{% endif %}
- {{ page.title }}
+ {{ page.title | markdown(inline=true) | safe }}
{{ __tera_context | escape | safe }}
{% endif %}
-{% endblock content %}
\ No newline at end of file
+{% endblock content %}
diff --git a/templates/macros/image.html b/templates/macros/image.html
new file mode 100644
index 0000000..1a30ceb
--- /dev/null
+++ b/templates/macros/image.html
@@ -0,0 +1,32 @@
+{%- import "macros/colocated_asset.html" as colocated_asset -%}
+
+{%- macro image(name, alt, colocated, height) -%}
+{%- set name_sanitized = name | replace(from=".", to="-") | replace(from="/", to="-") -%}
+{%- set image_id = "image" ~ name_sanitized -%}
+
+{%- if colocated == true -%}
+{%- set image_path = colocated_asset::colocated_asset(path=name) -%}
+{%- set image_url = name -%}
+{%- else -%}
+{%- set image_path = "/static/images/" ~ name -%}
+{%- set image_url = get_url(path=image_path) -%}
+{%- endif -%}
+
+{%- set image = resize_image(path=image_path, width=800, height=height, op="fit") -%}
+
+
+
+
+ {% if label %}
+
+ {{ label }}
+
+ {% endif %}
+
+{%- endmacro image -%}
diff --git a/templates/page.html b/templates/page.html
index 07af089..4296bf1 100644
--- a/templates/page.html
+++ b/templates/page.html
@@ -18,7 +18,7 @@
{% block content %}