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
import { defineConfig } from 'astro/config';
import { defineConfig } from "astro/config";
// https://astro.build/config
export default defineConfig({
site: 'https://ruds.io',
base: '/site'
site: "https://ruds.io",
base: "/",
});

3077
package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -9,8 +9,8 @@
"astro": "astro"
},
"dependencies": {
"@astrojs/rss": "^4.0.11",
"@fontsource/jetbrains-mono": "^5.2.5",
"astro": "^5.7.5"
"@astrojs/rss": "^4.0.18",
"@fontsource/jetbrains-mono": "^5.2.8",
"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="/site/blog/">blog</a>
<a href="/blog/">blog</a>

View file

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

View file

@ -1,23 +1,40 @@
---
import BaseLayout from '../layouts/BaseLayout.astro';
import { getCollection, getEntry } from 'astro:content';
import BaseLayout from "../layouts/BaseLayout.astro";
import { getCollection, getEntry } from "astro:content";
const pageTitle = 'blog';
const posts = await getCollection('posts');
console.log(posts)
const allPosts = Object.values(import.meta.glob('./posts/*.md', { eager: true }));
allPosts.sort((a, b) => new Date(b.frontmatter.pubDate) - new Date(a.frontmatter.pubDate));
const pageTitle = "blog";
const posts = await getCollection("posts");
console.log(posts);
const allPosts = Object.values(
import.meta.glob("./posts/*.md", { eager: true }),
);
allPosts.sort(
(a, b) => new Date(b.frontmatter.pubDate) - new Date(a.frontmatter.pubDate),
);
---
<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;">
<h2>posts</h2>
<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>)}
</ul>
</div>
<div style="text-align: left;">
<h2>posts</h2>
<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>
))
}
</ul>
</div>
</BaseLayout>

View file

@ -1,204 +1,383 @@
---
import { Image } from 'astro:assets';
import BaseLayout from '../layouts/BaseLayout.astro';
const pageTitle = 'home';
import { Image } from "astro:assets";
import BaseLayout from "../layouts/BaseLayout.astro";
const pageTitle = "home";
import MCR_ThreeCheers from '../assets/albums/MCR_ThreeCheers.jpg';
import GreenDay_AmericanIdiot from '../assets/albums/GreenDay_AmericanIdiot.jpg';
import MCR_BlackParade from '../assets/albums/MCR_BlackParade.jpg';
import GreenDay_Dookie from '../assets/albums/GreenDay_Dookie.jpg';
import TBS_TellAllYourFriends from '../assets/albums/TBS_TellAllYourFriends.jpg';
import MCR_Helena from '../assets/albums/MCR_Helena.jpg';
import JimmyEatWorld_BleedAmerican from '../assets/albums/JimmyEatWorld_BleedAmerican.jpg';
import RitesOfSpring from '../assets/albums/RitesOfSpring.jpg';
import AmericanFootball_LP1 from "../assets/albums/AmericanFootball_LP1.jpg";
import CapNJazz_Analphabetapolothology from "../assets/albums/CapNJazz_Analphabetapolothology.jpg";
import Coheed_GoodApollo from "../assets/albums/Coheed_GoodApollo.jpg";
import DeathCab_Transatlanticism from "../assets/albums/DeathCab_Transatlanticism.jpg";
import Marietta_SummerDeath from "../assets/albums/Marietta_SummerDeath.jpg";
import MCR_Bullets from "../assets/albums/MCR_Bullets.jpg";
import MCR_ThreeCheers from "../assets/albums/MCR_ThreeCheers.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}>
<style>
.container {
display: flex;
gap: 2em;
font-size: 0.8em;
}
.col {
display: flex;
flex-direction: column;
gap: 2em;
}
.col-left {
flex: 1;
min-width: 250px;
max-width: 350px;
}
.col-right {
flex: 2;
}
.row {
padding: 1.5em;
}
.col-left > .row {
background-color: rgba(0, 0, 0, 0.5);
}
.col-right > .row {
background-color: rgba(0, 0, 0, 0.3);
}
@media screen and (max-width: 900px) {
.container {
flex-direction: column;
font-size: 0.9em;
}
.col-left {
max-width: 100%;
}
}
<style>
.container {
display: flex;
gap: 2em;
font-size: 0.8em;
}
h3 {
margin-top: 0;
}
p {
margin-bottom: 0;
}
.col {
display: flex;
flex-direction: column;
gap: 2em;
}
td {
vertical-align: top;
}
.col-left {
flex: 1;
min-width: 290px;
max-width: 350px;
}
td:first-child {
font-weight: bold;
}
.col-right {
flex: 2;
}
.albums {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 20px 10px;
}
.row {
padding: 1.5em;
}
.albums img {
height: 100%;
width: 100%;
}
.col-left > .row {
background-color: rgba(0, 0, 0, 0.5);
}
@media screen and (max-width: 600px) {
.albums {
grid-template-columns: repeat(2, 1fr);
}
}
</style>
.col-right > .row {
background-color: rgba(0, 0, 0, 0.3);
}
<div class="container">
<div class="col col-left">
<div class="row">
<div style="display: flex; flex-direction: horizontal; gap: 2em;">
<img src="/site/me.jpg" height="150px" width="120px">
<div>
<h3>˙⋆✮ ruds ✮⋆˙</h3>
<p>"rm -rf /"</p>
<p>15 y/o</p>
<p>linux nerd</p>
<p>emo/alt</p>
</div>
</div>
</div>
@media screen and (max-width: 900px) {
.container {
flex-direction: column;
font-size: 0.9em;
}
<div class="row">
<h3>interests</h3>
<table class="details-table" cellspacing="3" cellpadding="3">
<tbody>
<tr>
<td><p>General</p></td>
<td><p>technology, Linux, minecraft, servers/homelabs, emo/pop-punk/scene music</p></td>
</tr>
<tr>
<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>
</tr>
<tr>
<td><p>Hobbies</p></td>
<td><p>lawn tennis, politics, tinkering, writing, playing the tabla, and politics once again :P</p></td>
</tr>
</tbody>
</table>
</div>
.col-left {
max-width: 100%;
}
}
<div class="row">
<h3>socials</h3>
<p><a href="https://github.com/RudraSwat">GitHub</a>: RudraSwat</p>
<p><a href="https://x.com/@RudraSaraswat1">X(itter)</a>: @RudraSaraswat1 (not active)</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>IRC (Libera): rs2009</p>
</div>
h3 {
margin-top: 0;
}
<div class="row">
<h3>RSS</h3>
<a href="https://ruds.io/site/rss.xml">https://ruds.io/rss.xml</a>
</div>
p {
margin-bottom: 0;
}
<div class="row">
<h3>this website</h3>
<a href="https://git.ruds.io/rs2009/ruds.io">https://git.ruds.io/rs2009/ruds.io</a>
</div>
</div>
td {
vertical-align: top;
}
<div class="col col-right">
<div class="row">
<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>more information about my professional endeavours can be found on <a href="https://about.ruds.io">my other page</a>.</p>
</div>
<div class="row">
<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>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>
</div>
<div class="row">
<h3>projects (& past projects)</h3>
td:first-child {
font-weight: bold;
}
<p><a href="https://blendos.co">blendOS</a>: an atomic and immutable Linux distribution</p>
.albums {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 20px 10px;
}
<p><a href="https://ubuntuunity.org">Ubuntu Unity</a>: a flavour of Ubuntu that uses the Unity desktop environment</p>
.albums img {
height: 100%;
width: 100%;
}
<p><a href="https://x.com/ubunweb">Ubuntu Web</a>: a privacy-respecting ChromeOS alternative</p>
@media screen and (max-width: 900px) {
.albums {
grid-template-columns: repeat(3, 1fr);
}
}
</style>
<p><a href="https://github.com/AFK-OS/una">una</a>: a client for the makedeb Package Repository</p>
<div class="container">
<div class="col col-left">
<div class="row">
<div
style="display: flex; flex-direction: horizontal; gap: 2em;"
>
<img src="/me.jpg" height="150px" width="120px" />
<div>
<h3>˙⋆✮ ruds ✮⋆˙</h3>
<p is:raw>:(){ :|:& };:</p>
<p>16 y/o</p>
<p>linux nerd</p>
<p>emo/alt</p>
</div>
</div>
</div>
<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>
<div class="row">
<h3>interests</h3>
<table class="details-table" cellspacing="3" cellpadding="3">
<tbody>
<tr>
<td><p>General</p></td>
<td
><p>
technology, Linux, Minecraft,
servers/homelabs, politics,
emo/post-hardcore music
</p></td
>
</tr>
<tr>
<td><p>Music</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>
<td><p>Hobbies</p></td>
<td
><p>
lawn tennis, politics, tinkering, writing,
maintaining homelabs, Minecraft, and
politics once again :P
</p></td
>
</tr>
</tbody>
</table>
</div>
<p><a href="https://github.com/RudraSwat/modren">Modren</a>: a modern Linux store</p>
<div class="row">
<h3>socials</h3>
<p>
<a href="https://github.com/RudraSwat">GitHub</a>: RudraSwat
</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>
</div>
<p><a href="https://x.com/ed_ubuntu">UbuntuEd</a>: an educational Ubuntu remix (superseded by Edubuntu)</p>
</div>
<div class="row">
<h3>albums & songs I enjoy</h3>
<div class="row">
<h3>RSS</h3>
<a href="https://ruds.io/rss.xml">https://ruds.io/rss.xml</a>
</div>
<div class="albums">
<Image src={MCR_ThreeCheers} alt="My Chemical Romance — Three Cheers For Sweet Revenge" />
<Image src={GreenDay_AmericanIdiot} alt="Green Day — American Idiot" />
<Image src={MCR_BlackParade} alt="My Chemical Romance — Black Parade" />
<Image src={GreenDay_Dookie} alt="Green Day — Dookie" />
<Image src={TBS_TellAllYourFriends} alt="Taking Back Sunday — Tell All Your Friends" />
<Image src={MCR_Helena} alt="My Chemical Romance — Helena" />
<Image src={JimmyEatWorld_BleedAmerican} alt="Jimmy Eat World — Bleed American" />
<Image src={RitesOfSpring} alt="Rites of Spring — Rites of Spring" />
</div>
</div>
</div>
</div>
<div class="row">
<h3>this website</h3>
<a href="https://git.ruds.io/rs2009/ruds.io"
>https://git.ruds.io/rs2009/ruds.io</a
>
</div>
</div>
<script>
var albums = document.querySelectorAll(".albums img");
albums.forEach(album => {
album.title = album.alt;
})
</script>
<div class="col col-right">
<div class="row">
<h3>info</h3>
<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 class="row">
<h3>about me</h3>
<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 class="row">
<h3>projects (& past projects)</h3>
<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://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://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://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 class="row">
<h3>some albums from my iPod</h3>
<div class="albums">
<a
href="https://en.wikipedia.org/wiki/American_Football_(1999_album)"
>
<Image
src={AmericanFootball_LP1}
alt="American Football — American Football (S/T)"
/></a
>
<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>
<script>
var albums = document.querySelectorAll(".albums img");
albums.forEach((album) => {
album.title = album.alt;
});
</script>
</BaseLayout>