Merge pull request #26 from asimonson1125/home-about-redo

Home about redo
This commit is contained in:
2024-05-19 12:46:03 -04:00
committed by GitHub
27 changed files with 208 additions and 320 deletions

View File

@@ -10,8 +10,8 @@ books = json.load(open("./static/json/books.json", "r"))
skillList = json.load(open("./static/json/skills.json", "r"))
timeline = json.load(open("./static/json/timeline.json", "r"))
pages = json.load(open("./static/json/pages.json", "r"))
pages['about']['skillList'] = skillList
pages['about']['timeline'] = timeline
pages['home']['skillList'] = skillList
# pages['about']['timeline'] = timeline
pages['projects']['projects'] = proj
pages['home']['books'] = books
pages['books']['books'] = books

View File

@@ -26,8 +26,6 @@ html, body {
body {
margin: 0;
/* background-image: url('../photos/plexus.jpg'); */
/*url('https://i.pinimg.com/originals/d6/c3/ac/d6c3ac09021dbc0cda8ee27837d2c795.png')*/
background-attachment: fixed;
background-size: 100% auto;
background-clip: border-box;
@@ -81,17 +79,11 @@ body {
filter: brightness(50%);
}
h1, h2 {
h1 {
color: #ecebeb;
}
h2 {
font-size: 2rem;
margin-top: 1rem;
margin-bottom: 2rem;
}
h3, h4, h5 {
h2, h3, h4, h5 {
color: #a8a8a8;
}
@@ -136,7 +128,7 @@ a {
background-color: #1a1a1a;
width: 100vw;
z-index: 99;
position: fixed;
position: sticky;
top: 0;
left: 0;
transition: .4s;
@@ -152,6 +144,7 @@ a {
#homeName {
margin-top: .25em;
margin-bottom: 0;
}
#name-container {
@@ -259,7 +252,6 @@ a {
}
.foregroundContent {
padding-top: 4rem;
padding-left: 8rem;
max-width: calc(100%-8rem);
padding-bottom: 1rem;
@@ -275,7 +267,7 @@ a {
}
.homegroundContent {
padding-top: 5em;
padding-top: 1em;
padding-left: 0em;
}
@@ -315,18 +307,18 @@ a {
#nametag {
padding: 2em 3em;
display: inline-block;
background-color: rgb(44, 44, 44, .75);
border-radius: 1em;
border: solid black 4px;
text-align: center;
max-width: 30em;
}
#nametag *:not(h1) {
text-shadow: .1em .1em rgba(255, 255, 255, 0.2);
}
#nametag h2{
font-size: medium;
}
#nametag p {
text-shadow: none;
color: #a8a8a8;
@@ -351,6 +343,14 @@ a {
justify-content: space-around;
}
.equalitems {
column-gap: 1em;
}
.equalitems > * {
flex: 1 1 0;
}
.vFlex {
display: flex;
flex-direction: column;
@@ -362,6 +362,10 @@ a {
max-width: 100%;
}
#aboutCards > * {
margin: .25em;
}
.spaceBetween {
justify-content: space-between;
}
@@ -370,6 +374,11 @@ a {
justify-content: left;
}
.hSpacer {
width: 2em;
height: 0;
}
.relative {
position: relative;
}
@@ -588,6 +597,12 @@ a {
left: 0;
}
#contentStuffer {
display: flex;
flex-direction: column;
min-height: 100vh;
}
.socials {
margin-left: 1rem;
width: 0px;
@@ -664,6 +679,26 @@ a {
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 {
height: 100%;
display: flex;
@@ -674,9 +709,6 @@ a {
.chess {
max-width: 300px;
border: none;
overflow: scroll;
/* transform: scale(.8);
float: right; */
}
#chessProfile {
@@ -971,6 +1003,22 @@ a {
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 {
font-size: 1.5rem;
}
@@ -993,6 +1041,10 @@ a {
margin: 0;
}
.vertOnMobile {
flex-direction: column;
}
.projectList {
width: 95%;
}
@@ -1017,6 +1069,10 @@ a {
padding-top: 5em;
}
.homeSubContent {
padding: 1em;
}
.onRight {
margin: unset;
margin-top: 3rem;

View File

@@ -1,35 +1,8 @@
window.onload = function () {
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() {
function toggleMenu(collapse=false) {
if (window.innerWidth < 1400) {
const e = document.querySelector(".navControl");
const bar = document.querySelector(".header");
if (e.style.maxHeight === "0px") {
if (e.style.maxHeight === "0px" && !collapse) {
e.style.maxHeight = `${e.scrollHeight + 10}px`;
bar.style.borderBottomWidth = "0px";
} 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, {
credentials: "include",
method: "GET",
@@ -56,9 +29,7 @@ async function goto(location, { push = true, toggle = true } = {}) {
root.querySelectorAll("script").forEach((x) => {
eval(x.innerHTML);
});
if (toggle) {
toggleMenu();
}
toggleMenu(collapse=true);
document.querySelector("title").textContent = metadata["title"];
if (push) {
history.pushState(null, null, metadata["canonical"]);

View File

@@ -1,9 +1,9 @@
{
"selection": [
"The Rational Optimist",
"The Accidental Superpower",
"Freakonomics",
"Zero To One"
"The Tyranny of Metrics",
"When to Rob a Bank",
"The End of the World is Just the Beginning",
"The Rational Optimist"
],
"books": {
"The Rational Optimist": {
@@ -31,6 +31,11 @@
"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."
},
"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": {
"filename": "theAccidentalSuperpower.jpeg",
"link": "https://zeihan.com/",

View File

@@ -11,12 +11,6 @@
"description": "Recent projects by Andrew Simonson on his lovely portfolio website :)",
"canonical": "/projects"
},
"about": {
"template": "about.html",
"title": "Andrew Simonson - About Me",
"description": "About Andrew Simonson",
"canonical": "/about"
},
"books": {
"template": "books.html",
"title": "Andrew Simonson - Bookshelf",

View File

@@ -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": {
"status": "WIP",
"classes": "programming",
"classes": "pinned programming",
"bgi": "occupyRIT.png",
"content": "Collects RIT Gym Occupancy data, determining busiest workout times",
"links": [
["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": {
"status": "WIP",
"classes": "programming",
"classes": "pinned programming",
"bgi": "website.png",
"content": "My personal portfolio website (you're on it now!)",
"links": [
@@ -88,32 +42,6 @@
["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": {
"status": "complete",
"classes": "programming",
@@ -122,24 +50,5 @@
"links": [
["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"]
]
}
}

View File

@@ -1,5 +1,14 @@
{
"Data and AI": {
"Tools": {
"Microsoft Azure": {
"Databricks": {},
"Data Factory": {},
"Stream Analytics": {}
},
"Apache Spark": {},
"Visual Basic for Applications (Excel)": {}
},
"Python": {
"PyTorch/TensorFlow": {},
"Numpy/Pandas": {},
@@ -11,16 +20,19 @@
"Frontend": {
"Flask (Python)": {},
"React (Javascript)": {},
"Angular (Typescript)": {}
"SASS/SCSS": {}
},
"Backend & DevOps": {
"Backend": {
"Rust": {},
"C#": {},
"C++": {}
},
"DevOps": {
"Docker": {},
"Microsoft Azure": {},
"Kubernetes/Openshift": {},
"Bash": {}
},
"C#": {},
"C++": {}
}
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 98 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 813 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 898 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 463 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 829 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 549 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 247 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 MiB

View File

@@ -2,9 +2,9 @@
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://asimonson.com</loc>
<loc>https://asimonson.com/about</loc>
<loc>https://asimonson.com/projects</loc>
<loc>https://asimonson.com/Resume</loc>
<lastmod>2022-06-04</lastmod>
<loc>https://asimonson.com/duck</loc>
<lastmod>2024-05-19</lastmod>
</url>
</urlset>

View File

@@ -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 %}

View File

@@ -1,12 +1,12 @@
{% block content %}
<div class="foreground"></div>
<div class="foregroundContent">
<h2>What the duck?</h2>
<h1>What the duck?</h1>
<img
alt="mega spinney duck"
src="{{ url_for('static', filename='photos/gifs/duck-spinning.gif') }}"
style="max-width: calc(100% - 2em);"
/>
<h3>Stop disturbing the duck, can't you see he's busy spinning?</h3>
</div>
<!-- BONUS DUCKS! -->
{% endblock %}

View File

@@ -2,7 +2,10 @@
<html lang="en">
<head>
<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="theme-color" content="#000000" />
<meta name="description" content="{{ var['description'] }}" />
@@ -47,10 +50,11 @@
rel="stylesheet"
href="{{ url_for('static', filename='css/checkbox.css') }}"
/>
<!--
<link
rel="stylesheet"
href="{{ url_for('static', filename='css/head.css') }}"
/>
/></!-->
<link rel="canonical" href="https://asimonson.com{{ var['canonical'] }}" />
<script src="{{ url_for('static', filename='js/checkbox.js') }}"></script>
@@ -62,15 +66,13 @@
<body onpopstate="backButton()">
<noscript>You need to enable JavaScript to run this app.</noscript>
<iframe src="/hotspots?legend=false" title="HotspotsRIT" id="map"></iframe>
<div class="App">
<div id="contentStuffer">
<div class="header">
<div id="name-container" onclick="goto('home', {toggle:false})">
<div class="glitch">
<div id="name-container" onclick="goto('home')">
<div class="line name">
<span class="textGrad">Andrew Simonson</span>
</div>
</div>
</div>
<img
src="{{ url_for('static', filename='icons/menu.svg')}}"
@@ -89,20 +91,15 @@
<div onclick="goto('projects')" class="navElement">
<p>Projects</p>
</div>
<!-- <a href="/activities">Activities</a> -->
<div onclick="goto('about')" class="navElement">
<p>About Me</p>
</div>
</div>
</div>
</div>
</div>
{% endblock %}
{% block content%}
{% endblock %} {% block content%}
<div id="root">{% include var['template'] %}</div>
{% endblock %}
{% block footer %}
{% endblock %} {% block footer %}
<div id="footerSpacer"></div>
<div class="footer">{% include 'partials/socials.html' %}</div>
{% endblock %}
</div>
</body>
</html>

View File

@@ -1,54 +1,76 @@
{% block content %} {% macro nameplate() %}
<div>
<img
src="{{ url_for('static', filename='icons/neonfinal3.svg') }}"
id="homeIcon"
alt="logo"
/>
<h1 id="homeName" class='textGrad'>Andrew Simonson</h1>
<h3>Computer Science student at Rochester Institute of Technology</h3>
<h5>End-to-End Services in Data Science and AI</h5>
<h1 id="homeName" class="textGrad">Andrew Simonson</h1>
<h2 class="textGrad">Data Science Beyond Theoretical Environments</h2>
</div>
{% endmacro %}
<div class="foreground homeground"></div>
<div class="foregroundContent homegroundContent">
<div class="relative">
<div id="homepage" class="flex">
<div id="HomeContent">
<div class="flex">
<div id="nametag" class="transparent unsetPos" data-aos="fade-up">
{{ nameplate() }}
<div id="nametag" class="flex" data-aos="fade-up">{{ nameplate() }}</div>
<!--<INSERT SMALL BANNER HERE FOR PROJECT IMAGECARD CAROUSEL>-->
<div id="desktopSpacer"></div>
<div class="homeSubContent">
<div class="flex equalitems vertOnMobile">
<div>
<h2>About Me</h2>
<p>
I'm Andrew Simonson<!--, CEO of the anti-thermodynamics syndicate.-->,
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. 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 id="nametagContainer">
<div id="nametag" data-aos="fade-up">{{ nameplate() }}</div>
<div id="skills">
<h2 id="skillstag">Skills</h2>
{% from 'partials/skills.html' import skills %} {{
skills(var['skillList']) }}
</div>
</div>
</div>
<div class="onRight" data-aos="fade-up">
<div id="aboutCards" class="flex">
<div class="chess">
{% from 'partials/chess.html' import chess %} {{
chess('asimonson1125') }}
{% from 'partials/chess.html' import chess %} {{ chess('asimonson1125')
}}
</div>
<br />
{% from 'partials/bookshelf.html' import bookshelf %} {{
bookshelf(var.books) }}
<br />
<div class="flex pointer" onclick="goto('duck')">
<div class="pointer" onClick="goto('duck')">
<img
alt="duck spinning"
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"
/>
<img
alt="duck spinning"
src="{{ url_for('static', filename='photos/gifs/duck-spinning.gif') }}"
class="smallImg"
/>
</div>
</div>
</div>
</div>

View File

@@ -10,7 +10,11 @@
{% macro skills(skills) %}
<div id="skillTree">
{% for skill in skills %}
{{ expandSkill(skills, skill, 'activeSkill') }}
{% set classes = "" %}
{% if skill == skills|first %}
{% set classes = "activeSkill" %}
{% endif %}
{{ expandSkill(skills, skill, classes) }}
{% endfor %}
</div>
{% endmacro %}

View File

@@ -3,7 +3,6 @@
<div class="foregroundContent">
<div data-aos="fade-up">
<h2 class="concentratedHead">Projects</h2>
<h3>Shhh shh shh sh sh I know I know I'm gonna revamp this page later </h3>
<p>
Project status is indicated by the color of the project card:
<br />
@@ -14,6 +13,8 @@
<span class="incomplete"></span> - Incomplete
</p>
</div>
<!-- >
<div class="checkbox-wrapper">
<div class="flex start">
<label class="switch" htmlFor="pinned">
@@ -37,6 +38,7 @@
</label>
</div>
</div>
</!-->
<div class="projectList checkbox-client">
{% from 'partials/project.html' import project %}
{% for i in var["projects"] %}
@@ -44,5 +46,7 @@
{% endfor %}
</div>
</div>
<script>toggleCheckbox('')</script>
<!--><script>toggleCheckbox('')</script></!-->
{% endblock %}