Added core content for hardware test engineer page #17
@@ -4,6 +4,7 @@ ASSEM
|
|||||||
astrojs
|
astrojs
|
||||||
Atmel
|
Atmel
|
||||||
barebones
|
barebones
|
||||||
|
Bitwarden
|
||||||
Candian
|
Candian
|
||||||
caperren
|
caperren
|
||||||
CEOAS
|
CEOAS
|
||||||
@@ -13,6 +14,8 @@ CONSERV
|
|||||||
Corwin
|
Corwin
|
||||||
dangerousthings
|
dangerousthings
|
||||||
Dechorionator
|
Dechorionator
|
||||||
|
dockerization
|
||||||
|
dockerizing
|
||||||
ebox
|
ebox
|
||||||
fhhs
|
fhhs
|
||||||
flowbite
|
flowbite
|
||||||
@@ -39,6 +42,7 @@ OSURC
|
|||||||
Perren
|
Perren
|
||||||
Perren's
|
Perren's
|
||||||
Pixhawk
|
Pixhawk
|
||||||
|
Protocase
|
||||||
pubpath
|
pubpath
|
||||||
RFID
|
RFID
|
||||||
RSSI
|
RSSI
|
||||||
@@ -50,7 +54,9 @@ ssds
|
|||||||
Starlink
|
Starlink
|
||||||
steller
|
steller
|
||||||
Steller
|
Steller
|
||||||
|
Teamcenter
|
||||||
timelapse
|
timelapse
|
||||||
|
triaging
|
||||||
trivago
|
trivago
|
||||||
Unstow
|
Unstow
|
||||||
uuidv
|
uuidv
|
||||||
|
|||||||
Binary file not shown.
|
After Width: | Height: | Size: 600 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 701 KiB |
BIN
src/assets/hobby/homelab/offsite-backup-rack/installed.jpg
Normal file
BIN
src/assets/hobby/homelab/offsite-backup-rack/installed.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.4 MiB |
@@ -13,7 +13,6 @@ export const siteLayout: navLink[] = [
|
|||||||
path: "spacex",
|
path: "spacex",
|
||||||
children: [
|
children: [
|
||||||
{
|
{
|
||||||
enabled: false,
|
|
||||||
navText: "Hardware Test Engineer I/II",
|
navText: "Hardware Test Engineer I/II",
|
||||||
path: "hardware-test-engineer-i-ii",
|
path: "hardware-test-engineer-i-ii",
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -104,7 +104,7 @@ const categorizedSkills: categorySkills[] = [
|
|||||||
skills: [
|
skills: [
|
||||||
{ item: "Git" },
|
{ item: "Git" },
|
||||||
{
|
{
|
||||||
item: "Programming Languages",
|
item: "Programming",
|
||||||
subItems: [
|
subItems: [
|
||||||
{ item: "Python 2/3" },
|
{ item: "Python 2/3" },
|
||||||
{ item: "Bash Shell Scripting" },
|
{ item: "Bash Shell Scripting" },
|
||||||
|
|||||||
@@ -42,13 +42,18 @@ const categorizedSkills: categorySkills[] = [
|
|||||||
skills: [
|
skills: [
|
||||||
{ item: "Git" },
|
{ item: "Git" },
|
||||||
{
|
{
|
||||||
item: "Programming Languages",
|
item: "Programming",
|
||||||
subItems: [
|
subItems: [
|
||||||
{ item: "Python 2/3" },
|
{ item: "Python 2/3" },
|
||||||
{ item: "Bash Shell Scripting" },
|
{ item: "Bash Shell Scripting" },
|
||||||
{ item: "Microsoft SQL" },
|
{ item: "Microsoft SQL" },
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
item: "Methodologies",
|
||||||
|
subItems: [{ item: "Test Driven Development" }, { item: "Agile" }],
|
||||||
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
item: "Atlassian Suite",
|
item: "Atlassian Suite",
|
||||||
subItems: [
|
subItems: [
|
||||||
|
|||||||
@@ -1,16 +1,29 @@
|
|||||||
---
|
---
|
||||||
import Carousel from "@components/Media/CustomCarousel/CustomCarousel.astro";
|
|
||||||
import Timeline from "@components/Timeline/Timeline.astro";
|
|
||||||
import ExperienceLayout from "@layouts/ExperienceLayout.astro";
|
import ExperienceLayout from "@layouts/ExperienceLayout.astro";
|
||||||
|
|
||||||
import starlink_headquarters_selfie from "@assets/experience/spacex/hardware-test-engineer-i-ii/starlink-headquarters-selfie.jpg";
|
import H2 from "@components/H2.astro";
|
||||||
|
import H3 from "@components/H3.astro";
|
||||||
|
import InlineLink from "@components/InlineLink.astro";
|
||||||
|
import Li from "@components/Li.astro";
|
||||||
|
import Carousel from "@components/Media/CustomCarousel/CustomCarousel.astro";
|
||||||
|
import PageGroup from "@components/PageGroup.astro";
|
||||||
|
import Paragraph from "@components/Paragraph.astro";
|
||||||
|
import Paragraphs from "@components/Paragraphs.astro";
|
||||||
|
import SkillMatrix from "@components/SkillMatrix/SkillMatrix.astro";
|
||||||
|
import Timeline from "@components/Timeline/Timeline.astro";
|
||||||
|
import Ul from "@components/Ul.astro";
|
||||||
|
|
||||||
import type { carouselGroup } from "@interfaces/image-carousel.ts";
|
import type { carouselGroup } from "@interfaces/image-carousel.ts";
|
||||||
|
import type { categorySkills } from "@interfaces/skill-matrix.ts";
|
||||||
import type { timelineEntry } from "@interfaces/timeline.ts";
|
import type { timelineEntry } from "@interfaces/timeline.ts";
|
||||||
|
|
||||||
|
import five_year_patch from "@assets/experience/spacex/hardware-test-engineer-i-ii/five-year-patch.jpg";
|
||||||
|
import starlink_headquarters_selfie from "@assets/experience/spacex/hardware-test-engineer-i-ii/starlink-headquarters-selfie.jpg";
|
||||||
|
import starlink_patch from "@assets/experience/spacex/hardware-test-engineer-i-ii/starlink-patch.jpg";
|
||||||
|
|
||||||
const headerCarouselGroup: carouselGroup = {
|
const headerCarouselGroup: carouselGroup = {
|
||||||
animation: "slide",
|
animation: "slide",
|
||||||
images: [starlink_headquarters_selfie],
|
images: [starlink_headquarters_selfie, five_year_patch, starlink_patch],
|
||||||
};
|
};
|
||||||
|
|
||||||
const timeline: timelineEntry[] = [
|
const timeline: timelineEntry[] = [
|
||||||
@@ -43,56 +56,343 @@ const timeline: timelineEntry[] = [
|
|||||||
"Celebrated five and a half years of helping put thousands of satellites, and dozens of rockets, into orbit",
|
"Celebrated five and a half years of helping put thousands of satellites, and dozens of rockets, into orbit",
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
|
const categorizedSkills: categorySkills[] = [
|
||||||
|
{
|
||||||
|
category: "Software & Environments",
|
||||||
|
skills: [
|
||||||
|
{
|
||||||
|
item: "Version Control",
|
||||||
|
subItems: [{ item: "Git" }, { item: "Subversion" }],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
item: "Programming",
|
||||||
|
subItems: [
|
||||||
|
{
|
||||||
|
item: "Languages",
|
||||||
|
subItems: [
|
||||||
|
{ item: "Python 2/3" },
|
||||||
|
{ item: "Bash Shell Scripting" },
|
||||||
|
{ item: "High-Level Embedded C/C++ (Arduino/Teensy)" },
|
||||||
|
{ item: "HTML" },
|
||||||
|
{ item: "CSS" },
|
||||||
|
{ item: "Typescript/Javascript" },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
item: "Databases",
|
||||||
|
subItems: [
|
||||||
|
{ item: "Postgres" },
|
||||||
|
{ item: "Microsoft SQL" },
|
||||||
|
{ item: "MySQL" },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{ item: "DevOps", subItems: [{ item: "Ansible" }] },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
item: "Methodologies",
|
||||||
|
subItems: [{ item: "Test Driven Development" }, { item: "Agile" }],
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
item: "Automation",
|
||||||
|
subItems: [{ item: "NI MAX/VISA" }, { item: "RESTful APIs" }],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
item: "Operating Systems",
|
||||||
|
subItems: [
|
||||||
|
{
|
||||||
|
item: "Linux",
|
||||||
|
subItems: [{ item: "Centos" }, { item: "Ubuntu" }, { item: "WSL" }],
|
||||||
|
},
|
||||||
|
{ item: "Microsoft Windows" },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
item: "Applications",
|
||||||
|
subItems: [
|
||||||
|
{
|
||||||
|
item: "Atlassian",
|
||||||
|
subItems: [
|
||||||
|
{ item: "Jira" },
|
||||||
|
{ item: "Bitbucket" },
|
||||||
|
{ item: "Confluence" },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
item: "Monitoring/Metrics",
|
||||||
|
subItems: [
|
||||||
|
{ item: "Grafana" },
|
||||||
|
{ item: "Sentry" },
|
||||||
|
{ item: "OpsGenie" },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
item: "Secrets",
|
||||||
|
subItems: [{ item: "Bitwarden" }, { item: "Hashicorp Vault" }],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
category: "Electrical",
|
||||||
|
skills: [
|
||||||
|
{
|
||||||
|
item: "Schematic & PCB Design",
|
||||||
|
subItems: [
|
||||||
|
{ item: "Altium Designer" },
|
||||||
|
{ item: "Mentor Graphics PADS" },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
item: "Electrical Diagnostics",
|
||||||
|
subItems: [
|
||||||
|
{ item: "Multimeters" },
|
||||||
|
{ item: "Oscilloscopes" },
|
||||||
|
{ item: "Logic Analyzers" },
|
||||||
|
{ item: "LCR Meters" },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
item: "Harnessing Fabrication",
|
||||||
|
subItems: [
|
||||||
|
{ item: "DC Power & Signal" },
|
||||||
|
{ item: "Low Frequency RF (<1GHz)" },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
category: "Mechanical",
|
||||||
|
skills: [
|
||||||
|
{ item: "Siemens Teamcenter PLM" },
|
||||||
|
{
|
||||||
|
item: "3D Modeling",
|
||||||
|
subItems: [
|
||||||
|
{ item: "Siemens NX" },
|
||||||
|
|
||||||
|
{ item: "Protocase Designer" },
|
||||||
|
{ item: "FreeCAD" },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
category: "Other",
|
||||||
|
skills: [
|
||||||
|
{
|
||||||
|
item: "Specialty Tests",
|
||||||
|
subItems: [
|
||||||
|
{ item: "Highly Accelerated Life Testing" },
|
||||||
|
{ item: "Thermal Vacuum Chamber Testing" },
|
||||||
|
{ item: "Vibration Testing" },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
];
|
||||||
---
|
---
|
||||||
|
|
||||||
<ExperienceLayout title="SpaceX - Hardware Test Engineer I/II">
|
<ExperienceLayout
|
||||||
|
title="Hardware Test Engineer I/II"
|
||||||
|
subTitles={["Space Exploration Technologies Corporation"]}
|
||||||
|
>
|
||||||
<Carousel carouselGroup={headerCarouselGroup} />
|
<Carousel carouselGroup={headerCarouselGroup} />
|
||||||
<h2 class="my-4 font-bold md:text-2xl">Summary</h2>
|
<PageGroup>
|
||||||
<h3 class="my-4 font-bold md:text-lg">Timeline</h3>
|
<Fragment slot="header"><H2>Summary</H2></Fragment>
|
||||||
<Timeline timeline={timeline} />
|
<PageGroup>
|
||||||
<h3 class="my-4 font-bold md:text-lg">Key Takeaways</h3>
|
<Fragment slot="header"><H3>Timeline</H3></Fragment>
|
||||||
<ul class="list-inside list-disc">
|
<Timeline timeline={timeline} />
|
||||||
<li>
|
</PageGroup>
|
||||||
Created test systems which validated ~4500 Starlink satellite flight
|
<PageGroup>
|
||||||
computers, and ~4000 power boards
|
<Fragment slot="header"><H3>Key Takeaways</H3></Fragment>
|
||||||
</li>
|
<Ul>
|
||||||
<li>
|
<Li
|
||||||
Developed program-critical infrastructure that enabled efficient triage,
|
>Created test systems which validated ~4500 Starlink satellite flight
|
||||||
management, and tracking of hardware failures
|
computers, and ~4000 power boards</Li
|
||||||
</li>
|
>
|
||||||
<li>
|
<Li
|
||||||
Designed and deployed automated, unified, and containerized infrastructure
|
>Developed program-critical infrastructure that enabled efficient
|
||||||
to greatly increase application reliability and development speed
|
triage, management, tracking, and metrics of hardware failures</Li
|
||||||
</li>
|
>
|
||||||
</ul>
|
<Li
|
||||||
<h3 class="my-4 font-bold md:text-lg">Skills Used</h3>
|
>Designed and deployed automated, unified, and containerized
|
||||||
<div
|
infrastructure to greatly increase application reliability and
|
||||||
class="border-caperren-green relative grid grid-flow-row gap-6 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4"
|
development speed</Li
|
||||||
>
|
>
|
||||||
<div>
|
<Li
|
||||||
<div class="text-sm font-extrabold">Software</div>
|
>Provided on-call support for on-orbit hardware,
|
||||||
<hr class="text-caperren-green" />
|
satellite-test/components-test systems, and
|
||||||
<ul class="list-inside list-disc text-sm">
|
satellite-test/components-test infrastructure</Li
|
||||||
<li>Python</li>
|
>
|
||||||
<li>Test Driven Development</li>
|
</Ul>
|
||||||
</ul>
|
</PageGroup>
|
||||||
</div>
|
<SkillMatrix categorizedSkills={categorizedSkills} />
|
||||||
<div>
|
</PageGroup>
|
||||||
<div class="text-sm font-extrabold">Electrical</div>
|
<PageGroup>
|
||||||
<hr class="text-caperren-green" />
|
<Fragment slot="header"><H2>Details</H2></Fragment>
|
||||||
</div>
|
<PageGroup>
|
||||||
<div>
|
<Fragment slot="header"><H3>Starlink Test Engineering</H3></Fragment>
|
||||||
<div class="text-sm font-extrabold">Mechanical</div>
|
<Paragraphs>
|
||||||
<hr class="text-caperren-green" />
|
<Paragraph>
|
||||||
</div>
|
Starting at SpaceX, I'd joined the hardware test engineering team for
|
||||||
<div>
|
the Starlink program in Redmond, WA. With my first day being in early
|
||||||
<div class="text-sm font-extrabold">Other</div>
|
September of 2019, the V0.9 revision satellites had only just been
|
||||||
<hr class="text-caperren-green" />
|
shot into space a few months prior. This meant my start coincided with
|
||||||
</div>
|
earnest preparations to launch V1.0, as well as ramping production to
|
||||||
</div>
|
rates previously thought impossible for space industries. My initial
|
||||||
|
task at the company was simple; offload the current hardware test
|
||||||
<h2 class="my-4 font-bold md:text-2xl">Details By Team</h2>
|
engineer for flight computer in any way possible, as he was
|
||||||
<h3 class="my-4 font-bold md:text-lg">Starlink Hardware Test</h3>
|
significantly overloaded.
|
||||||
<h3 class="my-4 font-bold md:text-lg">Build Reliability Engineering</h3>
|
</Paragraph>
|
||||||
<h3 class="my-4 font-bold md:text-lg">Components Test Infrastructure</h3>
|
<Paragraph>
|
||||||
|
I put my all into this task, immediately taking over quite a few
|
||||||
|
production code debug and improvement tasks, as well as running EMI
|
||||||
|
compliance testing, while absorbing as much as I could about the
|
||||||
|
product, its test systems, and test procedures. During this time, I
|
||||||
|
was extremely happy to have already done a <InlineLink
|
||||||
|
href="/experience/spacex/avionics-test-engineering-internship"
|
||||||
|
>test engineering internship</InlineLink
|
||||||
|
> with the company, as it made ramping up much faster and easier than it
|
||||||
|
would have been otherwise. Around three months after joining the team, ownership
|
||||||
|
of these test systems were transferred to me in their entirety. What followed
|
||||||
|
was nearly three years of the kind of intensity you'd expect out of a company
|
||||||
|
like SpaceX, but with the unique addition of higher production rates than
|
||||||
|
anywhere else in the company, or space industry.
|
||||||
|
</Paragraph>
|
||||||
|
<Paragraph>
|
||||||
|
When I say I took ownership of flight computer test systems, I mean
|
||||||
|
this in its entirety, and specifically a multi-disciplinary sense. I
|
||||||
|
handled high-level test rack designs, purchasing, test fixture
|
||||||
|
enclosure design, test fixture PCB design, test fixture firmware
|
||||||
|
development, test rack networking configuration, test rack server
|
||||||
|
configuration and tuning, DUT harness design, prototype DUT harness
|
||||||
|
fabrication, along with test software development to cover not only
|
||||||
|
production tests, but also more strenuous qualification tests which
|
||||||
|
often required their own custom rack design compared to their
|
||||||
|
production counterparts. This barely scratches the surface in reality,
|
||||||
|
and doesn't include the countless nights on the production floor,
|
||||||
|
personally running hundreds of boards through functional and
|
||||||
|
environment testing, slowly and consistently improving the quality,
|
||||||
|
rate, and coverage of the tests. It also doesn't include the whole
|
||||||
|
year where I was on-call 24/7 for a full week, every other week,
|
||||||
|
triaging on-orbit alerts for flight computer, reviewing data, and
|
||||||
|
sending commands to recover where needed.
|
||||||
|
</Paragraph>
|
||||||
|
<Paragraph>
|
||||||
|
As time progressed, I began to burn out and requested transfer to a
|
||||||
|
different product. Flight computer was a particularly intense product
|
||||||
|
due to having little to no overlap with the rest of the satellite
|
||||||
|
sub-systems, and being doubly critical functionality-wise to satellite
|
||||||
|
operation. I was given a new test system for power boards, but due to
|
||||||
|
unfortunate timing, the new owner for flight computer changed
|
||||||
|
companies and I ended up having to temporarily take over test rack
|
||||||
|
hardware design, alongside permanently handling the software for
|
||||||
|
flight computer through the end of this overall phase at SpaceX. This
|
||||||
|
turned out to be the most intense period of time at the company for
|
||||||
|
me, with some of the longest hours and latest nights that I'd rather
|
||||||
|
not share the durations of. However, as with all the time previously,
|
||||||
|
I successfully delivered multiple test system derivations for power
|
||||||
|
board, alongside all the software for multiple of the next generation
|
||||||
|
of flight computer.
|
||||||
|
</Paragraph>
|
||||||
|
</Paragraphs>
|
||||||
|
<PageGroup>
|
||||||
|
<Fragment slot="header"><H3>Build Reliability Engineering</H3></Fragment
|
||||||
|
>
|
||||||
|
<Paragraphs>
|
||||||
|
<Paragraph>
|
||||||
|
In early 2022, I decided I was going to move in with my
|
||||||
|
long-distance partner down in Oregon. SpaceX is not normally known
|
||||||
|
for allowing remote work, but I floated the idea a few months before
|
||||||
|
my August deadline for leaving, just in case. My good friend, and
|
||||||
|
head of the build reliability engineering team at the time, also
|
||||||
|
proposed a project for me to work on that would enable fast triage
|
||||||
|
and disposition of hardware failures coming out of test. I'd
|
||||||
|
previously taught him some basic web development to get a prototype
|
||||||
|
version of the app up and running, but it was fast approaching its
|
||||||
|
usability limits and needed professional support. They approved me
|
||||||
|
to work on this for three months, with the stipulation that I came
|
||||||
|
in person for one week a month. Since it was going to be short term,
|
||||||
|
I agreed and began working on this website!
|
||||||
|
</Paragraph>
|
||||||
|
<Paragraph>
|
||||||
|
This level of web development was rather new to me, at the time, as
|
||||||
|
I'd always said I'd never become a full time web developer since
|
||||||
|
before even starting college. Still, that wasn't going to stop me,
|
||||||
|
and I quickly began making improvements. One thing SpaceX had
|
||||||
|
already taught me was that development velocity was paramount, and
|
||||||
|
that there should be as little friction as possible between changes
|
||||||
|
getting made, becoming validated, and then deployed. So, I started
|
||||||
|
by creating a fully automated development/staging/production devops
|
||||||
|
environment, and moved the application to docker with a RESTful
|
||||||
|
flask backend and Bootstrap frontend. After three months were up,
|
||||||
|
they decided to let me keep working remote so long as I still came
|
||||||
|
in a week a month. For the next year and a half, this tool grew and
|
||||||
|
improved, gaining hundreds of users a day both in and out of the
|
||||||
|
reliability team. It turned out that many features of my website
|
||||||
|
ended up providing a better experience than the ones developed by
|
||||||
|
SpaceX's core applications engineering team, at least for Starlink's
|
||||||
|
use-case. This did not go unnoticed, and that team ended up reaching
|
||||||
|
out to create an equivalent, and officially supported, first-party
|
||||||
|
tool in the SpaceX application ecosystem. They even created a small
|
||||||
|
team dedicated to its creation and maintenance. This also came at a
|
||||||
|
perfect time, as I was losing my ability to keep up with my custom
|
||||||
|
website as a solo developer. Oh, and did I mentioned I'd been
|
||||||
|
supporting satellite hardware test remotely for the latter nine
|
||||||
|
months at this time, as well?
|
||||||
|
</Paragraph>
|
||||||
|
</Paragraphs>
|
||||||
|
</PageGroup>
|
||||||
|
<PageGroup>
|
||||||
|
<Fragment slot="header"><H3>Components Test Engineering</H3></Fragment>
|
||||||
|
<Paragraphs>
|
||||||
|
<Paragraph>
|
||||||
|
In March of 2024, the team lead for components test software (the
|
||||||
|
components team being the parent group of satellite hardware test by
|
||||||
|
that point) reached out and asked me if I wanted to join a small two
|
||||||
|
person infrastructure team. Considering my remote nature, this made
|
||||||
|
a lot more sense than trying to continue supporting satellite
|
||||||
|
hardware tests, and I was going to be able to provide a lot of
|
||||||
|
experience with devops infrastructure and docker that could greatly
|
||||||
|
benefit the team. I agreed, and began working on dockerization and
|
||||||
|
unification of the team's tools into a monorepo. I also began
|
||||||
|
supporting a relatively new tool for running test software that the
|
||||||
|
team was developing, along with a small slew of miscellaneous tools
|
||||||
|
such as those to image and provision servers over PXE.
|
||||||
|
</Paragraph>
|
||||||
|
<Paragraph>
|
||||||
|
After dockerizing all the infrastructure and moving them into the
|
||||||
|
monorepo, my next push was to improve velocity and reliability by
|
||||||
|
adding automated build, test, and deploy tasks for new development,
|
||||||
|
staging, and production environments across them all. I did this by
|
||||||
|
combining a unified set of Makefile interfaces, and run via ansible
|
||||||
|
for pull requests and main branch merges. Application and server
|
||||||
|
monitoring was also added via tools such as Sentry and Grafana,
|
||||||
|
which were piped into OpsGenie so the infra team could be pinged
|
||||||
|
during outages. Backups were also made of production databases
|
||||||
|
during deployments, with restore tooling that could also be used for
|
||||||
|
emulating production data during staging, developments, and local
|
||||||
|
deploys. Overall, these changes greatly improved the speed at which
|
||||||
|
the team could develop, and helped ensure that what we were
|
||||||
|
deploying was validated as thoroughly as possible in advance.
|
||||||
|
</Paragraph>
|
||||||
|
<Paragraph>
|
||||||
|
At the end of January 2025, I was notified by the company that my
|
||||||
|
remote work exception would no longer be valid as of April 4th. I
|
||||||
|
was now living in northern Washington state and close to a two hour
|
||||||
|
drive, each way, from the closest SpaceX facility. I therefore opted
|
||||||
|
to quit after roughly six years with them in total. Considering the
|
||||||
|
average is two to three years, I'd say I did quite well, all things
|
||||||
|
considered, and am very proud of what I managed to achieve with the
|
||||||
|
company in that time! If you'd like to know more, feel free to
|
||||||
|
contact me, and I'm happy to share what I'm allowed! This summary
|
||||||
|
was ultimately just the tip of the iceberg.
|
||||||
|
</Paragraph>
|
||||||
|
</Paragraphs>
|
||||||
|
</PageGroup>
|
||||||
|
</PageGroup>
|
||||||
|
</PageGroup>
|
||||||
</ExperienceLayout>
|
</ExperienceLayout>
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
---
|
---
|
||||||
import Carousel from "@components/Media/CustomCarousel/CustomCarousel.astro";
|
|
||||||
import HobbyLayout from "@layouts/HobbyLayout.astro";
|
import HobbyLayout from "@layouts/HobbyLayout.astro";
|
||||||
|
|
||||||
|
import Carousel from "@components/Media/CustomCarousel/CustomCarousel.astro";
|
||||||
|
|
||||||
import type { carouselGroup } from "@interfaces/image-carousel.ts";
|
import type { carouselGroup } from "@interfaces/image-carousel.ts";
|
||||||
|
|
||||||
import enclosure_front_pc_panel_open from "@assets/hobby/homelab/offsite-backup-rack/enclosure-front-pc-panel-open.jpg";
|
import enclosure_front_pc_panel_open from "@assets/hobby/homelab/offsite-backup-rack/enclosure-front-pc-panel-open.jpg";
|
||||||
@@ -10,6 +11,7 @@ import enclosure_left from "@assets/hobby/homelab/offsite-backup-rack/enclosure-
|
|||||||
import enclosure_rear from "@assets/hobby/homelab/offsite-backup-rack/enclosure-rear.jpg";
|
import enclosure_rear from "@assets/hobby/homelab/offsite-backup-rack/enclosure-rear.jpg";
|
||||||
import enclosure_right from "@assets/hobby/homelab/offsite-backup-rack/enclosure-right.jpg";
|
import enclosure_right from "@assets/hobby/homelab/offsite-backup-rack/enclosure-right.jpg";
|
||||||
import enclosure_with_ups from "@assets/hobby/homelab/offsite-backup-rack/enclosure-with-ups.jpg";
|
import enclosure_with_ups from "@assets/hobby/homelab/offsite-backup-rack/enclosure-with-ups.jpg";
|
||||||
|
import installed from "@assets/hobby/homelab/offsite-backup-rack/installed.jpg";
|
||||||
import power_adapter_tray_and_dc_dc from "@assets/hobby/homelab/offsite-backup-rack/power-adapter-tray-and-dc-dc.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_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";
|
||||||
@@ -20,6 +22,7 @@ import up_and_running from "@assets/hobby/homelab/offsite-backup-rack/up-and-run
|
|||||||
const headerCarouselGroup: carouselGroup = {
|
const headerCarouselGroup: carouselGroup = {
|
||||||
animation: "slide",
|
animation: "slide",
|
||||||
images: [
|
images: [
|
||||||
|
installed,
|
||||||
enclosure_front,
|
enclosure_front,
|
||||||
enclosure_front_pc_panel_open,
|
enclosure_front_pc_panel_open,
|
||||||
enclosure_left,
|
enclosure_left,
|
||||||
@@ -38,6 +41,4 @@ const headerCarouselGroup: carouselGroup = {
|
|||||||
|
|
||||||
<HobbyLayout title="Homelab - Offsite Backup Rack">
|
<HobbyLayout title="Homelab - Offsite Backup Rack">
|
||||||
<Carousel carouselGroup={headerCarouselGroup} />
|
<Carousel carouselGroup={headerCarouselGroup} />
|
||||||
|
|
||||||
<!--<h2 class="font-bold md:text-2xl my-4">Prior Homelab</h2>-->
|
|
||||||
</HobbyLayout>
|
</HobbyLayout>
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ const categorizedSkills: categorySkills[] = [
|
|||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
item: "Programming Languages",
|
item: "Programming",
|
||||||
subItems: [
|
subItems: [
|
||||||
{ item: "HTML" },
|
{ item: "HTML" },
|
||||||
{ item: "CSS" },
|
{ item: "CSS" },
|
||||||
|
|||||||
Reference in New Issue
Block a user