Add Puter project and optimize portfolio media

This commit is contained in:
2026-08-27 00:53:07 -04:00
parent e0e78c3900
commit 8f1f361047
60 changed files with 48 additions and 29 deletions
BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 MiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 187 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 161 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 292 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 262 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 226 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 418 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 131 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 532 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 465 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 120 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 244 KiB

Executable → Regular
BIN
View File
Binary file not shown.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 358 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 558 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 378 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 245 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 675 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 592 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 490 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 448 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 398 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 604 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 239 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 504 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 179 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 231 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 296 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 503 KiB

Binary file not shown.
+2 -2
View File
@@ -16,7 +16,7 @@ export function Sidebar() {
<div className="w-full space-y-3 px-4 pb-2 pt-4 sm:px-6 lg:hidden"> <div className="w-full space-y-3 px-4 pb-2 pt-4 sm:px-6 lg:hidden">
<div className="flex items-center gap-4"> <div className="flex items-center gap-4">
<ImageWithSkeleton <ImageWithSkeleton
src="/headshot.png" src="/headshot.webp"
alt={`${name[0]?.first}&nbsp;${name[0]?.last}`} alt={`${name[0]?.first}&nbsp;${name[0]?.last}`}
width={240} width={240}
height={240} height={240}
@@ -76,7 +76,7 @@ export function Sidebar() {
<div className="flex-shrink-0 border-b border-border/50 px-8 py-8"> <div className="flex-shrink-0 border-b border-border/50 px-8 py-8">
<div className="flex flex-col items-center space-y-4"> <div className="flex flex-col items-center space-y-4">
<ImageWithSkeleton <ImageWithSkeleton
src="/headshot.png" src="/headshot.webp"
alt={`${name[0]?.first} ${name[0]?.last}`} alt={`${name[0]?.first} ${name[0]?.last}`}
width={400} width={400}
height={400} height={400}
+1 -1
View File
@@ -4,7 +4,7 @@ export const metadata = {
summary: summary:
"E-Portfolio and reflection for the Nand2Tetris course, covering the journey from NAND gates to a high-level compiler.", "E-Portfolio and reflection for the Nand2Tetris course, covering the journey from NAND gates to a high-level compiler.",
tags: ["Simulation", "Compilers", "Python", "Assembly", "VM", "OS"], tags: ["Simulation", "Compilers", "Python", "Assembly", "VM", "OS"],
image: "/images/nand2tetris.png", image: "/images/nand2tetris.webp",
}; };
## Assignment Prompt ## Assignment Prompt
+45 -26
View File
@@ -462,6 +462,25 @@ export const relevantCoursework = [
]; ];
export const projects: Project[] = [ export const projects: Project[] = [
{
title: "Puter",
description:
"A native macOS system monitor inspired by Windows 11 Task Manager, with live process controls and detailed performance diagnostics.",
longDescription:
"Built in SwiftUI, Puter combines process management with live CPU, memory, disk, network, GPU, battery, thermal, and fan telemetry. It includes sortable and resizable process tables, application grouping, startup and service management, per-app history, dependency inspection, diagnostic sampling, and native JSON exports—all in a macOS interface with persistent preferences, light and dark modes, and accessibility support.",
tags: [
"Swift",
"SwiftUI",
"macOS",
"Systems Programming",
"Hardware Telemetry",
],
gitLink: "https://git.soconnor.dev/soconnor/Puter",
image: "/images/puter.jpg",
imageAlt:
"Puter's macOS performance dashboard showing CPU, memory, and disk utilization",
featured: true,
},
{ {
title: "LLM Fine-tuning & On-Device Inference Pipeline", title: "LLM Fine-tuning & On-Device Inference Pipeline",
description: description:
@@ -479,7 +498,7 @@ export const projects: Project[] = [
"The Halo is a mandatory titanium arch on all F1 cars. It saves lives but cuts through the most interesting part of onboard footage. This project removes it cleanly from visor-cam video using two stages. Stage one: classical CV mask detection — Sobel-Y gradient detection for the arch edge, a robust probe-and-fit keel detector with outlier rejection and temporal jump guards, and explicit geometry construction to avoid over-masking. Stage two: two inpainting methods compared side by side — LaMa (Fast Fourier Convolution network, per-frame spatial inpainting) and RAFT optical flow with backward warp and distance-transform blending for temporal coherence across 300 frames at 60fps.", "The Halo is a mandatory titanium arch on all F1 cars. It saves lives but cuts through the most interesting part of onboard footage. This project removes it cleanly from visor-cam video using two stages. Stage one: classical CV mask detection — Sobel-Y gradient detection for the arch edge, a robust probe-and-fit keel detector with outlier rejection and temporal jump guards, and explicit geometry construction to avoid over-masking. Stage two: two inpainting methods compared side by side — LaMa (Fast Fourier Convolution network, per-frame spatial inpainting) and RAFT optical flow with backward warp and distance-transform blending for temporal coherence across 300 frames at 60fps.",
tags: ["Python", "OpenCV", "Computer Vision", "LaMa", "RAFT", "Jupyter", "Inpainting"], tags: ["Python", "OpenCV", "Computer Vision", "LaMa", "RAFT", "Jupyter", "Inpainting"],
gitLink: "https://github.com/soconnor0919/f1-halo-removal", gitLink: "https://github.com/soconnor0919/f1-halo-removal",
image: "/images/f1-halo-removal.png", image: "/images/f1-halo-removal.webp",
imageAlt: "Side-by-side comparison of original F1 footage, LaMa spatial inpainting, and RAFT temporal inpainting across three frames", imageAlt: "Side-by-side comparison of original F1 footage, LaMa spatial inpainting, and RAFT temporal inpainting across three frames",
slidesUrl: "/publications/f1-halo-removal.pdf", slidesUrl: "/publications/f1-halo-removal.pdf",
featured: true, featured: true,
@@ -493,7 +512,7 @@ export const projects: Project[] = [
tags: ["Simulation", "Compilers", "Python", "Assembly", "VM", "OS"], tags: ["Simulation", "Compilers", "Python", "Assembly", "VM", "OS"],
link: "/blog/eceg431", link: "/blog/eceg431",
gitLink: "https://github.com/soconnor0919/eceg431", gitLink: "https://github.com/soconnor0919/eceg431",
image: "/images/nand2tetris.png", image: "/images/nand2tetris.webp",
imageAlt: "Diagram of the Hack Computer architecture", imageAlt: "Diagram of the Hack Computer architecture",
featured: true, featured: true,
}, },
@@ -506,7 +525,7 @@ export const projects: Project[] = [
tags: ["Coffee", "Lewisburg, PA", "Bucknell"], tags: ["Coffee", "Lewisburg, PA", "Bucknell"],
websiteLink: "https://lewisburgcoffee.soconnor.dev", websiteLink: "https://lewisburgcoffee.soconnor.dev",
gitLink: "https://github.com/soconnor0919/lewisburg-coffee", gitLink: "https://github.com/soconnor0919/lewisburg-coffee",
image: "/images/lewisburg-coffee.png", image: "/images/lewisburg-coffee.webp",
imageAlt: "Screenshot of the Lewisburg, PA Coffee Map website", imageAlt: "Screenshot of the Lewisburg, PA Coffee Map website",
featured: true, featured: true,
}, },
@@ -518,7 +537,7 @@ export const projects: Project[] = [
tags: ["PDF", "Markdown", "OCR"], tags: ["PDF", "Markdown", "OCR"],
websiteLink: "https://pdf2md.coolify.soconnor.dev", websiteLink: "https://pdf2md.coolify.soconnor.dev",
gitLink: "https://github.com/soconnor0919/pdf2md", gitLink: "https://github.com/soconnor0919/pdf2md",
image: "/images/pdf2md.png", image: "/images/pdf2md.webp",
imageAlt: "Screenshot of the PDF2MD website", imageAlt: "Screenshot of the PDF2MD website",
featured: true, featured: true,
}, },
@@ -540,7 +559,7 @@ export const projects: Project[] = [
"Docker", "Docker",
], ],
gitLink: "https://github.com/soconnor0919/hristudio", gitLink: "https://github.com/soconnor0919/hristudio",
image: "/hristudio_laptop.png", image: "/hristudio_laptop.webp",
imageAlt: imageAlt:
"Screenshot of HRIStudio application showing the robot control dashboard on a laptop", "Screenshot of HRIStudio application showing the robot control dashboard on a laptop",
featured: true, featured: true,
@@ -560,7 +579,7 @@ export const projects: Project[] = [
"I2C/SPI", "I2C/SPI",
], ],
gitLink: "https://github.com/soconnor0919/national_fa24", gitLink: "https://github.com/soconnor0919/national_fa24",
image: "/car.png", image: "/car.webp",
imageAlt: imageAlt:
"Photo of the Chem-E-Car with custom control system hardware visible, showing the microcontroller and sensor connections", "Photo of the Chem-E-Car with custom control system hardware visible, showing the microcontroller and sensor connections",
featured: true, featured: true,
@@ -601,7 +620,7 @@ export const projects: Project[] = [
"Docker", "Docker",
], ],
websiteLink: "https://riverheadraceway.com", websiteLink: "https://riverheadraceway.com",
image: "/images/racehub.png", image: "/images/racehub.webp",
imageAlt: "Screenshot of the RaceHub Next platform", imageAlt: "Screenshot of the RaceHub Next platform",
featured: true, featured: true,
}, },
@@ -623,7 +642,7 @@ export const projects: Project[] = [
], ],
gitLink: "https://github.com/soconnor0919/beenvoice", gitLink: "https://github.com/soconnor0919/beenvoice",
websiteLink: "https://beenvoice.soconnor.dev", websiteLink: "https://beenvoice.soconnor.dev",
image: "/images/beenvoice.png", image: "/images/beenvoice.webp",
imageAlt: "Screenshot of BeenVoice", imageAlt: "Screenshot of BeenVoice",
featured: true, featured: true,
}, },
@@ -636,7 +655,7 @@ export const projects: Project[] = [
tags: ["Next.js", "TypeScript", "TailwindCSS", "React"], tags: ["Next.js", "TypeScript", "TailwindCSS", "React"],
gitLink: "https://github.com/soconnor0919/personal-website", gitLink: "https://github.com/soconnor0919/personal-website",
websiteLink: "https://soconnor.dev", websiteLink: "https://soconnor.dev",
image: "/images/personal-website.png", image: "/images/personal-website.webp",
imageAlt: "Screenshot of Personal Website", imageAlt: "Screenshot of Personal Website",
featured: true, featured: true,
}, },
@@ -671,9 +690,9 @@ export const travel = [
description: description:
"With the funding of Bucknell's chemical engineering department, and an amazing team, I was able to attend the 2024 AIChE Annual Student Conference and compete in the national Chem-E-Car competition.", "With the funding of Bucknell's chemical engineering department, and an amazing team, I was able to attend the 2024 AIChE Annual Student Conference and compete in the national Chem-E-Car competition.",
images: [ images: [
"/trips/asc2024/IMG_2641.png", "/trips/asc2024/IMG_2641.webp",
"/trips/asc2024/IMG_2631.png", "/trips/asc2024/IMG_2631.webp",
"/trips/asc2024/IMG_7987.png", "/trips/asc2024/IMG_7987.webp",
], ],
alts: [ alts: [
"A photo of the Chem-E-Car team holding their trophies, dressed in their lab coats.", "A photo of the Chem-E-Car team holding their trophies, dressed in their lab coats.",
@@ -687,9 +706,9 @@ export const travel = [
description: description:
"I got to attend the IEEE RO-MAN 2024 conference in Pasadena, California. It was a great opportunity to present my work on my project HRIStudio, and to network with other researchers and industry professionals.", "I got to attend the IEEE RO-MAN 2024 conference in Pasadena, California. It was a great opportunity to present my work on my project HRIStudio, and to network with other researchers and industry professionals.",
images: [ images: [
"/trips/roman2024/IMG_3951.png", "/trips/roman2024/IMG_3951.webp",
"/trips/roman2024/IMG_3978.png", "/trips/roman2024/IMG_3978.webp",
"/trips/roman2024/IMG_3946.png", "/trips/roman2024/IMG_3946.webp",
], ],
alts: [ alts: [
"A photo of Sean presenting his poster at RO-MAN 2024.", "A photo of Sean presenting his poster at RO-MAN 2024.",
@@ -704,8 +723,8 @@ export const travel = [
"During the summer of 2024, I went on a study abroad program with about thirty of my peers. We explored Italy and France, following the footsteps of Leonardo da Vinci- evaluating the world through his lenses.", "During the summer of 2024, I went on a study abroad program with about thirty of my peers. We explored Italy and France, following the footsteps of Leonardo da Vinci- evaluating the world through his lenses.",
images: [ images: [
"/trips/engr290/insta290.jpg", "/trips/engr290/insta290.jpg",
"/trips/engr290/P1013747.png", "/trips/engr290/P1013747.webp",
"/trips/engr290/_1024461.png", "/trips/engr290/_1024461.webp",
], ],
alts: [ alts: [
"A photo of the group taken during the final dinner of the trip.", "A photo of the group taken during the final dinner of the trip.",
@@ -719,9 +738,9 @@ export const travel = [
description: description:
"As a member of the executive board of the Bucknell Coffee Society, I was able to attend the Specialty Coffee Association's Specialty Coffee Expo in early 2024, traveling to Chicago, IL.", "As a member of the executive board of the Bucknell Coffee Society, I was able to attend the Specialty Coffee Association's Specialty Coffee Expo in early 2024, traveling to Chicago, IL.",
images: [ images: [
"/trips/sca2024/group.jpeg", "/trips/sca2024/group.webp",
"/trips/sca2024/bean.png", "/trips/sca2024/bean.webp",
"/trips/sca2024/plane.png", "/trips/sca2024/plane.webp",
], ],
alts: [ alts: [
"A photo of the group at the SCA Specialty Coffee Expo in Chicago.", "A photo of the group at the SCA Specialty Coffee Expo in Chicago.",
@@ -735,9 +754,9 @@ export const travel = [
description: description:
"While studying abroad with Bucknell Engineering, we were lucky enough to be within a few hours of the Imola Grand Prix! A group of students went to see the race, and it was an amazing experience.", "While studying abroad with Bucknell Engineering, we were lucky enough to be within a few hours of the Imola Grand Prix! A group of students went to see the race, and it was an amazing experience.",
images: [ images: [
"/trips/imola2024/IMG_2093.png", "/trips/imola2024/IMG_2093.webp",
"/trips/imola2024/IMG_2050.png", "/trips/imola2024/IMG_2050.webp",
"/trips/imola2024/IMG_2066.png", "/trips/imola2024/IMG_2066.webp",
], ],
alts: [ alts: [
"A photo of the group at the Imola Circuit.", "A photo of the group at the Imola Circuit.",
@@ -751,9 +770,9 @@ export const travel = [
description: description:
"As a semi-recent Formula One fan, I was very excited to have the opportunity to attend the British Grand Prix weekend in 2024. I was able to see every event- marking one of my favorite weekends, probably ever.", "As a semi-recent Formula One fan, I was very excited to have the opportunity to attend the British Grand Prix weekend in 2024. I was able to see every event- marking one of my favorite weekends, probably ever.",
images: [ images: [
"/trips/silverstone/_1035852.png", "/trips/silverstone/_1035852.webp",
"/trips/silverstone/P1025274.png", "/trips/silverstone/P1025274.webp",
"/trips/silverstone/_1035764.png", "/trips/silverstone/_1035764.webp",
], ],
alts: [ alts: [
"Sean and his professor sitting on a sign with the text #BritishGP.", "Sean and his professor sitting on a sign with the text #BritishGP.",