diff options
| author | bdunahu <bdunahu@operationnull.com> | 2026-08-21 20:54:39 -0400 |
|---|---|---|
| committer | bdunahu <bdunahu@operationnull.com> | 2026-08-21 21:04:14 -0400 |
| commit | 30731133aff475f100cea7fac18017505a400c38 (patch) | |
| tree | cdc2ae3deccd2eba960889288f0743ef12dabb94 /src/operationnull/index.scm | |
| parent | 959447a73ef7bd79b12dcf259ee8c3c1941f10df (diff) | |
Diffstat (limited to 'src/operationnull/index.scm')
| -rw-r--r-- | src/operationnull/index.scm | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/src/operationnull/index.scm b/src/operationnull/index.scm new file mode 100644 index 0000000..3c9e673 --- /dev/null +++ b/src/operationnull/index.scm @@ -0,0 +1,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)) |
