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 9580d7a..f0de231 100644 --- a/src/static/css/App.css +++ b/src/static/css/App.css @@ -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; 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/books.json b/src/static/json/books.json index 5ec3fa4..c19ab5e 100644 --- a/src/static/json/books.json +++ b/src/static/json/books.json @@ -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/", 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/projects.json b/src/static/json/projects.json index 74a1471..3945b2e 100644 --- a/src/static/json/projects.json +++ b/src/static/json/projects.json @@ -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"] - ] } } 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/photos/AcademicTeam.jpg b/src/static/photos/AcademicTeam.jpg deleted file mode 100644 index 3cc0ad8..0000000 Binary files a/src/static/photos/AcademicTeam.jpg and /dev/null differ diff --git a/src/static/photos/WeThePeople.jpg b/src/static/photos/WeThePeople.jpg deleted file mode 100644 index 0e92ca3..0000000 Binary files a/src/static/photos/WeThePeople.jpg and /dev/null differ diff --git a/src/static/photos/WeThePeople_Districts.jpg b/src/static/photos/WeThePeople_Districts.jpg deleted file mode 100644 index 53eac4d..0000000 Binary files a/src/static/photos/WeThePeople_Districts.jpg and /dev/null differ diff --git a/src/static/photos/WeThePeople_NationalsSetup.jpg b/src/static/photos/WeThePeople_NationalsSetup.jpg deleted file mode 100644 index 413a31d..0000000 Binary files a/src/static/photos/WeThePeople_NationalsSetup.jpg and /dev/null differ diff --git a/src/static/photos/books/TyrannyOfMetrics.jpg b/src/static/photos/books/TyrannyOfMetrics.jpg new file mode 100644 index 0000000..652a3f2 Binary files /dev/null and b/src/static/photos/books/TyrannyOfMetrics.jpg differ diff --git a/src/static/photos/chessbed.png b/src/static/photos/chessbed.png deleted file mode 100644 index 0400d6d..0000000 Binary files a/src/static/photos/chessbed.png and /dev/null differ diff --git a/src/static/photos/geovisF.png b/src/static/photos/geovisF.png deleted file mode 100644 index 172189e..0000000 Binary files a/src/static/photos/geovisF.png and /dev/null differ diff --git a/src/static/photos/hagerstownVex2019.jpg b/src/static/photos/hagerstownVex2019.jpg deleted file mode 100644 index 0cff15a..0000000 Binary files a/src/static/photos/hagerstownVex2019.jpg and /dev/null differ diff --git a/src/static/photos/itsa_me.JPG b/src/static/photos/itsa_me.JPG deleted file mode 100644 index 6cd7514..0000000 Binary files a/src/static/photos/itsa_me.JPG and /dev/null differ diff --git a/src/static/photos/logicflow.jpg b/src/static/photos/logicflow.jpg deleted file mode 100644 index 7ebac96..0000000 Binary files a/src/static/photos/logicflow.jpg and /dev/null differ diff --git a/src/static/photos/plexus.jpg b/src/static/photos/plexus.jpg deleted file mode 100644 index b4de7b2..0000000 Binary files a/src/static/photos/plexus.jpg and /dev/null differ diff --git a/src/static/photos/resume.png b/src/static/photos/resume.png deleted file mode 100644 index f810c68..0000000 Binary files a/src/static/photos/resume.png and /dev/null differ diff --git a/src/static/photos/vexcodeButtons.jpeg b/src/static/photos/vexcodeButtons.jpeg deleted file mode 100644 index ad7a861..0000000 Binary files a/src/static/photos/vexcodeButtons.jpeg and /dev/null differ 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 diff --git a/src/templates/projects.html b/src/templates/projects.html index 11d8d74..12834f0 100644 --- a/src/templates/projects.html +++ b/src/templates/projects.html @@ -3,7 +3,6 @@

Projects

-

Shhh shh shh sh sh I know I know I'm gonna revamp this page later

Project status is indicated by the color of the project card:
@@ -14,6 +13,8 @@ - Incomplete

+ +
{% from 'partials/project.html' import project %} {% for i in var["projects"] %} @@ -44,5 +46,7 @@ {% endfor %}
- + + + {% endblock %} \ No newline at end of file