diff --git a/src/app.py b/src/app.py index 8dd5587..220318c 100644 --- a/src/app.py +++ b/src/app.py @@ -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 diff --git a/src/static/css/App.css b/src/static/css/App.css index 02f00e0..f0de231 100644 --- a/src/static/css/App.css +++ b/src/static/css/App.css @@ -79,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; } @@ -134,7 +128,7 @@ a { background-color: #1a1a1a; width: 100vw; z-index: 99; - position: fixed; + position: sticky; top: 0; left: 0; transition: .4s; @@ -150,6 +144,7 @@ a { #homeName { margin-top: .25em; + margin-bottom: 0; } #name-container { @@ -257,7 +252,6 @@ a { } .foregroundContent { - padding-top: 4rem; padding-left: 8rem; max-width: calc(100%-8rem); padding-bottom: 1rem; @@ -273,7 +267,7 @@ a { } .homegroundContent { - padding-top: 5em; + padding-top: 1em; padding-left: 0em; } @@ -313,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; @@ -349,6 +343,14 @@ a { justify-content: space-around; } +.equalitems { + column-gap: 1em; +} + +.equalitems > * { + flex: 1 1 0; +} + .vFlex { display: flex; flex-direction: column; @@ -360,6 +362,10 @@ a { max-width: 100%; } +#aboutCards > * { + margin: .25em; +} + .spaceBetween { justify-content: space-between; } @@ -368,6 +374,11 @@ a { justify-content: left; } +.hSpacer { + width: 2em; + height: 0; +} + .relative { position: relative; } @@ -586,6 +597,12 @@ a { left: 0; } +#contentStuffer { + display: flex; + flex-direction: column; + min-height: 100vh; +} + .socials { margin-left: 1rem; width: 0px; @@ -662,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; @@ -672,9 +709,6 @@ a { .chess { max-width: 300px; border: none; - overflow: scroll; - /* transform: scale(.8); - float: right; */ } #chessProfile { @@ -969,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; } @@ -991,6 +1041,10 @@ a { margin: 0; } + .vertOnMobile { + flex-direction: column; + } + .projectList { width: 95%; } @@ -1015,6 +1069,10 @@ a { padding-top: 5em; } + .homeSubContent { + padding: 1em; + } + .onRight { margin: unset; margin-top: 3rem; diff --git a/src/static/js/responsive.js b/src/static/js/responsive.js index 0235a16..ceda9b3 100644 --- a/src/static/js/responsive.js +++ b/src/static/js/responsive.js @@ -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"]); diff --git a/src/static/json/pages.json b/src/static/json/pages.json index 2298159..666b9f1 100644 --- a/src/static/json/pages.json +++ b/src/static/json/pages.json @@ -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", diff --git a/src/static/json/skills.json b/src/static/json/skills.json index 33fdd97..9a8e7df 100644 --- a/src/static/json/skills.json +++ b/src/static/json/skills.json @@ -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++": {} + } } } diff --git a/src/static/sitemap.xml b/src/static/sitemap.xml index 8fc4dbd..ff372c7 100644 --- a/src/static/sitemap.xml +++ b/src/static/sitemap.xml @@ -2,9 +2,9 @@ https://asimonson.com - https://asimonson.com/about https://asimonson.com/projects https://asimonson.com/Resume - 2022-06-04 + https://asimonson.com/duck + 2024-05-19 \ No newline at end of file diff --git a/src/templates/about.html b/src/templates/about.html deleted file mode 100644 index 42508dc..0000000 --- a/src/templates/about.html +++ /dev/null @@ -1,86 +0,0 @@ -{% block content %} -
-
-
-
-

About Me

-

- I'm Andrew Simonson, a senior undergrad at - Rochester Institute of Technology - in the Computer Science BS program (international relations minor), pursuing a career in data - science with a focus on predictive analytics. -

-

-
- Ominous positivity is kinda my thing. -

-
-
-
-
-

Skills

- {% from 'partials/skills.html' import skills %} {{ skills(var['skillList']) }} -
-
-

Timeline

-
-
- -
-
- -
-
- -
-
- -
-
-
- {% 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 %} -
- -
-
-
-
-{% endblock %} diff --git a/src/templates/duck.html b/src/templates/duck.html index d94aaf2..a5ee302 100644 --- a/src/templates/duck.html +++ b/src/templates/duck.html @@ -1,12 +1,12 @@ {% block content %}
-

What the duck?

+

What the duck?

mega spinney duck -

Stop disturbing the duck, can't you see he's busy spinning?

+ {% endblock %} diff --git a/src/templates/header.html b/src/templates/header.html index 05f85eb..9661bdd 100644 --- a/src/templates/header.html +++ b/src/templates/header.html @@ -2,7 +2,10 @@ - + @@ -47,10 +50,11 @@ rel="stylesheet" href="{{ url_for('static', filename='css/checkbox.css') }}" /> + @@ -62,13 +66,11 @@ -
+
-
-
-
- Andrew Simonson -
+
+
+ Andrew Simonson
@@ -89,20 +91,15 @@ - -
+ {% endblock %} {% block content%} +
{% include var['template'] %}
+ {% endblock %} {% block footer %} +
+ + {% endblock %}
- {% endblock %} - {% block content%} -
{% include var['template'] %}
- {% endblock %} - {% block footer %} - - {% endblock %} diff --git a/src/templates/home.html b/src/templates/home.html index 9f5afe2..28f377b 100644 --- a/src/templates/home.html +++ b/src/templates/home.html @@ -1,54 +1,76 @@ {% block content %} {% macro nameplate() %} -logo -

Andrew Simonson

-

Computer Science student at Rochester Institute of Technology

-
End-to-End Services in Data Science and AI
+
+ logo +

Andrew Simonson

+

Data Science Beyond Theoretical Environments

+
{% endmacro %}
-
-
-
-
-
-
- {{ nameplate() }} -
-
-
{{ nameplate() }}
-
-
+
+
{{ nameplate() }}
+ +
+
+
+
+

About Me

+

+ I'm Andrew Simonson, + a senior undergrad at + Rochester Institute of Technology + in the Computer Science BS 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. +
+
+ 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. +
+
+ 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. +
+
+ Bring the scientific method to AI. +
+
+

-
-
- {% from 'partials/chess.html' import chess %} {{ - chess('asimonson1125') }} -
-
- {% from 'partials/bookshelf.html' import bookshelf %} {{ - bookshelf(var.books) }} -
-
- duck spinning - duck spinning - duck spinning -
+
+

Skills

+ {% from 'partials/skills.html' import skills %} {{ + skills(var['skillList']) }} +
+
+
+
+ {% from 'partials/chess.html' import chess %} {{ chess('asimonson1125') + }} +
+
+ {% from 'partials/bookshelf.html' import bookshelf %} {{ + bookshelf(var.books) }} +
+
+ duck spinning
diff --git a/src/templates/partials/skills.html b/src/templates/partials/skills.html index aed678f..a103ed1 100644 --- a/src/templates/partials/skills.html +++ b/src/templates/partials/skills.html @@ -10,7 +10,11 @@ {% macro skills(skills) %}
{% for skill in skills %} - {{ expandSkill(skills, skill, 'activeSkill') }} + {% set classes = "" %} + {% if skill == skills|first %} + {% set classes = "activeSkill" %} + {% endif %} + {{ expandSkill(skills, skill, classes) }} {% endfor %}
{% endmacro %} \ No newline at end of file