;; SPDX-License-Identifier: CC-BY-SA-4.0 ;; Copyright 2026 bdunahu (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))