lindholm.dev/content/cv/index.html

190 lines
8.5 KiB
HTML

<div id="resume">
<div style="display: flex; justify-content: space-between;">
<h1><span class="onlyPrint">Ville Lindholm &mdash;</span> Curriculum Vitae</h1>
<button class="noPrint outline"
data-tooltip="Just print to PDF as usual, I have custom CSS styles to make it look nice!"
data-placement="left"><i class='bx bx-printer'></i> PDF version</button>
</div>
<div style="display: flex; flex-wrap: wrap; gap: 1rem;">
<div><i class='bx bx-envelope'></i> <span id="lindholm-email" /></div>
<div><i class='bx bxl-github'></i> <a href="https://github.com/vlindhol">@vlindhol</a></div>
<div><i class='bx bxl-linkedin-square'></i> <a
href="https://www.linkedin.com/in/villelindholm/">villelindholm</a></div>
<div class="onlyPrint"><i class='bx bx-globe'></i> <a href="https://lindholm.dev">https://lindholm.dev</a>
</div>
</div>
<hr />
<div id="description">
<p>
I am an experienced <b>full stack software engineer</b> currently based in <b>Helsinki, Finland</b>. I am
interested in
writing code that is readable, (appropriately) scalable and
well-architected. I am always curious about new paradigms, patterns and tools.
</p>
<p>I tend to <b>gravitate towards the backend</b>, since that's usually where the growing pains are for services
that are scaling up. In the frontend I am <b>strong with React</b>, but am increasingly interested in
vanilla JS and other natively supported features that browsers have nowadays.</p>
<p>
I've been programming since childhood, first by building Web 1.0-style web pages, then by coding games. At
university,
I used my programming talents to simulate plasma at a <b>fusion energy lab</b> for my <b>physics degree</b>.
</p>
</div>
<dl>
<dt>
<h3>Recent Experience</h3>
</dt>
<dd>
<div class="note-box">
<strong>Years of software engineering experience: ~12 years</strong>. This is a rough estimate; I've
been writing code most
of my life and I believe that deserves to be included, so a tacked on a few extra years to represent
that!
</div>
</dd>
<dd>
<div class="no-page-break">
<h4><a href="https://memfault.com/">Memfault (YC19)</a> <span>2021 &mdash; 2024</span></h4>
<p>
<b>Full-stack developer</b> for a web app that ingests data from millions
of IoT devices.
<ul>
<li>Migrated the service from Heroku to AWS, reducing costs ~50%.</li>
<li>Developed a more advanced permission system (backend + UI), unlocking a new customer size
segment.</li>
<li>Developed "batch operations" for common tasks in the UI (think e-mail batch operations),
preventing churn of large customers.
</li>
<li>PostgreSQL fine-tuning and optimization, enabling ingestion of 100% more devices.</li>
</ul>
</p>
<p>
<i>
Stack: AWS, React (TypeScript), Flask/Sqlalchemy/Celery (Python),
PostgreSQL, ClickHouse.
</i>
</p>
</div>
<div class="no-page-break">
<h4><a href="https://www.moominls.com/">Playvation / Moomin Language School</a> <span>2019 &mdash;
2021</span></h4>
<p>
<b>Senior Software Developer</b>. Backend and admin/content creation UI of
an educational mobile app for children (built with Unity).
<ul>
<li>Converted a REST API to GraphQL for the admin web app, plugging dozens of security holes.</li>
<li>Added a robust DevOps pipeline instead of manual deployments, bringing deployment time down from
hours/days to minutes.</li>
<li>Asset organization improvements in the Unity-based mobile app, reducing runtime bugs by 25%.
</li>
</ul>
</p>
<p>
<i>
Stack: AWS, React (TypeScript), Express (TypeScript), PostgreSQL, Unity (C#).
</i>
</p>
</div>
<div class="no-page-break">
<h4><a href="https://www.duodecim.fi/english/">Duodecim Publishing Company Ltd</a> <span>2017
&mdash;
2019</span></h4>
<p>
<b>Lead developer</b> for <a href="https://www.ebmeds.org/en/">EBMEDS</a>, a CE-marked, MDR class
IIa
medical device (it's purely software though).
<ul>
<li>Full conversion of an extremely legacy JScript(!) codebase into modern TypeScript.</li>
<li>Implemented CI/CD, deploying with horizontal scaling on AWS ECS.</li>
<li>Made the contents of the service searchable, with ElasticSearch.</li>
<li>Integrated the service for use in the Finnish <a
href="https://www.omaolo.fi?lang=en">OmaOlo</a>, a national health service usable by 5.5
million users a.k.a. citizens.</li>
<li>Early contributions to the global <a href="https://www.hl7.org/fhir/overview.html">HL7 FHIR</a>
standard, mainly by taking
part in working group meetings and conferences.</li>
</ul>
</p>
<p>
<i>
Stack: Express (TypeScript), Docker, Docker Swarm, AWS, AWS ECS, ElasticSearch
</i>
</p>
</div>
</dd>
</dl>
<dl>
<dt>
<h3>Education</h3>
</dt>
<dd>
<div class="no-page-break">
<h4><a href="https://www.aalto.fi/en">Aalto University</a></h4>
<p>
<strong>Bachelor's degree:</strong> Applied Physics<br />
<strong>Master's degree:</strong> Applied Physics<br />
<em>Major:</em> Energy physics (Fusion energy and plasma simulation)
</p>
<h4><a href="https://www.helsinki.fi/en">University of Helsinki</a></h4>
<p>
<strong>Bachelor's degree:</strong> Nordic literature
</p>
</div>
</dd>
</dl>
<dl class="no-page-break">
<dt>
<h3>Skills</h3>
</dt>
<dd>
<div>
<h4>Proficient</h4>
<p>
<strong>Languages/Frameworks</strong>: TypeScript, Node.js, Express.js, Python, Flask, React, HTML
and CSS.
</p>
<p>
<strong>Databases/Infra</strong>: REST and GraphQL APIs, AWS, Terraform, Ansible, PostgreSQL,
ClickHouse, Redis, RabbitMQ, shell scripting. Also, data modeling and DB schema design/optimization.
</p>
<p>
<strong>Other</strong>: Scrum, Canban and Shape Up work processes
</p>
<h4>Intermediate</h4>
<p>
Rust, C, Swift, C#, C++
</p>
<h4>Beginner/curious</h4>
<p>
Elixir, Common Lisp, Zig
</p>
</div>
</dd>
</dl>
<dl>
<dt>
<h3>Other hobbies/skills</h3>
</dt>
<dd>
<div class="no-page-break">
In my spare time I write poetry and fiction, read a lot of books and dabble in improvisational theatre
and windsurfing. I also contribute to open source projects when I have the time!
</div>
</dd>
</dl>
<dl>
<dt>
<h3>References</h3>
</dt>
<dd>
<div class="no-page-break">
Available on request (don't want to expose contact information needlessly for bots to scrape).
</div>
</dd>
</dl>
</div>