feat: update for 2026

This commit is contained in:
Rudra Saraswat 2026-04-05 05:00:22 +01:00
parent 9192cb196d
commit 7ceb36c062
24 changed files with 2660 additions and 1047 deletions

View file

@ -1,8 +1,8 @@
// @ts-check // @ts-check
import { defineConfig } from 'astro/config'; import { defineConfig } from "astro/config";
// https://astro.build/config // https://astro.build/config
export default defineConfig({ export default defineConfig({
site: 'https://ruds.io', site: "https://ruds.io",
base: '/site' base: "/",
}); });

3075
package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -9,8 +9,8 @@
"astro": "astro" "astro": "astro"
}, },
"dependencies": { "dependencies": {
"@astrojs/rss": "^4.0.11", "@astrojs/rss": "^4.0.18",
"@fontsource/jetbrains-mono": "^5.2.5", "@fontsource/jetbrains-mono": "^5.2.8",
"astro": "^5.7.5" "astro": "^6.1.3"
} }
} }

BIN
public/written_in_vi.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 77 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 276 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

View file

@ -1,2 +1,2 @@
<a href="/">home</a> <a href="/">home</a>
<a href="/site/blog/">blog</a> <a href="/blog/">blog</a>

View file

@ -1,10 +1,10 @@
--- ---
import { ClientRouter } from "astro:transitions"; import { ClientRouter } from "astro:transitions";
import '@fontsource/jetbrains-mono'; import "@fontsource/jetbrains-mono";
import Header from '../components/Header.astro'; import Header from "../components/Header.astro";
import '../styles/global.css'; import "../styles/global.css";
const { pageTitle, pageCustomTitle = pageTitle } = Astro.props; const { pageTitle, pageCustomTitle = pageTitle } = Astro.props;
--- ---
@ -12,7 +12,7 @@ const { pageTitle, pageCustomTitle = pageTitle } = Astro.props;
<html lang="en"> <html lang="en">
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<link rel="icon" type="image/png" href="/site/favicon.png" /> <link rel="icon" type="image/png" href="/favicon.png" />
<meta name="viewport" content="width=device-width" /> <meta name="viewport" content="width=device-width" />
<meta name="generator" content={Astro.generator} /> <meta name="generator" content={Astro.generator} />
<title>{pageCustomTitle} | ruds</title> <title>{pageCustomTitle} | ruds</title>
@ -20,7 +20,9 @@ const { pageTitle, pageCustomTitle = pageTitle } = Astro.props;
<ClientRouter /> <ClientRouter />
</head> </head>
<body> <body>
<div class="screen_size_warning"><b>This site is best viewed on a computer.</b><br><br></div> <div class="screen_size_warning">
<b>This site is best viewed on a computer.</b><br /><br />
</div>
<Header /> <Header />
<h2>{pageTitle}</h2> <h2>{pageTitle}</h2>
<slot /> <slot />

View file

@ -1,23 +1,40 @@
--- ---
import BaseLayout from '../layouts/BaseLayout.astro'; import BaseLayout from "../layouts/BaseLayout.astro";
import { getCollection, getEntry } from 'astro:content'; import { getCollection, getEntry } from "astro:content";
const pageTitle = 'blog'; const pageTitle = "blog";
const posts = await getCollection('posts'); const posts = await getCollection("posts");
console.log(posts) console.log(posts);
const allPosts = Object.values(import.meta.glob('./posts/*.md', { eager: true })); const allPosts = Object.values(
allPosts.sort((a, b) => new Date(b.frontmatter.pubDate) - new Date(a.frontmatter.pubDate)); import.meta.glob("./posts/*.md", { eager: true }),
);
allPosts.sort(
(a, b) => new Date(b.frontmatter.pubDate) - new Date(a.frontmatter.pubDate),
);
--- ---
<BaseLayout pageTitle={pageTitle}> <BaseLayout pageTitle={pageTitle}>
<p>ITT: the incoherent ramblings of an emo madman with a technological inclination.</p> <p>
ITT: the incoherent ramblings of a fatigued madman with a technological
inclination.
</p>
<hr> <hr />
<div style="text-align: left;"> <div style="text-align: left;">
<h2>posts</h2> <h2>posts</h2>
<ul> <ul>
{allPosts.map((post: any) => <li><a href={post.url}>{post.frontmatter.title}</a> — <em>published on {post.frontmatter.pubDate.toString().slice(0, 10)}</em></li>)} {
allPosts.map((post: any) => (
<li>
<a href={post.url}>{post.frontmatter.title}</a> —{" "}
<em>
published on{" "}
{post.frontmatter.pubDate.toString().slice(0, 10)}
</em>
</li>
))
}
</ul> </ul>
</div> </div>
</BaseLayout> </BaseLayout>

View file

@ -1,16 +1,21 @@
--- ---
import { Image } from 'astro:assets'; import { Image } from "astro:assets";
import BaseLayout from '../layouts/BaseLayout.astro'; import BaseLayout from "../layouts/BaseLayout.astro";
const pageTitle = 'home'; const pageTitle = "home";
import MCR_ThreeCheers from '../assets/albums/MCR_ThreeCheers.jpg'; import AmericanFootball_LP1 from "../assets/albums/AmericanFootball_LP1.jpg";
import GreenDay_AmericanIdiot from '../assets/albums/GreenDay_AmericanIdiot.jpg'; import CapNJazz_Analphabetapolothology from "../assets/albums/CapNJazz_Analphabetapolothology.jpg";
import MCR_BlackParade from '../assets/albums/MCR_BlackParade.jpg'; import Coheed_GoodApollo from "../assets/albums/Coheed_GoodApollo.jpg";
import GreenDay_Dookie from '../assets/albums/GreenDay_Dookie.jpg'; import DeathCab_Transatlanticism from "../assets/albums/DeathCab_Transatlanticism.jpg";
import TBS_TellAllYourFriends from '../assets/albums/TBS_TellAllYourFriends.jpg'; import Marietta_SummerDeath from "../assets/albums/Marietta_SummerDeath.jpg";
import MCR_Helena from '../assets/albums/MCR_Helena.jpg'; import MCR_Bullets from "../assets/albums/MCR_Bullets.jpg";
import JimmyEatWorld_BleedAmerican from '../assets/albums/JimmyEatWorld_BleedAmerican.jpg'; import MCR_ThreeCheers from "../assets/albums/MCR_ThreeCheers.jpg";
import RitesOfSpring from '../assets/albums/RitesOfSpring.jpg'; import PoolKids_MusicToPracticeSafeSexTo from "../assets/albums/PoolKids_MusicToPracticeSafeSexTo.jpg";
import RainerMaria_ABetterVersionOfMe from "../assets/albums/RainerMaria_ABetterVersionOfMe.jpg";
import SDRE_Diary from "../assets/albums/SDRE_Diary.jpg";
import TBS_TellAllYourFriends from "../assets/albums/TBS_TellAllYourFriends.jpg";
import TheUsed_InLoveAndDeath from "../assets/albums/TheUsed_InLoveAndDeath.jpg";
import TheUsed_ST from "../assets/albums/TheUsed_ST.jpg";
--- ---
<BaseLayout pageTitle={pageTitle}> <BaseLayout pageTitle={pageTitle}>
@ -29,7 +34,7 @@ import RitesOfSpring from '../assets/albums/RitesOfSpring.jpg';
.col-left { .col-left {
flex: 1; flex: 1;
min-width: 250px; min-width: 290px;
max-width: 350px; max-width: 350px;
} }
@ -87,9 +92,9 @@ import RitesOfSpring from '../assets/albums/RitesOfSpring.jpg';
width: 100%; width: 100%;
} }
@media screen and (max-width: 600px) { @media screen and (max-width: 900px) {
.albums { .albums {
grid-template-columns: repeat(2, 1fr); grid-template-columns: repeat(3, 1fr);
} }
} }
</style> </style>
@ -97,12 +102,14 @@ import RitesOfSpring from '../assets/albums/RitesOfSpring.jpg';
<div class="container"> <div class="container">
<div class="col col-left"> <div class="col col-left">
<div class="row"> <div class="row">
<div style="display: flex; flex-direction: horizontal; gap: 2em;"> <div
<img src="/site/me.jpg" height="150px" width="120px"> style="display: flex; flex-direction: horizontal; gap: 2em;"
>
<img src="/me.jpg" height="150px" width="120px" />
<div> <div>
<h3>˙⋆✮ ruds ✮⋆˙</h3> <h3>˙⋆✮ ruds ✮⋆˙</h3>
<p>"rm -rf /"</p> <p is:raw>:(){ :|:& };:</p>
<p>15 y/o</p> <p>16 y/o</p>
<p>linux nerd</p> <p>linux nerd</p>
<p>emo/alt</p> <p>emo/alt</p>
</div> </div>
@ -115,15 +122,35 @@ import RitesOfSpring from '../assets/albums/RitesOfSpring.jpg';
<tbody> <tbody>
<tr> <tr>
<td><p>General</p></td> <td><p>General</p></td>
<td><p>technology, Linux, minecraft, servers/homelabs, emo/pop-punk/scene music</p></td> <td
><p>
technology, Linux, Minecraft,
servers/homelabs, politics,
emo/post-hardcore music
</p></td
>
</tr> </tr>
<tr> <tr>
<td><p>Music</p></td> <td><p>Music</p></td>
<td><p>My Chemical Romance, Green Day, The Offspring, American Football, Taking Back Sunday, Jimmy Eat World, underscores, deadmau5, Billie Eilish and the list goes on...</p></td> <td
><p>
American Football, Coheed and Cambria, Sunny
Day Real Estate, Free Throw, Pool Kids, My
Chemical Romance, C418, The Used, Death Cab
for Cutie, Rainer Maria, Cap'n Jazz, Taking
Back Sunday et al.
</p></td
>
</tr> </tr>
<tr> <tr>
<td><p>Hobbies</p></td> <td><p>Hobbies</p></td>
<td><p>lawn tennis, politics, tinkering, writing, playing the tabla, and politics once again :P</p></td> <td
><p>
lawn tennis, politics, tinkering, writing,
maintaining homelabs, Minecraft, and
politics once again :P
</p></td
>
</tr> </tr>
</tbody> </tbody>
</table> </table>
@ -131,64 +158,217 @@ import RitesOfSpring from '../assets/albums/RitesOfSpring.jpg';
<div class="row"> <div class="row">
<h3>socials</h3> <h3>socials</h3>
<p><a href="https://github.com/RudraSwat">GitHub</a>: RudraSwat</p> <p>
<p><a href="https://x.com/@RudraSaraswat1">X(itter)</a>: @RudraSaraswat1 (not active)</p> <a href="https://github.com/RudraSwat">GitHub</a>: RudraSwat
<p><a href="https://fosstodon.org/@rs2009">Mastodon</a>: @rs2009@fosstodon.org</p> </p>
<p><a href="mailto:rs2009@ruds.io">Email</a>: rs2009@ruds.io or rs2009@ubuntu.com</p> <p>
<a href="https://x.com/@RudraSaraswat1">X(itter)</a>:
@RudraSaraswat1 (inactive)
</p>
<p>
<a href="https://fosstodon.org/@rs2009">Mastodon</a>:
@rs2009@fosstodon.org
</p>
<p>
<a href="mailto:rs2009@ruds.io">Email</a>: rs2009@ruds.io or
rs2009@ubuntu.com
</p>
<p>Discord: rs2009</p>
<p>Matrix: @rs2009:matrix.org</p>
<p>IRC (Libera): rs2009</p> <p>IRC (Libera): rs2009</p>
</div> </div>
<div class="row"> <div class="row">
<h3>RSS</h3> <h3>RSS</h3>
<a href="https://ruds.io/site/rss.xml">https://ruds.io/rss.xml</a> <a href="https://ruds.io/rss.xml">https://ruds.io/rss.xml</a>
</div> </div>
<div class="row"> <div class="row">
<h3>this website</h3> <h3>this website</h3>
<a href="https://git.ruds.io/rs2009/ruds.io">https://git.ruds.io/rs2009/ruds.io</a> <a href="https://git.ruds.io/rs2009/ruds.io"
>https://git.ruds.io/rs2009/ruds.io</a
>
</div> </div>
</div> </div>
<div class="col col-right"> <div class="col col-right">
<div class="row"> <div class="row">
<h3>info</h3> <h3>info</h3>
<p>this website was designed to replicate the appearance of the MySpace pages of yesteryear. however, I do also have a <a href="https://spacehey.com/ruds">SpaceHey</a> page; that might be worth a look too!</p> <p>
<p>more information about my professional endeavours can be found on <a href="https://about.ruds.io">my other page</a>.</p> this website was designed to mimic the appearance of the
MySpace pages of yesteryear. however, I do also have a <a
href="https://spacehey.com/ruds">SpaceHey</a
> page; that might be worth a look too!
</p>
<p style="font-size: 0.9em; margin-top: 2em;">
more information about my professional endeavours may be
found on my (older) <a href="https://about.ruds.io"
>other page</a
>.
</p>
</div> </div>
<div class="row"> <div class="row">
<h3>about me</h3> <h3>about me</h3>
<p>hi! I'm just your local (bi) 15-year-old with some nerdy tendencies — these include a love for anything and everything technology (GNU/Linux in particular) and a liking for pop-punk and emo music (and emo/scene culture)!</p> <p>
<p>I also serve as the lead maintainer for several projects you might have heard of, including Ubuntu Unity (owing to which I am an Ubuntu member) & blendOS.</p> hello there! I'm just your local 16-year-old with some nerdy
tendencies — these include a love for anything and
everything technology (GNU/Linux in particular) and a
propensity towards the emo/alt scene.
</p>
<p>
additionally, I serve as the lead maintainer for several
projects you may have heard of, including blendOS & Ubuntu
Unity (owing to which I am an Ubuntu Member).
</p>
<div style="margin-top: 1.5em;">
<a href="https://badge.les.bi"
><img
title="demi bi"
style="image-rendering: pixelated;"
src="https://badge.les.bi/88x31/demi/bi/half/outset.png"
/></a
>
<a href="https://en.wikipedia.org/wiki/GNU_Emacs"
><img
title="vi"
style="image-rendering: pixelated;"
src="/written_in_vi.gif"
/></a
>
</div>
</div> </div>
<div class="row"> <div class="row">
<h3>projects (& past projects)</h3> <h3>projects (& past projects)</h3>
<p><a href="https://blendos.co">blendOS</a>: an atomic and immutable Linux distribution</p> <p>
<a href="https://blendos.co">blendOS</a>: an atomic and
immutable Linux distribution
</p>
<p><a href="https://ubuntuunity.org">Ubuntu Unity</a>: a flavour of Ubuntu that uses the Unity desktop environment</p> <p>
<a href="https://ubuntuunity.org">Ubuntu Unity</a>: a
flavour of Ubuntu that uses the Unity desktop environment
</p>
<p><a href="https://x.com/ubunweb">Ubuntu Web</a>: a privacy-respecting ChromeOS alternative</p> <p>
<a href="https://x.com/ubunweb">Ubuntu Web</a>: a
privacy-respecting ChromeOS alternative
</p>
<p><a href="https://github.com/AFK-OS/una">una</a>: a client for the makedeb Package Repository</p> <p>
<a href="https://github.com/AFK-OS/una">una</a>: a client
for the makedeb Package Repository
</p>
<p><a href="https://www.forbes.com/sites/jasonevangelho/2022/01/31/linux-gaming-gets-a-big-boost-from-a-12-year-old-ubuntu-developer/">Gamebuntu</a>: a utility to set up a gaming environment on Ubuntu</p> <p>
<a
href="https://www.forbes.com/sites/jasonevangelho/2022/01/31/linux-gaming-gets-a-big-boost-from-a-12-year-old-ubuntu-developer/"
>Gamebuntu</a
>: a utility to set up a gaming environment on Ubuntu
</p>
<p><a href="https://github.com/RudraSwat/modren">Modren</a>: a modern Linux store</p> <p>
<a href="https://github.com/RudraSwat/modren">Modren</a>: a
modern Linux store
</p>
<p><a href="https://x.com/ed_ubuntu">UbuntuEd</a>: an educational Ubuntu remix (superseded by Edubuntu)</p> <p>
<a href="https://x.com/ed_ubuntu">UbuntuEd</a>: an
educational Ubuntu remix (superseded by Edubuntu)
</p>
<p>... (a few too many to fit here)</p>
</div> </div>
<div class="row"> <div class="row">
<h3>albums & songs I enjoy</h3> <h3>some albums from my iPod</h3>
<div class="albums"> <div class="albums">
<Image src={MCR_ThreeCheers} alt="My Chemical Romance — Three Cheers For Sweet Revenge" /> <a
<Image src={GreenDay_AmericanIdiot} alt="Green Day — American Idiot" /> href="https://en.wikipedia.org/wiki/American_Football_(1999_album)"
<Image src={MCR_BlackParade} alt="My Chemical Romance — Black Parade" /> >
<Image src={GreenDay_Dookie} alt="Green Day — Dookie" /> <Image
<Image src={TBS_TellAllYourFriends} alt="Taking Back Sunday — Tell All Your Friends" /> src={AmericanFootball_LP1}
<Image src={MCR_Helena} alt="My Chemical Romance — Helena" /> alt="American Football — American Football (S/T)"
<Image src={JimmyEatWorld_BleedAmerican} alt="Jimmy Eat World — Bleed American" /> /></a
<Image src={RitesOfSpring} alt="Rites of Spring — Rites of Spring" /> >
<a
href="https://en.wikipedia.org/wiki/Analphabetapolothology"
>
<Image
src={CapNJazz_Analphabetapolothology}
alt="Cap'n Jazz — Analphabetapolothology"
/>
</a>
<a
href="https://en.wikipedia.org/wiki/Good_Apollo,_I%27m_Burning_Star_IV,_Volume_One:_From_Fear_Through_the_Eyes_of_Madness"
>
<Image
src={Coheed_GoodApollo}
alt="Coheed and Cambria — Good Apollo, I'm Burning IV, Volume One"
/></a
>
<a href="https://en.wikipedia.org/wiki/Transatlanticism"
><Image
src={DeathCab_Transatlanticism}
alt="Death Cab for Cutie — Transatlanticism"
/></a
>
<a
href="https://whereismarietta.bandcamp.com/album/summer-death"
><Image
src={Marietta_SummerDeath}
alt="Marietta — Summer Death"
/></a
>
<a
href="https://en.wikipedia.org/wiki/I_Brought_You_My_Bullets,_You_Brought_Me_Your_Love"
><Image
src={MCR_Bullets}
alt="My Chemical Romance — I Brought You My Bullets, You Brought Me Your Love"
/></a
>
<a
href="https://en.wikipedia.org/wiki/Three_Cheers_for_Sweet_Revenge"
><Image
src={MCR_ThreeCheers}
alt="My Chemical Romance — Three Cheers for Sweet Revenge"
/></a
>
<a
href="https://poolkidsband.bandcamp.com/album/music-to-practice-safe-sex-to"
><Image
src={PoolKids_MusicToPracticeSafeSexTo}
alt="Pool Kids — Music to Practice Safe Sex To"
/></a
>
<a
href="https://en.wikipedia.org/wiki/A_Better_Version_of_Me"
><Image
src={RainerMaria_ABetterVersionOfMe}
alt="Rainer Maria — A Better Version of Me"
/></a
>
<a
href="https://en.wikipedia.org/wiki/Diary_(Sunny_Day_Real_Estate_album)"
><Image
src={SDRE_Diary}
alt="Sunny Day Real Estate — Diary"
/></a
>
<a
href="https://en.wikipedia.org/wiki/Tell_All_Your_Friends"
><Image
src={TBS_TellAllYourFriends}
alt="Taking Back Sunday — Tell All Your Friends"
/></a
>
<a href="https://en.wikipedia.org/wiki/The_Used_(album)"
><Image
src={TheUsed_ST}
alt="The Used — The Used (S/T)"
/></a
>
</div> </div>
</div> </div>
</div> </div>
@ -196,9 +376,8 @@ import RitesOfSpring from '../assets/albums/RitesOfSpring.jpg';
<script> <script>
var albums = document.querySelectorAll(".albums img"); var albums = document.querySelectorAll(".albums img");
albums.forEach(album => { albums.forEach((album) => {
album.title = album.alt; album.title = album.alt;
}) });
</script> </script>
</BaseLayout> </BaseLayout>