M Makefile => Makefile +6 -1
@@ 29,7 29,12 @@ out/favicon.ico: favicon.png
ffmpeg -y -i favicon.png out/favicon.ico
# list of all pages
-pages: out/index.html out/colophon.html out/microblog.html out/macroblog/index.html out/macroblog/kethel2.html out/feed.atom
+pages: out/index.html out/colophon.html out/microblog.html out/seealso.html \
+ out/macroblog/index.html out/macroblog/kethel2.html out/feed.atom
+
+out/seealso.html: seealso.html
+ @mkdir -p out
+ ./mkpage seealso.html out/seealso.html
out/index.html: index.html mkpage
@mkdir -p out
M include/stdhead.html => include/stdhead.html +4 -0
@@ 2,6 2,9 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<style>
+p {
+ font-size: 16px;
+}
blockquote { margin: 1em 0; }
figcaption {
font-style: italic;
@@ 9,6 12,7 @@ figcaption {
}
a {
font-style: italic;
+ color: #ee41b4;
}
a:visited {
font-style: initial;
M include/stdnav.html => include/stdnav.html +1 -0
@@ 6,6 6,7 @@
<a href="/macroblog/index.html">macroblog</a> |
<a href="/microblog.html">microblog</a> |
<a href="/review/index.html">review</a> |
+ <a href="/seealso.html">see also</a> |
<a href="/colophon.html">colophon</a>
</nav>
</header>
M index.html => index.html +2 -2
@@ 10,13 10,13 @@
<main>
<h1>
Welcome, sit down and
- <a href="https://www.rfc-editor.org/info/rfc7168/#section-2.1" >grab a <code>BREW</code></a>!
+ <a href="https://www.rfc-editor.org/info/rfc7168/#section-2.1">grab a <code>BREW</code></a>!
</h1>
<p>
I'm currently in my exam year of highschool
(<abbr title="(Dutch) Pre-university Physics/Biology">VWO-NT/NG</abbr>).
- However, this hasn't stopped me from <a href="/thoughts.html">shitposting on main</a>, <a href="/blog/index.html">vagueposting on main</a>,
+ However, this hasn't stopped me from <a href="/microblog.html">shitposting on main</a>, <a href="/macroblog/index.html">vagueposting on main</a>,
and <a href="/review/index.html">livetweeting about the latest game/series/<span title="in american that's movie">film</span></a> i've watched.
</p>
M kethel2/aggregate.c => kethel2/aggregate.c +0 -1
@@ 1,4 1,3 @@
-#include <_stdio.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
M macroblog/index.html => macroblog/index.html +3 -3
@@ 2,15 2,15 @@
<html lang="en">
<head>
<!--LOAD include/stdhead.html -->
- <title>blogroll - m1kadev.nl</title>
+ <title>blogposts - m1kadev.nl</title>
</head>
<body>
<!--LOAD include/stdnav.html -->
<main>
- <h1>blogroll</h1>
+ <h1>blogposts!</h1>
<p>
- <em lang="fr">Voici, mes amies</em>, my <em lang="fr">assorti des essais</em>.
+ tl;dr: i hate computers, and they should teach <a href="https://en.wikipedia.org/wiki/Dada">dada</a> in every SWE and CS class
</p>
<nav>
<!-- PUT -->
M macroblog/kethel2.html => macroblog/kethel2.html +47 -4
@@ 19,13 19,56 @@
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
<code>strncmp</code> "parser". Yet, it still works! <br />
- So, I'd like to explain some design decisions behind Kethel, and convince YOU to use less CSS in your website!
+ So, I'd like to explain some design decisions behind Kethel/2, and convince YOU to use less CSS in your website!
</p>
- <h2><code>aggregate.c</code>, and the solution to index page generation</h2>
+ <h2><code>aggregate</code>, and my "solution" to index page generation</h2>
<p>
- The kethel2 workflow is heavily inspired by my experiences with <code>make</code>, linking errors, and C object files.
-
+ 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
+ (<a href="https://www.rfc-editor.org/info/rfc822/">RFC822</a> and <a href="https://www.rfc-editor.org/info/rfc2822/">RFC2822</a> 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
+ refactor all my elixir code.
+ <span>(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)</span>
+ </p>
+ <p>
+ 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 <code><entry></code>, 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 <code>mkpage</code>-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 <code>mkpage</code> as an <em>ersatz</em>-linker, to generate the final XML/HTML.
+ </p>
+ <h2>So, what is this <code>mkpage</code> all about then?</h2>
+ <p>
+ mkpage is the original program that orchestrated all HTML generation, inspired by PHP's "it's just html!" approach, and
+ <a href="https://zed.dev/">my code editors</a> 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.
+ </p>
+ <p>
+ However, it quickly become clear that my linear-time no-seek approach to page generation wasnt really going to scale to, say,
+ more than 2 pages in a directory. mkpage only supports 2 commands, <code>LOAD</code> and <code>STAMP</code>. <code>LOAD</code>
+ takes a path, and puts the file's contents where the directive used to be.
+ <code>STAMP</code> is used mostly for atom feed generation, but is generalised to work in most cases where you'd need a timestamp.
+ </p>
+ <p>
+ Therefore, aggregate deals with most of the more complex parts of my websites build pipeline.
+ Aggregate supports a lot more commands, compared to mkpage.
+ </p>
+ <ul>
+ <li><code>ANCHOR</code> - generates a reproducible id for any content-item, another issue i was dealing with in kethel2 </li>
+ <li><code>PUT</code> - pastes a tsv table value, verbatim, does still have some issues with newlines thought</li>
+ <li><code>LINK</code> - generates a permalink to a (section of a) page, for my microblog this uses </li>
+ <li><code>ATOM</code> - generates all atom metadata for an entry</li>
+ <li><code>DATE</code> - pretty prints the date</li>
+ </ul>
+ <h2>So that's it, honestly</h2>
+ <p>
+ 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.
</p>
+ <figure>
+ <blockquote><em>Merci d'avoir lu!</em></blockquote>
+ </figure>
</main>
<hr>
<!--LOAD include/stdfooter.html -->
A seealso.html => seealso.html +40 -0
@@ 0,0 1,40 @@
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+<!--LOAD include/stdhead.html -->
+ <title>other links - m1kadev.nl</title>
+ <style>
+main>div {
+ display: flex;
+ width: max-content;
+ gap: .5em;
+}
+
+
+ </style>
+ </head>
+
+ <body>
+<!--LOAD include/stdnav.html -->
+ <main>
+ <h1>See also !!</h1>
+ <div>
+ <section>
+ <h2>meee :3</h2>
+ <ul>
+ <li>my <a href="https://letterboxd.com/m1kadev/">letterboxd</a></li>
+ </ul>
+ </section>
+ <hr />
+ <section>
+ <h2>others</h2>
+ <ul>
+ <li>my <a href="https://letterboxd.com/m1kadev/">letterboxd</a></li>
+ </ul>
+ </section>
+ </div>
+ </main>
+ <hr />
+<!--LOAD include/stdfooter.html -->
+ </body>
+</html>