Update profile links, projects, and experience

This commit is contained in:
2026-06-30 20:58:38 +00:00
parent 5244522239
commit a52a703951
6 changed files with 104 additions and 5 deletions
+81
View File
@@ -13,6 +13,12 @@ export interface OpenSourceProject {
export const openSourceProjects: OpenSourceProject[] = [
{
name: 'TypstDrive',
description: 'TypstDrive is a self-hosted collaborative web editor for Typst.',
tech: ['Typst', 'Self-Hosted', 'Collaborative'],
github: 'https://github.com/SirBlobby/TypstDrive',
},
{
name: 'Pkit',
description: 'CLI toolkit and utilities (Rust project) — small developer-focused CLI.',
@@ -115,6 +121,50 @@ export const models: Model3D[] = [
}
];
// ============================================================================
// EXPERIENCE
// ============================================================================
export interface Experience {
role: string;
organization: string;
employmentType?: string;
location?: string;
period: string;
description?: string;
tech?: string[];
awards?: string[];
}
export const experience: Experience[] = [
{
role: 'Research Assistant',
organization: 'College of Engineering and Computing',
employmentType: 'Part-time',
period: 'May 2026 Present · 3 mos'
},
{
role: 'Software Engineering Lead',
organization: 'Raytheon Autonomous Vehicle Competition',
period: 'Dec 2025 May 2026 · 6 mos',
description:
'Developing a collaborative autonomous system utilizing Python and ROS2 to coordinate communication and control as a UAV scouts and lands on a moving UGV. Engineering Gazebo simulation environments to validate computer vision algorithms for ArUco marker target identification and obstacle avoidance.',
tech: ['Python', 'ROS2'],
awards: ['1st Place Overall Winner']
},
{
role: 'QA Automation Intern',
organization: 'Deltek',
employmentType: 'Internship',
location: 'Hybrid',
period: 'Jun 2025 Aug 2025 · 3 mos',
description:
'Designed and implemented a workflow integrating AI into the QA automation pipeline, enhancing test efficiency for the GovWin IQ team. Researched Model Context Protocol (MCP) servers to improve automation, developed and published a public Selenium MCP package to NPM, enabling browser automation interactions with Agentic AI.',
tech: ['Artificial Intelligence (AI)', 'TypeScript', 'Selenium']
}
];
// ============================================================================
// HACKATHONS
// ============================================================================
@@ -137,6 +187,37 @@ export type Card = {
};
export const cards: Card[] = [
{
image: "/hacks/hushmap.png",
title: "HushMap",
description:
"Architected a real-time campus noise and occupancy monitoring system utilizing SvelteKit, FastAPI, and MongoDB to help students locate quiet study spaces.",
link: "https://hushmap.study/",
hackathonName: "Bitcamp 2026",
university: "University of Maryland",
location: "College Park, MD",
year: "2026",
tags: ["Svelte", "YOLOv8", "FastAPI", "MongoDB"],
featured: true,
awards: [
{ track: "Best UI/UX Hack", place: "Winner" }
]
},
{
image: "/hacks/learningbuddy.png",
title: "LearningBuddy",
description:
"Engineered an ESP32-S3 IoT study companion in C++ with secure Wi-Fi provisioning, utilizing WebSockets and Socket.IO to stream low-latency raw audio for live lecture capture.",
hackathonName: "HaxFax x PatriotHacks 2026",
university: "George Mason University",
location: "Fairfax, VA",
year: "2026",
tags: ["C++", "WebSocket", "ESP32-S3", "Socket.IO"],
featured: true,
awards: [
{ track: "Best use of MongoDB", place: "Winner" }
]
},
{
image: "/hacks/fooddecisive.png",
title: "Food Decisive",
+3 -3
View File
@@ -25,9 +25,9 @@ export {
animations
} from './theme';
// Content: projects, models, hackathon cards
export type { OpenSourceProject, PackageProject, Model3D, Card } from './content';
export { openSourceProjects, packageProjects, models, cards, sortedCards } from './content';
// Content: projects, models, experience, hackathon cards
export type { OpenSourceProject, PackageProject, Model3D, Experience, Card } from './content';
export { openSourceProjects, packageProjects, models, experience, cards, sortedCards } from './content';
// Terminal settings, TUI styling, speed presets, model viewer, particles, shortcuts
export type { SpeedPreset, TerminalSettings } from './terminal';
-1
View File
@@ -20,7 +20,6 @@ export const user = {
// Social links - array of { name, icon (Iconify), link }
socials: [
{ name: 'GitHub', icon: 'mdi:github', link: 'https://github.com/SirBlobby' },
{ name: 'Gitea', icon: 'simple-icons:gitea', link: 'https://git.sirblob.co/SirBlob' },
{ name: 'LinkedIn', icon: 'mdi:linkedin', link: 'https://www.linkedin.com/in/gmanjunatha/' },
{ name: 'Devpost', icon: 'simple-icons:devpost', link: 'https://devpost.com/Sir_Blob_' },
{ name: 'Discord', icon: 'ic:baseline-discord', link: 'https://discord.com/users/sir_blob_' }
+20 -1
View File
@@ -1,6 +1,20 @@
import type { TerminalLine } from '$lib/components/tui/types';
import { user, skills, openSourceProjects } from '$lib/config';
import { user, skills, openSourceProjects, experience } from '$lib/config';
const experienceElements: TerminalLine[] = [];
experience.forEach(exp => {
experienceElements.push(
{ type: 'header', content: `(&orange,bold)${exp.role}(&)` },
{ type: 'output', content: `(&primary)${exp.organization}(&)` + (exp.employmentType ? ` (&muted)· ${exp.employmentType}(&)` : '') },
{ type: 'output', content: `(&muted)${exp.period}(&)` + (exp.location ? ` (&muted)· ${exp.location}(&)` : '') },
...(exp.description ? [{ type: 'output' as const, content: `(&muted)${exp.description}(&)` }] : []),
...(exp.tech ? [{ type: 'output' as const, content: ' ' + exp.tech.map(t => `(&blue)${t}(&)`).join(' (&muted)•(&) ') }] : []),
...(exp.awards ? exp.awards.map(award => ({ type: 'success' as const, content: `(&success)${award}(&)` })) : []),
{ type: 'blank', content: '' }
);
});
const openSourceElements:TerminalLine[] = [];
@@ -48,6 +62,7 @@ export const lines: TerminalLine[] = [
children: [
{ type: 'output', content: `(&primary, bold)Links >(&)`, inline: true },
{ type: 'link', href: "/portfolio#contact", content: `(&bg-blue,black)Contact(&)`, inline: true },
{ type: 'link', href: "/portfolio#experience", content: `(&bg-magenta,black)Experience(&)`, inline: true },
{ type: 'link', href: "/portfolio#skills", content: `(&bg-orange,black)Skills(&)`, inline: true },
{ type: 'link', href: "/portfolio#projects", content: `(&bg-green,black)Projects(&)`, inline: true },
]
@@ -63,6 +78,10 @@ export const lines: TerminalLine[] = [
inline: true
})),
{ type: 'divider', content: 'EXPERIENCE', id: 'experience' },
...experienceElements,
{ type: 'divider', content: 'SKILLS', id: 'skills' },
// Skills as TUI sections