330 lines
12 KiB
HTML
330 lines
12 KiB
HTML
<html lang="en">
|
|
<head>
|
|
<title>Resume of John Morris</title>
|
|
<link rel="stylesheet" href="styles/jetbrains-mono.css"/>
|
|
<link rel="stylesheet" href="styles/reset.css"/>
|
|
<link rel="stylesheet" href="styles/style.css"/>
|
|
</head>
|
|
<body>
|
|
<header>
|
|
<img class="pfp" alt="an image of john" src="assets/pfp.jpeg"/>
|
|
<div>
|
|
<h1>John Morris</h1>
|
|
<p>Software Developer</p>
|
|
</div>
|
|
</header>
|
|
|
|
<main>
|
|
<section id=profile>
|
|
<hgroup class="experiences-heading">
|
|
<img src="assets/icon-user.svg"/>
|
|
<h2>About Me</h2>
|
|
</hgroup>
|
|
<p>
|
|
I am a software developer with passion for creativity and learning. My
|
|
ultimate goal as a developer is to make cool things that help people
|
|
and hopefully improve the world.
|
|
</p>
|
|
</section>
|
|
|
|
<section id=employment-history class="experiences">
|
|
<hgroup class="experiences-heading">
|
|
<img src="assets/icon-briefcase.svg"/>
|
|
<h2>Employment History</h2>
|
|
</hgroup>
|
|
<section id=lead-software-engineer-hyre class=experience>
|
|
<hgroup>
|
|
<h3>Lead Software Engineer @ HYRE Talent Sourcing and Matching GmbH, Berlin</h3>
|
|
<p class=experience-time-span>March 2023 - Present</p>
|
|
</hgroup>
|
|
<p>
|
|
As the lead software engineer at a small Berlin-based HR-Tech startup, I take care of the development of
|
|
the web frontend (Vue.js+TS) and backend (C#) of the talent-matching platform "HYRE Talents." In
|
|
addition to development, I administrate devops and cloud services while working closely with the
|
|
founder/PM to develop the roadmap and respond to the needs of both users and teammates. After taking on
|
|
the role of Lead Developer after my previous role as Frontend Developer, my responsibilities came to
|
|
include:
|
|
</p>
|
|
<ul>
|
|
<li>
|
|
Designing and implementing customer-facing features, in both the frontend and backend, from
|
|
end-to-end - starting with collecting and analyzing requirements, to architecting a solution with
|
|
necessary model updates, through to the implementation.
|
|
</li>
|
|
<li>
|
|
Handling of day-to-day technical tasks such as responding to error reports, providing technical
|
|
assistance to other teams, fixing bugs, and monitoring system logs.
|
|
</li>
|
|
<li>
|
|
Develop integrations with external services such as Salesmate, Airtable, ChargeBee, and Twilio. This
|
|
Includes developing standard patterns for creating client libraries where there are no suitable ones
|
|
available.
|
|
</li>
|
|
<li>
|
|
Maintain hosting infrastructure: Provisioning and monitoring our Azure cloud infrastructure (e.g.,
|
|
App Services, Static Web Apps, and SQL Server instances), administrating source control (on GitHub)
|
|
and maintaining CI/CD automations. I also made specific optimization to our hosting that reduced
|
|
hosting costs by 75%.
|
|
</li>
|
|
<li>
|
|
Improved and streamlined development by migrating source control and CI to GitHub (from Azure
|
|
Devops)
|
|
and pushing for the adoption of more structured development practices, i.e.: replacing Excel
|
|
spreadsheets with Linear and taking a more structured (pseudo-agile) approach to development.
|
|
</li>
|
|
</ul>
|
|
</section>
|
|
|
|
<section id=frontend-developer-hyre class=experience>
|
|
<hgroup>
|
|
<h3>Frontend Developer @ HYRE Talent Sourcing and Matching GmbH, Berlin</h3>
|
|
<p class=experience-time-span>September 2022 - March 2023</p>
|
|
</hgroup>
|
|
<p>
|
|
As the frontend developer of the talent matching platform HYRE Talents, I was responsible for the design
|
|
and implementation of user-facing features and bugfixes, as well as end-to-end deployment of the
|
|
frontend.
|
|
</p>
|
|
<ul>
|
|
<li>
|
|
I designed and implemented UIs for new features using TypeScript+NuxtJS+Tailwind. Design was
|
|
primarily
|
|
aided with TailwindUI Templates.
|
|
</li>
|
|
<li>
|
|
I introduced TypeScript to the JS codebase, as well as adopting the modern Composition API from Vue
|
|
(to
|
|
replace the legacy Options API).
|
|
</li>
|
|
<li>
|
|
I was responsible for the entire deployment of the frontend app.
|
|
</li>
|
|
</ul>
|
|
</section>
|
|
|
|
<section id=software-developer-tutao class=experience>
|
|
<hgroup>
|
|
<h3>Software Developer @ Tutao, Hannover</h3>
|
|
<p class=experience-time-span>September 2020 - September 2022</p>
|
|
</hgroup>
|
|
<ul>
|
|
<li>
|
|
As a part of the product team I implemented improvements and
|
|
bug fixes for the web, desktop (Electron), Android, and iOS variants
|
|
of the app using various languages and frameworks, namely:
|
|
TypeScript/JavaScript, mithril (JS UI Library), ElectronJS, Swift, Kotlin,
|
|
Java.
|
|
</li>
|
|
<li>
|
|
Worked on devops and had a role in improving the in-house build
|
|
system for the app, as well as streamlining CI/CD in jenkins.
|
|
</li>
|
|
<li>
|
|
Was instrumental in improving development practices, such as
|
|
participating in the introduction of scrum to the small team, and
|
|
continually working on architectural improvements such as the
|
|
modularisation of the codebase.
|
|
</li>
|
|
</ul>
|
|
|
|
</section>
|
|
|
|
<section id=software-developer-fungii class=experience>
|
|
<hgroup>
|
|
<h3>Software Developer @ Fungii - Melbourne Gourmet Mushrooms, Melbourne, Australia</h3>
|
|
<p class=experience-time-span>2018</p>
|
|
</hgroup>
|
|
<ul>
|
|
<li>
|
|
Developed a greenhouse monitoring and logging system for a
|
|
Melbourne based culinary mushroom grower.
|
|
</li>
|
|
<li>
|
|
Utilised Arduino/C++ for monitoring and reporting, and
|
|
Python-Flask+SQLite for a RESTful logging API and user interface
|
|
</li>
|
|
</ul>
|
|
</section>
|
|
|
|
<section id=web-developer-adrian-devries class=experience>
|
|
<hgroup>
|
|
<h3>Web Developer @ Adrian Devries, Melbourne, Australia</h3>
|
|
<p class=experience-time-span>2018</p>
|
|
</hgroup>
|
|
<ul>
|
|
<li>
|
|
Made an artist CV web-page for Melbourne based visual artist Adrian
|
|
Devries.
|
|
</li>
|
|
<li>
|
|
Used vanilla HTML5/CSS/JS for the webpage, and hosted via
|
|
HostGator's shared hosting
|
|
</li>
|
|
</ul>
|
|
</section>
|
|
</section>
|
|
|
|
<section id=education class="experiences">
|
|
<hgroup class="experiences-heading">
|
|
<img src="assets/icon-academic-cap.svg"/>
|
|
<h2>Education</h2>
|
|
</hgroup>
|
|
|
|
<section id=bacherlor-cs-rmit class=experience>
|
|
<hgroup>
|
|
<h3>Bachelor of Computer Science, RMIT, Melbourne, Australia</h3>
|
|
<p class=experience-time-span>2018 - 2020</p>
|
|
</hgroup>
|
|
<p>
|
|
Practiced developing software in a team based environment, using
|
|
techniques and technologies such as: Agile, UML, Git, Trello, etc.
|
|
</p>
|
|
<p>
|
|
Learnt to analyse and implement algorithms to solve concrete
|
|
problems.
|
|
</p>
|
|
<p>
|
|
Developed a mock IoT application for a library management system
|
|
using Python and Raspberry Pi.
|
|
</p>
|
|
</section>
|
|
|
|
<section id=associate-degree-it-rmit class=experience>
|
|
<hgroup>
|
|
<h3>Associate Degree of IT, RMIT, Melbourne, Australia</h3>
|
|
<p class=experience-time-span>2017 - 2018</p>
|
|
</hgroup>
|
|
<p>
|
|
Studies included computer networking (primarily OSI layers 2-4),
|
|
database design and management, and basic web development and
|
|
UX design
|
|
</p>
|
|
</section>
|
|
|
|
<section id=cs50x class=experience>
|
|
<hgroup>
|
|
<h3>CS50X, edX</h3>
|
|
<p class=experience-time-span>2016-2017</p>
|
|
</hgroup>
|
|
</section>
|
|
</section>
|
|
</main>
|
|
<menu class="links">
|
|
<li>
|
|
<a href="https://github.com/johnbotris" class="external-link">
|
|
<img
|
|
class="icon"
|
|
alt="the github logo"
|
|
src="assets/github-mark.svg"
|
|
>
|
|
<span class="print-only">/johnbotris</span>
|
|
</a>
|
|
</li>
|
|
<li>
|
|
<a href="https://git.botris.dev/john/resume" class="external-link">
|
|
<img
|
|
class="icon"
|
|
alt="the forgejo logo"
|
|
src="assets/forgejo-black.png"
|
|
>
|
|
<span class="print-only">git.botris.dev</span>
|
|
</a>
|
|
</li>
|
|
<li>
|
|
<a href="https://www.linkedin.com/in/johnbotris/" class="external-link">
|
|
<img
|
|
class="icon"
|
|
alt="the linkedin logo"
|
|
src="assets/In-Blue-48.png"
|
|
>
|
|
<span class="print-only">/in/johnbotris</span>
|
|
</a>
|
|
</li>
|
|
</menu>
|
|
<aside>
|
|
<dl id=details class="icon-list">
|
|
<dt>
|
|
<img
|
|
class="icon"
|
|
alt="location"
|
|
aria-description="location"
|
|
src="assets/icon-location.svg"
|
|
/>
|
|
</dt>
|
|
<dd>Berlin</dd>
|
|
|
|
<dt>
|
|
<img
|
|
class="icon"
|
|
alt="phone"
|
|
aria-description="phone number"
|
|
src="assets/icon-mobile.svg"
|
|
/>
|
|
</dt>
|
|
<dd><a href="tel:+491789190925">+49 178 9190925</a></dd>
|
|
|
|
<dt><img class="icon" alt="email" aria-description="email address"
|
|
src="assets/icon-email.svg"/></dt>
|
|
<dd>
|
|
<a href="mailto:me@johnmorr.is?subject=Re:+Your+application&body=Hey+John,%0A%0ANice+resume+%E2%98%BA%EF%B8%8F.%0AWe'd+love+to+hire+you!">me@johnmorr.is</a>
|
|
</dd>
|
|
</dl>
|
|
|
|
<section id="skills">
|
|
<h2>Skills</h2>
|
|
|
|
<section class="skills-section">
|
|
<h3>Programming languages</h3>
|
|
<ul>
|
|
<li>TypeScript/JavaScript</li>
|
|
<li>C#</li>
|
|
<li>Java</li>
|
|
<li>Kotlin</li>
|
|
<li>Rust</li>
|
|
<li>Linux Shell</li>
|
|
<li></li>
|
|
</ul>
|
|
</section>
|
|
|
|
<section class="skills-section">
|
|
<h3>Frameworks and Technologies</h3>
|
|
<ul>
|
|
<li>VueJS+Nuxt</li>
|
|
<li>MithrilJS</li>
|
|
<li>Azure Admin</li>
|
|
<li>Linux Sysadmin</li>
|
|
<li>Jenkins CI</li>
|
|
</ul>
|
|
</section>
|
|
|
|
<section id="human-languages" class="skills-section">
|
|
<h3>Human languages</h3>
|
|
<dl>
|
|
<dt>English</dt>
|
|
<dd>Native</dd>
|
|
|
|
<dt>German</dt>
|
|
<dd>B2</dd>
|
|
</dl>
|
|
</section>
|
|
</section>
|
|
</aside>
|
|
</body>
|
|
|
|
<script>
|
|
let originalTitle
|
|
window.addEventListener("beforeprint", (event) => {
|
|
const now = new Date()
|
|
originalTitle = document.title
|
|
|
|
const year = now.getFullYear()
|
|
const month = now.getMonth() + 1
|
|
const day = now.getDate()
|
|
document.title = `John Morris CV`;
|
|
});
|
|
|
|
window.addEventListener("afterprint", (event) => {
|
|
document.title = originalTitle;
|
|
});
|
|
</script>
|
|
</html>
|