243 lines
9.1 KiB
Plaintext
243 lines
9.1 KiB
Plaintext
#import "@preview/fontawesome:0.5.0": *
|
|
|
|
#let accent = rgb("#367DA2")
|
|
#let bar_color = rgb("#1C2331")
|
|
#let bar_title_color = rgb("#1C2331")
|
|
#let sect_title_color = accent
|
|
#let entry_title_color = accent
|
|
|
|
#let icon(name, size, content) = {
|
|
box(
|
|
fill: accent,
|
|
inset: 4pt,
|
|
box(
|
|
width: size,
|
|
height: size,
|
|
text(white, size: size, align(center + horizon)[#fa-icon(name, solid: true)])
|
|
)
|
|
)
|
|
h(0.2cm)
|
|
box(
|
|
content,
|
|
baseline: -0.5em
|
|
)
|
|
}
|
|
|
|
#show(heading.where(level: 2)): it => {
|
|
box(
|
|
fill: sect_title_color,
|
|
inset: 3pt,
|
|
text(white, upper(it))
|
|
)
|
|
}
|
|
|
|
#let cvsect(title) = {
|
|
v(8pt)
|
|
box(
|
|
fill: sect_title_color,
|
|
inset: (x: 3pt, y: 2pt),
|
|
text(white, weight: "bold", upper(title))
|
|
)
|
|
v(5pt)
|
|
}
|
|
|
|
#let entry(date, title, subtitle, content) = {
|
|
grid(
|
|
columns: (17.5%, 1fr),
|
|
date,
|
|
{
|
|
text(weight: "bold", title)
|
|
h(1fr)
|
|
text(size: 0.9em, weight: "bold", subtitle)
|
|
linebreak()
|
|
content
|
|
}
|
|
)
|
|
v(12pt)
|
|
}
|
|
|
|
#set document(author: "Joshua Coles", title: "CV")
|
|
#set page(margin: (x: 2cm, y: 1.75cm), paper: "a4")
|
|
#set text(font: "Raleway", size: 9pt)
|
|
|
|
// Header
|
|
#grid(
|
|
columns: (45%, 27.5%, 27.5%),
|
|
{
|
|
stack(
|
|
box(fill: accent, inset: (x: 3pt, y: 3pt))[
|
|
#text(white, weight: "bold", size: 28pt, "JOSHUA")
|
|
],
|
|
v(1pt),
|
|
box(fill: accent, inset: (x: 3pt, y: 3pt))[
|
|
#text(white, weight: "bold", size: 28pt, "COLES")
|
|
],
|
|
v(1em),
|
|
text(size: 16pt)[Full-stack Developer]
|
|
)
|
|
},
|
|
{
|
|
stack(
|
|
spacing: 1pt,
|
|
icon("location-dot", 1em, "Bath / Reading"),
|
|
icon("phone", 1em, "+44 7564 199236"),
|
|
icon("at", 1em, link("mailto:me@joshuacoles.me")[me\@joshuacoles.me])
|
|
)
|
|
},
|
|
{
|
|
stack(
|
|
spacing: 1pt,
|
|
icon("earth", 1em, link("https://git.joshuacoles.me/explore/repos")[Personal Gitea]),
|
|
icon("github", 1em, link("https://github.com/joshuacoles")[github.com/joshuacoles]),
|
|
icon("linkedin", 1em, link("https://www.linkedin.com/in/joshua-coles-a79498151/")[LinkedIn])
|
|
)
|
|
}
|
|
)
|
|
|
|
== Who am I?
|
|
|
|
#grid(
|
|
columns: (70%, 27.5%),
|
|
{
|
|
[I am a passionate and adaptable software engineer with a strong focus on delivering high-quality, maintainable solutions. With experience across a range of technologies and industries, I thrive on understanding the business and organisational context behind software, ensuring that technical solutions align with real-world needs.
|
|
I believe that effective communication, problem-solving, and a willingness to continuously learn and adapt are key to delivery effective solutions.
|
|
Through my work at Better Conversations Foundation, I led the development of a real-time web application, collaborating closely with users to continuously evolve the product where I have developed a love and appreciation for correct solutions that respect their user and customers. I am excited about the opportunity to work with a collaborative, ambitious team like Ghyston's where I can contribute my experience while continuing to grow as an engineer.]
|
|
},
|
|
)
|
|
|
|
// Experience section
|
|
#cvsect("Experience")
|
|
|
|
#entry(
|
|
"Present",
|
|
"Lead Software Engineer",
|
|
"Better Conversations Foundation",
|
|
[
|
|
Returning to the foundation after my degree I have focused on:
|
|
- End-to-End Product Delivery: I lead the development of a real-time web application for delivering coaching session to large audiences
|
|
- Support the professional growth of junior developers through hands-on mentorship
|
|
- Spearheaded further AI work, including Model Context Protocol support
|
|
- Producing a course for a high profile business cohort in Oceana
|
|
|
|
#text(font: "Courier")[Ruby on Rails / Ruby / Turbo / Stimulus / iOS / Project Management / Mentorship]
|
|
]
|
|
)
|
|
|
|
#entry(
|
|
"Final Year",
|
|
"Dissertation Project, AI Applications in Lagrangian Physics",
|
|
"University of Bath",
|
|
[
|
|
My dissertation focused on incorporating Lagrangian Mechanics into physics-informed neural networks. My key contributions include,
|
|
- Creating and optimising the core physics procedures in JAX to improve correctness compared to legacy implementations; allow for their use in loss functions; and reducing runtimes by a factor of $10^4$.
|
|
- Researching, designing, and validating training methods.
|
|
|
|
The completed report can be found #link("https://files.joshuacoles.me/final-year-report.pdf")[here].
|
|
|
|
#text(font: "Courier")[JAX / Neural Networks / Machine Learning / AI / Numpy / Flax / Tensorflow / Keras / Python]
|
|
]
|
|
)
|
|
|
|
#entry(
|
|
"Summer 2023",
|
|
"Software Developer",
|
|
"Better Conversations Foundation & Amphora",
|
|
[
|
|
I lead efforts exploring the feasibility and application of AI based features in the main product.
|
|
- Integrating vector based search and retrieval-augmented generation into the application in a non-intrusive manner.
|
|
- Presenting work to customers and facilitating input on direction and feature fit.
|
|
|
|
Once I completed my work with Amphora, I moved to work at a connected non-profit, Better Conversations Foundation as their primary developer.
|
|
- Implementing the e-commerce and scheduling systems for managing cohorts and staff.
|
|
- Prototyping real-time coaching flight-plans to allow coordination between Facilitators as sessions progress
|
|
|
|
#text(font: "Courier")[Ruby on Rails / Stripe / Langchain / Vector Databases / Python]
|
|
]
|
|
)
|
|
|
|
#entry(
|
|
"2022 -- 2023\n#text(size: 0.8em)[part time aside studies]\n\n2021 -- 2022\n#text(size: 0.8em)[placement year]",
|
|
"Software Developer",
|
|
"Office for National Statistics",
|
|
[
|
|
I joined a team working designing and developing software for processing the results of the 2021 Census. After the end of my placement I was kept on to assist with the next phase of product development and solution design. In this role I worked with sensitive data from the Census in isolated production environments and thus obtained SC clearance. Key contributions include,
|
|
- Taking a leading role as release manager for the product and was heavily involved in requirements gathering for the new features.
|
|
- Developing tools for debugging and observability in sensitive production environments, greatly increasing the our ability to diagnose production issues quickly.
|
|
- Designing architectures for the next stage of the project to address additional business needs.
|
|
|
|
This role gave me an appreciation for how the interpersonal aspects of successful team are crucial for the overall success of a project. This was especially important when interfacing with the wider organisation on the direction of the project.
|
|
|
|
#text(font: "Courier")[React / Redux / Express / Jest / Cypress / Redis / SQL / Postgres / HBase / Scala / Cloudera / Jenkins / Docker / Typescript / JavaScript / Linux / Microservices / Agile / Scrum]
|
|
]
|
|
)
|
|
|
|
#entry(
|
|
"2017 -- 2021\n#text(size: 0.8em)[Holidays & Part time]",
|
|
"Software Developer",
|
|
"Amphora",
|
|
[
|
|
I worked independently to explore and investigate new technologies including,
|
|
- Creating and maintaining SAML based customer access mechanism for confidential documentation.
|
|
- Designing subscription management product using Wordpress as a Headless CMS for presentation under multiple service offering.
|
|
|
|
#text(font: "Courier")[SAML / Groovy / Java / Ruby on Rails / Ruby]
|
|
]
|
|
)
|
|
|
|
#entry(
|
|
"2011 — present",
|
|
"Ongoing Personal Projects",
|
|
"",
|
|
[
|
|
My latest personal projects are focused on data analysis on different aspects of my life. This is done with a strong focus on self-hosting and privacy. Recent work includes:
|
|
- AI based techniques for recipe extraction.
|
|
- Database and platform for cross-domain analytics in my life.
|
|
- ETL pipelines focused on breaking down data-silos.
|
|
- Hosted across multiple servers with live monitoring and log and metrics aggregation.
|
|
|
|
A history of these is available on my #link("https://github.com/joshuacoles")[GitHub] or #link("https://git.joshuacoles.me/explore/repos")[personal Gitea], along with this #link("https://git.joshuacoles.me/joshuacoles/cv")[CV and build process].
|
|
|
|
#text(font: "Courier")[Rust / Python / ETL / CI/CD / Github actions / Postgres / Caddy / Docker / Prometheus / Grafana / System administration]
|
|
]
|
|
)
|
|
|
|
// Education section
|
|
#cvsect("Education")
|
|
|
|
#entry(
|
|
"",
|
|
"MSc Mathematics and Physics (Hons) (Sandwich)",
|
|
"University of Bath",
|
|
[1st Class Honours. Placement with the ONS between academic years 2 and 3.]
|
|
)
|
|
|
|
#entry(
|
|
"",
|
|
"Prior Qualifications",
|
|
"Reading Blue Coat School",
|
|
[
|
|
4 A Levels: A\* Maths, A Further Maths, A Physics, A Chemistry
|
|
|
|
GCSEs: 1 A\* with distinction, 8 A\*s, 2 A's, 1 B. Including A\* with distinction in Further Maths, A\*s in Maths, Sciences, English and Computing.
|
|
]
|
|
)
|
|
|
|
// Additional sections at bottom
|
|
#grid(
|
|
columns: (1fr, 1fr),
|
|
{
|
|
cvsect("ADDITIONAL QUALIFICATIONS AND TRAINING")
|
|
[#link("https://betterconversations.foundation/index.html")[Better Conversations] — 2022]
|
|
linebreak()
|
|
[ISO9001 and ISO27001 training — 2018]
|
|
},
|
|
{
|
|
cvsect("Interests")
|
|
[Long distance running; politics and governance and the applications of technology therein; previous committee member of Philosophy Society at University.]
|
|
}
|
|
)
|
|
|
|
// References section
|
|
#cvsect("References")
|
|
[Available upon request]
|