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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
|
;;; -*- scheme -*-
;;; Copyright © 2019 Jakob L. Kreuze <zerodaysfordays@sdf.lonestar.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/>.
(use-modules (ice-9 match)
(jakob theme)
(jakob utils sxml))
(define %software-projects
'(("Mines" "Dormant"
"https://git.sr.ht/~jakob/mines"
("Android implementation of the classic video game \"Minesweeper\"."))
("Rebuild" "Dormant"
"https://git.sr.ht/~jakob/rebuild"
("An attempt at reimplementing Ken Silverman's Build engine, with the goal of being modular enough to host a modern Blood source port."))
("wildmidi" "Dormant"
"https://git.sr.ht/~jakob/wildmidi"
("A simple [Rust] wrapper around the WildMIDI software synthesizer library."))
("Slime the World" "Finished"
"https://git.sr.ht/~jakob/slime-the-world"
("My entry for the 2018 Autumn Lisp Game Jam; a game about covering everything in slime."))
("Nekopack" "Finished"
"https://git.sr.ht/~jakob/nekopack"
("Tool for extracting game data from Nekopara's XP3 archives."))
("skullfuck" "Finished"
"https://git.sr.ht/~jakob/skullfuck"
("Optimizing compiler for Brainfuck, contained in a single C source file."))
("Brisket" "Abandoned"
"https://git.sr.ht/~jakob/brisket"
("Primitive newsreader script for interacting with NNTP servers."))
("Hypodermic" "Abandoned"
"https://git.sr.ht/~jakob/hypodermic"
("Proof-of-concept shared object injector that will eventually be integrated with PINCE."))
("Duke on FluidSynth" "Abandoned"
"https://git.sr.ht/~jakob/duke-on-fluidsynth"
("Experimental FluidSynth MIDI driver for EDuke32."))))
(define %emacs-projects
'(("dired-rmjunk" "Active"
"https://melpa.org/#/dired-rmjunk"
("A port of Jakub Klinkovský's rmshit.py to Dired."))
("ox-haunt" "Active"
"https://melpa.org/#/dired-rmjunk"
("Haunt-flavored HTML backend for the Org export engine."))))
(define %software-contributions
`(("GNU Guix" "Active"
"https://guix.gnu.org"
("Functional package manager."))
("Radare2" "Finished"
"https://www.radare.org/r/"
("UNIX-like reverse engineering framework and command-line tools."))
("Haiku" "Finished"
"https://www.haiku-os.org/"
("The Haiku operating system."))))
(define %packaging-projects
'(("zerodaysfordays" "Dormant"
"https://git.sr.ht/~jakob/zerodaysfordays"
("My personal Gentoo ebuild overlay."))))
(define (project name status url description)
(let ((status-class (match status
("Active" "good")
("Finished" "info")
("Dormant" "okay")
("Abandoned" "bad")
(_ "info"))))
`(tr (td ,(hyperlink url name))
(td (button (@ (class ,(format #f "label-~a" status-class)))
,status))
(td (p ,@description)))))
(define (project-section name projects)
`(section
(h4 ,name)
(table
(tbody
,@(map (lambda (args) (apply project args)) projects)))))
(theme
#:title "About"
#:content
`((h2 "Hey.")
(ul (@ (class "horizontal-list"))
(li "Email: " (strong "zerodaysfordays at sdf.org"))
(li "XMPP: " (strong "jakob at xmpp.is"))
(li "IRC: " (strong "tsarfox on freenode.net.")))
(ul (@ (class "horizontal-list"))
(li "GPG: " ,(hyperlink "/static/gpg.txt" "6581 A4FC 404F 6434 AEA3 008C 45ED 4DC3 05BA DA33")))
(ul (@ (class "horizontal-list"))
(li ,(hyperlink "https://git.sr.ht/~jakob" "git"))
(li ,(hyperlink "https://mastodon.sdf.org/@jakob" "fedi"))
(li ,(hyperlink "https://en.wikipedia.org/wiki/User:ZeroDaysForDays" "wiki"))
(li ,(hyperlink "http://tilde.town/~jakob" "tilde"))
(li ,(hyperlink "http://zerodaysfordays.sdf.org/" "sdf"))
(li ,(hyperlink "https://lobste.rs/u/jakob" "lobste.rs")))
(main (@ (class "overline"))
(p "My name's Jakob. I'm a self-taught free software hacker currently
studying computer science and mathematics at the University of Massachusetts
Amherst. I'm into functional programming, computer security, permaculture,
cooking, punk rock, and lifting weights.")
(p "I'm still in the process of putting things together, so this page is a bit empty.")
(p "As of right now, "
(b "I am still searching for a summer internship for 2020")
". So if you get the impression that I would be a good fit for your
company, my inbox is open.")
(p (b "IMPORTANT: ")
"if you have sent an email to an address of mine
ending in 'sdf.lonestar.org' between January 2nd, 2020 and now, I have not
received it. SDF has discontinued mail service on that domain. As such, "
,(hyperlink "https://paste.sr.ht/%7Ejakob/18c048600c26d125d6d743e6d5b44db852573242" "I have a new PGP key.")))
(h3 "Site Map")
(nav (@ (id "site-map"))
(section (h4 ,(hyperlink "/blogroll" "Blogroll"))
(p "A noncomprehensive list of the blogs I follow."))
(section (h4 ,(hyperlink "/bookmark" "Bookmarks"))
(p "Collection of some things that I especially enjoyed reading."))
(section (h4 ,(hyperlink "/outbox" "Webmention Outbox"))
(p "List of all the Webmention replies I've sent. Probably uninteresting to most.")))
(h3 "Projects")
,(project-section "Software" %software-projects)
,(project-section "Emacs" %emacs-projects)
,(project-section "Packaging" %packaging-projects)
,(project-section "Other Contributions" %software-contributions)))
|