diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 0000000..59314e8
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,3 @@
+[submodule "themes/toha"]
+ path = themes/toha
+ url = https://github.com/hugo-toha/toha.git
diff --git a/.hugo_build.lock b/.hugo_build.lock
new file mode 100644
index 0000000..e69de29
diff --git a/404.html b/404.html
deleted file mode 100644
index 086a5c9..0000000
--- a/404.html
+++ /dev/null
@@ -1,25 +0,0 @@
----
-permalink: /404.html
-layout: default
----
-
-
-
-
-
404
-
-
Page not found :(
-
The requested page could not be found.
-
diff --git a/Gemfile b/Gemfile
deleted file mode 100644
index c77a4be..0000000
--- a/Gemfile
+++ /dev/null
@@ -1,26 +0,0 @@
-source "https://rubygems.org"
-gem "jekyll", "~> 4.2.0"
-
-# This is the default theme for new Jekyll sites. You may change this to anything you like.
-gem "minima", "~> 2.5"
-
-# Enable code syntax highlighting with asciidoc
-gem 'pygments.rb', '~> 2.1.0'
-
-group :jekyll_plugins do
- gem "jekyll-feed", "~> 0.12"
- gem 'jekyll-asciidoc'
-end
-
-# Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem
-# and associated library.
-platforms :mingw, :x64_mingw, :mswin, :jruby do
- gem "tzinfo", "~> 1.2"
- gem "tzinfo-data"
-end
-
-# Performance-booster for watching directories on Windows
-gem "wdm", "~> 0.1.1", :platforms => [:mingw, :x64_mingw, :mswin]
-
-
-gem "webrick", "~> 1.7"
diff --git a/Gemfile.lock b/Gemfile.lock
deleted file mode 100644
index eef0bef..0000000
--- a/Gemfile.lock
+++ /dev/null
@@ -1,89 +0,0 @@
-GEM
- remote: https://rubygems.org/
- specs:
- addressable (2.8.0)
- public_suffix (>= 2.0.2, < 5.0)
- asciidoctor (2.0.16)
- colorator (1.1.0)
- concurrent-ruby (1.1.9)
- em-websocket (0.5.2)
- eventmachine (>= 0.12.9)
- http_parser.rb (~> 0.6.0)
- eventmachine (1.2.7)
- ffi (1.15.4)
- forwardable-extended (2.6.0)
- http_parser.rb (0.6.0)
- i18n (1.8.10)
- concurrent-ruby (~> 1.0)
- jekyll (4.2.0)
- addressable (~> 2.4)
- colorator (~> 1.0)
- em-websocket (~> 0.5)
- i18n (~> 1.0)
- jekyll-sass-converter (~> 2.0)
- jekyll-watch (~> 2.0)
- kramdown (~> 2.3)
- kramdown-parser-gfm (~> 1.0)
- liquid (~> 4.0)
- mercenary (~> 0.4.0)
- pathutil (~> 0.9)
- rouge (~> 3.0)
- safe_yaml (~> 1.0)
- terminal-table (~> 2.0)
- jekyll-asciidoc (3.0.0)
- asciidoctor (>= 1.5.0)
- jekyll (>= 3.0.0)
- jekyll-feed (0.15.1)
- jekyll (>= 3.7, < 5.0)
- jekyll-sass-converter (2.1.0)
- sassc (> 2.0.1, < 3.0)
- jekyll-seo-tag (2.7.1)
- jekyll (>= 3.8, < 5.0)
- jekyll-watch (2.2.1)
- listen (~> 3.0)
- kramdown (2.3.1)
- rexml
- kramdown-parser-gfm (1.1.0)
- kramdown (~> 2.0)
- liquid (4.0.3)
- listen (3.7.0)
- rb-fsevent (~> 0.10, >= 0.10.3)
- rb-inotify (~> 0.9, >= 0.9.10)
- mercenary (0.4.0)
- minima (2.5.1)
- jekyll (>= 3.5, < 5.0)
- jekyll-feed (~> 0.9)
- jekyll-seo-tag (~> 2.1)
- pathutil (0.16.2)
- forwardable-extended (~> 2.6)
- public_suffix (4.0.6)
- pygments.rb (2.1.0)
- rb-fsevent (0.11.0)
- rb-inotify (0.10.1)
- ffi (~> 1.0)
- rexml (3.2.5)
- rouge (3.26.1)
- safe_yaml (1.0.5)
- sassc (2.4.0)
- ffi (~> 1.9)
- terminal-table (2.0.0)
- unicode-display_width (~> 1.1, >= 1.1.1)
- unicode-display_width (1.8.0)
- webrick (1.7.0)
-
-PLATFORMS
- x86_64-linux
-
-DEPENDENCIES
- jekyll (~> 4.2.0)
- jekyll-asciidoc
- jekyll-feed (~> 0.12)
- minima (~> 2.5)
- pygments.rb (~> 2.1.0)
- tzinfo (~> 1.2)
- tzinfo-data
- wdm (~> 0.1.1)
- webrick (~> 1.7)
-
-BUNDLED WITH
- 2.2.27
diff --git a/_config.yml b/_config.yml
deleted file mode 100644
index 7f05e5d..0000000
--- a/_config.yml
+++ /dev/null
@@ -1,19 +0,0 @@
-title: Jekyll + AsciiDoc demo
-email: your-email@example.com
-description: >-
- Write an awesome description for your new site here. You can edit this
- line in _config.yml. It will appear in your document head meta (for
- Google search results) and in your feed.xml site description.
-baseurl: "" # the subpath of your site, e.g. /blog
-url: "" # the base hostname & protocol for your site, e.g. http://example.com
-twitter_username: jekyllrb
-github_username: jekyll
-
-theme: minima
-plugins:
- - jekyll-feed
-
-asciidoc: {}
-asciidoctor:
- attributes:
- source-highlighter: pygments
diff --git a/_includes/head.html b/_includes/head.html
deleted file mode 100644
index 786df5c..0000000
--- a/_includes/head.html
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/_posts/2021-09-21-welcome-to-jekyll.adoc b/_posts/2021-09-21-welcome-to-jekyll.adoc
deleted file mode 100644
index 801ed56..0000000
--- a/_posts/2021-09-21-welcome-to-jekyll.adoc
+++ /dev/null
@@ -1,29 +0,0 @@
----
-layout: post
-title: "Welcome to Jekyll!"
-date: 2021-09-21 18:51:07 +0300
-categories: jekyll update
----
-
-:jekyll-docs: https://jekyllrb.com/docs/home
-:jekyll-gh: https://github.com/jekyll/jekyll
-:jekyll-talk: https://talk.jekyllrb.com/
-
-You’ll find this post in your `_posts` directory. Go ahead and edit it and re-build the site to see your changes. You can rebuild the site in many different ways, but the most common way is to run `jekyll serve`, which launches a web server and auto-regenerates your site when a file is updated.
-
-Jekyll requires blog post files to be named according to the following format:
-
-`YEAR-MONTH-DAY-title.MARKUP`
-
-Where `YEAR` is a four-digit number, `MONTH` and `DAY` are both two-digit numbers, and `MARKUP` is the file extension representing the format used in the file. After that, include the necessary front matter. Take a look at the source for this post to get an idea about how it works.
-
-Jekyll also offers powerful support for code snippets:
-
-[source,ruby]
-def print_hi(name)
- puts "Hi, #{name}"
-end
-print_hi('Tom')
-#=> prints 'Hi, Tom' to STDOUT.
-
-Check out the {jekyll-docs}[Jekyll docs] for more info on how to get the most out of Jekyll. File all bugs/feature requests at {jekyll-gh}[Jekyll’s GitHub repo]. If you have questions, you can ask them on {jekyll-talk}[Jekyll Talk].
diff --git a/archetypes/default.md b/archetypes/default.md
new file mode 100644
index 0000000..00e77bd
--- /dev/null
+++ b/archetypes/default.md
@@ -0,0 +1,6 @@
+---
+title: "{{ replace .Name "-" " " | title }}"
+date: {{ .Date }}
+draft: true
+---
+
diff --git a/asciidoc-pygments.css b/asciidoc-pygments.css
deleted file mode 100644
index ab0096a..0000000
--- a/asciidoc-pygments.css
+++ /dev/null
@@ -1,43 +0,0 @@
-pre { line-height: 125%; }
-td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
-span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
-td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
-span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
-pre.pygments .hll { background-color: #ffffcc }
-pre.pygments, pre.pygments code { background: #ffffff; }
-pre.pygments .tok-c { color: #008000 } /* Comment */
-pre.pygments .tok-err { border: 1px solid #FF0000 } /* Error */
-pre.pygments .tok-k { color: #0000ff } /* Keyword */
-pre.pygments .tok-ch { color: #008000 } /* Comment.Hashbang */
-pre.pygments .tok-cm { color: #008000 } /* Comment.Multiline */
-pre.pygments .tok-cp { color: #0000ff } /* Comment.Preproc */
-pre.pygments .tok-cpf { color: #008000 } /* Comment.PreprocFile */
-pre.pygments .tok-c1 { color: #008000 } /* Comment.Single */
-pre.pygments .tok-cs { color: #008000 } /* Comment.Special */
-pre.pygments .tok-ge { font-style: italic } /* Generic.Emph */
-pre.pygments .tok-gh { font-weight: bold } /* Generic.Heading */
-pre.pygments .tok-gp { font-weight: bold } /* Generic.Prompt */
-pre.pygments .tok-gs { font-weight: bold } /* Generic.Strong */
-pre.pygments .tok-gu { font-weight: bold } /* Generic.Subheading */
-pre.pygments .tok-kc { color: #0000ff } /* Keyword.Constant */
-pre.pygments .tok-kd { color: #0000ff } /* Keyword.Declaration */
-pre.pygments .tok-kn { color: #0000ff } /* Keyword.Namespace */
-pre.pygments .tok-kp { color: #0000ff } /* Keyword.Pseudo */
-pre.pygments .tok-kr { color: #0000ff } /* Keyword.Reserved */
-pre.pygments .tok-kt { color: #2b91af } /* Keyword.Type */
-pre.pygments .tok-s { color: #a31515 } /* Literal.String */
-pre.pygments .tok-nc { color: #2b91af } /* Name.Class */
-pre.pygments .tok-ow { color: #0000ff } /* Operator.Word */
-pre.pygments .tok-sa { color: #a31515 } /* Literal.String.Affix */
-pre.pygments .tok-sb { color: #a31515 } /* Literal.String.Backtick */
-pre.pygments .tok-sc { color: #a31515 } /* Literal.String.Char */
-pre.pygments .tok-dl { color: #a31515 } /* Literal.String.Delimiter */
-pre.pygments .tok-sd { color: #a31515 } /* Literal.String.Doc */
-pre.pygments .tok-s2 { color: #a31515 } /* Literal.String.Double */
-pre.pygments .tok-se { color: #a31515 } /* Literal.String.Escape */
-pre.pygments .tok-sh { color: #a31515 } /* Literal.String.Heredoc */
-pre.pygments .tok-si { color: #a31515 } /* Literal.String.Interpol */
-pre.pygments .tok-sx { color: #a31515 } /* Literal.String.Other */
-pre.pygments .tok-sr { color: #a31515 } /* Literal.String.Regex */
-pre.pygments .tok-s1 { color: #a31515 } /* Literal.String.Single */
-pre.pygments .tok-ss { color: #a31515 } /* Literal.String.Symbol */
\ No newline at end of file
diff --git a/assets/images/bailey-zindel-NRQV-hBF10M-unsplash.jpg b/assets/images/bailey-zindel-NRQV-hBF10M-unsplash.jpg
new file mode 100644
index 0000000..acfa931
Binary files /dev/null and b/assets/images/bailey-zindel-NRQV-hBF10M-unsplash.jpg differ
diff --git a/assets/images/john.png b/assets/images/john.png
new file mode 100644
index 0000000..520710e
Binary files /dev/null and b/assets/images/john.png differ
diff --git a/assets/images/skills/docker.svg b/assets/images/skills/docker.svg
new file mode 100644
index 0000000..4242689
--- /dev/null
+++ b/assets/images/skills/docker.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/images/skills/git.svg b/assets/images/skills/git.svg
new file mode 100644
index 0000000..2e42bc7
--- /dev/null
+++ b/assets/images/skills/git.svg
@@ -0,0 +1,15 @@
+
+
+
+
diff --git a/assets/images/skills/java.svg b/assets/images/skills/java.svg
new file mode 100644
index 0000000..fc6665f
--- /dev/null
+++ b/assets/images/skills/java.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/images/skills/linux.svg b/assets/images/skills/linux.svg
new file mode 100644
index 0000000..6b558e7
--- /dev/null
+++ b/assets/images/skills/linux.svg
@@ -0,0 +1,438 @@
+
+
diff --git a/config.toml b/config.toml
new file mode 100644
index 0000000..72dbb72
--- /dev/null
+++ b/config.toml
@@ -0,0 +1,28 @@
+baseURL = 'https://korhonen.cc'
+languageCode = 'en-us'
+title = 'Marko Korhonen'
+theme = 'toha'
+
+enableEmoji = true
+
+[languages]
+
+[languages.en]
+languageName = "English"
+weight = 1
+
+[markup]
+
+[markup.tableOfContents]
+startLevel = 2
+endLevel = 6
+ordered = false
+
+[params]
+gitRepo = "https://git.korhonen.cc/FunctionalHacker/website"
+enableBlogPost = false
+enableTOC = true
+background = "images/bailey-zindel-NRQV-hBF10M-unsplash.jpg"
+
+[params.newsletter]
+enable = false
diff --git a/data/en/author.toml b/data/en/author.toml
new file mode 100644
index 0000000..db02e25
--- /dev/null
+++ b/data/en/author.toml
@@ -0,0 +1,9 @@
+name = "Marko Korhonen"
+nickname = "Marko"
+greeting = "Hi, I am"
+image = "images/john.png"
+summary = ["I am a developer", "I love open source", "I love Linux"]
+
+[contactInfo]
+email = "marko@korhonen.cc"
+phone = "+358407658800"
diff --git a/data/en/sections/about.toml b/data/en/sections/about.toml
new file mode 100644
index 0000000..c8be351
--- /dev/null
+++ b/data/en/sections/about.toml
@@ -0,0 +1,40 @@
+designation = "Software Engineer"
+resume = "files/cv-eng.pdf"
+summary = "I am a passionate software engineer with 2 years of working experience. I also have a passion for Linux, self-hosted applications and open source."
+
+[section]
+name = "About"
+id = "about"
+enable = true
+weight = 1
+showOnNavbar = true
+template = "sections/about.html"
+
+[company]
+name = "Rossum Oy"
+url = "https://rossum.fi"
+
+[[socialLinks]]
+name = "Github"
+icon = "fab fa-github"
+url = "https://www.github.com/FunctionalHacker"
+
+[[socialLinks]]
+name = "LinkedIn"
+icon = "fab fa-linkedin"
+url = "https://www.linkedin.com/in/functionalhacker"
+
+[[softSkills]]
+name = "Teamwork"
+percentage = 90
+color = "blue"
+
+[[softSkills]]
+name = "Communication"
+percentage = 95
+color = "green"
+
+[[softSkills]]
+name = "Leadership"
+percentage = 80
+color = "orange"
diff --git a/data/en/sections/education.toml b/data/en/sections/education.toml
new file mode 100644
index 0000000..143639c
--- /dev/null
+++ b/data/en/sections/education.toml
@@ -0,0 +1,38 @@
+[section]
+name = "Education"
+id = "education"
+template = "sections/education.html"
+enable = true
+weight = 4
+showOnNavbar = true
+
+[[degrees]]
+name = "Bachelor of ICT"
+icon = "fa-graduation-cap"
+timeframe = "2016-2020"
+
+[degrees.institution]
+name = "Metropolia University of Applied Sciences"
+url = "https://www.metropolia.fi"
+
+[[degrees.publications]]
+title = "Rust as a Web Development Language"
+url = "https://www.theseus.fi/handle/10024/339275"
+
+[[degrees]]
+name = "Student exchange"
+icon = "fa-building-columns"
+timeframe = "2016-2020"
+
+[degrees.institution]
+name = "Frankfurt University of Applied Sciences"
+url = "https://www.frankfurt-university.de"
+
+[[degrees]]
+name = "Upper secondary qualification in Business Economics"
+icon = "fa-building"
+timeframe = "2013-2015"
+
+[degrees.institution]
+name = "Saimaan Ammattiopisto"
+url = "https://www.edusampo.fi"
diff --git a/data/en/sections/experiences.toml b/data/en/sections/experiences.toml
new file mode 100644
index 0000000..265c7ce
--- /dev/null
+++ b/data/en/sections/experiences.toml
@@ -0,0 +1,53 @@
+[section]
+name = "Experiences"
+id = "experiences"
+enable = true
+weight = 3
+showOnNavbar = true
+
+[[experiences]]
+
+[experiences.company]
+name = "Rossum Oy"
+url = "https://www.rossum.fi"
+location = "Lahti, Finland"
+overview = "Rossum is a well-established Finnish software company"
+
+[[experiences.positions]]
+designation = "Software Engineer"
+start = "May 2020"
+responsibilities = [
+ "Full-stack software development (Java, React.js)",
+ "Linux server and infrastructure maintenance",
+]
+
+[[experiences]]
+
+[experiences.company]
+name = "Uskonnen Oy"
+url = "https://www.uskonnen.fi"
+location = "Helsinki, Finland"
+overview = "Uskonnen is a Finnish company that specializes in remarketing business computers and doing computer maintenance and repair"
+
+[[experiences.positions]]
+designation = "Summer intern"
+start = "June 2018"
+end = "July 2018"
+responsibilities = [
+ "Repairing and troubleshooting customer computers",
+ "Selling computers",
+]
+
+[[experiences]]
+
+[experiences.company]
+name = "Auto-Suni Oy"
+location = "Lappeenranta, Finland"
+url = "https://www.auto-suni.fi"
+overview = "Auto-Suni is a family owned car dealership located in South Carelia"
+
+[[experiences.positions]]
+designation = "Summer intern"
+start = "June 2017"
+end = "July 2017"
+responsibilities = ["Internal technical support"]
diff --git a/data/en/sections/skills.toml b/data/en/sections/skills.toml
new file mode 100644
index 0000000..282a3bc
--- /dev/null
+++ b/data/en/sections/skills.toml
@@ -0,0 +1,27 @@
+[section]
+name = "Skills"
+id = "skills"
+enable = true
+weight = 2
+showOnNavbar = true
+template = "sections/skills.html"
+
+[[skills]]
+name = "Java"
+logo = "images/skills/java.svg"
+summary = "My main \"back-end\" programming language. Proficient in frameworks and libraries such as Hibernate, JPA, Spring."
+
+[[skills]]
+name = "Docker"
+logo = "images/skills/docker.svg"
+summary = "Experienced in packaging, distributing and managing Dockerized software."
+
+[[skills]]
+name = "Linux"
+logo = "images/skills/linux.svg"
+summary = "Using Linux as my main operating system for a number of years both at work and on my free time. Capable of writing bash/shell scripts."
+
+[[skills]]
+name = "Git"
+logo = "images/skills/git.svg"
+summary = "Experienced with git-based development. Especially feature driven development workflow."
diff --git a/data/en/site.toml b/data/en/site.toml
new file mode 100644
index 0000000..b3e4ea3
--- /dev/null
+++ b/data/en/site.toml
@@ -0,0 +1,4 @@
+copyright = "Copyright © 2022 Marko Korhonen"
+
+# Meta description for search engines and such
+description = "Portfolio and personal blog of John Doe."
diff --git a/index.adoc b/index.adoc
deleted file mode 100644
index 72c799d..0000000
--- a/index.adoc
+++ /dev/null
@@ -1,7 +0,0 @@
-:page-layout: home
-
-This is the front page. You can find it in the source as `index.adoc`.
-
-This is the home page and it is using the `home` layout, so you should see a "Posts" widget below, which shows the latests posts.
-
-Jekyll also supports generating RSS feeds, pretty cool ain't it?
diff --git a/jekyll-asciidoc.adoc b/jekyll-asciidoc.adoc
deleted file mode 100644
index 48e8cbb..0000000
--- a/jekyll-asciidoc.adoc
+++ /dev/null
@@ -1,10 +0,0 @@
-= Jekyll ♥ AsciiDoc
-:page-layout: page
-:page-permalink: /jekyll-asciidoc/
-:url-asciidoctor: http://asciidoctor.org
-
-This is a sample page composed in AsciiDoc.
-Jekyll converts it to HTML using {url-asciidoctor}[Asciidoctor].
-
-[source,ruby]
-puts "Hello, World!"
diff --git a/static/files/cv-eng.pdf b/static/files/cv-eng.pdf
new file mode 100644
index 0000000..16d85d5
Binary files /dev/null and b/static/files/cv-eng.pdf differ
diff --git a/themes/toha b/themes/toha
new file mode 160000
index 0000000..3809d29
--- /dev/null
+++ b/themes/toha
@@ -0,0 +1 @@
+Subproject commit 3809d298ca49144f1bfbdb921df34883af803409