Files for my website bwc9876.dev

Rebrand!

bwc9876.dev dc73019c 7136510f

verified
+69 -188
src/assets/backdrop.png

This is a binary file and will not be displayed.

src/assets/backdrop.webp

This is a binary file and will not be displayed.

src/assets/blog/steamrp_portal2.png

This is a binary file and will not be displayed.

src/assets/blog/steamrp_portal2.webp

This is a binary file and will not be displayed.

src/assets/blog/wip1_screenrec_notif.png

This is a binary file and will not be displayed.

src/assets/blog/wip1_screenrec_notif.webp

This is a binary file and will not be displayed.

src/assets/blog/wip1_screenshot_notif.png

This is a binary file and will not be displayed.

src/assets/blog/wip1_screenshot_notif.webp

This is a binary file and will not be displayed.

src/assets/cow.png

This is a binary file and will not be displayed.

src/assets/cow.webp

This is a binary file and will not be displayed.

src/assets/default-og.png

This is a binary file and will not be displayed.

src/assets/default-og.webp

This is a binary file and will not be displayed.

+2 -1
src/components/projects/ProjectCard.astro
··· 1 1 --- 2 2 import { Image } from "astro:assets"; 3 - import backdrop from "@assets/backdrop.png"; 3 + import backdrop from "@assets/backdrop.webp"; 4 4 import type { CollectionEntry } from "astro:content"; 5 5 6 6 export interface Props { ··· 75 75 display: flex; 76 76 flex-direction: column; 77 77 height: 100%; 78 + color: var(--text); 78 79 background-color: var(--secondary); 79 80 border-radius: 5px; 80 81 }
+1 -1
src/content/posts/headless_steam_remote_play.md
··· 94 94 issues that are more a Linux/NixOS thing™ than specific to this. Here's a screenshot from Portal 2 95 95 with the overlay enabled. 96 96 97 - ![Portal 2 metrics on Remote Play](../../assets/blog/steamrp_portal2.png) 97 + ![Portal 2 metrics on Remote Play](../../assets/blog/steamrp_portal2.webp) 98 98 99 99 Consistently I get <1ms input latency and ~20ms display latency in-game, which for me is perfectly 100 100 acceptable. I'm able to have all the settings on high now without my laptop becoming a nice and
+2 -2
src/content/posts/wip_screen_captures.md
··· 107 107 108 108 With that we get a neat notification when we screenshot. 109 109 110 - ![A notification that I just took a screenshot with the screenshot visible](@assets/blog/wip1_screenshot_notif.png) 110 + ![A notification that I just took a screenshot with the screenshot visible](@assets/blog/wip1_screenshot_notif.webp) 111 111 112 112 Now we need to handle each action, the chosen action is returned by notify-send, so we can match on 113 113 that. ··· 245 245 let action = notify-send --app-name=simplescreenrecorder --icon=simplescreenrecorder -t 7500 --action=open=Open --action=folder="Show In Folder" --action=delete=Delete "Recording finished" $"File saved to ($out_name)" 246 246 ``` 247 247 248 - ![A notification that I just took a screen recording with a video camera icon visible](@assets/blog/wip1_screenrec_notif.png) 248 + ![A notification that I just took a screen recording with a video camera icon visible](@assets/blog/wip1_screenrec_notif.webp) 249 249 250 250 Most arguments are the same here as the screenshot script, the only difference is the icon and app 251 251 name. The actions are also basically the same, so I'll leave out the explanation and just show the
+1 -1
src/content/projects/asl-research.mdx
··· 12 12 - flask 13 13 links: 14 14 github: amiruzzaman/ASL_research 15 - image: ./asl-research.png 15 + image: ./asl-research.webp 16 16 --- 17 17 18 18 This project is part of an ongoing research project at West Chester University. I'm working on the web interface which uses the models created in the research to provide translation of ASL to/from English.
src/content/projects/asl-research.png

This is a binary file and will not be displayed.

src/content/projects/asl-research.webp

This is a binary file and will not be displayed.

+1 -1
src/content/projects/bctc-projects.mdx
··· 14 14 - school 15 15 links: 16 16 github: Bwc9876/BCTC-Projects 17 - image: ./bctc-projects.png 17 + image: ./bctc-projects.webp 18 18 --- 19 19 20 20 This repo is a sort-of catch-all for any project I did during my time at Berks
src/content/projects/bctc-projects.png

This is a binary file and will not be displayed.

src/content/projects/bctc-projects.webp

This is a binary file and will not be displayed.

+1 -1
src/content/projects/berks-dental.mdx
··· 11 11 - school 12 12 links: 13 13 github: Bwc9876/BerksDental 14 - image: ./berks-dental.png 14 + image: ./berks-dental.webp 15 15 --- 16 16 17 17 import ExtLink from "@components/ExtLink.astro";
src/content/projects/berks-dental.png

This is a binary file and will not be displayed.

src/content/projects/berks-dental.webp

This is a binary file and will not be displayed.

+1 -1
src/content/projects/cloud-box.mdx
··· 13 13 - webssh 14 14 links: 15 15 github: Bwc9876/CloudBox 16 - image: ./cloud-box.png 16 + image: ./cloud-box.webp 17 17 --- 18 18 19 19 import ExtLink from "@components/ExtLink.astro";
src/content/projects/cloud-box.png

This is a binary file and will not be displayed.

src/content/projects/cloud-box.webp

This is a binary file and will not be displayed.

+1 -1
src/content/projects/coop-scheduler.mdx
··· 9 9 - school 10 10 links: 11 11 github: Bwc9876/Coop-Schedule 12 - image: ./coop-scheduler.png 12 + image: ./coop-scheduler.webp 13 13 --- 14 14 15 15 import ExtLink from "@components/ExtLink.astro";
src/content/projects/coop-scheduler.png

This is a binary file and will not be displayed.

src/content/projects/coop-scheduler.webp

This is a binary file and will not be displayed.

+1 -1
src/content/projects/djazztro.mdx
··· 23 23 url: https://pypi.org/project/django-djazztro/ 24 24 icon: pypi 25 25 iconPackOverride: file-icons 26 - image: ./djazztro.png 26 + image: ./djazztro.webp 27 27 --- 28 28 29 29 import ExtLink from "@components/ExtLink.astro";
src/content/projects/djazztro.png

This is a binary file and will not be displayed.

src/content/projects/djazztro.webp

This is a binary file and will not be displayed.

+1 -1
src/content/projects/do-thing.mdx
··· 12 12 - kotlin 13 13 links: 14 14 github: Bwc9876/DoThingServer 15 - image: ./do-thing.png 15 + image: ./do-thing.webp 16 16 --- 17 17 18 18 import ExtLink from "@components/ExtLink.astro";
src/content/projects/do-thing.png

This is a binary file and will not be displayed.

src/content/projects/do-thing.webp

This is a binary file and will not be displayed.

src/content/projects/enigma-machine.jpeg

This is a binary file and will not be displayed.

+1 -1
src/content/projects/enigma-machine.mdx
··· 14 14 - label: Website 15 15 url: https://bwc9876.github.io/Enigma-Machine-Site/index.html 16 16 icon: globe 17 - image: ./enigma-machine.jpeg 17 + image: ./enigma-machine.webp 18 18 --- 19 19 20 20 import ExtLink from "@components/ExtLink.astro";
src/content/projects/enigma-machine.webp

This is a binary file and will not be displayed.

+1 -1
src/content/projects/gh-grader-preview.mdx
··· 9 9 - github 10 10 links: 11 11 github: Bwc9876/gh-grader-preview 12 - image: ./gh-grader-preview.png 12 + image: ./gh-grader-preview.webp 13 13 --- 14 14 15 15 A simple CLI that ran the GitHub autograder for me.
src/content/projects/gh-grader-preview.png

This is a binary file and will not be displayed.

src/content/projects/gh-grader-preview.webp

This is a binary file and will not be displayed.

+1 -1
src/content/projects/nh-config-editor.mdx
··· 12 12 - outer-wilds 13 13 links: 14 14 github: Outer-Wilds-New-Horizons/nh-config-editor 15 - image: ./nh-config-editor.png 15 + image: ./nh-config-editor.webp 16 16 --- 17 17 18 18 import ExtLink from "@components/ExtLink.astro";
src/content/projects/nh-config-editor.png

This is a binary file and will not be displayed.

src/content/projects/nh-config-editor.webp

This is a binary file and will not be displayed.

+1 -1
src/content/projects/opal-health.mdx
··· 11 11 - school 12 12 links: 13 13 github: ElderMicrobe889/Opal-Health 14 - image: ./opal-health.png 14 + image: ./opal-health.webp 15 15 --- 16 16 17 17 import ExtLink from "@components/ExtLink.astro";
src/content/projects/opal-health.png

This is a binary file and will not be displayed.

src/content/projects/opal-health.webp

This is a binary file and will not be displayed.

+1 -1
src/content/projects/ow-mod-man.mdx
··· 23 23 url: https://flathub.org/apps/com.outerwildsmods.owmods_gui 24 24 icon: flathub 25 25 iconPackOverride: simple-icons 26 - image: ./ow-mod-man.png 26 + image: ./ow-mod-man.webp 27 27 --- 28 28 29 29 import ExtLink from "@components/ExtLink.astro";
src/content/projects/ow-mod-man.png

This is a binary file and will not be displayed.

src/content/projects/ow-mod-man.webp

This is a binary file and will not be displayed.

+1 -1
src/content/projects/ow-save-editor.mdx
··· 13 13 other: 14 14 - label: Mods Website 15 15 url: https://outerwildsmods.com/mods/saveeditor/ 16 - image: ./ow-save-editor.png 16 + image: ./ow-save-editor.webp 17 17 --- 18 18 19 19 import ExtLink from "@components/ExtLink.astro";
src/content/projects/ow-save-editor.png

This is a binary file and will not be displayed.

src/content/projects/ow-save-editor.webp

This is a binary file and will not be displayed.

+1 -1
src/content/projects/ow-time-saver.mdx
··· 13 13 other: 14 14 - label: Mods Website 15 15 url: https://outerwildsmods.com/mods/timesaver/ 16 - image: ./ow-time-saver.png 16 + image: ./ow-time-saver.webp 17 17 --- 18 18 19 19 import ExtLink from "@components/ExtLink.astro";
src/content/projects/ow-time-saver.png

This is a binary file and will not be displayed.

src/content/projects/ow-time-saver.webp

This is a binary file and will not be displayed.

+1 -1
src/content/projects/portfolio-site.mdx
··· 12 12 - label: Website 13 13 url: https://bwc9876.dev/ 14 14 icon: globe 15 - image: ./portfolio-site.png 15 + image: ./portfolio-site.webp 16 16 --- 17 17 18 18 import ExtLink from "@components/ExtLink.astro";
src/content/projects/portfolio-site.png

This is a binary file and will not be displayed.

src/content/projects/portfolio-site.webp

This is a binary file and will not be displayed.

+1 -1
src/content/projects/quick-wheel.mdx
··· 8 8 - tkinter 9 9 links: 10 10 github: Bwc9876/QuickWheel 11 - image: ./quick-wheel.png 11 + image: ./quick-wheel.webp 12 12 --- 13 13 14 14 import ExtLink from "@components/ExtLink.astro";
src/content/projects/quick-wheel.png

This is a binary file and will not be displayed.

src/content/projects/quick-wheel.webp

This is a binary file and will not be displayed.

+1 -1
src/content/projects/qwerty.mdx
··· 11 11 - sympy 12 12 links: 13 13 github: Bwc9876/Qwerty 14 - image: ./qwerty.png 14 + image: ./qwerty.webp 15 15 --- 16 16 17 17 import ExtLink from "@components/ExtLink.astro";
src/content/projects/qwerty.png

This is a binary file and will not be displayed.

src/content/projects/qwerty.webp

This is a binary file and will not be displayed.

+1 -1
src/content/projects/tech-trends.mdx
··· 14 14 - label: Website 15 15 url: https://bwc9876.github.io/TechTrends2022/ 16 16 icon: globe 17 - image: ./tech-trends.png 17 + image: ./tech-trends.webp 18 18 --- 19 19 20 20 import ExtLink from "@components/ExtLink.astro";
src/content/projects/tech-trends.png

This is a binary file and will not be displayed.

src/content/projects/tech-trends.webp

This is a binary file and will not be displayed.

+1 -1
src/content/projects/transhuh.mdx
··· 10 10 - dbus 11 11 links: 12 12 github: Bwc9876/transhuh 13 - image: ./transhuh.png 13 + image: ./transhuh.webp 14 14 --- 15 15 16 16 This tool came from frustration with the bus system my school provides. We _do_ get a live map of the entire route but what I want is a way to know when a bus is nearby so I know when to leave!
src/content/projects/transhuh.png

This is a binary file and will not be displayed.

src/content/projects/transhuh.webp

This is a binary file and will not be displayed.

+1 -1
src/content/projects/unity-webgl.mdx
··· 13 13 other: 14 14 - label: Example Site 15 15 url: https://bwc9876.github.io/UnityWebGL/ 16 - image: ./unity-webgl.png 16 + image: ./unity-webgl.webp 17 17 --- 18 18 19 19 import ExtLink from "@components/ExtLink.astro";
src/content/projects/unity-webgl.png

This is a binary file and will not be displayed.

src/content/projects/unity-webgl.webp

This is a binary file and will not be displayed.

+1 -1
src/content/projects/wayland-mpris-idle-inhibit.mdx
··· 10 10 - wayland 11 11 links: 12 12 github: Bwc9876/wayland-mpris-idle-inhibit 13 - image: ./wayland-mpris-idle-inhibit.png 13 + image: ./wayland-mpris-idle-inhibit.webp 14 14 --- 15 15 16 16 A simple project that let me keep my computer on while it was playing media.
src/content/projects/wayland-mpris-idle-inhibit.png

This is a binary file and will not be displayed.

src/content/projects/wayland-mpris-idle-inhibit.webp

This is a binary file and will not be displayed.

+1 -1
src/content/projects/wcpc.mdx
··· 12 12 - astro 13 13 links: 14 14 github: Bwc9876/WCPCI/tree/dev 15 - image: ./wcpc.png 15 + image: ./wcpc.webp 16 16 --- 17 17 18 18 An Online Judging system (often shortened to OJ) is a tool used for programming competitions. It handles taking user submissions and scoring them based on their output. Usually this involves running the submission against a series of test cases.
src/content/projects/wcpc.png

This is a binary file and will not be displayed.

src/content/projects/wcpc.webp

This is a binary file and will not be displayed.

+7 -4
src/layouts/Layout.astro
··· 1 1 --- 2 2 import { Image, getImage } from "astro:assets"; 3 3 4 - import defaultOg from "@assets/default-og.png"; 5 - import cow from "@assets/cow.png"; 4 + import defaultOg from "@assets/default-og.webp"; 5 + import cow from "@assets/cow.webp"; 6 6 import Socials from "@components/Socials.astro"; 7 7 import IconLink from "@components/IconLink.astro"; 8 8 import "@styles/style.css"; ··· 83 83 alt="Ben C's Avatar" 84 84 src={cow} 85 85 /> 86 - <span><b class="gradient-text">Bwc9876</b>.dev</span> 86 + <span style="color: var(--text);"><b class="gradient-text">Bwc9876</b>.dev</span> 87 87 </a> 88 88 <span> 89 89 <a href="/projects">Projects</a> ··· 122 122 min-height: 100vh; 123 123 width: 100vw; 124 124 overflow-x: hidden; 125 - --section-border: 1px solid var(--accent); 126 125 } 127 126 128 127 header { ··· 154 153 155 154 nav a { 156 155 text-decoration: none; 156 + 157 + &:hover { 158 + text-decoration: underline; 159 + } 157 160 } 158 161 159 162 nav > a:first-child {
+18 -15
src/pages/blog/[...slug].astro
··· 98 98 </style> 99 99 100 100 <style is:global> 101 - pre { 102 - padding: var(--small); 103 - border-radius: 5px; 104 - box-sizing: border-box; 105 - background-color: var(--background-950) !important; 106 - box-shadow: inset color(from var(--background-100) srgb r g b / 0.2) 0 0 6px; 107 - overflow-x: auto; 108 - width: 100%; 109 - } 101 + main { 102 + pre { 103 + padding: var(--small); 104 + border-radius: 5px; 105 + box-sizing: border-box; 106 + background-color: color( 107 + from var(--background) srgb calc(r / 2) calc(g / 2) calc(b / 2) 108 + ) !important; 109 + overflow-x: auto; 110 + width: 100%; 111 + } 110 112 111 - img { 112 - box-sizing: border-box; 113 - border-radius: 5px; 114 - max-width: 100%; 115 - height: auto; 116 - box-shadow: color(from var(--accent) srgb r g b / 0.2) 0 0 6px; 113 + img { 114 + box-sizing: border-box; 115 + border-radius: 5px; 116 + max-width: 100%; 117 + height: auto; 118 + box-shadow: color(from var(--accent) srgb r g b / 0.2) 0 0 6px; 119 + } 117 120 } 118 121 </style>
+1 -5
src/pages/blog/index.astro
··· 6 6 7 7 blogEntries.sort((a, b) => b.data.date.valueOf() - a.data.date.valueOf()); 8 8 9 - const options = { 9 + const options: Intl.DateTimeFormatOptions = { 10 10 weekday: "long", 11 11 year: "numeric", 12 12 month: "long", ··· 48 48 article p:nth-child(2) { 49 49 margin: 0; 50 50 font-size: var(--2); 51 - } 52 - 53 - h2 > a { 54 - text-decoration: none !important; 55 51 } 56 52 </style>
+1 -13
src/pages/index.astro
··· 1 1 --- 2 2 import ProjectGrid from "@components/projects/ProjectGrid.astro"; 3 3 import Layout from "@layouts/Layout.astro"; 4 - import cow from "@assets/cow.png"; 4 + import cow from "@assets/cow.webp"; 5 5 import { Image } from "astro:assets"; 6 6 --- 7 7 ··· 19 19 <a href="/projects/menagerie">websites</a> and 20 20 <a href="/projects/ow-mod-man">desktop apps</a>.<br /> I enjoy every aspect of software development. 21 21 </p> 22 - <div class="ctas"> 23 - <a href="/projects" role="button" class="secondary">View My Projects</a> 24 - <a href="/blog" role="button" class="primary">Read My Blog</a> 25 - </div> 26 22 </div> 27 23 <div class="hero-image"> 28 24 <Image width={150} height={150} format="webp" alt="Ben C's Avatar" src={cow} /> ··· 55 51 gap: var(--2); 56 52 justify-content: space-between; 57 53 align-items: center; 58 - } 59 - 60 - .hero .ctas { 61 - display: flex; 62 - flex-wrap: wrap; 63 - gap: var(--1); 64 - margin: var(--5) 0; 65 - font-weight: bold; 66 54 } 67 55 68 56 @keyframes glow {
+15 -125
src/styles/style.css
··· 26 26 27 27 /* Color Definitions */ 28 28 :root { 29 - --text: #daf1ef; 30 - --background: #080609; 31 - --primary: #53d164; 29 + --text: #cecece; 30 + --background: #110f12; 31 + --primary: #0ee19b; 32 32 --secondary: #012d1e; 33 - --accent: #0ee19b; 34 - 35 - --text-50: #edf8f7; 36 - --text-100: #daf1ef; 37 - --text-200: #b5e3df; 38 - --text-300: #90d5cf; 39 - --text-400: #6bc7bf; 40 - --text-500: #46b9af; 41 - --text-600: #38948c; 42 - --text-700: #2a6f69; 43 - --text-800: #1c4a46; 44 - --text-900: #0e2523; 45 - --text-950: #071212; 46 - 47 - --background-50: #f3f0f5; 48 - --background-100: #e7e0eb; 49 - --background-200: #cfc2d6; 50 - --background-300: #b8a3c2; 51 - --background-400: #a085ad; 52 - --background-500: #886699; 53 - --background-600: #6d527a; 54 - --background-700: #523d5c; 55 - --background-800: #36293d; 56 - --background-900: #1b141f; 57 - --background-950: #0e0a0f; 58 - 59 - --primary-50: #ebfaed; 60 - --primary-100: #d7f4db; 61 - --primary-200: #aeeab6; 62 - --primary-300: #86df92; 63 - --primary-400: #5ed46e; 64 - --primary-500: #36c949; 65 - --primary-600: #2ba13b; 66 - --primary-700: #20792c; 67 - --primary-800: #15511d; 68 - --primary-900: #0b280f; 69 - --primary-950: #051407; 70 - 71 - --secondary-50: #e6fef6; 72 - --secondary-100: #cdfeee; 73 - --secondary-200: #9bfddc; 74 - --secondary-300: #69fccb; 75 - --secondary-400: #37fbba; 76 - --secondary-500: #05faa8; 77 - --secondary-600: #04c887; 78 - --secondary-700: #039665; 79 - --secondary-800: #026443; 80 - --secondary-900: #013222; 81 - --secondary-950: #011911; 82 - 83 - --accent-50: #e7fdf6; 84 - --accent-100: #cffced; 85 - --accent-200: #9ff9db; 86 - --accent-300: #6ff6c9; 87 - --accent-400: #3ff3b7; 88 - --accent-500: #0ff0a5; 89 - --accent-600: #0cc084; 90 - --accent-700: #099063; 91 - --accent-800: #066042; 92 - --accent-900: #033021; 93 - --accent-950: #021810; 33 + --accent: #53d164; 94 34 } 95 35 96 36 /* Color Aliases */ ··· 98 38 /* Spacing Scale, Major Third */ 99 39 :root { 100 40 /* 1rem = 16px */ 101 - font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif; 102 - font-size: 125%; 41 + font-family: sans-serif; 103 42 --scale: 1.25; 104 43 --small: calc(1rem * pow(var(--scale), -1)); 105 44 --half: calc(1rem * pow(var(--scale), -0.5)); ··· 152 91 } 153 92 154 93 a { 155 - color: var(--accent-600); 94 + color: var(--accent); 95 + 96 + &:hover { 97 + text-decoration: underline; 98 + } 156 99 } 157 100 158 101 button, 159 102 button.primary, 160 103 [role="button"] { 161 - --bg: var(--primary-400); 162 - --hover-bg: var(--primary-500); 163 - --active-bg: var(--primary-300); 164 - --disabled-bg: var(--primary-600); 165 - 166 104 padding: var(--component-padding); 167 105 color: var(--text); 168 106 border-radius: 10px; 169 107 border: solid 2px transparent; 170 - background-color: var(--bg); 108 + background-color: var(--secondary); 171 109 cursor: pointer; 172 110 transition: background-color 100ms linear; 173 - color: var(--background-800); 174 111 text-decoration: none; 175 112 } 176 113 177 - button.secondary, 178 - .secondary[role="button"] { 179 - --bg: var(--secondary-500); 180 - --hover-bg: var(--secondary-400); 181 - --active-bg: var(--secondary-600); 182 - --disabled-bg: var(--secondary-700); 183 - } 184 - 185 - button.accent, 186 - .accent[role="button"] { 187 - --bg: var(--accent-400); 188 - --hover-bg: var(--accent-500); 189 - --active-bg: var(--accent-300); 190 - --disabled-bg: var(--accent-600); 191 - } 192 - 193 114 button:active, 194 115 [role="button"]:active { 195 - background-color: var(--active-bg); 116 + filter: hue-rotate(50deg); 196 117 } 197 118 198 119 button:hover, 199 120 [role="button"]:hover { 200 - background-color: var(--hover-bg); 201 - } 202 - 203 - button:disabled, 204 - [role="button"]:disabled { 205 - background-color: var(--disabled-bg); 206 - color: var(--text-disabled); 207 - } 208 - 209 - button:disabled:hover, 210 - [role="button"]:disabled:hover { 211 - cursor: default; 212 - } 213 - 214 - input { 215 - padding: var(--component-padding); 216 - color: var(--text); 217 - border-radius: var(--1); 218 - border: solid 2px var(--accent-200); 219 - background-color: var(--background-raised); 220 - } 221 - 222 - body { 223 - font-weight: 400; 224 - } 225 - 226 - h1, 227 - h2, 228 - h3, 229 - h4, 230 - h5 { 231 - font-weight: 700; 121 + filter: saturate(150%); 232 122 } 233 123 234 124 .gradient-text { ··· 255 145 overflow: hidden; 256 146 transform: translate(-50%, -0.25rem); 257 147 border-radius: 5px; 258 - background: var(--accent-800); 148 + background: var(--secondary); 259 149 content: attr(data-tooltip); 260 150 color: var(--text); 261 151 font-style: normal; ··· 277 167 border-radius: 0; 278 168 background-color: transparent; 279 169 content: ""; 280 - color: var(--accent-800); 170 + color: var(--secondary); 281 171 } 282 172 283 173 &[data-placement="bottom"] {