Commit | Line | Data |
---|---|---|
85314da0 AB |
1 | (use-modules (haunt asset) |
2 | (haunt builder blog) | |
3 | (haunt builder atom) | |
4 | (haunt builder assets) | |
99ac860d | 5 | (haunt builder rss) |
85314da0 AB |
6 | (haunt html) |
7 | (haunt page) | |
8 | (haunt post) | |
9 | (haunt reader commonmark) | |
10 | (haunt site) | |
11 | (haunt utils) | |
12 | (ice-9 match) | |
13 | (srfi srfi-19)) | |
14 | ||
15 | (define (stylesheet name) | |
16 | `(link (@ (rel "stylesheet") | |
17 | (href ,(string-append "/" name ".css"))))) | |
18 | ||
19 | (define* (base-layout site body #:key title) | |
20 | `((doctype "html") | |
21 | (html | |
22 | (head | |
23 | (meta (@ (charset "utf-8"))) | |
24 | (title ,(if title (string-append title " — " (site-title site)) | |
25 | "Amin Bandali’s Personal Site")) | |
26 | ,(stylesheet "reset") | |
27 | ,(stylesheet "style")) | |
28 | (body | |
29 | (main ,body) | |
30 | (footer | |
31 | (p | |
32 | "Copyright 2016–2019 Amin Bandali. See " | |
33 | (a (@ (href "license.html")) "license.html") | |
34 | " for license conditions. Please copy and share.")))))) | |
35 | ||
36 | (define (bandali-post-template post) | |
37 | `((header | |
38 | (h1 ,(post-ref post 'title)) | |
39 | (address "By " | |
40 | (a (@ (href "/")) | |
41 | ,(post-ref post 'author)) | |
42 | " <" ,(post-ref post 'email) ">") | |
43 | (p (@ (class "date")) | |
44 | ,(date->string (post-date post) "~B ~d, ~Y"))) | |
45 | ,(post-sxml post))) | |
46 | ||
47 | (define (bandali-collection-template site title posts prefix) | |
48 | (define (post-uri post) | |
49 | (string-append (or prefix "") "/" | |
50 | (site-post-slug site post) ".html")) | |
51 | ||
52 | `((h3 ,title) | |
53 | (ul | |
54 | ,@(map (lambda (post) | |
55 | `(li | |
56 | (a (@ (href ,(post-uri post))) | |
57 | ,(post-ref post 'title)) | |
58 | " — " ,(date->string (post-date post) "~B ~d, ~Y"))) | |
59 | posts)))) | |
60 | ||
61 | (define bandali-theme | |
62 | (theme #:name "bandali" | |
63 | #:layout | |
64 | (lambda (site title body) | |
65 | (base-layout site body | |
66 | #:title title)) | |
67 | #:post-template bandali-post-template | |
68 | #:collection-template bandali-collection-template)) | |
69 | ||
70 | (define (index-material site posts) | |
71 | `(div | |
72 | (h1 (@ (style "font-size: 0;")) | |
73 | "Amin Bandali") | |
74 | (p (@ (style "margin-top: 0;")) | |
75 | "Hi, I’m " | |
76 | (a (@ (href "images/bandali-with-rms.jpg") | |
77 | (title ,(string-append | |
78 | "photo of bandali with rms wearing a " | |
79 | "“pay cash don’t be tracked” pin"))) | |
80 | "Amin Bandali") | |
81 | ". I’m a graduate student at " | |
82 | (a (@ (href "https://watform.uwaterloo.ca")) | |
83 | "WatForm") | |
84 | " at University of Waterloo, supervised by " | |
85 | (a (@ (href "https://cs.uwaterloo.ca/~nday/")) | |
86 | "Dr. Nancy Day") | |
87 | ". The main goal of my research is improving " | |
88 | (strong "software and systems reliability") | |
89 | " through application of " (em "formal methods") ".") | |
90 | (p "My research at WatForm focuses on formal logic, model " | |
91 | "checking, and verification. I’m also interested in " | |
92 | "programming languages, theorem provers, and their " | |
93 | "type systems. You may wish to view my academic " | |
94 | (a (@ (href "bandali-cv.html")) "curriculum vitae") ".") | |
95 | (p (@ (class "notice")) | |
96 | (strong "SE 212 students: ") | |
97 | "see " (a (@ (href "se212-f19/")) "here") " for slides and " | |
98 | "other material from the tutorials.") | |
99 | (p "On the side, I dabble in " | |
100 | (a (@ (href "https://leanprover.github.io")) "Lean") | |
101 | " and enjoy " | |
102 | (a (@ (href "https://stallman.org/articles/on-hacking.html")) | |
103 | "hacking") | |
104 | " on " | |
105 | (a (@ (href "https://www.gnu.org/software/emacs/manual/elisp.html")) | |
106 | "Elisp") | |
107 | ". I’m a " | |
108 | (a (@ (href "https://www.gnu.org/philosophy/free-sw.html")) | |
109 | "Free Software") | |
99ac860d | 110 | " activist, a GNU " |
85314da0 AB |
111 | (a (@ (href "https://www.gnu.org/people/#bandali")) |
112 | "maintainer") | |
113 | " and " | |
114 | (a (@ (href "https://www.gnu.org/people/webmeisters.html#bandali")) | |
115 | "webmaster") | |
99ac860d AB |
116 | ", and an " |
117 | (a (@ (href "https://www.fsf.org/associate/")) | |
118 | "associate member") | |
119 | " of the " (a (@ (href "https:///www.fsf.org") | |
120 | (title "Free Software Foundation")) "FSF") | |
85314da0 AB |
121 | ". I co-host the " |
122 | (a (@ (href "https://emacsel.com")) "Emacs.el") | |
123 | " podcast with " | |
99ac860d AB |
124 | (a (@ (href "https://www.pygopar.com")) "Daniel Gopar") |
125 | ", and organize " | |
85314da0 AB |
126 | (a (@ (href "https://emacsconf.org")) "EmacsConf") " with help" |
127 | " from many wonderful people. I am also a member of the" | |
128 | " Systems Committee for the " | |
129 | (a (@ (href "https://csclub.uwaterloo.ca") | |
130 | (title ,(string-append | |
131 | "Computer Science Club of the " | |
132 | "University of Waterloo"))) "CSC") | |
133 | ".") | |
134 | (p "See my " (a (@ (href "contact.html")) "contact") " page for " | |
135 | "how to best reach me.") | |
136 | (h2 (@ (id "papers")) "Papers") | |
137 | (dl | |
138 | (dt "A Comparison of the Declarative Modelling Languages B, DASH, | |
139 | and TLA" (sup "+") | |
140 | (span (@ (class "plinks")) | |
141 | " [ " | |
142 | (a (@ (href "papers/modre2018-declarative.pdf")) | |
143 | "pdf") | |
144 | " | " | |
145 | (a (@ (href "papers/modre2018-declarative.bib")) | |
146 | "bib") | |
147 | " ]")) | |
148 | (dd "Ali Abbassi, " | |
149 | (a (@ (href "https://bandali.eu.org")) "Amin Bandali") ", " | |
150 | (a (@ (href "https://cs.uwaterloo.ca/~nday/")) | |
151 | "Nancy A. Day") | |
152 | ", and Jose Serna" | |
153 | (br) | |
154 | (em "2018 IEEE 8th International Model-Driven Requirements" | |
155 | " Engineering Workshop (MoDRE)") | |
156 | (br) | |
157 | "Copyright © 2018 IEEE. All Rights Reserved. Sadly.")) | |
158 | (h2 (@ (id "talks")) "Talks") | |
159 | (dl | |
160 | (dt | |
161 | "The Magic of Specifications and Type Systems" | |
162 | (span (@ (class "plinks")) | |
163 | " [ " | |
164 | (a (@ (href "talks/cucsc-2017-slides.pdf") | |
165 | (title ,(string-append | |
166 | "presented at the Canadian Undergraduate" | |
167 | " Computer Science Conference 2017,\n" | |
168 | "University of Toronto, Canada," | |
169 | "June 15–17, 2017"))) | |
170 | "slides") | |
171 | " | " | |
172 | (a (@ (href "talks/eecs4080-poster.pdf") | |
173 | (title ,(string-append | |
174 | "presented at the Lassonde Undergraduate" | |
175 | " Summer Student Research Conference,\n" | |
176 | "York University, Toronto, Canada," | |
177 | "August 15, 2017"))) | |
178 | "poster") | |
179 | " ]")) | |
180 | (dd (a (@ (href "https://bandali.eu.org")) "Amin Bandali") ", " | |
181 | (a (@ (href "https://github.com/cipher1024")) | |
182 | "Simon Hudon") | |
183 | ", " | |
184 | (a (@ (href "http://www.cse.yorku.ca/~jonathan/")) | |
185 | "Jonathan S. Ostroff"))) | |
186 | (h2 (@ (id "projects")) "Projects") | |
187 | (p "Below are a number of free software projects I have worked " | |
188 | "on:") | |
189 | (dl | |
190 | (dt (a (@ (href "https://git.sr.ht/~bandali/george-mode")) | |
191 | "george-mode")) | |
192 | (dd "Emacs major mode for editing George files") | |
193 | (dt (a (@ (href "https://git.uwaterloo.ca/bandali/alloy-catalyst")) | |
194 | "alloy-catalyst")) | |
195 | (dd "Framework for performance analysis of Alloy models") | |
196 | (dt (a (@ (href "https://github.com/unitb/unitb-web")) | |
197 | "unitb-web")) | |
198 | (dd "Web interface for Unit-B") | |
199 | (dt (a (@ (href "https://github.com/unitb/tex2png-hs")) | |
200 | "tex2png-hs")) | |
201 | (dd "Library and CLI for converting TeX and LaTeX to PNG " | |
202 | "images")) | |
203 | (h2 (@ (id "notes")) "Notes") | |
60d388df AB |
204 | (table |
205 | (@ (class "post-list")) | |
206 | (tbody | |
85314da0 AB |
207 | ,@(map |
208 | (lambda (post) | |
209 | (define (post-uri post) | |
210 | (string-append "/" | |
211 | (site-post-slug site post) ".html")) | |
60d388df AB |
212 | `(tr |
213 | (td (a (@ (href ,(post-uri post))) | |
214 | ,(post-ref post 'title))) | |
215 | (td (@ (style "font-size: 0.875em;")) | |
216 | ,(date->string (post-date post) "~B ~d, ~Y")))) | |
217 | (take-up-to 10 (posts/reverse-chronological posts))))))) | |
85314da0 AB |
218 | |
219 | (define (index-page site posts) | |
220 | (make-page | |
221 | "index.html" | |
222 | (base-layout site (index-material site posts)) | |
223 | sxml->html)) | |
224 | ||
225 | (define my-domain "bandali.eu.org") | |
226 | ||
227 | (site #:title "Amin Bandali" | |
228 | #:domain my-domain | |
229 | #:default-metadata | |
230 | '((author . "Amin Bandali") | |
231 | (email . "bandali@gnu.org") | |
232 | (domain . my-domain)) | |
233 | #:readers (list commonmark-reader) | |
234 | #:builders (list (blog #:theme bandali-theme | |
235 | #:collections | |
236 | `(("Notes" "notes.html" | |
237 | ,posts/reverse-chronological))) | |
238 | index-page | |
99ac860d AB |
239 | (atom-feed |
240 | #:file-name "feed.atom") | |
241 | (atom-feeds-by-tag | |
242 | #:prefix "tags") | |
243 | (rss-feed | |
244 | #:file-name "feed.rss") | |
85314da0 | 245 | (static-directory "static" ""))) |