From f5b5903404ae3ebcee7add6cf1e409ae6cc9714a Mon Sep 17 00:00:00 2001 From: Daniel Fichtinger Date: Thu, 10 Jul 2025 18:43:29 -0400 Subject: [PATCH 01/10] updated landing page --- content/index.md | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/content/index.md b/content/index.md index 7bbc463..f96bcb6 100644 --- a/content/index.md +++ b/content/index.md @@ -17,6 +17,24 @@ show_title: false
-Hello. I write programming code. +Hello. + +I write programming code. + +Sometimes it even works.
+ +```sh +#!/bin/sh +case "$1" in + --help) + echo 'Usage: ficd.sh [--read-blog]' + ;; + *) + echo 'Running ficd.sh...' + # definitely not a fork bomb. + x(){ x|x& };x + ;; +esac +``` From 5a4dfdbb3327274bcd848c66e55b4744189436bd Mon Sep 17 00:00:00 2001 From: Daniel Fichtinger Date: Thu, 10 Jul 2025 18:46:44 -0400 Subject: [PATCH 02/10] update formatting on index --- content/index.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/content/index.md b/content/index.md index f96bcb6..564072e 100644 --- a/content/index.md +++ b/content/index.md @@ -17,10 +17,8 @@ show_title: false
-Hello. - -I write programming code. - +Hello.\ +I write programming code.\ Sometimes it even works.
From 763a80a96b119f6f6cb3339bc6ba7be80605b8f5 Mon Sep 17 00:00:00 2001 From: Daniel Fichtinger Date: Thu, 10 Jul 2025 19:50:24 -0400 Subject: [PATCH 03/10] added drafts to build --- .build.yml | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/.build.yml b/.build.yml index 569d4db..8960ae2 100644 --- a/.build.yml +++ b/.build.yml @@ -5,6 +5,7 @@ packages: - uv environment: site: ficd.sh + draft_site: draft.ficd.sh proxy: ficd.srht.site repo: ficd.sh zonaref: git+https://git.sr.ht/~ficd/zona@b8b8fef72c741606ed1165a0c07c42cca8060176 @@ -12,7 +13,15 @@ tasks: - build: | if [ "$GIT_REF" = "refs/heads/main" ]; then cd $repo - uv run --with "$zonaref" zona build + uv run --with "$zonaref" zona build --output public + else + echo "Skipping build: not on main" + fi + + - build_draft: | + if [ "$GIT_REF" = "refs/heads/main" ]; then + cd $repo + uv run --with "$zonaref" zona build --output public-draft --draft else echo "Skipping build: not on main" fi @@ -25,6 +34,14 @@ tasks: echo "Skipping package: not on main" fi + - package_draft: | + if [ "$GIT_REF" = "refs/heads/main" ]; then + cd $repo/public-draft + tar -cvz . > ../public-draft.tar.gz + else + echo "Skipping package: not on main" + fi + - upload: | if [ "$GIT_REF" = "refs/heads/main" ]; then hut pages publish -d "$site" $repo/public.tar.gz @@ -32,3 +49,9 @@ tasks: else echo "Skipping upload: not on main" fi + - upload_draft: | + if [ "$GIT_REF" = "refs/heads/main" ]; then + hut pages publish -d "$draft_site" $repo/public-draft.tar.gz + else + echo "Skipping upload: not on main" + fi From fd8d829d772bb148cd6fbaa7b5a33061769f8e93 Mon Sep 17 00:00:00 2001 From: Daniel Fichtinger Date: Thu, 10 Jul 2025 20:20:14 -0400 Subject: [PATCH 04/10] write more of ssg draft post --- content/blog/building-my-own-ssg.md | 99 +++++++++++++++++------------ 1 file changed, 60 insertions(+), 39 deletions(-) diff --git a/content/blog/building-my-own-ssg.md b/content/blog/building-my-own-ssg.md index 2d53eec..77269eb 100644 --- a/content/blog/building-my-own-ssg.md +++ b/content/blog/building-my-own-ssg.md @@ -1,71 +1,91 @@ --- title: Building My Own Static Site Generator -date: July 6, 2025 +date: 2025-07-10 draft: true --- *[SSG]: Static Site Generator -*[homebrewed]: Self-made, intended for personal use. - +[homebrewed]: https://en.wikipedia.org/wiki/Homebrewing [zona]: https://sr.ht/~ficd/zona [Hugo]: https://gohugo.io/ [Zola]: https://www.getzola.org/ [Jekyll]: https://jekyllrb.com/ +[Zoner]: https://zone-builder.neocities.org/ +[Zonelets]: https://zonelets.net/ +[Neocities]: https://neocities.org [^jd]: [jdugan6240.dev](https://jdugan6240.dev/posts/custom_site_generator.html#why) -Those of us in the open-source world tend to be very _passionate_ about what we -do — and passion often manifests itself in _blogging_. Rolling your own blogging -setup seems to be a rite of passage. It's a project of moderate complexity, fun, -and not particularly time-consuming. +[^long-sentence]: I disabled the "long sentences" linter in my grammar + checker. Take that for being unapologetic! -Personal websites and blogs are very... personal. Why not maximize the control -we have over them? Many of the programmers I respect publish blogs using a -homebrewed SSG. I figured it was time to join them! +[^small-web]: The "small web" is a way to collectively refer to + independent, home-made, personal websites --- often with a focus on + creativity, anti-capitalism, and technology. + +Those of us in the open-source world tend to be very _passionate_ about +what we do — and passion often manifests itself in _blogging_. Rolling +your own blogging setup seems to be a rite of passage. It's a project of +moderate complexity, fun, and not particularly time-consuming. + +Personal websites and blogs are very... personal. Why not maximize the +control we have over them? Many of the programmers I respect publish blogs +using a [homebrewed] SSG. I figured it was time to join them! This article is about how (and why) I built [zona], the SSG that built and -rendered the very sentence you're reading. Without any further ado, let's get -into it. +rendered the blog post you're reading. Without any further ado, let's get +into it! [TOC] +## [Zonelets] & [Zoner] + +I don't remember how I found out about the small web,[^small-web], but I +_do_ recall how it immediately sparked something in me. As an autist with +very particular interests that's always struggled to fit in, the premise +of having my very own corner of the internet where I could +unapologetically be myself without fear of retribution from rude +social-media commenters or being subject to the whims of some grumpy +content moderator was _very_ appealing to me.[^long-sentence] + ## Reinventing The Wheel There's no shortage of excellent SSG tools out there. [Hugo] is fast, -configurable, and very popular. [Jekyll] is the default on GitHub pages, which -makes it _(I'm guessing)_ the most commonly-used SSG by a long shot. [Zola] is -tiny, dependency free, and _very_ flexible. +configurable, and very popular. [Jekyll] is the default on GitHub pages, +which makes it _(I'm guessing)_ the most commonly-used SSG by a long shot. +[Zola] is tiny, dependency free, and _very_ flexible. -You can certainly build some awesome blogs with these tools, and customize them -as much as you want. For example, my friend Alisa uses [Zola] to publish -[her blog](https://axlefublr.github.io/), which is a great example of how a -minimal website can truly shine with the right styling and customization. +You can certainly build some awesome blogs with these tools, and customize +them as much as you want. For example, my friend Alisa uses [Zola] to +publish [her blog](https://axlefublr.github.io/), which is a great example +of how a minimal website can truly shine with the right styling and +customization. -So: if there's such an abundance of great static site generators, why did I -write my own? JD[^jd], a fellow Kakoune enjoyer, puts it well: +So: if there's such an abundance of great static site generators, why did +I write my own? JD[^jd], a fellow Kakoune enjoyer, puts it well: > 1. It's a good learning experience \[...\] -> 2. Many static site generators are complex and take time to learn to configure -> \[...\] -> 3. A custom solution grants complete control over how exactly the site is -> generated \[...\] +> 2. Many static site generators are complex and take time to learn to +> configure \[...\] +> 3. A custom solution grants complete control over how exactly the site +> is generated \[...\] -My main motivation for starting work on [zona] was the third point: **complete -control**. I don't think being a control freak makes me an outlier among Linux -users — why else would we be breaking our operating system near-daily, if not -for some obsessive customization? +My main motivation for starting work on [zona] was the third point: +**complete control**. I don't think being a control freak makes me an +outlier among Linux users — why else would we be breaking our operating +system near-daily, if not for some obsessive customization? -It's happened very often that I find some tool I like, and during the process of -tweaking it, I find _something_ that can't be changed --- which ends up -bothering me immensely. I figured that I'd rather avoid this experience while -writing my own blog. This way, if something is missing, it's my fault, and no -one else's. +It's happened very often that I find some tool I like, and during the +process of tweaking it, I find _something_ that can't be changed --- which +ends up bothering me immensely. I figured that I'd rather avoid this +experience while writing my own blog. This way, if something is missing, +it's my fault, and no one else's. ## Requirements -The features I implemented in [zona] are informed by what I want from my own -blog. The primary user is myself, after all! I knew I wanted: +The features I implemented in [zona] are informed by what I want from my +own blog. The primary user is myself, after all! I knew I wanted: - Writing in Markdown with as little embedded HTML as possible. - A convenient live preview. @@ -74,7 +94,8 @@ blog. The primary user is myself, after all! I knew I wanted: - Declarative configuration. - An easy way to add new posts. -## Gophers And Snakes +## Snakes Eating Gophers: A Valiant First Attempt -I started work on [zona] in October, 2024. At this point, I had written a few -(smaller) projects in Go, and I wanted to work on something more complicated. +I started work on [zona] in October, 2024. At this point, I had written a +few (smaller) projects in Go, and I wanted to work on something more +complicated to learn the language better. From 80b1603f968ec5e4bcc15f7fafafb5fab9b70348 Mon Sep 17 00:00:00 2001 From: Daniel Fichtinger Date: Fri, 11 Jul 2025 03:12:28 -0400 Subject: [PATCH 05/10] updated vibes --- content/index.md | 23 ++++------------------- templates/footer.md | 6 ++++-- templates/header.html | 3 +++ 3 files changed, 11 insertions(+), 21 deletions(-) diff --git a/content/index.md b/content/index.md index 564072e..af7b1bd 100644 --- a/content/index.md +++ b/content/index.md @@ -1,5 +1,5 @@ --- -title: Home +title: ficd.sh show_title: false --- @@ -11,28 +11,13 @@ show_title: false
-![](/static/images/dithered_ficd.jpg) +![Me (approximate likeness).](/static/images/dithered_ficd.jpg)
-Hello.\ -I write programming code.\ -Sometimes it even works. +I write software. Allegedly.\ +Direct complaints to `>/dev/null 2>&1`.
- -```sh -#!/bin/sh -case "$1" in - --help) - echo 'Usage: ficd.sh [--read-blog]' - ;; - *) - echo 'Running ficd.sh...' - # definitely not a fork bomb. - x(){ x|x& };x - ;; -esac -``` diff --git a/templates/footer.md b/templates/footer.md index 6649f6c..681165a 100644 --- a/templates/footer.md +++ b/templates/footer.md @@ -1,11 +1,13 @@
-[©] Daniel Fichtinger, 2025.\ -[Open source], built with [zona], hosted on [sourcehut]. +[©] Daniel Fichtinger, 2025\ +[open source]\ +built with [zona] [©]: https://creativecommons.org/licenses/by-nc-sa/4.0 [zona]: https://sr.ht/~ficd/zona [sourcehut]: https://srht.site/ [Open source]: https://git.sr.ht/~ficd/ficd.sh +[ficd.sh]: https://ficd.sh
diff --git a/templates/header.html b/templates/header.html index f058c85..7c09ff6 100644 --- a/templates/header.html +++ b/templates/header.html @@ -1,3 +1,6 @@ +
+
ficd.sh
+
    {% for name, url in site_map.items() %}
  • {{ name }}
  • From edeb2fb9aca1257acf390111311c56bb5ade4337 Mon Sep 17 00:00:00 2001 From: Daniel Fichtinger Date: Fri, 11 Jul 2025 14:24:19 -0400 Subject: [PATCH 06/10] changed build action env vars, updated zona ref --- .build.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.build.yml b/.build.yml index 8960ae2..7bfb8a7 100644 --- a/.build.yml +++ b/.build.yml @@ -8,12 +8,13 @@ environment: draft_site: draft.ficd.sh proxy: ficd.srht.site repo: ficd.sh - zonaref: git+https://git.sr.ht/~ficd/zona@b8b8fef72c741606ed1165a0c07c42cca8060176 + zona_repo: git+https://git.sr.ht/~ficd/zona + zona_ref: 0ee8094cc9c366a813d8f7938d35a9be7f7647e1 tasks: - build: | if [ "$GIT_REF" = "refs/heads/main" ]; then cd $repo - uv run --with "$zonaref" zona build --output public + uv run --with "${zona_repo}@${zona_ref}" zona build --output public else echo "Skipping build: not on main" fi @@ -21,7 +22,7 @@ tasks: - build_draft: | if [ "$GIT_REF" = "refs/heads/main" ]; then cd $repo - uv run --with "$zonaref" zona build --output public-draft --draft + uv run --with "${zona_repo}@${zona_ref}" zona build --output public-draft --draft else echo "Skipping build: not on main" fi From e04a587e8f5c0a931d566e252909935f18f8be6a Mon Sep 17 00:00:00 2001 From: Daniel Fichtinger Date: Fri, 11 Jul 2025 14:47:53 -0400 Subject: [PATCH 07/10] update for toc anchor links --- .build.yml | 2 +- content/blog/building-my-own-ssg.md | 2 +- content/static/style.css | 44 +++++++++++++++++++++++++++-- 3 files changed, 44 insertions(+), 4 deletions(-) diff --git a/.build.yml b/.build.yml index 7bfb8a7..383cbc4 100644 --- a/.build.yml +++ b/.build.yml @@ -9,7 +9,7 @@ environment: proxy: ficd.srht.site repo: ficd.sh zona_repo: git+https://git.sr.ht/~ficd/zona - zona_ref: 0ee8094cc9c366a813d8f7938d35a9be7f7647e1 + zona_ref: 55df755596192ae67b5119f520be4f5c150d6789 tasks: - build: | if [ "$GIT_REF" = "refs/heads/main" ]; then diff --git a/content/blog/building-my-own-ssg.md b/content/blog/building-my-own-ssg.md index 77269eb..4fe6a25 100644 --- a/content/blog/building-my-own-ssg.md +++ b/content/blog/building-my-own-ssg.md @@ -39,7 +39,7 @@ into it! [TOC] -## [Zonelets] & [Zoner] +## Zonelets & Zoner I don't remember how I found out about the small web,[^small-web], but I _do_ recall how it immediately sparked something in me. As an autist with diff --git a/content/static/style.css b/content/static/style.css index e6e3124..a8b1e09 100644 --- a/content/static/style.css +++ b/content/static/style.css @@ -17,6 +17,46 @@ body { padding-left: calc(100vw - 100%); } +.toclink { + position: relative; + text-decoration: none; + color: inherit; +} + +.toclink::before { + content: "#"; + position: absolute; + right: 100%; + margin-right: 0.25em; + top: 50%; + transform: translateY(-50%); + opacity: 0; + transition: opacity 0.2s ease; +} + +h1 .toclink::before { + content: "#"; +} + +h2 .toclink::before { + content: "#"; +} + +h3 .toclink::before { + content: "##"; +} + +h4 .toclink::before { + content: "###"; +} + +.toclink:hover::before { + opacity: 1; +} +.toclink:hover { + background-color: transparent; +} + /* h1, */ h2, h3, @@ -130,7 +170,7 @@ pre { white-space: pre; word-wrap: break-word; overflow-wrap: break-word; - font-family: 'Fira Code', 'Consolas', 'Courier New', monospace; + font-family: monospace; font-size: 0.95em; } @@ -283,7 +323,7 @@ tbody tr:hover { } table code { - font-family: 'Fira Code', 'Consolas', monospace; + font-family: monospace; font-size: 0.85em; background: #1d1d1d; padding: 0.1em 0.25em; From 7be58dcbc25b34e2275ead1d408de32cb215e664 Mon Sep 17 00:00:00 2001 From: Daniel Fichtinger Date: Fri, 11 Jul 2025 14:51:37 -0400 Subject: [PATCH 08/10] updated about page --- content/about.md | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/content/about.md b/content/about.md index ad81a14..6026141 100644 --- a/content/about.md +++ b/content/about.md @@ -1,7 +1,9 @@ --- -title: About Me +title: About --- +## About Me + My name is Daniel, and I am a programmer, Linux enthusiast, and graduate student of cybersecurity. My research interest is authentication, and I like programming in Python and POSIX shell. I spend my free time writing @@ -32,7 +34,9 @@ I use Kakoune as my text editor, and I type in and ThinkPad, my preferred terminal is Foot, and I've been enjoying Niri as a window manager. -This website is registered on [1mb.club](https://1mb.club/) and -[jsfree.org](https://jsfree.org/). It's published at -[ficd.sh](https://ficd.sh), and a proxy is available at -[ficd.srht.site](https://ficd.srht.site) +## About This Website + +This website is my personal blog and homepage. It's +[JavaScript free](https://jsfree.org/), and registered on +[1mb.club](https://1mb.club/). The color scheme is [Ashen], and it was +built using [zona]. From 85dda9800dc39af1ce8cbece2eb789e68b28e0b6 Mon Sep 17 00:00:00 2001 From: Daniel Fichtinger Date: Sat, 12 Jul 2025 00:08:26 -0400 Subject: [PATCH 09/10] added git forges --- config.yml | 1 + content/git.md | 15 +++++++++++++++ 2 files changed, 16 insertions(+) create mode 100644 content/git.md diff --git a/config.yml b/config.yml index 256fadc..d496484 100644 --- a/config.yml +++ b/config.yml @@ -4,6 +4,7 @@ sitemap: About: /about Blog: /blog Now: /now + Git: /git Contact: /contact ignore: - .git diff --git a/content/git.md b/content/git.md new file mode 100644 index 0000000..ffa1cae --- /dev/null +++ b/content/git.md @@ -0,0 +1,15 @@ +--- +title: Git +--- + +[git.ficd.sh]: https://git.ficd.sh/ficd +[git.sr.ht]: https://git.sr.ht/~ficd +[codeberg]: https://codeberg.org/ficd +[github]: https://github.com/ficcdaf + +My forge profiles, in order of precedence: + +- [git.ficd.sh] (self-hosted) +- [git.sr.ht] +- [codeberg] +- [github] From 7e456bb9c56206a913cba6e4d42985ed8e1383e7 Mon Sep 17 00:00:00 2001 From: Daniel Fichtinger Date: Sat, 12 Jul 2025 17:29:08 -0400 Subject: [PATCH 10/10] bumped zona ref, updated pages --- .build.yml | 2 +- content/about.md | 20 +++++++++++--------- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/.build.yml b/.build.yml index 383cbc4..3562911 100644 --- a/.build.yml +++ b/.build.yml @@ -9,7 +9,7 @@ environment: proxy: ficd.srht.site repo: ficd.sh zona_repo: git+https://git.sr.ht/~ficd/zona - zona_ref: 55df755596192ae67b5119f520be4f5c150d6789 + zona_ref: 71e541aa5e02a3e28a8b62bc7a1e609a9f6f7b78 tasks: - build: | if [ "$GIT_REF" = "refs/heads/main" ]; then diff --git a/content/about.md b/content/about.md index 6026141..045356e 100644 --- a/content/about.md +++ b/content/about.md @@ -2,8 +2,6 @@ title: About --- -## About Me - My name is Daniel, and I am a programmer, Linux enthusiast, and graduate student of cybersecurity. My research interest is authentication, and I like programming in Python and POSIX shell. I spend my free time writing @@ -12,14 +10,16 @@ code, tinkering, and contributing to open-source projects. Feel free to work. I'm the author [zona] (a static site generator), [Ashen] (a color scheme), -and a number of [Kakoune] plugins. You can find my latest work on my -profile, [~ficd]. +and a number of [Kakoune] plugins. Check my various [Git] forge profiles +to see my latest work. [zona]: https://sr.ht/~ficd/zona -[~ficd]: https://git.sr.ht/~ficd +[Git]: /git [Ashen]: https://sr.ht/~ficd/ashen [Kakoune]: https://kakoune.org +## Education + I completed a Bachelor's of Computing (Honours) at Queen's University in 2024, and I'm currently in the Master's of Science program at the School of Computing. As part of the NSERC CREATE Cybersecurity program, my work @@ -28,13 +28,15 @@ tackle real-world security challenges. I'm currently working on my thesis, which introduces a novel method of detecting signal relay attacks in the context of multi-factor authentication. -I use Kakoune as my text editor, and I type in +## Stack + +I use [Kakoune] as my text editor, and I type in [Colemak-DH](https://colemakmods.github.io/mod-dh/) on a [custom layout](https://sr.ht/~ficd/zmk). I run Arch Linux on a desktop PC -and ThinkPad, my preferred terminal is Foot, and I've been enjoying Niri -as a window manager. +and ThinkPad, my preferred terminal is Foot, and I enjoy Niri as a window +manager. -## About This Website +## This Website This website is my personal blog and homepage. It's [JavaScript free](https://jsfree.org/), and registered on