Adds CV
This commit is contained in:
92
website/public/css/cv.css
Normal file
92
website/public/css/cv.css
Normal file
@@ -0,0 +1,92 @@
|
|||||||
|
div:has(img) {
|
||||||
|
width: 6rem;
|
||||||
|
height: 6rem;
|
||||||
|
margin-inline: auto;
|
||||||
|
|
||||||
|
img {
|
||||||
|
width: 6rem;
|
||||||
|
height: 6rem;
|
||||||
|
border-radius: 1rem;
|
||||||
|
filter: contrast(1.25);
|
||||||
|
}
|
||||||
|
|
||||||
|
&::after {
|
||||||
|
/* Colour overlay */
|
||||||
|
background-color: var(--colour-primary-80);
|
||||||
|
opacity: 0.3;
|
||||||
|
|
||||||
|
/* Same size and shape as the img */
|
||||||
|
border-radius: 1rem;
|
||||||
|
width: 6rem;
|
||||||
|
height: 6rem;
|
||||||
|
|
||||||
|
/* Positioned on top of the img */
|
||||||
|
display: block;
|
||||||
|
position: relative;
|
||||||
|
top: -6rem;
|
||||||
|
|
||||||
|
/* A content value is needed to get the ::after to render */
|
||||||
|
content: '';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
header {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: 1fr 1fr;
|
||||||
|
text-align: center;
|
||||||
|
|
||||||
|
h1 {
|
||||||
|
grid-column: 1 / 3;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
border-block-end: 1px solid var(--colour-primary-fg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.technical-skills {
|
||||||
|
h3 {
|
||||||
|
text-align: start;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul {
|
||||||
|
color: var(--colour-primary-fg-accent);
|
||||||
|
margin-inline-start: var(--spacing-inline-md);
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 46rem) {
|
||||||
|
section {
|
||||||
|
display: flex;
|
||||||
|
gap: var(--spacing-inline-sm);
|
||||||
|
align-items: baseline;
|
||||||
|
|
||||||
|
h3 {
|
||||||
|
&::after {
|
||||||
|
content: '/';
|
||||||
|
margin-inline: var(--spacing-inline-sm);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ul {
|
||||||
|
display: flex;
|
||||||
|
gap: var(--spacing-inline-sm);
|
||||||
|
list-style: none;
|
||||||
|
margin-inline-start: 0;
|
||||||
|
|
||||||
|
li + li::before {
|
||||||
|
content: '•';
|
||||||
|
margin-inline-end: var(--spacing-inline-sm);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
:is(.experience, .passions) {
|
||||||
|
:is(ol, ul) {
|
||||||
|
list-style: none;
|
||||||
|
|
||||||
|
li {
|
||||||
|
margin-block-start: var(--spacing-block-sm);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -12,5 +12,8 @@
|
|||||||
<li>
|
<li>
|
||||||
<a href="/links">Links</a>
|
<a href="/links">Links</a>
|
||||||
</li>
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="/cv">CV</a>
|
||||||
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</nav>
|
</nav>
|
||||||
|
|||||||
138
website/src/pages/cv.astro
Normal file
138
website/src/pages/cv.astro
Normal file
@@ -0,0 +1,138 @@
|
|||||||
|
---
|
||||||
|
import { SITE_DESCRIPTION } from '../consts';
|
||||||
|
import Page from '../layouts/Page.astro';
|
||||||
|
---
|
||||||
|
|
||||||
|
<Page title={'Joe Carstairs’ CV'} description={SITE_DESCRIPTION}>
|
||||||
|
<link rel="stylesheet" href="/css/cv.css">
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<img src="/images/headshot.webp" height="96" width="96" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<header>
|
||||||
|
<h1>Joe Carstairs’ CV</h1>
|
||||||
|
<p><a href="mailto:me@joeac.net">me@joeac.net</a></p>
|
||||||
|
<p><a href="https://joeac.net">joeac.net</a></p>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<section class="technical-skills">
|
||||||
|
<h2>Technical skills</h2>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<h3>Front end</h3>
|
||||||
|
<ul>
|
||||||
|
<li>HTML</li>
|
||||||
|
<li>CSS</li>
|
||||||
|
<li>JavaScript/TS</li>
|
||||||
|
<li>Astro</li>
|
||||||
|
<li>React</li>
|
||||||
|
</ul>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<h3>Back end</h3>
|
||||||
|
<ul>
|
||||||
|
<li>NodeJS</li>
|
||||||
|
<li>Java/Spring</li>
|
||||||
|
<li>Python</li>
|
||||||
|
<li>C</li>
|
||||||
|
</ul>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<h3>Infrastructure</h3>
|
||||||
|
<ul>
|
||||||
|
<li>Terraform</li>
|
||||||
|
<li>Docker</li>
|
||||||
|
<li>AWS</li>
|
||||||
|
<li>DigitalOcean</li>
|
||||||
|
</ul>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<h3>Miscellaneous</h3>
|
||||||
|
<ul>
|
||||||
|
<li>Git</li>
|
||||||
|
<li>Bash</li>
|
||||||
|
<li>Langchain</li>
|
||||||
|
</ul>
|
||||||
|
</section>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section class="my-engineering-priorities">
|
||||||
|
<h2>My engineering priorities</h2>
|
||||||
|
<ul>
|
||||||
|
<li>I put the process before the product</li>
|
||||||
|
<li>I put user needs before technical solutions</li>
|
||||||
|
<li>I put resilience before features</li>
|
||||||
|
</ul>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section class="what-makes-me-tick">
|
||||||
|
<h2>What makes me tick</h2>
|
||||||
|
<ul>
|
||||||
|
<li>I like straightening out chaos</li>
|
||||||
|
<li>I like communities which share wisdom</li>
|
||||||
|
<li>I value finding things out over making the perfect product</li>
|
||||||
|
</ul>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section class="experience">
|
||||||
|
<h2>Experience</h2>
|
||||||
|
<ol>
|
||||||
|
<li>
|
||||||
|
2024, Scott Logic. Researched the potential of applying LLMs to
|
||||||
|
automated accessibility testing of websites, using Langchain Python
|
||||||
|
library, elementary prompt engineering techniques, and various scripting
|
||||||
|
languages to knit all our data together.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
2023, Scott Logic. Investigated the accessibility of the
|
||||||
|
<a href="https://blog.scottlogic.com">Scott Logic blog</a> both manually
|
||||||
|
and using automated tools, including pa11y and Lighthouse. Made several
|
||||||
|
recommendations for improvements.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
2023, Scott Logic. Built a social app with a React/Redux frontend and a
|
||||||
|
Spring Boot backend, deployed via Azure Pipelines onto an AWS EC2
|
||||||
|
instance, as part of the Scott Logic Graduate Programme.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
2021, FreeAgent. Analysed how front-end developers were consuming the
|
||||||
|
FreeAgent design system for the Design System Team as a summer
|
||||||
|
internship.
|
||||||
|
</li>
|
||||||
|
</ol>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section class="education">
|
||||||
|
<h2>Education</h2>
|
||||||
|
<p>Philosophy and Mathematics, MA Hons, Edin, 2022.</p>
|
||||||
|
<p>Full transcript available upon request.</p>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section class="passions">
|
||||||
|
<h2>Passions</h2>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
I would love to see ordinary people empowered to engage with Web
|
||||||
|
technology as sovereign citizens, owning their own data, with the
|
||||||
|
ability to choose freely between competing digital services. I haven't
|
||||||
|
yet been shaken out of my naïve hope for the IndieWeb, though I
|
||||||
|
recognise it has a long way to go before it is ready for mass adoption.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
I love Jesus Christ as the Redeemer of the world. Lots of people believe
|
||||||
|
that there is some higher power behind the things we can see, and Jesus
|
||||||
|
has revealed who God is by being made flesh, dying on the cross and by
|
||||||
|
being raised to a new Resurrection life, in which we are all invited to
|
||||||
|
participate. And I think that's pretty gnarly.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
I love hillwalking. A day in the hills is the best kind of rest I know.
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</section>
|
||||||
|
</Page>
|
||||||
|
|
||||||
Reference in New Issue
Block a user