Compare commits

..

4 commits

Author SHA1 Message Date
Sebin Nyshkim
0f6bf72019 build: 🔧 use manual feed template instead of virtual one
In order to display the title image in the feed.xml like in the posts on the website, a more customizable variant is needed.
2025-04-20 22:42:56 +02:00
Sebin Nyshkim
87919576b3 feat: 💬 add self-hosted git forge 2025-04-20 22:42:32 +02:00
Sebin Nyshkim
dbe29d4715 fix: 🩹 update sentence structure, correct typo 2025-04-20 22:41:23 +02:00
Sebin Nyshkim
7c73f7c1e0 build: 🔧 use externally hosted image service
Build time increases exponentially with more images pulled in by the eleventy-image plugin. This keeps build times low and shifts computational load to an external image hosting service.
2025-04-20 22:40:54 +02:00
5 changed files with 50 additions and 27 deletions

View file

@ -1,7 +1,6 @@
import fs from 'node:fs';
import { env } from 'node:process';
import { eleventyImageTransformPlugin } from '@11ty/eleventy-img';
import { feedPlugin } from '@11ty/eleventy-plugin-rss';
import Image from '@11ty/eleventy-img';
import eleventyPluginCiu from '@alexcarpenter/eleventy-plugin-caniuse';
import eleventyPluginEmbedEverything from 'eleventy-plugin-embed-everything';
@ -12,6 +11,7 @@ import eleventyPluginNavigation from '@11ty/eleventy-navigation';
import eleventyPluginOgImage from 'eleventy-plugin-og-image';
import eleventyPluginReadingTime from '@myxotod/eleventy-plugin-readingtime';
import eleventyPluginRobotsTxt from 'eleventy-plugin-robotstxt';
import eleventyPluginRss from '@11ty/eleventy-plugin-rss';
import eleventyPluginSyntaxHighlight from '@11ty/eleventy-plugin-syntaxhighlight';
import markdownIt from 'markdown-it';
import markdownItAbbr from 'markdown-it-abbr';
@ -26,7 +26,7 @@ Image.concurrency = 4;
const urlFormat = ({ src, width, format }) => {
const baseUrl = `https://img.sebin-nyshkim.net/i`;
const imgUuid = src.match(/\/([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})\.(\w{3,})/);
const imgUuid = src.match(/\/([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})/);
const imgFormat = format === 'jpeg' ? 'jpg' : format;
return `${baseUrl}/${imgUuid[1]}.${imgFormat}?width=${width}`;
@ -111,24 +111,7 @@ export default async function (eleventyConfig) {
sizes: '(min-width: 1280px) 960px, (min-width: 1024px) 768px, (min-width: 640px) 640px, 480px'
}
});
eleventyConfig.addPlugin(feedPlugin, {
type: 'atom', // or "rss", "json"
outputPath: '/feed.xml',
collection: {
name: 'posts', // iterate over `collections.posts`
limit: 0 // 0 means no limit
},
metadata: {
language: 'en',
title: "Sebin's Blog",
subtitle: 'Writing about stuff I have vague interests in and commenting on stuff I read.',
base: 'https://blog.sebin-nyshkim.net/',
author: {
name: 'Sebin Nyshkim',
email: '' // Optional
}
}
});
eleventyConfig.addPlugin(eleventyPluginRss);
eleventyConfig.setLibrary('md', markdownIt(MARKDOWNIT_OPTIONS));
@ -147,7 +130,7 @@ export default async function (eleventyConfig) {
eleventyConfig.addShortcode('bgimgset', async (src) => {
const imgset = await Image(src, {
...ELEVENTY_IMAGE_DEFAULTS,
widths: [1920, 2560, 3840],
widths: [1920, 2560, 3840]
});
const getSets = ({ url, sourceType }, i) => `url(${url}) type('${sourceType}') ${i + 1}x`;

40
src/feed.njk Normal file
View file

@ -0,0 +1,40 @@
---json
{
"permalink": "feed.xml",
"eleventyExcludeFromCollections": true,
"metadata": {
"title": "Sebin's Blog",
"description": "Writing about stuff I have vague interests in and commenting on stuff I read.",
"language": "en",
"base": "https://blog.sebin-nyshkim.net/",
"author": {
"name": "Sebin Nyshkim"
}
}
}
---
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="{{ metadata.language or page.lang }}">
<title>{{ metadata.title }}</title>
<subtitle>{{ metadata.description }}</subtitle>
<link href="{{ permalink | htmlBaseUrl(metadata.base) }}" rel="self"/>
<link href="{{ metadata.base | addPathPrefixToFullUrl }}"/>
<updated>{{ collections.posts | getNewestCollectionItemDate | dateToRfc3339 }}</updated>
<id>{{ metadata.base | addPathPrefixToFullUrl }}</id>
<author>
<name>{{ metadata.author.name }}</name>
</author>
{%- for post in collections.posts | reverse %}
{%- set absolutePostUrl %}{{ post.url | htmlBaseUrl(metadata.base) }}{% endset %}
<entry>
<title>{{ post.data.title }}</title>
<link href="{{ absolutePostUrl }}"/>
<updated>{{ post.date | dateToRfc3339 }}</updated>
<id>{{ absolutePostUrl }}</id>
<content type="html">
&lt;img src="{{ post.data.image.src }}.webp?width=1200" alt="{{ post.data.image.alt }}"&gt;
{{ post.content | renderTransforms(post.data.page, metadata.base) }}
</content>
</entry>
{%- endfor %}
</feed>

View file

@ -127,7 +127,7 @@ Apple remains the undisputed leader of the tablet market with the iPad. They don
But I don't think that's why they're doing it. As mentioned in the beginning, the iPad mini has been equipped with an A17 Pro, the same chip as in the iPhone 15 Pro. If you've been keeping up with news in the IT space lately, you've probably noticed a very specific trend getting mentioned quite often: "AI"
![Two girls in school uniforms. One girl is standing with her back to the wall (caption: me). The other girl (caption: every company) points a giant tuba at her (caption: AI), covering her head](https://img.sebin-nyshkim.net/i/4c62d067-970a-4c4e-b0fe-e71d1865fe28.jpg)
![Two girls in school uniforms. One girl is standing with her back to the wall (caption: me). The other girl (caption: every company) points a giant tuba at her (caption: AI), covering her head](https://img.sebin-nyshkim.net/i/4c62d067-970a-4c4e-b0fe-e71d1865fe28)
Apple has been very hesitant to jump on this bandwagon, but in the end, they are also following Silicon Valley's Hail Mary moment and calling it "Apple Intelligence". The fact is that "AI" calculations are very computationally intensive and require special compute units (NPUs) in processors to be able to come up with results in a reasonable amount of time without draining the battery.

View file

@ -106,7 +106,7 @@ It's not that people love corporate social media so much. It is highly likely th
The barrier to entry for Mastodon is high, nobody they know is there and if you stay long enough the vibe is extremely off.
![Condolence card reading: With Sympathy on your new Bluesky/Threads account. Our deepest condolences on the inevitability painful realization that your expectations were not informed by past evidence.](https://img.sebin-nyshkim.net/i/e7711e31-0d82-406c-9d4d-74ecff3c7582.jpg "The \"Condolences\" Mastodon users expressed for people joining Bluesky and Threads instead of Mastodon")
![Condolence card reading: With Sympathy on your new Bluesky/Threads account. Our deepest condolences on the inevitability painful realization that your expectations were not informed by past evidence.](https://img.sebin-nyshkim.net/i/e7711e31-0d82-406c-9d4d-74ecff3c7582 "The \"Condolences\" Mastodon users expressed for people joining Bluesky and Threads instead of Mastodon")
The way anything remotely corporate is not only frowned upon, but actively despised. The way users of other platforms are constantly ridiculed and made the target of spite begs the question if the average user base on Mastodon has the emotional intelligence and self-awareness of a sponge[^mastodig]. I hate what the internet has become under the corporate leadership of pump & dump scheme Silicon Valley as much as the next guy, but to imply that people are "too brainwashed" to make a "better informed" decision so it gives the invested Mastodon user a reason to pout to make them feel better makes them look like an immature child that didn't get the birthday present it wanted. But point that out to the larger group and be expected to be tarred and feathered by an angry mob because you dared question the sanctity of Mastodon's noble principles.
@ -134,7 +134,7 @@ I need both of these parties to understand something very basic: Given the choic
You won't sell people on merits that aren't important in their day to day.
![Simpsons bus driver meme. He taps a sign that reads: You won't sell people on merits that aren't important in their day to day](https://img.sebin-nyshkim.net/i/798f8d11-d8da-42fc-b71e-9f80adfc48d2.jpg "Maybe it will stick better as a meme?")
![Simpsons bus driver meme. He taps a sign that reads: You won't sell people on merits that aren't important in their day to day](https://img.sebin-nyshkim.net/i/798f8d11-d8da-42fc-b71e-9f80adfc48d2 "Maybe it will stick better as a meme?")
For the same reason we've still not arrived at end-to-end encryption being a standard in our daily communication, Mastodon is not the standard for social media. It offers a worse experience without offering a clear and concise reason how that is better than the thing that serves people's means of self-actualization right now.

View file

@ -47,7 +47,7 @@ After a few days of running [Linux Mint](https://linuxmint.com) on my machine, i
I thought I was going crazy. How could a change in OS be the solution to this seemingly unsolvable mess?! But it was and it allowed me to use my machine again. That was all that really mattered to me and so I started to adapt to my new situation.
+++ Side Note
![Screenshot of SuSE Linux 9.0 running KDE 3.1 with a few applications opened](https://img.sebin-nyshkim.net/i/f2f08400-7db1-4ad7-8e98-0fd56c87b9b4.jpg "This was my first introduction to Linux on the desktop in 2004")
![Screenshot of SuSE Linux 9.0 running KDE 3.1 with a few applications opened](https://img.sebin-nyshkim.net/i/f2f08400-7db1-4ad7-8e98-0fd56c87b9b4 "This was my first introduction to Linux on the desktop in 2004")
The first time I tried getting into Linux was during my teens in secondary school, starting with SuSE Linux 9.0 around 2004, included on a CD in a magazine with an installation guide. I was fascinated about the little things open source software did differently from what I was used to, e.g. tabs in the file manager, installing any software in a centralized software center, customizing the look and feel by just downloading files from the internet, copy them somewhere and BOOM new theme! I even held presentations in school showcasing how similar Linux and Windows were in terms of day to day use-cases, like listening to music, watching videos, writing documents and surfing the web.
@ -56,7 +56,7 @@ I tried other Linux distributions as well, like Debian and eventually Ubuntu. Th
I even played games on Linux back then, like Doom 3 and Neverwinter Nights (these actually had official Linux versions readily available). But the majority of games I played were exclusive to Windows and unworkable with the version of Wine that was available at the time. So I was missing a reason to stay on Linux for longer because for most of the things I did with a computer, I still needed to boot back into Windows. Alas.
+++
![Linux Mint 18 with its flagship Cinnamon desktop](https://img.sebin-nyshkim.net/i/a6f466d8-8648-4b68-9532-72d40c548bee.jpg "Since I've heard a lot of good things about Linux Mint I was giving that a shot and it served me well for many years")
![Linux Mint 18 with its flagship Cinnamon desktop](https://img.sebin-nyshkim.net/i/a6f466d8-8648-4b68-9532-72d40c548bee "Since I've heard a lot of good things about Linux Mint I was giving that a shot and it served me well for many years")
I was still very "Windows pilled", in that I avoided doing things via the terminal like the plague. Luckily, Linux Mint being very beginner focused allowed me to avoid it for most stuff. I only updated core system packages with `apt`, the rest of my apps I took from somewhere else as a `*.deb` package or I went to the software store app that came with Linux Mint.
@ -82,7 +82,7 @@ Lucky for me, I noticed a certain distribution climb the ranks on [distrowatch.c
I looked further into it and learned it was *Arch-based*. I've never heard of any distro being based on anything else other than Debian or Ubuntu. It presented itself as both bleeding edge and user friendly and I was gonna give it a shot, if that meant I would also get to do more tinkering.
![Screenshot of Manjaro KDE with the file manager and terminal open, next to a couple system monitor desktop widgets. The wallpaper has a milk glass appearance behind open windows.](https://img.sebin-nyshkim.net/i/c28b5e66-6b7f-4392-89ba-2dc62f43a38d.jpg "My customized Manjaro KDE desktop at the time. I'm such a sucker for glassy interfaces 😩💦")
![Screenshot of Manjaro KDE with the file manager and terminal open, next to a couple system monitor desktop widgets. The wallpaper has a milk glass appearance behind open windows.](https://img.sebin-nyshkim.net/i/c28b5e66-6b7f-4392-89ba-2dc62f43a38d "My customized Manjaro KDE desktop at the time. I'm such a sucker for glassy interfaces 😩💦")
And for the most part, I pretty much got what I expected. I was able to enjoy very recent software, on a rolling release basis, without the frills of having to manage everything myself. Also, I learned of a neat little thing called the [AUR](https://aur.archlinux.org/), with tons of more great software that was just waiting for me to install it. I was very excited of the possibilities! Also, Manjaro being a rolling-release disto, just like Arch, meant I did not have to deal with major distribution release cycles, receiving updates to the latest versions when they become available. I was always up to date, as long as I just kept installing periodic system updates. What a concept!