summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorThomas Voss <mail@thomasvoss.com> 2024-02-23 01:01:29 +0100
committerThomas Voss <mail@thomasvoss.com> 2024-02-23 01:01:29 +0100
commitbc9b490ea8afc2feec6f39dc1dafc5ea11d6b8d6 (patch)
tree211edf1fcd4e494b114374179285463c9530faaf
parent79b7ac752e18672935b887fcaccdc360a5ea7eee (diff)
More things
-rw-r--r--.exrc14
-rw-r--r--.gitignore1
-rw-r--r--GNUmakefile10
-rw-r--r--include/foot.gsp1
-rw-r--r--m4/anchor-blank.m41
-rw-r--r--m4/newtab.m41
-rw-r--r--src/index.gsp2
-rw-r--r--src/me/index.gsp82
-rw-r--r--src/www/index.gsp46
9 files changed, 117 insertions, 41 deletions
diff --git a/.exrc b/.exrc
index 1eb5cfb..0d9ddf4 100644
--- a/.exrc
+++ b/.exrc
@@ -1,8 +1,14 @@
-" Autowrap lines
-set tw=80
+function s:build()
+ update
+ make!
+ let qf = getqflist()
+ if len(filter(getqflist(), 'get(v:val, "valid", 1)')) == 0
+ call feedkeys(" ")
+ endif
+endfunction
-" Auto-compile the site
-nnoremap M :w \| make<CR><CR>
+nnoremap <silent> M :call <sid>build()<cr>
+set tw=80
let g:netrw_sort_sequence = '^index.gsp$,[\/]$,'
let g:netrw_list_hide .= ',^.*\.html$'
diff --git a/.gitignore b/.gitignore
index 27e48c4..5e3cdbf 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,3 @@
+*.bak
*.html
.aspell.en.prepl
diff --git a/GNUmakefile b/GNUmakefile
index 852c272..75d10af 100644
--- a/GNUmakefile
+++ b/GNUmakefile
@@ -1,26 +1,24 @@
-.PHONY: check clean serve watch
+.PHONY: check clean serve
MAKEFLAGS := -j$(shell nproc)
export PATH := $(PATH):./bin
export LANG := en_US.UTF-8
+reqs := $(shell find include m4 -type f)
srcs := $(shell find src -type f -name 'index.gsp')
dsts := $(srcs:%.gsp=%.html)
all: $(dsts)
-%.html: %.gsp
+%.html: %.gsp $(reqs)
m4 -P -Iinclude m4/* $< | gsp >$@
check:
find src -name '*.gsp' -exec \
- aspell --home-dir=./ --ignore-case check {} \;
+ aspell --personal=.wordlist --ignore-case check {} \;
clean:
find . -name '*.html' -delete
serve:
darkhttpd src --daemon
-
-watch:
- git ls-files --others | entr -n $(MAKE)
diff --git a/include/foot.gsp b/include/foot.gsp
index 9923499..8913ae8 100644
--- a/include/foot.gsp
+++ b/include/foot.gsp
@@ -1,3 +1,4 @@
+hr{}
small {=
Page last edited:
@a
diff --git a/m4/anchor-blank.m4 b/m4/anchor-blank.m4
deleted file mode 100644
index c687d7c..0000000
--- a/m4/anchor-blank.m4
+++ /dev/null
@@ -1 +0,0 @@
-m4_define(ANCHOR_BLANK, ⁨a target="_blank"⁩)
diff --git a/m4/newtab.m4 b/m4/newtab.m4
new file mode 100644
index 0000000..7aa8ba2
--- /dev/null
+++ b/m4/newtab.m4
@@ -0,0 +1 @@
+m4_define(NEWTAB, ⁨a target="_blank"⁩)
diff --git a/src/index.gsp b/src/index.gsp
index 6e20bae..e233602 100644
--- a/src/index.gsp
+++ b/src/index.gsp
@@ -33,8 +33,6 @@ html lang="en" {
li {a href="www" {-Other Websites}}
}
- hr{}
-
footer { FOOT }
}
}
diff --git a/src/me/index.gsp b/src/me/index.gsp
new file mode 100644
index 0000000..b05446d
--- /dev/null
+++ b/src/me/index.gsp
@@ -0,0 +1,82 @@
+html lang="en" {
+ head { HEAD }
+ body {
+ header {
+ div {
+ h1 {-About Me}
+ INCLUDE(nav.gsp)
+ }
+
+ figure .quote {
+ blockquote {
+ p {=
+ One obvious advantage [of lisp syntax] is that there hardly *is* any
+ syntax. You can learn enough Lisp syntax to write useful programs
+ in about ten minutes.
+ }
+ }
+ figcaption {-Mark J. Dominus}
+ }
+ }
+
+ main {
+ p {=
+ If you are a prospective employer, you can view my CV
+ @NEWTAB href="https://cv.thomasvoss.com" {-here}.
+ }
+
+ h2 {-Who Am I}
+
+ p {=
+ I’m Thomas, a self-taught recreational programmer. I like simplicity,
+ and I take pride in actually understanding how my code works. This
+ means I am deathly allergic to many things that plague modern software
+ development. Things that include but are not limited to:
+
+ @ul {
+ li {-All web frameworks}
+ li {-C++ and JavaScript}
+ li {-CLEAN}
+ li {-CMake}
+ li {-DRY}
+ li {-Over abstraction}
+ }
+ }
+
+ p {=
+ Shoutouts to
+ @NEWTAB href="https://www.instructables.com/member/Prof.%20Pickle/" {=
+ Prof. Pickle on Instructables
+ }
+ by the way. Most of his stuff seems to have been deleted all these
+ years later, but he was the guy that first got me into programming when
+ I was in elementary school.
+ }
+
+ p {=
+ These days my interests lie mostly in CLI development. I take a great
+ joy in writing simple yet highly effective tools to solve problems not
+ only in an easy-yet-extensible manner. I think my batch file-renaming
+ utility @em {-mmv} @a href="TODO" {-does a great job at that}.
+ }
+
+ p {=
+ That being said, I also have a great interest in operating systems,
+ shells, and really anything that could be considered remotely low-level.
+ I’m not totally afraid of front-end development, although I @em {-did}
+ write this site in plain HTML and CSS because modern HTML frameworks are
+ the worst excuses for software I have ever seen.
+ }
+
+ p {=
+ At the end of the day, I am a recreational programmer at heart and can
+ and will code whatever interests me in the moment (CLI tools, emulators,
+ Unicode libraries, etc.). I reject the premise that you need to write
+ software for other people, that other people will use, or even software
+ that you will use. I code for the joy of programming.
+ }
+ }
+
+ footer { FOOT }
+ }
+}
diff --git a/src/www/index.gsp b/src/www/index.gsp
index 400ea4c..ca67690 100644
--- a/src/www/index.gsp
+++ b/src/www/index.gsp
@@ -28,32 +28,32 @@ html lang="en" {
h3 {-My Websites}
ul {
li {
- ANCHOR_BLANK href="https://archive.thomasvoss.com" {=
+ NEWTAB href="https://archive.thomasvoss.com" {=
@cite{-archive} — Mario Kart Wii time trials archive
}
}
li {
- ANCHOR_BLANK href="https://cv.thomasvoss.com" {=
+ NEWTAB href="https://cv.thomasvoss.com" {=
@cite{-cv} — my résumé/curriculum vitæ
}
}
li {
- ANCHOR_BLANK href="https://euro.thomasvoss.com" {=
+ NEWTAB href="https://euro.thomasvoss.com" {=
@cite{-euro} — my euro coin and -banknote collection
}
}
li {
- ANCHOR_BLANK href="https://git.thomasvoss.com" {=
+ NEWTAB href="https://git.thomasvoss.com" {=
@cite{-git} — my git server
}
}
li {
- ANCHOR_BLANK href="https://paste.thomasvoss.com" {=
+ NEWTAB href="https://paste.thomasvoss.com" {=
@cite{-paste} — my paste server
}
}
li {
- ANCHOR_BLANK href="https://retime.mcbe.wtf" {=
+ NEWTAB href="https://retime.mcbe.wtf" {=
@cite{-retime} — a webtool for retiming speedruns
}
}
@@ -62,37 +62,37 @@ html lang="en" {
h3 {-Not My Websites}
ul {
li {
- ANCHOR_BLANK href="https://classicshorts.com" {=
+ NEWTAB href="https://classicshorts.com" {=
@cite{-classicshorts} — a collection of short stories
}
}
li {
- ANCHOR_BLANK href="https://iannis.io" {=
+ NEWTAB href="https://iannis.io" {=
@cite{-iannis.io} — blog posts on programming topics
}
}
li {
- ANCHOR_BLANK href="https://redblobgames.com" {=
+ NEWTAB href="https://redblobgames.com" {=
@cite{-redblobgames} — algorithms in the context of video games
}
}
li {
- ANCHOR_BLANK href="https://tdmm.eu" {=
+ NEWTAB href="https://tdmm.eu" {=
@cite{-tdmm} — blog posts on low-level development
}
}
li {
- ANCHOR_BLANK href="https://bal-e.org/blog" {=
+ NEWTAB href="https://bal-e.org/blog" {=
@cite{-bal-e} — it’s like tdmm.eu I guess
}
}
li {
- ANCHOR_BLANK href="http://textfiles.com" {=
+ NEWTAB href="http://textfiles.com" {=
@cite{-textfiles} — a collection of thousands of plain-text files
}
}
li {
- ANCHOR_BLANK href="https://cat-v.org" {=
+ NEWTAB href="https://cat-v.org" {=
@cite{-cat-v} — @q{-The Internet is not for sissies.}
}
}
@@ -102,9 +102,7 @@ html lang="en" {
p {-For those unfamiliar with Lisp:}
ul {
li {
- ANCHOR_BLANK
- href="https://web.archive.org/web/20230619115633/http://lists.warhead.org.uk/pipermail/iwe/2005-July/000130.html"
- {
+ NEWTAB href="https://web.archive.org/web/20230619115633/http://lists.warhead.org.uk/pipermail/iwe/2005-July/000130.html" {
cite {-Why Lisp Macros are Cool}
}
}
@@ -113,23 +111,17 @@ html lang="en" {
p {-Alternative approaches to common problems:}
ul {
li {
- ANCHOR_BLANK
- href="https://doc.cat-v.org/plan_9/4th_edition/papers/rc"
- {
+ NEWTAB href="https://doc.cat-v.org/plan_9/4th_edition/papers/rc" {
cite {-Rc — The Plan 9 Shell}
}
}
li {
- ANCHOR_BLANK
- href="https://doc.cat-v.org/inferno/4th_edition/inferno_shell"
- {
+ NEWTAB href="https://doc.cat-v.org/inferno/4th_edition/inferno_shell" {
cite {-Sh — The Inferno Shell}
}
}
li {
- ANCHOR_BLANK
- href="https://doc.cat-v.org/bell_labs/structural_regexps/se.pdf"
- {
+ NEWTAB href="https://doc.cat-v.org/bell_labs/structural_regexps/se.pdf" {
cite {-Structural Regular Expressions — Rob Pike}
}
}
@@ -138,9 +130,7 @@ html lang="en" {
p {-Interesting talks (these are videos):}
ul {
li {
- ANCHOR_BLANK
- href="https://www.youtube.com/watch?v=HxaD_trXwRE"
- {
+ NEWTAB href="https://www.youtube.com/watch?v=HxaD_trXwRE" {
cite {-Lexical Scanning in Go — Rob Pike}
}
}