summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakob L. Kreuze <zerodaysfordays@sdf.org>2024-07-13 17:55:47 -0400
committerJakob L. Kreuze <zerodaysfordays@sdf.org>2024-07-13 17:55:47 -0400
commit7f37518e4792f040a753a5d8d68d51e76cc0b2be (patch)
treeaf2c8dc358f97094a6c7e10a0aadcc21ad8a5cc5
parent5474f016ddec56542999f8ee6c0d6c887dee75e8 (diff)
Initial migration to org-reader
Long-term I would like to merge the =posts-assets= and =posts= directories but currently Haunt will crash if something exists in the =posts= directory that can't be processed by a reader
-rw-r--r--haunt/.gitignore1
-rw-r--r--haunt/haunt.scm6
-rw-r--r--haunt/jakob/reader/org-mode-prime.scm36
-rw-r--r--haunt/jakob/reader/org-mode.scm12
-rw-r--r--haunt/jakob/utils.scm22
-rw-r--r--haunt/posts-assets/Lisp Kludge.png (renamed from haunt/static/image/Lisp Kludge.png)bin359511 -> 359511 bytes
-rw-r--r--haunt/posts-assets/MyrddinHeap.svg (renamed from haunt/static/image/MyrddinHeap.svg)0
-rw-r--r--haunt/posts-assets/bad-behavior-debug-prints.png (renamed from haunt/static/image/bad-behavior-debug-prints.png)bin2108 -> 2108 bytes
-rw-r--r--haunt/posts-assets/bad-behavior-vanilla-hexen-vulnerability.png (renamed from haunt/static/image/bad-behavior-vanilla-hexen-vulnerability.png)bin82603 -> 82603 bytes
-rw-r--r--haunt/posts-assets/dollar-bin-reverse-engineering-firmware-mod.jpg (renamed from haunt/static/image/dollar-bin-reverse-engineering-firmware-mod.jpg)bin89507 -> 89507 bytes
-rw-r--r--haunt/posts-assets/dollar-bin-reverse-engineering-m2.jpg (renamed from haunt/static/image/dollar-bin-reverse-engineering-m2.jpg)bin94065 -> 94065 bytes
-rw-r--r--haunt/posts-assets/dollar-bin-reverse-engineering-mac.jpg (renamed from haunt/static/image/dollar-bin-reverse-engineering-mac.jpg)bin41466 -> 41466 bytes
-rw-r--r--haunt/posts-assets/dollar-bin-reverse-engineering-manual.jpg (renamed from haunt/static/image/dollar-bin-reverse-engineering-manual.jpg)bin81706 -> 81706 bytes
-rw-r--r--haunt/posts-assets/flipper-zero-hello-world.jpgbin0 -> 47620 bytes
-rw-r--r--haunt/posts-assets/forge-1-1.pngbin0 -> 76319 bytes
-rw-r--r--haunt/posts-assets/forge-1-2.pngbin0 -> 76837 bytes
-rw-r--r--haunt/posts-assets/forge-1-3.pngbin0 -> 52219 bytes
-rw-r--r--haunt/posts-assets/forge-1-4.pngbin0 -> 53208 bytes
-rw-r--r--haunt/posts-assets/gtkcord4-on-pinephone.pngbin0 -> 220103 bytes
-rw-r--r--haunt/posts-assets/kona-1.jpgbin0 -> 82999 bytes
-rw-r--r--haunt/posts-assets/kona-2.jpgbin0 -> 147421 bytes
-rw-r--r--haunt/posts-assets/kona-3.jpgbin0 -> 271865 bytes
-rw-r--r--haunt/posts-assets/kona-4.jpgbin0 -> 292957 bytes
-rw-r--r--haunt/posts-assets/lisp-personality-test.png (renamed from haunt/static/image/lisp-personality-test.png)bin7045 -> 7045 bytes
-rw-r--r--haunt/posts-assets/logo.pngbin0 -> 70229 bytes
-rw-r--r--haunt/posts-assets/making-your-own-music-player-analog-vs-digital.png (renamed from haunt/static/image/making-your-own-music-player-analog-vs-digital.png)bin11919 -> 11919 bytes
-rw-r--r--haunt/posts-assets/mitmproxy-initial.png (renamed from haunt/static/image/mitmproxy-initial.png)bin54663 -> 54663 bytes
-rw-r--r--haunt/posts-assets/music-on-zeta.pngbin0 -> 61660 bytes
-rw-r--r--haunt/posts-assets/old-webmention-screenshot.pngbin0 -> 109830 bytes
-rw-r--r--haunt/posts-assets/openxcom-on-pinephone.pngbin0 -> 296489 bytes
-rw-r--r--haunt/posts-assets/pinephone-1.jpgbin0 -> 345804 bytes
-rw-r--r--haunt/posts-assets/pinephone-2.jpgbin0 -> 423256 bytes
-rw-r--r--haunt/posts-assets/pinephone-3.jpgbin0 -> 593380 bytes
-rw-r--r--haunt/posts-assets/pinephone-4.jpgbin0 -> 724410 bytes
-rw-r--r--haunt/posts-assets/pinephone-5.jpgbin0 -> 320325 bytes
-rw-r--r--haunt/posts-assets/pinephone-6.jpgbin0 -> 1031623 bytes
-rw-r--r--haunt/posts-assets/pinephone-7.jpgbin0 -> 47011 bytes
-rw-r--r--haunt/posts-assets/pinephone-running-emacs.pngbin0 -> 205622 bytes
-rw-r--r--haunt/posts-assets/pinephone-running-mpv.pngbin0 -> 255017 bytes
-rw-r--r--haunt/posts-assets/ret2emacs-overlay-demo.png (renamed from haunt/static/image/ret2emacs-overlay-demo.png)bin2104 -> 2104 bytes
-rw-r--r--haunt/posts-assets/reverse-engineering-babbys-first-archive-format-basic-parsing.png (renamed from haunt/static/image/reverse-engineering-babbys-first-archive-format-basic-parsing.png)bin15718 -> 15718 bytes
-rw-r--r--haunt/posts-assets/reverse-engineering-babbys-first-archive-format-binary-dump.png (renamed from haunt/static/image/reverse-engineering-babbys-first-archive-format-binary-dump.png)bin61514 -> 61514 bytes
-rw-r--r--haunt/posts-assets/reverse-engineering-babbys-first-archive-format-catching-file-reads.png (renamed from haunt/static/image/reverse-engineering-babbys-first-archive-format-catching-file-reads.png)bin407274 -> 407274 bytes
-rw-r--r--haunt/posts-assets/reverse-engineering-babbys-first-archive-format-xp3-header.png (renamed from haunt/static/image/reverse-engineering-babbys-first-archive-format-xp3-header.png)bin9290 -> 9290 bytes
-rw-r--r--haunt/posts-assets/rsvp-screenshot.pngbin0 -> 86931 bytes
-rw-r--r--haunt/posts-assets/sdl-tutorial-part-0x00-finished-window.png (renamed from haunt/static/image/sdl-tutorial-part-0x00-finished-window.png)bin11966 -> 11966 bytes
-rw-r--r--haunt/posts-assets/sdl-tutorial-part-0x00-window.png (renamed from haunt/static/image/sdl-tutorial-part-0x00-window.png)bin9405 -> 9405 bytes
-rw-r--r--haunt/posts-assets/shellbot-propagation.jpg (renamed from haunt/static/image/shellbot-propagation.jpg)bin427743 -> 427743 bytes
-rw-r--r--haunt/posts-assets/sorry-guys-i-have-to-troubleshoot-my-usb-drivers-before-i-can-play-wireshark.png (renamed from haunt/static/image/sorry-guys-i-have-to-troubleshoot-my-usb-drivers-before-i-can-play-wireshark.png)bin261565 -> 261565 bytes
-rw-r--r--haunt/posts-assets/tunes-on-home-screen.pngbin0 -> 332347 bytes
-rw-r--r--haunt/posts-assets/tunes-on-pinephone.pngbin0 -> 208116 bytes
-rw-r--r--haunt/posts-assets/tunes-on-workstation.pngbin0 -> 364407 bytes
-rw-r--r--haunt/posts-assets/umass-ctf-2021-postmortem-1.png (renamed from haunt/static/image/umass-ctf-2021-postmortem-1.png)bin13180 -> 13180 bytes
-rw-r--r--haunt/posts-assets/umass-ctf-2021-postmortem-2.png (renamed from haunt/static/image/umass-ctf-2021-postmortem-2.png)bin32415 -> 32415 bytes
-rw-r--r--haunt/posts-assets/warp-mvp.pngbin0 -> 15562 bytes
-rw-r--r--haunt/posts-assets/web-server-traffic.jpgbin0 -> 79557 bytes
-rw-r--r--haunt/posts/bad-behavior.org4
-rw-r--r--haunt/posts/making-your-own-music-player.org2
-rw-r--r--haunt/posts/reverse-engineering-babbys-first-archive-format.org8
-rw-r--r--haunt/posts/sdl-tutorial-part-0x00.org4
60 files changed, 73 insertions, 22 deletions
diff --git a/haunt/.gitignore b/haunt/.gitignore
new file mode 100644
index 0000000..17935b4
--- /dev/null
+++ b/haunt/.gitignore
@@ -0,0 +1 @@
+.org-mode-reader-cache/
diff --git a/haunt/haunt.scm b/haunt/haunt.scm
index 6d2aacb..1d24fe9 100644
--- a/haunt/haunt.scm
+++ b/haunt/haunt.scm
@@ -25,6 +25,7 @@
(jakob builder htaccess)
(jakob builder outbox)
(jakob reader html-prime)
+ (jakob reader org-mode-prime)
(jakob theme)
(srfi srfi-19)
(srfi srfi-26))
@@ -45,7 +46,7 @@
'((author . "Jakob L. Kreuze")
(email . "zerodaysfordays@sdf.lonestar.org"))
#:make-slug post-slug-v2
- #:readers (list html-reader-prime org-mode-reader sxml-reader)
+ #:readers (list html-reader-prime org-mode-reader-prime sxml-reader)
#:builders
(list (atom-feed #:max-entries 1024)
(blog)
@@ -60,4 +61,5 @@
#:template (lambda (_site title content)
(theme #:title title #:content content))
#:prefix "pages/")
- (static-directory "static")))
+ (static-directory "static")
+ (static-directory "posts-assets" "blog")))
diff --git a/haunt/jakob/reader/org-mode-prime.scm b/haunt/jakob/reader/org-mode-prime.scm
new file mode 100644
index 0000000..118f1a6
--- /dev/null
+++ b/haunt/jakob/reader/org-mode-prime.scm
@@ -0,0 +1,36 @@
+;;; Copyright © 2019 - 2024 Jakob L. Kreuze <zerodaysfordays@sdf.org>
+;;;
+;;; This program is free software; you can redistribute it and/or
+;;; modify it under the terms of the GNU General Public License as
+;;; published by the Free Software Foundation; either version 3 of the
+;;; License, or (at your option) any later version.
+;;;
+;;; This program is distributed in the hope that it will be useful,
+;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+;;; General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with this program. If not, see
+;;; <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;;;
+;;; Wrapper around the `org-mode-reader' to apply rewrite rules specific to my
+;;; website.
+;;;
+;;; Code:
+
+(define-module (jakob reader org-mode-prime)
+ #:use-module (haunt reader)
+ #:use-module (jakob reader org-mode)
+ #:use-module (jakob utils sxml)
+ #:use-module (srfi srfi-11)
+ #:export (org-mode-reader-prime))
+
+(define org-mode-reader-prime
+ (make-reader (reader-matcher org-mode-reader)
+ (lambda args
+ (let-values (((metadata sxml) (apply (reader-proc org-mode-reader) args)))
+ (values metadata
+ (rewrite-absolute-urls-as-relative sxml))))))
diff --git a/haunt/jakob/reader/org-mode.scm b/haunt/jakob/reader/org-mode.scm
index 7f064f1..b55dbf3 100644
--- a/haunt/jakob/reader/org-mode.scm
+++ b/haunt/jakob/reader/org-mode.scm
@@ -49,6 +49,10 @@
(or (getenv "HAUNT_ORG_READER_CACHE_DIR")
"./.org-mode-reader-cache/"))))
+;; File name of Elisp script to execute before anything else
+(define %additional-emacs-preamble
+ (make-parameter (getenv "HAUNT_ORG_READER_EMACS_PREAMBLE")))
+
;; Additional Org-mode keywords to include in the extracted metadata.
(define %additional-keys
(make-parameter '("CROSSPOST" "SCRIPTS" "META-TAGS")))
@@ -62,7 +66,13 @@
If `%use-emacsclient' is truthy, evaluate FORM in the current running Emacs
daemon. Assumes that FORM does not write to `standard-output'."
- (let* (;; We need to explicitly request that Emacs write the result if using
+ (let* (;; If `HAUNT_ORG_READER_PREAMBLE' is specified, load that.
+ (form (if (%additional-emacs-preamble)
+ `(progn
+ (load-file ,(%additional-emacs-preamble))
+ ,form)
+ form))
+ ;; We need to explicitly request that Emacs write the result if using
;; Emacs batch mode (which is how we evaluate forms without
;; `emacsclient'.)
(form (if (not (%use-emacsclient))
diff --git a/haunt/jakob/utils.scm b/haunt/jakob/utils.scm
index a104510..ad35f4c 100644
--- a/haunt/jakob/utils.scm
+++ b/haunt/jakob/utils.scm
@@ -19,7 +19,8 @@
#:use-module (ice-9 match)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-19)
- #:export (maybe-cons*
+ #:export (assq-map!
+ maybe-cons*
maybe-list
date->string*
intersperse
@@ -28,6 +29,12 @@
elide-string))
+(define (assq-map! alist key fn)
+ "Destructively apply FN to KEY in ALIST, if it exists"
+ (match (assq-ref alist key)
+ (#f alist)
+ (val (assq-set! alist key (fn val)))))
+
(define (maybe-list . args)
"Create a list of all ARGS that are neither #f nor unspecified."
(remove (lambda (element)
@@ -62,16 +69,11 @@ is of an odd length and every second element is DELIM."
content)))
(define (first-paragraph post)
- (let loop ((sxml (post-sxml post))
- (result '()))
+ (let loop ((sxml (post-sxml post)))
(match sxml
- (() (remove-footnote-references (reverse result)))
- ((or (('p ...) tail ...) (paragraph tail ...))
- (if (and (list? paragraph) (eqv? 'header (car paragraph)))
- (loop tail result) ; Ignore front-matter.
- (remove-footnote-references (reverse (cons paragraph result)))))
- ((head . tail)
- (loop tail (cons head result))))))
+ (((and ('p content ...) paragraph) . tail)
+ (remove-footnote-references paragraph))
+ ((head . tail) (loop tail)))))
(define (description-from-post post)
(define (first-elem sxml)
diff --git a/haunt/static/image/Lisp Kludge.png b/haunt/posts-assets/Lisp Kludge.png
index 9c244b9..9c244b9 100644
--- a/haunt/static/image/Lisp Kludge.png
+++ b/haunt/posts-assets/Lisp Kludge.png
Binary files differ
diff --git a/haunt/static/image/MyrddinHeap.svg b/haunt/posts-assets/MyrddinHeap.svg
index b5261bf..b5261bf 100644
--- a/haunt/static/image/MyrddinHeap.svg
+++ b/haunt/posts-assets/MyrddinHeap.svg
diff --git a/haunt/static/image/bad-behavior-debug-prints.png b/haunt/posts-assets/bad-behavior-debug-prints.png
index 538ccec..538ccec 100644
--- a/haunt/static/image/bad-behavior-debug-prints.png
+++ b/haunt/posts-assets/bad-behavior-debug-prints.png
Binary files differ
diff --git a/haunt/static/image/bad-behavior-vanilla-hexen-vulnerability.png b/haunt/posts-assets/bad-behavior-vanilla-hexen-vulnerability.png
index 510cf5f..510cf5f 100644
--- a/haunt/static/image/bad-behavior-vanilla-hexen-vulnerability.png
+++ b/haunt/posts-assets/bad-behavior-vanilla-hexen-vulnerability.png
Binary files differ
diff --git a/haunt/static/image/dollar-bin-reverse-engineering-firmware-mod.jpg b/haunt/posts-assets/dollar-bin-reverse-engineering-firmware-mod.jpg
index 0b2302e..0b2302e 100644
--- a/haunt/static/image/dollar-bin-reverse-engineering-firmware-mod.jpg
+++ b/haunt/posts-assets/dollar-bin-reverse-engineering-firmware-mod.jpg
Binary files differ
diff --git a/haunt/static/image/dollar-bin-reverse-engineering-m2.jpg b/haunt/posts-assets/dollar-bin-reverse-engineering-m2.jpg
index 25aefdb..25aefdb 100644
--- a/haunt/static/image/dollar-bin-reverse-engineering-m2.jpg
+++ b/haunt/posts-assets/dollar-bin-reverse-engineering-m2.jpg
Binary files differ
diff --git a/haunt/static/image/dollar-bin-reverse-engineering-mac.jpg b/haunt/posts-assets/dollar-bin-reverse-engineering-mac.jpg
index 2c66f31..2c66f31 100644
--- a/haunt/static/image/dollar-bin-reverse-engineering-mac.jpg
+++ b/haunt/posts-assets/dollar-bin-reverse-engineering-mac.jpg
Binary files differ
diff --git a/haunt/static/image/dollar-bin-reverse-engineering-manual.jpg b/haunt/posts-assets/dollar-bin-reverse-engineering-manual.jpg
index 731735a..731735a 100644
--- a/haunt/static/image/dollar-bin-reverse-engineering-manual.jpg
+++ b/haunt/posts-assets/dollar-bin-reverse-engineering-manual.jpg
Binary files differ
diff --git a/haunt/posts-assets/flipper-zero-hello-world.jpg b/haunt/posts-assets/flipper-zero-hello-world.jpg
new file mode 100644
index 0000000..c072316
--- /dev/null
+++ b/haunt/posts-assets/flipper-zero-hello-world.jpg
Binary files differ
diff --git a/haunt/posts-assets/forge-1-1.png b/haunt/posts-assets/forge-1-1.png
new file mode 100644
index 0000000..0fbe29e
--- /dev/null
+++ b/haunt/posts-assets/forge-1-1.png
Binary files differ
diff --git a/haunt/posts-assets/forge-1-2.png b/haunt/posts-assets/forge-1-2.png
new file mode 100644
index 0000000..9196000
--- /dev/null
+++ b/haunt/posts-assets/forge-1-2.png
Binary files differ
diff --git a/haunt/posts-assets/forge-1-3.png b/haunt/posts-assets/forge-1-3.png
new file mode 100644
index 0000000..634939c
--- /dev/null
+++ b/haunt/posts-assets/forge-1-3.png
Binary files differ
diff --git a/haunt/posts-assets/forge-1-4.png b/haunt/posts-assets/forge-1-4.png
new file mode 100644
index 0000000..da6832e
--- /dev/null
+++ b/haunt/posts-assets/forge-1-4.png
Binary files differ
diff --git a/haunt/posts-assets/gtkcord4-on-pinephone.png b/haunt/posts-assets/gtkcord4-on-pinephone.png
new file mode 100644
index 0000000..45cb2b3
--- /dev/null
+++ b/haunt/posts-assets/gtkcord4-on-pinephone.png
Binary files differ
diff --git a/haunt/posts-assets/kona-1.jpg b/haunt/posts-assets/kona-1.jpg
new file mode 100644
index 0000000..79d40dc
--- /dev/null
+++ b/haunt/posts-assets/kona-1.jpg
Binary files differ
diff --git a/haunt/posts-assets/kona-2.jpg b/haunt/posts-assets/kona-2.jpg
new file mode 100644
index 0000000..4ce3d51
--- /dev/null
+++ b/haunt/posts-assets/kona-2.jpg
Binary files differ
diff --git a/haunt/posts-assets/kona-3.jpg b/haunt/posts-assets/kona-3.jpg
new file mode 100644
index 0000000..16d2b2c
--- /dev/null
+++ b/haunt/posts-assets/kona-3.jpg
Binary files differ
diff --git a/haunt/posts-assets/kona-4.jpg b/haunt/posts-assets/kona-4.jpg
new file mode 100644
index 0000000..19e7af9
--- /dev/null
+++ b/haunt/posts-assets/kona-4.jpg
Binary files differ
diff --git a/haunt/static/image/lisp-personality-test.png b/haunt/posts-assets/lisp-personality-test.png
index c3a26f3..c3a26f3 100644
--- a/haunt/static/image/lisp-personality-test.png
+++ b/haunt/posts-assets/lisp-personality-test.png
Binary files differ
diff --git a/haunt/posts-assets/logo.png b/haunt/posts-assets/logo.png
new file mode 100644
index 0000000..8898c6d
--- /dev/null
+++ b/haunt/posts-assets/logo.png
Binary files differ
diff --git a/haunt/static/image/making-your-own-music-player-analog-vs-digital.png b/haunt/posts-assets/making-your-own-music-player-analog-vs-digital.png
index 6841598..6841598 100644
--- a/haunt/static/image/making-your-own-music-player-analog-vs-digital.png
+++ b/haunt/posts-assets/making-your-own-music-player-analog-vs-digital.png
Binary files differ
diff --git a/haunt/static/image/mitmproxy-initial.png b/haunt/posts-assets/mitmproxy-initial.png
index 3b022e7..3b022e7 100644
--- a/haunt/static/image/mitmproxy-initial.png
+++ b/haunt/posts-assets/mitmproxy-initial.png
Binary files differ
diff --git a/haunt/posts-assets/music-on-zeta.png b/haunt/posts-assets/music-on-zeta.png
new file mode 100644
index 0000000..f48d984
--- /dev/null
+++ b/haunt/posts-assets/music-on-zeta.png
Binary files differ
diff --git a/haunt/posts-assets/old-webmention-screenshot.png b/haunt/posts-assets/old-webmention-screenshot.png
new file mode 100644
index 0000000..6c4f015
--- /dev/null
+++ b/haunt/posts-assets/old-webmention-screenshot.png
Binary files differ
diff --git a/haunt/posts-assets/openxcom-on-pinephone.png b/haunt/posts-assets/openxcom-on-pinephone.png
new file mode 100644
index 0000000..a7e383e
--- /dev/null
+++ b/haunt/posts-assets/openxcom-on-pinephone.png
Binary files differ
diff --git a/haunt/posts-assets/pinephone-1.jpg b/haunt/posts-assets/pinephone-1.jpg
new file mode 100644
index 0000000..2577260
--- /dev/null
+++ b/haunt/posts-assets/pinephone-1.jpg
Binary files differ
diff --git a/haunt/posts-assets/pinephone-2.jpg b/haunt/posts-assets/pinephone-2.jpg
new file mode 100644
index 0000000..524e93d
--- /dev/null
+++ b/haunt/posts-assets/pinephone-2.jpg
Binary files differ
diff --git a/haunt/posts-assets/pinephone-3.jpg b/haunt/posts-assets/pinephone-3.jpg
new file mode 100644
index 0000000..3a26eb3
--- /dev/null
+++ b/haunt/posts-assets/pinephone-3.jpg
Binary files differ
diff --git a/haunt/posts-assets/pinephone-4.jpg b/haunt/posts-assets/pinephone-4.jpg
new file mode 100644
index 0000000..fc7051b
--- /dev/null
+++ b/haunt/posts-assets/pinephone-4.jpg
Binary files differ
diff --git a/haunt/posts-assets/pinephone-5.jpg b/haunt/posts-assets/pinephone-5.jpg
new file mode 100644
index 0000000..bb8e59b
--- /dev/null
+++ b/haunt/posts-assets/pinephone-5.jpg
Binary files differ
diff --git a/haunt/posts-assets/pinephone-6.jpg b/haunt/posts-assets/pinephone-6.jpg
new file mode 100644
index 0000000..13cbb00
--- /dev/null
+++ b/haunt/posts-assets/pinephone-6.jpg
Binary files differ
diff --git a/haunt/posts-assets/pinephone-7.jpg b/haunt/posts-assets/pinephone-7.jpg
new file mode 100644
index 0000000..8af4519
--- /dev/null
+++ b/haunt/posts-assets/pinephone-7.jpg
Binary files differ
diff --git a/haunt/posts-assets/pinephone-running-emacs.png b/haunt/posts-assets/pinephone-running-emacs.png
new file mode 100644
index 0000000..86e7692
--- /dev/null
+++ b/haunt/posts-assets/pinephone-running-emacs.png
Binary files differ
diff --git a/haunt/posts-assets/pinephone-running-mpv.png b/haunt/posts-assets/pinephone-running-mpv.png
new file mode 100644
index 0000000..5cb71b5
--- /dev/null
+++ b/haunt/posts-assets/pinephone-running-mpv.png
Binary files differ
diff --git a/haunt/static/image/ret2emacs-overlay-demo.png b/haunt/posts-assets/ret2emacs-overlay-demo.png
index 70c6c8e..70c6c8e 100644
--- a/haunt/static/image/ret2emacs-overlay-demo.png
+++ b/haunt/posts-assets/ret2emacs-overlay-demo.png
Binary files differ
diff --git a/haunt/static/image/reverse-engineering-babbys-first-archive-format-basic-parsing.png b/haunt/posts-assets/reverse-engineering-babbys-first-archive-format-basic-parsing.png
index 0513350..0513350 100644
--- a/haunt/static/image/reverse-engineering-babbys-first-archive-format-basic-parsing.png
+++ b/haunt/posts-assets/reverse-engineering-babbys-first-archive-format-basic-parsing.png
Binary files differ
diff --git a/haunt/static/image/reverse-engineering-babbys-first-archive-format-binary-dump.png b/haunt/posts-assets/reverse-engineering-babbys-first-archive-format-binary-dump.png
index 0a8774c..0a8774c 100644
--- a/haunt/static/image/reverse-engineering-babbys-first-archive-format-binary-dump.png
+++ b/haunt/posts-assets/reverse-engineering-babbys-first-archive-format-binary-dump.png
Binary files differ
diff --git a/haunt/static/image/reverse-engineering-babbys-first-archive-format-catching-file-reads.png b/haunt/posts-assets/reverse-engineering-babbys-first-archive-format-catching-file-reads.png
index 2ce8f62..2ce8f62 100644
--- a/haunt/static/image/reverse-engineering-babbys-first-archive-format-catching-file-reads.png
+++ b/haunt/posts-assets/reverse-engineering-babbys-first-archive-format-catching-file-reads.png
Binary files differ
diff --git a/haunt/static/image/reverse-engineering-babbys-first-archive-format-xp3-header.png b/haunt/posts-assets/reverse-engineering-babbys-first-archive-format-xp3-header.png
index 0fac996..0fac996 100644
--- a/haunt/static/image/reverse-engineering-babbys-first-archive-format-xp3-header.png
+++ b/haunt/posts-assets/reverse-engineering-babbys-first-archive-format-xp3-header.png
Binary files differ
diff --git a/haunt/posts-assets/rsvp-screenshot.png b/haunt/posts-assets/rsvp-screenshot.png
new file mode 100644
index 0000000..9e18992
--- /dev/null
+++ b/haunt/posts-assets/rsvp-screenshot.png
Binary files differ
diff --git a/haunt/static/image/sdl-tutorial-part-0x00-finished-window.png b/haunt/posts-assets/sdl-tutorial-part-0x00-finished-window.png
index 4e9a146..4e9a146 100644
--- a/haunt/static/image/sdl-tutorial-part-0x00-finished-window.png
+++ b/haunt/posts-assets/sdl-tutorial-part-0x00-finished-window.png
Binary files differ
diff --git a/haunt/static/image/sdl-tutorial-part-0x00-window.png b/haunt/posts-assets/sdl-tutorial-part-0x00-window.png
index 0bbe5fc..0bbe5fc 100644
--- a/haunt/static/image/sdl-tutorial-part-0x00-window.png
+++ b/haunt/posts-assets/sdl-tutorial-part-0x00-window.png
Binary files differ
diff --git a/haunt/static/image/shellbot-propagation.jpg b/haunt/posts-assets/shellbot-propagation.jpg
index 342364c..342364c 100644
--- a/haunt/static/image/shellbot-propagation.jpg
+++ b/haunt/posts-assets/shellbot-propagation.jpg
Binary files differ
diff --git a/haunt/static/image/sorry-guys-i-have-to-troubleshoot-my-usb-drivers-before-i-can-play-wireshark.png b/haunt/posts-assets/sorry-guys-i-have-to-troubleshoot-my-usb-drivers-before-i-can-play-wireshark.png
index 2d993af..2d993af 100644
--- a/haunt/static/image/sorry-guys-i-have-to-troubleshoot-my-usb-drivers-before-i-can-play-wireshark.png
+++ b/haunt/posts-assets/sorry-guys-i-have-to-troubleshoot-my-usb-drivers-before-i-can-play-wireshark.png
Binary files differ
diff --git a/haunt/posts-assets/tunes-on-home-screen.png b/haunt/posts-assets/tunes-on-home-screen.png
new file mode 100644
index 0000000..7cd1dc0
--- /dev/null
+++ b/haunt/posts-assets/tunes-on-home-screen.png
Binary files differ
diff --git a/haunt/posts-assets/tunes-on-pinephone.png b/haunt/posts-assets/tunes-on-pinephone.png
new file mode 100644
index 0000000..06441a8
--- /dev/null
+++ b/haunt/posts-assets/tunes-on-pinephone.png
Binary files differ
diff --git a/haunt/posts-assets/tunes-on-workstation.png b/haunt/posts-assets/tunes-on-workstation.png
new file mode 100644
index 0000000..1501d64
--- /dev/null
+++ b/haunt/posts-assets/tunes-on-workstation.png
Binary files differ
diff --git a/haunt/static/image/umass-ctf-2021-postmortem-1.png b/haunt/posts-assets/umass-ctf-2021-postmortem-1.png
index 1bee126..1bee126 100644
--- a/haunt/static/image/umass-ctf-2021-postmortem-1.png
+++ b/haunt/posts-assets/umass-ctf-2021-postmortem-1.png
Binary files differ
diff --git a/haunt/static/image/umass-ctf-2021-postmortem-2.png b/haunt/posts-assets/umass-ctf-2021-postmortem-2.png
index 7f12ad1..7f12ad1 100644
--- a/haunt/static/image/umass-ctf-2021-postmortem-2.png
+++ b/haunt/posts-assets/umass-ctf-2021-postmortem-2.png
Binary files differ
diff --git a/haunt/posts-assets/warp-mvp.png b/haunt/posts-assets/warp-mvp.png
new file mode 100644
index 0000000..14c7f0b
--- /dev/null
+++ b/haunt/posts-assets/warp-mvp.png
Binary files differ
diff --git a/haunt/posts-assets/web-server-traffic.jpg b/haunt/posts-assets/web-server-traffic.jpg
new file mode 100644
index 0000000..f24ea09
--- /dev/null
+++ b/haunt/posts-assets/web-server-traffic.jpg
Binary files differ
diff --git a/haunt/posts/bad-behavior.org b/haunt/posts/bad-behavior.org
index a5c9dbe..a8658ff 100644
--- a/haunt/posts/bad-behavior.org
+++ b/haunt/posts/bad-behavior.org
@@ -157,7 +157,7 @@ about in a little bit. Let's jump in and craft a BEHAVIOR lump which calls
=PUSHBYTE= a bunch of times.
#+CAPTION: A screenshot of my terminal showing an abrupt end to the debug prints I added for inspecting the absolute memory addresses of SStack and VStack.
-[[./debug-prints.png]]
+[[./bad-behavior-debug-prints.png]]
We seem to end prematurely, which is because we hit the stack pointer. We will
have to modify our exploit to step over it somehow, which we can do by
@@ -185,4 +185,4 @@ disclosing this to the development team, we discovered that vanilla Hexen has
this same arbitrary code execution vulnerability. No proof-of-concept yet.
#+CAPTION: One of my posts in an internal discussion on the GZDoom forums regarding the same exploit existing in the vanilla Hexen code.
-[[./vanilla-hexen-vulnerability.png]]
+[[./bad-behavior-vanilla-hexen-vulnerability.png]]
diff --git a/haunt/posts/making-your-own-music-player.org b/haunt/posts/making-your-own-music-player.org
index cf5cbac..f96d4a5 100644
--- a/haunt/posts/making-your-own-music-player.org
+++ b/haunt/posts/making-your-own-music-player.org
@@ -26,7 +26,7 @@ instantaneous representation of the signal some number of times a second. The
image below does a good job of explaining it, I think.
#+CAPTION: Diagram showing the difference between an analog sine wave and a quantization of that wave.
-[[./analog-vs-digital.png]]
+[[./making-your-own-music-player-analog-vs-digital.png]]
The rate at which the signal is sampled or quantized is the *frequency*. 44.1
kHz is typically the standard - meanining that 441,000 samples are taken every
diff --git a/haunt/posts/reverse-engineering-babbys-first-archive-format.org b/haunt/posts/reverse-engineering-babbys-first-archive-format.org
index 1f69b5a..d817e30 100644
--- a/haunt/posts/reverse-engineering-babbys-first-archive-format.org
+++ b/haunt/posts/reverse-engineering-babbys-first-archive-format.org
@@ -24,7 +24,7 @@ editor and went at it, with the [[https://github.com/vn-tools/arc_unpacker/blob/
it.
#+CAPTION: A hex dump of the XP3 header.
-[[./xp3-header.png]]
+[[./reverse-engineering-babbys-first-archive-format-xp3-header.png]]
The first section of the archive is the header. It begins with an 11-byte
"magic number," used by whatever program is opening it as a sanity check. It's
@@ -59,7 +59,7 @@ Huffman Coding, so let's use zlib! I proceeded to inflate the archive contents
according to the header and dumped it so that I could view it in my hex editor.
#+CAPTION: Sections in the hexdump of the decompressed payload with the corresponding constants in the Arc source code.
-[[./binary-dump.png]]
+[[./reverse-engineering-babbys-first-archive-format-binary-dump.png]]
Every entry has a header containing a 32-bit magic number (underlined in red),
followed by a 64-bit unsigned integer representing the size of the entry. It's a
@@ -80,7 +80,7 @@ a compressed and decompressed size, and what seems to be an MD5 hash of the
file.
#+CAPTION: A screenshot of my terminal, showing the output of a bare-bones parser for the format.
-[[./basic-parsing.png]]
+[[./reverse-engineering-babbys-first-archive-format-basic-parsing.png]]
Now we run into the problem of the files' contents being encrypted. I began by
getting a debugger setup going to reverse engineer the binary. x64dbg isn't my
@@ -89,7 +89,7 @@ was really able to get working. Of course, using the debugger alone is a little
primitive. We have other tools to make reverse engineering easier.
#+CAPTION: A screenshot of procmon alongside x32dbg, logging Windows syscalls that read files.
-[[./catching-file-reads.png]]
+[[./reverse-engineering-babbys-first-archive-format-catching-file-reads.png]]
Enter procmon. It's reminiscent of strace, but it's meant for Windows and has a
nice stack trace feature which helps us to locate the code that decrypts the
diff --git a/haunt/posts/sdl-tutorial-part-0x00.org b/haunt/posts/sdl-tutorial-part-0x00.org
index dab5990..83cee0f 100644
--- a/haunt/posts/sdl-tutorial-part-0x00.org
+++ b/haunt/posts/sdl-tutorial-part-0x00.org
@@ -173,7 +173,7 @@ your computer can take a short break. Alright. So when we put that in our code
it, we get this:
#+CAPTION: A screenshot of the window on my system.
-[[./window.png]]
+[[./sdl-tutorial-part-0x00-window.png]]
I'm running i3wm, so it will probably look slightly different for you, but
we've finally got a window! It still sucks, though. It doesn't do anything,
@@ -278,7 +278,7 @@ int main(int argc, char *argv[]) {
Let's run it:
#+CAPTION: A screenshot of the completed window on my system.
-[[./finished-window.png]]
+[[./sdl-tutorial-part-0x00-finished-window.png]]
To recap, we learned about: