diff --git a/eleventy.config.js b/eleventy.config.js index 3102604..f05c8e3 100644 --- a/eleventy.config.js +++ b/eleventy.config.js @@ -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'; @@ -22,9 +22,24 @@ import markdownItDeflist from 'markdown-it-deflist'; import markdownItFootnote from 'markdown-it-footnote'; import markdownItImageFigures from 'markdown-it-image-figures'; -const MARKDOWNIT_OPTIONS = { html: true, linkify: true, typographer: true }; 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})/); + const imgFormat = format === 'jpeg' ? 'jpg' : format; + + return `${baseUrl}/${imgUuid[1]}.${imgFormat}?width=${width}`; +}; + +const MARKDOWNIT_OPTIONS = { html: true, linkify: true, typographer: true }; +const ELEVENTY_IMAGE_DEFAULTS = { + formats: ['webp', 'auto'], + urlPath: '/img/', + outputDir: './public/img/', + urlFormat +}; + export default async function (eleventyConfig) { eleventyConfig.addPassthroughCopy('./src/css/prism.css'); eleventyConfig.addWatchTarget('./src/css/'); @@ -32,9 +47,6 @@ export default async function (eleventyConfig) { eleventyConfig.addPassthroughCopy('./src/fonts/'); eleventyConfig.addWatchTarget('./src/fonts/'); - eleventyConfig.addPassthroughCopy('./src/img/sebin.png'); - eleventyConfig.addWatchTarget('./src/img/sebin.png'); - eleventyConfig.addCollection('posts', (collection) => process.env.ELEVENTY_PRODUCTION ? collection.getFilteredByGlob('./src/posts/*.md') @@ -90,37 +102,16 @@ export default async function (eleventyConfig) { } }); eleventyConfig.addPlugin(eleventyImageTransformPlugin, { + ...ELEVENTY_IMAGE_DEFAULTS, extensions: 'html', - formats: ['avif', 'webp', 'auto'], widths: [640, 800, 1280, 1920, 2560, 3840, 'auto'], - sharpJpegOptions: { mozjpeg: true, optimiseScans: true, quality: 95 }, - sharpPngOptions: { compressionLevel: 9 }, - urlPath: '/img/', - outputDir: './public/img/', defaultAttributes: { loading: 'lazy', decoding: 'async', 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)); @@ -138,12 +129,8 @@ export default async function (eleventyConfig) { eleventyConfig.addShortcode('year', () => `${new Date().getFullYear()}`); eleventyConfig.addShortcode('bgimgset', async (src) => { const imgset = await Image(src, { - widths: [1920, 2560, 3840], - sharpJpegOptions: { mozjpeg: true, optimiseScans: true, quality: 95 }, - sharpPngOptions: { compressionLevel: 9 }, - formats: ['avif', 'webp', 'auto'], - urlPath: '/img/', - outputDir: './public/img/' + ...ELEVENTY_IMAGE_DEFAULTS, + widths: [1920, 2560, 3840] }); const getSets = ({ url, sourceType }, i) => `url(${url}) type('${sourceType}') ${i + 1}x`; diff --git a/src/404.md b/src/404.md index e2fa7a3..b098488 100644 --- a/src/404.md +++ b/src/404.md @@ -6,7 +6,7 @@ permalink: /404.html # Here be no dragons -![Sebin is unhappy with the content on his phone](/img/sebin-sticker-phone.png) +![Sebin is unhappy with the content on his phone](https://img.sebin-nyshkim.net/i/00372308-6677-4e84-8344-2630b58f6651) The page you were looking for does not exist! diff --git a/src/about.md b/src/about.md index 166efc4..667075f 100644 --- a/src/about.md +++ b/src/about.md @@ -8,7 +8,7 @@ eleventyNavigation: # {{ title }} -![Sebin does a think](/img/sebin-sticker-think.png) +![Sebin does a think](https://img.sebin-nyshkim.net/i/35da87be-0734-4738-9503-07d52c64c905) | Key | Value | | --------- | ----------------- | @@ -19,12 +19,13 @@ eleventyNavigation: I'm a dude from the south of Germany pretending to be a dragon online. -I'm a web developer at heart and love to make pretty and sleek websites (as you might have noticed). I started profesionally coding right around the time HTML5 took off and kept at it ever since. You can take a look at some of my personal projects over on my [main home page]. +I'm a web developer at heart and love to make pretty and sleek websites (as you might have noticed). I started coding professionally right around the time HTML5 took off and kept at it ever since. You can take a look at some of my personal projects over on my [main home page]. -My code repos[^1]: +My code repos[^gitrepos]: - [GitHub] - [GitLab] +- [Forgejo][selfgit] Besides that I also love FOSS and use Arch Linux (btw) as my daily driver! Whenever I can I try to get involved and contribute translations to various tools and apps. I've been running Linux for the better part of the last 10 years, going from Linux Mint, to Manjaro and eventually pure Arch. It gave me a whole new appreciation for how computers work and being able to fully control my general computing experience (the privacy benefits are cool, too). @@ -46,6 +47,8 @@ When I'm not doing development work, I'm getting my hands dirty in self-hosting. - [Wallabag] (read-it-later pile of shame) - [Nextcloud] (cloud storage & collaboration) - [Immich] (Google Photos without the Google parts) +- [AdGuard Home] (DNS Sinkhole for ads and trackers) +- [Forgejo] (light-weight Git forge) As for the pretending to be a dragon online thing: Yes, I'm one of those furries. Been one for the past 20 years. Also hella gay 🏳️‍🌈 @@ -57,6 +60,7 @@ Video games also shaped a lot of my music tastes. I'm listening to tons of video [GitHub]: https://github.com/SebinNyshkim [GitLab]: https://gitlab.com/SebinNyshkim +[selfgit]: https://git.sebin-nyshkim.net/SebinNyshkim [Navidrome]: https://www.navidrome.org/ [Jellyfin]: https://jellyfin.org/ @@ -65,6 +69,8 @@ Video games also shaped a lot of my music tastes. I'm listening to tons of video [Wallabag]: https://wallabag.org/ [Nextcloud]: https://nextcloud.com/ [Immich]: https://immich.app/ +[AdGuard Home]: https://adguard.com/adguard-home/overview.html +[Forgejo]: https://forgejo.org/ [Secret of Mana]: https://www.igdb.com/games/secret-of-mana [Secret of Evermore]: https://www.igdb.com/games/secret-of-evermore @@ -86,4 +92,4 @@ Video games also shaped a lot of my music tastes. I'm listening to tons of video *[NES]: Nintendo Entertainment System *[SNES]: Super NES -[^1]: In case you're wondering: most of my repos are personal projects, just for me, and don't need to be developed out in the open. +[^gitrepos]: In case you're wondering: most of my repos are personal projects, just for me, and don't need to be developed out in the open. diff --git a/src/contact.md b/src/contact.md index e852159..e6f4c7d 100644 --- a/src/contact.md +++ b/src/contact.md @@ -14,14 +14,12 @@ I can be found all over the Internet! | ------------ | --------------------------- | | Mastodon | [@SebinNyshkim@meow.social] | | Bluesky | [@sebin-nyshkim.net] | -| Twitter | [@SebinNyshkim] | | Fur Affinity | [sonofdragons] | If you prefer a more direct line to me, there's [Telegram], [Discord] and [Signal]. [@SebinNyshkim@meow.social]: https://meow.social/@SebinNyshkim [@sebin-nyshkim.net]: https://bsky.app/profile/sebin-nyshkim.net -[@SebinNyshkim]: https://twitter.com/SebinNyshkim [sonofdragons]: https://www.furaffinity.net/user/sonofdragons [Telegram]: https://t.me/SebinNyshkim [Discord]: https://discordapp.com/users/227753049530040321 diff --git a/src/drafts/drafts.json b/src/drafts/drafts.json index 3a003b0..4db5e52 100644 --- a/src/drafts/drafts.json +++ b/src/drafts/drafts.json @@ -6,7 +6,7 @@ "author": { "name": "Sebin Nyshkim", "href": "https://blog.sebin-nyshkim.net", - "image": "https://cdn.sebin-nyshkim.net/-o3c3fVEgEx" + "image": "https://img.sebin-nyshkim.net/i/b6629b72-ab77-4a6c-bf97-b1a615cc2454" }, "twitter": { "cardType": "summary_large_image", diff --git a/src/feed.njk b/src/feed.njk new file mode 100644 index 0000000..b00c5d7 --- /dev/null +++ b/src/feed.njk @@ -0,0 +1,38 @@ +--- +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/' +--- + + + {{ metadata.title }} + {{ metadata.description }} + + + {{ collections.posts | getNewestCollectionItemDate | dateToRfc3339 }} + {{ metadata.base | addPathPrefixToFullUrl }} + {%- for post in collections.posts | reverse %} + {%- set absolutePostUrl %}{{ post.url | htmlBaseUrl(metadata.base) }}{% endset %} + + + {{ post.data.author.name }} + {{ post.data.author.href }} + + {{ post.data.title }} + + {{ post.date | dateToRfc3339 }} + {{ absolutePostUrl }} + {%- for tag in post.data.tags %} + + {%- endfor %} + + <img src="{{ post.data.image.src }}.webp?width=1200" alt="{{ post.data.image.alt }}"> + {{ post.content | renderTransforms(post.data.page, metadata.base) }} + + + {%- endfor %} + diff --git a/src/img/sebin-sticker-hello.png b/src/img/sebin-sticker-hello.png deleted file mode 100644 index 575e05e..0000000 Binary files a/src/img/sebin-sticker-hello.png and /dev/null differ diff --git a/src/img/sebin-sticker-phone.png b/src/img/sebin-sticker-phone.png deleted file mode 100644 index a1af3d1..0000000 Binary files a/src/img/sebin-sticker-phone.png and /dev/null differ diff --git a/src/img/sebin-sticker-think.png b/src/img/sebin-sticker-think.png deleted file mode 100644 index bb6c452..0000000 Binary files a/src/img/sebin-sticker-think.png and /dev/null differ diff --git a/src/img/sebin.png b/src/img/sebin.png deleted file mode 100644 index 8dcce6e..0000000 Binary files a/src/img/sebin.png and /dev/null differ diff --git a/src/index.md b/src/index.md index 7677533..058cab6 100644 --- a/src/index.md +++ b/src/index.md @@ -7,7 +7,7 @@ eleventyNavigation: # Rawr there! 👋🏻 -![Sebin says hello](/img/sebin-sticker-hello.png) +![Sebin says hello](https://img.sebin-nyshkim.net/i/928fab95-ac55-4b66-b876-1c31b5924db6) Welcome to my little corner of the internet! This is where I pour out my thoughts whenever I have them :3 diff --git a/src/layouts/base.njk b/src/layouts/base.njk index 774b306..6360146 100644 --- a/src/layouts/base.njk +++ b/src/layouts/base.njk @@ -13,11 +13,10 @@ og_image_alt = image.alt, og_image_type = 'image/webp', twitter_card_type = twitter.cardType, - twitter_handle = twitter.account, name = author.name, generator = eleventy.generator, - preconnect = ['https://cdn.sebin-nyshkim.net'], - dns_prefetch = ['https://cdn.sebin-nyshkim.net'], + preconnect = ['https://img.sebin-nyshkim.net'], + dns_prefetch = ['https://img.sebin-nyshkim.net'], css = ['/fonts/tilt-warp/tilt-warp.css', '/fonts/encode-sans/encode-sans.css', '/fonts/m-plus-1-code/m-plus-1-code.css', @@ -29,14 +28,14 @@ {% endif %} - +