diff --git a/res/script.js b/res/script.js
index 8796719..0196329 100644
--- a/res/script.js
+++ b/res/script.js
@@ -99,12 +99,12 @@ window.addEventListener("resize", () => {
// WORK PAGE TILES
var workExperiences = [
- { path: "../src/nm.html", year: 2023, season: "SUMMER", projectName: "Northwestern Mutual", background: "../assets/logos/nm.png", description: "SEE INTERNSHIP 🡥" },
- { path: "../src/melodics.html", year: 2023, season: "SPRING", projectName: "Melodics", background: "../assets/logos/melodics.png", description: "SEE PROJECT 🡥" },
- { path: "../src/ga.html", year: 2022, season: "SUMMER", projectName: "General Atomics", background: "../assets/logos/ga.png", description: "SEE INTERNSHIP 🡥" },
- { path: "../src/course-planner.html", year: 2023, season: "SPRING", projectName: "Course Planner", background: "../assets/logos/cp.png", description: "SEE PROJECT 🡥" },
- { path: "../src/t4g.html", year: 2023, season: "SPRING", projectName: "Tech 4 Good", background: "../assets/logos/t4g1.png", description: "SEE EXPERIENCE 🡥" },
- { path: "../src/ahacks.html", year: 2021, season: "WINTER", projectName: "USC AthenaHacks", background: "../assets/logos/ahacks.png", description: "SEE HACKATHON 🡥" },
+ { path: "../src/nm.html", year: 2023, season: "SUMMER", projectName: "Northwestern Mutual", background: "../assets/logos/nm.png", description: "SEE INTERNSHIP âžš" },
+ { path: "../src/melodics.html", year: 2023, season: "SPRING", projectName: "Melodics", background: "../assets/logos/melodics.png", description: "SEE PROJECT âžš" },
+ { path: "../src/ga.html", year: 2022, season: "SUMMER", projectName: "General Atomics", background: "../assets/logos/ga.png", description: "SEE INTERNSHIP âžš" },
+ { path: "../src/course-planner.html", year: 2023, season: "SPRING", projectName: "Course Planner", background: "../assets/logos/cp.png", description: "SEE PROJECT âžš" },
+ { path: "../src/t4g.html", year: 2023, season: "SPRING", projectName: "Tech 4 Good", background: "../assets/logos/t4g1.png", description: "SEE EXPERIENCE âžš" },
+ { path: "../src/ahacks.html", year: 2021, season: "WINTER", projectName: "USC AthenaHacks", background: "../assets/logos/ahacks.png", description: "SEE HACKATHON âžš" },
];
// SORT WORK TILES BY YEAR AND SEASON (NEWEST -> OLDEST)
diff --git a/res/work.css b/res/work.css
index 3b1a0d3..743d2f9 100644
--- a/res/work.css
+++ b/res/work.css
@@ -6,6 +6,7 @@ body {
animation: fadeInAnimation ease 1.3s;
}
+
/* WORK EXPERIENCE TILES */
.work-tiles {
@@ -303,6 +304,7 @@ body {
}
#section3 .arrow-container i {
+ padding-top: 0.4em;
font-size: 1em;
color: #333333;
}
diff --git a/src/ahacks.html b/src/ahacks.html
index c339022..5df55f5 100644
--- a/src/ahacks.html
+++ b/src/ahacks.html
@@ -70,7 +70,7 @@
Overview
We developed the flow control and voice functions of our application using Twilio Console Studio, using interactions such as "split based on dial or speech" and "connect call to." We linked our Twilio flow chart to our mobile user interface using React-Native and published the application through the Expo-CLI framework. Learn more at the link below!
diff --git a/src/course-planner.html b/src/course-planner.html
index 544e4aa..f87d8d9 100644
--- a/src/course-planner.html
+++ b/src/course-planner.html
@@ -67,7 +67,7 @@ Overview
a Python-based web framework that allows for the development of efficient database driven web applications (similar to Django or Flask). See our project below!
diff --git a/src/nm.html b/src/nm.html
index ba04bb4..6690a16 100644
--- a/src/nm.html
+++ b/src/nm.html
@@ -64,9 +64,10 @@ Northwestern Mutual
Software Engineering Internship
Overview
- Northwestern Mutual (NM) ↗ is a financial services and life insurance company based in Milwaukee, WI. I spent the
- summer working on a client communications team within NM's Engineering Solutions Delivery division, which is responsible for modernizing the development and delivery of communications and applications
- used by over 10,000 field representatives. These client communications can consist of physical contracts, statements, bills, and correspondence, as well as digital notifications via text or email according to client preferences.
+ Northwestern Mutual (NM) ↗ is a financial services and life insurance company based in
+ Milwaukee, WI. I spent the summer working on a client communications team within NM's Engineering Solutions Delivery division, which is responsible for modernizing the development and delivery
+ of communications and applications used by over 10,000 field representatives. These client communications can consist of physical contracts, statements, bills, and correspondence, as well as digital notifications via text or email
+ according to client preferences.
diff --git a/src/t4g.html b/src/t4g.html
index 2757ea8..9779bf0 100644
--- a/src/t4g.html
+++ b/src/t4g.html
@@ -63,42 +63,53 @@
UCSC Tech4Good
APIs & Frameworks
Overview
-
UC Santa Cruz's Tech4Good Lab ↗ is a research organization dedicated to social computing and developing systems to help individuals and communities to thrive in work, education, and more. During my time at the lab, I worked on the APIs and Frameworks team where I was involved in adding functionality to Causeway ↗, an educational app where users can learn skills like web development through streamlined learning pathways, project hierarchies, mentorship, and collaboration.
+
UC Santa Cruz's Tech4Good Lab ↗ is a research organization dedicated to social computing
+ and developing systems to help individuals and communities to thrive in work, education, and more. During my time at the lab, I worked on the APIs and Frameworks team where I was involved in adding functionality
+ to Causeway ↗, an educational app where users can learn skills like web development through streamlined
+ learning pathways, project hierarchies, mentorship, and collaboration.
Task
-
My teammate and I were responsible for developing an integrated development environment (IDE) that could be added to Causeway to allow users to learn programming concepts hands-on. The IDE had to include the following components:
+
My teammate and I were responsible for developing an integrated development environment (IDE) that could be added to Causeway to allow users to learn programming concepts hands-on. The IDE had to include the following
+ components:
Instructions Pane: containing step-by-step tutorials for specific tasks/projects
File Panel: to allow the user to select files
Code Editor: to allow the user to make changes to a selected file
Output Pane: to view the results of code changes (ex: a html webpage)
Terminal Pane: to allow the user to compile and run code
-
To accomplish this task, we used the Stackblitz WebContainers API ↗, which allows us to boot up a WebContainer― a browser-based runtime for executing applications and operating system commands. From there, we can populate the container's file system, install packages, and finally run the IDE server in a browser window.
+
To accomplish this task, we used the Stackblitz WebContainers API ↗, which allows us to boot up a WebContainer―
+ a browser-based runtime for executing applications and operating system commands. From there, we can populate the container's file system, install packages, and finally run the IDE server in a browser window.
Development
Setting up the WebContainer
-
First, we constructed the WebContainer using Vite ↗, a development tool equipped with a dev server and used for building modern web apps. This involved constructing referenceable HTML objects for our code editor/textarea and output boxes as depicted below:
+
First, we constructed the WebContainer using Vite ↗, a development tool equipped with a dev server and used for
+ building modern web apps. This involved constructing referenceable HTML objects for our code editor/textarea and output boxes as depicted below:
-
Then, we installed the WebContainers API package and created an event listener for booting up a WebContainer instance, and imported an Express app to the WebContainer, which contains the files index.js (for app startup and routing) and package.json (to handle dependencies), into our main JS module. At this point, we were able to load the contents of a file in the code editor.
+
Then, we installed the WebContainers API package and created an event listener for booting up a WebContainer instance, and imported an Express app to the WebContainer, which contains the files index.js (for app startup and routing) and package.json (to handle dependencies), into our main JS module. At this point, we were able to load the contents of a file in the code editor.
Running the Dev Server
-
To be able to run commands such as "npm install" from inside the WebContainer, we created an installDependencies function inside the event listener. From there, we created another function called startDevServer, which
+
To be able to run commands such as "npm install" from inside the WebContainer, we created an installDependencies function inside the event listener. From there, we created another function called startDevServer,
+ which
Runs the server using the command "npm run dev"
Listens to the server-ready event
Assigns a URL to the output box of the WebContainer
This allowed us to run the Express app inside the WebContainer, and successfully update the output box based on the code in the code editor.
Creating a File System Tree
-
We utilized the API's file system operations to build a file tree, which involved recursively traversing through the directories with the readdir function. Then, we used mat-tree (an Angular Material design component) to create the file tree pane UI. In order to make a selected file editable in the code editor, we created a function to write changes to the code editor and used CodeMirror to listen to the value changes and immediately update the output box accordingly. We also styled the code editor for better readability using the corresponding CodeMirror scss code.
+
We utilized the API's file system operations to build a file tree, which involved recursively traversing through the directories with the readdir function. Then, we used mat-tree (an Angular Material
+ design component) to create the file tree pane UI. In order to make a selected file editable in the code editor, we created a function to write changes to the code editor and used CodeMirror to listen to the value
+ changes and immediately update the output box accordingly. We also styled the code editor for better readability using the corresponding CodeMirror scss code.
Connecting a Terminal
-
Finally, we used Xterm.js to embed a terminal in our IDE, which is the same terminal used by Visual Studio Code and other popular IDEs. We constructed a referenceable HTML object for the terminal window and redirected the output of our installDependencies and startDevServer methods to the terminal. Then, we created a button to toggle the visibility of the terminal for a better user experience.
+
Finally, we used Xterm.js to embed a terminal in our IDE, which is the same terminal used by Visual Studio Code and other popular IDEs. We constructed a referenceable HTML object for the terminal window and redirected
+ the output of our installDependencies and startDevServer methods to the terminal. Then, we created a button to toggle the visibility of the terminal for a better user experience.
Reflections
-
Coming from very little experience with JavaScript, this task was super rewarding and helped me learn a lot about working with APIs and frameworks like Angular and Express.js. I enjoyed being able to work in a team alongside other passionate individuals and contribute to a cause that could improve means of education for future students!
+
Coming from very little experience with JavaScript, this task was super rewarding and helped me learn a lot about working with APIs and frameworks like Angular and Express.js. I enjoyed being able to work in a team
+ alongside other passionate individuals and contribute to a cause that could improve means of education for future students!