Initial commit

This commit is contained in:
Mats Rauhala 2018-09-20 20:58:27 +03:00
commit 9ff22271d4
Signed by: MasseR
GPG Key ID: 1C18445948FFF87B
12 changed files with 594 additions and 0 deletions

29
about.markdown Normal file
View File

@ -0,0 +1,29 @@
---
title: About
---
![](./images/profile.jpg)
I'm a software developer from southern Finland. I'm currently working as a
Haskell developer at Relex Oy involved in an internal tool. I also have
experience with systems integrations and backend web development.
I'm also an aviation enthusiast. I have a glider pilots license and a touring
motor glider pilots license (LAPL(S)+TMG).
My [GPG key](./resources/2104943D6033C.txt)
### Notable experience and interests
- **Haskell**
- Working on an internal Haskell based tool at Relex Oy
- Some contributions to [darcshub](https://hub.darcs.net/)
- Some contributions to [xmonad](https://github.com/xmonad)
- Dozens of personal projects, most of which ended up being just tests for
different libraries, techniques or algorithms.
- **Systems integrations**
- Working as a consultant from Avoltus Oy to different companies using
[Mulesoft](https://developer.mulesoft.com/). Systems include webshops,
different databases, crms and erps.
- **Java**
- Bunch of different smaller projects while working at Avoltus Oy

10
contact.markdown Normal file
View File

@ -0,0 +1,10 @@
---
title: Contact
---
I live in Espoo Finland. You can contact me on any of the following services.
- **Email**: mats@rauhala.info
- **Slack**: masser@functionalprogramming.slack.com
- **IRC**: MasseR@freenode
- **Mastodon**: MasseR@mastodon.social

141
css/default.css Normal file
View File

@ -0,0 +1,141 @@
html {
font-size: 62.5%;
}
body {
font-size: 1.6rem;
color: #000;
}
header {
border-bottom: 0.2rem solid #000;
}
nav {
text-align: right;
}
nav a {
font-size: 1.8rem;
font-weight: bold;
color: black;
text-decoration: none;
text-transform: uppercase;
}
footer {
margin-top: 3rem;
padding: 1.2rem 0;
border-top: 0.2rem solid #000;
font-size: 1.2rem;
color: #555;
}
h1 {
font-size: 2.4rem;
}
h2 {
font-size: 2rem;
}
article .header {
font-size: 1.4rem;
font-style: italic;
color: #555;
}
.logo a {
font-weight: bold;
color: #000;
text-decoration: none;
}
@media (max-width: 319px) {
body {
width: 90%;
margin: 0;
padding: 0 5%;
}
header {
margin: 4.2rem 0;
}
nav {
margin: 0 auto 3rem;
text-align: center;
}
footer {
text-align: center;
}
.logo {
text-align: center;
margin: 1rem auto 3rem;
}
.logo a {
font-size: 2.4rem;
}
nav a {
display: block;
line-height: 1.6;
}
}
@media (min-width: 320px) {
body {
width: 90%;
margin: 0;
padding: 0 5%;
}
header {
margin: 4.2rem 0;
}
nav {
margin: 0 auto 3rem;
text-align: center;
}
footer {
text-align: center;
}
.logo {
text-align: center;
margin: 1rem auto 3rem;
}
.logo a {
font-size: 2.4rem;
}
nav a {
display: inline;
margin: 0 0.6rem;
}
}
@media (min-width: 640px) {
body {
width: 60rem;
margin: 0 auto;
padding: 0;
}
header {
margin: 0 0 3rem;
padding: 1.2rem 0;
}
nav {
margin: 0;
text-align: right;
}
nav a {
margin: 0 0 0 1.2rem;
display: inline;
}
footer {
text-align: right;
}
.logo {
margin: 0;
text-align: left;
}
.logo a {
float: left;
font-size: 1.8rem;
}
}

11
hakylltest.cabal Normal file
View File

@ -0,0 +1,11 @@
name: hakylltest
version: 0.1.0.0
build-type: Simple
cabal-version: >= 1.10
executable site
main-is: site.hs
build-depends: base == 4.*
, hakyll == 4.10.*
ghc-options: -threaded
default-language: Haskell2010

BIN
images/profile.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

7
index.html Normal file
View File

@ -0,0 +1,7 @@
---
title: Home
---
<h2>Welcome</h2>
<p>Not much here yet. See the top bar</p>

273
resources/2104943D6033C.txt Normal file
View File

@ -0,0 +1,273 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
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
fzTOVEKgqYMGDBdLpX94nPT5c682aEawyZV2sz234RQh+WCCgvotaJr2ytBIC5g1
tCtNYXRzIFJhdWhhbGEgKFl1YmlrZXkpIDxtYXNzZUByYXVoYWxhLmluZm8+iQJO
BBMBCAA4FiEEIQSUPWAzyPT31PVgvabf7bz7Z3kFAlt8az8CGwEFCwkIBwIGFQoJ
CAsCBBYCAwECHgECF4AACgkQvabf7bz7Z3nurw/+L+aZAH0P7BjuzE8IdpQg2Z+d
yC8NlcNDjBDff/7mos4e3mxU6nfmri1jch6DOYBBXK2exrw9SOVCDKyWaO/gXJH7
teUZ6DB83NCxFl/b+hbB0paUMEBVldekEPwZVnGvfoJJyuNxNvfsDSPFf1Nks7k/
oLD2s9ja/301LTWL4HLD09zQQ+oSUaTEBA3RzFWnQzDQssBHMtw76JW7l95n7/KY
SuNUltipTW7fn9b6Q2CieCLdu42sXwwm9hV7K5xXQs08mP00BOZkKBSLPFqi2JaF
35TiVyaZo1UeGrBswIbgkIU9NHEIoJNTMTLpTHOAT8chBbNi8RBIrY52p2qGPmDF
rgJ+ICs3OXxrgd3bWZXAKG9t7Q5lipjXAhcwny5PdRb5ByMIIFvpt7/koprMd3iP
JXdobAxq92hVVoRe3ALkO5nKx6osLB/CPR6L/2OtmmGrGwspLVeJJjW0jUJq+k+F
isBCADvp/Z6nauhbJe17GPsZtR3rkKL1aw5qTNOIwMKZ9CXrKSvRx/wllxjaXkZW
ba6F5UczCpSxiCCj+BtfB0S484CAV/7zJAcp79e77Bna4ditQAJz1PBLJoDXNKn+
c5TvFEWUMlO/T2yRGs6SvsN3UVd9eXesmQ8mO/5bcSO672aHpY/Kj5dlJ5nCB/2Q
DQXGLLqnW2JUpSZrGh60K01hdHMgUmF1aGFsYSAoV29yaykgPG1hdHMucmF1aGFs
YUByZWxleC5maT6JAk4EEwEIADgWIQQhBJQ9YDPI9PfU9WC9pt/tvPtneQUCW3xr
VwIbAQULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRC9pt/tvPtneXatD/44Gbhj
X4XfC8gdnC7MMrIkfBzQtV8rzCyB5o25mrsBCG08gjiXYhAJtozrZGHNFYEvbCqq
XlBpKQJXkH9FI1TMxIfq9iztfLoGmtPdtzKTT3KzKNUfdWPJZcox4whhty+jI/eJ
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
a3faPg==
=VcIs
-----END PGP PUBLIC KEY BLOCK-----

71
site.hs Normal file
View File

@ -0,0 +1,71 @@
--------------------------------------------------------------------------------
{-# LANGUAGE OverloadedStrings #-}
import Data.Monoid (mappend)
import Hakyll
--------------------------------------------------------------------------------
main :: IO ()
main = hakyll $ do
match "images/*" $ do
route idRoute
compile copyFileCompiler
match "resources/*" $ do
route idRoute
compile copyFileCompiler
match "css/*" $ do
route idRoute
compile compressCssCompiler
match (fromList ["about.markdown", "contact.markdown"]) $ do
route $ setExtension "html"
compile $ pandocCompiler
>>= loadAndApplyTemplate "templates/default.html" defaultContext
>>= relativizeUrls
-- match "posts/*" $ do
-- route $ setExtension "html"
-- compile $ pandocCompiler
-- >>= loadAndApplyTemplate "templates/post.html" postCtx
-- >>= loadAndApplyTemplate "templates/default.html" postCtx
-- >>= relativizeUrls
-- create ["archive.html"] $ do
-- route idRoute
-- compile $ do
-- posts <- recentFirst =<< loadAll "posts/*"
-- let archiveCtx =
-- listField "posts" postCtx (return posts) `mappend`
-- constField "title" "Archives" `mappend`
-- defaultContext
--
-- makeItem ""
-- >>= loadAndApplyTemplate "templates/archive.html" archiveCtx
-- >>= loadAndApplyTemplate "templates/default.html" archiveCtx
-- >>= relativizeUrls
match "index.html" $ do
route idRoute
compile $ do
posts <- recentFirst =<< loadAll "posts/*"
let indexCtx =
listField "posts" postCtx (return posts) `mappend`
constField "title" "Home" `mappend`
defaultContext
getResourceBody
>>= applyAsTemplate indexCtx
>>= loadAndApplyTemplate "templates/default.html" indexCtx
>>= relativizeUrls
match "templates/*" $ compile templateBodyCompiler
--------------------------------------------------------------------------------
postCtx :: Context String
postCtx =
dateField "date" "%B %e, %Y" `mappend`
defaultContext

2
templates/archive.html Normal file
View File

@ -0,0 +1,2 @@
Here you can find all my previous posts:
$partial("templates/post-list.html")$

32
templates/default.html Normal file
View File

@ -0,0 +1,32 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>rauhala.info - $title$</title>
<link rel="stylesheet" href="/css/default.css" />
</head>
<body>
<header>
<div class="logo">
<a href="/">rauhala.info</a>
</div>
<nav>
<a href="/">Home</a>
<a href="/about.html">About</a>
<a href="/contact.html">Contact</a>
</nav>
</header>
<main role="main">
<h1>$title$</h1>
$body$
</main>
<footer>
Site proudly generated by
<a href="http://jaspervdj.be/hakyll">Hakyll</a>
</footer>
</body>
</html>

7
templates/post-list.html Normal file
View File

@ -0,0 +1,7 @@
<ul>
$for(posts)$
<li>
<a href="$url$">$title$</a> - $date$
</li>
$endfor$
</ul>

11
templates/post.html Normal file
View File

@ -0,0 +1,11 @@
<article>
<section class="header">
Posted on $date$
$if(author)$
by $author$
$endif$
</section>
<section>
$body$
</section>
</article>