The code and data behind xeiaso.net
5
fork

Configure Feed

Select the types of activity you want to include in your feed.

use files.xeiaso.net for some things as a test

Signed-off-by: Xe Iaso <me@xeiaso.net>

+70 -62
+1 -1
lume/src/_components/Disclaimer.jsx
··· 3 3 <> 4 4 <link 5 5 rel="stylesheet" 6 - href="https://cdn.xeiaso.net/file/christine-static/static/font/inter/inter.css" 6 + href="https://files.xeiaso.net/static/font/inter/inter.css" 7 7 /> 8 8 <div className="font-['Inter'] text-lg mx-auto mt-4 mb-2 rounded-lg bg-bg-2 p-4 dark:bg-bgDark-2 md:max-w-3xl font-extrabold xe-dont-newline"> 9 9 {children}
+8 -11
lume/src/_components/Figure.tsx
··· 5 5 alt?: string; 6 6 } 7 7 8 - export default function Figure( 9 - { className, path, alt, desc = alt }: FigureProps, 10 - ) { 8 + export default function Figure({ 9 + className, 10 + path, 11 + alt, 12 + desc = alt, 13 + }: FigureProps) { 11 14 return ( 12 15 <figure className={`max-w-3xl mx-auto ${className}`}> 13 - <a 14 - href={`https://cdn.xeiaso.net/file/christine-static/${path}`} 15 - target="_blank" 16 - > 17 - <img 18 - src={`https://cdn.xeiaso.net/file/christine-static/${path}`} 19 - alt={desc} 20 - /> 16 + <a href={`https://files.xeiaso.net/${path}`} target="_blank"> 17 + <img src={`https://files.xeiaso.net/${path}`} alt={desc} /> 21 18 </a> 22 19 {desc && <figcaption>{desc}</figcaption>} 23 20 </figure>
+14 -15
lume/src/_components/MastodonShare.tsx
··· 1 1 import { useState } from "npm:preact/hooks"; 2 2 3 3 const u = (url = "", params = {}) => { 4 - let result = new URL(url, window.location.href); 5 - Object.entries(params).forEach((kv) => { 6 - let [k, v] = kv; 7 - result.searchParams.set(k, v as string); 8 - }); 9 - return result.toString(); 10 - }; 4 + let result = new URL(url, window.location.href); 5 + Object.entries(params).forEach((kv) => { 6 + let [k, v] = kv; 7 + result.searchParams.set(k, v as string); 8 + }); 9 + return result.toString(); 10 + }; 11 11 12 12 export interface MastodonShareButtonProps { 13 13 title: string; ··· 16 16 tags: string; 17 17 } 18 18 19 - export default function MastodonShareButton( 20 - { title, url, series, tags }: MastodonShareButtonProps, 21 - ) { 19 + export default function MastodonShareButton({ 20 + title, 21 + url, 22 + series, 23 + tags, 24 + }: MastodonShareButtonProps) { 22 25 let defaultURL = localStorage["mastodon_instance"]; 23 26 24 27 if (defaultURL == undefined) { ··· 49 52 oninput={(e) => setURL(e.target.value)} 50 53 /> 51 54 <br /> 52 - <textarea 53 - rows={6} 54 - cols={40} 55 - oninput={(e) => setToot(e.target.value)} 56 - > 55 + <textarea rows={6} cols={40} oninput={(e) => setToot(e.target.value)}> 57 56 {getToot()} 58 57 </textarea> 59 58 <br />
+3 -3
lume/src/_components/XeblogHero.tsx
··· 11 11 <picture> 12 12 <source 13 13 type="image/avif" 14 - srcset={`https://cdn.xeiaso.net/file/christine-static/hero/${file}.avif`} 14 + srcset={`https://files.xeiaso.net/hero/${file}.avif`} 15 15 /> 16 16 <source 17 17 type="image/webp" 18 - srcset={`https://cdn.xeiaso.net/file/christine-static/hero/${file}.webp`} 18 + srcset={`https://files.xeiaso.net/hero/${file}.webp`} 19 19 /> 20 20 <img 21 21 alt={`An image of ${prompt}`} 22 22 className="hero-image" 23 23 loading="lazy" 24 - src={`https://cdn.xeiaso.net/file/christine-static/hero/${file}.jpg`} 24 + src={`https://files.xeiaso.net/hero/${file}.jpg`} 25 25 /> 26 26 </picture> 27 27 {ai !== undefined ? (
+4 -4
lume/src/_components/XeblogPicture.tsx
··· 11 11 }: XeblogPicture) { 12 12 return ( 13 13 <figure className={`max-w-3xl mx-auto not-prose w-full ${className}`}> 14 - <a href={`https://cdn.xeiaso.net/file/christine-static/${path}.jpg`}> 14 + <a href={`https://files.xeiaso.net/${path}.jpg`}> 15 15 <picture> 16 16 <source 17 17 type="image/avif" 18 - srcset={`https://cdn.xeiaso.net/file/christine-static/${path}.avif`} 18 + srcset={`https://files.xeiaso.net/${path}.avif`} 19 19 /> 20 20 <source 21 21 type="image/webp" 22 - srcset={`https://cdn.xeiaso.net/file/christine-static/${path}.webp`} 22 + srcset={`https://files.xeiaso.net/${path}.webp`} 23 23 /> 24 24 <img 25 25 alt={desc} 26 26 className={className} 27 27 loading="lazy" 28 - src={`https://cdn.xeiaso.net/file/christine-static/${path}.jpg`} 28 + src={`https://files.xeiaso.net/${path}.jpg`} 29 29 /> 30 30 </picture> 31 31 </a>
+11 -5
lume/src/_components/XeblogSlide.tsx
··· 4 4 desc?: string; 5 5 } 6 6 7 - export default function XeblogSlide({ name, essential, desc }: XeblogSlideProps) { 7 + export default function XeblogSlide({ 8 + name, 9 + essential, 10 + desc, 11 + }: XeblogSlideProps) { 8 12 return ( 9 - <figure class={essential ? "xeblog-sides-essential" : "xeblog-slides-fluff"}> 13 + <figure 14 + class={essential ? "xeblog-sides-essential" : "xeblog-slides-fluff"} 15 + > 10 16 <picture> 11 17 <source 12 18 type="image/avif" 13 - srcset={`https://cdn.xeiaso.net/file/christine-static/talks/${name}.avif`} 19 + srcset={`https://files.xeiaso.net/talks/${name}.avif`} 14 20 /> 15 21 <source 16 22 type="image/webp" 17 - srcset={`https://cdn.xeiaso.net/file/christine-static/talks/${name}.webp`} 23 + srcset={`https://files.xeiaso.net/talks/${name}.webp`} 18 24 /> 19 25 <img 20 26 alt={desc || `Slide ${name}`} 21 27 loading="lazy" 22 - src={`https://cdn.xeiaso.net/file/christine-static/talks/${name}.jpg`} 28 + src={`hhttps://files.xeiaso.net/talks/${name}.jpg`} 23 29 /> 24 30 </picture> 25 31 {desc && <figcaption>{desc}</figcaption>}
+2 -2
lume/src/_components/XeblogVideo.tsx
··· 7 7 } 8 8 9 9 export default function Video({ path, vertical }: VideoProps) { 10 - const streamURL = `https://cdn.xeiaso.net/file/christine-static/${path}/index.m3u8`; 10 + const streamURL = `https://files.xeiaso.net/${path}/index.m3u8`; 11 11 const id = sha256(streamURL); 12 12 const video = ( 13 13 <video id={id} className="not-prose sm:max-h-[50vh] mx-auto" controls> 14 14 <source src={streamURL} type="application/vnd.apple.mpegurl" /> 15 15 <source 16 - src="https://cdn.xeiaso.net/file/christine-static/blog/HLSBROKE.mp4" 16 + src="https://files.xeiaso.net/blog/HLSBROKE.mp4" 17 17 type="video/mp4" 18 18 /> 19 19 </video>
+5 -6
lume/src/_includes/bare.njk
··· 50 50 <meta name="viewport" content="width=device-width, initial-scale=1.0"/> 51 51 <meta name="go-import" content="xeiaso.net/v4 git https://github.com/Xe/site"/> 52 52 53 - <link rel="stylesheet" href="https://cdn.xeiaso.net/static/pkg/iosevka/family.css"/> 54 53 <link rel="stylesheet" href="/styles.css"/> 55 54 <link rel="alternate" type="application/rss+xml" href="https://xeiaso.net/blog.rss"/> 56 55 <link rel="alternate" type="application/json" href="https://xeiaso.net/blog.json"/> ··· 73 72 <meta name="msapplication-TileColor" content="#ffffff"> 74 73 <meta name="msapplication-TileImage" content="/static/favicon/ms-icon-144x144.png"> 75 74 <meta name="theme-color" content="#ffffff"> 76 - <link rel="canonical" href="https://xeiaso.net{{ url }}" /> 75 + <link rel="canonical" href="https://xeiaso.net{{ url }}"/> 77 76 78 77 {% if title %} 79 78 <title>{{ title }} - Xeserv</title> ··· 86 85 {% endif %} 87 86 88 87 {% if hero %} 89 - <meta property="og:image" content="https://cdn.xeiaso.net/file/christine-static/hero/{{ hero.file }}.jpg"/> 90 - <meta property="twitter:image" content="https://cdn.xeiaso.net/file/christine-static/hero/{{ hero.file }}.jpg"/> 88 + <meta property="og:image" content="https://files.xeiaso.net/hero/{{ hero.file }}.jpg"/> 89 + <meta property="twitter:image" content="https://files.xeiaso.net/hero/{{ hero.file }}.jpg"/> 91 90 {% endif %} 92 91 </head> 93 - 92 + 94 93 {{ comp.ads() | safe }} 95 94 {{ content | safe }} 96 95 97 96 <script data-goatcounter="https://plexeachsitairsunodd.goatcounter.com/count" async src="//gc.zgo.at/count.js"></script> 98 - </html> 97 + </html>
+7 -7
lume/src/_includes/base.njk
··· 5 5 <meta name="viewport" content="width=device-width, initial-scale=1.0"/> 6 6 <meta name="go-import" content="xeiaso.net/v4 git https://github.com/Xe/site"/> 7 7 8 - <link rel="stylesheet" href="https://cdn.xeiaso.net/static/pkg/iosevka/family.css"/> 9 8 <link rel="stylesheet" href="/styles.css"/> 10 9 11 10 <link rel="alternate" type="application/rss+xml" href="https://xeiaso.net/blog.rss"/> ··· 48 47 {% endif %} 49 48 50 49 {% if image %} 51 - <meta property="og:image" content="https://cdn.xeiaso.net/file/christine-static/{{ image }}.jpg"/> 52 - <meta property="twitter:image" content="https://cdn.xeiaso.net/file/christine-static/{{ image }}.jpg"/> 50 + <meta property="og:image" content="https://files.xeiaso.net/{{ image }}.jpg"/> 51 + <meta property="twitter:image" content="https://files.xeiaso.net/{{ image }}.jpg"/> 53 52 <meta name="twitter:card" content="summary_image_large"/> 54 53 {% endif %} 55 54 56 55 {% if hero %} 57 56 {% if hero.social %} 58 - <meta property="og:image" content="https://cdn.xeiaso.net/file/christine-static/social/{{ hero.file }}.jpg"/> 59 - <meta property="twitter:image" content="https://cdn.xeiaso.net/file/christine-static/social/{{ hero.file }}.jpg"/> 57 + <meta property="og:image" content="https://files.xeiaso.net/social/{{ hero.file }}.jpg"/> 58 + <meta property="twitter:image" content="https://files.xeiaso.net/social/{{ hero.file }}.jpg"/> 60 59 <meta name="twitter:card" content="summary_large_image"/> 61 60 {% else %} 62 - <meta property="og:image" content="https://cdn.xeiaso.net/file/christine-static/hero/{{ hero.file }}.jpg"/> 63 - <meta property="twitter:image" content="https://cdn.xeiaso.net/file/christine-static/hero/{{ hero.file }}.jpg"/> 61 + <meta property="og:image" content="https://files.xeiaso.net/hero/{{ hero.file }}.jpg"/> 62 + <meta property="twitter:image" content="https://files.xeiaso.net/hero/{{ hero.file }}.jpg"/> 64 63 <meta name="twitter:card" content="summary_large_image"/> 65 64 {% endif %} 66 65 {% endif %} ··· 71 70 72 71 <link rel="preconnect" href="https://stickers.xeiaso.net"/> 73 72 <link rel="preconnect" href="https://cdn.xeiaso.net"/> 73 + <link rel="preconnect" href="https://files.xeiaso.net"/> 74 74 <link rel="preconnect" href="https://fly.storage.tigris.dev"/> 75 75 </head> 76 76
+1 -1
lume/src/_includes/talk.njk
··· 20 20 </p> 21 21 22 22 {% if hero %} 23 - <meta property="og:image" content={`https://cdn.xeiaso.net/file/christine-static/hero/${hero.file}.jpg`}/> 23 + <meta property="og:image" content={`https://files.xeiaso.net/hero/${hero.file}.jpg`}/> 24 24 {{ comp.XeblogHero(hero) | safe }} 25 25 {% endif %} 26 26
+9 -2
lume/src/styles.css
··· 1 1 @tailwind base; 2 2 @tailwind components; 3 3 @tailwind utilities; 4 - @import url("https://cdn.xeiaso.net/file/christine-static/static/font/inter/inter.css"); 4 + @import url(https://files.xeiaso.net/static/font/inter/inter.css); 5 5 @import url(https://cdn.xeiaso.net/static/css/iosevka/family.css); 6 - @import url(https://cdn.xeiaso.net/static/css/podkova/family.css); 6 + 7 + @font-face { 8 + font-family: "Podkova"; 9 + font-style: normal; 10 + font-weight: 400 800; 11 + font-display: swap; 12 + src: url("static/font/Podkova.woff2") format("woff2"); 13 + } 7 14 8 15 /* latin-ext */ 9 16 @font-face {
+1 -1
lume/src/xecast/001.mdx
··· 4 4 image: "xecast/episodes/001" 5 5 desc: "Xe Iaso talks about their background in tech, the Techaro series, and AI." 6 6 podcast: 7 - link: "https://cdn.xeiaso.net/file/christine-static/xecast/episodes/001.mp3" 7 + link: "https://files.xeiaso.net/xecast/episodes/001.mp3" 8 8 length: "46339200" 9 9 --- 10 10
+1 -1
lume/src/xecast/002.mdx
··· 4 4 image: "xecast/episodes/002" 5 5 desc: "Xe Iaso shares their DevOpsDays MSP experience, home studio upgrades, and AI musings." 6 6 podcast: 7 - link: "https://cdn.xeiaso.net/file/christine-static/xecast/episodes/002.mp3" 7 + link: "https://files.xeiaso.net/xecast/episodes/002.mp3" 8 8 length: "49996935" 9 9 --- 10 10
+1 -1
lume/src/xecast/003.mdx
··· 3 3 date: 2024-08-25 4 4 desc: "Xe returns while on vacation where they built a new PC, made a SaaS to check web server headers, and re-evaluated how they think about complexity." 5 5 podcast: 6 - link: "https://cdn.xeiaso.net/file/christine-static/xecast/episodes/003.mp3" 6 + link: "https://files.xeiaso.net/xecast/episodes/003.mp3" 7 7 length: "80793600" 8 8 --- 9 9
+1 -1
lume/src/xecast/004.mdx
··· 3 3 date: 2024-09-10 4 4 desc: "Xe reflects on a week of intense ups and downs, navigating a whirlwind of job offers, contract work, and personal projects." 5 5 podcast: 6 - link: "https://cdn.xeiaso.net/file/christine-static/xecast/episodes/004.mp3" 6 + link: "https://files.xeiaso.net/xecast/episodes/004.mp3" 7 7 length: "49592640" 8 8 --- 9 9
+1 -1
lume/src/xecast/005.mdx
··· 3 3 date: 2024-09-21 4 4 desc: "This episode of Xecast, Xe Iaso is joined by special guest Lithium Fox. They nerd out about simracing, vtubing, and passion projects." 5 5 podcast: 6 - link: "https://cdn.xeiaso.net/file/christine-static/xecast/episodes/005.mp3" 6 + link: "https://files.xeiaso.net/xecast/episodes/005.mp3" 7 7 length: "84123815" 8 8 --- 9 9