diff --git a/images/email.svg b/images/email.svg
new file mode 100644
index 0000000..ab5daba
--- /dev/null
+++ b/images/email.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/images/favicon.svg b/images/favicon.svg
new file mode 100644
index 0000000..6df3636
--- /dev/null
+++ b/images/favicon.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/images/github.svg b/images/github.svg
new file mode 100644
index 0000000..a36141f
--- /dev/null
+++ b/images/github.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/images/photo.webp b/images/photo.webp
new file mode 100644
index 0000000..f56b019
Binary files /dev/null and b/images/photo.webp differ
diff --git a/images/photo_100px.webp b/images/photo_100px.webp
new file mode 100644
index 0000000..d21e0a2
Binary files /dev/null and b/images/photo_100px.webp differ
diff --git a/images/photo_200px.webp b/images/photo_200px.webp
new file mode 100644
index 0000000..9854769
Binary files /dev/null and b/images/photo_200px.webp differ
diff --git a/index.html b/index.html
index d19ea32..c720e74 100644
--- a/index.html
+++ b/index.html
@@ -1,14 +1,136 @@
-
-
-
-
- root's homepage
-
-
-
- root's class notes
-
- root's projects
-
-
+
+
+
+
+
+
+
+
+ About Me - Arthur Lu
+
+
+
+
+
+
+
+
+
+
+
+
+
Arthur Lu
+
+ Developer
+ Engineer
+ Problem Solver
+
+
+
+
+
My Mission
+
I am a 3rd year Computer Engineering major at the University of California San Diego looking for opportunites in software development and system design.
+
+
+
My Education
+
3rd year Computer Engineering Major at UCSD
+
GPA: 3.9
+
+
+
+
My Languages and Skills
+
+
+
+
+
+
+
+
+
+ Language
+ Experience
+ Frameworks
+
+
+
+
+ C/C++
+ 2 Years
+ gcc, make, Visual Studio
+
+
+ Java
+ 4 Years
+ Android Studio
+
+
+ Python
+ 5 Years
+ PyTorch, scipy, numpy, scikit-learn
+
+
+ Javascript
+ 1 Year
+ ES6, NodeJS, express.js
+
+
+
+
I also have experience with common technologies like Docker, lxc, nginx, and VMWare ESXi.
+
+
+
+
+
My Interests
+
I am interested in Machine Learning, cloud technologies, and distributed computing.
+
+
+
+
+
+
\ No newline at end of file
diff --git a/notes.html b/notes.html
index c031213..f8c0e6a 100644
--- a/notes.html
+++ b/notes.html
@@ -3,39 +3,54 @@
root's class notes
-
+
+
-
- return to root's homepage
- CSE
-
- ECE
-
- MATH
-
- PHYS
-
+
+
+
+
+
+
+
+
+
diff --git a/CSE 100.pdf b/notes/CSE 100.pdf
similarity index 100%
rename from CSE 100.pdf
rename to notes/CSE 100.pdf
diff --git a/CSE 101.pdf b/notes/CSE 101.pdf
similarity index 100%
rename from CSE 101.pdf
rename to notes/CSE 101.pdf
diff --git a/CSE 110.pdf b/notes/CSE 110.pdf
similarity index 100%
rename from CSE 110.pdf
rename to notes/CSE 110.pdf
diff --git a/CSE 140.pdf b/notes/CSE 140.pdf
similarity index 100%
rename from CSE 140.pdf
rename to notes/CSE 140.pdf
diff --git a/CSE 141.pdf b/notes/CSE 141.pdf
similarity index 100%
rename from CSE 141.pdf
rename to notes/CSE 141.pdf
diff --git a/CSE 20.pdf b/notes/CSE 20.pdf
similarity index 100%
rename from CSE 20.pdf
rename to notes/CSE 20.pdf
diff --git a/CSE 21.pdf b/notes/CSE 21.pdf
similarity index 100%
rename from CSE 21.pdf
rename to notes/CSE 21.pdf
diff --git a/ECE 101.pdf b/notes/ECE 101.pdf
similarity index 100%
rename from ECE 101.pdf
rename to notes/ECE 101.pdf
diff --git a/ECE 111.pdf b/notes/ECE 111.pdf
similarity index 100%
rename from ECE 111.pdf
rename to notes/ECE 111.pdf
diff --git a/ECE 35.pdf b/notes/ECE 35.pdf
similarity index 100%
rename from ECE 35.pdf
rename to notes/ECE 35.pdf
diff --git a/ECE 45.pdf b/notes/ECE 45.pdf
similarity index 100%
rename from ECE 45.pdf
rename to notes/ECE 45.pdf
diff --git a/ECE 65.pdf b/notes/ECE 65.pdf
similarity index 100%
rename from ECE 65.pdf
rename to notes/ECE 65.pdf
diff --git a/MATH 18.pdf b/notes/MATH 18.pdf
similarity index 100%
rename from MATH 18.pdf
rename to notes/MATH 18.pdf
diff --git a/MATH 20C.pdf b/notes/MATH 20C.pdf
similarity index 100%
rename from MATH 20C.pdf
rename to notes/MATH 20C.pdf
diff --git a/MATH 20D.pdf b/notes/MATH 20D.pdf
similarity index 100%
rename from MATH 20D.pdf
rename to notes/MATH 20D.pdf
diff --git a/MatLab.pdf b/notes/MatLab.pdf
similarity index 100%
rename from MatLab.pdf
rename to notes/MatLab.pdf
diff --git a/PHYS 2C.pdf b/notes/PHYS 2C.pdf
similarity index 100%
rename from PHYS 2C.pdf
rename to notes/PHYS 2C.pdf
diff --git a/projects.html b/projects.html
index 4e0f2f5..07df43c 100644
--- a/projects.html
+++ b/projects.html
@@ -2,20 +2,32 @@
- root's projects
-
+
+ My Projects - Arthur Lu
+
+
+
+
-
- return to root's homepage
- FRC
-
- ECE 45
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
\ No newline at end of file
diff --git a/scripts/projects.js b/scripts/projects.js
new file mode 100644
index 0000000..7501625
--- /dev/null
+++ b/scripts/projects.js
@@ -0,0 +1,24 @@
+import { Octokit } from "https://cdn.skypack.dev/@octokit/core";
+
+window.addEventListener("DOMContentLoaded", init);
+
+async function init () {
+ const octokit = new Octokit()
+
+ let repos = await octokit.request('GET /users/ltcptgeneral/repos', {
+ username: 'ltcptgeneral'
+ });
+
+ let container = document.querySelector("#projects");
+
+ repos.data.forEach((element) => {
+ let content = document.querySelector("#project-article").content.cloneNode(true);
+ content.querySelector("#project-name").innerText = element.name;
+ content.querySelector("#project-desc").innerText = element.description;
+ content.querySelector("#project-lang").innerText = element.language;
+ content.querySelector("article").addEventListener("click", () => {
+ window.location.assign(element.html_url);
+ });
+ container.append(content)
+ });
+}
\ No newline at end of file
diff --git a/styles/cards.css b/styles/cards.css
new file mode 100644
index 0000000..81ac2cf
--- /dev/null
+++ b/styles/cards.css
@@ -0,0 +1,77 @@
+/*
+Styles for content cards, which are cards of twofold content.
+Each card contains 2 halves, each can be populated with any content.
+Cards alternate style from flat to popped out
+*/
+
+:root {
+ --card-bg-color: #222222;
+ --card-text-color: white;
+}
+
+.single {
+ margin-top: 40px;
+ margin-bottom: 40px;
+ margin-left: auto;
+ margin-right: auto;
+ max-width: 60ch;
+ width: auto;
+}
+
+.card {
+ margin-top: 20px;
+ margin-bottom: 20px;
+ margin-left: 20px;
+ margin-right: 20px;
+ background-color: var(--card-bg-color);
+ color: var(--card-text-color);
+ border-radius: 40px;
+ padding: 20px;
+}
+/* Desktop card -> side by side */
+@media screen and (min-width: 850px) {
+ /* Use grid view to show halves side by side, each with 50% of the space */
+ .card {
+ display: grid;
+ grid-template-columns: 50% 50%;
+ justify-items: center;
+ align-items: center;
+ }
+ .card img {
+ max-width: min(100%, 400px);
+ width: 25vw;
+ height: auto;
+ }
+}
+/* Phone or tablet card -> top to bottom */
+@media screen and (max-width: 850px) {
+ /* Use grid view to show halves side by side, each with 50% of the space */
+ .card {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ }
+ .card img {
+ max-width: min(100%, 400px);
+ width: 50vh;
+ height: auto;
+ }
+}
+/* Ensure halves are no more than 60 characters, and ensure 20px of separation between halves */
+.card > * {
+ width: fit-content;
+ max-width: 60ch;
+ margin: 20px;
+}
+.card > * > *:first-child {
+ margin-top: 0px;
+}
+.card > * > *:last-child {
+ margin-bottom: 0px;
+}
+.card img {
+ border-radius: 20px;
+}
+.card[data-reverse] {
+ flex-direction: column-reverse;
+}
\ No newline at end of file
diff --git a/styles/projects.css b/styles/projects.css
new file mode 100644
index 0000000..8b52bac
--- /dev/null
+++ b/styles/projects.css
@@ -0,0 +1,11 @@
+article {
+ background-color: #DDD;
+ border: 1px solid black;
+ border-radius: 16px;
+ padding: 20px;
+ margin-top: 20px;
+ box-shadow: 10px 5px 5px black;
+ max-width: 60ch;
+ margin-left: auto;
+ margin-right: auto;
+}
\ No newline at end of file
diff --git a/styles/styles.css b/styles/styles.css
new file mode 100644
index 0000000..12be234
--- /dev/null
+++ b/styles/styles.css
@@ -0,0 +1,95 @@
+/*
+Common styles across all pages, primarily content size and color and basic page layout styling
+*/
+
+/* Custom colors, which can be easily changed here */
+:root {
+ --main-bg-color: white;
+ --main-text-color: black;
+ --accent-bg-color: black;
+ --accent-text-color: #AAAAFF;
+}
+
+/* Set default font and font weight */
+* {
+ font-family: 'FreeMono', monospace;
+ font-weight: 600;
+}
+
+/* Set font size for common content items h1, h2, h3, p (aim for larger text) */
+h1 {
+ text-align: center;
+ font-size: 4rem;
+}
+h2 {
+ text-align: center;
+ font-size: 2rem;
+}
+h3 {
+ text-align: center;
+ font-size: 1.5rem;
+}
+p {
+ font-size: 1.25rem;
+}
+
+/*
+Styles to set the generic page layout, use a grid layout for body to ensure the footer stays in the bottom
+Also make the header sticky, because users mgiht want navigation in the middle of the page
+*/
+body {
+ margin: 0px;
+ background-color: var(--main-bg-color);
+ color: var(--main-text-color);
+ display: grid;
+ grid-template-rows: auto 1fr auto;
+ min-height: 100vh;
+}
+header {
+ position: sticky;
+ top: 0;
+ z-index: 1;
+}
+header, footer {
+ padding: 10px;
+ background-color: var(--accent-bg-color);
+ color: var(--accent-text-color);
+}
+main {
+ padding: 10px;
+ height: 100%;
+}
+
+/* TODO: add responsiveness, temporarily use flex-wrap */
+nav {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 2ch;
+ justify-content: center;
+}
+
+nav a {
+ font-size: x-large;
+ color: var(--accent-text-color);
+ text-decoration: underline 0.1em var(--accent-bg-color);
+ transition: text-decoration-color 500ms;
+}
+nav a:hover {
+ text-decoration: underline 0.1em var(--accent-text-color);
+}
+
+/* Desktop - restrict content to around 1080px, which should be plenty of space*/
+@media screen and (min-width: 1120px) {
+ main {
+ margin: auto;
+ width: 1080px;
+ }
+}
+/* Tablet or phone - use all of the avaliable space*/
+@media screen and (max-width:1120px) {
+}
+
+/* footer styles */
+footer {
+ text-align: center;
+}
\ No newline at end of file
diff --git a/styles/tables.css b/styles/tables.css
new file mode 100644
index 0000000..8e84604
--- /dev/null
+++ b/styles/tables.css
@@ -0,0 +1,58 @@
+/*
+Styles for tables, which are made more responsive
+*/
+@media screen and (min-width: 480px) {
+ table {
+ border-collapse: collapse;
+ border-spacing: 0;
+ width: 100%;
+ border: 1px solid var(--table-accent-color);
+ }
+ th, td {
+ text-align: left;
+ padding: 8px;
+ }
+ th {
+ background-color: var(--table-accent-color);
+ }
+ tr:first-child {
+ border-top: 1px solid white;
+ }
+ tr {
+ border-bottom: 1px solid white;
+ }
+}
+/* I want to make the table more viewable on mobile, code largely adopted from https://css-tricks.com/responsive-data-tables/ */
+/* Change table structure if using a very small viewport */
+@media screen and (max-width: 480px) {
+ /* Force table to not be like tables anymore */
+ table, thead, tbody, th, td, tr {
+ display: block;
+ }
+ /* Hide table headers (but not display: none;, for accessibility) */
+ thead tr {
+ visibility: hidden;
+ height: 0px;
+ }
+ tr:first-child {
+ border-top: 1px solid black;
+ }
+ tr {
+ border-bottom: 1px solid black;
+ }
+ table.labeled td {
+ /* Behave like a "row" */
+ position: relative;
+ padding-left: 50%;
+ padding-top: 10px;
+ padding-bottom: 10px;
+ }
+ td:before {
+ /* Now like a table header */
+ position: absolute;
+ /* Top/left values mimic padding */
+ top: 10px;
+ left: 10px;
+ width: 45%;
+ }
+}
\ No newline at end of file