diff options
Diffstat (limited to '')
47 files changed, 1040 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3f98f75 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +atom.xml +man.css +style.css +*.html diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..58361c8 --- /dev/null +++ b/Makefile @@ -0,0 +1,36 @@ +POSTS_MD = $(wildcard posts/*.md) +POSTS_XML = $(wildcard posts/*.xml) + +SCSS = $(wildcard scss/_*.scss) + +HTML = $(POSTS_MD:.md=.html) $(POSTS_XML:.xml=.html) + +.PHONY: site +site: index.html atom.xml style.css man.css + +index.html: templates/index.xml $(HTML) + sblg -o $@ -t templates/index.xml $(HTML) + +atom.xml: templates/atom.xml $(HTML) + sblg -ao $@ -t templates/atom.xml $(HTML) + +%.html: %.xml templates/post.xml + sblg -co $@ -t templates/post.xml $< + +%.xml: %.md util/mdconv.sh + sh util/mdconv.sh $< >$@ + +style.css: scss/style.scss $(SCSS) + sassc -t expanded $< >$@ + +man.css: scss/man.scss $(SCSS) + sassc -t expanded $< >$@ + +clean: + rm -f $(HTML) index.html atom.xml style.css man.css + +deploy: + rsync -avhP fonts index.html style.css man.css logo.svg atom.xml coleridge:www/oriole.systems/ + rsync -avhP posts/*.html coleridge:www/oriole.systems/posts/ + +.PHONY: clean deploy diff --git a/fonts/alegreya-cyrillic-ext.woff2 b/fonts/alegreya-cyrillic-ext.woff2 Binary files differnew file mode 100644 index 0000000..42ac8ae --- /dev/null +++ b/fonts/alegreya-cyrillic-ext.woff2 diff --git a/fonts/alegreya-cyrillic.woff2 b/fonts/alegreya-cyrillic.woff2 Binary files differnew file mode 100644 index 0000000..124ffff --- /dev/null +++ b/fonts/alegreya-cyrillic.woff2 diff --git a/fonts/alegreya-greek-ext.woff2 b/fonts/alegreya-greek-ext.woff2 Binary files differnew file mode 100644 index 0000000..d5c835d --- /dev/null +++ b/fonts/alegreya-greek-ext.woff2 diff --git a/fonts/alegreya-greek.woff2 b/fonts/alegreya-greek.woff2 Binary files differnew file mode 100644 index 0000000..c786e8d --- /dev/null +++ b/fonts/alegreya-greek.woff2 diff --git a/fonts/alegreya-latin-ext.woff2 b/fonts/alegreya-latin-ext.woff2 Binary files differnew file mode 100644 index 0000000..a9ef1b2 --- /dev/null +++ b/fonts/alegreya-latin-ext.woff2 diff --git a/fonts/alegreya-latin.woff2 b/fonts/alegreya-latin.woff2 Binary files differnew file mode 100644 index 0000000..c47936e --- /dev/null +++ b/fonts/alegreya-latin.woff2 diff --git a/fonts/alegreya-sans-bold-cyrillic-ext.woff2 b/fonts/alegreya-sans-bold-cyrillic-ext.woff2 Binary files differnew file mode 100644 index 0000000..43b5ba1 --- /dev/null +++ b/fonts/alegreya-sans-bold-cyrillic-ext.woff2 diff --git a/fonts/alegreya-sans-bold-cyrillic.woff2 b/fonts/alegreya-sans-bold-cyrillic.woff2 Binary files differnew file mode 100644 index 0000000..dafc6f8 --- /dev/null +++ b/fonts/alegreya-sans-bold-cyrillic.woff2 diff --git a/fonts/alegreya-sans-bold-greek-ext.woff2 b/fonts/alegreya-sans-bold-greek-ext.woff2 Binary files differnew file mode 100644 index 0000000..49c5654 --- /dev/null +++ b/fonts/alegreya-sans-bold-greek-ext.woff2 diff --git a/fonts/alegreya-sans-bold-greek.woff2 b/fonts/alegreya-sans-bold-greek.woff2 Binary files differnew file mode 100644 index 0000000..7415e7b --- /dev/null +++ b/fonts/alegreya-sans-bold-greek.woff2 diff --git a/fonts/alegreya-sans-bold-latin-ext.woff2 b/fonts/alegreya-sans-bold-latin-ext.woff2 Binary files differnew file mode 100644 index 0000000..1896761 --- /dev/null +++ b/fonts/alegreya-sans-bold-latin-ext.woff2 diff --git a/fonts/alegreya-sans-bold-latin.woff2 b/fonts/alegreya-sans-bold-latin.woff2 Binary files differnew file mode 100644 index 0000000..4ea8f12 --- /dev/null +++ b/fonts/alegreya-sans-bold-latin.woff2 diff --git a/fonts/alegreya-sans-bold-vietnamese.woff2 b/fonts/alegreya-sans-bold-vietnamese.woff2 Binary files differnew file mode 100644 index 0000000..83a26cb --- /dev/null +++ b/fonts/alegreya-sans-bold-vietnamese.woff2 diff --git a/fonts/alegreya-sans-italic-cyrillic-ext.woff2 b/fonts/alegreya-sans-italic-cyrillic-ext.woff2 Binary files differnew file mode 100644 index 0000000..4ead31c --- /dev/null +++ b/fonts/alegreya-sans-italic-cyrillic-ext.woff2 diff --git a/fonts/alegreya-sans-italic-cyrillic.woff2 b/fonts/alegreya-sans-italic-cyrillic.woff2 Binary files differnew file mode 100644 index 0000000..3ebce2c --- /dev/null +++ b/fonts/alegreya-sans-italic-cyrillic.woff2 diff --git a/fonts/alegreya-sans-italic-greek-ext.woff2 b/fonts/alegreya-sans-italic-greek-ext.woff2 Binary files differnew file mode 100644 index 0000000..4ddc332 --- /dev/null +++ b/fonts/alegreya-sans-italic-greek-ext.woff2 diff --git a/fonts/alegreya-sans-italic-greek.woff2 b/fonts/alegreya-sans-italic-greek.woff2 Binary files differnew file mode 100644 index 0000000..c1cebd7 --- /dev/null +++ b/fonts/alegreya-sans-italic-greek.woff2 diff --git a/fonts/alegreya-sans-italic-latin-ext.woff2 b/fonts/alegreya-sans-italic-latin-ext.woff2 Binary files differnew file mode 100644 index 0000000..c15ce0e --- /dev/null +++ b/fonts/alegreya-sans-italic-latin-ext.woff2 diff --git a/fonts/alegreya-sans-italic-latin.woff2 b/fonts/alegreya-sans-italic-latin.woff2 Binary files differnew file mode 100644 index 0000000..22c7a00 --- /dev/null +++ b/fonts/alegreya-sans-italic-latin.woff2 diff --git a/fonts/alegreya-sans-italic-vietnamese.woff2 b/fonts/alegreya-sans-italic-vietnamese.woff2 Binary files differnew file mode 100644 index 0000000..3b31705 --- /dev/null +++ b/fonts/alegreya-sans-italic-vietnamese.woff2 diff --git a/fonts/alegreya-sans-regular-cyrillic-ext.woff2 b/fonts/alegreya-sans-regular-cyrillic-ext.woff2 Binary files differnew file mode 100644 index 0000000..f81ae10 --- /dev/null +++ b/fonts/alegreya-sans-regular-cyrillic-ext.woff2 diff --git a/fonts/alegreya-sans-regular-cyrillic.woff2 b/fonts/alegreya-sans-regular-cyrillic.woff2 Binary files differnew file mode 100644 index 0000000..3434d6e --- /dev/null +++ b/fonts/alegreya-sans-regular-cyrillic.woff2 diff --git a/fonts/alegreya-sans-regular-greek-ext.woff2 b/fonts/alegreya-sans-regular-greek-ext.woff2 Binary files differnew file mode 100644 index 0000000..f85a417 --- /dev/null +++ b/fonts/alegreya-sans-regular-greek-ext.woff2 diff --git a/fonts/alegreya-sans-regular-greek.woff2 b/fonts/alegreya-sans-regular-greek.woff2 Binary files differnew file mode 100644 index 0000000..19ba950 --- /dev/null +++ b/fonts/alegreya-sans-regular-greek.woff2 diff --git a/fonts/alegreya-sans-regular-latin-ext.woff2 b/fonts/alegreya-sans-regular-latin-ext.woff2 Binary files differnew file mode 100644 index 0000000..cc81c01 --- /dev/null +++ b/fonts/alegreya-sans-regular-latin-ext.woff2 diff --git a/fonts/alegreya-sans-regular-latin.woff2 b/fonts/alegreya-sans-regular-latin.woff2 Binary files differnew file mode 100644 index 0000000..cef491f --- /dev/null +++ b/fonts/alegreya-sans-regular-latin.woff2 diff --git a/fonts/alegreya-sans-regular-vietnamese.woff2 b/fonts/alegreya-sans-regular-vietnamese.woff2 Binary files differnew file mode 100644 index 0000000..93ef977 --- /dev/null +++ b/fonts/alegreya-sans-regular-vietnamese.woff2 diff --git a/fonts/alegreya-vietnamese.woff2 b/fonts/alegreya-vietnamese.woff2 Binary files differnew file mode 100644 index 0000000..061d8ec --- /dev/null +++ b/fonts/alegreya-vietnamese.woff2 diff --git a/logo.svg b/logo.svg new file mode 100644 index 0000000..020e465 --- /dev/null +++ b/logo.svg @@ -0,0 +1,7 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 105.83333 105.83334"> + <rect width="100%" height="100%" fill="#ffd400"/> + <g transform="translate(0 -191.16664)"> + <circle cx="52.916668" cy="244.08331" r="39.6875" fill="#fff" stroke="#000" stroke-dashoffset="13.2291654" stroke-linecap="square" stroke-linejoin="bevel" stroke-width="2.64583337" transform="translate(0 .00000113)"/> + <circle cx="52.916672" cy="244.0833" r="10.352553"/> + </g> +</svg> diff --git a/posts/beton-brut.md b/posts/beton-brut.md new file mode 100644 index 0000000..3c28211 --- /dev/null +++ b/posts/beton-brut.md @@ -0,0 +1,134 @@ +title: Béton Brut +date: 2019-07-21 +author: Wolfgang Müller + +It is hard to believe that it took me well over half a year to finally +come to the point where I can publish this website on my new domain and +leave the old one behind. There's a few reasons it took this long, and +for once, surprisingly, they are not at all software-related. It was a +journey through uncertainty, insecurity, and compulsive hesitancy, which +is why this post will mostly be a reflective one. + +## Legacy Woes + +Last year in November I had a bunch of free time on my hands, and I very +innocently decided to work on a new site design. Back then I only really +wanted to change a few things, since a full makeover seemed a bit too +daunting. Still, after throwing around a bunch of ideas in my head, it +seemed more clear that I would have to abandon the bulk of what I +already had. Mainly this was because the old site was built on a +considerable amount of legacy code: I was using AsciiDoc, which I had +fallen out of favour with, and most of the site was being held together +by an unwieldy Makefile and a couple of hacky shell scripts. + +So whilst it was easy enough to add new content, changing the design or +even merely attempting to tweak core concepts was impossible without a +bigger rewrite. + +Another concern was my growing disdain for a few of the things that I +had published. Ideally I thought it'd be best to rewrite the bits that I +didn't like and keep the rest, but I couldn't find a sufficient amount +of motivation. I ended up neglecting to write any new posts on the site, +and knowing I had stuff online that I kind of despised made me feel +depressed every time I thought about it. I felt that the site could no +longer reasonably present the kind of person I was. I felt that I was +lying. + +## Honest Design + +Around the same time I stumbled upon [Brutalist +Websites](https://brutalistwebsites.com/) (since defunct, and only +reasonably browsable by removing the prominent overlay), which curated a +collection of _brutalist_ websites. + +![Brutalist Websites](img/brutalist-websites.png) + +There was always a certain - perhaps morbid - fascination I had with +Brutalism and its idea of _béton brut_, raw concrete. The German word +for this concept, _Sichtbeton_, takes a more experiential approach; it +is simply concrete that is unobstructedly visible. There's no attempt to +hide the underpinning, instead it is displayed with a certain kind of +pride. Core to the whole concept is a notion of honesty, of being +utterly clear about what a thing is made of. + +So when I felt that I was lying about what kind of person I was, it +seemed only fitting to create something new in that sort of style, and +to take to heart the idea of being more honest to the outside world and +myself. + +## The Foundation + +Not only did that mean creating a new design, it also meant starting +from scratch and looking for a new engine to build the whole website. I +quickly decided to use [sblg](https://kristaps.bsd.lv/sblg/) to generate +HTML files from templates, and +[lowdown](https://kristaps.bsd.lv/lowdown/) to convert markdown files to +XML content that sblg understands. + +The whole project would live in only a couple of directories, tied +together with a much simpler and cleaner Makefile this time. Compared to +AsciiDoc, site generation was blazingly fast and very robust. It only +took me about a day or two to fully tweak everything the way I wanted it +to behave. + +## Small Steps + +What ended up taking 90% of the rest of the time was the design. With +the idea of being fully honest came a problem: I started questioning +certain decisions because of what they might reveal about myself, what +they might look like from an outside perspective. I noticed that, for a +very long time, I had been genuinely insecure about releasing anything +that was in any way personal to me. + +For instance, the idea very early on was to have one single page +containing everything I published; be it a piece of software, a poem, or +some sort of essay. This resulted in a lot of internal conflict as I +often considered my poetry to be "pretentious" and inherently less +impactful than a software project. Suddenly I was wanting to have two +sites, one for the "real" and technical projects, and one for the more +personal. In turn that would mean that I was actively censoring my +output by categorizing it away to a more obscure part of the site. + +Another problem was an almost compulsive need to tweak the most +insignificant parts of the design towards a sense of perfection and +coherence that was frankly unattainable. Because of a lot of internal +turmoil, it became impossible to do any further work I would feel +positive of. + +In the end the solution was to take considerable time off personal +projects and reflect on and try to dismantle those problems and +insecurities. I learned that it is very helpful to talk to trustworthy +friends about this, and to find a comfortable space in which to +experiment with being more immediately public with projects, ideas, or +thoughts - even if you think they are unrefined and not ready. This is +especially helpful if one tends to feel vulnerable after having +published or when considering to publish. Initially it is perfectly fine +to create a "mock public" space that no one can see initially, but which +can be made more public as time goes on (a locked Twitter or Fediverse +profile, for example). The idea is to build confidence in the act of +publishing itself, and to take away the vulnerability and fear. + +## Horizon + +Building this sort of confidence in publishing personal content is +time-consuming and not always easy. You may feel the intense urge to +undo a publication or to re-read it until it sounds drab and uninspired. +In those cases, maybe ask a friend for feedback, but most importantly: +take a step back and take some time off. It may read wholly differently +tomorrow. + +As for technical work, if you, like me, feel sometimes that what you do +is unimportant, unrecognized, or invisible, it might help to start a +document in which you collect even the smallest things that have some +sort of impact day to day. Julia Evan's idea of a [brag +document](https://jvns.ca/blog/brag-documents/) is a helpful resource. I +tend to be overly humble myself and want to highlight the following excerpt, +which helped me understand something no one had explained to me before: + +> One thing I want to emphasize, for people who don't like to brag, is – +> **you don't have to try to make your work sound better than it is**. Just +> make it sound **exactly as good as it is**! + +Like _béton brut_, be uncompromisingly honest about your work. Don't +make it sound better than it is, but most importantly, learn that it +has value and that there is no shame in showing it. diff --git a/posts/concrete.md b/posts/concrete.md new file mode 100644 index 0000000..ecae66c --- /dev/null +++ b/posts/concrete.md @@ -0,0 +1,48 @@ +title: Concrete +date: 2017-03-08 +author: Wolfgang Müller + +Concrete. Drab, lifeless surfaces, complete in their sterility. Dust +from abrasion dancing around in the few shafts of light like +poisoned spores, carrying death across the hallway. Lying against +the blood-stained wall, this should be his last moment in life. Born +in concrete, deep below the earth, away from sunshine, green grass, +sunflowers, singing birds; Killed in concrete just the same, smashed +against the wall, shot into the lungs and shoulders, bleeding out far +away from light or happiness. + +The others were all already gone. Strewn about, lying atop of each +other, dead eyes, pale skin. Grey and feeble, like the concrete all +around. Pools of blood under the bodies, a dark coagulated red. Life +forgotten now seeping into the devouring pores of the cement floor. + +"I'll end up like them, eaten up, rotting here where there is +no sunshine. I'll end up in the belly of the concrete monstrosity, my +skeleton grinning sheepishly at the unlucky dwellers who find this vault +expecting riches, but getting only death; death grimacing back, and the +concrete, silent as ever, watching, waiting." + +A putrid smell lay in the room, ironlike, miasmatic, and +dusty. Thankfully only a few more breaths left. Complete silence, +except for the ghastly wheezing of ruptured lungs. A last reminder of +life dwindling between the uncaring walls. Nobody listening except the +elongated and lobeless concrete ears, the rough surfaces like petrified +skin. + +Darkness slowly crept in; first at the edges, concealing the unnatural +smiles of mutilated faces. Faces of friends, family, faces of enemies, +of bullies. Everyone's face. Nobody's face. + +He drew his last breath. The darkness crept more towards the center, +towards that one fixpoint; towards the concrete wall he had been staring +at all this time. His enemy. Mankind's enemy. And yet it was just a +wall. Something so simple had become the name for all the horrors in the +world, and it was staring back. Endlessly it was staring back, loudly +accusing in complete silence. + +It resounded in the corpse-filled room, mangled vocal chords in an +undead chorus. + +It resounded in his dying, confused mind. + +Concrete. diff --git a/posts/img/brutalist-websites.png b/posts/img/brutalist-websites.png Binary files differnew file mode 100644 index 0000000..d116bb6 --- /dev/null +++ b/posts/img/brutalist-websites.png diff --git a/posts/img/weltschmerz.png b/posts/img/weltschmerz.png Binary files differnew file mode 100644 index 0000000..2c46430 --- /dev/null +++ b/posts/img/weltschmerz.png diff --git a/posts/old-days.md b/posts/old-days.md new file mode 100644 index 0000000..41bcb7c --- /dev/null +++ b/posts/old-days.md @@ -0,0 +1,73 @@ +title: Old Days +date: 2016-06-03T02:44:44Z +author: Wolfgang Müller + +In the lowland of the taiga; +And vast forests boreal +Midst wapiti and wild reindeer, +Lynx, stoat, squirrel, snowshoe, brown bear, +Lives a hermit in remembrance +Of old days and the explosion. + +Green the firs, bicoloured birches +Waving proudly in light wind; +Poplars shedding crimson catkins. +And the hermit, longing, silent +Standing lonely on the brink +Of tundra, opens weary eyes and sees. + +Oak trees bending, whipping back; +Barks then tinged by hellish fire, +Songbirds in a sky of black. +The mushroom cloud, the ball of red: +People fleeing, hoping, dying, +To the church walls shadows burnt. + +In the seas the water boiling, +Blistering from the reflection +Of the short-lived man-made sun. +Uriel in heaven crying, +Mourning loss of the creation +That, in war, unmade itself. + +No more seasons, only winter; +Everlasting winter, with grey soot +Like snowflakes falling gently +Down to blackened soil; a Hell +on Earth, forever dead and frozen. +Upon mankind a shadow cast. + +So the hermit with his gas mask, +Breathing filters and asbestos +Makes his way, past sickly tree stumps, +Past the rotten flesh, past poison +Past the hollow shells of old +Through miasma to catharsis; + +Through the lowland of the taiga; +In vast graveyards boreal +Midst wapiti and dead reindeer, +Lynx, stoat, squirrel, snowshoe, brown bear, +Through miasma past the tombstones +Past the unmarked grave and carcass. + +Face turned west another fire, +Older still than the creation; +Shimmering subtly, orange, crimson +Through the clouds and casting rays +Upon the rolling hills afar, +Lights like ghostly sirens calling. + +And the harp, resurging music, +Calming shadows, living beings, +Forests, meadows, nature, beauty! +From that subtle light display +Made the hermit so resentful +And envious of death's embrace. + +Far away inside a bunker +Beneath the old charred earth forgotten +Lies dormant in a silo still +The array of rockets primed; +Awaiting silent, patient, stoic +An end, and the explosion. diff --git a/posts/the-cat.md b/posts/the-cat.md new file mode 100644 index 0000000..c3ffd40 --- /dev/null +++ b/posts/the-cat.md @@ -0,0 +1,65 @@ +title: The Cat +date: 2016-08-04T10:49:20Z +author: Wolfgang Müller + +One should live in a house like a cat, finding repose on almost every +surface. To the cat, the whole house is a shelter. Every table, every +sofa, every chair, every bed, indeed every floor is an invitation to +find some rest. Do we not find cats, again and again, in the most +unusual and unexpected places? We find them there, lying and sleeping +with a kind of lightness and peace as if they themselves had designed +that space specifically for them. We find them there snugly in a ball, +breathing softly to themselves and relaxing their claws. + +Now, in this instance, they need them not. In this instance the whole +world around them, usually a cat's plaything and center of attention, +ceases to exist almost, as if they, in their peaceful huddledness, +transcended life and entered the realm of daydreaming. A human realm, +not an animal one. Of which things do they dream? Do they dream of the +mouse that eluded them in the existential battle for life and retreated +back to its hole, its own shelter? Do they maybe dream of the fields in +which they were kings and queens, unchallenged monarchs of old? + +Truly there is something kingly about cats; a certain evolutionary +dignity. How is it that they live content with beings displaying even +greater hubris? Or maybe they just want to learn? How innocent, though, +in their pursuit of this. How unburdened, how free. Whom do they see +when they look at us? What do they feel when we talk to them? + +Can it be that it is only instinct that drives them? They exhibit such +humanness, they exhibit an animal soul. It is a purer soul, a more +simple one, but it is a soul. What do they feel when we gently stroke +their fur with our hands? Do they feel the same kind of love? How is it +to live a cat's life? + +I said earlier that cats lie down to repose anywhere. Like a human, +however, they have their favourite spots. Always these spots have a +distinctly human element. It is the small opening under our beds that +we so cherished as a child, dreaming of and building at the same time +a warm and safe den ourselves. It is next to our spot on the sofa, as +if we radiated a familiarity and comfort there even in our absence. +It is in the bags we use for our shopping, the suitcases we use for +travelling. + +It is on our discarded clothes on the table, floor, chair or bed, as +if they wanted to absorb the fragrances of our lives and thus come +closer to our person. It is our smell that is home to them, our ``having +lived'' in something, on something, that is so dear to them. Maybe +they want to feel the pain that was inflicted upon us, or the joy and +happiness that was diffused through the clothes as we wore them. They +are not all without us, and while we are gone they are emptier inside +for the loss, seeking refuge, seeking a nest, seeking shelter from the +rain in the touched and transformed things we left behind. We are their +mothers and fathers to them, we are their family. This bond transcends +species, it is therefore something inherent in life. It is a soulful +longing for nearness, a longing for exchange of life, and what makes +life what it is. + +My cats cannot comprehend what I have written here, but I believe +fully that they feel the same way. The cat hair on my clothes is their +attempt at sharing this warmness, this closeness. And when the cat +lies down close to me and purrs with all the excellence of beauty and +reverberation, then I feel loved in the universe and want to share that +love. Maybe in this simplicity we should look for love and give it back +with all our heart. Maybe in this simplicity we have found the core of +us and the dignified true expression of the animal, and of nature. diff --git a/posts/transcript.md b/posts/transcript.md new file mode 100644 index 0000000..5d3f333 --- /dev/null +++ b/posts/transcript.md @@ -0,0 +1,42 @@ +title: A Transcript +date: 2018-12-30 +author: Wolfgang Müller + +though one thing still disturbs me greatly +and I don't know whether I am alone in this +but it is most obvious at night, in the dark +or in the haze, the fog; +that I am not fully there - that there is +in another space, another self, not me +but indistinguishble from me, +yet wholly alien. + +it is irksome to know this, and +whilst I have come to learn how to cope, +it never fully leaves me, this thought +that I am fake. + +it seems an impossible situation, to be +and not to be at the same time, and to +hide and show as necessary, just so; +yes, the necessity of it is still of +great difficulty. I am not sure +whether to continue or not, to be, +to not be, at the same time. + +since, in the past, it worked and +sometimes made it easy. +yet, it is not honest, and I fear +being eaten up from the inside +by this self, and for it +to take over. + +then, nothing will be true +but everything will go on as if +it were. + +and so I leave this query with +utmost confusion and no real +hope of assurance +that my self be saved and the other +to be discarded. diff --git a/posts/verify-with-signify.md b/posts/verify-with-signify.md new file mode 100644 index 0000000..8853554 --- /dev/null +++ b/posts/verify-with-signify.md @@ -0,0 +1,51 @@ +title: Verifying snapshots with signify +date: 2019-01-01 +author: Wolfgang Müller + +I use the [signify](https://flak.tedunangst.com/post/signify) tool to +cryptographically sign all software downloads you will find on this +site. + +Whilst you technically don't need `signify` to verify the _integrity_ of +downloaded files, I strongly recommend using it to also verify the +_signature_. A portable version of the tool is available +[here](https://github.com/aperezdc/signify). + +### Obtaining the signature and checksum + +If you decide to use `signify` to verify downloaded files, you need to obtain +the detached signature linked on the respective project page and the public +release key (see below). Otherwise, you only need to fetch the checksum. + +### Obtaining the public key + +To fully verify a download with `signify`, first obtain [my public +key](/release.pub). I keep a copy of the same key on DNS, feel free to +verify it therewith: + + $ drill TXT releasekey.oriole.systems + +Another copy of the key exists on the freenode IRC servers, in my +taxonomy data: + + /msg NickServ taxonomy vehk + +You may want to keep the public key saved on your system for future +verifications. + +### Verification with signify + +Once you have downloaded my public key, run the following to verify your +download: + + $ signify -C -p release.pub -x <snapshot>.SHA256.sig + Signature Verified + <snapshot>: OK + +### Verification with sha256sum + +Alternatively, if you don't want to install `signify`, you can use +the `sha256sum` tool to only verify the integrity of the download: + + $ sha256sum -c <snapshot>.SHA256 + <snapshot>: OK diff --git a/posts/weltschmerz.md b/posts/weltschmerz.md new file mode 100644 index 0000000..bdaeced --- /dev/null +++ b/posts/weltschmerz.md @@ -0,0 +1,77 @@ +title: weltschmerz - A terminal emulator in Vala +date: 2019-07-12 +author: Wolfgang Müller + +## Synopsis + +weltschmerz is a small and simple terminal emulator built upon the +Virtual Terminal Emulator widget. It's written in Vala, supports +clickable URLs, can reload its configuration whilst running, and has +very basic search functionality. + +![weltschmerz in action](img/weltschmerz.png) + +As a VTE app, weltschmerz supports practically every contemporary +terminal emulator feature. It is built to be a stable and practical +terminal emulator for daily use. + +## Download + +- [weltschmerz-1.0.0.tar.gz](/snapshots/weltschmerz/weltschmerz-1.0.0.tar.gz) + ([signature](/snapshots/weltschmerz/weltschmerz-1.0.0.tar.gz.SHA256.sig), + [checksum](/snapshots/weltschmerz/weltschmerz-1.0.0.tar.gz.SHA256), + [verify?](verify.html), + [archive](/snapshots/weltschmerz)) +- [git repository](https://git.oriole.systems/weltschmerz.git) (clone only, no web interface) + +## Requirements + +- [VTE](https://wiki.gnome.org/Apps/Terminal/VTE) >= 2.91 +- [Vala](https://wiki.gnome.org/Projects/Vala) >= 0.40.12 +- [GTK+](https://www.gtk.org/) >= 3.0 + +## Usage & Configuration + +See [`weltschmerz(1)`](/man/weltschmerz.1.html). + +## Build + +weltschmerz can be built with any POSIX-conformant make or with +[Meson](https://mesonbuild.com). The latter may be interesting to +distribution packagers or people already comfortable with this +particular build system. + +__Note:__ if your Vala compiler executable is not named `valac`, you +need to export the environment variable `VALAC` containing the correct +name before you can build weltschmerz: + + export VALAC='valac-0.42' + +### Makefile + +Run the following to build and install weltschmerz to the default +location (`/usr/local`): + + make install + +The Makefile honors the environment variables `PREFIX`, `DESTDIR`, +`BINDIR`, and `MANDIR`. For instance, if you want to install weltschmerz +to your home directory, call make like so: + + PREFIX=/home/user make install + +### Meson + +Create the build directory and configure the Meson build like so: + + meson build + cd build + meson configure + +The build can be configured extensively; for more information, see +`meson(1)`. If you want to install weltschmerz to your home directory, +for example, pass `--prefix=/home/user` to configure. + +Once the build is set up, install weltschmerz: + + meson install diff --git a/scss/_responsive_fonts.scss b/scss/_responsive_fonts.scss new file mode 100644 index 0000000..b9c3410 --- /dev/null +++ b/scss/_responsive_fonts.scss @@ -0,0 +1,26 @@ +@mixin font-size($size) { + html { + font-size: $size; + } +} + +@media (max-width: 480px) { + @include font-size(12px); +} + +@media (min-width: 480px) { + @include font-size(13px); +} + +@media (min-width: 786px) { + @include font-size(14px); +} + +@media (min-width: 992px) { + @include font-size(15px); +} + +@media (min-width: 1200px) { + @include font-size(16px); +} + diff --git a/scss/_webfonts.scss b/scss/_webfonts.scss new file mode 100644 index 0000000..19818c5 --- /dev/null +++ b/scss/_webfonts.scss @@ -0,0 +1,259 @@ +$cyrillic-ext: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; +$cyrillic: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +$greek-ext: U+1F00-1FFF; +$greek: U+0370-03FF; +$latin-ext: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; +$latin: U+0000-00FF, U+0131, U+0152-0153, U+2190-21FF, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +$vietnamese: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB; + +@font-face { + font-family: 'Alegreya'; + font-style: normal; + font-weight: 400; + font-display: swap; + src: local('Alegreya Regular'), local('Alegreya-Regular'), url(fonts/alegreya-cyrillic-ext.woff2) format('woff2'); + unicode-range: $cyrillic-ext; +} + +@font-face { + font-family: 'Alegreya'; + font-style: normal; + font-weight: 400; + font-display: swap; + src: local('Alegreya Regular'), local('Alegreya-Regular'), url(fonts/alegreya-cyrillic.woff2) format('woff2'); + unicode-range: $cyrillic; +} + +@font-face { + font-family: 'Alegreya'; + font-style: normal; + font-weight: 400; + font-display: swap; + src: local('Alegreya Regular'), local('Alegreya-Regular'), url(fonts/alegreya-greek-ext.woff2) format('woff2'); + unicode-range: $greek-ext; +} + +@font-face { + font-family: 'Alegreya'; + font-style: normal; + font-weight: 400; + font-display: swap; + src: local('Alegreya Regular'), local('Alegreya-Regular'), url(fonts/alegreya-greek.woff2) format('woff2'); + unicode-range: $greek; +} + +@font-face { + font-family: 'Alegreya'; + font-style: normal; + font-weight: 400; + font-display: swap; + src: local('Alegreya Regular'), local('Alegreya-Regular'), url(fonts/alegreya-vietnamese.woff2) format('woff2'); + unicode-range: $vietnamese; +} + +@font-face { + font-family: 'Alegreya'; + font-style: normal; + font-weight: 400; + font-display: swap; + src: local('Alegreya Regular'), local('Alegreya-Regular'), url(fonts/alegreya-latin-ext.woff2) format('woff2'); + unicode-range: $latin-ext; +} + +@font-face { + font-family: 'Alegreya'; + font-style: normal; + font-weight: 400; + font-display: swap; + src: local('Alegreya Regular'), local('Alegreya-Regular'), url(fonts/alegreya-latin.woff2) format('woff2'); + unicode-range: $latin; +} + +@font-face { + font-family: 'Alegreya Sans'; + font-style: italic; + font-weight: 400; + font-display: swap; + src: local('Alegreya Sans Italic'), local('AlegreyaSans-Italic'), url(fonts/alegreya-sans-italic-cyrillic-ext.woff2) format('woff2'); + unicode-range: $cyrillic-ext; +} + +@font-face { + font-family: 'Alegreya Sans'; + font-style: italic; + font-weight: 400; + font-display: swap; + src: local('Alegreya Sans Italic'), local('AlegreyaSans-Italic'), url(fonts/alegreya-sans-italic-cyrillic.woff2) format('woff2'); + unicode-range: $cyrillic; +} + +@font-face { + font-family: 'Alegreya Sans'; + font-style: italic; + font-weight: 400; + font-display: swap; + src: local('Alegreya Sans Italic'), local('AlegreyaSans-Italic'), url(fonts/alegreya-sans-italic-greek-ext.woff2) format('woff2'); + unicode-range: $greek-ext; +} + +@font-face { + font-family: 'Alegreya Sans'; + font-style: italic; + font-weight: 400; + font-display: swap; + src: local('Alegreya Sans Italic'), local('AlegreyaSans-Italic'), url(fonts/alegreya-sans-italic-greek.woff2) format('woff2'); + unicode-range: $greek; +} + +@font-face { + font-family: 'Alegreya Sans'; + font-style: italic; + font-weight: 400; + font-display: swap; + src: local('Alegreya Sans Italic'), local('AlegreyaSans-Italic'), url(fonts/alegreya-sans-italic-vietnamese.woff2) format('woff2'); + unicode-range: $vietnamese; +} + +@font-face { + font-family: 'Alegreya Sans'; + font-style: italic; + font-weight: 400; + font-display: swap; + src: local('Alegreya Sans Italic'), local('AlegreyaSans-Italic'), url(fonts/alegreya-sans-italic-latin-ext.woff2) format('woff2'); + unicode-range: $latin-ext; +} + +@font-face { + font-family: 'Alegreya Sans'; + font-style: italic; + font-weight: 400; + font-display: swap; + src: local('Alegreya Sans Italic'), local('AlegreyaSans-Italic'), url(fonts/alegreya-sans-italic-latin.woff2) format('woff2'); + unicode-range: $latin; +} + +@font-face { + font-family: 'Alegreya Sans'; + font-style: normal; + font-weight: 400; + font-display: swap; + src: local('Alegreya Sans Regular'), local('AlegreyaSans-Regular'), url(fonts/alegreya-sans-regular-cyrillic-ext.woff2) format('woff2'); + unicode-range: $cyrillic-ext; +} + +@font-face { + font-family: 'Alegreya Sans'; + font-style: normal; + font-weight: 400; + font-display: swap; + src: local('Alegreya Sans Regular'), local('AlegreyaSans-Regular'), url(fonts/alegreya-sans-regular-cyrillic.woff2) format('woff2'); + unicode-range: $cyrillic; +} + +@font-face { + font-family: 'Alegreya Sans'; + font-style: normal; + font-weight: 400; + font-display: swap; + src: local('Alegreya Sans Regular'), local('AlegreyaSans-Regular'), url(fonts/alegreya-sans-regular-greek-ext.woff2) format('woff2'); + unicode-range: $greek-ext; +} + +@font-face { + font-family: 'Alegreya Sans'; + font-style: normal; + font-weight: 400; + font-display: swap; + src: local('Alegreya Sans Regular'), local('AlegreyaSans-Regular'), url(fonts/alegreya-sans-regular-greek.woff2) format('woff2'); + unicode-range: $greek; +} + +@font-face { + font-family: 'Alegreya Sans'; + font-style: normal; + font-weight: 400; + font-display: swap; + src: local('Alegreya Sans Regular'), local('AlegreyaSans-Regular'), url(fonts/alegreya-sans-regular-vietnamese.woff2) format('woff2'); + unicode-range: $vietnamese; +} + +@font-face { + font-family: 'Alegreya Sans'; + font-style: normal; + font-weight: 400; + font-display: swap; + src: local('Alegreya Sans Regular'), local('AlegreyaSans-Regular'), url(fonts/alegreya-sans-regular-latin-ext.woff2) format('woff2'); + unicode-range: $latin-ext; +} + +@font-face { + font-family: 'Alegreya Sans'; + font-style: normal; + font-weight: 400; + font-display: swap; + src: local('Alegreya Sans Regular'), local('AlegreyaSans-Regular'), url(fonts/alegreya-sans-regular-latin.woff2) format('woff2'); + unicode-range: $latin; +} + +@font-face { + font-family: 'Alegreya Sans'; + font-style: normal; + font-weight: 700; + font-display: swap; + src: local('Alegreya Sans Bold'), local('AlegreyaSans-Bold'), url(fonts/alegreya-sans-bold-cyrillic-ext.woff2) format('woff2'); + unicode-range: $cyrillic-ext; +} + +@font-face { + font-family: 'Alegreya Sans'; + font-style: normal; + font-weight: 700; + font-display: swap; + src: local('Alegreya Sans Bold'), local('AlegreyaSans-Bold'), url(fonts/alegreya-sans-bold-cyrillic.woff2) format('woff2'); + unicode-range: $cyrillic; +} + +@font-face { + font-family: 'Alegreya Sans'; + font-style: normal; + font-weight: 700; + font-display: swap; + src: local('Alegreya Sans Bold'), local('AlegreyaSans-Bold'), url(fonts/alegreya-sans-bold-greek-ext.woff2) format('woff2'); + unicode-range: $greek-ext; +} + +@font-face { + font-family: 'Alegreya Sans'; + font-style: normal; + font-weight: 700; + font-display: swap; + src: local('Alegreya Sans Bold'), local('AlegreyaSans-Bold'), url(fonts/alegreya-sans-bold-greek.woff2) format('woff2'); + unicode-range: $greek; +} + +@font-face { + font-family: 'Alegreya Sans'; + font-style: normal; + font-weight: 700; + font-display: swap; + src: local('Alegreya Sans Bold'), local('AlegreyaSans-Bold'), url(fonts/alegreya-sans-bold-vietnamese.woff2) format('woff2'); + unicode-range: $vietnamese; +} + +@font-face { + font-family: 'Alegreya Sans'; + font-style: normal; + font-weight: 700; + font-display: swap; + src: local('Alegreya Sans Bold'), local('AlegreyaSans-Bold'), url(fonts/alegreya-sans-bold-latin-ext.woff2) format('woff2'); + unicode-range: $latin-ext; +} + +@font-face { + font-family: 'Alegreya Sans'; + font-style: normal; + font-weight: 700; + font-display: swap; + src: local('Alegreya Sans Bold'), local('AlegreyaSans-Bold'), url(fonts/alegreya-sans-bold-latin.woff2) format('woff2'); + unicode-range: $latin; +} diff --git a/scss/man.scss b/scss/man.scss new file mode 100644 index 0000000..db02e86 --- /dev/null +++ b/scss/man.scss @@ -0,0 +1,39 @@ +@import '_webfonts'; +@import '_responsive_fonts'; + +body { + background-color: white; + font-family: "Alegreya Sans", sans; + font-size: 1.4em; + line-height: 1.4; + margin: 1em auto; + max-width: 1024px; + padding: 0 1em; +} + +table { + border-collapse: collapse; +} + +.tbl td:not(:last-child) { + border-right: solid 1px; +} + +.tbl td { + padding: 0 5px; +} + +table.foot { + margin-top: 1em; +} + +table.head, table.foot { width: 100%; } +td.head-rtitle, td.foot-os { text-align: right; } +td.head-vol { text-align: center; } +div.Pp { margin: 1ex 0ex; } +div.Nd, div.Bf, div.Op { display: inline; } +span.Pa, span.Ad { font-style: italic; } +span.Ms { font-weight: bold; } +dl.Bl-diag > dt { font-weight: bold; } +code.Nm, code.Fl, code.Cm, code.Ic, code.In, code.Fd, code.Fn, +code.Cd { font-weight: bold; font-family: inherit; } diff --git a/scss/style.scss b/scss/style.scss new file mode 100644 index 0000000..af35784 --- /dev/null +++ b/scss/style.scss @@ -0,0 +1,125 @@ +@import '_webfonts'; +@import '_responsive_fonts'; + +$font-sans: "Alegreya Sans", sans; +$font-serif: Alegreya, serif; +$font-mono: Iosevka, Inconsolata, monospace; + +$yellow: #ffd400; +$canary: #ffffb3; + +body { + background-color: white; + color: black; + line-height: 1.4; + margin: 0; +} + +h1 { + font-family: $font-serif; + font-size: 3.5rem; + font-weight: normal; + margin: 0; +} + +code { + font-family: $font-mono; + font-size: smaller; +} + +pre { + background-color: $canary; + overflow: auto; + padding: .7rem; +} + +pre.poetry { + background-color: white; + padding: 0; + font-family: $font-sans; +} + +blockquote { + background-color: $canary; + padding: .7rem; +} + +blockquote > p { + margin: 0; +} + +footer { + background-size: 200px; + height: 200px; +} + +.frontpage { + background-color: $yellow; + font-family: $font-serif; + font-size: 4rem; +} + +.post { + font-family: $font-sans; + font-size: 1.5rem; +} + +nav.main ul { + display: flex; + flex-direction: row; + flex-wrap: wrap; + list-style: none; + margin: .5rem; + padding: 0; +} + +nav.main li a { + background-color: white; + border: 4px solid black; + box-shadow: 10px 10px 0 black; + color: black; + display: block; + margin: .8rem .8rem; + padding: 0 .8rem; + text-decoration: none; +} + +nav.main li a:hover { + background-color: black; + color: white; +} + +article { + margin: 1rem auto; + max-width: 1024px; + padding: 0 1rem; + + header { + border-bottom: 1px solid darkgrey; + + a { + background-color: white; + font-weight: bold; + text-decoration: none; + } + + address { + display: none; + } + + time { font-size: smaller; } + } + + img { + display: block; + margin: 0 auto; + } + + hr { + border: 0; + border-top: 1px dashed grey; + width: 80%; + } + + ul { list-style: square; } +} diff --git a/templates/index.xml b/templates/index.xml new file mode 100644 index 0000000..afe96ec --- /dev/null +++ b/templates/index.xml @@ -0,0 +1,19 @@ +<!DOCTYPE html> +<html> + <head> + <title>oriole.systems</title> + <link rel="stylesheet" href="style.css"/> + <link rel="alternate" href="atom.xml" type="application/atom+xml" title="oriole.systems atom feed"/> + <link rel="icon" href="logo.svg"/> + <meta charset="utf-8"/> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + </head> + <body class="frontpage"> + <nav class="main" data-sblg-nav="true" data-sblg-navcontent="true"> + <a href="${sblg-base}.html"> + ${sblg-titletext} + </a> + </nav> + <footer></footer> + </body> +</html> diff --git a/templates/post.xml b/templates/post.xml new file mode 100644 index 0000000..617ce32 --- /dev/null +++ b/templates/post.xml @@ -0,0 +1,15 @@ +<!DOCTYPE html> +<html> + <head> + <title>${sblg-titletext} · oriole.systems</title> + <link rel="stylesheet" href="../style.css"/> + <link rel="alternate" href="../atom.xml" type="application/atom+xml" title="oriole.systems atom feed"/> + <link rel="icon" href="../logo.svg"/> + <meta charset="utf-8"/> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + </head> + <body class="post"> + <article data-sblg-article="true" data-sblg-permlink="false"></article> + </body> +</html> + diff --git a/util/mdconv.sh b/util/mdconv.sh new file mode 100644 index 0000000..19f4d4c --- /dev/null +++ b/util/mdconv.sh @@ -0,0 +1,20 @@ +set -e + +title="$(lowdown -X title "$1")" +date="$(lowdown -X date "$1")" +author="$(lowdown -X author "$1")" + +cat<<EOF +<?xml version="1.0" encoding="UTF-8" ?> +<article data-sblg-article="true"> + <header> + <h1>$title</h1> + <address>$author</address> + <a href="..">↖</a> + <time datetime="$date">$(date -d"$date" '+%A, %B %e, %Y')</time> + </header> + <main> + $(lowdown "$1") + </main> +</article> +EOF |