From b0d10c062370a7700908faf59b7656882dd0c21a Mon Sep 17 00:00:00 2001 From: m1ka Date: Fri, 2 Oct 2026 16:16:23 +0200 Subject: [PATCH] nearly done just finishing some last phrasing pre-release --- .gitignore | 1 + Makefile | 6 +++++- TODO | 6 ------ include/stdhead.html | 20 +++++++++++++------- include/stdnav.html | 1 - index.html | 2 +- macroblog/kethel2.html | 41 +++++++++++++++++++++++------------------ microblog/index.html | 5 ++++- microblog/item.html | 2 +- seealso.html | 27 +++++++++++++++++++-------- 10 files changed, 67 insertions(+), 44 deletions(-) delete mode 100644 TODO diff --git a/.gitignore b/.gitignore index 4d80dda1baf62feb1ea2f12dfb295e898418ac7b..fd028738bc4e5e44eed61316cf88a31f34d8d865 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,4 @@ /out/**/* /obj/**/* /publish +dist.tar.gz diff --git a/Makefile b/Makefile index e323b7419fd783ff084682e6a9867ad4193e996b..b6ca5f5b2dd3a5fc02323a6e7e9fb7c0fedd69b6 100644 --- a/Makefile +++ b/Makefile @@ -3,10 +3,14 @@ CFLAGS=-Wall -Wextra -Werror -pedantic -O2 -std=c99 DEVSERVER='https://raw.githubusercontent.com/emikulic/darkhttpd/refs/heads/master/darkhttpd.c' -.PHONY: all serve pages +.PHONY: all serve pages dist all: mkpage aggregate pages out/favicon.ico +dist: pages + rm -f dist.tar.gz + tar czvf dist.tar.gz out + serve: all darkhttpd ./darkhttpd out diff --git a/TODO b/TODO deleted file mode 100644 index fb9703c439335ce9409eedc5623ccb17b715c02c..0000000000000000000000000000000000000000 --- a/TODO +++ /dev/null @@ -1,6 +0,0 @@ -- media reviews n so -- atom feeds (microblog: done, todo macro & reviews); - -atom feed is NEARLYYY done for /microblog, /macroblog still needs some work - -/reviews is generally a more specialised form of blog, maybe cool stats? diff --git a/include/stdhead.html b/include/stdhead.html index 5d6a3090011d13c1e9cb299ea7e9b271887b8e25..05130b1c87f26927fb180fde44f77ff834449175 100644 --- a/include/stdhead.html +++ b/include/stdhead.html @@ -2,9 +2,7 @@ diff --git a/include/stdnav.html b/include/stdnav.html index 15e417c66e7501f0425b603db899177f3bbe529f..2825a351d4bf01eff28af57afd46324891b101ec 100644 --- a/include/stdnav.html +++ b/include/stdnav.html @@ -5,7 +5,6 @@ root | macroblog | microblog | - review | see also | colophon diff --git a/index.html b/index.html index 92584667040096f66b30aca6f61b9a7ca4b969fe..deac83f3d6f29a9527c1704d142a8d01faf75dc9 100644 --- a/index.html +++ b/index.html @@ -17,7 +17,7 @@ I'm currently in my exam year of highschool (VWO-NT/NG). However, this hasn't stopped me from shitposting on main, vagueposting on main, - and livetweeting about the latest game/series/film i've watched. + and other miscellaneous ways to not study.

diff --git a/macroblog/kethel2.html b/macroblog/kethel2.html index 8e45396b40657c7f68c67996cf7373bef21e421d..643340fb0c48d472d9daeb3022ce93a6b73bab2e 100644 --- a/macroblog/kethel2.html +++ b/macroblog/kethel2.html @@ -14,35 +14,39 @@ So, what language is the most portable, has universal support across linux distributions? ISO/IEC 9899:1999, or The C Programming Language - of course!

+

a small note of advice

- Kethel isn't a perfect SSG by any means; it sometimes just writes garbled data to the output HTML fil + Kethel isn't perfect by any means; it sometimes just writes garbled data to the output HTML document if a template or TSV ends with a newline, is probably vulnerable to several buffer overflow attacks, - as no bounds checking is implemented at all for the templates, and treats HTML as plain text, with only a - strncmp "parser". Yet, it still works!
- So, I'd like to explain some design decisions behind Kethel/2, and convince YOU to use less CSS in your website! + as no bounds checking is implemented at all, treats HTML as plain text, with only a + "parser" which breaks if you change any nearly any formatting in the templates. And yet, it still works!
+ So, I'd like to explain some design decisions behind Kethel/2, for fun and to break-even on the time spent on + this.

aggregate, and my "solution" to index page generation

Aggregate was the 2nd program I wrote for my site, which fills the spot of a 'compiler', if we're following the compiler/linker metaphor. The RSS feed generation for my site before was really iffy (RFC822 and RFC2822 are to blame). - I could definitely have switched to atom feeds instead of RSS in the original kethel, but i had better things to do with my time then + I could have switched to atom feeds instead of RSS in the original kethel, but I had better things to do with my time then refactor all my elixir code. - (this isnt an issue with elixir per se, but moreso that i didnt really wanna debug MY code every time i wanted to make a change - to my site, architecturally kethel1 kinda sucked) + (This isn't an issue with elixir per se, but moreso that I didnt really wanna debug my elixir, wrote as my first and only elixir project)

The general idea with aggregate is that you provide a TSV file, with some free-form data, and aggregate could transform that into an index page, - but also an atom <entry>, with proper tag uri support. Coming back to the first sentence about the 'compiler' metaphor, - aggregate does not generate the final html, but only take the TSV and generate a mkpage-compatible 'object page'. Since I've - only used C in this project, I already had an obj folder for intermediate output, so it was easy to just generate all the indexes, and - various feed entries, and use mkpage as an ersatz-linker, to generate the final XML/HTML. + but also an Atom <entry>, with proper tag uri support. Coming back to the first sentence about the 'compiler' metaphor, + aggregate does not generate the final html, but only 'preprocesses' the templates and generates a mkpage-compatible 'object page'. + + Since I've only used C in this project, I already had an obj folder for intermediate output, so it was easy to just generate all the indexes, and + various feed entries, and use mkpage as a sort of ersatz-linker, to generate the final XML/HTML.

+

So, what is this mkpage all about then?

- mkpage is the original program that orchestrated all HTML generation, inspired by PHP's "it's just html!" approach, and - my code editors unwillingness to let me use unclosed tags in a template file. I chose to use simple HTML comments - with some meaning, which I then decode in C. + Mkpage is the original program that orchestrated all HTML generation, inspired by PHP's "it's just html!" approach, and + my code editor's unwillingness to let me use unclosed tags in my template html files. I chose to use simple HTML comments + with some meaning, which I then decode in C. Originally an experiment to only generate my homepage, it's been able to generate a lot of my pages + relatively quickly.

However, it quickly become clear that my linear-time no-seek approach to page generation wasnt really going to scale to, say, @@ -51,8 +55,9 @@ STAMP is used mostly for atom feed generation, but is generalised to work in most cases where you'd need a timestamp.

- Therefore, aggregate deals with most of the more complex parts of my websites build pipeline. - Aggregate supports a lot more commands, compared to mkpage. + Therefore, aggregate deals with most of the more complex parts of my website's build pipeline. A combination of some hardcoded behaviour (C + lets you get away with way worse software architecture than elixir), and some generalised 'paradigms', has let me create this entire website with only 7 commands. + Aggregate takes care of most of the more complicated commands, listed below.

So that's it, honestly

- Besides some dependency modelling in make, this is all that Kethel2 comes with. I hope that you find some inspiration - in my architectural choices here, and if not, i'll still keep enjoying my sub-halfsecond build times. + Besides some dependency modelling in make, this is all that Kethel2 really needs. The only things I'd maybe want to change (or create, for funsies). +

Merci d'avoir lu!
diff --git a/microblog/index.html b/microblog/index.html index 4a179fc3b0f49ea917bfef5dc081732c039e9212..afabaf7fdcbf9c6a894db2a41f0ae2db601a5c2b 100644 --- a/microblog/index.html +++ b/microblog/index.html @@ -9,7 +9,10 @@

microblog :3

-

i have no twitter and i must post, please subscribe to my atom feed :)

+

+ i miss twitter honestly +

+
diff --git a/microblog/item.html b/microblog/item.html index 680c386cfb4b03b2369365c308ba5f4f24ce3356..548c9bcf0e19609a0ffc7c9f9822810f64129e04 100644 --- a/microblog/item.html +++ b/microblog/item.html @@ -4,7 +4,7 @@
-at + at
diff --git a/seealso.html b/seealso.html index ce07e5ccb7140f0106c9b639304d59ddb88ddf6b..bcbd8fc077296937685b8c0b1337322fdb5f99c8 100644 --- a/seealso.html +++ b/seealso.html @@ -4,12 +4,12 @@ other links - m1kadev.nl @@ -17,19 +17,30 @@ main>div {
-

See also !!

+

Further reading!

meee :3


others

+

Cool technical blogs/channels