Reformatted the project

This commit is contained in:
2025-11-12 01:21:48 -08:00
parent b91d37db45
commit 7858d95f58
11 changed files with 78 additions and 241 deletions

View File

@@ -9,19 +9,19 @@ jobs:
timeout-minutes: 60
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: lts/*
- name: Install dependencies
run: npm ci
- name: Install Playwright Browsers
run: npx playwright install --with-deps
- name: Run Playwright tests
run: npx playwright test
- uses: actions/upload-artifact@v4
if: ${{ !cancelled() }}
with:
name: playwright-report
path: playwright-report/
retention-days: 30
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: lts/*
- name: Install dependencies
run: npm ci
- name: Install Playwright Browsers
run: npx playwright install --with-deps
- name: Run Playwright tests
run: npx playwright test
- uses: actions/upload-artifact@v4
if: ${{ !cancelled() }}
with:
name: playwright-report
path: playwright-report/
retention-days: 30

View File

@@ -1,7 +1,7 @@
name: Build and Test - Production
on:
push:
branches: [main]
branches: [ main ]
jobs:
test:

View File

@@ -1,48 +1,3 @@
# Astro Starter Kit: Basics
# Corwin Perren's Personal Portfolio Website
```sh
npm create astro@latest -- --template basics
```
[![Open in StackBlitz](https://developer.stackblitz.com/img/open_in_stackblitz.svg)](https://stackblitz.com/github/withastro/astro/tree/latest/examples/basics)
[![Open with CodeSandbox](https://assets.codesandbox.io/github/button-edit-lime.svg)](https://codesandbox.io/p/sandbox/github/withastro/astro/tree/latest/examples/basics)
[![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/withastro/astro?devcontainer_path=.devcontainer/basics/devcontainer.json)
> 🧑‍🚀 **Seasoned astronaut?** Delete this file. Have fun!
![just-the-basics](https://github.com/withastro/astro/assets/2244813/a0a5533c-a856-4198-8470-2d67b1d7c554)
## 🚀 Project Structure
Inside of your Astro project, you'll see the following folders and files:
```text
/
├── public/
│ └── favicon.svg
├── src/
│ ├── layouts/
│ │ └── Layout.astro
│ └── pages/
│ └── index.astro
└── package.json
```
To learn more about the folder structure of an Astro project, refer to [our guide on project structure](https://docs.astro.build/en/basics/project-structure/).
## 🧞 Commands
All commands are run from the root of the project, from a terminal:
| Command | Action |
| :------------------------ | :----------------------------------------------- |
| `npm install` | Installs dependencies |
| `npm run dev` | Starts local dev server at `localhost:4321` |
| `npm run build` | Build your production site to `./dist/` |
| `npm run preview` | Preview your build locally, before deploying |
| `npm run astro ...` | Run CLI commands like `astro add`, `astro check` |
| `npm run astro -- --help` | Get help using the Astro CLI |
## 👀 Want to learn more?
Feel free to check [our documentation](https://docs.astro.build) or jump into our [Discord server](https://astro.build/chat).
Check the Makfile and/or package.json for the commands needed to build and run this project.

View File

@@ -1,151 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
class="logo-title"
width="21.129419mm"
height="9.3295746mm"
viewBox="0 0 74.868021 33.057548"
id="svg4376"
version="1.1"
inkscape:version="1.4.2 (ebf0e940d0, 2025-05-08)"
sodipodi:docname="logo-title.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<defs
id="defs4378" />
<sodipodi:namedview
id="base"
pagecolor="#000000"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="1"
inkscape:pageshadow="2"
inkscape:zoom="11.313709"
inkscape:cx="329.77692"
inkscape:cy="530.2417"
inkscape:document-units="px"
inkscape:current-layer="layer2"
showgrid="false"
inkscape:window-width="2546"
inkscape:window-height="1386"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:showpageshadow="true"
inkscape:pagecheckerboard="1"
inkscape:deskcolor="#505050"
inkscape:export-bgcolor="#ffffff00">
<inkscape:page
x="0"
y="0"
width="74.868019"
height="33.057549"
id="page2"
margin="0"
bleed="0" />
</sodipodi:namedview>
<metadata
id="metadata4381">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-262.90298,-476.37904)">
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#10ac25;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="279.60336"
y="517.86682"
id="text4159-4"
transform="scale(1.0283363,0.97244452)"
inkscape:export-xdpi="120.07"
inkscape:export-ydpi="120.07"
inkscape:export-filename="text4159-4.svg"><tspan
sodipodi:role="line"
x="279.60336"
y="517.86682"
style="font-size:15.425px;line-height:1.25"
id="tspan4167-2">Perren</tspan></text>
</g>
<g
inkscape:groupmode="layer"
id="layer2"
inkscape:label="Layer 2"
transform="translate(-262.90298,-476.37904)">
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#10ac25;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="260.65689"
y="506.06656"
id="text3344-4-5"
inkscape:export-xdpi="120.07"
inkscape:export-ydpi="120.07"><tspan
sodipodi:role="line"
id="tspan3346-7-6"
x="260.65689"
y="506.06656"
style="font-size:40px;line-height:1.25">C</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#10ac25;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="270.34253"
y="498.55893"
id="text3348-1-8"
transform="scale(1.0028223,0.99718564)"
inkscape:export-xdpi="120.07"
inkscape:export-ydpi="120.07"><tspan
sodipodi:role="line"
id="tspan3350-3-1"
x="270.34253"
y="498.55893"
style="font-size:16.283px;line-height:1.25">A</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#10ac25;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="96.614212"
y="537.43079"
id="text3344-5-7-6"
transform="matrix(0.88187751,-0.35574603,0.36069903,0.98843971,0,0)"
inkscape:export-xdpi="120.07"
inkscape:export-ydpi="120.07"><tspan
sodipodi:role="line"
id="tspan3370-7-8"
x="96.614212"
y="537.43079"
style="font-size:14.587px;line-height:1.25">P</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#10ac25;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="287.28516"
y="490.68661"
id="text4159"
inkscape:export-xdpi="120.07"
inkscape:export-ydpi="120.07"><tspan
sodipodi:role="line"
id="tspan4161"
x="287.28516"
y="490.68661"
style="font-size:15px;line-height:1.25">Corwin</tspan><tspan
sodipodi:role="line"
x="287.28516"
y="509.43661"
style="font-size:15px;line-height:1.25"
id="tspan4167"> </tspan></text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 5.6 KiB

View File

@@ -1,9 +1,10 @@
import { DateTime } from 'luxon';
import {DateTime} from 'luxon';
export interface experience {
}
export interface subExperience {
name: string;
description: string;

View File

@@ -3,7 +3,8 @@ import ExperienceLayout from '@layouts/ExperienceLayout.astro';
import Timeline from '@components/Timeline/Timeline.astro';
import Carousel from "@components/CustomCarousel/CustomCarousel.astro";
import spring_2019_interns from "@assets/experience/spacex/avionics-test-engineering-internship/spring-2019-interns.jpg";
import spring_2019_interns
from "@assets/experience/spacex/avionics-test-engineering-internship/spring-2019-interns.jpg";
import type {carouselGroup} from "@interfaces/image-carousel.ts";
import type {timelineEntry} from "@interfaces/timeline.ts";
@@ -58,9 +59,20 @@ const timeline: timelineEntry[] = [
<h2 class="font-bold md:text-2xl my-4">Details</h2>
Though I did get to work on some really fun projects during my internship at SpaceX, I unfortunately cant go into
much detail due to NDAs and ITAR restrictions. What I can say is that I mainly wrote Python for a new avionics
hardware test system. My experience with writing Python in the numerous other projects Ive done really helped me
out here, as the framework SpaceX has created was quite complex and would otherwise have been fairly difficult to
write code for. I also wrote a simple tool for automating the creation of Jira work tickets so that the two teams
that ended up using it wouldnt have to have their members manually creating dozens of them as work and issues came
in through a separate system.
Though I did get to work on some really fun projects during my internship at SpaceX, I unfortunately cant go into much detail due to NDAs and ITAR restrictions. What I can say is that I mainly wrote Python for a new avionics hardware test system. My experience with writing Python in the numerous other projects Ive done really helped me out here, as the framework SpaceX has created was quite complex and would otherwise have been fairly difficult to write code for. I also wrote a simple tool for automating the creation of Jira work tickets so that the two teams that ended up using it wouldnt have to have their members manually creating dozens of them as work and issues came in through a separate system.
I was also quite happy in that I got to perform some circuit debugging on avionics test system hardware, both for my project and for a separate test system. A final experience I had here was getting to work directly with the head engineer from a company that supplied a piece of test hardware I was interfacing with. It was quite incredible to see just how much weight a SpaceX email address had when trying to solve problems I had found with the hardware. Not only were they responsive, but in fact were willing to fast-track firmware updates for us to get things working. Coming from clubs and small labs where a support email might not even get a response for months, it was quite a refreshing experience.
I was also quite happy in that I got to perform some circuit debugging on avionics test system hardware, both for my
project and for a separate test system. A final experience I had here was getting to work directly with the head
engineer from a company that supplied a piece of test hardware I was interfacing with. It was quite incredible to
see just how much weight a SpaceX email address had when trying to solve problems I had found with the hardware. Not
only were they responsive, but in fact were willing to fast-track firmware updates for us to get things working.
Coming from clubs and small labs where a support email might not even get a response for months, it was quite a
refreshing experience.
</ExperienceLayout>

View File

@@ -52,8 +52,12 @@ const timeline: timelineEntry[] = [
<h3 class="font-bold md:text-lg my-4">Key Takeaways</h3>
<ul class="list-disc list-inside">
<li>Created test systems which validated ~4500 Starlink satellite flight computers, and ~4000 power boards</li>
<li>Developed program-critical infrastructure that enabled efficient triage, management, and tracking of hardware failures</li>
<li>Designed and deployed automated, unified, and containerized infrastructure to greatly increase application reliability and development speed </li>
<li>Developed program-critical infrastructure that enabled efficient triage, management, and tracking of
hardware failures
</li>
<li>Designed and deployed automated, unified, and containerized infrastructure to greatly increase application
reliability and development speed
</li>
</ul>
<h3 class="font-bold md:text-lg my-4">Skills Used</h3>
<div class="relative grid gap-6 grid-flow-row sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 border-caperren-green">

View File

@@ -12,7 +12,8 @@ import enclosure_right from "@assets/hobby/homelab/offsite-backup-rack/enclosure
import enclosure_with_ups from "@assets/hobby/homelab/offsite-backup-rack/enclosure-with-ups.jpg";
import power_adapter_tray_and_dc_dc from "@assets/hobby/homelab/offsite-backup-rack/power-adapter-tray-and-dc-dc.jpg";
import power_supply_closeup from "@assets/hobby/homelab/offsite-backup-rack/power-supply-closeup.jpg";
import power_supply_mounting_location from "@assets/hobby/homelab/offsite-backup-rack/power-supply-mounting-location.jpg";
import power_supply_mounting_location
from "@assets/hobby/homelab/offsite-backup-rack/power-supply-mounting-location.jpg";
import sata_tight_fit from "@assets/hobby/homelab/offsite-backup-rack/sata-tight-fit.jpg";
import sff_pc_with_sata_and_usb_ssds from "@assets/hobby/homelab/offsite-backup-rack/sff-pc-with-sata-and-usb-ssds.jpg";
import up_and_running from "@assets/hobby/homelab/offsite-backup-rack/up-and-running.png";

View File

@@ -12,13 +12,12 @@ import fjr1300 from "@assets/hobby/motorcycling/lineup/2015-fjr-1300-mountaintop
import sg400 from "@assets/hobby/motorcycling/lineup/2021-csc-sg400.jpg";
const fjrCarouselGroup: carouselGroup = {animation: "slide",images: [fjr1300]}
const cscCarouselGroup: carouselGroup = {animation: "slide",images: [sg400]}
const drzCarouselGroup: carouselGroup = {animation: "slide",images: [drz400]}
const concoursCarouselGroup: carouselGroup = {animation: "slide",images: [concours]}
const ninjaCarouselGroup: carouselGroup = {animation: "slide",images: [ninja600]}
const kz750CarouselGroup: carouselGroup = {animation: "slide",images: [kz750]}
const fjrCarouselGroup: carouselGroup = {animation: "slide", images: [fjr1300]}
const cscCarouselGroup: carouselGroup = {animation: "slide", images: [sg400]}
const drzCarouselGroup: carouselGroup = {animation: "slide", images: [drz400]}
const concoursCarouselGroup: carouselGroup = {animation: "slide", images: [concours]}
const ninjaCarouselGroup: carouselGroup = {animation: "slide", images: [ninja600]}
const kz750CarouselGroup: carouselGroup = {animation: "slide", images: [kz750]}
---
<HobbyLayout title="Motorcycling - Lineup">

View File

@@ -1,4 +1,4 @@
import type { APIRoute } from 'astro';
import type {APIRoute} from 'astro';
const getRobotsTxt = (sitemapURL: URL) => `\
User-agent: *
@@ -7,7 +7,7 @@ Allow: /
Sitemap: ${sitemapURL.href}
`;
export const GET: APIRoute = ({ site }) => {
export const GET: APIRoute = ({site}) => {
const sitemapURL = new URL('sitemap-index.xml', site);
return new Response(getRobotsTxt(sitemapURL));
};

View File

@@ -1,16 +1,32 @@
{
"compilerOptions": {
"paths": {
"@assets/*": ["./src/assets/*"],
"@components/*": ["./src/components/*"],
"@data/*": ["./src/data/*"],
"@interfaces/*": ["./src/interfaces/*"],
"@layouts/*": ["./src/layouts/*"],
"@styles/*": ["./src/styles/*"]
"@assets/*": [
"./src/assets/*"
],
"@components/*": [
"./src/components/*"
],
"@data/*": [
"./src/data/*"
],
"@interfaces/*": [
"./src/interfaces/*"
],
"@layouts/*": [
"./src/layouts/*"
],
"@styles/*": [
"./src/styles/*"
]
}
},
"extends": "astro/tsconfigs/strict",
"include": [".astro/types.d.ts", "**/*"],
"exclude": ["dist"]
"include": [
".astro/types.d.ts",
"**/*"
],
"exclude": [
"dist"
]
}