399 lines
17 KiB
Plaintext
399 lines
17 KiB
Plaintext
---
|
|
import ExperienceLayout from "@layouts/ExperienceLayout.astro";
|
|
|
|
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 { categorySkills } from "@interfaces/skill-matrix.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 = {
|
|
animation: "slide",
|
|
images: [starlink_headquarters_selfie, five_year_patch, starlink_patch],
|
|
};
|
|
|
|
const timeline: timelineEntry[] = [
|
|
{
|
|
event: "Started",
|
|
eventDetail: "Satellite Hardware Test Team",
|
|
date: "September 2019",
|
|
description:
|
|
"Owned test systems for four generations of Starlink flight computers and two generations of power boards",
|
|
},
|
|
{
|
|
event: "Transitioned To Remote",
|
|
eventDetail: "Moved To Oregon",
|
|
date: "August 2022",
|
|
description:
|
|
"Personal decision, but I was allowed to work on tools for the build reliability engineering team",
|
|
},
|
|
{
|
|
event: "Changed Teams",
|
|
eventDetail: "Components Test Infra Team",
|
|
date: "March 2024",
|
|
description:
|
|
"Vertical move that allowed for broader application of my skills",
|
|
},
|
|
{
|
|
event: "Finished",
|
|
eventDetail: "Thanks for all the fish!",
|
|
date: "April 2025",
|
|
description:
|
|
"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="Hardware Test Engineer I/II"
|
|
subTitles={["Space Exploration Technologies Corporation"]}
|
|
>
|
|
<Carousel carouselGroup={headerCarouselGroup} />
|
|
<PageGroup>
|
|
<Fragment slot="header"><H2>Summary</H2></Fragment>
|
|
<PageGroup>
|
|
<Fragment slot="header"><H3>Timeline</H3></Fragment>
|
|
<Timeline timeline={timeline} />
|
|
</PageGroup>
|
|
<PageGroup>
|
|
<Fragment slot="header"><H3>Key Takeaways</H3></Fragment>
|
|
<Ul>
|
|
<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, tracking, and metrics of hardware failures</Li
|
|
>
|
|
<Li
|
|
>Designed and deployed automated, unified, and containerized
|
|
infrastructure to greatly increase application reliability and
|
|
development speed</Li
|
|
>
|
|
<Li
|
|
>Provided on-call support for on-orbit hardware,
|
|
satellite-test/components-test systems, and
|
|
satellite-test/components-test infrastructure</Li
|
|
>
|
|
</Ul>
|
|
</PageGroup>
|
|
<SkillMatrix categorizedSkills={categorizedSkills} />
|
|
</PageGroup>
|
|
<PageGroup>
|
|
<Fragment slot="header"><H2>Details</H2></Fragment>
|
|
<PageGroup>
|
|
<Fragment slot="header"><H3>Starlink Test Engineering</H3></Fragment>
|
|
<Paragraphs>
|
|
<Paragraph>
|
|
Starting at SpaceX, I'd joined the hardware test engineering team for
|
|
the Starlink program in Redmond, WA. With my first day being in early
|
|
September of 2019, the V0.9 revision satellites had only just been
|
|
shot into space a few months prior. This meant my start coincided with
|
|
earnest preparations to launch V1.0, as well as ramping production to
|
|
rates previously thought impossible for space industries. My initial
|
|
task at the company was simple; offload the current hardware test
|
|
engineer for flight computer in any way possible, as he was
|
|
significantly overloaded.
|
|
</Paragraph>
|
|
<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>
|