summaryrefslogtreecommitdiff
path: root/src/operationnull/index.scm
blob: 3c9e673d04c89be2936be11cfc36311bb68f034c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
;; SPDX-License-Identifier: CC-BY-SA-4.0
;; Copyright 2026 bdunahu <bdunahu@operationnull.com>
(define-module (operationnull index)
  #:use-module (srfi srfi-19)
  #:use-module (haunt builder blog)
  #:use-module (haunt html)
  #:use-module (haunt page)
  #:use-module (haunt post)
  #:use-module (haunt utils)
  #:use-module (operationnull utils)
  #:use-module (operationnull theme)
  #:export (index-page))

(define %about
  `(div (h1 "Hello!")
        (div (@ (class "c"))
             (p "My name is Benjamin (often 'bdunahu'), and this is my
personal site!")
             (p "I obtained my masters at the "
                (a (@ (href "https://www.cics.umass.edu/"))
                   "University of Massachusetts Amherst")
                ", where I studied computer science. I now do security scanning on
Linux-based operating systems. I am part of the "
                (a (@ (href "https://github.com/umacabal/umaring"))
                   "umass webring")
                ". Try it and pretend the majority of the internet doesn't
exist!"))))

(define %contact
  `(div (h2 "Contact")
        (div (@ (class "c"))
             (p "I don't mind real humans contacting me:")
             (ul (@ (class "ul-nb"))
                 (li (b "Email: ") "bdunahu @ this domain")
                 (li (b "IRC: ") "@ bdunahu @ libera.chat")
                 (li (b "matrix: ") "@bdunahu:tchncs.de")
                 (li (b "signal: ") "bdunahu.29"))
             (p "If you want to send an encryped email:")
             (ul (@ (class "ul-nb"))
                 (li (code "\
curl -sL https://operationnull.com/assets/bdunahu.pub | gpg --import"))
                 (li "fingerprint "
                     (code "\
5550 5CA6 9DE5 D342 7F31  F9AE 5F86 6C65 2A34 C996"))))))

(define (make-blog-preview site posts)
  `(div (h2 "Recent Posts "
            (a (@ (href "/atom.xml"))
                (img (@ (class "feed-icon")
                        (src "/assets/feed.png")))))
        (div (@ (class "c"))
             (ul (@ (class "ul-nb"))
                 ,(map (lambda (post)
                         (let ((uri (post-uri site post)))
                           `(li (a (@ (href ,uri))
                                   ,(post-ref post 'title))
                                " - "
                                ,(date->string (post-date post)
                                               "~B ~d, ~Y"))))
                       (take-up-to 5 (posts/reverse-chronological posts))))
             (a (@ (href "/posts/"))
                "see all..."))))

(define %extras
  `(div (h2 "Some stuff I do:")
        (div (@ (class "c"))
             (p "I recently did some independent work at the UMass Plasma
lab related to a specialized python asyncio profiler, similar to the "
                (a (@ (href "https://github.com/plasma-umass/coz"))
                   "Coz profiler")
                ", but for the event loop. It worked okay, but required a constant
workload across the profiling experiments to have actionable results.
It was still a great learning
experience!")
             (p "I previously worked on my own C compiler after working on a
from-scratch compiler in coursework. I used this second compiler to
learn the basics of guile scheme. This website is written in scheme;
and my computing environments are similarly configured using "
                (a (@ (href "https://guix.gnu.org/"))
                   "GuixSD")
                ". I started contributing patches and packages. I have a little
experience with Arch (Parabola) and Debian in maintaining this server.
Someday, I may host my web, mail, IRC bouncer, etc. with scheme and
Guix too, but that requires downtime and a lot of work on top of the
work already put in.")
             (p "I write, sometimes technical papers for research and classwork, but
also enjoy creative writing. I try to practice the fiction genre and
freewrite daily.")
             (p "I also read a lot of Sword and Sorcery. My favorite series
is the Morlock Ambrosius series by James Enge. While the protagonists
in these stories are capable enough of saving the world, what makes it
interesting is the lack of heroism and the reality that they are their
own worst enemy, ("
                (a (@ (href "https://www.oldmoonpublishing.com/evil-honey"))
                   "if not the secondary antagonist")
                ")."))))

(define (index-content site posts)
  `(article ,%about ,%contact ,(make-blog-preview site posts) ,%extras))

(define (index-page site posts)
  (make-page "index.html"
             (base-template site "home" (index-content site posts))
             sxml->html))