mirror of
https://gitlab.com/MisterBiggs/Resume.git
synced 2025-08-03 03:51:35 +00:00
Compare commits
122 Commits
no-more-js
...
f483e529ff
Author | SHA1 | Date | |
---|---|---|---|
f483e529ff | |||
3cc197f222 | |||
711f1aebe4 | |||
e5d7992bce | |||
d275473d27 | |||
46c5479b6e | |||
3a35dd6229 | |||
c34806a479 | |||
0e1103132a | |||
86ef469bd2 | |||
28c9170729 | |||
e671f86730 | |||
04d4dd89e7 | |||
fe0c4625f7 | |||
7d6882fdc3 | |||
bc49f89732 | |||
8352748044 | |||
ca045fc198 | |||
9b8318ba13 | |||
03b36ce2c3 | |||
132ca2a508 | |||
6ebe9918e0 | |||
cc77010f11 | |||
a22a3c02ad | |||
abaa3a1a65 | |||
8122408d69 | |||
8b103227aa | |||
bbc01f3234 | |||
a8361204ab | |||
d2f4421581 | |||
c4c7421e08 | |||
628e4671c1 | |||
478a6fdffd | |||
e09c66132f | |||
31b9f0d5dd | |||
139aa5f8d1 | |||
330b55180e | |||
4fff053674 | |||
9e6722ba04 | |||
ab53cb3709 | |||
7f65516ac4 | |||
d575c3e0c1 | |||
fb850dbbe8 | |||
12fd90926e | |||
912fe730b8 | |||
89d589e23f | |||
10b6b8cf43 | |||
ba32084c5d | |||
1786634ab0 | |||
537dbbf061 | |||
6f8f7c4d3d | |||
d7a76bd06b | |||
b84252ae19 | |||
724a995ec6 | |||
d160920be7 | |||
1a90232d4f | |||
71e9a9d32d | |||
c9e7e021d0 | |||
f7ffedbfab | |||
ce62eb5a50 | |||
5ee8400328 | |||
ff5fc628dd | |||
2a8f68ad88 | |||
1a0817ddff | |||
82d7d557f7 | |||
695df83f6a | |||
2764b03ca8 | |||
97dbe84637 | |||
2bd587d0b2 | |||
ccb780b47e | |||
07217dd72f | |||
ac5bb6dcb3 | |||
2678aad3c2 | |||
cecdfba628 | |||
d2ee2d1a96 | |||
9fc260fb09 | |||
6b9967200a | |||
2c863b217f | |||
852c660a4d | |||
d97f63788c | |||
fb1fb853a0 | |||
a2b46935d2 | |||
d3110baf93 | |||
ea6fbb3d32 | |||
304ee8a970 | |||
523197384e | |||
94ce631956 | |||
12d6feec0a | |||
9a028b3101 | |||
39bf0d1d28 | |||
b93ff950f7 | |||
2e4ca2504c | |||
2dffd38384 | |||
fc9d43be4a | |||
a6fd94bfaf | |||
ca31b32012 | |||
cab603cdc5 | |||
e92bdd69f5 | |||
7de422af95 | |||
58aafc754f | |||
63fa2a4430 | |||
c4818ff48f | |||
e045823291 | |||
3eb8d6c385 | |||
f0b0226347 | |||
031902ded7 | |||
e1c44872b9 | |||
517f13049e | |||
5f48b2a6d6 | |||
e627b45921 | |||
4a9fa0a059 | |||
9bf6ff6008 | |||
f4038d30c8 | |||
e19ba1a25c | |||
14021829bb | |||
5adf4f9840 | |||
9780459aa7 | |||
9434a5ddae | |||
317219e36a | |||
8cf438fb6b | |||
82e31999d1 | |||
324c6a8924 |
@@ -1,10 +1,3 @@
|
||||
# Just run
|
||||
# resume serve --theme onepage
|
||||
# Then save as index.html and push to gitlab. Auto building is too much hassle right now.
|
||||
# References:
|
||||
# https://github.com/jsonresume/resume-cli
|
||||
# https://github.com/ainsleyc/jsonresume-theme-onepage
|
||||
# https://jsonresume.org/
|
||||
pages:
|
||||
stage: deploy
|
||||
script:
|
||||
|
5
.vscode/extensions.json
vendored
Normal file
5
.vscode/extensions.json
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"recommendations": [
|
||||
"esbenp.prettier-vscode"
|
||||
]
|
||||
}
|
7
.vscode/settings.json
vendored
Normal file
7
.vscode/settings.json
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"editor.formatOnSave": true,
|
||||
"[html]": {
|
||||
"editor.defaultFormatter": "esbenp.prettier-vscode",
|
||||
"editor.formatOnSaveMode": "file"
|
||||
}
|
||||
}
|
31
404.html
Normal file
31
404.html
Normal file
@@ -0,0 +1,31 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>Anson Biggs</title>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1" />
|
||||
<meta
|
||||
name="description"
|
||||
content="Anson Biggs is an Aerospace / Software Engineer working on simulation and modeling of next generation rocket flight systems."
|
||||
/>
|
||||
<link rel="stylesheet" type="text/css" href="/css/magick.css" />
|
||||
<link
|
||||
rel="icon"
|
||||
href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text y=%22.9em%22 font-size=%2290%22>🛰️</text></svg>"
|
||||
/>
|
||||
<meta charset="UTF-8" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<main>
|
||||
<header>
|
||||
<h1>You've been 404'd</h1>
|
||||
<p style="text-align: center">
|
||||
If you haven't fallen off a horse, then you haven't been ridin' long enough,</br>
|
||||
<!-- Needs to be absolute url since I redirect other subdomains here -->
|
||||
<a href="https://ansonbiggs.com/">Saddle back up</a>
|
||||
</p>
|
||||
</header>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
5
README.md
Normal file
5
README.md
Normal file
@@ -0,0 +1,5 @@
|
||||
# Anson Biggs Resume
|
||||
|
||||
My personal resume website. The main splash page is made with p5.js, and the `/resume` endpoint is my personal resume which is made in simple html/css and even includes some fancy css to make the page print nicely.
|
||||
|
||||
See it live at [ansonbiggs.com](https://ansonbiggs.com)
|
@@ -0,0 +1 @@
|
||||
ahrefs-site-verification_2b8875d8bada56bd9393eca9fc2daabe2ee862fcb81c5f63c67e73d087f70cac
|
885
css/magick.css
Normal file
885
css/magick.css
Normal file
@@ -0,0 +1,885 @@
|
||||
/*
|
||||
* Magick CSS
|
||||
* by: winterveil (https://github.com/wintermute-cell/)
|
||||
* license: MIT
|
||||
* version: 1.0.5
|
||||
*/
|
||||
|
||||
@charset "UTF-8";
|
||||
|
||||
/* Importing the fonts. */
|
||||
@import url('https://fonts.googleapis.com/css2?family=Averia+Libre:ital,wght@0,400;0,700;1,400;1,700&family=Averia+Serif+Libre:ital,wght@0,300;0,700;1,300;1,700&family=Caveat&family=Courier+Prime:ital,wght@0,400;0,700;1,400;1,700&family=Spectral:ital,wght@0,300;0,600;1,300;1,600&display=swap&family=Noto+Sans+Symbols+2&display=swap');
|
||||
|
||||
/* Simple CSS Reset */
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
:root {
|
||||
/* Theme colors */
|
||||
--fg: #0e0e0e;
|
||||
--bg: #fefefe;
|
||||
--form-bg: #fbfbfb;
|
||||
--form-fg: #00004d;
|
||||
--form-fg-placeholder: #00004d9a;
|
||||
}
|
||||
|
||||
@media (prefers-color-scheme: dark) {
|
||||
:root {
|
||||
--fg: #fefefe;
|
||||
--bg: #0e0e0e;
|
||||
--form-bg: #1a1a1a;
|
||||
--form-fg: #fefefe;
|
||||
--form-fg-placeholder: #fefefe9a;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
1) Modify the base font-size to 62.5% so that 1.6rem = 16px.
|
||||
2) Set box-sizing globally to handle padding and border widths.
|
||||
*/
|
||||
html {
|
||||
font-size: 62.5%;
|
||||
/* 1 */
|
||||
box-sizing: border-box;
|
||||
/* 2 */
|
||||
}
|
||||
|
||||
/* Use smaller sizes on mobile devices. */
|
||||
@media (max-width: 600px) {
|
||||
html {
|
||||
font-size: 56%;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
1) Set the base font-size to 18px with a normal weight.
|
||||
2) Set the text and background colors to match the theme.
|
||||
3) Use the 'Averia Serif Libre' font for the body text.
|
||||
4) Reset the counter for sidenotes.
|
||||
*/
|
||||
body {
|
||||
font-size: 1.8rem;
|
||||
/* 1 */
|
||||
background-color: var(--bg);
|
||||
/* 2 */
|
||||
color: var(--fg);
|
||||
/* 2 */
|
||||
font-family: "Averia Serif Libre", serif;
|
||||
/* 3 */
|
||||
font-style: normal;
|
||||
/* 3 */
|
||||
line-height: 2.2rem;
|
||||
/* 3 */
|
||||
font-weight: 300;
|
||||
/* 3 */
|
||||
|
||||
counter-reset: sidenote-counter;
|
||||
/* 4 */
|
||||
}
|
||||
|
||||
/*
|
||||
1) Center the main content.
|
||||
2) Set the width of the element to 760px, with lower padding on mobile devices.
|
||||
3) Relative position as the default allows for absolute positioning of child elements.
|
||||
*/
|
||||
article,
|
||||
main {
|
||||
margin: auto;
|
||||
/* 1 */
|
||||
max-width: 76rem;
|
||||
/* 2 */
|
||||
padding: 0 1rem;
|
||||
/* 2 */
|
||||
width: 100%;
|
||||
/* 2 */
|
||||
position: relative;
|
||||
/* 3 */
|
||||
}
|
||||
|
||||
@media (max-width: 600px) {
|
||||
|
||||
article,
|
||||
main {
|
||||
padding: 0 0.2rem;
|
||||
/* 2 */
|
||||
}
|
||||
}
|
||||
|
||||
/* ========================================================================================================================= */
|
||||
/* Structure & Layout ===================================================================================================== */
|
||||
/* ========================================================================================================================= */
|
||||
|
||||
/* Display the header, main, and footer sections as distinctly separate blocks. */
|
||||
header,
|
||||
section,
|
||||
footer {
|
||||
margin: 0.7rem;
|
||||
padding: 0.7rem;
|
||||
}
|
||||
|
||||
/* On mobile devices, a smaller margin looks more fitting due to the smaller view. */
|
||||
@media (max-width: 600px) {
|
||||
|
||||
header,
|
||||
section,
|
||||
footer {
|
||||
margin-top: 0.2rem;
|
||||
margin-bottom: 0.2rem;
|
||||
}
|
||||
}
|
||||
|
||||
/* Avoid double margin on the last child of each section */
|
||||
header>*:last-child,
|
||||
section>*:last-child,
|
||||
footer>*:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
/* Add large margins to the header to visually separate it from the main content. */
|
||||
header {
|
||||
margin-top: 12rem;
|
||||
margin-bottom: 8rem;
|
||||
}
|
||||
|
||||
/* On mobile devices, reduce the margin around the header to save space. */
|
||||
@media (max-width: 600px) {
|
||||
header {
|
||||
margin: 0;
|
||||
padding: 1.2rem;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
1) Center align the text in the footer.
|
||||
2) Add a margin to the top of the footer to visually separate it from the main content.
|
||||
3) Add a margin to the bottom of the footer to not have it stuck to the bottom of the page.
|
||||
*/
|
||||
footer {
|
||||
text-align: center;
|
||||
/* 1 */
|
||||
margin-top: 5rem;
|
||||
/* 2 */
|
||||
margin-bottom: 2rem;
|
||||
/* 3 */
|
||||
}
|
||||
|
||||
/* ========================================================================================================================= */
|
||||
/* Typography & Links ===================================================================================================== */
|
||||
/* ========================================================================================================================= */
|
||||
|
||||
/* Add some space between paragraphs. */
|
||||
p {
|
||||
margin: 1.6rem 0;
|
||||
/* 1 */
|
||||
}
|
||||
|
||||
/* Remove link color. */
|
||||
a {
|
||||
color: var(--fg);
|
||||
}
|
||||
|
||||
/* Make string a little more bold, to adjust for the font. */
|
||||
b,
|
||||
strong {
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
/* Make emphasized text a little larger, to adjust for the font. */
|
||||
i,
|
||||
em {
|
||||
font-size: calc(1em + 0.1rem);
|
||||
}
|
||||
|
||||
/*
|
||||
1) Set the font-family, color, and font-style for the headings.
|
||||
2) Add a margin to the top and bottom of the headings.
|
||||
*/
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4 {
|
||||
font-family: "Averia Libre", cursive;
|
||||
/* 1 */
|
||||
color: var(--fg);
|
||||
/* 1 */
|
||||
font-style: normal;
|
||||
/* 1 */
|
||||
font-weight: 600;
|
||||
/* 1 */
|
||||
margin: 1.6rem 0 1.6rem 0;
|
||||
/* 2 */
|
||||
}
|
||||
|
||||
/* h1 headings are uppercase and 2x the size of the base font. */
|
||||
h1 {
|
||||
text-transform: uppercase;
|
||||
font-size: 3.6rem;
|
||||
line-height: 3.3rem;
|
||||
}
|
||||
|
||||
/* h2 headings are uppercase and 1.250x (major third) the size of the base font. */
|
||||
h2 {
|
||||
font-size: 2.25rem;
|
||||
text-transform: uppercase;
|
||||
margin: 1.2rem 0 1.2rem 0;
|
||||
}
|
||||
|
||||
/* h3 headings are 1.125x (major second) the size of the base font. */
|
||||
h3 {
|
||||
font-size: 2.025rem;
|
||||
}
|
||||
|
||||
/* Add a decorative element before h3 headings. */
|
||||
h3:before {
|
||||
font-family: "Noto Sans Symbols 2", sans-serif;
|
||||
content: "🙛 ";
|
||||
}
|
||||
|
||||
/* h4 headings are the same size as h3 headings, but italic and without the decorative element. */
|
||||
h4 {
|
||||
font-style: italic;
|
||||
font-size: 2.025rem;
|
||||
}
|
||||
|
||||
/* A uniquely styled h1 for the header */
|
||||
header h1 {
|
||||
font-size: 4rem;
|
||||
color: var(--fg);
|
||||
text-align: center;
|
||||
padding: 4rem 0 1.2rem 0;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
/* Additional decorations for the header h1 */
|
||||
header h1:before,
|
||||
header h1:after {
|
||||
content: "✦";
|
||||
color: var(--fg);
|
||||
font-size: 1.5rem;
|
||||
vertical-align: middle;
|
||||
padding: 0 0.5rem;
|
||||
}
|
||||
|
||||
/*
|
||||
1) Remove any list symbols.
|
||||
2) Center align the nav links.
|
||||
3) Add a margin to the top of the nav links.
|
||||
4) Remove the default padding from the list.
|
||||
*/
|
||||
header nav ul {
|
||||
list-style-type: none;
|
||||
/* 1 */
|
||||
text-align: center;
|
||||
/* 2 */
|
||||
margin-top: 1.0rem;
|
||||
/* 3 */
|
||||
padding-inline-start: 0;
|
||||
/* 4 */
|
||||
}
|
||||
|
||||
/* Display the navigation links as a centered, horizontal list. */
|
||||
header nav ul li {
|
||||
display: inline;
|
||||
margin: 0 1.2rem;
|
||||
}
|
||||
|
||||
/* Remove default link styles. */
|
||||
header nav ul li a {
|
||||
text-decoration: none;
|
||||
color: var(--fg);
|
||||
}
|
||||
|
||||
/* Add a hover effect to the navigation links. */
|
||||
header nav ul li a::before {
|
||||
content: "❯ ";
|
||||
/* 1 */
|
||||
opacity: 0;
|
||||
/* 1 */
|
||||
}
|
||||
|
||||
header nav ul li a:hover::before {
|
||||
opacity: 1;
|
||||
/* 1 */
|
||||
}
|
||||
|
||||
/* ===================================================================================================================== */
|
||||
/* Lists ===================================================================================================== */
|
||||
/* ===================================================================================================================== */
|
||||
|
||||
/*
|
||||
1) Add some indentation to the list items.
|
||||
2) Add a margin to the top and bottom of the list.
|
||||
*/
|
||||
:where(main ol, main ul) {
|
||||
margin-inline-start: 0;
|
||||
/* 1 */
|
||||
padding-inline-start: 3rem;
|
||||
/* 1 */
|
||||
margin: 0.8rem 0;
|
||||
/* 2 */
|
||||
}
|
||||
|
||||
/* Add some vertical space around a definition list. */
|
||||
dl {
|
||||
margin: 0.8rem 0;
|
||||
}
|
||||
|
||||
/* Add an indent to the definition term. */
|
||||
dd {
|
||||
margin: 0 1.6rem;
|
||||
}
|
||||
|
||||
/* ===================================================================================================================== */
|
||||
/* Media ===================================================================================================== */
|
||||
/* ===================================================================================================================== */
|
||||
|
||||
/*
|
||||
1) Set the maximum width of the image to 100% so they don't overflow the main column.
|
||||
2) Set the height in respect to the width to prevent the image from stretching.
|
||||
3) Add some margin to standalone images.
|
||||
*/
|
||||
img {
|
||||
max-width: 100%;
|
||||
/* 1 */
|
||||
height: auto;
|
||||
/* 2 */
|
||||
margin: 0.8rem 0;
|
||||
/* 3 */
|
||||
}
|
||||
|
||||
/* Images in figures should not have their own margins */
|
||||
figure img {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
/*
|
||||
1) Set margins and padding for figures.
|
||||
2) Center align any text inside figures.
|
||||
*/
|
||||
figure {
|
||||
margin: 2rem 0;
|
||||
/* 1 */
|
||||
padding: 0;
|
||||
/* 1 */
|
||||
text-align: center;
|
||||
/* 2 */
|
||||
}
|
||||
|
||||
/* Center align any element that is part of a figure */
|
||||
figure * {
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
/* We don't want to center prealigned text or code in figures */
|
||||
figure code,
|
||||
figure pre {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
/* Set the typography for the figure captions */
|
||||
figcaption {
|
||||
margin: 0.8rem 0;
|
||||
font-size: 1.8rem;
|
||||
}
|
||||
|
||||
/* ===================================================================================================================== */
|
||||
/* Forms & Inputs ===================================================================================================== */
|
||||
/* ===================================================================================================================== */
|
||||
|
||||
|
||||
/*
|
||||
1) Display the form elements in a grid layout, two columns wide.
|
||||
2) Add some space between the form elements.
|
||||
3) Set padding and margin for the form.
|
||||
4) Give the form a pop out paper note look.
|
||||
*/
|
||||
form {
|
||||
display: grid;
|
||||
/* 1 */
|
||||
grid-template-columns: 1fr 1fr;
|
||||
/* 1 */
|
||||
gap: 10px;
|
||||
/* 2 */
|
||||
padding: 1rem;
|
||||
/* 3 */
|
||||
margin: 0.8rem 0;
|
||||
/* 3 */
|
||||
box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.1);
|
||||
/* 4 */
|
||||
background-color: var(--form-bg);
|
||||
/* 4 */
|
||||
}
|
||||
|
||||
/* Make form inputs and labels span two columns. (They get their own line) */
|
||||
form input[type="email"],
|
||||
form input[type="number"],
|
||||
form input[type="password"],
|
||||
form input[type="search"],
|
||||
form input[type="tel"],
|
||||
form input[type="text"],
|
||||
form input[type="url"],
|
||||
form label,
|
||||
form fieldset,
|
||||
form textarea {
|
||||
grid-column: span 2;
|
||||
}
|
||||
|
||||
/*
|
||||
1) Adjust the elements to take up full width of their grid cell.
|
||||
2) Prevent textarea from being resized horizontally and overflowing the main column.
|
||||
*/
|
||||
form input,
|
||||
form button,
|
||||
form textarea {
|
||||
width: 100%;
|
||||
/* 1 */
|
||||
resize: vertical;
|
||||
/* 2 */
|
||||
}
|
||||
|
||||
/*
|
||||
1) Prevent radio and checkbox from taking up full width, so they can be put next to each other.
|
||||
2) Add space between radio and checkbox options.
|
||||
*/
|
||||
input[type="radio"],
|
||||
input[type="checkbox"] {
|
||||
width: auto;
|
||||
/* 1 */
|
||||
margin-right: 0.5rem;
|
||||
/* 2 */
|
||||
}
|
||||
|
||||
input[type="radio"]+label,
|
||||
input[type="checkbox"]+label {
|
||||
margin-right: 2rem;
|
||||
/* 2 */
|
||||
}
|
||||
|
||||
/* Add a disabled variant for radio and checkbox inputs */
|
||||
input[type="radio"]:disabled+label,
|
||||
input[type="checkbox"]:disabled+label {
|
||||
text-decoration: line-through;
|
||||
opacity: 0.5;
|
||||
}
|
||||
|
||||
/*
|
||||
1) Remove the default appearance of the input.
|
||||
2) Set padding and margin for the input.
|
||||
3) Apply some custom styles in place of the default ones.
|
||||
4) Give the input a handwritten look.
|
||||
*/
|
||||
input[type="email"],
|
||||
input[type="number"],
|
||||
input[type="password"],
|
||||
input[type="search"],
|
||||
input[type="tel"],
|
||||
input[type="text"],
|
||||
input[type="url"],
|
||||
textarea,
|
||||
select {
|
||||
-webkit-appearance: none;
|
||||
/* 1 */
|
||||
-moz-appearance: none;
|
||||
/* 1 */
|
||||
appearance: none;
|
||||
/* 1 */
|
||||
box-shadow: none;
|
||||
/* 1 */
|
||||
box-sizing: inherit;
|
||||
/* 1 */
|
||||
border: none;
|
||||
/* 1 */
|
||||
|
||||
padding: .4rem 1rem;
|
||||
/* 2 */
|
||||
margin-bottom: 1.6rem;
|
||||
/* 2 */
|
||||
|
||||
font-size: 2rem;
|
||||
/* 3 */
|
||||
color: var(--fg);
|
||||
/* 3 */
|
||||
background-color: transparent;
|
||||
/* 3 */
|
||||
border-bottom: 1px solid var(--fg);
|
||||
/* 3 */
|
||||
border-radius: 0;
|
||||
/* 3 */
|
||||
font-size: 1.8rem;
|
||||
/* 3 */
|
||||
|
||||
font-family: "Caveat", cursive;
|
||||
/* 4 */
|
||||
font-size: 2.6rem;
|
||||
/* 4 */
|
||||
color: var(--form-fg);
|
||||
/* 4 */
|
||||
caret-color: var(--form-fg);
|
||||
/* 4 */
|
||||
}
|
||||
|
||||
/* Add disabled variant for input fields */
|
||||
input[type="email"]:disabled,
|
||||
input[type="number"]:disabled,
|
||||
input[type="password"]:disabled,
|
||||
input[type="search"]:disabled,
|
||||
input[type="tel"]:disabled,
|
||||
input[type="text"]:disabled,
|
||||
input[type="url"]:disabled,
|
||||
textarea:disabled,
|
||||
select:disabled {
|
||||
border-bottom: 1px dashed var(--fg);
|
||||
/* 3 */
|
||||
text-decoration: line-through;
|
||||
}
|
||||
|
||||
/* A slightly more transparent color for the placeholder text. */
|
||||
input::placeholder,
|
||||
textarea::placeholder {
|
||||
color: var(--form-fg-placeholder);
|
||||
}
|
||||
|
||||
/*
|
||||
1) Remove the default focus outline.
|
||||
2) Add a thicker bottom border to the input when focused, reducing margin to prevent layout shifting.
|
||||
*/
|
||||
input[type="email"]:focus,
|
||||
input[type="number"]:focus,
|
||||
input[type="password"]:focus,
|
||||
input[type="search"]:focus,
|
||||
input[type="tel"]:focus,
|
||||
input[type="text"]:focus,
|
||||
input[type="url"]:focus,
|
||||
textarea:focus,
|
||||
select:focus {
|
||||
outline: none;
|
||||
/* 1 */
|
||||
border-bottom: 2px solid var(--fg);
|
||||
/* 2 */
|
||||
margin-bottom: calc(1.6rem - 1px);
|
||||
/* 2 */
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
1) Match the theme colors.
|
||||
2) Add padding.
|
||||
3) Add a top margin to visually separate the buttons for the rest of the form.
|
||||
4) Add a thin border.
|
||||
5) Add a pointer cursor on hover.
|
||||
*/
|
||||
button,
|
||||
input[type="button"],
|
||||
input[type="reset"],
|
||||
input[type="submit"] {
|
||||
background-color: transparent;
|
||||
/* 1 */
|
||||
color: var(--fg);
|
||||
/* 1 */
|
||||
padding: 10px;
|
||||
/* 2 */
|
||||
margin-top: 1.6rem;
|
||||
/* 3 */
|
||||
border: 1px solid var(--fg);
|
||||
/* 4 */
|
||||
cursor: pointer;
|
||||
/* 5 */
|
||||
}
|
||||
|
||||
/*
|
||||
1) A thin border around the fieldset.
|
||||
2) Set the width of the fieldset to fit around the content.
|
||||
*/
|
||||
fieldset {
|
||||
border: 1px solid var(--fg);
|
||||
/* 1 */
|
||||
width: fit-content;
|
||||
/* 2 */
|
||||
}
|
||||
|
||||
/* In a form, the fieldset takes up 100% of the width. */
|
||||
form fieldset {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
/*
|
||||
1) Set the border of a disabled button to be dashed.
|
||||
2) Add the not-allowed cursor when hovering a disabled button.
|
||||
*/
|
||||
button:disabled,
|
||||
input[type="button"]:disabled,
|
||||
input[type="reset"]:disabled,
|
||||
input[type="submit"]:disabled {
|
||||
opacity: 0.5;
|
||||
border-style: dashed;
|
||||
/* 1 */
|
||||
cursor: not-allowed;
|
||||
/* 2 */
|
||||
text-decoration: line-through;
|
||||
}
|
||||
|
||||
/* ===================================================================================================================== */
|
||||
/* Tables ========================================================================================================== */
|
||||
/* ===================================================================================================================== */
|
||||
|
||||
/* Remove the distance between adjacent cells, since we don't have vertical border lines. */
|
||||
table {
|
||||
border-spacing: 0;
|
||||
}
|
||||
|
||||
/* Add some padding around table cells. */
|
||||
td,
|
||||
th {
|
||||
padding: 0.4rem 1.0rem;
|
||||
}
|
||||
|
||||
/* Remove left padding for first cell in a row. */
|
||||
td:first-child,
|
||||
th:first-child {
|
||||
padding-left: 0;
|
||||
}
|
||||
|
||||
/* Remove right padding for last cell in a row. */
|
||||
td:last-child,
|
||||
th:last-child {
|
||||
padding-right: 0;
|
||||
}
|
||||
|
||||
/*
|
||||
1) Add a border under the table header.
|
||||
2) Align the text to the left in the table header.
|
||||
*/
|
||||
th {
|
||||
border-bottom: 2px solid var(--fg);
|
||||
/* 1 */
|
||||
text-align: left;
|
||||
/* 2 */
|
||||
}
|
||||
|
||||
/* ============================================================================================================================ */
|
||||
/* Preformatting, Quotes & Code ============================================================================================ */
|
||||
/* ============================================================================================================================ */
|
||||
|
||||
/*
|
||||
1) Set custom padding and margins.
|
||||
2) Hide the vertical scroll bar.
|
||||
3) Set the width to fit just around the content, but limit it to 80% of the main column.
|
||||
4) Center the blockquote horizontally and add some vertical margins.
|
||||
*/
|
||||
blockquote {
|
||||
padding: 1rem 1.6rem;
|
||||
/* 1 */
|
||||
overflow-y: hidden;
|
||||
/* 2 */
|
||||
width: fit-content;
|
||||
/* 3 */
|
||||
max-width: 80%;
|
||||
/* 3 */
|
||||
margin: 2rem auto;
|
||||
/* 4 */
|
||||
}
|
||||
|
||||
/*
|
||||
1) Set a custom font for blockquote text paragraphs.
|
||||
2) Add some space between the paragraphs.
|
||||
*/
|
||||
blockquote p {
|
||||
font-family: "Spectral", serif;
|
||||
/* 1 */
|
||||
font-style: italic;
|
||||
/* 1 */
|
||||
font-size: 2.1rem;
|
||||
/* 1 */
|
||||
font-weight: 300;
|
||||
/* 1 */
|
||||
line-height: 2.4rem;
|
||||
/* 1 */
|
||||
margin: 2.1rem 0;
|
||||
/* 2 */
|
||||
}
|
||||
|
||||
/* Add a footer to the blockquote for citations. */
|
||||
/*
|
||||
1) Reset any margins and padding from the main footer.
|
||||
2) Set the footer to float and align to the right.
|
||||
3) Limit the width of the footer to 55% of the main column.
|
||||
4) Set a custom font for the footer.
|
||||
*/
|
||||
blockquote footer {
|
||||
margin: 0;
|
||||
/* 1 */
|
||||
padding: 0;
|
||||
/* 1 */
|
||||
float: right;
|
||||
/* 2 */
|
||||
text-align: right;
|
||||
/* 2 */
|
||||
width: 55%;
|
||||
/* 3 */
|
||||
font-family: "Spectral", serif;
|
||||
/* 4 */
|
||||
font-style: normal;
|
||||
/* 4 */
|
||||
font-size: 1.4rem;
|
||||
/* 4 */
|
||||
}
|
||||
|
||||
/* Make the actual citation italic */
|
||||
blockquote footer cite {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
/*
|
||||
1) Set custom padding.
|
||||
2) Hide the vertical scroll bar.
|
||||
3) Set a custom monospace font.
|
||||
4) Add a top and bottom border line.
|
||||
*/
|
||||
pre:has(code) {
|
||||
padding: 1rem 1.6rem;
|
||||
/* 1 */
|
||||
margin: 1.6rem 0;
|
||||
/* 1 */
|
||||
overflow-y: hidden;
|
||||
/* 2 */
|
||||
font-family: "Courier Prime", monospace;
|
||||
/* 3 */
|
||||
font-size: 1.6rem;
|
||||
/* 3 */
|
||||
border-top: 2px solid var(--fg);
|
||||
/* 4 */
|
||||
border-bottom: 2px solid var(--fg);
|
||||
/* 4 */
|
||||
}
|
||||
|
||||
/* Set a custom monospace font */
|
||||
code {
|
||||
font-family: "Courier Prime", monospace;
|
||||
font-size: 1.6rem;
|
||||
}
|
||||
|
||||
/*
|
||||
1) Float the line numbers to the left, next to the code.
|
||||
2) Make some distance between the line numbers and the code, and pull it all to the left with a negative margin.
|
||||
3) Add a vertical line to separate the line numbers from the code.
|
||||
4) Align the line numbers against the separator.
|
||||
*/
|
||||
pre .line-number {
|
||||
float: left;
|
||||
/* 1 */
|
||||
margin: 0 1.5rem 0 -1.5rem;
|
||||
/* 2 */
|
||||
border-right: 1px solid;
|
||||
/* 3 */
|
||||
text-align: right;
|
||||
/* 4 */
|
||||
}
|
||||
|
||||
/*
|
||||
1) Display as block, so we get a new line for each line number.
|
||||
2) Add some padding to the line numbers.
|
||||
*/
|
||||
pre .line-number span {
|
||||
display: block;
|
||||
/* 1 */
|
||||
padding: 0 0.8rem 0 1.6rem;
|
||||
/* 2 */
|
||||
}
|
||||
|
||||
/* ============================================================================================================================ */
|
||||
/* Sidenotes & Asides ====================================================================================================== */
|
||||
/* ============================================================================================================================ */
|
||||
|
||||
/*
|
||||
1) On mobile devices, sidenotes behave the same as asides.
|
||||
2) Float the sidenotes to the right.
|
||||
3) Make sure the sidenotes don't clash.
|
||||
4) Set the width of the sidenotes to 40% of the main column.
|
||||
5) Add padding, margins and a border for better visual separation.
|
||||
6) Adjust typography to be more compact.
|
||||
*/
|
||||
.sidenote,
|
||||
/* 1 */
|
||||
aside {
|
||||
float: right;
|
||||
/* 2 */
|
||||
clear: right;
|
||||
/* 3 */
|
||||
width: 40%;
|
||||
/* 4 */
|
||||
margin: 1rem 1rem 1rem 3rem;
|
||||
/* 5 */
|
||||
padding: 0.5rem 0.5rem 0.5rem 2rem;
|
||||
/* 5 */
|
||||
border-left: 3px solid var(--fg);
|
||||
/* 5 */
|
||||
font-size: 1.4rem;
|
||||
/* 6 */
|
||||
line-height: 1.3;
|
||||
/* 6 */
|
||||
}
|
||||
|
||||
/* Prevent double top margins */
|
||||
aside h1,
|
||||
aside h2,
|
||||
aside h3,
|
||||
aside h4 {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
/*
|
||||
1) Set the distance from the main column.
|
||||
2) Set the width of the element to a little less than the remaining space on one side, limited to 40% of the main column.
|
||||
3) Remove any values set for the mobile version of the sidenotes.
|
||||
4) Set the width to the variable defined above.
|
||||
5) Set a negative right margin to (self-width + distance-from-main) to pull the sidenote to the right.
|
||||
*/
|
||||
/* Sadly, CSS does not support var() and rem in media queries, so we have to hardcode pixels. */
|
||||
/* This will break if the main column width is changed without adjusting this media query. */
|
||||
@media (min-width: calc(760px + 400px)) {
|
||||
.sidenote {
|
||||
--distance-from-main: 3rem;
|
||||
/* 1 */
|
||||
--self-width: min(calc((100vw - 760px)/2 - (var(--distance-from-main))), 40%);
|
||||
/* 2 */
|
||||
margin: 0;
|
||||
/* 3 */
|
||||
padding: 0;
|
||||
/* 3 */
|
||||
border: none;
|
||||
/* 3 */
|
||||
width: var(--self-width);
|
||||
margin-right: calc(calc(var(--self-width) + var(--distance-from-main)) * -1);
|
||||
}
|
||||
}
|
||||
|
||||
/* Each time a sidenote anchor is encountered, increment the counter */
|
||||
.sidenote-anchor {
|
||||
counter-increment: sidenote-counter;
|
||||
}
|
||||
|
||||
/* Use a custom font for the sidenote numbers */
|
||||
.sidenote-anchor:after,
|
||||
.sidenote:before {
|
||||
font-size: 1.3rem;
|
||||
position: relative;
|
||||
font-family: "Spectral", serif;
|
||||
}
|
||||
|
||||
/* Fine-adjust the number position for the sidenote anchor */
|
||||
.sidenote-anchor:after {
|
||||
content: counter(sidenote-counter);
|
||||
top: -0.5rem;
|
||||
left: 0.1rem;
|
||||
}
|
||||
|
||||
/* Fine-adjust the number position for the sidenote */
|
||||
.sidenote:before {
|
||||
content: counter(sidenote-counter) " ";
|
||||
top: -0.5rem;
|
||||
}
|
379
css/normalize.css
vendored
Normal file
379
css/normalize.css
vendored
Normal file
@@ -0,0 +1,379 @@
|
||||
/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */
|
||||
|
||||
/* Document
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* 1. Correct the line height in all browsers.
|
||||
* 2. Prevent adjustments of font size after orientation changes in iOS.
|
||||
*/
|
||||
|
||||
html {
|
||||
line-height: 1.15;
|
||||
/* 1 */
|
||||
-webkit-text-size-adjust: 100%;
|
||||
/* 2 */
|
||||
}
|
||||
|
||||
/* Sections
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* Remove the margin in all browsers.
|
||||
*/
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Render the `main` element consistently in IE.
|
||||
*/
|
||||
|
||||
main {
|
||||
display: block;
|
||||
}
|
||||
|
||||
/**
|
||||
* Correct the font size and margin on `h1` elements within `section` and
|
||||
* `article` contexts in Chrome, Firefox, and Safari.
|
||||
*/
|
||||
|
||||
h1 {
|
||||
font-size: 2em;
|
||||
margin: 0.67em 0;
|
||||
}
|
||||
|
||||
/* Grouping content
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* 1. Add the correct box sizing in Firefox.
|
||||
* 2. Show the overflow in Edge and IE.
|
||||
*/
|
||||
|
||||
hr {
|
||||
box-sizing: content-box;
|
||||
/* 1 */
|
||||
height: 0;
|
||||
/* 1 */
|
||||
overflow: visible;
|
||||
/* 2 */
|
||||
}
|
||||
|
||||
/**
|
||||
* 1. Correct the inheritance and scaling of font size in all browsers.
|
||||
* 2. Correct the odd `em` font sizing in all browsers.
|
||||
*/
|
||||
|
||||
pre {
|
||||
font-family: monospace, monospace;
|
||||
/* 1 */
|
||||
font-size: 1em;
|
||||
/* 2 */
|
||||
}
|
||||
|
||||
/* Text-level semantics
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* Remove the gray background on active links in IE 10.
|
||||
*/
|
||||
|
||||
a {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
/**
|
||||
* 1. Remove the bottom border in Chrome 57-
|
||||
* 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
|
||||
*/
|
||||
|
||||
abbr[title] {
|
||||
border-bottom: none;
|
||||
/* 1 */
|
||||
text-decoration: underline;
|
||||
/* 2 */
|
||||
text-decoration: underline dotted;
|
||||
/* 2 */
|
||||
}
|
||||
|
||||
/**
|
||||
* Add the correct font weight in Chrome, Edge, and Safari.
|
||||
*/
|
||||
|
||||
b,
|
||||
strong {
|
||||
font-weight: bolder;
|
||||
}
|
||||
|
||||
/**
|
||||
* 1. Correct the inheritance and scaling of font size in all browsers.
|
||||
* 2. Correct the odd `em` font sizing in all browsers.
|
||||
*/
|
||||
|
||||
code,
|
||||
kbd,
|
||||
samp {
|
||||
font-family: monospace, monospace;
|
||||
/* 1 */
|
||||
font-size: 1em;
|
||||
/* 2 */
|
||||
}
|
||||
|
||||
/**
|
||||
* Add the correct font size in all browsers.
|
||||
*/
|
||||
|
||||
small {
|
||||
font-size: 80%;
|
||||
}
|
||||
|
||||
/**
|
||||
* Prevent `sub` and `sup` elements from affecting the line height in
|
||||
* all browsers.
|
||||
*/
|
||||
|
||||
sub,
|
||||
sup {
|
||||
font-size: 75%;
|
||||
line-height: 0;
|
||||
position: relative;
|
||||
vertical-align: baseline;
|
||||
}
|
||||
|
||||
sub {
|
||||
bottom: -0.25em;
|
||||
}
|
||||
|
||||
sup {
|
||||
top: -0.5em;
|
||||
}
|
||||
|
||||
/* Embedded content
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* Remove the border on images inside links in IE 10.
|
||||
*/
|
||||
|
||||
img {
|
||||
border-style: none;
|
||||
}
|
||||
|
||||
/* Forms
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* 1. Change the font styles in all browsers.
|
||||
* 2. Remove the margin in Firefox and Safari.
|
||||
*/
|
||||
|
||||
button,
|
||||
input,
|
||||
optgroup,
|
||||
select,
|
||||
textarea {
|
||||
font-family: inherit;
|
||||
/* 1 */
|
||||
font-size: 100%;
|
||||
/* 1 */
|
||||
line-height: 1.15;
|
||||
/* 1 */
|
||||
margin: 0;
|
||||
/* 2 */
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the overflow in IE.
|
||||
* 1. Show the overflow in Edge.
|
||||
*/
|
||||
|
||||
button,
|
||||
input {
|
||||
/* 1 */
|
||||
overflow: visible;
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove the inheritance of text transform in Edge, Firefox, and IE.
|
||||
* 1. Remove the inheritance of text transform in Firefox.
|
||||
*/
|
||||
|
||||
button,
|
||||
select {
|
||||
/* 1 */
|
||||
text-transform: none;
|
||||
}
|
||||
|
||||
/**
|
||||
* Correct the inability to style clickable types in iOS and Safari.
|
||||
*/
|
||||
|
||||
button,
|
||||
[type="button"],
|
||||
[type="reset"],
|
||||
[type="submit"] {
|
||||
-webkit-appearance: button;
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove the inner border and padding in Firefox.
|
||||
*/
|
||||
|
||||
button::-moz-focus-inner,
|
||||
[type="button"]::-moz-focus-inner,
|
||||
[type="reset"]::-moz-focus-inner,
|
||||
[type="submit"]::-moz-focus-inner {
|
||||
border-style: none;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Restore the focus styles unset by the previous rule.
|
||||
*/
|
||||
|
||||
button:-moz-focusring,
|
||||
[type="button"]:-moz-focusring,
|
||||
[type="reset"]:-moz-focusring,
|
||||
[type="submit"]:-moz-focusring {
|
||||
outline: 1px dotted ButtonText;
|
||||
}
|
||||
|
||||
/**
|
||||
* Correct the padding in Firefox.
|
||||
*/
|
||||
|
||||
fieldset {
|
||||
padding: 0.35em 0.75em 0.625em;
|
||||
}
|
||||
|
||||
/**
|
||||
* 1. Correct the text wrapping in Edge and IE.
|
||||
* 2. Correct the color inheritance from `fieldset` elements in IE.
|
||||
* 3. Remove the padding so developers are not caught out when they zero out
|
||||
* `fieldset` elements in all browsers.
|
||||
*/
|
||||
|
||||
legend {
|
||||
box-sizing: border-box;
|
||||
/* 1 */
|
||||
color: inherit;
|
||||
/* 2 */
|
||||
display: table;
|
||||
/* 1 */
|
||||
max-width: 100%;
|
||||
/* 1 */
|
||||
padding: 0;
|
||||
/* 3 */
|
||||
white-space: normal;
|
||||
/* 1 */
|
||||
}
|
||||
|
||||
/**
|
||||
* Add the correct vertical alignment in Chrome, Firefox, and Opera.
|
||||
*/
|
||||
|
||||
progress {
|
||||
vertical-align: baseline;
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove the default vertical scrollbar in IE 10+.
|
||||
*/
|
||||
|
||||
textarea {
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
/**
|
||||
* 1. Add the correct box sizing in IE 10.
|
||||
* 2. Remove the padding in IE 10.
|
||||
*/
|
||||
|
||||
[type="checkbox"],
|
||||
[type="radio"] {
|
||||
box-sizing: border-box;
|
||||
/* 1 */
|
||||
padding: 0;
|
||||
/* 2 */
|
||||
}
|
||||
|
||||
/**
|
||||
* Correct the cursor style of increment and decrement buttons in Chrome.
|
||||
*/
|
||||
|
||||
[type="number"]::-webkit-inner-spin-button,
|
||||
[type="number"]::-webkit-outer-spin-button {
|
||||
height: auto;
|
||||
}
|
||||
|
||||
/**
|
||||
* 1. Correct the odd appearance in Chrome and Safari.
|
||||
* 2. Correct the outline style in Safari.
|
||||
*/
|
||||
|
||||
[type="search"] {
|
||||
-webkit-appearance: textfield;
|
||||
/* 1 */
|
||||
outline-offset: -2px;
|
||||
/* 2 */
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove the inner padding in Chrome and Safari on macOS.
|
||||
*/
|
||||
|
||||
[type="search"]::-webkit-search-decoration {
|
||||
-webkit-appearance: none;
|
||||
}
|
||||
|
||||
/**
|
||||
* 1. Correct the inability to style clickable types in iOS and Safari.
|
||||
* 2. Change font properties to `inherit` in Safari.
|
||||
*/
|
||||
|
||||
::-webkit-file-upload-button {
|
||||
-webkit-appearance: button;
|
||||
/* 1 */
|
||||
font: inherit;
|
||||
/* 2 */
|
||||
}
|
||||
|
||||
/* Interactive
|
||||
========================================================================== */
|
||||
|
||||
/*
|
||||
* Add the correct display in Edge, IE 10+, and Firefox.
|
||||
*/
|
||||
|
||||
details {
|
||||
display: block;
|
||||
}
|
||||
|
||||
/*
|
||||
* Add the correct display in all browsers.
|
||||
*/
|
||||
|
||||
summary {
|
||||
display: list-item;
|
||||
}
|
||||
|
||||
/* Misc
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* Add the correct display in IE 10+.
|
||||
*/
|
||||
|
||||
template {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add the correct display in IE 10.
|
||||
*/
|
||||
|
||||
[hidden] {
|
||||
display: none;
|
||||
}
|
1
gqacdgrpasvukaeqq1xp9uf96rru5nnv.txt
Normal file
1
gqacdgrpasvukaeqq1xp9uf96rru5nnv.txt
Normal file
@@ -0,0 +1 @@
|
||||
gqacdgrpasvukaeqq1xp9uf96rru5nnv
|
216
index.html
216
index.html
@@ -1,88 +1,140 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>Anson Biggs</title>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1" />
|
||||
<meta name="description" content="Homepage for Anson" />
|
||||
<link rel="stylesheet" type="text/css" href="./css/normalize.css" />
|
||||
<link rel="stylesheet" type="text/css" href="./css/magick.css" />
|
||||
<link
|
||||
rel="icon"
|
||||
href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text y=%22.9em%22 font-size=%2290%22>🛰️</text></svg>"
|
||||
/>
|
||||
<meta charset="UTF-8" />
|
||||
|
||||
<head>
|
||||
<title>Anson Biggs</title>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1" />
|
||||
<meta name="description" content="I am an undergraduate Aerospace Engineering student with a focus on Astronautics and a minor in Computer Science
|
||||
studying at Embry-Riddle Aeronautical University in Prescott, Arizona." />
|
||||
<link rel="stylesheet" type="text/css" href="awsm.min.css" />
|
||||
<link rel="stylesheet" href="style.css">
|
||||
<link href="print.css" media="print" rel="stylesheet" />
|
||||
<link rel="icon"
|
||||
href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text y=%22.9em%22 font-size=%2290%22>🛰️</text></svg>">
|
||||
</head>
|
||||
<script src="p5/p5.min.js" defer></script>
|
||||
<script src="p5/p5.dom.min.js" defer></script>
|
||||
|
||||
<body>
|
||||
<h1>Anson Biggs</h1>
|
||||
<h3>Astronautical Engineering Undergraduate <br>
|
||||
<a href="mailto:anson@ansonbiggs.com">anson@ansonbiggs.com</a> | (480) 322-8468 | Phoenix, Arizona<br>
|
||||
<a href="https://linkedin.com/in/ansonbiggs">linkedin.com/in/ansonbiggs</a> | <a
|
||||
href="https://gitlab.com/MisterBiggs">gitlab.com/MisterBiggs</a> | <a
|
||||
href="https://ansonbiggs.com">ansonbiggs.com</a></h2>
|
||||
<h2>SUMMARY</h2>
|
||||
<p>I am an undergraduate Aerospace Engineering student with a focus on Astronautics and a minor in Computer Science
|
||||
studying at Embry-Riddle Aeronautical University in Prescott, Arizona. I have successfully led teams ranging from
|
||||
fast paced kitchen enviroments, construction of 11,000 square foot restaurants, to 40 student engineering teams. I
|
||||
also have a massive portfolio of code in dozens of languages over the course of almost a decade, many of my
|
||||
projects are used by thousands of people a month.
|
||||
</p>
|
||||
<h2>EXPERIENCE</h2>
|
||||
<h3>The Hub, Team Leader 2012-2021</h3>
|
||||
<p>Managed a team of kitchen and serving staff. <br>
|
||||
Ensured product quality according to customer specifications. <br>
|
||||
Made all documentation for managing business.</p>
|
||||
<script src="p5/mover.js" defer></script>
|
||||
<script src="p5/sketch.js" defer></script>
|
||||
|
||||
<h3>Redline Racing Division, Secretary / Business Lead 2018-2021</h3>
|
||||
<p>Make sure sub-teams can collaborate effectively. <br>
|
||||
Assist in managing the team budget. <br>
|
||||
Manage team website, marketing, and merchandise. <br>
|
||||
Ensure that teams are properly assessed, and the respective performance targets are properly monitored. <br>
|
||||
Coordinate organization relationships with sponsors and the local community.</p>
|
||||
<h3>Simple Stock Bots, <a href="https://simplestockbot.com">simplestockbot.com</a> 2018-Current</h3>
|
||||
<p>Python project that aims to provide a simple interface to the stock market on various platforms that allow bots.
|
||||
Thousands of monthly active users. Changes to its Gitlab Repository automatically update live code running in a
|
||||
Kubernetes cluster I manage.</p>
|
||||
<h2>AWARDS AND ACHIEVEMENTS</h2>
|
||||
<h3>Top 50 | Tegra K1 CUDA Vision Challenge, NVIDIA 2015</h3>
|
||||
<p>A competition which involved building a computer vision platform using a small dev board from NVIDIA which had a
|
||||
built-in GPU. My project involved implementing cameras in kitchens to ensure food was prepared properly before
|
||||
being delivered to guests.</p>
|
||||
<h3>Discord Verified Bot Developer</h3>
|
||||
<p>Discord bots and applications that are active in more than 100 servers can only be managed by a developer that
|
||||
has been verified by Discord. Several of my projects have passed this threshold.</p>
|
||||
<h2>EDUCATION</h2>
|
||||
<h3>Embry-Riddle Aeronautical University Fall 2017 - May 2022</h3>
|
||||
<p>Bachelors - Aerospace Engineering with a minor in Computer Science</p>
|
||||
<h2>SKILLS</h2>
|
||||
<ul>
|
||||
<li>Python<ul>
|
||||
<li>Numpy, Pandas, Matplotlib, SymPy, Serverless</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>Computer Aided Design<ul>
|
||||
<li>Fusion 360, CATIA, 3D Printing, Cura</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>Engineering/Technical<ul>
|
||||
<li>Julia, Rust, VHDL, VIVADO, C, C++, Linux CLI, Git Version Control, Regex</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>MATLAB<ul>
|
||||
<li>Symbolic Toolbox, Control System Toolbox, Aerospace Toolbox, Simulink, Live Script</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>Office Software<ul>
|
||||
<li>Teams, Word, Excel, PowerPoint, SharePoint, Outlook, OneNote, Publisher, Visio, Skype</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>Web Development<ul>
|
||||
<li>HTML, CSS, Javascript, Static Generation, Docker, Kubernetes, CI/CD</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<br>
|
||||
</body>
|
||||
<link
|
||||
rel="alternate"
|
||||
type="application/rss+xml"
|
||||
title="Less Technical Blog"
|
||||
href="https://notes.ansonbiggs.com/rss/"
|
||||
/>
|
||||
<link
|
||||
rel="alternate"
|
||||
type="application/rss+xml"
|
||||
title="Technical Blog"
|
||||
href="https://projects.ansonbiggs.com/index.xml"
|
||||
/>
|
||||
</head>
|
||||
|
||||
</html>
|
||||
<body>
|
||||
<main>
|
||||
<header>
|
||||
<h1>Hi, I'm Anson</h1>
|
||||
<p>
|
||||
I am an Aerospace Simulation Software Engineer with a B.S. in
|
||||
Aerospace Engineering and 3 years of professional experience writing
|
||||
software for human-rated spacecraft. My experience ranges from doing
|
||||
data science on orbital debris to enable advanced characterization
|
||||
using Rust and Julia to developing high-fidelity models for GNC
|
||||
algorithm validation of rockets in C++ to creating highly extensible
|
||||
simulation orchestrators using Docker and Python.
|
||||
</p>
|
||||
</header>
|
||||
<section>
|
||||
<h2>Connect</h2>
|
||||
<p>
|
||||
I'm available for discussions about employment opportunities,
|
||||
collaborations, or just to chat about something cool:
|
||||
</p>
|
||||
|
||||
<!--sse-->
|
||||
<ul>
|
||||
<li>
|
||||
<a href="mailto:anson@ansonbiggs.com" rel="me"
|
||||
>anson@ansonbiggs.com</a
|
||||
>
|
||||
</li>
|
||||
<li><a href="https://bsky.app/profile/ansonbiggs.com">BlueSky</a></li>
|
||||
<li><a href="https://t.me/MisterBiggs" rel="me">Telegram</a></li>
|
||||
<li>
|
||||
<a href="https://mastodon.social/@MisterBiggs" rel="me">Mastodon</a>
|
||||
</li>
|
||||
</ul>
|
||||
<!--/sse-->
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2>Personal Work</h2>
|
||||
<p>
|
||||
Explore my recent endeavors on my
|
||||
<a href="https://notes.ansonbiggs.com">Blog</a>, see what I'm building
|
||||
in public on my
|
||||
<a href="https://gitlab.com/MisterBiggs">GitLab profile</a>, and see
|
||||
technical breakdowns on my
|
||||
<a href="https://projects.ansonbiggs.com">Projects Website</a>.
|
||||
</p>
|
||||
</section>
|
||||
<footer>
|
||||
<p>
|
||||
For a comprehensive look at my professional journey, view my
|
||||
<a href="/resume">resume</a>.
|
||||
</p>
|
||||
</footer>
|
||||
</main>
|
||||
</body>
|
||||
|
||||
<!-- Cal element-click embed code begins -->
|
||||
<script type="text/javascript">
|
||||
(function (C, A, L) {
|
||||
let p = function (a, ar) {
|
||||
a.q.push(ar);
|
||||
};
|
||||
let d = C.document;
|
||||
C.Cal =
|
||||
C.Cal ||
|
||||
function () {
|
||||
let cal = C.Cal;
|
||||
let ar = arguments;
|
||||
if (!cal.loaded) {
|
||||
cal.ns = {};
|
||||
cal.q = cal.q || [];
|
||||
d.head.appendChild(d.createElement("script")).src = A;
|
||||
cal.loaded = true;
|
||||
}
|
||||
if (ar[0] === L) {
|
||||
const api = function () {
|
||||
p(api, arguments);
|
||||
};
|
||||
const namespace = ar[1];
|
||||
api.q = api.q || [];
|
||||
if (typeof namespace === "string") {
|
||||
cal.ns[namespace] = cal.ns[namespace] || api;
|
||||
p(cal.ns[namespace], ar);
|
||||
p(cal, ["initNamespace", namespace]);
|
||||
} else p(cal, ar);
|
||||
return;
|
||||
}
|
||||
p(cal, ar);
|
||||
};
|
||||
})(window, "https://app.cal.com/embed/embed.js", "init");
|
||||
Cal("init", "tagup", { origin: "https://cal.com" });
|
||||
|
||||
// Important: Please add the following attributes to the element that should trigger the calendar to open upon clicking.
|
||||
// `data-cal-link="ansonbiggs/tagup"`
|
||||
// data-cal-namespace="tagup"
|
||||
// `data-cal-config='{"layout":"month_view","theme":"dark"}'`
|
||||
|
||||
Cal.ns.tagup("ui", {
|
||||
theme: "dark",
|
||||
hideEventTypeDetails: false,
|
||||
layout: "month_view",
|
||||
});
|
||||
</script>
|
||||
</html>
|
||||
|
79
p5/mover.js
Normal file
79
p5/mover.js
Normal file
@@ -0,0 +1,79 @@
|
||||
// Gravitational Attraction
|
||||
// The Nature of Code
|
||||
// The Coding Train / Daniel Shiffman
|
||||
// https://youtu.be/EpgB3cNhKPM
|
||||
// https://thecodingtrain.com/learning/nature-of-code/2.5-gravitational-attraction.html
|
||||
// https://editor.p5js.org/codingtrain/sketches/MkLraatd
|
||||
|
||||
class Mover {
|
||||
constructor(mass, color_value) {
|
||||
this.pos = createVector(Math.random() * width, Math.random()*height);
|
||||
this.maxSpeed = 10;
|
||||
this.vel = createVector(0, 0);
|
||||
this.acc = createVector(0, 0);
|
||||
this.mass = mass;
|
||||
this.r = sqrt(this.mass) * 1;
|
||||
this.col = color(color_value);
|
||||
}
|
||||
|
||||
mouse_mass() {
|
||||
if (focused) {
|
||||
let force = p5.Vector.sub(createVector(mouseX, mouseY), this.pos);
|
||||
let distanceSq = constrain(force.magSq(), 10, 1000);
|
||||
let G = 3;
|
||||
let strength = (G * this.mass * 10) / distanceSq;
|
||||
force.setMag(strength);
|
||||
this.applyForce(force);
|
||||
|
||||
noStroke();
|
||||
fill(100, 255, 100, 100);
|
||||
ellipse(mouseX, mouseY, 30);
|
||||
}
|
||||
}
|
||||
|
||||
attract(other) {
|
||||
let force = p5.Vector.sub(this.pos, other.pos);
|
||||
let distanceSq = constrain(force.magSq(), 10, 1000);
|
||||
let G = 3;
|
||||
let strength = (G * this.mass * other.mass) / distanceSq;
|
||||
|
||||
force.setMag(strength);
|
||||
other.applyForce(force);
|
||||
}
|
||||
|
||||
applyForce(force) {
|
||||
let f = p5.Vector.div(force, this.mass);
|
||||
this.acc.add(f);
|
||||
}
|
||||
|
||||
edges() {
|
||||
if (this.pos.y >= height - this.r) {
|
||||
this.pos.y = height - this.r;
|
||||
this.vel.y *= -1;
|
||||
} else if (this.pos.y <= this.r) {
|
||||
this.pos.y = this.r;
|
||||
this.vel.y *= -1;
|
||||
}
|
||||
|
||||
if (this.pos.x >= width - this.r) {
|
||||
this.pos.x = width - this.r;
|
||||
this.vel.x *= -1;
|
||||
} else if (this.pos.x <= this.r) {
|
||||
this.pos.x = this.r;
|
||||
this.vel.x *= -1;
|
||||
}
|
||||
}
|
||||
|
||||
update() {
|
||||
this.vel.add(this.acc);
|
||||
this.vel.limit(this.maxSpeed);
|
||||
this.pos.add(this.vel);
|
||||
this.acc.set(0, 0);
|
||||
}
|
||||
|
||||
show() {
|
||||
noStroke();
|
||||
fill(this.col);
|
||||
ellipse(this.pos.x, this.pos.y, this.r * 2);
|
||||
}
|
||||
}
|
1
p5/p5.dom.min.js
vendored
Normal file
1
p5/p5.dom.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
15
p5/p5.min.js
vendored
Normal file
15
p5/p5.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
69
p5/sketch.js
Normal file
69
p5/sketch.js
Normal file
@@ -0,0 +1,69 @@
|
||||
// Gravitational Attraction
|
||||
// The Nature of Code
|
||||
// The Coding Train / Daniel Shiffman
|
||||
// https://youtu.be/EpgB3cNhKPM
|
||||
// https://thecodingtrain.com/learning/nature-of-code/2.5-gravitational-attraction.html
|
||||
// https://editor.p5js.org/codingtrain/sketches/MkLraatd
|
||||
|
||||
p5.disableFriendlyErrors = true;
|
||||
|
||||
let movers = [];
|
||||
let attractor;
|
||||
var canvas;
|
||||
|
||||
function windowResized() {
|
||||
resizeCanvas(windowWidth, windowHeight);
|
||||
}
|
||||
|
||||
function setup() {
|
||||
if (window.matchMedia("(prefers-reduced-motion: reduce)").matches) {
|
||||
console.log("Respecting reduced motion preference.");
|
||||
noLoop(); // Stops animation
|
||||
return;
|
||||
}
|
||||
|
||||
canvas = createCanvas(windowWidth, windowHeight);
|
||||
canvas.position(0, 0);
|
||||
canvas.style("z-index", "-1000");
|
||||
|
||||
const params = new URLSearchParams(window.location.search);
|
||||
|
||||
if (params.has("gay")) {
|
||||
console.log('The "gay" parameter exists in the URL.');
|
||||
movers[0] = new Mover(50, "#D12229");
|
||||
movers[1] = new Mover(50, "#F68A1E");
|
||||
movers[2] = new Mover(50, "#FDE01A");
|
||||
movers[3] = new Mover(50, "#007940");
|
||||
movers[4] = new Mover(50, "#24408E");
|
||||
movers[5] = new Mover(50, "#732982");
|
||||
} else {
|
||||
movers[0] = new Mover(50, "red");
|
||||
movers[1] = new Mover(60, "purple");
|
||||
movers[2] = new Mover(40, "blue");
|
||||
}
|
||||
|
||||
background(0);
|
||||
}
|
||||
|
||||
function draw() {
|
||||
const isDarkMode = window.matchMedia("(prefers-color-scheme: dark)").matches;
|
||||
|
||||
if (isDarkMode) {
|
||||
background(0, 25);
|
||||
} else {
|
||||
background(255, 25);
|
||||
}
|
||||
for (let mover of movers) {
|
||||
mover.mouse_mass();
|
||||
for (let other of movers) {
|
||||
if (mover !== other) {
|
||||
mover.attract(other);
|
||||
}
|
||||
}
|
||||
}
|
||||
for (let mover of movers) {
|
||||
mover.update();
|
||||
mover.edges();
|
||||
mover.show();
|
||||
}
|
||||
}
|
@@ -1,8 +0,0 @@
|
||||
body {
|
||||
margin: 0;
|
||||
font-size: x-small;
|
||||
}
|
||||
|
||||
h2::after {
|
||||
margin: 0;
|
||||
}
|
152
resume.json
152
resume.json
@@ -1,152 +0,0 @@
|
||||
{
|
||||
"basics": {
|
||||
"name": "Anson Biggs",
|
||||
"label": "Astronautical Engineering (CS Minor) Undergraduate",
|
||||
"picture": "",
|
||||
"email": "anson@ansonbiggs.com",
|
||||
"phone": "(480) 322-8468",
|
||||
"website": "anson@ansonbiggs.com",
|
||||
"summary": "I am an undergraduate Aerospace Engineering student with a focus on Astronautics and a minor in Computer Science studying at Embry-Riddle Aeronautical University in Prescott, Arizona. ",
|
||||
"location": {
|
||||
"city": "Phoenix",
|
||||
"countryCode": "US",
|
||||
"region": "Arizona"
|
||||
},
|
||||
"profiles": [
|
||||
{
|
||||
"network": "LinkedIn",
|
||||
"url": "http://linkedin.com/in/ansonbiggs"
|
||||
},
|
||||
{
|
||||
"network": "GitLab",
|
||||
"url": "http://gitlab.com/MisterBiggs"
|
||||
},
|
||||
{
|
||||
"network": "Personal Website",
|
||||
"url": "http://ansonbiggs.com"
|
||||
}
|
||||
]
|
||||
},
|
||||
"education": [
|
||||
{
|
||||
"institution": "Embry-Riddle Aeronautical University",
|
||||
"area": "Aerospace Engineering with a minor in Computer Science",
|
||||
"studyType": "Bachelor",
|
||||
"startDate": "2017-06-20",
|
||||
"endDate": "2022-05-20",
|
||||
"gpa": "2.73"
|
||||
}
|
||||
],
|
||||
"work": [
|
||||
{
|
||||
"company": "The Hub",
|
||||
"position": "Team Leader",
|
||||
"startDate": "2012-01-01",
|
||||
"endDate": "2020-07-01",
|
||||
"summary": "Managed a team of kitchen and serving staff.",
|
||||
"highlights": [
|
||||
"Ensured product quality according to customer specifications.",
|
||||
"Made all documentation for cleaning and stocking restaurant."
|
||||
]
|
||||
},
|
||||
{
|
||||
"company": "Redline Racing Division",
|
||||
"position": "Secretary / Business Lead",
|
||||
"summary": "",
|
||||
"highlights": [
|
||||
"Make sure sub-teams can collaborate effectively.",
|
||||
"Assist in managing the team budget.",
|
||||
"Manage team website, marketing, and merchandise.",
|
||||
"Ensure that teams are properly assessed, and the respective performance targets are properly monitored.",
|
||||
"Coordinate organization relationships with sponsors and the local community."
|
||||
]
|
||||
},
|
||||
{
|
||||
"company": "Simple Stock Bots",
|
||||
"position": "https://gitlab.com/simple-stock-bots",
|
||||
"summary": "Python project that aims to provide a simple interface to the stock market on various platforms that allow bots.",
|
||||
"highlights": [
|
||||
"Thousands of monthly active users."
|
||||
]
|
||||
}
|
||||
],
|
||||
"awards": [
|
||||
{
|
||||
"title": "Top 50 | Tegra® K1 CUDA® Vision Challenge",
|
||||
"date": "2015-09-01",
|
||||
"awarder": "NVIDIA",
|
||||
"summary": "A competition which involved building a computer vision platform using a small dev board from NVIDIA which had a built-in GPU."
|
||||
}
|
||||
],
|
||||
"skills": [
|
||||
{
|
||||
"name": "Python",
|
||||
"keywords": [
|
||||
"Numpy",
|
||||
"Pandas",
|
||||
"Matplotlib",
|
||||
"SymPy",
|
||||
"Serverless"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Computer Aided Design",
|
||||
"keywords": [
|
||||
"Fusion 360",
|
||||
"CATIA",
|
||||
"3D Printing",
|
||||
"Cura"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Engineering/Technical",
|
||||
"keywords": [
|
||||
"Rust",
|
||||
"Julia",
|
||||
"VHDL",
|
||||
"VIVADO",
|
||||
"C",
|
||||
"C++",
|
||||
"Linux CLI",
|
||||
"Git Version Control",
|
||||
"Docker",
|
||||
"Kubernetes",
|
||||
"CI/CD",
|
||||
"Regex"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "MATLAB",
|
||||
"keywords": [
|
||||
"Symbolic Toolbox",
|
||||
"Control System Toolbox",
|
||||
"Aerospace Toolbox",
|
||||
"Simulink",
|
||||
"Live Script"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Office Software",
|
||||
"keywords": [
|
||||
"Teams",
|
||||
"Word",
|
||||
"Excel",
|
||||
"PowerPoint",
|
||||
"SharePoint",
|
||||
"Outlook",
|
||||
"OneNote",
|
||||
"Publisher",
|
||||
"Visio",
|
||||
"Skype"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Web Development",
|
||||
"keywords": [
|
||||
"HTML",
|
||||
"CSS",
|
||||
"Javascript"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
0
awsm.min.css → resume/css/awsm.min.css
vendored
0
awsm.min.css → resume/css/awsm.min.css
vendored
56
resume/css/print.css
Normal file
56
resume/css/print.css
Normal file
@@ -0,0 +1,56 @@
|
||||
body {
|
||||
padding-top: 0;
|
||||
padding-bottom: 0;
|
||||
font-size: x-small;
|
||||
}
|
||||
|
||||
p {
|
||||
font-size: small;
|
||||
}
|
||||
|
||||
dd {
|
||||
margin-bottom: 0;
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
dt {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
ul {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
li {
|
||||
margin-top: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
h1 {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
h2 {
|
||||
padding-top: 0;
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
#noprint {
|
||||
display: none;
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
#printbutton {
|
||||
display: none;
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
/* #onlyprint {
|
||||
display: block;
|
||||
visibility: visible;
|
||||
} */
|
||||
#onlyprint {
|
||||
display: none;
|
||||
visibility: hidden;
|
||||
}
|
120
resume/css/style.css
Normal file
120
resume/css/style.css
Normal file
@@ -0,0 +1,120 @@
|
||||
h2 {
|
||||
text-transform: uppercase;
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
h2:after {
|
||||
content: " ";
|
||||
display: block;
|
||||
margin: 1px auto 1px;
|
||||
border: 2px solid #d0d0d0;
|
||||
border-radius: 4px;
|
||||
-webkit-border-radius: 4px;
|
||||
-moz-border-radius: 4px;
|
||||
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
|
||||
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
|
||||
-moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
|
||||
}
|
||||
|
||||
p {
|
||||
font-size: medium;
|
||||
/* margin-left: 1em; */
|
||||
}
|
||||
|
||||
body {
|
||||
max-width: 1000px;
|
||||
/* margin: auto 15% 5em 10%; */
|
||||
margin: auto;
|
||||
padding-left: 2em;
|
||||
padding-right: 2em;
|
||||
padding-bottom: 5em;
|
||||
}
|
||||
h1 {
|
||||
margin-top: 10px;
|
||||
}
|
||||
a:visited {
|
||||
color: cornflowerblue;
|
||||
}
|
||||
|
||||
dl {
|
||||
margin-top: .5em;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
dd {
|
||||
padding-left: 1.2em;
|
||||
padding-top: 0;
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
padding-left: 0;
|
||||
}
|
||||
dd > ul {
|
||||
text-indent: -.2em;
|
||||
margin-left: 1em;
|
||||
padding-left: 0;
|
||||
}
|
||||
|
||||
article {
|
||||
border-radius: 20px;
|
||||
background-color: whitesmoke;
|
||||
width: 50%;
|
||||
min-width: 350px;
|
||||
box-shadow: 10px 10px 27px 5px rgba(0, 0, 0, 0.3);
|
||||
}
|
||||
|
||||
article > a {
|
||||
color: black;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
article > a:hover {
|
||||
color: black;
|
||||
}
|
||||
|
||||
article > a:visited {
|
||||
color: black;
|
||||
}
|
||||
|
||||
article > a > img {
|
||||
width: 100%;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
border-radius: 20px 20px 0px 0px;
|
||||
}
|
||||
|
||||
article > a > h3 {
|
||||
text-align: center;
|
||||
text-decoration: none;
|
||||
margin: auto 0.25em 0.25em 0.25em;
|
||||
padding-top: 1.25em;
|
||||
}
|
||||
|
||||
article > a > p {
|
||||
padding: 0 0.25em 1em 0.25em;
|
||||
}
|
||||
|
||||
#printbutton {
|
||||
font-size: 150%;
|
||||
margin: 1.5em;
|
||||
position: fixed;
|
||||
bottom: 0;
|
||||
right: 0;
|
||||
z-index: 100;
|
||||
background-color: lightskyblue;
|
||||
animation: pulse-animation 10s infinite;
|
||||
}
|
||||
|
||||
@keyframes pulse-animation {
|
||||
0% {
|
||||
box-shadow: 0 0 0 0px rgba(0, 0, 0, 0.2);
|
||||
}
|
||||
20%,
|
||||
100% {
|
||||
box-shadow: 0 0 0 20px rgba(0, 0, 0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
#onlyprint {
|
||||
visibility: hidden;
|
||||
display: none;
|
||||
}
|
270
resume/index.html
Normal file
270
resume/index.html
Normal file
@@ -0,0 +1,270 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>Anson Biggs | Resume</title>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1" />
|
||||
<meta
|
||||
name="description"
|
||||
content="Resume for Anson Biggs, Aerospace Simulation Software Engineer"
|
||||
/>
|
||||
<link rel="stylesheet" type="text/css" href="./css/awsm.min.css" />
|
||||
<link rel="stylesheet" type="text/css" href="./css/style.css" />
|
||||
<link
|
||||
rel="stylesheet"
|
||||
type="text/css"
|
||||
media="print"
|
||||
href="./css/print.css"
|
||||
/>
|
||||
<link
|
||||
rel="icon"
|
||||
href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text y=%22.9em%22 font-size=%2290%22>🛰️</text></svg>"
|
||||
/>
|
||||
<link
|
||||
rel="alternate"
|
||||
type="application/rss+xml"
|
||||
title="Less Technical Blog"
|
||||
href="https://notes.ansonbiggs.com/rss/"
|
||||
/>
|
||||
<link
|
||||
rel="alternate"
|
||||
type="application/rss+xml"
|
||||
title="Technical Blog"
|
||||
href="https://projects.ansonbiggs.com/index.xml"
|
||||
/>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<button id="printbutton" onclick="window.print()">
|
||||
Save Resume as PDF
|
||||
</button>
|
||||
<div style="text-align: center">
|
||||
<h1>Anson Biggs</h1>
|
||||
<h3 style="margin-top: 0">
|
||||
Aerospace Simulation Software Engineer
|
||||
<!--sse-->
|
||||
<br />
|
||||
<a href="mailto:anson@ansonbiggs.com" rel="me">anson@ansonbiggs.com</a>
|
||||
| <a href="tel:+14803228468">(480) 322-8468</a> |
|
||||
<a href="https://linkedin.com/in/ansonbiggs/" rel="me"
|
||||
>linkedin.com/in/ansonbiggs</a
|
||||
>
|
||||
<br />
|
||||
<a href="https://gitlab.com/MisterBiggs/" rel="me"
|
||||
>gitlab.com/MisterBiggs</a
|
||||
>
|
||||
|
|
||||
<a href="https://ansonbiggs.com" rel="me">ansonbiggs.com</a>
|
||||
<div
|
||||
class="h-card"
|
||||
style="visibility: hidden; position: absolute; top: -999999px"
|
||||
>
|
||||
<span class="p-name">Anson Biggs</span>
|
||||
<span class="p-given-name">Anson</span>
|
||||
<span class="p-family-name">Biggs</span>
|
||||
<a class="u-url" href="https://ansonbiggs.com"></a>,
|
||||
<a class="u-email" href="mailto:anson@ansonbiggs.com"></a>
|
||||
<abbr class="p-region" title="Colorado">CO</abbr>
|
||||
<div class="p-country-name">U.S.A</div>
|
||||
<div class="p-category">engineer</div>
|
||||
<div class="p-note">Aerospace Simulation Software Engineer</div>
|
||||
</div>
|
||||
<!--/sse-->
|
||||
</h3>
|
||||
</div>
|
||||
<p style="text-align: justify; margin-left: 2em; margin-right: 2em">
|
||||
Aerospace Simulation Software Engineer with a strong foundation in both
|
||||
aerospace engineering and modern software development. Experience ranging
|
||||
from high-fidelity simulation models in C++, high-performance ETL
|
||||
pipelines of aerospace data in Python, and managing development
|
||||
environments for 100 engineers. <br />Eligible for security clearance.
|
||||
</p>
|
||||
<h2>PROFESSIONAL EXPERIENCE</h2>
|
||||
<dl>
|
||||
<dt>
|
||||
Aerospace Applications Software Engineer | Blue Origin | Denver, CO |
|
||||
June 2023 - April 2025
|
||||
</dt>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>
|
||||
Founding simulation software engineer to build a human-rated Lunar
|
||||
lander in support of NASA's Lunar program.
|
||||
</li>
|
||||
<li>
|
||||
Maintained Python based post-processing pipeline for spacecraft
|
||||
data, including custom Docker monitoring with PyArrow, modifying
|
||||
proprietary NASA software, data transformation with Pandas, and
|
||||
archiving data in HDF5.
|
||||
</li>
|
||||
<li>
|
||||
Developed hardware mocking capabilities using C++ that enabled an
|
||||
entirely software simulation environment. Built a hardware-agnostic
|
||||
interface that enabled mocking without directly interacting with
|
||||
simulation or hardware protocols.
|
||||
</li>
|
||||
<li>
|
||||
Developed bespoke test case document management software in Python
|
||||
for writing, publishing, and tracking. Identified major blockers for
|
||||
a customer team, and worked independently on a prototype with a
|
||||
strong emphasis on completely automated tooling to streamline test
|
||||
case development. Final product led to an immediate 10x increase in
|
||||
productivity for the 20 person team.
|
||||
</li>
|
||||
<li>
|
||||
Owned development environment for the 150 person flight software
|
||||
team. Consistently pushed for modern tooling and evolved workflows
|
||||
to meet demands of a growing team. Worked with stakeholders to
|
||||
ensure compliance with DO-178 while maintaining cutting edge
|
||||
tooling.
|
||||
</li>
|
||||
<li>
|
||||
Worked within customer teams to ensure simulation software
|
||||
capabilities met testing requirements. Proactively developed
|
||||
features to eliminate critical roadblocks in the verification
|
||||
process, and provided technical guidance.
|
||||
</li>
|
||||
<li>
|
||||
Developed custom software on top of Pytest that generated GitLab CI
|
||||
jobs using Python decorators. Allowed hundreds of automated tests to
|
||||
remain active while keeping pipelines short and runner usage to a
|
||||
minimum. Tests would be given a decorator that listed software
|
||||
dependencies, and a child pipeline would be generated that only
|
||||
included necessary tests. Reduced runner utilization by 50%.
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt>
|
||||
Simulation Software Engineer, Advanced Programs | United Launch Alliance
|
||||
| Denver, CO | May 2022 - June 2023
|
||||
</dt>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>
|
||||
Architected and delivered one of the company's major accomplishments
|
||||
of 2022. The first high-fidelity C++ simulation model for the next
|
||||
generation Vulcan-Centaur rocket.
|
||||
</li>
|
||||
<li>
|
||||
Modernized a legacy monolithic codebase from the 1980s by replacing
|
||||
~700k lines of unmaintainable FORTRAN with compiled artifacts stored
|
||||
in Artifactory and deployed using Bamboo CI. This reduced
|
||||
compilation time from over 12 hours to 4 hours, making an overnight
|
||||
task achievable during the workday.
|
||||
</li>
|
||||
<li>
|
||||
Introduced the team to automated tooling locally and added pipeline
|
||||
checks to merge requests. By automating formatting and linting the
|
||||
team was able to focus on implementation instead of code style.
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<h2>PROJECT LEADERSHIP</h2>
|
||||
<dl>
|
||||
<dt>
|
||||
Undergraduate Research Lead | Orbital Debris Classification | Prescott,
|
||||
AZ | 2021
|
||||
</dt>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>
|
||||
Led research applying machine learning to high-resolution 3D scans
|
||||
of satellite impact debris, developing an innovative Orbital Debris
|
||||
model in collaboration with the Dean of Engineering, University
|
||||
Research Institute and NASA.
|
||||
</li>
|
||||
<li>
|
||||
Developed algorithms in Rust to take point clouds from hi-res 3D
|
||||
scanners and convert them into solid body meshes to compute physical
|
||||
characteristics of debris fragments.
|
||||
</li>
|
||||
<li>
|
||||
Implemented advanced dimensionality reduction techniques in Julia
|
||||
that improved classification accuracy and speed by magnitudes over
|
||||
MATLAB.
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
<dt>
|
||||
Founder & Lead Developer | Simple Stock Bots | Phoenix, AZ | 2018 - 2024
|
||||
</dt>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>
|
||||
Developed a stock market bot in Python that delivered real-time data
|
||||
and analysis to 20k monthly active users.
|
||||
</li>
|
||||
<li>
|
||||
Managed paid client feature requests with broader platform
|
||||
improvements to maintain a sustainable business model while keeping
|
||||
the product entirely free for over 99% of users.
|
||||
</li>
|
||||
<li>
|
||||
Managed a Kubernetes cluster that handled all CI/CD builds and
|
||||
deployments, and load balancing to handle the inconsistent peak
|
||||
loads that comes with stock market activity.
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
<dt>
|
||||
Technical Lead | Capstone: Spacecraft Detail Design | Prescott, AZ |
|
||||
2021
|
||||
</dt>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>
|
||||
Developed a fully dynamic 6-DOF simulation of a rocket landing in
|
||||
Simulink to design and verify control system before moving to
|
||||
hardware demonstration.
|
||||
</li>
|
||||
<li>
|
||||
Demonstrated design with test stand using a real thrust vector
|
||||
control mechanism and a solid rocket motor. Rewrote simulation
|
||||
environment in C++ to run on test stand hardware.
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<h2>EDUCATION AND SKILLS</h2>
|
||||
<dl>
|
||||
<dt>
|
||||
B.S. Aerospace Engineering | Embry-Riddle Aeronautical University |
|
||||
Prescott, AZ | May 2022
|
||||
</dt>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>
|
||||
Bachelor of Science in Aerospace Engineering (Astronautics
|
||||
Concentration) with a minor in Computer Science
|
||||
</li>
|
||||
<li>
|
||||
1 Year Data Science Directed Study | Summer Study Abroad for
|
||||
Mathematics in Iceland
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
<dd>
|
||||
<strong>Languages:</strong> Python, C++, Julia, Rust, MATLAB, Simulink,
|
||||
FORTRAN, LaTeX, Regex, JavaScript
|
||||
</dd>
|
||||
<dd style="padding-left: 1em">
|
||||
<strong>Libraries:</strong> Pytest, Plotly, NumPy, Pandas, Matplotlib,
|
||||
Makie, Jupyter, SymPy, UV, Pip, Requests, Eigen, Boost, MkDocs, Ruff,
|
||||
Black, flake8, FastAPI
|
||||
</dd>
|
||||
<dd>
|
||||
<strong>Simulation/Aerospace:</strong> NASA Trick, 6-DOF Dynamics,
|
||||
Hardware/Software in the Loop, Control Systems, GNC Algorithms, Space
|
||||
Mechanics, Communication Links, DDS, MQTT
|
||||
</dd>
|
||||
<dd>
|
||||
<strong>DevOps/Tools:</strong> Linux, WSL, Docker Compose, Development
|
||||
Containers, Kubernetes, Serverless, GitLab CI/CD, DataDog, Jira,
|
||||
Markdown, Mermaid, PlantUML
|
||||
</dd>
|
||||
</dl>
|
||||
</body>
|
||||
</html>
|
25
style.css
25
style.css
@@ -1,25 +0,0 @@
|
||||
h2:after {
|
||||
content: " ";
|
||||
display: block;
|
||||
margin: 5px auto 5px;
|
||||
border: 2px solid #d0d0d0;
|
||||
border-radius: 4px;
|
||||
-webkit-border-radius: 4px;
|
||||
-moz-border-radius: 4px;
|
||||
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
|
||||
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
|
||||
-moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
|
||||
}
|
||||
|
||||
body > ul > li > ul > li {
|
||||
font-weight: 100;
|
||||
}
|
||||
|
||||
p {
|
||||
font-size: medium;
|
||||
margin-left: 1em;
|
||||
}
|
||||
|
||||
body {
|
||||
margin: auto 15% auto 10%;
|
||||
}
|
Reference in New Issue
Block a user