This commit is contained in:
24
package.json
24
package.json
@@ -10,26 +10,26 @@
|
|||||||
"nix": "nix develop"
|
"nix": "nix develop"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@astrojs/mdx": "^4.3.7",
|
"@astrojs/mdx": "^4.3.12",
|
||||||
"@astrojs/node": "^9.5.0",
|
"@astrojs/node": "^9.5.1",
|
||||||
"@astrojs/preact": "^4.1.1",
|
"@astrojs/preact": "^4.1.3",
|
||||||
"@astrojs/rss": "^4.0.12",
|
"@astrojs/rss": "^4.0.14",
|
||||||
"@iarna/toml": "^2.2.5",
|
"@iarna/toml": "^2.2.5",
|
||||||
"@preact/signals": "^2.3.2",
|
"@preact/signals": "^2.5.1",
|
||||||
"@tailwindcss/typography": "^0.5.19",
|
"@tailwindcss/typography": "^0.5.19",
|
||||||
"@tailwindcss/vite": "^4.1.15",
|
"@tailwindcss/vite": "^4.1.17",
|
||||||
"astro": "^5.14.7",
|
"astro": "^5.16.0",
|
||||||
"astro-icon": "^1.1.5",
|
"astro-icon": "^1.1.5",
|
||||||
"lucide-preact": "^0.546.0",
|
"lucide-preact": "^0.554.0",
|
||||||
"playwright": "^1.56.1",
|
"playwright": "^1.56.1",
|
||||||
"preact": "^10.27.2",
|
"preact": "^10.27.2",
|
||||||
"sharp": "^0.34.4",
|
"sharp": "^0.34.5",
|
||||||
"tailwindcss": "^4.1.15"
|
"tailwindcss": "^4.1.17"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@iconify-json/mdi": "^1.2.3",
|
"@iconify-json/mdi": "^1.2.3",
|
||||||
"@iconify-json/simple-icons": "^1.2.55",
|
"@iconify-json/simple-icons": "^1.2.59",
|
||||||
"daisyui": "^5.3.7"
|
"daisyui": "^5.5.5"
|
||||||
},
|
},
|
||||||
"pnpm": {
|
"pnpm": {
|
||||||
"onlyBuiltDependencies": [
|
"onlyBuiltDependencies": [
|
||||||
|
|||||||
1452
pnpm-lock.yaml
generated
1452
pnpm-lock.yaml
generated
File diff suppressed because it is too large
Load Diff
@@ -23,24 +23,32 @@ position = "Technical Lead"
|
|||||||
location = "Saskatoon, Saskatchewan"
|
location = "Saskatoon, Saskatchewan"
|
||||||
date = "November 2023 - Present"
|
date = "November 2023 - Present"
|
||||||
description = [
|
description = [
|
||||||
"Supervises and mentors a developer intern",
|
"Lead architecture and implementation of a research application for medication management, including PostgreSQL data model, containerized services, and application stack",
|
||||||
"Spearheads architectural decisions for system-wide components (database, CI/CD, applications, etc.)",
|
"Work with investigators and students to translate research and data requirements into system design, workflows, and reporting",
|
||||||
"Gathers requirements from stakeholders to craft a product timeline",
|
"Design and optimize SQL queries and views to generate validated reports and dashboards for study data",
|
||||||
"Builds SQL queries to generate reports and dashboards for data analysis",
|
"Supervise and mentor a developer intern and produce technical documentation for research staff"
|
||||||
"Develops mobile and web applications with Flutter and React (Astro)",
|
|
||||||
]
|
]
|
||||||
url = "https://cephil.ca/"
|
url = "https://cephil.ca/"
|
||||||
|
|
||||||
|
[[experience]]
|
||||||
|
company = "University of Saskatchewan, Department of Computer Science"
|
||||||
|
position = "Teaching Assistant"
|
||||||
|
location = "Saskatoon, Saskatchewan"
|
||||||
|
date = "2024 - 2025"
|
||||||
|
description = [
|
||||||
|
"Lab instructor for CMPT 370 (Intermediate Software Engineering), leading weekly labs, guiding project teams, and supporting design and implementation exercises",
|
||||||
|
"Marker for CMPT 141 (Introduction to Computer Science), grading assignments and providing feedback to help students build foundational programming skills"
|
||||||
|
]
|
||||||
|
|
||||||
[[experience]]
|
[[experience]]
|
||||||
company = "Atash Consulting"
|
company = "Atash Consulting"
|
||||||
position = "Owner/Developer"
|
position = "Owner/Developer"
|
||||||
location = "Edmonton, Alberta"
|
location = "Edmonton, Alberta"
|
||||||
date = "June 2019 - Present"
|
date = "June 2019 - Present"
|
||||||
description = [
|
description = [
|
||||||
"Provides consulting services for application development, system architecture, DevOps, etc.",
|
"Provide consulting services for application development, systems architecture, and DevOps on Linux and cloud platforms",
|
||||||
"Develops web applications, mobile applications, and REST APIs for small-to-medium sized businesses",
|
"Develop web applications, administrative interfaces, and REST APIs that run on containerized and virtualized infrastructure",
|
||||||
"Adapts to different technologies and tech stacks (Swift, Kotlin, .NET, etc.)",
|
"Design schemas and SQL queries to support reporting, monitoring, and analytics for client systems"
|
||||||
"Builds SQL queries to generate reports and dashboards for data analysis",
|
|
||||||
]
|
]
|
||||||
url = "https://atash.dev"
|
url = "https://atash.dev"
|
||||||
|
|
||||||
@@ -50,27 +58,22 @@ position = "Software Developer II"
|
|||||||
location = "Edmonton, Alberta"
|
location = "Edmonton, Alberta"
|
||||||
date = "August 2021 - November 2023"
|
date = "August 2021 - November 2023"
|
||||||
description = [
|
description = [
|
||||||
"Developed and maintained internal enterprise-level business applications on top of Amazon Web Services (AWS)",
|
"Developed and maintained internal enterprise applications on AWS, integrating with core membership, billing, and reporting systems",
|
||||||
"Used React and Typescript to build Single Page Apps and Micro Frontends",
|
"Used React and TypeScript to build Single Page Apps and Micro Frontends interacting with distributed back end services",
|
||||||
"Provided mentorship to new developers in AMA's Developer in Training program",
|
"Built and operated an in house payment gateway integrating with Stripe, with emphasis on reliability, observability, and data integrity",
|
||||||
"Developed an in-house payment gateway for all AMA services that integrates with Stripe",
|
"Provided tier 3 support and participated in a 24/7 on call rotation, troubleshooting production issues on Linux based systems"
|
||||||
"Provided tier 3 support for internal services",
|
|
||||||
"Participated in a 24/7 on-call rotation",
|
|
||||||
]
|
]
|
||||||
url = "https://ama.ab.ca/"
|
url = "https://ama.ab.ca/"
|
||||||
|
|
||||||
|
|
||||||
[[experience]]
|
[[experience]]
|
||||||
company = "University of Alberta IST"
|
company = "University of Alberta IST"
|
||||||
position = "Software Developer"
|
position = "Software Developer"
|
||||||
location = "Edmonton, Alberta"
|
location = "Edmonton, Alberta"
|
||||||
date = "October 2019 - August 2021"
|
date = "October 2019 - August 2021"
|
||||||
description = [
|
description = [
|
||||||
"Secondment from previous role",
|
"Developed front end web applications using Vue.js to support teaching and assessment workflows",
|
||||||
"Front-end development of web applications using Vue.js",
|
"Worked with both on premises and AWS hosted services for exam and scheduling systems, including authentication and access control",
|
||||||
"Leveraged Amazon Web Services to adopt a serverless architecture",
|
"Maintained a secure exam application, collaborating with instructors and staff to address system issues and improve documentation"
|
||||||
"Maintained a secure exam application developed in-house",
|
|
||||||
"Monitored and maintained an exam scheduling system hosted on-premises",
|
|
||||||
]
|
]
|
||||||
url = "https://www.ualberta.ca/en/information-services-and-technology/index.html"
|
url = "https://www.ualberta.ca/en/information-services-and-technology/index.html"
|
||||||
|
|
||||||
@@ -80,8 +83,8 @@ position = "Support Analyst"
|
|||||||
location = "Edmonton, Alberta"
|
location = "Edmonton, Alberta"
|
||||||
date = "July 2017 - October 2019"
|
date = "July 2017 - October 2019"
|
||||||
description = [
|
description = [
|
||||||
"Provided support for our Moodle installation to students, faculty, and staff",
|
"Provided functional and technical support for the university's Moodle installation to students, faculty, and staff",
|
||||||
"Front-end development of web applications using Vue.js",
|
"Created documentation and user guidance, assisted with training, and contributed to small Vue.js based extensions to learning tools"
|
||||||
]
|
]
|
||||||
url = "https://www.ualberta.ca/en/information-services-and-technology/index.html"
|
url = "https://www.ualberta.ca/en/information-services-and-technology/index.html"
|
||||||
|
|
||||||
|
|||||||
@@ -26,41 +26,6 @@ import { config } from "../config";
|
|||||||
{config.personalInfo.tagline}
|
{config.personalInfo.tagline}
|
||||||
</h2>
|
</h2>
|
||||||
|
|
||||||
{
|
|
||||||
config.personalInfo.currentFocus && (
|
|
||||||
<>
|
|
||||||
<h3 class="text-lg sm:text-2xl font-bold">
|
|
||||||
{config.homepageSections.currentFocus.title}
|
|
||||||
</h3>
|
|
||||||
|
|
||||||
<div class="flex flex-wrap gap-2 justify-center mx-6">
|
|
||||||
{config.personalInfo.currentFocus.map((focus) => {
|
|
||||||
const badgeClass =
|
|
||||||
focus.style === "primary"
|
|
||||||
? "badge badge-primary"
|
|
||||||
: focus.style === "secondary"
|
|
||||||
? "badge badge-secondary"
|
|
||||||
: focus.style === "accent"
|
|
||||||
? "badge badge-accent"
|
|
||||||
: focus.style === "neutral"
|
|
||||||
? "badge badge-neutral"
|
|
||||||
: focus.style === "info"
|
|
||||||
? "badge badge-info"
|
|
||||||
: focus.style === "success"
|
|
||||||
? "badge badge-success"
|
|
||||||
: focus.style === "warning"
|
|
||||||
? "badge badge-warning"
|
|
||||||
: focus.style === "error"
|
|
||||||
? "badge badge-error"
|
|
||||||
: "badge";
|
|
||||||
|
|
||||||
return <span class={badgeClass}>{focus.label}</span>;
|
|
||||||
})}
|
|
||||||
</div>
|
|
||||||
</>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
<h3 class="text-lg sm:text-2xl font-bold">
|
<h3 class="text-lg sm:text-2xl font-bold">
|
||||||
{config.homepageSections.socialLinks.title}
|
{config.homepageSections.socialLinks.title}
|
||||||
</h3>
|
</h3>
|
||||||
|
|||||||
16
src/types.ts
16
src/types.ts
@@ -105,25 +105,9 @@ export interface PersonalInfo {
|
|||||||
};
|
};
|
||||||
tagline: string;
|
tagline: string;
|
||||||
description?: string;
|
description?: string;
|
||||||
currentFocus?: {
|
|
||||||
label: string;
|
|
||||||
style:
|
|
||||||
| "primary"
|
|
||||||
| "secondary"
|
|
||||||
| "accent"
|
|
||||||
| "neutral"
|
|
||||||
| "info"
|
|
||||||
| "success"
|
|
||||||
| "warning"
|
|
||||||
| "error";
|
|
||||||
}[];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface HomepageSections {
|
export interface HomepageSections {
|
||||||
currentFocus: {
|
|
||||||
title: string;
|
|
||||||
description?: string;
|
|
||||||
};
|
|
||||||
socialLinks: {
|
socialLinks: {
|
||||||
title: string;
|
title: string;
|
||||||
description?: string;
|
description?: string;
|
||||||
|
|||||||
Reference in New Issue
Block a user