fix spelling + linking & add SEO optimizations
This commit is contained in:
6 files changed
+125
-26
No files matched your search
+24
-9
@@ -2,11 +2,26 @@
|
||||
<html lang='en'>
|
||||
|
||||
<head>
|
||||
<title>Braeden Sowinski</title>
|
||||
<meta name='description' content="Braeden Sowinski's portfolio" />
|
||||
<title>About | Braeden Sowinski</title>
|
||||
<meta charset='utf-8'>
|
||||
<meta name='description' content="Learn more about Braeden Sowinski, a BCIT CST student and software engineer focused on backend systems, APIs, data-driven software, and technical problem solving." />
|
||||
<meta name='author' content="Braeden Sowinski" />
|
||||
<meta name='keywords' content="Braeden Sowinski, software engineer, systems programming, BCIT" />
|
||||
<meta name='keywords' content="Braeden Sowinski, about, software engineer, backend systems, BCIT" />
|
||||
<meta name='viewport' content='width=device-width, initial-scale=1.0'>
|
||||
<meta name='robots' content='index, follow'>
|
||||
<meta name='theme-color' content='#1d1e20'>
|
||||
<link rel='canonical' href='https://sowinski.dev/about.html'>
|
||||
<meta property='og:type' content='profile'>
|
||||
<meta property='og:title' content='About | Braeden Sowinski'>
|
||||
<meta property='og:description' content='Learn more about Braeden Sowinski, a BCIT CST student and software engineer focused on backend systems, APIs, data-driven software, and technical problem solving.'>
|
||||
<meta property='og:url' content='https://sowinski.dev/about.html'>
|
||||
<meta property='og:site_name' content='Braeden Sowinski'>
|
||||
<meta property='og:image' content='https://avatars.githubusercontent.com/u/48144618?v=4'>
|
||||
<meta property='og:image:alt' content='Braeden Sowinski profile photo'>
|
||||
<meta name='twitter:card' content='summary_large_image'>
|
||||
<meta name='twitter:title' content='About | Braeden Sowinski'>
|
||||
<meta name='twitter:description' content='Learn more about Braeden Sowinski, a BCIT CST student and software engineer focused on backend systems, APIs, data-driven software, and technical problem solving.'>
|
||||
<meta name='twitter:image' content='https://avatars.githubusercontent.com/u/48144618?v=4'>
|
||||
|
||||
<link rel="stylesheet" href="./public/css/style.css">
|
||||
<link rel="stylesheet" href="./public/css/about.css">
|
||||
@@ -89,15 +104,15 @@
|
||||
<h3>Skills</h3>
|
||||
<ul class="text skills-list">
|
||||
<li>Java, C, Go, OCaml</li>
|
||||
<li>JavaScript (Node.js)</li>
|
||||
<li>JavaScript and Node.js</li>
|
||||
<li>Python3+</li>
|
||||
<li>Git, Github, GitLab</li>
|
||||
<li>Git, GitHub, GitLab</li>
|
||||
<li>Docker</li>
|
||||
<li>MongoDB & PostgreSQL</li>
|
||||
<li>Windows/Debian based OS</li>
|
||||
<li>Windows and Debian-based systems</li>
|
||||
<li>Data Structures & Algorithms</li>
|
||||
<li>System Administration</li>
|
||||
<li>Data-Driven Software</li>
|
||||
<li>Data-driven software</li>
|
||||
<li>Oral & Written Communication</li>
|
||||
<li>Team Collaboration & Adaptability</li>
|
||||
</ul>
|
||||
@@ -105,7 +120,7 @@
|
||||
</div>
|
||||
|
||||
<section class="about" id="about">
|
||||
<h3 class="title">About me</h3>
|
||||
<h3 class="title">About Me</h3>
|
||||
<p class="text">
|
||||
As a software engineer, I am passionate about developing back-end systems and data-driven applications.
|
||||
Currently pursuing a Diploma in Computer Systems Technology at
|
||||
@@ -165,7 +180,7 @@
|
||||
d="M0 1.146C0 .513.526 0 1.175 0h13.65C15.474 0 16 .513 16 1.146v13.708c0 .633-.526 1.146-1.175 1.146H1.175C.526 16 0 15.487 0 14.854zm4.943 12.248V6.169H2.542v7.225zm-1.2-8.212c.837 0 1.358-.554 1.358-1.248-.015-.709-.52-1.248-1.342-1.248S2.4 3.226 2.4 3.934c0 .694.521 1.248 1.327 1.248zm4.908 8.212V9.359c0-.216.016-.432.08-.586.173-.431.568-.878 1.232-.878.869 0 1.216.662 1.216 1.634v3.865h2.401V9.25c0-2.22-1.184-3.252-2.764-3.252-1.274 0-1.845.7-2.165 1.193v.025h-.016l.016-.025V6.169h-2.4c.03.678 0 7.225 0 7.225z" />
|
||||
</svg>
|
||||
</a>
|
||||
<a class="icon" href="https://github.com/SowinskiBraeden" target="_blank" rel="noopener noreferrer me" title="Github">
|
||||
<a class="icon" href="https://github.com/SowinskiBraeden" target="_blank" rel="noopener noreferrer me" title="GitHub">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentcolor" stroke-width="2"
|
||||
stroke-linecap="round" stroke-linejoin="round">
|
||||
<path
|
||||
|
||||
+18
-3
@@ -2,11 +2,26 @@
|
||||
<html lang='en'>
|
||||
|
||||
<head>
|
||||
<title>Braeden Sowinski</title>
|
||||
<meta name='description' content="Braeden Sowinski's portfolio" />
|
||||
<title>Entry | Braeden Sowinski</title>
|
||||
<meta charset='utf-8'>
|
||||
<meta name='description' content="Project entry or update from Braeden Sowinski's portfolio site." />
|
||||
<meta name='author' content="Braeden Sowinski" />
|
||||
<meta name='keywords' content="Braeden Sowinski, project entry, portfolio" />
|
||||
<meta name='keywords' content="Braeden Sowinski, portfolio entry, project, update" />
|
||||
<meta name='viewport' content='width=device-width, initial-scale=1.0'>
|
||||
<meta name='robots' content='index, follow'>
|
||||
<meta name='theme-color' content='#1d1e20'>
|
||||
<link rel='canonical' href='https://sowinski.dev/entry.html'>
|
||||
<meta property='og:type' content='article'>
|
||||
<meta property='og:title' content='Entry | Braeden Sowinski'>
|
||||
<meta property='og:description' content='Project entry or update from Braeden Sowinski.'>
|
||||
<meta property='og:url' content='https://sowinski.dev/entry.html'>
|
||||
<meta property='og:site_name' content='Braeden Sowinski'>
|
||||
<meta property='og:image' content='https://avatars.githubusercontent.com/u/48144618?v=4'>
|
||||
<meta property='og:image:alt' content='Braeden Sowinski profile photo'>
|
||||
<meta name='twitter:card' content='summary_large_image'>
|
||||
<meta name='twitter:title' content='Entry | Braeden Sowinski'>
|
||||
<meta name='twitter:description' content='Project entry or update from Braeden Sowinski.'>
|
||||
<meta name='twitter:image' content='https://avatars.githubusercontent.com/u/48144618?v=4'>
|
||||
|
||||
<link rel="stylesheet" href="./public/css/style.css">
|
||||
<link rel="stylesheet" href="./public/css/projects.css">
|
||||
|
||||
+20
-5
@@ -2,11 +2,26 @@
|
||||
<html lang='en'>
|
||||
|
||||
<head>
|
||||
<title>Braeden Sowinski</title>
|
||||
<meta name='description' content="Braeden Sowinski's portfolio" />
|
||||
<title>Braeden Sowinski | Software Engineer</title>
|
||||
<meta charset='utf-8'>
|
||||
<meta name='description' content="Braeden Sowinski is a software engineer and BCIT CST student focused on backend systems, APIs, data-driven software, and practical technical problem solving." />
|
||||
<meta name='author' content="Braeden Sowinski" />
|
||||
<meta name='keywords' content="Braeden Sowinski, software engineer, systems programming, BCIT" />
|
||||
<meta name='keywords' content="Braeden Sowinski, software engineer, backend systems, APIs, BCIT, portfolio" />
|
||||
<meta name='viewport' content='width=device-width, initial-scale=1.0'>
|
||||
<meta name='robots' content='index, follow'>
|
||||
<meta name='theme-color' content='#1d1e20'>
|
||||
<link rel='canonical' href='https://sowinski.dev/'>
|
||||
<meta property='og:type' content='website'>
|
||||
<meta property='og:title' content='Braeden Sowinski | Software Engineer'>
|
||||
<meta property='og:description' content='Software engineer and BCIT CST student focused on backend systems, APIs, data-driven software, and practical technical problem solving.'>
|
||||
<meta property='og:url' content='https://sowinski.dev/'>
|
||||
<meta property='og:site_name' content='Braeden Sowinski'>
|
||||
<meta property='og:image' content='https://avatars.githubusercontent.com/u/48144618?v=4'>
|
||||
<meta property='og:image:alt' content='Braeden Sowinski profile photo'>
|
||||
<meta name='twitter:card' content='summary_large_image'>
|
||||
<meta name='twitter:title' content='Braeden Sowinski | Software Engineer'>
|
||||
<meta name='twitter:description' content='Software engineer and BCIT CST student focused on backend systems, APIs, data-driven software, and practical technical problem solving.'>
|
||||
<meta name='twitter:image' content='https://avatars.githubusercontent.com/u/48144618?v=4'>
|
||||
|
||||
<link rel="stylesheet" href="./public/css/style.css">
|
||||
</head>
|
||||
@@ -92,7 +107,7 @@
|
||||
<div class="hero-badges">
|
||||
<span class="badge">BCIT CST Diploma</span>
|
||||
<span class="badge">C4A President</span>
|
||||
<span class="badge">Hackathon Podium Finiher</span>
|
||||
<span class="badge">Hackathon Podium Finisher</span>
|
||||
</div>
|
||||
|
||||
<div class="hero-actions">
|
||||
@@ -109,7 +124,7 @@
|
||||
d="M0 1.146C0 .513.526 0 1.175 0h13.65C15.474 0 16 .513 16 1.146v13.708c0 .633-.526 1.146-1.175 1.146H1.175C.526 16 0 15.487 0 14.854zm4.943 12.248V6.169H2.542v7.225zm-1.2-8.212c.837 0 1.358-.554 1.358-1.248-.015-.709-.52-1.248-1.342-1.248S2.4 3.226 2.4 3.934c0 .694.521 1.248 1.327 1.248zm4.908 8.212V9.359c0-.216.016-.432.08-.586.173-.431.568-.878 1.232-.878.869 0 1.216.662 1.216 1.634v3.865h2.401V9.25c0-2.22-1.184-3.252-2.764-3.252-1.274 0-1.845.7-2.165 1.193v.025h-.016l.016-.025V6.169h-2.4c.03.678 0 7.225 0 7.225z" />
|
||||
</svg>
|
||||
</a>
|
||||
<a class="icon" href="https://github.com/SowinskiBraeden" target="_blank" rel="noopener noreferrer me" title="Github">
|
||||
<a class="icon" href="https://github.com/SowinskiBraeden" target="_blank" rel="noopener noreferrer me" title="GitHub">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentcolor" stroke-width="2"
|
||||
stroke-linecap="round" stroke-linejoin="round">
|
||||
<path
|
||||
|
||||
+21
-6
@@ -2,11 +2,26 @@
|
||||
<html lang='en'>
|
||||
|
||||
<head>
|
||||
<title>Braeden Sowinski</title>
|
||||
<meta name='description' content="Braeden Sowinski's portfolio" />
|
||||
<title>Projects and Updates | Braeden Sowinski</title>
|
||||
<meta charset='utf-8'>
|
||||
<meta name='description' content="Browse selected software projects, technical writeups, and recent updates from Braeden Sowinski, including backend systems, APIs, and student leadership milestones." />
|
||||
<meta name='author' content="Braeden Sowinski" />
|
||||
<meta name='keywords' content="Braeden Sowinski, projects, portfolio, software engineer" />
|
||||
<meta name='keywords' content="Braeden Sowinski, projects, updates, portfolio, software engineer, BCIT" />
|
||||
<meta name='viewport' content='width=device-width, initial-scale=1.0'>
|
||||
<meta name='robots' content='index, follow'>
|
||||
<meta name='theme-color' content='#1d1e20'>
|
||||
<link rel='canonical' href='https://sowinski.dev/projects.html'>
|
||||
<meta property='og:type' content='website'>
|
||||
<meta property='og:title' content='Projects and Updates | Braeden Sowinski'>
|
||||
<meta property='og:description' content='Browse selected software projects, technical writeups, and recent updates from Braeden Sowinski.'>
|
||||
<meta property='og:url' content='https://sowinski.dev/projects.html'>
|
||||
<meta property='og:site_name' content='Braeden Sowinski'>
|
||||
<meta property='og:image' content='https://avatars.githubusercontent.com/u/48144618?v=4'>
|
||||
<meta property='og:image:alt' content='Braeden Sowinski profile photo'>
|
||||
<meta name='twitter:card' content='summary_large_image'>
|
||||
<meta name='twitter:title' content='Projects and Updates | Braeden Sowinski'>
|
||||
<meta name='twitter:description' content='Browse selected software projects, technical writeups, and recent updates from Braeden Sowinski.'>
|
||||
<meta name='twitter:image' content='https://avatars.githubusercontent.com/u/48144618?v=4'>
|
||||
|
||||
<link rel="stylesheet" href="./public/css/style.css">
|
||||
<link rel="stylesheet" href="./public/css/projects.css">
|
||||
@@ -76,7 +91,7 @@
|
||||
<p class="eyebrow">Projects & Updates</p>
|
||||
<h1>Selected work, recent milestones, and technical writeups.</h1>
|
||||
<p class="projects-intro">
|
||||
View some of the work I am proud of, and some recent acheivements of mine :)
|
||||
View selected projects, technical writeups, and recent updates.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
@@ -86,7 +101,7 @@
|
||||
<p class="eyebrow">Portfolio</p>
|
||||
<h2>Selected Projects</h2>
|
||||
</div>
|
||||
<a class="section-link" href="https://github.com/SowinskiBraeden" target="_blank" rel="noopener noreferrer">View Github</a>
|
||||
<a class="section-link" href="https://github.com/SowinskiBraeden" target="_blank" rel="noopener noreferrer">View GitHub</a>
|
||||
</div>
|
||||
<div id="projects-grid" class="content-grid">
|
||||
<p class="loading-state">Loading projects...</p>
|
||||
@@ -121,7 +136,7 @@
|
||||
d="M0 1.146C0 .513.526 0 1.175 0h13.65C15.474 0 16 .513 16 1.146v13.708c0 .633-.526 1.146-1.175 1.146H1.175C.526 16 0 15.487 0 14.854zm4.943 12.248V6.169H2.542v7.225zm-1.2-8.212c.837 0 1.358-.554 1.358-1.248-.015-.709-.52-1.248-1.342-1.248S2.4 3.226 2.4 3.934c0 .694.521 1.248 1.327 1.248zm4.908 8.212V9.359c0-.216.016-.432.08-.586.173-.431.568-.878 1.232-.878.869 0 1.216.662 1.216 1.634v3.865h2.401V9.25c0-2.22-1.184-3.252-2.764-3.252-1.274 0-1.845.7-2.165 1.193v.025h-.016l.016-.025V6.169h-2.4c.03.678 0 7.225 0 7.225z" />
|
||||
</svg>
|
||||
</a>
|
||||
<a class="icon" href="https://github.com/SowinskiBraeden" target="_blank" rel="noopener noreferrer me" title="Github">
|
||||
<a class="icon" href="https://github.com/SowinskiBraeden" target="_blank" rel="noopener noreferrer me" title="GitHub">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentcolor" stroke-width="2"
|
||||
stroke-linecap="round" stroke-linejoin="round">
|
||||
<path
|
||||
|
||||
@@ -169,7 +169,7 @@
|
||||
"title": "Joined the BCIT Computing Club as an Executive Member",
|
||||
"slug": "joined-bcit-computing-club",
|
||||
"type": "updates",
|
||||
"summary": "After helping friends and existing exutives of the BCIT Computing Club, I have officially joined to help represent, and direct events such as reviews sessions, and hackathons.",
|
||||
"summary": "After helping friends and existing executives of the BCIT Computing Club, I officially joined to help represent and support events such as review sessions and hackathons.",
|
||||
"label": "Update",
|
||||
"date": "2025-12-24",
|
||||
"status": "New Role",
|
||||
@@ -180,7 +180,7 @@
|
||||
"tags": [
|
||||
"Computing Club",
|
||||
"Executive Member",
|
||||
"BICT"
|
||||
"BCIT"
|
||||
],
|
||||
"path": "./public/content/updates/joined-bcit-computing-club.md"
|
||||
},
|
||||
|
||||
@@ -59,13 +59,50 @@
|
||||
return `<div class="${className}">${tags.map((tag) => `<span class="${className === "tag-list" ? "tag" : "entry-tag"}">${escapeHtml(tag)}</span>`).join("")}</div>`;
|
||||
};
|
||||
|
||||
const setMetaContent = (selector, content) => {
|
||||
const element = document.querySelector(selector);
|
||||
if (!element || !content) {
|
||||
return;
|
||||
}
|
||||
|
||||
element.setAttribute("content", content);
|
||||
};
|
||||
|
||||
const setCanonicalHref = (href) => {
|
||||
const canonical = document.querySelector("link[rel='canonical']");
|
||||
if (!canonical || !href) {
|
||||
return;
|
||||
}
|
||||
|
||||
canonical.setAttribute("href", href);
|
||||
};
|
||||
|
||||
const updateEntryMeta = (entry) => {
|
||||
const baseUrl = "https://sowinski.dev";
|
||||
const title = `${entry.title} | Braeden Sowinski`;
|
||||
const description = entry.summary || "Project entry or update from Braeden Sowinski.";
|
||||
const url = `${baseUrl}/entry.html?type=${encodeURIComponent(entry.type)}&slug=${encodeURIComponent(entry.slug)}`;
|
||||
const image = "https://avatars.githubusercontent.com/u/48144618?v=4";
|
||||
|
||||
document.title = title;
|
||||
setCanonicalHref(url);
|
||||
setMetaContent("meta[name='description']", description);
|
||||
setMetaContent("meta[property='og:title']", title);
|
||||
setMetaContent("meta[property='og:description']", description);
|
||||
setMetaContent("meta[property='og:url']", url);
|
||||
setMetaContent("meta[property='og:image']", image);
|
||||
setMetaContent("meta[name='twitter:title']", title);
|
||||
setMetaContent("meta[name='twitter:description']", description);
|
||||
setMetaContent("meta[name='twitter:image']", image);
|
||||
};
|
||||
|
||||
const renderLinks = (entry, className) => {
|
||||
const links = [];
|
||||
|
||||
links.push(`<a class="${className} ${className}-primary" href="./entry.html?type=${encodeURIComponent(entry.type)}&slug=${encodeURIComponent(entry.slug)}">Read More</a>`);
|
||||
|
||||
if (entry.github) {
|
||||
links.push(`<a class="${className}" href="${escapeHtml(entry.github)}" target="_blank" rel="noopener noreferrer">Github</a>`);
|
||||
links.push(`<a class="${className}" href="${escapeHtml(entry.github)}" target="_blank" rel="noopener noreferrer">GitHub</a>`);
|
||||
}
|
||||
|
||||
if (entry.demo) {
|
||||
@@ -221,6 +258,8 @@
|
||||
throw new Error("Entry not found.");
|
||||
}
|
||||
|
||||
updateEntryMeta(entry);
|
||||
|
||||
const response = await fetch(entry.path);
|
||||
if (!response.ok) {
|
||||
throw new Error("Unable to load markdown entry.");
|
||||
|
||||
Reference in new issue
Block a user