Merge pull request #1 from vlindhol/simple-hugo
From-scratch hugo setup
This commit is contained in:
commit
5bf7dfbd7f
3
.gitmodules
vendored
3
.gitmodules
vendored
@ -1,3 +0,0 @@
|
||||
[submodule "themes/PaperMod"]
|
||||
path = themes/PaperMod
|
||||
url = https://github.com/adityatelange/hugo-PaperMod.git
|
||||
42
content/blog/test.md
Normal file
42
content/blog/test.md
Normal file
@ -0,0 +1,42 @@
|
||||
---
|
||||
title: "If by Rudyard Kipling"
|
||||
date: 2024-10-02T12:14:57+03:00
|
||||
tags: ["poetry"]
|
||||
draft: false
|
||||
---
|
||||
|
||||
If you can keep your head when all about you
|
||||
Are losing theirs and blaming it on you,
|
||||
If you can trust yourself when all men doubt you,
|
||||
But make allowance for their doubting too;
|
||||
If you can wait and not be tired by waiting,
|
||||
Or being lied about, don't deal in lies,
|
||||
Or being hated, don't give way to hating,
|
||||
And yet don't look too good, nor talk too wise:
|
||||
|
||||
If you can dream—and not make dreams your master;
|
||||
If you can think—and not make thoughts your aim;
|
||||
If you can meet with Triumph and Disaster
|
||||
And treat those two impostors just the same;
|
||||
If you can bear to hear the truth you've spoken
|
||||
Twisted by knaves to make a trap for fools,
|
||||
Or watch the things you gave your life to, broken,
|
||||
And stoop and build 'em up with worn-out tools:
|
||||
|
||||
If you can make one heap of all your winnings
|
||||
And risk it on one turn of pitch-and-toss,
|
||||
And lose, and start again at your beginnings
|
||||
And never breathe a word about your loss;
|
||||
If you can force your heart and nerve and sinew
|
||||
To serve your turn long after they are gone,
|
||||
And so hold on when there is nothing in you
|
||||
Except the Will which says to them: ‘Hold on!'
|
||||
|
||||
If you can talk with crowds and keep your virtue,
|
||||
Or walk with Kings—nor lose the common touch,
|
||||
If neither foes nor loving friends can hurt you,
|
||||
If all men count with you, but none too much;
|
||||
If you can fill the unforgiving minute
|
||||
With sixty seconds' worth of distance run,
|
||||
Yours is the Earth and everything that's in it,
|
||||
And—which is more—you'll be a Man, my son!
|
||||
@ -1,33 +1,52 @@
|
||||
<div id="resume">
|
||||
<!--<img src="https://asdf.com" alt="Picture of Ville Lindholm"> -->
|
||||
<h1>CV</h1>
|
||||
<h2>Ville "Will" Lindholm</h2>
|
||||
<!--
|
||||
<p>Web: <a href="https://lindholm.dev">lindholm.dev</a></p>
|
||||
<p>Email: <a href=#>ville@lindholm.dev</a></p>
|
||||
<p>Twitter: <a href="https://x.com/lindholm_dev">@lindholm_dev</a></p>
|
||||
<div id="description">
|
||||
<p>
|
||||
I am a software engineer currently based in Helsinki, Finland, with a deep knowledge of web-based apps
|
||||
and APIs. 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>
|
||||
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 energy!
|
||||
</p>
|
||||
<div style="display: flex; justify-content: space-between;">
|
||||
<h1><span class="onlyPrint">Ville Lindholm —</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 class="onlyPrint">
|
||||
<div class="grid">
|
||||
<div><i class='bx bx-envelope'></i> ⟨first_name⟩@⟨last_name⟩.dev</a></div>
|
||||
<div><i class='bx bx-globe'></i> <a href="https://lindholm.dev">https://lindholm.dev</a></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>
|
||||
-->
|
||||
<hr />
|
||||
</div>
|
||||
|
||||
<div id="description">
|
||||
<p>
|
||||
I am an experienced full stack software engineer currently based in Helsinki, Finland. 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>
|
||||
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!
|
||||
</p>
|
||||
</div>
|
||||
<dl>
|
||||
<dt>Recent Experience</dt>
|
||||
<dt>
|
||||
<h3>Recent Experience</h3>
|
||||
</dt>
|
||||
<dd>
|
||||
<div class="note-box">
|
||||
<strong>Years of experience: ~12 years</strong>. This is a rough estimate: I started learning
|
||||
programming as a teen in 1999 and my first programming job was in 2002,
|
||||
constructing web shops in Perl for my local ISP. I then worked on and off with coding until I graduated
|
||||
university, so it's hard to put a number on my "years of experience".
|
||||
</div>
|
||||
</dd>
|
||||
<dd>
|
||||
<div class="no-page-break">
|
||||
<h2><a href="https://memfault.com/">Memfault</a> <span>2021 — 2024</span></h2>
|
||||
<h4><a href="https://memfault.com/">Memfault</a> <span>2021 — 2024</span></h4>
|
||||
<p>
|
||||
<b>Full-stack developer</b> for a web app that ingests data from millions
|
||||
of IoT devices. Migrated the service from Heroku to AWS. Developed
|
||||
a more advanced permission system. Developed a "batch operations"
|
||||
a more advanced permission system (backend + UI). Developed a "batch operations"
|
||||
API for common tasks in the UI (think e-mail batch operations).
|
||||
</p>
|
||||
<p>
|
||||
@ -38,14 +57,15 @@
|
||||
</p>
|
||||
</div>
|
||||
<div class="no-page-break">
|
||||
<h2><a href="https://www.moominls.com/">Playvation / Moomin Language School</a> <span>2019 —
|
||||
2021</span></h2>
|
||||
<h4><a href="https://www.moominls.com/">Playvation / Moomin Language School</a> <span>2019 —
|
||||
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). Implemented a
|
||||
GraphQL API for the admin web app, and substantial UI/UX improvements. Added a
|
||||
robust DevOps pipeline instead of manual deployments, bringing deployment time
|
||||
down from hours/days to minutes (on both AWS and AWS China).
|
||||
down from hours/days to minutes (on both AWS and AWS China). Also worked on the
|
||||
product itself, a Unity-based mobile app, mainly on asset organization improvements.
|
||||
</p>
|
||||
<p>
|
||||
<i>
|
||||
@ -54,9 +74,9 @@
|
||||
</p>
|
||||
</div>
|
||||
<div class="no-page-break">
|
||||
<h2><a href="https://www.duodecim.fi/english/">Duodecim Publishing Company Ltd</a> <span>2017
|
||||
<h4><a href="https://www.duodecim.fi/english/">Duodecim Publishing Company Ltd</a> <span>2017
|
||||
—
|
||||
2019</span></h2>
|
||||
2019</span></h4>
|
||||
<p>
|
||||
<b>Lead developer</b> for <a href="https://www.ebmeds.org/en/">EBMEDS</a>, a CE class IIa
|
||||
medical
|
||||
@ -81,44 +101,56 @@
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt>Education</dt>
|
||||
<dt>
|
||||
<h3>Education</h3>
|
||||
</dt>
|
||||
<dd>
|
||||
<div class="no-page-break">
|
||||
<h2><a href="https://www.aalto.fi/en">Aalto University</a></h2>
|
||||
<h4><a href="https://www.aalto.fi/en">Aalto University</a></h4>
|
||||
<p>
|
||||
<strong>Bachelor's degree:</strong> Applied Physics 2010<br />
|
||||
<strong>Master's degree:</strong> Applied Physics 2014<br />
|
||||
<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>
|
||||
<h2><a href="https://www.helsinki.fi/en">University of Helsinki</a></h2>
|
||||
<h4><a href="https://www.helsinki.fi/en">University of Helsinki</a></h4>
|
||||
<p>
|
||||
<strong>Bachelor's degree:</strong> Nordic literature 2014
|
||||
<strong>Bachelor's degree:</strong> Nordic literature
|
||||
</p>
|
||||
</div>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt>Skills</dt>
|
||||
<dt>
|
||||
<h3>Skills</h3>
|
||||
</dt>
|
||||
<dd>
|
||||
<div class="no-page-break">
|
||||
<h2>Proficient</h2>
|
||||
<h4>Proficient</h4>
|
||||
<p>
|
||||
TypeScript, React, AWS, Python, REST and GraphQL APIs, Agile and
|
||||
Shape Up work processes, HTML and CSS.
|
||||
<strong>Languages/Frameworks</strong>: TypeScript, Python, React, HTML and CSS.
|
||||
</p>
|
||||
<h2>Intermediate</h2>
|
||||
<p>
|
||||
Rust, C, Swift, C#
|
||||
<strong>Databases/Infra</strong>: REST and GraphQL APIs, AWS, Terraform, Ansible, PostgreSQL,
|
||||
ClickHouse, Redis, RabbitMQ, shell scripting.
|
||||
</p>
|
||||
<h2>Beginner/curious</h2>
|
||||
<p>
|
||||
C++, Elixir, various Lisps
|
||||
<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>References</dt>
|
||||
<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).
|
||||
|
||||
@ -1,7 +1,6 @@
|
||||
baseURL: https://vlindhol.github.io/
|
||||
languageCode: en-us
|
||||
title: Lindholm Software
|
||||
theme: PaperMod
|
||||
copyright: © Ville Lindholm
|
||||
disableHugoGeneratorInject: true
|
||||
|
||||
|
||||
51
layouts/_default/baseof.html
Normal file
51
layouts/_default/baseof.html
Normal file
@ -0,0 +1,51 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
|
||||
<!-- Open Graph metadata -->
|
||||
<meta property="og:title" content="Lindholm Software">
|
||||
<meta property="og:description" content="Ville Lindholm is a freelance software developer.">
|
||||
<meta property="og:image" content="https://lindholm.dev/portrait.jpg">
|
||||
<meta property="og:url" content="https://lindholm.dev">
|
||||
<meta property="og:type" content="website">
|
||||
|
||||
<!-- fonts -->
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Caprasimo&display=swap" rel="stylesheet">
|
||||
<link href="https://fonts.cdnfonts.com/css/junicode-2" rel="stylesheet">
|
||||
|
||||
<!-- icons -->
|
||||
<link href='https://unpkg.com/boxicons@2.1.4/css/boxicons.min.css' rel='stylesheet'>
|
||||
|
||||
<!-- pico helps with some basic CSS styling -->
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@picocss/pico@2/css/pico.css">
|
||||
|
||||
<!-- the rest is ours -->
|
||||
<link rel="stylesheet" href="/style.css">
|
||||
<title>{{ .Site.Title }}</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<header class="container noPrint">
|
||||
<nav>
|
||||
<ul>
|
||||
<li>
|
||||
<h4><a href="/" class="contrast">{{ .Site.Title }}</a></h4>
|
||||
</li>
|
||||
</ul>
|
||||
<ul>
|
||||
<li><a href="/cv" class="contrast">CV</a></li>
|
||||
<li><a href="/blog" class="contrast">Blog</a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
||||
<main class="container">
|
||||
{{ block "main" . }}{{ end }}
|
||||
</main>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
3
layouts/_default/single.html
Normal file
3
layouts/_default/single.html
Normal file
@ -0,0 +1,3 @@
|
||||
{{ define "main" }}
|
||||
{{ .Content }}
|
||||
{{ end }}
|
||||
16
layouts/index.html
Normal file
16
layouts/index.html
Normal file
@ -0,0 +1,16 @@
|
||||
{{ define "main" }}
|
||||
<div
|
||||
style="text-align: center; display: flex; justify-content: center; flex-direction: column; align-items: center; height: 50vh;">
|
||||
<img src="/images/portrait.jpeg" alt="Picture of Ville Lindholm"
|
||||
style="border-radius: 50%; width: 150px; height: 150px;" />
|
||||
<hgroup>
|
||||
<h1>Ville Lindholm</h1>
|
||||
<p>Freelance Software engineer</p>
|
||||
</hgroup>
|
||||
<div style="display: flex;">
|
||||
<a href="https://github.com/vlindhol"><i class='bx bxl-github'></i></a>
|
||||
<a href="https://x.com/lindholm_dev"><i class='bx bxl-twitter'></i></a>
|
||||
<a href="https://www.linkedin.com/in/villelindholm/"><i class='bx bxl-linkedin-square'></i></a>
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
||||
43
static/style.css
Normal file
43
static/style.css
Normal file
@ -0,0 +1,43 @@
|
||||
:root {
|
||||
/* Add Junicode in front of the default Pico fonts, from https://picocss.com/docs/css-variables#all-css-variables */
|
||||
--pico-font-family-sans-serif: "Junicode", system-ui, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, Helvetica, Arial, "Helvetica Neue", sans-serif, var(--pico-font-family-emoji);
|
||||
}
|
||||
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5 {
|
||||
--pico-font-family: "Caprasimo", cursive;
|
||||
--pico-font-weight: 400;
|
||||
}
|
||||
|
||||
/* handy classes for showing/hiding stuff for printing */
|
||||
@media print {
|
||||
.noPrint {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen {
|
||||
.onlyPrint {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
/* for displaying notes */
|
||||
.note-box {
|
||||
border: 1px solid #cce5ff;
|
||||
background-color: #e9f7ff;
|
||||
color: #004085;
|
||||
padding: 15px;
|
||||
border-radius: 5px;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.note-box::before {
|
||||
content: "ℹ️";
|
||||
font-size: 20px;
|
||||
margin-right: 10px;
|
||||
vertical-align: middle;
|
||||
}
|
||||
@ -1 +0,0 @@
|
||||
Subproject commit 9ea3bb0e1f3aa06ed7715e73b5fabb36323f7267
|
||||
Loading…
x
Reference in New Issue
Block a user