Reformatted the project
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
name: Build and Test - Production
|
||||
on:
|
||||
push:
|
||||
branches: [main]
|
||||
branches: [ main ]
|
||||
|
||||
jobs:
|
||||
test:
|
||||
|
||||
49
README.md
49
README.md
@@ -1,48 +1,3 @@
|
||||
# Astro Starter Kit: Basics
|
||||
# Corwin Perren's Personal Portfolio Website
|
||||
|
||||
```sh
|
||||
npm create astro@latest -- --template basics
|
||||
```
|
||||
|
||||
[](https://stackblitz.com/github/withastro/astro/tree/latest/examples/basics)
|
||||
[](https://codesandbox.io/p/sandbox/github/withastro/astro/tree/latest/examples/basics)
|
||||
[](https://codespaces.new/withastro/astro?devcontainer_path=.devcontainer/basics/devcontainer.json)
|
||||
|
||||
> 🧑🚀 **Seasoned astronaut?** Delete this file. Have fun!
|
||||
|
||||

|
||||
|
||||
## 🚀 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.
|
||||
@@ -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 |
@@ -1,9 +1,10 @@
|
||||
import { DateTime } from 'luxon';
|
||||
import {DateTime} from 'luxon';
|
||||
|
||||
export interface experience {
|
||||
|
||||
|
||||
}
|
||||
|
||||
export interface subExperience {
|
||||
name: string;
|
||||
description: string;
|
||||
|
||||
@@ -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 can’t go into
|
||||
much detail due to NDA’s 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 I’ve 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 wouldn’t 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 can’t go into much detail due to NDA’s 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 I’ve 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 wouldn’t 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>
|
||||
@@ -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">
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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));
|
||||
};
|
||||
@@ -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"
|
||||
]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user