diff --git a/public/images/socials.webp b/public/images/socials.webp
deleted file mode 100644
index 11c0168..0000000
Binary files a/public/images/socials.webp and /dev/null differ
diff --git a/public/images/socials/bluesky.webp b/public/images/socials/bluesky.webp
deleted file mode 100644
index aac5f52..0000000
Binary files a/public/images/socials/bluesky.webp and /dev/null differ
diff --git a/public/images/socials/kofi_s_logo_nolabel.webp b/public/images/socials/kofi_s_logo_nolabel.webp
deleted file mode 100644
index e78257f..0000000
Binary files a/public/images/socials/kofi_s_logo_nolabel.webp and /dev/null differ
diff --git a/public/images/socials/landscape.webp b/public/images/socials/landscape.webp
deleted file mode 100644
index 14c5ad0..0000000
Binary files a/public/images/socials/landscape.webp and /dev/null differ
diff --git a/public/images/socials/tiktok.webp b/public/images/socials/tiktok.webp
deleted file mode 100644
index b63df84..0000000
Binary files a/public/images/socials/tiktok.webp and /dev/null differ
diff --git a/src/components/experience/ExperienceComponent.tsx b/src/components/experience/ExperienceComponent.tsx
index 087cdd1..a1af2bf 100644
--- a/src/components/experience/ExperienceComponent.tsx
+++ b/src/components/experience/ExperienceComponent.tsx
@@ -44,17 +44,17 @@ function ExperienceTabContent() {
<>
{Position({
title: "Application Developer Intern",
- dateRange: "Mar 2026 - Now",
+ dateRange: "Mar 2026 - Apr 2026",
country: "Australia",
highlights: [
- "Quickly adapted to Ruby on Rails codebase to resolve Jira tickets.",
+ "Successfully merged 13 pull requests to the Ruby on Rails codebase, fixing bugs and adding new features.",
"Communicated clearly about obstacles, suggested probable cause and provided solutions or workarounds.",
],
className: "pb-5",
})}
{Position({
title: "Student Project Frontend Lead",
- dateRange: "Mar 2026 - Now",
+ dateRange: "Feb 2026 - May 2026",
country: "Australia",
highlights: [
"Led the migration from 40+ Javascript files to Typescript while preserving original functionality with minor bug fixes.",
diff --git a/src/components/home/Intro.astro b/src/components/home/Intro.astro
index 6523ad4..f560219 100644
--- a/src/components/home/Intro.astro
+++ b/src/components/home/Intro.astro
@@ -47,9 +47,8 @@ import { Image } from "astro:assets";
I'm a Malaysian software developer studying in Australia on
- a 50% excellence scholarship. My work in software
- development and content creation has connected me with many
- Twitch streamers and content creators.
+ a 50% excellence scholarship. I develop software for streamers
+ and content creators, while also making tech tutorials in programming.
-
-
diff --git a/src/components/ui/NavigationBar.tsx b/src/components/ui/NavigationBar.tsx
index 24ffbf9..fdb2952 100644
--- a/src/components/ui/NavigationBar.tsx
+++ b/src/components/ui/NavigationBar.tsx
@@ -32,29 +32,43 @@ export const HoverNavigation = ({
return url.hash.replace("#", "");
});
- const observers: IntersectionObserver[] = [];
+ const sectionElements: (Element | null)[] = sectionIds.map((id) => {
+ if (!id) return null;
+ return document.getElementById(id);
+ });
- sectionIds.forEach((id, idx) => {
- if (!id) return;
+ const visibilityMap = new Map();
- const element = document.getElementById(id);
- if (!element) return;
+ const observer = new IntersectionObserver(
+ (entries) => {
+ entries.forEach((entry) => {
+ visibilityMap.set(entry.target, entry.intersectionRatio);
+ });
- const observer = new IntersectionObserver(
- (entries) => {
- entries.forEach((entry) => {
- if (entry.isIntersecting) {
- setActiveIndex(idx);
- }
- });
- },
- {
- rootMargin: "-20% 0px -50% 0px",
- },
- );
+ let maxRatio = 0;
+ let maxIdx = -1;
- observer.observe(element);
- observers.push(observer);
+ sectionElements.forEach((el, idx) => {
+ if (!el) return;
+ const ratio = visibilityMap.get(el) ?? 0;
+ if (ratio > maxRatio) {
+ maxRatio = ratio;
+ maxIdx = idx;
+ }
+ });
+
+ if (maxIdx !== -1 && maxRatio > 0) {
+ setActiveIndex(maxIdx);
+ }
+ },
+ {
+ rootMargin: "-20% 0px -50% 0px",
+ threshold: [0, 0.25, 0.5, 0.75, 1],
+ },
+ );
+
+ sectionElements.forEach((el) => {
+ if (el) observer.observe(el);
});
// set hover index on projects when on "/projects"
@@ -64,9 +78,7 @@ export const HoverNavigation = ({
setActiveIndex(2);
}
- return () => {
- observers.forEach((observer) => observer.disconnect());
- };
+ return () => observer.disconnect();
}, [items]);
useEffect(() => {
diff --git a/src/content/blog/welcome.mdx b/src/content/blog/welcome.mdx
deleted file mode 100644
index 478c996..0000000
--- a/src/content/blog/welcome.mdx
+++ /dev/null
@@ -1,36 +0,0 @@
----
-title: "Welcome to my blog"
-author: "RythonDev"
-pubDate: 2024-10-08T8:06:00
-description: The start of my blog posts. Where I share my plans on what type of blogs are to be shared here.
-tags:
-- Introduction
-- Web Dev
-- Streaming
----
-
-## Introduction
-
-This is my first blog post, where I share my plans on what type of blogs are to be shared here. The purpose of the blog is for me to share what I know without having to create a video about it.
-
-The types of blogs that I will share here will be, but not limited to:
-
-- Tutorials, Tips & Tricks
- - Streaming
- - Web Development
- - Python
-- News & Opinions
-
-## Who am I?
-
-Well, if you don't know who I am, you can find out on my website [here](/). But if you want me to put it in short, I would say that I am mainly a:
-
-- Streamer
-- Software Developer
-
-## What's special about this blog?
-
-In my experience, when I wanted to look at blogs from medium or article sites, it would either be flooded with ads, get prompted to disable ad blocker, or be completely locked behind a paywall. Although there are ways to bypass those, I find that searching for information has been inconvenient.
-
-Hence, I want my blog to be minimal, without any ads nor paywalls. I believe that information and knowledge should be free, and easy to consume.
-
diff --git a/src/content/config.ts b/src/content/config.ts
deleted file mode 100644
index f0ef420..0000000
--- a/src/content/config.ts
+++ /dev/null
@@ -1,17 +0,0 @@
-import { z, defineCollection } from "astro:content";
-
-const blogCollection = defineCollection({
- type: "content",
- schema: z.object({
- title: z.string(),
- color: z.string().optional(),
- description: z.string(),
- author: z.string(),
- tags: z.array(z.string()).optional(),
- pubDate: z.date(),
- }),
-});
-
-export const collections = {
- blog: blogCollection,
-};
diff --git a/src/pages/_images/arrow-icon.svg b/src/pages/_images/arrow-icon.svg
deleted file mode 100644
index 2521a23..0000000
--- a/src/pages/_images/arrow-icon.svg
+++ /dev/null
@@ -1,13 +0,0 @@
-
\ No newline at end of file
diff --git a/src/pages/_images/codepen.svg b/src/pages/_images/codepen.svg
deleted file mode 100644
index 189734d..0000000
--- a/src/pages/_images/codepen.svg
+++ /dev/null
@@ -1,28 +0,0 @@
-
\ No newline at end of file
diff --git a/src/pages/_images/date-time.svg b/src/pages/_images/date-time.svg
deleted file mode 100644
index de6f754..0000000
--- a/src/pages/_images/date-time.svg
+++ /dev/null
@@ -1,14 +0,0 @@
-
\ No newline at end of file
diff --git a/src/pages/_images/discord.svg b/src/pages/_images/discord.svg
deleted file mode 100644
index 34903c2..0000000
--- a/src/pages/_images/discord.svg
+++ /dev/null
@@ -1,23 +0,0 @@
-
\ No newline at end of file
diff --git a/src/pages/_images/github.svg b/src/pages/_images/github.svg
deleted file mode 100644
index 5914eab..0000000
--- a/src/pages/_images/github.svg
+++ /dev/null
@@ -1,31 +0,0 @@
-
\ No newline at end of file
diff --git a/src/pages/_images/instagram.svg b/src/pages/_images/instagram.svg
deleted file mode 100644
index 8f7c8c7..0000000
--- a/src/pages/_images/instagram.svg
+++ /dev/null
@@ -1,47 +0,0 @@
-
\ No newline at end of file
diff --git a/src/pages/_images/location.svg b/src/pages/_images/location.svg
deleted file mode 100644
index 964d677..0000000
--- a/src/pages/_images/location.svg
+++ /dev/null
@@ -1,21 +0,0 @@
-
\ No newline at end of file
diff --git a/src/pages/_images/profile.webp b/src/pages/_images/profile.webp
deleted file mode 100644
index b808d9c..0000000
Binary files a/src/pages/_images/profile.webp and /dev/null differ
diff --git a/src/pages/_images/twitch.svg b/src/pages/_images/twitch.svg
deleted file mode 100644
index a2b6304..0000000
--- a/src/pages/_images/twitch.svg
+++ /dev/null
@@ -1,22 +0,0 @@
-
\ No newline at end of file
diff --git a/src/pages/_images/website-icon.svg b/src/pages/_images/website-icon.svg
deleted file mode 100644
index d920649..0000000
--- a/src/pages/_images/website-icon.svg
+++ /dev/null
@@ -1,19 +0,0 @@
-
\ No newline at end of file
diff --git a/src/pages/_images/youtube.svg b/src/pages/_images/youtube.svg
deleted file mode 100644
index c7e566f..0000000
--- a/src/pages/_images/youtube.svg
+++ /dev/null
@@ -1,16 +0,0 @@
-
\ No newline at end of file
diff --git a/src/pages/socials.astro b/src/pages/socials.astro
index 6364498..35bd050 100644
--- a/src/pages/socials.astro
+++ b/src/pages/socials.astro
@@ -1,599 +1,3 @@
---
-import Layout from "../layouts/Layout.astro";
-import StreamScheduleComponent from "../components/socials/StreamSchedule.svelte";
-import Footer from "../components/global/FooterComponent.astro";
-import { Image } from "astro:assets";
-import profile from "./_images/profile.webp";
-import WebsiteIcon from "./_images/website-icon.svg";
-import ArrowIcon from "./_images/arrow-icon.svg";
-import TwitchIcon from "./_images/twitch.svg";
-import YouTubeIcon from "./_images/youtube.svg";
-import InstagramIcon from "./_images/instagram.svg";
-import GithubIcon from "./_images/github.svg";
-import CodePenIcon from "./_images/codepen.svg";
-import LocationIcon from "./_images/location.svg";
-import DateTimeIcon from "./_images/date-time.svg";
-import DiscordIcon from "./_images/discord.svg";
+return Astro.redirect("https://socials.rython.dev");
---
-
-
-
-
-
-
-
-
-
-
-
-
-
- RythonDev
-
-
- I am a Malaysian Chinese content creator
- based in Australia! I mainly stream
- co-working and software development, known
- for developing the Multi-Task widget!
-