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..625ebac 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]: - [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,7 @@ 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) +- [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 +59,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 +68,7 @@ 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/ +[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 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..4145699 --- /dev/null +++ b/src/feed.njk @@ -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" + } + } +} +--- + + + {{ metadata.title }} + {{ metadata.description }} + + + {{ collections.posts | getNewestCollectionItemDate | dateToRfc3339 }} + {{ metadata.base | addPathPrefixToFullUrl }} + + {{ metadata.author.name }} + + {%- for post in collections.posts | reverse %} + {%- set absolutePostUrl %}{{ post.url | htmlBaseUrl(metadata.base) }}{% endset %} + + {{ post.data.title }} + + {{ post.date | dateToRfc3339 }} + {{ absolutePostUrl }} + + <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..5165072 100644 --- a/src/layouts/base.njk +++ b/src/layouts/base.njk @@ -16,8 +16,8 @@ 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 +29,14 @@ {% endif %} - +