Merge pull request #26 from asimonson1125/home-about-redo
Home about redo
@@ -10,8 +10,8 @@ books = json.load(open("./static/json/books.json", "r"))
|
|||||||
skillList = json.load(open("./static/json/skills.json", "r"))
|
skillList = json.load(open("./static/json/skills.json", "r"))
|
||||||
timeline = json.load(open("./static/json/timeline.json", "r"))
|
timeline = json.load(open("./static/json/timeline.json", "r"))
|
||||||
pages = json.load(open("./static/json/pages.json", "r"))
|
pages = json.load(open("./static/json/pages.json", "r"))
|
||||||
pages['about']['skillList'] = skillList
|
pages['home']['skillList'] = skillList
|
||||||
pages['about']['timeline'] = timeline
|
# pages['about']['timeline'] = timeline
|
||||||
pages['projects']['projects'] = proj
|
pages['projects']['projects'] = proj
|
||||||
pages['home']['books'] = books
|
pages['home']['books'] = books
|
||||||
pages['books']['books'] = books
|
pages['books']['books'] = books
|
||||||
|
|||||||
@@ -26,8 +26,6 @@ html, body {
|
|||||||
|
|
||||||
body {
|
body {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
/* background-image: url('../photos/plexus.jpg'); */
|
|
||||||
/*url('https://i.pinimg.com/originals/d6/c3/ac/d6c3ac09021dbc0cda8ee27837d2c795.png')*/
|
|
||||||
background-attachment: fixed;
|
background-attachment: fixed;
|
||||||
background-size: 100% auto;
|
background-size: 100% auto;
|
||||||
background-clip: border-box;
|
background-clip: border-box;
|
||||||
@@ -81,17 +79,11 @@ body {
|
|||||||
filter: brightness(50%);
|
filter: brightness(50%);
|
||||||
}
|
}
|
||||||
|
|
||||||
h1, h2 {
|
h1 {
|
||||||
color: #ecebeb;
|
color: #ecebeb;
|
||||||
}
|
}
|
||||||
|
|
||||||
h2 {
|
h2, h3, h4, h5 {
|
||||||
font-size: 2rem;
|
|
||||||
margin-top: 1rem;
|
|
||||||
margin-bottom: 2rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
h3, h4, h5 {
|
|
||||||
color: #a8a8a8;
|
color: #a8a8a8;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -136,7 +128,7 @@ a {
|
|||||||
background-color: #1a1a1a;
|
background-color: #1a1a1a;
|
||||||
width: 100vw;
|
width: 100vw;
|
||||||
z-index: 99;
|
z-index: 99;
|
||||||
position: fixed;
|
position: sticky;
|
||||||
top: 0;
|
top: 0;
|
||||||
left: 0;
|
left: 0;
|
||||||
transition: .4s;
|
transition: .4s;
|
||||||
@@ -152,6 +144,7 @@ a {
|
|||||||
|
|
||||||
#homeName {
|
#homeName {
|
||||||
margin-top: .25em;
|
margin-top: .25em;
|
||||||
|
margin-bottom: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#name-container {
|
#name-container {
|
||||||
@@ -259,7 +252,6 @@ a {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.foregroundContent {
|
.foregroundContent {
|
||||||
padding-top: 4rem;
|
|
||||||
padding-left: 8rem;
|
padding-left: 8rem;
|
||||||
max-width: calc(100%-8rem);
|
max-width: calc(100%-8rem);
|
||||||
padding-bottom: 1rem;
|
padding-bottom: 1rem;
|
||||||
@@ -275,7 +267,7 @@ a {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.homegroundContent {
|
.homegroundContent {
|
||||||
padding-top: 5em;
|
padding-top: 1em;
|
||||||
padding-left: 0em;
|
padding-left: 0em;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -315,18 +307,18 @@ a {
|
|||||||
|
|
||||||
#nametag {
|
#nametag {
|
||||||
padding: 2em 3em;
|
padding: 2em 3em;
|
||||||
display: inline-block;
|
|
||||||
background-color: rgb(44, 44, 44, .75);
|
background-color: rgb(44, 44, 44, .75);
|
||||||
border-radius: 1em;
|
|
||||||
border: solid black 4px;
|
|
||||||
text-align: center;
|
text-align: center;
|
||||||
max-width: 30em;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#nametag *:not(h1) {
|
#nametag *:not(h1) {
|
||||||
text-shadow: .1em .1em rgba(255, 255, 255, 0.2);
|
text-shadow: .1em .1em rgba(255, 255, 255, 0.2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#nametag h2{
|
||||||
|
font-size: medium;
|
||||||
|
}
|
||||||
|
|
||||||
#nametag p {
|
#nametag p {
|
||||||
text-shadow: none;
|
text-shadow: none;
|
||||||
color: #a8a8a8;
|
color: #a8a8a8;
|
||||||
@@ -351,6 +343,14 @@ a {
|
|||||||
justify-content: space-around;
|
justify-content: space-around;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.equalitems {
|
||||||
|
column-gap: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.equalitems > * {
|
||||||
|
flex: 1 1 0;
|
||||||
|
}
|
||||||
|
|
||||||
.vFlex {
|
.vFlex {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
@@ -362,6 +362,10 @@ a {
|
|||||||
max-width: 100%;
|
max-width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#aboutCards > * {
|
||||||
|
margin: .25em;
|
||||||
|
}
|
||||||
|
|
||||||
.spaceBetween {
|
.spaceBetween {
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
}
|
}
|
||||||
@@ -370,6 +374,11 @@ a {
|
|||||||
justify-content: left;
|
justify-content: left;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.hSpacer {
|
||||||
|
width: 2em;
|
||||||
|
height: 0;
|
||||||
|
}
|
||||||
|
|
||||||
.relative {
|
.relative {
|
||||||
position: relative;
|
position: relative;
|
||||||
}
|
}
|
||||||
@@ -588,6 +597,12 @@ a {
|
|||||||
left: 0;
|
left: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#contentStuffer {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
min-height: 100vh;
|
||||||
|
}
|
||||||
|
|
||||||
.socials {
|
.socials {
|
||||||
margin-left: 1rem;
|
margin-left: 1rem;
|
||||||
width: 0px;
|
width: 0px;
|
||||||
@@ -664,6 +679,26 @@ a {
|
|||||||
background-size: cover;
|
background-size: cover;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#desktopSpacer {
|
||||||
|
height: min(20em, 30vh);
|
||||||
|
}
|
||||||
|
|
||||||
|
.homeSubContent {
|
||||||
|
background-color: rgb(24, 24, 24, .85);
|
||||||
|
padding: 0 8em;
|
||||||
|
padding-top: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#homeProjects {
|
||||||
|
padding: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.homeProject {
|
||||||
|
width: 20em;
|
||||||
|
height:5em;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
.heightBox {
|
.heightBox {
|
||||||
height: 100%;
|
height: 100%;
|
||||||
display: flex;
|
display: flex;
|
||||||
@@ -674,9 +709,6 @@ a {
|
|||||||
.chess {
|
.chess {
|
||||||
max-width: 300px;
|
max-width: 300px;
|
||||||
border: none;
|
border: none;
|
||||||
overflow: scroll;
|
|
||||||
/* transform: scale(.8);
|
|
||||||
float: right; */
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#chessProfile {
|
#chessProfile {
|
||||||
@@ -971,6 +1003,22 @@ a {
|
|||||||
border-bottom: solid 3px rgb(156, 49, 45, .4);
|
border-bottom: solid 3px rgb(156, 49, 45, .4);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.footer {
|
||||||
|
position: unset;
|
||||||
|
}
|
||||||
|
|
||||||
|
#footerSpacer {
|
||||||
|
flex-grow: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
#aboutCards {
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
|
||||||
|
#aboutCards > * {
|
||||||
|
margin: .25em auto;
|
||||||
|
}
|
||||||
|
|
||||||
.header h1 {
|
.header h1 {
|
||||||
font-size: 1.5rem;
|
font-size: 1.5rem;
|
||||||
}
|
}
|
||||||
@@ -993,6 +1041,10 @@ a {
|
|||||||
margin: 0;
|
margin: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.vertOnMobile {
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
|
||||||
.projectList {
|
.projectList {
|
||||||
width: 95%;
|
width: 95%;
|
||||||
}
|
}
|
||||||
@@ -1017,6 +1069,10 @@ a {
|
|||||||
padding-top: 5em;
|
padding-top: 5em;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.homeSubContent {
|
||||||
|
padding: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
.onRight {
|
.onRight {
|
||||||
margin: unset;
|
margin: unset;
|
||||||
margin-top: 3rem;
|
margin-top: 3rem;
|
||||||
|
|||||||
@@ -1,35 +1,8 @@
|
|||||||
window.onload = function () {
|
function toggleMenu(collapse=false) {
|
||||||
onLoaded();
|
|
||||||
};
|
|
||||||
function onLoaded() {
|
|
||||||
window.onresize = function () {
|
|
||||||
resizer();
|
|
||||||
};
|
|
||||||
resizer();
|
|
||||||
}
|
|
||||||
|
|
||||||
function resizer() {
|
|
||||||
const e = document.querySelector(".navControl");
|
|
||||||
if (window.innerWidth > 1400) {
|
|
||||||
// desktop view
|
|
||||||
e.style.maxHeight = `${e.scrollHeight + 10}px`;
|
|
||||||
} else {
|
|
||||||
// mobile view
|
|
||||||
document.querySelector(".header").style.borderBottomWidth = "3px";
|
|
||||||
e.style.maxHeight = "0px";
|
|
||||||
document.querySelectorAll(".navElement *").forEach((x) => {
|
|
||||||
x.style.paddingTop = ".3rem";
|
|
||||||
x.style.paddingBottom = ".3rem";
|
|
||||||
x.style.fontSize = "1rem";
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function toggleMenu() {
|
|
||||||
if (window.innerWidth < 1400) {
|
if (window.innerWidth < 1400) {
|
||||||
const e = document.querySelector(".navControl");
|
const e = document.querySelector(".navControl");
|
||||||
const bar = document.querySelector(".header");
|
const bar = document.querySelector(".header");
|
||||||
if (e.style.maxHeight === "0px") {
|
if (e.style.maxHeight === "0px" && !collapse) {
|
||||||
e.style.maxHeight = `${e.scrollHeight + 10}px`;
|
e.style.maxHeight = `${e.scrollHeight + 10}px`;
|
||||||
bar.style.borderBottomWidth = "0px";
|
bar.style.borderBottomWidth = "0px";
|
||||||
} else {
|
} else {
|
||||||
@@ -39,7 +12,7 @@ function toggleMenu() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async function goto(location, { push = true, toggle = true } = {}) {
|
async function goto(location, { push = true } = {}) {
|
||||||
let a = await fetch("/api/goto/" + location, {
|
let a = await fetch("/api/goto/" + location, {
|
||||||
credentials: "include",
|
credentials: "include",
|
||||||
method: "GET",
|
method: "GET",
|
||||||
@@ -56,9 +29,7 @@ async function goto(location, { push = true, toggle = true } = {}) {
|
|||||||
root.querySelectorAll("script").forEach((x) => {
|
root.querySelectorAll("script").forEach((x) => {
|
||||||
eval(x.innerHTML);
|
eval(x.innerHTML);
|
||||||
});
|
});
|
||||||
if (toggle) {
|
toggleMenu(collapse=true);
|
||||||
toggleMenu();
|
|
||||||
}
|
|
||||||
document.querySelector("title").textContent = metadata["title"];
|
document.querySelector("title").textContent = metadata["title"];
|
||||||
if (push) {
|
if (push) {
|
||||||
history.pushState(null, null, metadata["canonical"]);
|
history.pushState(null, null, metadata["canonical"]);
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
{
|
{
|
||||||
"selection": [
|
"selection": [
|
||||||
"The Rational Optimist",
|
"The Tyranny of Metrics",
|
||||||
"The Accidental Superpower",
|
"When to Rob a Bank",
|
||||||
"Freakonomics",
|
"The End of the World is Just the Beginning",
|
||||||
"Zero To One"
|
"The Rational Optimist"
|
||||||
],
|
],
|
||||||
"books": {
|
"books": {
|
||||||
"The Rational Optimist": {
|
"The Rational Optimist": {
|
||||||
@@ -31,6 +31,11 @@
|
|||||||
"link": "https://freakonomics.com/books/",
|
"link": "https://freakonomics.com/books/",
|
||||||
"review": "More like the other Freakonomics books than I expected (cracked storytelling), which is still excellent, but I wished there was greater insights into seeing past conventional wisdom, which is what thinking like a freak means. Still a great book."
|
"review": "More like the other Freakonomics books than I expected (cracked storytelling), which is still excellent, but I wished there was greater insights into seeing past conventional wisdom, which is what thinking like a freak means. Still a great book."
|
||||||
},
|
},
|
||||||
|
"The Tyranny of Metrics": {
|
||||||
|
"filename": "TyrannyOfMetrics.jpg",
|
||||||
|
"link": "https://www.amazon.com/Tyranny-Metrics-Jerry-Z-Muller/dp/0691174954",
|
||||||
|
"review": "Library find. Very appreciated read given my field of study. Adds a new lens on the cost of information and how it impacts us from the cube office to the oval office"
|
||||||
|
},
|
||||||
"The Accidental Superpower": {
|
"The Accidental Superpower": {
|
||||||
"filename": "theAccidentalSuperpower.jpeg",
|
"filename": "theAccidentalSuperpower.jpeg",
|
||||||
"link": "https://zeihan.com/",
|
"link": "https://zeihan.com/",
|
||||||
|
|||||||
@@ -11,12 +11,6 @@
|
|||||||
"description": "Recent projects by Andrew Simonson on his lovely portfolio website :)",
|
"description": "Recent projects by Andrew Simonson on his lovely portfolio website :)",
|
||||||
"canonical": "/projects"
|
"canonical": "/projects"
|
||||||
},
|
},
|
||||||
"about": {
|
|
||||||
"template": "about.html",
|
|
||||||
"title": "Andrew Simonson - About Me",
|
|
||||||
"description": "About Andrew Simonson",
|
|
||||||
"canonical": "/about"
|
|
||||||
},
|
|
||||||
"books": {
|
"books": {
|
||||||
"template": "books.html",
|
"template": "books.html",
|
||||||
"title": "Andrew Simonson - Bookshelf",
|
"title": "Andrew Simonson - Bookshelf",
|
||||||
|
|||||||
@@ -13,64 +13,18 @@
|
|||||||
]
|
]
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"LogicFlow": {
|
|
||||||
"status": "incomplete",
|
|
||||||
"classes": "programming",
|
|
||||||
"bgi": "logicflow.jpg",
|
|
||||||
"content": "Translate paragraphs to logical flowcharts, powered by ChatGPT Winner of CSHacks' Best Use of AI by Paychex",
|
|
||||||
"links": [
|
|
||||||
[
|
|
||||||
"github", "https://github.com/asimonson1125/LogicFlow", "git repo"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"globe", "https://devpost.com/software/logicflow", "Hackathon listing"
|
|
||||||
]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"Alternative Energy Map": {
|
|
||||||
"status": "complete",
|
|
||||||
"classes": "pinned geospacial",
|
|
||||||
"bgi": "geovisF.png",
|
|
||||||
"content": "ArcGIS Map of the most effective alternative energy sources in the continental United States",
|
|
||||||
"links": [
|
|
||||||
[
|
|
||||||
"globe",
|
|
||||||
"https://ritarcgis.maps.arcgis.com/apps/dashboards/17d5bda01edc4a2eb6205a4922d889c9",
|
|
||||||
"ArcGIS"
|
|
||||||
]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"OccupyRIT": {
|
"OccupyRIT": {
|
||||||
"status": "WIP",
|
"status": "WIP",
|
||||||
"classes": "programming",
|
"classes": "pinned programming",
|
||||||
"bgi": "occupyRIT.png",
|
"bgi": "occupyRIT.png",
|
||||||
"content": "Collects RIT Gym Occupancy data, determining busiest workout times",
|
"content": "Collects RIT Gym Occupancy data, determining busiest workout times",
|
||||||
"links": [
|
"links": [
|
||||||
["github", "https://github.com/asimonson1125/Occupy-RIT", "git repo"]
|
["github", "https://github.com/asimonson1125/Occupy-RIT", "git repo"]
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"Chesscom Embeds": {
|
|
||||||
"status": "complete",
|
|
||||||
"classes": "programming",
|
|
||||||
"bgi": "chessbed.png",
|
|
||||||
"content": "A template for creating Chess.com user profile embeds",
|
|
||||||
"links": [
|
|
||||||
["github", "https://github.com/asimonson1125/chesscom-embed", "git repo"]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"Resume": {
|
|
||||||
"status": "WIP",
|
|
||||||
"classes": "programming",
|
|
||||||
"bgi": "resume.png",
|
|
||||||
"content": "My Resume, made in LaTeX with a custom design derived by the AltaCV template on OverLeaf",
|
|
||||||
"links": [
|
|
||||||
["github", "https://github.com/asimonson1125/Resume", "git repo"],
|
|
||||||
["globe", "https://asimonson.com/Resume.pdf", "Resume"]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"Digital Portfolio": {
|
"Digital Portfolio": {
|
||||||
"status": "WIP",
|
"status": "WIP",
|
||||||
"classes": "programming",
|
"classes": "pinned programming",
|
||||||
"bgi": "website.png",
|
"bgi": "website.png",
|
||||||
"content": "My personal portfolio website (you're on it now!)",
|
"content": "My personal portfolio website (you're on it now!)",
|
||||||
"links": [
|
"links": [
|
||||||
@@ -88,32 +42,6 @@
|
|||||||
["globe", "https://slate.csh.rit.edu", "site link"]
|
["globe", "https://slate.csh.rit.edu", "site link"]
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"HvZ Bot": {
|
|
||||||
"status": "complete",
|
|
||||||
"classes": "programming",
|
|
||||||
"bgi": "",
|
|
||||||
"content": "A Discord bot to handle role management and statistics for RIT's Humans vs. Zombies games",
|
|
||||||
"links": [
|
|
||||||
["github", "https://github.com/asimonson1125/HvZ-bot", "git repo"]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"FinTech": {
|
|
||||||
"status": "WIP",
|
|
||||||
"classes": "pinned programming",
|
|
||||||
"bgi": "",
|
|
||||||
"content": "A team derived from the RIT Financial Management Association dedicated to learning about financial management of equities using automated solutions developed by students",
|
|
||||||
"links": [
|
|
||||||
["github", "https://github.com/LukeHorigan/Financial-Management-Assocation-", "git repo"]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"Browser Trivia Bot": {
|
|
||||||
"status": "complete",
|
|
||||||
"classes": "programming",
|
|
||||||
"bgi": "",
|
|
||||||
"content": "A tampermonkey tool used to automatically answer and submit online trivia forms, which can be tailored to different site layouts. Source currently private.",
|
|
||||||
"links": [
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"NationsGame Rolls Sim": {
|
"NationsGame Rolls Sim": {
|
||||||
"status": "complete",
|
"status": "complete",
|
||||||
"classes": "programming",
|
"classes": "programming",
|
||||||
@@ -122,24 +50,5 @@
|
|||||||
"links": [
|
"links": [
|
||||||
["github", "https://github.com/asimonson1125/NG-Rolls-Simulator", "git repo"]
|
["github", "https://github.com/asimonson1125/NG-Rolls-Simulator", "git repo"]
|
||||||
]
|
]
|
||||||
},
|
|
||||||
"VEXcode Button Engine": {
|
|
||||||
"status": "complete",
|
|
||||||
"classes": "programming",
|
|
||||||
"bgi": "vexcodeButtons.jpeg",
|
|
||||||
"content": "VEXcode button library + examples and template for the VEX V5 brain",
|
|
||||||
"links": [
|
|
||||||
["github", "https://github.com/asimonson1125/VEXcode-Button-Generator", "git repo"],
|
|
||||||
["globe", "https://www.vexforum.com/t/vexcode-button-generator/72450", "Forum post"]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"WinKeylogger": {
|
|
||||||
"status": "complete",
|
|
||||||
"classes": "programming",
|
|
||||||
"bgi": "",
|
|
||||||
"content": "A C++ keylogger for windows based off a Udemy course with my custom modifications and powershell script",
|
|
||||||
"links": [
|
|
||||||
["github", "https://github.com/asimonson1125/WinKeylogger", "git repo"]
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,14 @@
|
|||||||
{
|
{
|
||||||
"Data and AI": {
|
"Data and AI": {
|
||||||
|
"Tools": {
|
||||||
|
"Microsoft Azure": {
|
||||||
|
"Databricks": {},
|
||||||
|
"Data Factory": {},
|
||||||
|
"Stream Analytics": {}
|
||||||
|
},
|
||||||
|
"Apache Spark": {},
|
||||||
|
"Visual Basic for Applications (Excel)": {}
|
||||||
|
},
|
||||||
"Python": {
|
"Python": {
|
||||||
"PyTorch/TensorFlow": {},
|
"PyTorch/TensorFlow": {},
|
||||||
"Numpy/Pandas": {},
|
"Numpy/Pandas": {},
|
||||||
@@ -11,16 +20,19 @@
|
|||||||
"Frontend": {
|
"Frontend": {
|
||||||
"Flask (Python)": {},
|
"Flask (Python)": {},
|
||||||
"React (Javascript)": {},
|
"React (Javascript)": {},
|
||||||
"Angular (Typescript)": {}
|
"SASS/SCSS": {}
|
||||||
},
|
},
|
||||||
"Backend & DevOps": {
|
"Backend & DevOps": {
|
||||||
|
"Backend": {
|
||||||
|
"Rust": {},
|
||||||
|
"C#": {},
|
||||||
|
"C++": {}
|
||||||
|
},
|
||||||
"DevOps": {
|
"DevOps": {
|
||||||
"Docker": {},
|
"Docker": {},
|
||||||
"Microsoft Azure": {},
|
"Microsoft Azure": {},
|
||||||
"Kubernetes/Openshift": {},
|
"Kubernetes/Openshift": {},
|
||||||
"Bash": {}
|
"Bash": {}
|
||||||
},
|
}
|
||||||
"C#": {},
|
|
||||||
"C++": {}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 98 KiB |
|
Before Width: | Height: | Size: 813 KiB |
|
Before Width: | Height: | Size: 898 KiB |
|
Before Width: | Height: | Size: 463 KiB |
BIN
src/static/photos/books/TyrannyOfMetrics.jpg
Normal file
|
After Width: | Height: | Size: 110 KiB |
|
Before Width: | Height: | Size: 54 KiB |
|
Before Width: | Height: | Size: 1.9 MiB |
|
Before Width: | Height: | Size: 829 KiB |
|
Before Width: | Height: | Size: 549 KiB |
|
Before Width: | Height: | Size: 54 KiB |
|
Before Width: | Height: | Size: 1.3 MiB |
|
Before Width: | Height: | Size: 247 KiB |
|
Before Width: | Height: | Size: 1.7 MiB |
@@ -2,9 +2,9 @@
|
|||||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
||||||
<url>
|
<url>
|
||||||
<loc>https://asimonson.com</loc>
|
<loc>https://asimonson.com</loc>
|
||||||
<loc>https://asimonson.com/about</loc>
|
|
||||||
<loc>https://asimonson.com/projects</loc>
|
<loc>https://asimonson.com/projects</loc>
|
||||||
<loc>https://asimonson.com/Resume</loc>
|
<loc>https://asimonson.com/Resume</loc>
|
||||||
<lastmod>2022-06-04</lastmod>
|
<loc>https://asimonson.com/duck</loc>
|
||||||
|
<lastmod>2024-05-19</lastmod>
|
||||||
</url>
|
</url>
|
||||||
</urlset>
|
</urlset>
|
||||||
@@ -1,86 +0,0 @@
|
|||||||
{% block content %}
|
|
||||||
<div class="foreground"></div>
|
|
||||||
<div class="foregroundContent">
|
|
||||||
<div class="relative">
|
|
||||||
<div id="aboutMe" class="col" data-aos="fade-up">
|
|
||||||
<h2 class="concentratedHead">About Me</h2>
|
|
||||||
<p>
|
|
||||||
I'm Andrew Simonson, a senior undergrad at
|
|
||||||
<strong>Rochester Institute of Technology </strong>
|
|
||||||
in the <b>Computer Science BS</b> program (international relations minor), pursuing a career in data
|
|
||||||
science with a focus on predictive analytics.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
<br />
|
|
||||||
Ominous positivity is kinda my thing.
|
|
||||||
</p>
|
|
||||||
<br />
|
|
||||||
</div>
|
|
||||||
<div class="col rightCol" data-aos="fade-up">
|
|
||||||
<div id="skills">
|
|
||||||
<h2 id="skillstag">Skills</h2>
|
|
||||||
{% from 'partials/skills.html' import skills %} {{ skills(var['skillList']) }}
|
|
||||||
</div>
|
|
||||||
<div id="timeline">
|
|
||||||
<h2>Timeline</h2>
|
|
||||||
<div class="checkbox-wrapper">
|
|
||||||
<div class="flex start">
|
|
||||||
<label class="switch" htmlFor="pinned">
|
|
||||||
<input
|
|
||||||
type="checkbox"
|
|
||||||
id="pinned"
|
|
||||||
onClick='toggleCheckbox("up")'
|
|
||||||
checked
|
|
||||||
/>
|
|
||||||
<div class="slider round"></div>
|
|
||||||
<strong>Pinned</strong>
|
|
||||||
</label>
|
|
||||||
</div>
|
|
||||||
<div class="flex start">
|
|
||||||
<label class="switch" htmlFor="education">
|
|
||||||
<input
|
|
||||||
type="checkbox"
|
|
||||||
id="education"
|
|
||||||
onClick="toggleCheckbox('up')"
|
|
||||||
/>
|
|
||||||
<div class="slider round"></div>
|
|
||||||
<strong>Education</strong>
|
|
||||||
</label>
|
|
||||||
</div>
|
|
||||||
<div class="flex start">
|
|
||||||
<label
|
|
||||||
class="switch"
|
|
||||||
htmlFor="experience"
|
|
||||||
onClick="toggleCheckbox('up')"
|
|
||||||
>
|
|
||||||
<input type="checkbox" id="experience" />
|
|
||||||
<div class="slider round"></div>
|
|
||||||
<strong>Work Experience</strong>
|
|
||||||
</label>
|
|
||||||
</div>
|
|
||||||
<div class="flex start">
|
|
||||||
<label
|
|
||||||
class="switch"
|
|
||||||
htmlFor="technical"
|
|
||||||
onClick="toggleCheckbox('up')"
|
|
||||||
>
|
|
||||||
<input type="checkbox" id="technical" />
|
|
||||||
<div class="slider round"></div>
|
|
||||||
<strong>Technical</strong>
|
|
||||||
</label>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="timeline checkbox-client">
|
|
||||||
{% from 'partials/timeline.html' import timeitem %} {% for i in
|
|
||||||
var["timeline"] %} {{ timeitem(i, var["timeline"][i]["classes"],
|
|
||||||
var["timeline"][i]["date"], var["timeline"][i]["content"])}} {%
|
|
||||||
endfor %}
|
|
||||||
</div>
|
|
||||||
<script>
|
|
||||||
toggleCheckbox("up");
|
|
||||||
</script>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{% endblock %}
|
|
||||||
@@ -1,12 +1,12 @@
|
|||||||
{% block content %}
|
{% block content %}
|
||||||
<div class="foreground"></div>
|
<div class="foreground"></div>
|
||||||
<div class="foregroundContent">
|
<div class="foregroundContent">
|
||||||
<h2>What the duck?</h2>
|
<h1>What the duck?</h1>
|
||||||
<img
|
<img
|
||||||
alt="mega spinney duck"
|
alt="mega spinney duck"
|
||||||
src="{{ url_for('static', filename='photos/gifs/duck-spinning.gif') }}"
|
src="{{ url_for('static', filename='photos/gifs/duck-spinning.gif') }}"
|
||||||
style="max-width: calc(100% - 2em);"
|
style="max-width: calc(100% - 2em);"
|
||||||
/>
|
/>
|
||||||
<h3>Stop disturbing the duck, can't you see he's busy spinning?</h3>
|
|
||||||
</div>
|
</div>
|
||||||
|
<!-- BONUS DUCKS! -->
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|||||||
@@ -2,7 +2,10 @@
|
|||||||
<html lang="en">
|
<html lang="en">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8" />
|
<meta charset="utf-8" />
|
||||||
<link rel="icon" href="{{ url_for('static', filename='icons/withBackground.svg') }}" />
|
<link
|
||||||
|
rel="icon"
|
||||||
|
href="{{ url_for('static', filename='icons/withBackground.svg') }}"
|
||||||
|
/>
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
<meta name="theme-color" content="#000000" />
|
<meta name="theme-color" content="#000000" />
|
||||||
<meta name="description" content="{{ var['description'] }}" />
|
<meta name="description" content="{{ var['description'] }}" />
|
||||||
@@ -47,10 +50,11 @@
|
|||||||
rel="stylesheet"
|
rel="stylesheet"
|
||||||
href="{{ url_for('static', filename='css/checkbox.css') }}"
|
href="{{ url_for('static', filename='css/checkbox.css') }}"
|
||||||
/>
|
/>
|
||||||
|
<!--
|
||||||
<link
|
<link
|
||||||
rel="stylesheet"
|
rel="stylesheet"
|
||||||
href="{{ url_for('static', filename='css/head.css') }}"
|
href="{{ url_for('static', filename='css/head.css') }}"
|
||||||
/>
|
/></!-->
|
||||||
|
|
||||||
<link rel="canonical" href="https://asimonson.com{{ var['canonical'] }}" />
|
<link rel="canonical" href="https://asimonson.com{{ var['canonical'] }}" />
|
||||||
<script src="{{ url_for('static', filename='js/checkbox.js') }}"></script>
|
<script src="{{ url_for('static', filename='js/checkbox.js') }}"></script>
|
||||||
@@ -62,13 +66,11 @@
|
|||||||
<body onpopstate="backButton()">
|
<body onpopstate="backButton()">
|
||||||
<noscript>You need to enable JavaScript to run this app.</noscript>
|
<noscript>You need to enable JavaScript to run this app.</noscript>
|
||||||
<iframe src="/hotspots?legend=false" title="HotspotsRIT" id="map"></iframe>
|
<iframe src="/hotspots?legend=false" title="HotspotsRIT" id="map"></iframe>
|
||||||
<div class="App">
|
<div id="contentStuffer">
|
||||||
<div class="header">
|
<div class="header">
|
||||||
<div id="name-container" onclick="goto('home', {toggle:false})">
|
<div id="name-container" onclick="goto('home')">
|
||||||
<div class="glitch">
|
<div class="line name">
|
||||||
<div class="line name">
|
<span class="textGrad">Andrew Simonson</span>
|
||||||
<span class="textGrad">Andrew Simonson</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -89,20 +91,15 @@
|
|||||||
<div onclick="goto('projects')" class="navElement">
|
<div onclick="goto('projects')" class="navElement">
|
||||||
<p>Projects</p>
|
<p>Projects</p>
|
||||||
</div>
|
</div>
|
||||||
<!-- <a href="/activities">Activities</a> -->
|
|
||||||
<div onclick="goto('about')" class="navElement">
|
|
||||||
<p>About Me</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
{% endblock %} {% block content%}
|
||||||
|
<div id="root">{% include var['template'] %}</div>
|
||||||
|
{% endblock %} {% block footer %}
|
||||||
|
<div id="footerSpacer"></div>
|
||||||
|
<div class="footer">{% include 'partials/socials.html' %}</div>
|
||||||
|
{% endblock %}
|
||||||
</div>
|
</div>
|
||||||
{% endblock %}
|
|
||||||
{% block content%}
|
|
||||||
<div id="root">{% include var['template'] %}</div>
|
|
||||||
{% endblock %}
|
|
||||||
{% block footer %}
|
|
||||||
<div class="footer">{% include 'partials/socials.html' %}</div>
|
|
||||||
{% endblock %}
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@@ -1,54 +1,76 @@
|
|||||||
{% block content %} {% macro nameplate() %}
|
{% block content %} {% macro nameplate() %}
|
||||||
<img
|
<div>
|
||||||
src="{{ url_for('static', filename='icons/neonfinal3.svg') }}"
|
<img
|
||||||
id="homeIcon"
|
src="{{ url_for('static', filename='icons/neonfinal3.svg') }}"
|
||||||
alt="logo"
|
id="homeIcon"
|
||||||
/>
|
alt="logo"
|
||||||
<h1 id="homeName" class='textGrad'>Andrew Simonson</h1>
|
/>
|
||||||
<h3>Computer Science student at Rochester Institute of Technology</h3>
|
<h1 id="homeName" class="textGrad">Andrew Simonson</h1>
|
||||||
<h5>End-to-End Services in Data Science and AI</h5>
|
<h2 class="textGrad">Data Science Beyond Theoretical Environments</h2>
|
||||||
|
</div>
|
||||||
{% endmacro %}
|
{% endmacro %}
|
||||||
|
|
||||||
<div class="foreground homeground"></div>
|
<div class="foreground homeground"></div>
|
||||||
<div class="foregroundContent homegroundContent">
|
<div class="relative">
|
||||||
<div class="relative">
|
<div id="nametag" class="flex" data-aos="fade-up">{{ nameplate() }}</div>
|
||||||
<div id="homepage" class="flex">
|
<!--<INSERT SMALL BANNER HERE FOR PROJECT IMAGECARD CAROUSEL>-->
|
||||||
<div id="HomeContent">
|
<div id="desktopSpacer"></div>
|
||||||
<div class="flex">
|
<div class="homeSubContent">
|
||||||
<div id="nametag" class="transparent unsetPos" data-aos="fade-up">
|
<div class="flex equalitems vertOnMobile">
|
||||||
{{ nameplate() }}
|
<div>
|
||||||
</div>
|
<h2>About Me</h2>
|
||||||
<div id="nametagContainer">
|
<p>
|
||||||
<div id="nametag" data-aos="fade-up">{{ nameplate() }}</div>
|
I'm Andrew Simonson<!--, CEO of the anti-thermodynamics syndicate.-->,
|
||||||
</div>
|
a senior undergrad at
|
||||||
</div>
|
<strong>Rochester Institute of Technology </strong>
|
||||||
|
in the <b>Computer Science BS</b> program (international relations
|
||||||
|
minor), pursuing a career in data science. I have study clusters in
|
||||||
|
Data Science and AI and run independent studies in probability theory.
|
||||||
|
<br />
|
||||||
|
<br />
|
||||||
|
I've worked on a variety of projects, from building analytical tools
|
||||||
|
performing reactive chemical safety to live feed processing for
|
||||||
|
frantic work environments looking to improve service. I also do
|
||||||
|
personal experimentation leveraging open source info streams ranging
|
||||||
|
from human traffic around campus to watershed temperature monitoring.
|
||||||
|
<br />
|
||||||
|
<br />
|
||||||
|
My philosophy is that if it isn't explainable then you didn't learn
|
||||||
|
anything. Data without sound methodology is at best meaningless and at
|
||||||
|
worst counterproductive and costly. Bringing logical transparency and
|
||||||
|
literal deductions back into digital analysis enables us to learn
|
||||||
|
about the world through computing, rather than letting computers make
|
||||||
|
decisions for the world we think we know. We as data scientists
|
||||||
|
shouldn't just be building heuristics. We should be making discoveries
|
||||||
|
and building new knowledge.
|
||||||
|
<br />
|
||||||
|
<br />
|
||||||
|
<strong>Bring the scientific method to AI.</strong>
|
||||||
|
<br />
|
||||||
|
<br />
|
||||||
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="onRight" data-aos="fade-up">
|
<div id="skills">
|
||||||
<div class="chess">
|
<h2 id="skillstag">Skills</h2>
|
||||||
{% from 'partials/chess.html' import chess %} {{
|
{% from 'partials/skills.html' import skills %} {{
|
||||||
chess('asimonson1125') }}
|
skills(var['skillList']) }}
|
||||||
</div>
|
</div>
|
||||||
<br />
|
</div>
|
||||||
{% from 'partials/bookshelf.html' import bookshelf %} {{
|
<div id="aboutCards" class="flex">
|
||||||
bookshelf(var.books) }}
|
<div class="chess">
|
||||||
<br />
|
{% from 'partials/chess.html' import chess %} {{ chess('asimonson1125')
|
||||||
<div class="flex pointer" onclick="goto('duck')">
|
}}
|
||||||
<img
|
</div>
|
||||||
alt="duck spinning"
|
<br />
|
||||||
src="{{ url_for('static', filename='photos/gifs/duck-spinning.gif') }}"
|
{% from 'partials/bookshelf.html' import bookshelf %} {{
|
||||||
class="smallImg"
|
bookshelf(var.books) }}
|
||||||
/>
|
<br />
|
||||||
<img
|
<div class="pointer" onClick="goto('duck')">
|
||||||
alt="duck spinning"
|
<img
|
||||||
src="{{ url_for('static', filename='photos/gifs/duck-spinning.gif') }}"
|
alt="duck spinning"
|
||||||
class="smallImg"
|
src="{{ url_for('static', filename='photos/gifs/duck-spinning.gif') }}"
|
||||||
/>
|
class="smallImg"
|
||||||
<img
|
/>
|
||||||
alt="duck spinning"
|
|
||||||
src="{{ url_for('static', filename='photos/gifs/duck-spinning.gif') }}"
|
|
||||||
class="smallImg"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -10,7 +10,11 @@
|
|||||||
{% macro skills(skills) %}
|
{% macro skills(skills) %}
|
||||||
<div id="skillTree">
|
<div id="skillTree">
|
||||||
{% for skill in skills %}
|
{% for skill in skills %}
|
||||||
{{ expandSkill(skills, skill, 'activeSkill') }}
|
{% set classes = "" %}
|
||||||
|
{% if skill == skills|first %}
|
||||||
|
{% set classes = "activeSkill" %}
|
||||||
|
{% endif %}
|
||||||
|
{{ expandSkill(skills, skill, classes) }}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</div>
|
</div>
|
||||||
{% endmacro %}
|
{% endmacro %}
|
||||||
@@ -3,7 +3,6 @@
|
|||||||
<div class="foregroundContent">
|
<div class="foregroundContent">
|
||||||
<div data-aos="fade-up">
|
<div data-aos="fade-up">
|
||||||
<h2 class="concentratedHead">Projects</h2>
|
<h2 class="concentratedHead">Projects</h2>
|
||||||
<h3>Shhh shh shh sh sh I know I know I'm gonna revamp this page later </h3>
|
|
||||||
<p>
|
<p>
|
||||||
Project status is indicated by the color of the project card:
|
Project status is indicated by the color of the project card:
|
||||||
<br />
|
<br />
|
||||||
@@ -14,6 +13,8 @@
|
|||||||
<span class="incomplete">⬤</span> - Incomplete
|
<span class="incomplete">⬤</span> - Incomplete
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<!-- >
|
||||||
<div class="checkbox-wrapper">
|
<div class="checkbox-wrapper">
|
||||||
<div class="flex start">
|
<div class="flex start">
|
||||||
<label class="switch" htmlFor="pinned">
|
<label class="switch" htmlFor="pinned">
|
||||||
@@ -37,6 +38,7 @@
|
|||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</!-->
|
||||||
<div class="projectList checkbox-client">
|
<div class="projectList checkbox-client">
|
||||||
{% from 'partials/project.html' import project %}
|
{% from 'partials/project.html' import project %}
|
||||||
{% for i in var["projects"] %}
|
{% for i in var["projects"] %}
|
||||||
@@ -44,5 +46,7 @@
|
|||||||
{% endfor %}
|
{% endfor %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<script>toggleCheckbox('')</script>
|
|
||||||
|
|
||||||
|
<!--><script>toggleCheckbox('')</script></!-->
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||