<feed xmlns='http://www.w3.org/2005/Atom'>
<title>homepage.git/assets, branch main</title>
<subtitle>Personal website (Quarto, terminal-first)</subtitle>
<id>http://git.jayrup.me/c/homepage.git/atom?h=main</id>
<link rel='self' href='http://git.jayrup.me/c/homepage.git/atom?h=main'/>
<link rel='alternate' type='text/html' href='http://git.jayrup.me/c/homepage.git/'/>
<updated>2026-10-22T22:11:10Z</updated>
<entry>
<title>nginx: serve public_key to curl cleanly, restore lost security headers</title>
<updated>2026-10-22T22:11:10Z</updated>
<author>
<name>Void Agent</name>
<email>void@jayrup.hermes</email>
</author>
<published>2026-10-22T22:11:10Z</published>
<link rel='alternate' type='text/html' href='http://git.jayrup.me/c/homepage.git/commit/?id=70dffce202a8cc1d15473bbc2750bdf29a54b0fb'/>
<id>urn:sha1:70dffce202a8cc1d15473bbc2750bdf29a54b0fb</id>
<content type='text'>
`curl https://jayrup.me/public_key` is the documented way to get this key
onto a VPS, so both the file and the config serving it need to be exact.

Key file: drop the trailing space, one trailing newline. A key with no
trailing newline makes `curl ... &gt;&gt; ~/.ssh/authorized_keys` glue itself onto
the previous line and silently break every later key in the file.

nginx:
- `/assets/public_key` ignored $final_suffix, so curl got 404 while browsers
  got 200. Route both through the suffix-aware try_files.
- add_header does not merge across levels: the asset, PDF and .txt locations
  each declared one, so they inherited none of the security headers. The
  asset location now repeats them; the PDF and .txt locations no longer
  declare any (default_type / mime.types + charset do the job), so they
  inherit again.
- `add_header Content-Type application/pdf` appended a second Content-Type
  instead of setting it. Use default_type.
- `expires 30d` plus an explicit Cache-Control emitted two Cache-Control
  headers. Use one explicit header.
- add `charset utf-8` so text/plain (what curl gets) is not served
  charset-less while the content contains non-ASCII.

deploy: ship nginx.conf alongside public/. It is bind-mounted into the
container, so it never travelled with the rsync'd tree — the live config was
from May and predated the hardening committed in 0ee667a. Test with
`nginx -t` before reloading and restore the previous config on failure.
</content>
</entry>
<entry>
<title>links: drop GitHub, point everything at git.jayrup.me (homepage contact, CV header + dissertation entry, PDF link annotations)</title>
<updated>2026-09-20T14:19:18Z</updated>
<author>
<name>Void Agent</name>
<email>void@jayrup.hermes</email>
</author>
<published>2026-09-20T14:19:18Z</published>
<link rel='alternate' type='text/html' href='http://git.jayrup.me/c/homepage.git/commit/?id=f8fca9518e2d92cba2dbcd3ab71ebc00f2e22dc6'/>
<id>urn:sha1:f8fca9518e2d92cba2dbcd3ab71ebc00f2e22dc6</id>
<content type='text'>
</content>
</entry>
<entry>
<title>fix: title frontmatter, terminal resume, project list sync, nginx hardening, and styles</title>
<updated>2026-09-02T10:00:42Z</updated>
<author>
<name>CaptainJack2491</name>
<email>jayrupnakawala@gmail.com</email>
</author>
<published>2026-09-02T10:00:42Z</published>
<link rel='alternate' type='text/html' href='http://git.jayrup.me/c/homepage.git/commit/?id=0ee667ac6cb2493e4f9ddaa5b69f595071aca936'/>
<id>urn:sha1:0ee667ac6cb2493e4f9ddaa5b69f595071aca936</id>
<content type='text'>
</content>
</entry>
<entry>
<title>move external dependencies into assets/ so repo is self-contained</title>
<updated>2026-07-07T14:36:19Z</updated>
<author>
<name>CaptainJack2491</name>
<email>jayrupnakawala@gmail.com</email>
</author>
<published>2026-07-07T14:36:19Z</published>
<link rel='alternate' type='text/html' href='http://git.jayrup.me/c/homepage.git/commit/?id=80f87fb161490c4fb915c14b20ed074699a166e8'/>
<id>urn:sha1:80f87fb161490c4fb915c14b20ed074699a166e8</id>
<content type='text'>
</content>
</entry>
</feed>
