2022-04-16 10:43:45 +00:00
< script lang = "ts" >
2023-04-14 20:50:27 +00:00
import { slide } from "svelte/transition";
import Navbar from "$lib/components/Navbar.svelte";
2022-04-16 10:43:45 +00:00
2023-04-14 20:50:27 +00:00
let isWorkExpanded = false;
let isPersonalExpanded = false;
2022-04-16 10:43:45 +00:00
< / script >
2022-04-17 10:07:40 +00:00
< svelte:head >
2023-04-14 20:50:27 +00:00
< title > Thomas Wilson< / title >
2022-04-17 10:07:40 +00:00
< / svelte:head >
2022-04-16 10:43:45 +00:00
< Navbar / >
2022-07-06 20:01:33 +00:00
2022-04-16 10:43:45 +00:00
< main class = "thomaswilson-container" >
2023-04-14 20:50:27 +00:00
< section class = "section thomaswilson-strapline" >
< h1 class = "title" > Thomas Wilson< / h1 >
< p >
2024-01-16 22:49:20 +00:00
< span class = "strapline-animated" id = "statement-1" > I am a software engineer who loves the craft of building quality software, < / span >
< span class = "strapline-animated" id = "statement-2" > the messy-ness of working with people,< / span >
< span class = "strapline-animated" id = "statement-3" > and the balance between < i > minimal< / i > and < i > complete< / i > products.< / span >
< span class = "strapline-summary" > I build good things with good people for good companies.< / span >
2023-04-14 20:50:27 +00:00
< / p >
< / section >
< section class = "work section" >
< h2 > My work< / h2 >
{ #if isWorkExpanded }
< ul transition:slide = " {{ duration : 220 }} " >
2024-01-16 22:49:20 +00:00
< li > Right now I am a Senior Software Engineer at < a href = "https://www.laka.co.uk" target = "_blank" rel = "noopener noreferrer" > Laka< / a > . We're building web tools to un< span class = "censor" > fuck< / span > insurance< / li >
2023-04-14 20:50:27 +00:00
< li >
2024-01-16 22:49:20 +00:00
I spent three years building and leading the Software Engienering team at< a
2023-04-14 20:50:27 +00:00
class="oxwash"
target="_blank"
rel="noopener noreferrer"
href="https://www.oxwash.com">Oxwash< /a
2024-01-16 22:49:20 +00:00
>, where we built tools for the sustainable and scalable future of laundry.
2023-04-14 20:50:27 +00:00
< / li >
< li >
I build full-stack software for the web, especially with TypeScript,
Node, Svelte, and React.
< / li >
< li >
2024-01-16 22:49:20 +00:00
I like domain driven design, and agile (with a little 'a')
2023-04-14 20:50:27 +00:00
opinions about delivery and collaboration.
< / li >
< li >
I've previously built software with data privacy, ed-tech, and
sustainability companies.
< / li >
< li >
I have a < a
class="thesis"
target="_blank"
rel="noopener noreferrer"
href="https://eprints.soton.ac.uk/418168/"
>Ph.D. in education technology< /a
>, where I looked at how we can use tech in the teaching lab to
promote and evidence understanding.
< / li >
< li >
I have only ever worked with companies actively solving environment
and societal problems.
< / li >
< li >
< button on:click = " {() => ( isWorkExpanded = false )} " >
Ew, show less
< / button >
< / li >
< / ul >
{ : else }
< p >
I build software that makes complicated things more human-friendly, and
lead teams to do the same.
< / p >
< button on:click = " {() => ( isWorkExpanded = true )} " >
Wow, Show more
< / button >
{ /if }
< / section >
< section class = "section personal" >
< h2 > Me< / h2 >
{ #if isPersonalExpanded }
< ul transition:slide = " {{ duration : 210 }} " >
< li >
I try to write at least once a month on my < a
class="thesis"
href="/blog">blog< /a
>.
< / li >
< li > I'm learning to sew my own clothes< / li >
< li > I love fruity coffees and botanical gins< / li >
< li > I used to dance and produce with a contemporary dance company< / li >
< li >
< button on:click = " {() => ( isPersonalExpanded = false )} "
>Cool, show less< /button
>
< / li >
< / ul >
{ : else }
< p >
I like to write on my < a href = "/blog" > blog< / a > and ride bikes. I'm learning
to sew my own clothes, and my French is terrible.
< / p >
< button on:click = " {() => ( isPersonalExpanded = true )} "
>Oh, cool, tell me more< /button
>
{ /if }
< / section >
< section class = "section links" >
< h2 > Links< / h2 >
< ul >
< li > I write here, < a href = "/blog" > on my blog< / a > < / li >
< li >
And on < a href = "https://www.github.com/thomaswilsonxyz" > GitHub< / a >
< / li >
< li > I stopped checking Twitter when... you know.< / li >
< / ul >
< / section >
2022-04-16 10:43:45 +00:00
< / main >
< style >
2023-04-14 20:50:27 +00:00
section {
--link-transition: 0.2s;
--link-padding: 4px;
--link-border-radius: 8px;
}
section ul {
margin-top: 0;
margin-bottom: 0;
}
section p {
2023-05-11 20:57:35 +00:00
padding-top: 0;
2023-04-14 20:50:27 +00:00
padding-bottom: var(--spacing-md);
2023-05-11 20:57:35 +00:00
font-size: 1.3rem;
color: var(--gray-700);
2023-04-14 20:50:27 +00:00
}
2023-05-11 20:57:35 +00:00
.thomaswilson-strapline > p {
2023-04-14 20:50:27 +00:00
padding-top: 4px;
padding-bottom: 1rem;
2023-05-11 20:57:35 +00:00
font-size: 1.65rem;
2023-04-14 20:50:27 +00:00
color: var(--gray-700);
}
.oxwash {
padding: var(--link-padding);
transition: var(--link-transition);
border-radius: var(--link-border-radius);
border: 1px solid #0256f2;
color: #0256f2;
text-decoration: none;
}
.oxwash:hover {
background: #6fbbec;
border: 1px solid #6fbbec;
text-decoration: underline;
color: white;
}
.thesis {
padding: var(--link-padding);
transition: var(--link-transition);
border-radius: var(--link-border-radius);
border: 1px solid var(--brand-orange);
color: var(--brand-orange);
text-decoration: none;
}
.thesis:hover {
background: var(--brand-orange);
color: white;
text-decoration: underline;
}
.links a {
color: var(--brand-orange);
}
h1 {
font-size: 2.5rem;
}
h2 {
font-family: var(--font-family-title);
color: var(--gray-800);
}
li {
padding-bottom: 0.3rem;
}
2024-01-16 22:49:20 +00:00
/** Create a class called censor which places a black bar over the text*/
.censor {
position: relative;
color: transparent;
text-shadow: 0 0 3px rgba(0,0,0,0.7);
}
.censor::after {
content: '';
position: absolute;
left: 0;
top: 55%;
width: 100%;
height: 8px;
background-color: black;
transform: translateY(-50%);
}
@keyframes statementAppear {
0% {
opacity: 0.1;
transform: translateY(-20px)
}
100% {
opacity: 1;
transform: translateY(0px)
}
}
.strapline-summary {
font-weight: 400;
}
.strapline-animated {
animation-fill-mode: forwards;
opacity: 0.15;
transform: translateY(-10px)
}
#statement-1 {
animation-name: statementAppear;
animation-delay: 0.5s;
animation-duration: 1.5s;
}
#statement-2 {
animation-name: statementAppear;
animation-delay: 1.4s;
animation-duration: 1.5s;
}
#statement-3 {
animation-name: statementAppear;
animation-delay: 2.3s;
animation-duration: 1.5s;
}
2022-04-16 10:43:45 +00:00
< / style >