changing frameworks

This commit is contained in:
2025-11-25 16:37:04 +00:00
parent ada53b87e2
commit 34bd66dd0d
67 changed files with 3125 additions and 491 deletions

2
.gitignore vendored
View File

@@ -19,6 +19,7 @@ coverage
# Editor directories and files
.vscode/*
.vscode/
!.vscode/extensions.json
.idea
*.suo
@@ -26,6 +27,7 @@ coverage
*.njsproj
*.sln
*.sw?
pages/
*.tsbuildinfo

View File

@@ -1,23 +0,0 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>AF</title>
<link rel="icon" type="img/x-icon" href="img/favicon.ico" />
<link rel="stylesheet" href="css/styles.css" />
<script
defer
src="https://cdn.jsdelivr.net/npm/alpinejs@3.x.x/dist/cdn.min.js"
></script>
</head>
<body>
<!-- Navbar -->
<!-- Main content -->
<main></main>
<!-- Footer -->
<footer></footer>
</body>
</html>

View File

@@ -1,45 +0,0 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>AF</title>
<link rel="icon" type="/img/x-icon" href="/img/favicon.ico" />
<link rel="stylesheet" href="/css/styles.css" />
<script
defer
src="https://cdn.jsdelivr.net/npm/alpinejs@3.x.x/dist/cdn.min.js"
></script>
</head>
<body>
<!-- Navbar -->
<nav></nav>
<!-- Main content -->
<main>
<h1>Cyber Security</h1>
<a href="https://pwn.college/">pwn.college</a>
<a href="https://osintframework.com/">OSINT</a>
<a href="https://overthewire.org/">OverTheWire</a>
<a href="https://tryhackme.com/">TryHackMe</a>
<h1>Radio Stations</h1>
<a href="https://www.radiohelsinki.fi/">Radio Helsinki</a>
<a href="https://palanga.live/">Palanga Street Radio</a>
<a href="https://idaidaida.net/">IDA Radio</a>
<a href="https://www.tirkultura.lv/">Tīrkultūra</a>
<h1>Chinese</h1>
<a href="https://www.mdbg.net/chinese/dictionary"
>MDBG Chinese Dictionary</a
>
<h1>Art</h1>
<a href="https://www.fridakahlo.org/">Frida Kahlo</a>
<a href="https://www.cameronsworld.net/">Cameron's world</a>
</main>
<!-- Footer -->
<footer></footer>
</body>
</html>

View File

@@ -1,5 +0,0 @@
# CV
This is my CV.
Please contact me if you have any questions, I am always happy to talk! ^_^
adam.a.french@outlook.com

View File

@@ -1,77 +0,0 @@
<!doctype html>
<html lang="en">
<head>
<link rel="stylesheet" href="/css/cv_styles.css" />
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Adam French - Cover Letters</title>
<style>
@media print {
@page {
size: A5 landscape;
margin: 0;
}
}
</style>
</head>
<body>
<table id="cover-nav" class="cover-nav no-print">
<tr>
<th>Companies</th>
<th>Completed</th>
</tr>
<tr>
<td><a href="#LloydsBank">Lloyds</a></td>
<td>YES</td>
</tr>
</table>
<div
class="no-print"
style="width: 100%; text-align: center; margin: 20px 0"
></div>
<div id="LloydsBank" class="a5page">
<div class="contact">
<h1>Adam French</h1>
<!-- <a href="index.html"><img width=25 height=50 src="img/rune.png"></a> -->
<div class="contact-details">
<p>+447563266931</p>
<p>adam.a.french@outlook.com</p>
</div>
</div>
<h2>BAE graduate digital intelligence software engineer</h2>
<p>
I am writing to express my interest in your software engineering
position. BAE Systems has hosted multiple stools at the
University of Leeds and have always exhibited their development
of leading-edge software and technology. This is where the
origin of my interest in BAE systems emerged and I'm hopeful
that this interest shall continue.
</p>
<p>
I'm confidient im a strong fit for this role. My technical
background includes extensive experience with frontend
frameworks such as React. My devotion however lies more in
backend development as has more potential to graple problems
related to optimisation and designing coherent interfaces.
</p>
<p>
<em> The C# Programming Yellow Book </em> was my first
introduction to C# during A-Level, Java was our vessel for
teaching object-orientated programming at university. I am
confident I have the relevant experience to grasp the languages
stated for the role I am applying for.
</p>
<p>
My academic background in Computer Science and Mathematics has
honed my ability to translate abstract concepts into structured,
logical solutions. Just as I have transformed theoretical
hypotheses into formal proofs, I aim to transform business
requirements into robust, maintainable software systems through
collaboration and rigorous reasoning.
</p>
<p>Thank you for reading - Adam F</p>
</div>
</body>
</html>

View File

@@ -1,337 +0,0 @@
<!doctype html>
<html lang="en">
<head>
<link rel="stylesheet" href="/css/cv_styles.css" />
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Adam French - CV</title>
<style>
@media print {
@page {
size: A4 portrait;
margin: 0;
}
</style>
</head>
<body>
<a class="no-print" href="/index.html"><h1>Take me back!!!!</h1></a>
<div
class="no-print"
style="width: 100%; text-align: center; margin: 20px 0"
>
<h1>Page 1</h1>
</div>
<div class="a4page">
<div class="contact">
<h1>Adam French</h1>
<!-- <a href="covers.html"><img width=25 height=50 src="img/rune.png"></a> -->
<div class="contact-details">
<p>+447563266931</p>
<p>adam.a.french@outlook.com</p>
</div>
</div>
<h2>Profile</h2>
<p>
Passionate about developing robust, efficient software with a
strong focus on maintainability, scalability, and long-term
performance. I take pride in my ability to perform under
pressure, adapt quickly, and contribute effectively in
collaborative, fast-paced environments.
</p>
<p>
My ideal role involves designing and building scalable systems
that balance creativity with problem-solving. I aim to cultivate
meaningful professional connections and contribute to projects
that deliver a clear altruistic impact.
</p>
<h2>Education</h2>
<table>
<tr>
<th>Location</th>
<th>Date</th>
<th>Description</th>
</tr>
<tr>
<td>The University of Leeds</td>
<td>
<!-- <div style="display: flex; flex-direction: column; align-items: center;"> -->
<!-- <span>2021</span> -->
<!-- <span>to</span> -->
<!-- <span>2025</span> -->
<!-- </div> -->
2021-2025
</td>
<td class="row-leftalign">
<strong
>BSc Computer Science with Mathematics
(International)</strong
><br />
<strong
>Average:
81.1%&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;(First
Class Honours) </strong
><br />
<strong>Relevant Courses: </strong>
Procedural Programming, Object Oriented Programming,
Algorithms and Data Structures I & II, Databases,
Computer Processors, Compiler Design and Construction,
Formal Languages and Finite Automata, Probability and
Statistics I, Machine Learning, Graph Algorithms &
Complexity Theory
</td>
</tr>
<tr>
<td>The University of Waterloo</td>
<td>
<!-- <div style="display: flex; flex-direction: column; align-items: center;"> -->
<!-- <span>2023</span> -->
<!-- <span>to</span> -->
<!-- <span>2024</span> -->
<!-- </div> -->
2023-2024
</td>
<td class="row-leftalign">
<strong>Average: 74.5%</strong>
<br />
<strong>Relevant Courses:</strong>
Applied Cryptography, Introduction to Computer Graphics,
Introduction to Rings and Fields with Applications<br /><br />
</td>
</tr>
</table>
<h2>Experience</h2>
<table>
<tr>
<th>Role</th>
<th>Location</th>
<th>Date</th>
<th>Duties</th>
</tr>
<tr>
<td>Student</td>
<td>Wolfram Summer School</td>
<td>2024</td>
<td class="row-leftalign">
Designed and completed a time-constrained research
project exploring Mobile Automata and conditions for
computational reversibility. Communicated findings
through visualizations and presentations.
</td>
</tr>
<tr>
<td>Bartender</td>
<td>Belgrave Music Hall</td>
<td>2022-2025</td>
<td class="row-leftalign">
Delivered heartfelt customer service in various
fast-paced, high-pressure hospitality environments.
</td>
</tr>
<tr>
<td>Cashier Assistant</td>
<td>To The Rise Bakery</td>
<td>Summer 2022</td>
<td class="row-leftalign">
Prepared coffee, served customers, presented goods,
cleaned bakery equipment, and made toasties.
</td>
</tr>
<tr>
<td>Waiter</td>
<td>BFI Bar and Kitchen</td>
<td>Summer 2020</td>
<td class="row-leftalign">
Managed bookings, allocated tables, handled complaints,
ran food and drinks, and maintained BOH cleanliness.
</td>
</tr>
</table>
</div>
<div
class="no-print"
style="width: 100%; text-align: center; margin: 20px 0"
>
<h1>Page 2</h1>
</div>
<div class="a4page">
<h2>Personal Projects</h2>
<table>
<tr>
<th>Project</th>
<th>Skills</th>
<th>Date</th>
<th>Description</th>
</tr>
<tr>
<td>Mobile Automata</td>
<td>Mathematica, JS, Logic, Analysis</td>
<td>2024</td>
<td class="row-leftalign">
Designed experiments and analysis tools to identify
pattern similarities among automata. Investigated
computational properties by defining specific phenomena
and observing emergent behaviors through custom
simulations.
</td>
</tr>
<tr>
<td>Computer Graphics</td>
<td>Rust, Linear Algebra, Multi-threading</td>
<td>2023</td>
<td class="row-leftalign">
Developed a multi-threaded, recursive ray tracer as part
of a University of Waterloo project. Explored advanced
ray-surface intersection techniques, including
experimental rendering of higher-dimensional geometries.
</td>
</tr>
<tr>
<td>Arduino Programming & Circuits</td>
<td>C++, Soldering, Embedded Systems</td>
<td>2022 - 2025</td>
<td class="row-leftalign">
Created room decorations using salvaged components from
discarded electronics.
</td>
</tr>
<tr>
<td>Memory Palace Website</td>
<td>TS, Rust, React, Redux, SQLite</td>
<td>2025</td>
<td class="row-leftalign">
Full-stack web application implementing the “memory
palace” memorization technique. Built with a React/Redux
frontend, Rust-based Actix backend, and SQLite database.
</td>
</tr>
<tr>
<td>Personal Websites</td>
<td>HTML, JS, Design, UI/UX</td>
<td>Ongoing</td>
<td class="row-leftalign">
Continuously evolving my personal site and designing
other creative websites. Experimented with Svelte, Vue,
and React/Redux using libraries such as P5 and Three.js.
</td>
</tr>
<tr>
<td>3D Printing</td>
<td>FreeCAD</td>
<td>Ongoing</td>
<td class="row-leftalign">
Designing and manufacturing household objects and
repairs, including replacement window handles, desk
organizers, and 3D scans.
</td>
</tr>
</table>
<h2>Commitments</h2>
<table>
<tr>
<th>Activity</th>
<th>Date</th>
<th>Details</th>
</tr>
<tr>
<td>Learning Mandarin</td>
<td>Ongoing</td>
<td class="row-leftalign">
Aiming to complete HSK 3 proficiency exam by December
2026
</td>
</tr>
<!-- <tr> -->
<!-- <td>Cybersecurity Training</td> -->
<!-- <td>Ongoing</td> -->
<!-- <td class="row-leftalign"> -->
<!-- Using <em>pwn.college, tryhackme.com</em> to learn pentesting techniques.</td> -->
<!-- </tr> -->
<tr>
<td>Sports Activities</td>
<td>Ongoing</td>
<td class="row-leftalign">
Run weekly, active gym attendee, regularly go hiking.
</td>
</tr>
<tr>
<td>Construction and Landscaping</td>
<td>Ongoing</td>
<td class="row-leftalign">
Involved in building a house in Bulgaria.
</td>
</tr>
<tr>
<td>University of Waterloo Film Club</td>
<td>2023-2024</td>
<td class="row-leftalign">
Worked on student films <em>“Moon King”</em> and
<em>“HAM”</em>, available online.
</td>
</tr>
<tr>
<td>Socratica</td>
<td>2023-2024</td>
<td class="row-leftalign">
Worked with like-minded individuals exploring innovative
tech.
</td>
</tr>
<tr>
<td>University of Leeds Hockey Club</td>
<td>2022-2023</td>
<td class="row-leftalign">
Played for the University of Leeds Hockey Club.
</td>
</tr>
<tr>
<td>Royal Air Force Air Cadets</td>
<td>2017-2020</td>
<td class="row-leftalign">
Achieved the role of Sergeant and “Best Cadet" award.
</td>
</tr>
</table>
<!-- <div class="interests"> -->
<!-- <table> -->
<!-- <tr><th>Personal qualities</th></tr> -->
<!-- <tr><td>Intuitive</td></tr> -->
<!-- <tr><td>Communicative</td></tr> -->
<!-- <tr><td>Adaptable</td></tr> -->
<!-- <tr><td>Versatile</td></tr> -->
<!-- <tr><td>Diligent</td></tr> -->
<!-- </table> -->
<!-- <table> -->
<!-- <tr><th>Interests</th></tr> -->
<!-- <tr><td>Neuroscience</td></tr> -->
<!-- <tr><td>Bouldering</td></tr> -->
<!-- <tr><td>Science Fiction</td></tr> -->
<!-- <tr><td>Mathematics</td></tr> -->
<!-- <tr><td>Hiking</td></tr> -->
<!-- </table> -->
<!-- <table> -->
<!-- <tr><th>Languages</th></tr> -->
<!-- <tr><td>Rust</td></tr> -->
<!-- <tr><td>HTML/JS</td></tr> -->
<!-- <tr><td>C/C++</td></tr> -->
<!-- <tr><td>React/Vue</td></tr> -->
<!-- <tr><td>Python</td></tr> -->
<!-- </table> -->
<!-- </div> -->
</div>
<div
class="no-print"
style="width: 100%; text-align: center; margin: 20px 0"
>
<h1>END</h1>
</div>
</body>
</html>

View File

@@ -1 +0,0 @@
<a class="no-print" href="/index.html"><h1>Take me back!!!!</h1></a>

View File

@@ -1 +0,0 @@
<a class="no-print" href="/index.html"><h1>Take me back!!!!</h1></a>

View File

@@ -1 +0,0 @@
<a class="no-print" href="/index.html"><h1>Take me back!!!!</h1></a>

View File

@@ -1 +0,0 @@
<a class="no-print" href="/index.html"><h1>Take me back!!!!</h1></a>

38
nginx/vue/README.md Normal file
View File

@@ -0,0 +1,38 @@
# my-vue-app
This template should help get you started developing with Vue 3 in Vite.
## Recommended IDE Setup
[VS Code](https://code.visualstudio.com/) + [Vue (Official)](https://marketplace.visualstudio.com/items?itemName=Vue.volar) (and disable Vetur).
## Recommended Browser Setup
- Chromium-based browsers (Chrome, Edge, Brave, etc.):
- [Vue.js devtools](https://chromewebstore.google.com/detail/vuejs-devtools/nhdogjmejiglipccpnnnanhbledajbpd)
- [Turn on Custom Object Formatter in Chrome DevTools](http://bit.ly/object-formatters)
- Firefox:
- [Vue.js devtools](https://addons.mozilla.org/en-US/firefox/addon/vue-js-devtools/)
- [Turn on Custom Object Formatter in Firefox DevTools](https://fxdx.dev/firefox-devtools-custom-object-formatters/)
## Customize configuration
See [Vite Configuration Reference](https://vite.dev/config/).
## Project Setup
```sh
npm install
```
### Compile and Hot-Reload for Development
```sh
npm run dev
```
### Compile and Minify for Production
```sh
npm run build
```

13
nginx/vue/index.html Normal file
View File

@@ -0,0 +1,13 @@
<!DOCTYPE html>
<html lang="">
<head>
<meta charset="UTF-8">
<link rel="icon" href="/favicon.ico">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Vite App</title>
</head>
<body>
<div id="app"></div>
<script type="module" src="/src/main.js"></script>
</body>
</html>

8
nginx/vue/jsconfig.json Normal file
View File

@@ -0,0 +1,8 @@
{
"compilerOptions": {
"paths": {
"@/*": ["./src/*"]
}
},
"exclude": ["node_modules", "dist"]
}

2557
nginx/vue/package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

23
nginx/vue/package.json Normal file
View File

@@ -0,0 +1,23 @@
{
"name": "nginx-html",
"version": "0.0.0",
"private": true,
"type": "module",
"engines": {
"node": "^20.19.0 || >=22.12.0"
},
"scripts": {
"dev": "vite",
"build": "vite build",
"preview": "vite preview"
},
"dependencies": {
"vue": "^3.5.22",
"vue-router": "^4.6.3"
},
"devDependencies": {
"@vitejs/plugin-vue": "^6.0.1",
"vite": "^7.1.11",
"vite-plugin-vue-devtools": "^8.0.3"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

View File

Before

Width:  |  Height:  |  Size: 194 KiB

After

Width:  |  Height:  |  Size: 194 KiB

View File

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 32 KiB

View File

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

Before

Width:  |  Height:  |  Size: 61 KiB

After

Width:  |  Height:  |  Size: 61 KiB

View File

Before

Width:  |  Height:  |  Size: 56 KiB

After

Width:  |  Height:  |  Size: 56 KiB

View File

Before

Width:  |  Height:  |  Size: 246 KiB

After

Width:  |  Height:  |  Size: 246 KiB

View File

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 17 KiB

View File

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 13 KiB

26
nginx/vue/src/App.vue Normal file
View File

@@ -0,0 +1,26 @@
<script setup>
import { RouterLink, RouterView } from "vue-router";
</script>
<template>
<header>
<img
alt="Vue logo"
class="logo"
src="@/assets/logo.svg"
width="125"
height="125"
/>
<div class="wrapper">
<nav>
<RouterLink to="/">Home</RouterLink>
<RouterLink to="/about">About</RouterLink>
</nav>
</div>
</header>
<RouterView />
</template>
<style scoped></style>

11
nginx/vue/src/main.js Normal file
View File

@@ -0,0 +1,11 @@
import "./assets/main.css";
import { createApp } from "vue";
import App from "./App.vue";
import router from "./router";
const app = createApp(App);
app.use(router);
app.mount("#app");

View File

@@ -0,0 +1,23 @@
import { createRouter, createWebHistory } from "vue-router";
import Home from "../views/Home.vue";
const router = createRouter({
history: createWebHistory(import.meta.env.BASE_URL),
routes: [
{
path: "/",
name: "home",
component: Home,
},
{
path: "/cv",
name: "cv",
// route level code-splitting
// this generates a separate chunk (About.[hash].js) for this route
// which is lazy-loaded when the route is visited.
component: () => import("../views/CV.vue"),
},
],
});
export default router;

359
nginx/vue/src/views/CV.vue Normal file
View File

@@ -0,0 +1,359 @@
<template>
<div>
<RouterLink class="no-print" to="/">Home</RouterLink>
<div
class="no-print"
style="width: 100%; text-align: center; margin: 20px 0"
>
<h1>Page 1</h1>
</div>
<div class="a4page">
<div class="contact">
<h1>Adam French</h1>
<!-- <a href="covers.html"><img width=25 height=50 src="img/rune.png"></a> -->
<div class="contact-details">
<p>+447563266931</p>
<p>adam.a.french@outlook.com</p>
</div>
</div>
<h2>Profile</h2>
<p>
Passionate about developing robust, efficient software with a
strong focus on maintainability, scalability, and long-term
performance. I take pride in my ability to perform under
pressure, adapt quickly, and contribute effectively in
collaborative, fast-paced environments.
</p>
<p>
My ideal role involves designing and building scalable systems
that balance creativity with problem-solving. I aim to cultivate
meaningful professional connections and contribute to projects
that deliver a clear altruistic impact.
</p>
<h2>Education</h2>
<table>
<thead>
<tr>
<th>Location</th>
<th>Date</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>The University of Leeds</td>
<td>
<!-- <div style="display: flex; flex-direction: column; align-items: center;"> -->
<!-- <span>2021</span> -->
<!-- <span>to</span> -->
<!-- <span>2025</span> -->
<!-- </div> -->
2021-2025
</td>
<td class="row-leftalign">
<strong
>BSc Computer Science with Mathematics
(International)</strong
><br />
<strong
>Average:
81.1%&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;(First
Class Honours) </strong
><br />
<strong>Relevant Courses: </strong>
Procedural Programming, Object Oriented Programming,
Algorithms and Data Structures I & II, Databases,
Computer Processors, Compiler Design and
Construction, Formal Languages and Finite Automata,
Probability and Statistics I, Machine Learning,
Graph Algorithms & Complexity Theory
</td>
</tr>
<tr>
<td>The University of Waterloo</td>
<td>
<!-- <div style="display: flex; flex-direction: column; align-items: center;"> -->
<!-- <span>2023</span> -->
<!-- <span>to</span> -->
<!-- <span>2024</span> -->
<!-- </div> -->
2023-2024
</td>
<td class="row-leftalign">
<strong>Average: 74.5%</strong>
<br />
<strong>Relevant Courses:</strong>
Applied Cryptography, Introduction to Computer
Graphics, Introduction to Rings and Fields with
Applications<br /><br />
</td>
</tr>
</tbody>
</table>
<h2>Experience</h2>
<table>
<thead>
<tr>
<th>Role</th>
<th>Location</th>
<th>Date</th>
<th>Duties</th>
</tr>
</thead>
<tbody>
<tr>
<td>Student</td>
<td>Wolfram Summer School</td>
<td>2024</td>
<td class="row-leftalign">
Designed and completed a time-constrained research
project exploring Mobile Automata and conditions for
computational reversibility. Communicated findings
through visualizations and presentations.
</td>
</tr>
<tr>
<td>Bartender</td>
<td>Belgrave Music Hall</td>
<td>2022-2025</td>
<td class="row-leftalign">
Delivered heartfelt customer service in various
fast-paced, high-pressure hospitality environments.
</td>
</tr>
<tr>
<td>Cashier Assistant</td>
<td>To The Rise Bakery</td>
<td>Summer 2022</td>
<td class="row-leftalign">
Prepared coffee, served customers, presented goods,
cleaned bakery equipment, and made toasties.
</td>
</tr>
<tr>
<td>Waiter</td>
<td>BFI Bar and Kitchen</td>
<td>Summer 2020</td>
<td class="row-leftalign">
Managed bookings, allocated tables, handled
complaints, ran food and drinks, and maintained BOH
cleanliness.
</td>
</tr>
</tbody>
</table>
</div>
<div
class="no-print"
style="width: 100%; text-align: center; margin: 20px 0"
>
<h1>Page 2</h1>
</div>
<div class="a4page">
<h2>Personal Projects</h2>
<table>
<thead>
<tr>
<th>Project</th>
<th>Skills</th>
<th>Date</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>Mobile Automata</td>
<td>Mathematica, JS, Logic, Analysis</td>
<td>2024</td>
<td class="row-leftalign">
Designed experiments and analysis tools to identify
pattern similarities among automata. Investigated
computational properties by defining specific
phenomena and observing emergent behaviors through
custom simulations.
</td>
</tr>
<tr>
<td>Computer Graphics</td>
<td>Rust, Linear Algebra, Multi-threading</td>
<td>2023</td>
<td class="row-leftalign">
Developed a multi-threaded, recursive ray tracer as
part of a University of Waterloo project. Explored
advanced ray-surface intersection techniques,
including experimental rendering of
higher-dimensional geometries.
</td>
</tr>
<tr>
<td>Arduino Programming & Circuits</td>
<td>C++, Soldering, Embedded Systems</td>
<td>2022 - 2025</td>
<td class="row-leftalign">
Created room decorations using salvaged components
from discarded electronics.
</td>
</tr>
<tr>
<td>Memory Palace Website</td>
<td>TS, Rust, React, Redux, SQLite</td>
<td>2025</td>
<td class="row-leftalign">
Full-stack web application implementing the memory
palace memorization technique. Built with a
React/Redux frontend, Rust-based Actix backend, and
SQLite database.
</td>
</tr>
<tr>
<td>Personal Websites</td>
<td>HTML, JS, Design, UI/UX</td>
<td>Ongoing</td>
<td class="row-leftalign">
Continuously evolving my personal site and designing
other creative websites. Experimented with Svelte,
Vue, and React/Redux using libraries such as P5 and
Three.js.
</td>
</tr>
<tr>
<td>3D Printing</td>
<td>FreeCAD</td>
<td>Ongoing</td>
<td class="row-leftalign">
Designing and manufacturing household objects and
repairs, including replacement window handles, desk
organizers, and 3D scans.
</td>
</tr>
</tbody>
<tbody></tbody>
</table>
<h2>Commitments</h2>
<table>
<thead>
<tr>
<th>Activity</th>
<th>Date</th>
<th>Details</th>
</tr>
</thead>
<tbody>
<tr>
<td>Learning Mandarin</td>
<td>Ongoing</td>
<td class="row-leftalign">
Aiming to complete HSK 3 proficiency exam by
December 2026
</td>
</tr>
<!-- <tr> -->
<!-- <td>Cybersecurity Training</td> -->
<!-- <td>Ongoing</td> -->
<!-- <td class="row-leftalign"> -->
<!-- Using <em>pwn.college, tryhackme.com</em> to learn pentesting techniques.</td> -->
<!-- </tr> -->
<tr>
<td>Sports Activities</td>
<td>Ongoing</td>
<td class="row-leftalign">
Run weekly, active gym attendee, regularly go
hiking.
</td>
</tr>
<tr>
<td>Construction and Landscaping</td>
<td>Ongoing</td>
<td class="row-leftalign">
Involved in building a house in Bulgaria.
</td>
</tr>
<tr>
<td>University of Waterloo Film Club</td>
<td>2023-2024</td>
<td class="row-leftalign">
Worked on student films <em>Moon King</em> and
<em>HAM</em>, available online.
</td>
</tr>
<tr>
<td>Socratica</td>
<td>2023-2024</td>
<td class="row-leftalign">
Worked with like-minded individuals exploring
innovative tech.
</td>
</tr>
<tr>
<td>University of Leeds Hockey Club</td>
<td>2022-2023</td>
<td class="row-leftalign">
Played for the University of Leeds Hockey Club.
</td>
</tr>
<tr>
<td>Royal Air Force Air Cadets</td>
<td>2017-2020</td>
<td class="row-leftalign">
Achieved the role of Sergeant and Best Cadet"
award.
</td>
</tr>
</tbody>
</table>
<!-- <div class="interests"> -->
<!-- <table> -->
<!-- <tr><th>Personal qualities</th></tr> -->
<!-- <tr><td>Intuitive</td></tr> -->
<!-- <tr><td>Communicative</td></tr> -->
<!-- <tr><td>Adaptable</td></tr> -->
<!-- <tr><td>Versatile</td></tr> -->
<!-- <tr><td>Diligent</td></tr> -->
<!-- </table> -->
<!-- <table> -->
<!-- <tr><th>Interests</th></tr> -->
<!-- <tr><td>Neuroscience</td></tr> -->
<!-- <tr><td>Bouldering</td></tr> -->
<!-- <tr><td>Science Fiction</td></tr> -->
<!-- <tr><td>Mathematics</td></tr> -->
<!-- <tr><td>Hiking</td></tr> -->
<!-- </table> -->
<!-- <table> -->
<!-- <tr><th>Languages</th></tr> -->
<!-- <tr><td>Rust</td></tr> -->
<!-- <tr><td>HTML/JS</td></tr> -->
<!-- <tr><td>C/C++</td></tr> -->
<!-- <tr><td>React/Vue</td></tr> -->
<!-- <tr><td>Python</td></tr> -->
<!-- </table> -->
<!-- </div> -->
</div>
<div
class="no-print"
style="width: 100%; text-align: center; margin: 20px 0"
>
<h1>END</h1>
</div>
</div>
</template>
<style>
@import "/css/cv_styles.css";
@media print {
@page {
size: A4 portrait;
margin: 0;
}
}
</style>

View File

@@ -0,0 +1,47 @@
<script setup></script>
<template>
<main>
<h1>Welcome</h1>
<h2>whoami?</h2>
<p>Hi im Adam</p>
<h2>cv</h2>
<RouterLink to="/cv">CV</RouterLink>
<h2>bookmarks</h2>
<a href="/pages/bookmarks.html">bookmarks</a>
<h2>Listening to:</h2>
<div
x-data="spotifyPlayer()"
x-init="fetchNowPlaying(); setInterval(fetchNowPlaying, 60000)"
class="spotify-card"
>
<img :src="album_image" class="album-img" alt="" />
<div class="spotify-info">
<div x-text="song_name || 'No song playing'"></div>
<div x-text="artist_name"></div>
<div
x-text="playing ? 'Playing' : ''"
:class="{ playing: playing }"
></div>
<a :href="song_url"></a>
</div>
</div>
<!--<h2> </h2>
<p>
Sometimes there's this fire that sends shivers down my back.
It'll come when I'm lis
</p>
-->
<!--<h2>Shrines</h1>
<a href="/pages/shrines/evangelion.html">Evangelion</a>
<a href="/pages/shrines/skipskipbenben.html">Skip skip ben ben</a>
<a href="/pages/shrines/demoman.html">demoman</a>-->
<!--<a href="pages/shrines/gto.html">GTO</a>-->
</main>
</template>

18
nginx/vue/vite.config.js Normal file
View File

@@ -0,0 +1,18 @@
import { fileURLToPath, URL } from 'node:url'
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import vueDevTools from 'vite-plugin-vue-devtools'
// https://vite.dev/config/
export default defineConfig({
plugins: [
vue(),
vueDevTools(),
],
resolve: {
alias: {
'@': fileURLToPath(new URL('./src', import.meta.url))
},
},
})