initial commit.

This commit is contained in:
nek0 2016-03-01 08:03:27 +01:00
commit d5c54f8267
97 changed files with 2094 additions and 0 deletions

3
.gitignore vendored Normal file
View File

@ -0,0 +1,3 @@
.stack-work/
_cache/
_site/

8
404.md Normal file
View File

@ -0,0 +1,8 @@
-----
title: Error 404
author: nek0
-----
## the site you wanted does not exist.
Oops. Unfortunately there was an error. try [going back home](/).

52
D7665688.txt Normal file
View File

@ -0,0 +1,52 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1
mQINBFYEdjIBEAC6cLTlqJcZyMjKgEtzIAW4FkqMmxXHSuR4QdIQXvKhlA7iX4DB
SUV0STZK155696P4975GQNBadDT95dLOID49DCEFkZwh6icEhK+36HrBk9lUz/ZW
DTVbmkocNkQxWZAHee2fTWWzu901VbUOSwrxiBd3Lk2ZQm13mS6jAIqnXHyWtteg
Pn/4AbWA9udhpxqCJLqw9pnWTZ2q/Z+mMYooQS+55gwbNsWc+OSfk8Un1LW4DgO8
Smh8leisfmh1+sK+Ends4mj1yG7FGJ7meovWpSI/3ETuKW6HEHLp+g9QHKZxyRuC
FSca+LN8yhaImMvGCSzyJrW490is+ZFZCLjOiY49TJ8nve6UgcgWQSvQhKicQRKq
+N4rs6l6Lts0wwDSMARxxW2B/DnxHjryg1Qmsm7nGNhUjdMV8k6N//8A+1z5KshM
LDKGGdjLfhlBfrmqduZoI7AszW8p8VtkyvSq/SSJWMnX67j6B984mdpikV6Spql7
XMosCO22uMheS9+q3tDhozJv/tZr54pz6uiMmr2rJc6N16Ww2hXeTc/MgJTiCWST
ilpe543AITZbN5fLLSGnEGwNAP4FZfcOU1+aICdEruCnZQPdMB/Fgf7WRZ9wi/um
89tnqiS3mZz5qhHD6OXIp4cIUWXAyE0whK0xTw/IhV6wdR2xGYKlw2JLaQARAQAB
tCJSeXMgT3N0cm92aWQgKG1lb3cpIDxuZWswQG5lazAuZXU+iQI4BBMBAgAiBQJW
BHYyAhsDBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRD7ktlj12ZWiHxmD/oD
f//VZMiDqs/sXdz7DuuCGflpEQsgHrpbl0khQ6kRlyDrrU9N2RPS/MsI1zFzG5a1
XVdm4MIB++E6aDk9o7qIOvNrriAnKSqCsFrM5E19CJ1GTKATl8blhXWyejXrA7tb
AGfiVbNqv8iXiH4BqsVqPMJjMEJcSqA5DXbmoAd1Vi0oI07I12uVrc1kof6Dcv9e
VeYSUP2UVD1TJaCvegarsX8MNr3R/097E4cL/8lNrT5o8MtwkTobGLYyqQj9fPfM
l1XHZyB9q6mN3uA/Byj5QAOYIIbxiOo3/9vsqTgtPEsZKD14fGRldLxjDIAfmPBl
G0lOkeA68tAXrGb15KoaFkLKl0b7bEYfZ0iVap0hgfGQg5hI1lIFVJTwS7hjPgth
pN4zwAkpOub1RnmjUd9PhuOVAFyRZU+Gf2h6JRKTdXWzFFKTyrIKcQBfgB+huY5T
13rzbxK4JYc3ykcUeVndNUrfp2tBetK68PHLnNP7cJuWQHzorwM8ux/5t0IzXbuL
jwIr9Ymi3JVlxH8qbU+TxvS2mzBnysVOXU8dT0zGAhuaGcrThWoyR1nBFzo0WKrt
gHyYJ/sa6QgKj9H/+ZIR4Y04Qt7Zcav868WPpLmuz1kEuC3HW4Vva3wdQ1seguW5
+tjjWDfBYnK4e8pMs4PrnCQxizOEiA/KyI72rhrhrrkCDQRWBHYyARAA23uXrJMD
r68D2v61S2yTWb88ojOxUhG3TSzBAjissja4NoKJSLnUhz6ZP68vY6WEBuUXhgCH
WEaj0FHuigAPfjbpnmj8RriT5DbgczgOMsmuG9zKBWTrZ3YX0O+YS+35DnxY34MK
9mjEEo1jywiALksnpvqJotgvpxyBA0+noBIz/HcD0YvX29KgmLwepSKyPD1u95s0
1xlqIPFUuzWWaSsYy0RsNLJDJb0araYyH81ZalpRP9lBCAeUVO0Ub+HQxa3qxiz5
hmtKm/Ji1piq9p4tnZOtB31+COxqNmReKVOUoGyTvcp8Hknmx6qeZfH0sCOS/Y6b
IUS8G9QAR4WPfVGPfKFni+E+JRKcetAiQjy3ApnIybP3l7VxPDXbURkrOuOBRDg0
c0Ae/tNobqN925jX3ImuF1KW7KccGaY2zyCG4nMR5UxG8ruL5VKrscntwxbYoAET
wrH9WH8A/KEbfylRMmMyJ6/c9lBawknW2bodEDnK0VppwjeX5rm6KSwpV+xhIMMu
w8HJLML1oo6oqIlvjHC/ul11KZGFTN24qVjzAOJMFEvEqN9VzH8kOJTY2qY7HzrQ
Ut6u5ErSwdoceqr6AUtJ0Xi0ZR0XZZOF78FP3Mvi8WanJXgd2kws5rEn+mJ825J3
URmuvQ3FaJkkn5zDM3g9HkTyQXdr8LywnckAEQEAAYkCHwQYAQIACQUCVgR2MgIb
DAAKCRD7ktlj12ZWiEnMD/9i7ECRWPqn2kna367bFP5Ocp38LFuqS/R/Aw7kl8KJ
Z08SYaEnozu5XAFYORgzl3GaBsvQ0z9N/nR+jUF9IZ2YuNO4WxyB8ysjfzdGNtKd
XVJvd4PvSy0KQaT0uVCF6zzTfRw6CNHppa6ZYZd8ekcr1k5fPc6Qx4+xmWpsbmU8
2yOn7T5FfxAEOJ8LwvppiJf4JXErY1cFhU4qK7wkyX7vGMcL8PNKJwnixd7Ev5tU
L8ecCMCABX+2phmkOr8nsSg3NAHd6D0MIbzdNdviwQ6en4a/0VbQk9xCxFp45E2p
2kz8VSW40oA2JP8vKuioDF5lSmZyIDnUFrRFdkrhcyMlCKdS50a6/l3HKvNUoSaL
0YR52c8gA4FWDWs/DiwzkG8QrvXOdChhqLN6sIBS/I/3GTgKSe7d75dl1oX+9acx
lJGmuCjbF+5P62/tRB5EDzev8CYyK5W52yiNU7c3lemcxI5agrAua/EwpvSqiSfN
qvIuZt6frWGxAotsP6egmLuhcTWIvxmakw4zZyaOVCr2VHPZBW1AQl+EAbrU/n9u
V8xvnciSWM0NPoyYkl4a57GuC5dyy5ZzWZQkV1VyMGNKzLkbWAV/WcsF4PxHe6Ud
MUPuEGXd29obogzVYxL+bFVblyz4LZbVoDAbfVlvJavOhbB3epCpIrSCJIL9T4nf
XQ==
=pASe
-----END PGP PUBLIC KEY BLOCK-----

2
Setup.hs Normal file
View File

@ -0,0 +1,2 @@
import Distribution.Simple
main = defaultMain

28
about.md Normal file
View File

@ -0,0 +1,28 @@
---
title: About
author: nek0
---
##Hi there!
You found your way to my little spot in the internet and you want to know more.
So be it!
###About me
Sorry about disappointing you at this point, but there is not much to say about me and even less I want to disclose.
The name I identify with is nek0. This is of course a nickname. I live in Central Europe as a university student and in my free time I like to code, play piano, sing and read books. I have a very broad taste in music and a great deal of understanding.
###About this site
<img alt="Haskell logo" src="/images/haskell-logo.png" style="width:auto">
This site came to existence as a byproduct of an experiment. I am trying to configure and maintain my own server.
This blog is generated with the static site generator [Hakyll][h], which is written in Haskell, my favourite programming language so far. I myself am not very skilled in that language yet, but i find it very fascinating.
As you can see I have been successful so far.
Due to this experimental state it is very likely that the appearance of this site will change over time.
[h]: http://jaspervdj.be/hakyll

28
blog.cabal Normal file
View File

@ -0,0 +1,28 @@
-- Initial blog.cabal generated by cabal init. For further documentation,
-- see http://haskell.org/cabal/users-guide/
name: blog
version: 0.1.0.0
synopsis: My blog
-- description:
homepage: https://nek0.eu
-- license:
-- license-file: LICENSE
author: nek0
maintainer: nek0@chelnok.de
-- copyright:
category: Web
build-type: Simple
-- extra-source-files:
cabal-version: >=1.10
executable blog
main-is: Main.hs
hs-source-dirs: src
default-language: Haskell2010
ghc-options: -Wall
-- other-modules:
-- other-extensions:
build-depends: base
, hakyll
, directory

13
contact.md Normal file
View File

@ -0,0 +1,13 @@
---
title: Contact
---
If you have any comments on posts, this site or anything else, feel free to contact me at:
**<nek0@nek0.eu>**. The associated PGP-Key has the ID [0xD7665688][key].
I will gladly reply to your mails as soon as possible.
Furthermore You can contact me via [Jabber/XMPP][jabber] at the address
**nek0@jabber.chelnok.de**.
[key]: /D7665688.txt
[jabber]: https://en.wikipedia.org/wiki/XMPP

5
css/comments.css Normal file
View File

@ -0,0 +1,5 @@
object {
width: 100%;
height: 500px;
border: none;
}

276
css/default.css Normal file
View File

@ -0,0 +1,276 @@
body {
color: black;
font-size: 16px;
font-family: 'Didact Gothic';
font-weight: normal;
font-style: normal;
-webkit-font-smoothing: antialiased;
margin: 0;
}
a{
text-decoration: none;
}
a:link {
color: green;
}
a:visited {
color: darkgreen;
}
img {
float: right;
margin: 10px;
width: 66%;
max-width: 500px;
}
hr {
color: black;
border: 0;
background-color: black;
height: 2px;
}
header {
padding: 20px;
}
header a {
color: darkgreen;
font-size: 18px;
font-weight: bold;
}
header a:visited {
color: darkgreen;
}
article {
text-align: left;
padding: 20px;
margin-left: 200px;
overflow: auto;
}
article a:hover{
text-decoration: underline;
}
article ul{
list-style: none;
}
article li:before {
display: inline-block;
background-image: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTc5MiIgaGVpZ2h0PSIxNzkyIiB2aWV3Qm94PSIwIDAgMTc5MiAxNzkyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Ik0xMzYzIDg3N2wtNzQyIDc0MnEtMTkgMTktNDUgMTl0LTQ1LTE5bC0xNjYtMTY2cS0xOS0xOS0xOS00NXQxOS00NWw1MzEtNTMxLTUzMS01MzFxLTE5LTE5LTE5LTQ1dDE5LTQ1bDE2Ni0xNjZxMTktMTkgNDUtMTl0NDUgMTlsNzQyIDc0MnExOSAxOSAxOSA0NXQtMTkgNDV6Ii8+PC9zdmc+);
background-repeat: no-repeat;
background-size: contain;
content: "";
width: 1.5ex;
height: 1.5ex;
}
article li {
text-indent: -2ex;
margin-left: 1.5ex;
}
nav {
position: fixed;
width: 200px;
}
.navigation, .tagcloud {
background-color: rgba(0,0,0,0.1);
background: rgba(0,0,0,0.1);
border-radius: 5px;
border-top-left-radius: 0px;
border-bottom-left-radius: 0px;
padding-top: 20px;
padding-bottom: 20px;
}
.tagcloud {
text-align: right;
padding-right: 20px;
padding-left: 20px;
}
.navigation {
padding-right: 10px;
}
/*nav .tagcloud a:visited {
color:darkgreen;
}
nav .tagcloud a:link {
color:green;
}*/
nav ul{
text-align:right;
list-style: none;
margin-left: 0px;
}
nav li a:link {
color: darkgreen;
font-size: 18px;
font-weight: bold;
margin-right: 10px;
text-decoration: none;
text-transform: uppercase;
}
nav li a:visited {
color: darkgreen;
}
footer {
position: relative;
color: #555;
font-size: 12px;
text-align: right;
clear: both;
left: 0;
bottom: 0;
padding: 20px;
padding-top: 0px;
padding-bottom: 0px;
margin-top: 2em;
margin-bottom: 0.5em;
}
footer span {
padding-left: 40px;
}
footer span img {
vertical-align: bottom;
}
footer img {
float: none;
margin: 0;
width: 16px;
}
pre {
border: dashed 1px #000000;
border-radius: 5px;
background-color: rgba(0, 0, 0, 0.05);
background: rgba(0, 0, 0, 0.05);
padding: 10px;
}
pre code {
border: none;
font-size: 14px;
background: transparent;
background-color: transparent;
}
pre code:before {
content: attr(class);
position: relative;
float: right;
display: block;
color: white;
font-weight: bolder;
text-shadow: 0px 0px 3px black;
}
code {
font-size: 14px;
background: rgba(0, 0, 0, 0.05);
background-color: rgba(0, 0, 0, 0.05);
border: dashed 1px #000000;
border-radius: 5px;
}
h1 {
font-size: 24px;
}
h2 {
font-size: 20px;
}
.bitcoin {
display: inline-block;
margin-bottom: -2px;
fill: currentColor;
}
.pagination {
display: inline-block;
width: 100%;
}
.left, .right {
float: left;
margin-left: 25%;
display: inline-block;
fill: currentColor;
}
.left svg, .right svg {
margin-bottom: -3px;
}
.info {
color: #555;
font-size: 14px;
font-style: italic;
}
.site {
display: flex;
min-height: 100vh;
flex-direction: column;
}
.wrapper {
flex: 1;
}
.hidden a:link{
color: gray;
}
.hidden a:visited{
color: gray;
}
.feed{
display: inline-block;
margin-bottom: -2px;
fill: currentColor;
}
@media screen and (max-width: 600px){
nav{
position: relative;
width: auto;
height: auto;
text-align: center;
}
nav ul{
text-align: center;
padding-left: 0;
}
nav li{
display: inline-block;
}
article {
margin: 0;
}
img {
float: right;
margin: 10px;
padding-left: 100%;
width: 230px;
}
}

6
css/font.css Normal file
View File

@ -0,0 +1,6 @@
@font-face {
font-family: 'Didact Gothic';
src: url('/font/DidactGothicMedium.ttf') format('truetype');
font-weight: normal;
font-style: normal;
}

13
css/synlight.css Normal file
View File

@ -0,0 +1,13 @@
code.sourceCode span.kw { color: #007020; font-weight: bold; }
code.sourceCode span.dt { color: #902000; }
code.sourceCode span.dv { color: #40a070; }
code.sourceCode span.bn { color: #40a070; }
code.sourceCode span.fl { color: #40a070; }
code.sourceCode span.ch { color: #4070a0; }
code.sourceCode span.st { color: #4070a0; }
code.sourceCode span.co { color: #60a0b0; font-style: italic; }
code.sourceCode span.ot { color: #007020; }
code.sourceCode span.al { color: red; font-weight: bold; }
code.sourceCode span.fu { color: #06287e; }
code.sourceCode span.re { }
code.sourceCode span.er { color: red; font-weight: bold; }

BIN
font/DidactGothic.ttf Normal file

Binary file not shown.

BIN
font/DidactGothicMedium.ttf Normal file

Binary file not shown.

13
humans.txt Normal file
View File

@ -0,0 +1,13 @@
/* TEAM */
Me: nek0
Email: nek0@nek0.eu
Location: Germany
/* THANKS */
Jasper van der Jeugt: jaspervdj.be
/* SITE */
Standards: HTML5, CSS3,
Components: plain old Html
Software: Hakyll, nginx
IDE: vim

Binary file not shown.

After

Width:  |  Height:  |  Size: 458 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

BIN
images/2014-10-01-01.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 730 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

BIN
images/2014-10-01-02.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 686 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 KiB

BIN
images/2014-10-01-03.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 662 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

BIN
images/2014-10-01-04.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 599 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

BIN
images/2014-10-01-05.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 677 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

BIN
images/2014-10-01-06.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 609 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

BIN
images/2014-10-01-07.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 586 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

7
images/HTML5_Badge.svg Normal file
View File

@ -0,0 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
<title>HTML5 Logo Badge</title>
<path fill="#E34F26" d="M71,460 L30,0 481,0 440,460 255,512"/>
<path fill="#EF652A" d="M256,472 L405,431 440,37 256,37"/>
<path fill="#EBEBEB" d="M256,208 L181,208 176,150 256,150 256,94 255,94 114,94 115,109 129,265 256,265zM256,355 L255,355 192,338 188,293 158,293 132,293 139,382 255,414 256,414z"/>
<path fill="#FFF" d="M255,208 L255,265 325,265 318,338 255,355 255,414 371,382 372,372 385,223 387,208 371,208zM255,94 L255,129 255,150 255,150 392,150 392,150 392,150 393,138 396,109 397,94z"/>
</svg>

After

Width:  |  Height:  |  Size: 617 B

BIN
images/haskell-logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

BIN
images/nekonet.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

79
images/nekonet.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 9.2 KiB

83
imprint.md Normal file
View File

@ -0,0 +1,83 @@
---
title: Impressum
---
Angaben gemäß § 5 TMG:
## Kontakt:
Amedeo Molnár
Hochschulstraße 20
01069 Dresden
Telefon:
0176-77239874
E-Mail: <nek0@nek0.eu>
## Haftungsausschluss:
### Haftung für Inhalte
Die Inhalte meiner Seiten wurden mit größter Sorgfalt erstellt. Für die Richtigkeit, Vollständigkeit und
Aktualität der Inhalte kann ich jedoch keine Gewähr übernehmen. Als Diensteanbieter bin ich gemäß
§ 7 Abs.1 TMG für eigene Inhalte auf diesen Seiten nach den allgemeinen Gesetzen verantwortlich. Nach
§§ 8 bis 10 TMG bin ich als Diensteanbieter jedoch nicht verpflichtet, übermittelte oder gespeicherte
fremde Informationen zu überwachen oder nach Umständen zu forschen, die auf eine rechtswidrige Tätigkeit
hinweisen. Verpflichtungen zur Entfernung oder Sperrung der Nutzung von Informationen nach den allgemeinen
Gesetzen bleiben hiervon unberührt. Eine diesbezügliche Haftung ist jedoch erst ab dem Zeitpunkt der
Kenntnis einer konkreten Rechtsverletzung möglich. Bei Bekanntwerden von entsprechenden Rechtsverletzungen
werde ich diese Inhalte umgehend entfernen.
### Haftung für Links
Unser Angebot enthält Links zu externen Webseiten Dritter, auf deren Inhalte ich keinen Einfluss habe.
Deshalb kann ich für diese fremden Inhalte auch keine Gewähr übernehmen. Für die Inhalte der verlinkten
Seiten ist stets der jeweilige Anbieter oder Betreiber der Seiten verantwortlich. Die verlinkten Seiten
wurden zum Zeitpunkt der Verlinkung auf mögliche Rechtsverstöße überprüft. Rechtswidrige Inhalte waren zum
Zeitpunkt der Verlinkung nicht erkennbar. Eine permanente inhaltliche Kontrolle der verlinkten Seiten ist
jedoch ohne konkrete Anhaltspunkte einer Rechtsverletzung nicht zumutbar. Bei Bekanntwerden von
Rechtsverletzungen werde ich derartige Links umgehend entfernen.
### Urheberrecht
Die durch die Seitenbetreiber erstellten Inhalte und Werke auf diesen Seiten unterliegen dem deutschen
Urheberrecht und, soweit nicht anders vermerkt, einer Creative-Commons-Lizenz CC BY-SA 4.0 (Namensnennung
Weitergabe unter gleichen Bedingungen 4.0). Unter den in der Lizenz angegebenen Bedingungen können Sie
die lizenzierten Inhalte und Werke vervielfältigen, verbreiten und öffentlich zugänglich machen, und Sie
können Abwandlungen und Bearbeitungen anfertigen. Zu den Nutzungsbedingungen gehören unter anderem die
Namensnennung des Rechteinhabers und die Weitergabe der Inhalte und Werke bzw. Ihrer Abwandlungen davon zu
identischen oder vergleichbaren Lizenzbedingungen.
Soweit die Inhalte auf dieser Seite nicht vom Betreiber erstellt wurden, werden die Urheberrechte Dritter
beachtet. Insbesondere werden Inhalte Dritter als solche gekennzeichnet. Sollten Sie trotzdem auf eine
Urheberrechtsverletzung aufmerksam werden, bitte ich um einen entsprechenden Hinweis. Bei Bekanntwerden
von Rechtsverletzungen werde ich derartige Inhalte umgehend entfernen.
## Datenschutz
### Cookies
Die Internetseiten verwenden teilweise so genannte Cookies. Cookies richten auf Ihrem Rechner keinen
Schaden an und enthalten keine Viren. Cookies dienen dazu, mein Angebot nutzerfreundlicher, effektiver
und sicherer zu machen. Cookies sind kleine Textdateien, die auf Ihrem Rechner abgelegt werden und die Ihr
Browser speichert.
Sie können Ihren Browser so einstellen, dass Sie über das Setzen von Cookies informiert werden und Cookies
nur im Einzelfall erlauben, die Annahme von Cookies für bestimmte Fälle oder generell ausschließen sowie
das automatische Löschen der Cookies beim Schließen des Browser aktivieren. Bei der Deaktivierung von
Cookies kann die Funktionalität dieser Website eingeschränkt sein.
### Server-Log-Files
Der Provider der Seiten erhebt und speichert automatisch Informationen in so genannten Server-Log Files,
die Ihr Browser automatisch an mich übermittelt. Dies sind:
* Browsertyp/ Browserversion
* verwendetes Betriebssystem
* Referrer URL
* Hostname des zugreifenden Rechners
* Uhrzeit der Serveranfrage
Diese Daten sind nicht bestimmten Personen zuordenbar. Eine Zusammenführung dieser Daten mit anderen
Datenquellen wird nicht vorgenommen. Ich behalte mir vor, diese Daten nachträglich zu prüfen, wenn mir
konkrete Anhaltspunkte für eine rechtswidrige Nutzung bekannt werden.

23
index.html Normal file
View File

@ -0,0 +1,23 @@
---
title: Home
---
<h2>Welcome</h2>
<img src="/images/nekonet.svg" style="height: 250px; width: auto;" />
<p>Welcome to my blog!</p>
<p>This blog is about everything and anything I want to share with the world.
<br>
It is mostly technical stuff about coding and software configuration, but also about photography, music, tea and everything else I find noteworthy or important enough to tell. <br>
Here are my latest Posts:
</p>
<!--<h2>Posts</h2>-->
$partial("templates/post-list.html")$
<p>...and there are even more in the <a href="/archive.html">archive</a>.</p>
<!--<p>Tagcloud: $tags$</p>-->

39
newpost.lua Executable file
View File

@ -0,0 +1,39 @@
#! /usr/bin/env lua
date = io.popen("date --rfc-3339=date"):read()
title = "null"
author = nil
function input()
print("Enter post title:")
title = io.read()
print("Enter author name:")
author = io.read()
end
function confirmation()
print("Is the following correct?")
print("title:",title)
print("author:",author)
print("y/n")
end
function main()
repeat
input()
confirmation()
until io.read() == "y"
local postname = "./posts/" .. date .. "-" .. title:gsub(" ", "-") .. ".md"
local metatab ="---\ntitle: " .. title .. "\nauthor: " .. author .. "\ntags: \ndescription: \n---"
if os.execute("touch " .. postname) then
os.execute("echo '" .. metatab .. "' >> ".. postname)
os.execute("vim " .. postname)
else
print("some error occured. exiting")
os.exit(1)
end
end
main()

View File

@ -0,0 +1,17 @@
---
title: Post for testing purposes
author: nek0
description: test
tags: english, meta
---
##Hello World!
This is a post in which I try to use the markdown language for writing my own posts.
Markdown is very useful for this purpose since it does not clutter the sourcefile with tags, which need to be opened and closed and thus making it hard to read. Most of the topology
of the outcoming texts like headlines, paragraphs or even more like links to different sites can be managed in a more easier and convenient way.
If you have become interested in learning how to use markdown you can look at [Wikipedia's page on markdown](http://en.wikipedia.org/wiki/Markdown "Markdown at Wikipedia").
Have fun!

View File

@ -0,0 +1,12 @@
---
title: Language problems
author: nek0
tags: english, meta
description: Problem with language choice in the blog
---
Because I am capable of fluently communicating in three languages, I now have a Problem with the decision, in which one of them i will write this blog. For now I am using english because it's the most widely used language in the world that I can communicate in.
In the future I might write posts that only matter in one country or one city. Maybe i will even comment on the politics in the country i live in, but that's not an english speaking country.
Maybe I will write the posts in any language I see fit at the Moment and tag it with its language. That should do it.

View File

@ -0,0 +1,15 @@
---
title: Just a radom thought
author: nek0
tags: english, projects, hardware
description: one of my crazier projects
---
There is a project of mine now progressing pretty good at the moment.
I am trying to convert an old typewriter into a full-fledged computer using a cubieboard or something similar.
Now I am looking for a way to get printer output from the typewriter using its own types. I was thinking of magnetic force pushing down the levers inside the machine and so simulating typepresses.
Maybe I am just crazy and nobody shoud listen to me closely, but I think, that should be bossible, if I could get my hands on the right magnetic coils and some neodymium magnets.
[![](/images/2013-09-02-typewriter_preview.jpg)](/images/2013-09-02-typewriter.jpg "The Typewriter")
This is the Typewriter I will be working with: An old Continental typewriter from Germany, built in the early 20eth Century. It might seem a bit abusive using such an old machine for it, but if I wouldn't use it, it would just rust in some place never to be touched again. I have the intention to bring it to new life.

View File

@ -0,0 +1,11 @@
---
title: Constant change
author: nek0
tags: english, meta
description: newest changes of the site
---
As promised in the about-page, i have made some improvements to this blog. I am now officially using html5.
I have introduced <code>nav</code>, <code>article</code>, <code>header</code> and <code>footer</code> tags where necessary.
Additionally, for those with mobile devices, all screens with a width of 600px and lesser get a more declutterized version of the site with no navigation sidebar but as a line above the article.
I hope you enjoy it.

View File

@ -0,0 +1,12 @@
---
title: Wahlkampf
author: nek0
tags: deutsch, misc
description: Meine Meinung zum Wahlkampf
---
##Es ist Wahl!##
In den deutschen Landen ist Wahl, der wahlkampf ist auf Hochtouren.
Doch wem können wir vertrauen? Alle, die sie ihre Namen auf den Plakaten haben stehen aus schlechter Erfahrung im Verdacht ihre Versprechen doch nciht zu erfüllen.
Aus diesem Grund gebe ich meine Stimme an Cthulhu, den Herrn von R'lyeh. Warum sich mir dem kleineren Übel zu frieden geben?

View File

@ -0,0 +1,13 @@
---
title: Moodswing
author: nek0
tags: english, misc
description: happy face!
---
Today I have a very strange and very rare Moodswing. I'm in a good mood, which is great.
I know I am sick and will be for some time in the future, but today I see a better future. It's not an easy time for me, not knowing exactly, why I am sick or even what exactly it is I suffer from.
My doctors do their best to treat me and my friends are a great support. I wish to thank them all for keeping up with me.
This moment is very precious to me and I hope that once in a while everybody has a similar feeling.

View File

@ -0,0 +1,9 @@
---
title: Construction underway
author: A.M
tags: english, misc
description: some news to share
---
The Hackerspace I am affiliated with, the [c3d2](http://c3d2.de), is currently moving. It is very fascinating seeing this project evolve and helping with it.
We hope that this move will bring us forward and that we will grow from it.

View File

@ -0,0 +1,8 @@
---
title: Code Experiment
author: nek0
tags: english, programming, projects
description: a small program i made
---
Today I made some effort to learn a bit more in Haskell and finished a working implementation of the unix utility ddate. It is nothing much, but it means a alot to me that I start to understand how to think in the paradigm of the language. If you are curious about my code, have a look at [my github account](https://github.com/nek0/n-ddate).

View File

@ -0,0 +1,10 @@
---
title: Merry Christmas
author: nek0
tags: english, misc
description: and a happy neyear!
---
#Happy Holidays
I wish you all out there happy holidays, merry christmas and a happy new year. Spend the time with people dear to you.

View File

@ -0,0 +1,11 @@
---
title: New changes
author: nek0
tags: english, meta
description: more changes
---
Hi there.
Firstly, I am deeply sorry for not updating for a while, but I have been sick.
Meanwhile I figured out (thanks to ripping code from other good Hakyll blogs) how to implement post tags.
So in conclusion you can browse all posts by tags. a tag cloud should follow shortly.

View File

@ -0,0 +1,9 @@
---
title: Newest changes
author: nek0
tags: english, meta
description: even more changes
---
Now after tinkering with this site again I managed to tag all posts appropriatelty. unfortunately i was not able to create a tag cloud, because i don't know how. It is somehow possible with Hakyll.
Additionally I made a sticky footer for this page. How it actually works is in another post.

View File

@ -0,0 +1,51 @@
---
title: Sticky footer
author: nek0
tags: english, programming, meta
description: code snippet
---
Here is a simple recipe for the sticky footer that is used on this site. As this site runs on HTML5 it might not work on all browsers (Sorry, Microsoft).
first you need to define in your css or add to your existing rules:
```css
html {
height: 100%;
}
body {
height: 100%;
}
```
additionally you need a wrapper class for your content. You need to adjust the negative margin value to your footer height. The value given here is only an example. Actually this will require some tinkering.
```css
.wrapper {
min-height: 100%;
height: auto !important;
height: 100%;
margin: 0 -65px;
}
```
now you need to wrap your site content in a div with the wrapper class.
If something is messed up, it is most likely because of paddings or margins. Take special care, that `body` and `html` have none of them.
The according html file might look something like this:
```html
<html>
<head> some info </head>
<body>
<div class="wrapper">
<header> your header here <header>
<article> content here </article>
</div>
<footer> your awesome sticky footer</footer>
</body>
</html>
```
I hope this is helpful for your website, if you were looking for a solution.

View File

@ -0,0 +1,8 @@
---
title: Tagcloud!
author: nek0
tags: english, meta, programming
description: New tagcloud added
---
I dived in to Hakyll configuration unexpectedly deep and found a solution for my tagcloud problem. From now on you have the tagcloud in the navigation bar.

View File

@ -0,0 +1,8 @@
---
title: Impressum eingefügt
author: nek0
tags: deutsch, meta
description: und jetzt neu mit impressum
---
Aufgrund der Rechtslage in unserem deutschen Land habe ich nun ein Impressum zu meiner Seite hinzugefügt, bevor ich noch größerem Publikum entgegentrete. Es ist nervig und unschön, aber was soll's. Ich komme letztendlich nicht drum herum so etwas anzulegen, also besser früher als später.

View File

@ -0,0 +1,9 @@
---
title: Now new: Syntax highlighting!
author: nek0
tags: meta, programming, english, meta
description: Syntax highlighting in code bubbles is the new feature.
---
Hey folks!
I have been tinkering again with this site and i found out that my markdown compiler pandoc supports syntax highlighting, so from now on all code bubbles will have proper syntax highlighting. Additionally I played with the navbar and the code bubbles themselves, so they show the proper language.

View File

@ -0,0 +1,12 @@
---
title: Cryptoparty
author: nek0
tags: english, crypto
description: encrypt everything
---
I am just attending a cryptoparty, where we sign each other's pgp-keys.
It is my first time doing so, but I think it is very important to know your possibilities, especially in the light of recent events and revelations. This is also one of the reasons I run my own mailserver. Other reasons are just to see if I can.
On this occasion I stumbled upon the debian package "signing-party" and the tool in it called `sig2dot`, which creates a nice graph out of your key signatures. Although dot has its flaws, I think this is a wonderful way to visualize your chains of trust.

View File

@ -0,0 +1,12 @@
---
title: Mailserver
author: nek0
tags: english, programming
description: My own mailserver
---
Some time ago a few friends and I rented a root server, each of us maintaining one or more services on it. Since i gathered some experience in the field my part is to maintain the mailserver. This way we have a decentralized mail service at our hand, that is not so easily spied upon.
For running the mailservice I chose the combination of Postfix and Dovecot with SASL managed by Dovecot. To configure everything i really recommend the [Dovecot wiki](http://wiki2.dovecot.org/StartSeite) as well as the [Postfix documentation](http://www.postfix.org/documentation.html). When installing from Debian repositories you get a simple working configuration out if the box.
If you want to learn to do this by yourself, just install these services and tinker with them. Thats the best approach I can recommend, though maybe not the simplest.

View File

@ -0,0 +1,14 @@
---
title: Certificate problems
author: nek0
tags: meta, projects
description: oncoming problems with ssl certification
---
Hi folks.
As I just recently learned the debian maintainers want to discntinue the distribution of the [CACert](http://cacert.org) root certificate with their package `ca-certificates`. More details [here](https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=718434).
This is particularly bad for me, as my certificates are all from CACert, for example even the certificate for the https connection. So when you come from a Debian-based system and see a certificate issue while you connect to my site, please trust this certificate, it will be the same as it ever was.
I really hope that CACert passes its oncoming audit so that the Debian maintainers will trust the root certificate of CACert again

View File

@ -0,0 +1,14 @@
---
title: Alternate Dropbox service
author: nek0
tags: english, projects
description: My personal recommendation for a dropbox alternative
---
Are you looking for a Dropbox alternative? An open spurce alternative hosted on your own server? I may have found an answer.
The Answer is [seafile](http://seafile.com), a pretty powerful piece of software written in C and Python. I started my own seafile service on this server and am pretty happy with it. There's only one drawback I have found out: the upload rates are pretty low, which could be caused by crappy ISPs or the encryption of seafile itself. But even Dropbox doesn't have the best upload rates, so what.
Additionally there are clients for most platforms and even the source code is available, so you can build it yourself, if it's not available for your platform.
The installation itself is pretty straightforward if you follow the wiki, even if you want some specialties like nginx as your webserver.

View File

@ -0,0 +1,10 @@
---
title: New domain
author: nek0
tags: english, meta
description: Website now hosted under new domain
---
I now have a new (and real) domain. Now you can find my blog at [nek0.eu](https://nek0.eu).
Now I am deciding wether to put comments on my website and what service to use. Under all circumstances it will be a selfhosted service.

View File

@ -0,0 +1,12 @@
---
title: Comment service
author: nek0
tags: programming, projects
description: I am writing my own commenting service
---
As I stated earlier, I want to add a commenting service to my blog. I could use already existing Software, like [Disqus](http://disqus.com/) or as self hosted service the [Isso](http://posativ.org/isso/) commenting service. But lastly I decided to write my own commenting service.
I chose to do so, because my blog is generated by [Hakyll](http://jaspervdj.be/hakyll/), a static site generator written in [Haskell](http://www.haskell.org/haskellwiki/Haskell), I wanted my site to stay in the realm of this programming language.
Since there is no such commenting service implemented in Haskell yet, I have to write my own. I chose the [Yesod](http://www.yesodweb.com/) web framework as foundation for my project. It already has basic functionality, but because I have not implemented spam protection and moderation yet, I do not recommend using it outside of testing purposes. You can check it out at my git repository at Github [here](https://github.com/nek0/yacs).

View File

@ -0,0 +1,18 @@
---
title: Crypto broken?
author: nek0
tags: crypto, english
description: Problems facing the possible end of truecrypt.
---
Ever since the strange breakup of the [truecrypt project](http://truecrypt.sourceforge.net/) I am unsure wether I can still trust the software. This is bad for me, because I rely on it in several cases.
Because of the non-standard license of truecrypt there has not formed a forked project yet which I could rely on. I am looking for alternatives, but have not found anything suiting my needs.
For example there is [GnuPG](https://www.gnupg.org/), which can encrypt single files and also folders, but you have to do it manually every time you change something. Furthermore you can not mount it like you could do with a truecrypt container.
Then there is [LUKS](https://code.google.com/p/cryptsetup/), which can encrypt whole filesystems, but not singular containers.
For now i will remain using truecrypt and trust the [outcome](https://opencryptoaudit.org/reports/) of the first stage of the source code audit of truecrypt.
I know I don't present any solutions here, but I will be looking into that matter in the future and hopefully I come out with something better than keep using truecrypt.

View File

@ -0,0 +1,18 @@
---
title: Comment system slowly emerging
author: nek0
tags: english, programming, projects
description: The promised commenting system is slowly coming to life.
---
Hey folks, long time no see.
I have been busy in the past month studying. Exam season is coming rapidly nearer.
Aside from learning and the general procrastination I have worked on my own implementation of a commenting service, which is now ready to be doployed for testing. It is called "yacs" for now, which stands for "yet another commenting service". It is written in Haskell as a Yesod web-app. Check it out on [Github][yacs github].
I decided to use this approach, because I wanted to know the language Haskell better. It was really challenging wrapping the logic of a commenting service aroud the possibilities I had with Haskell, since I am still very new to this language.
Right now I am still stuck in some kind of dependency hell and my project does not build on the server. As soon as I resolve this problem, the newly added iframes, which you may have noticed on the bottom of every blogpost, will come to life. After that i will write a Documentation for the whole project.
[yacs github]: https://github.com/nek0/yacs/

View File

@ -0,0 +1,14 @@
---
title: Finally
author: nek0
tags: english, programming, projects
description: Commenting System is ready for testing
---
Finally I made it. The commenting system I have been working on for the past few months is deployed for testing.
Also the blog was moved to another server, as I give up my own little sandbox of virtual server, which has become increasingly unreliable. Hence the outage from last month, for which I am very sorry. Soon I will also have set up my domain here.
As you can see, the iframes have come to life with the promised commenting system. feel free to comment anything you want under any blog post. Knock yourselves out. Unfortunately, I can't guarantee, that your comments will stay, as this is just a test deployment and I will still work heavily on the code.
When you encounter any problems, errors, bugs or have feature requests, drop an issue at the [GitHub project page](https://github.com/nek0/yacs).

View File

@ -0,0 +1,30 @@
---
title: Visit at home
author: nek0
tags: english, misc
description: After a long time i have visited my birthplace
---
<!--[![](/images/2014-10-01-01_preview.jpg)](/images/2014-10-01-01.jpg "View of the castle")-->
After a long time I decided to visit my old birthplace, the city of Prague. I have spent there a week with my grandmother, visiting concerts and the theatre. It has been the best time I have had in a while.
[![](/images/2014-10-01-02_preview.jpg)](/images/2014-10-01-02.jpg "Karel IV")
I also took the opportunity to take out my trusty old camera on the journey to take some photos. The ones I consider the best are here in this post.
Prague is a beautyful city with lots of history and legends and you need more than one visit to see everything of it. There is always something to discover and to learn.
[![](/images/2014-10-01-03_preview.jpg)](/images/2014-10-01-03.jpg "Prague castle with Carl's bridge")
For instance: the castle of Prague is centuries old with lots of legends. Numberless historical figures have visited this place, not only the city itself, but also the castle. The cathedral is a wonderful piece of architecture and artisanship.
[![](/images/2014-10-01-04_preview.jpg)](/images/2014-10-01-04.jpg "Carl's bridge entrance")
Another masterpiece is Carl's bridge, the oldest bridge of the city. according to a legend the sword of the legendary national hero Brunclík is buried in the foundation of the Bridge. On the bridge there are also statues depicting various historical and mythical events of czech history.
[![](/images/2014-10-01-05_preview.jpg)](/images/2014-10-01-05.jpg "Old townhall")
This is the old townhall of Prague with its famous astronomical clock. every 15 minutes the small blue doors on the top open and you can see a small procession of saints, while the clock rings the time. This is one of the greatest tourist magnets in the whole city. Regardless of weather or temperature, there is always a giant crowd in front of this building.
[![](/images/2014-10-01-06_preview.jpg)](/images/2014-10-01-06.jpg "brmlab")
While I was in the city, I also took the opportunity to visit the local hackerspace [brmlab][brmlab].
[![](/images/2014-10-01-07_preview.jpg)](/images/2014-10-01-07.jpg "brmlab")
It is way bigger than I first imagined. These photos were taken only in their main room, but they have seperate labs for chemistry, biology and high voltage alectricity in the basement, which they gladly showed me. It is a great place to be, so if you are in Prague, be sure to pay them a visit.
[brmlab]: https://brmlab.cz/

View File

@ -0,0 +1,10 @@
---
title: Feed chaos
author: nek0
tags: english, programming, meta
description: fixed an error with the RSS- and Atom-Feeds
---
First I have to apologise, that I haven't found the error earlier, it was literally a single line of code.
For all those relying on my feeds, you may have encountered problems with links going still to the old server. After I moved my server to a new location I forgot to change the feed settings accordingly. Now I fixed it.

View File

@ -0,0 +1,75 @@
---
title: Daemonize a Yesod application
author: nek0
tags: english, meta, programming
description: Found a way to daemonize my commenting service
---
**If you want to create a systemd service file, look [here][systemd]**
As you might know I have written my own commenting service, which up until recently I had to start manually in a [screen](https://www.gnu.org/software/screen/) session. Then I decided to write my own init-script.
I have to admit, that I am no experienced sysadmin or something like that, but just a random guy with a strange love (or addiction) to computers. So this is my first time doing this.
For managing the starting and stopping of the service I chose to use the start-stop-daemon shipped with the system on my server. Additionally I used the skeleton file for init-scripts, which you can find in `/etc/init.d/skeleton`.
After consulting the manpage of start-stop-daemon I came up with the following command for starting the commenting service:
```bash
start-stop-daemon --start -b -u nek0 --chuid nek0 --name yacs --exec ./yacs -d /home/nek0/www/yacs-run/ \
-- config/settings.yml > /var/log/yacs.log
```
What this actually means: The first option ist pretty self explanatory. `-b` starts the service in the background. `-u` and `--chuid` ensure, that the service runs as a user, not as root. I chose my own user here, but you can also use `nobody` if you like. The name of the service is specified by `--name`. `-d` specifies the working directory of the service you want to start and finally `--exec` is the path to the executable, in this case relative to the working directory. Everything after the final double-dashes are arguments passed to the executable itself.
for stopping the whole thing I use the following command:
```bash
start-stop-daemon --stop -u nek0 --name yacs
```
This is even simpler than the above and is really self explanatory after all the information you got above.
the whole init-script looks like this:
```bash
#! /bin/sh
### BEGIN INIT INFO
# Provides: yacs
# Required-Start: $nginx
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop:
# Short-Description: Start YACS commenting service
# Description: start YACS commenting service
### END INIT INFO
case "$1" in
start)
logger starting YACS
start-stop-daemon --start -b -u nek0 --chuid nek0 --name yacs --exec ./yacs -d /home/nek0/www/yacs-run/ \
-- config/settings.yml > /var/log/yacs.log
;;
stop)
logger stopping YACS
start-stop-daemon --stop -u nek0 --name yacs
;;
restart)
logger restarting YACS
start-stop-daemon --stop -u nek0 --name yacs
start-stop-daemon --start -b -u nek0 --chuid nek0 --name yacs --exec ./yacs -d /home/nek0/www/yacs-run/ \
-- conifg/settings.yml > /var/log/yacs.log
;;
status)
# No-op
;;
*)
echo "Usage: yacs {start|stop|restart}" >&2
exit 3
;;
esac
```
I hope this is helpful for others. If something is unclear, you can always leave a comment now ^^
[systemd]:https://nek0.eu/posts/2015-08-28-Damonize-a-Yesod-application-systemd-style.html

View File

@ -0,0 +1,40 @@
---
title: Desktop forwarding via X using Xephyr
author: nek0
tags: english, administration
description: This is a Tutorial hos to forward a whole Desktop system via X using Xephyr.
---
Hello again folks. Tonight I was in an adventurous mood and wanted to see, if I can forward a desktop session from my home computer to my laptop. I had distinct interest in OpenGL applications, since my laptop is only minimally capable of it.
Before I dive into the more technical depths I would like to conclude my findings here: Generally it is possible to forward a desktop session including a window manager, but not GL applications (yet). In general this method is a possible replacement for classical [VNC](http://de.wikipedia.org/wiki/Virtual_Network_Computing) setups.
Before you can start, there are some prerequisites that must be met:
First you need the software [Xephyr](http://www.freedesktop.org/wiki/Software/Xephyr/) on your client system (which is the System, where you want to receive your session and work on it). To install it grab the package `xserver-xephyr` with the package manager of your choice. I am assuming a [Debian](https://www.debian.org/) system here, so it might be possible, that the configuration files are located elsewhere on other GNU/Linux flavours.
Secondly there are some configurations to be made on the host system (the system you want to access remotely). You need to enable X forwarding in your SSH server in `/etc/ssh/sshd_config` by stating:
```bash
X11Forwarding yes
```
After that you are ready to give it a first shot. Fire up a terminal of your choice on your client and start up Xephyr like this:
```bash
Xephyr :1 -screen 800x600 -resizeable &
```
Mark the capital X at the beginning. This command means: start Xephyr as display `:1`, `-screen` sets the resolution and thus the size of the emerging window. Finally `-resizeable` makes the window resizeable in contrast to its normal behaviour. The last `&` puts the process in the background.
After completing this you should see a new window, which is completely black. This means everything is, as it is meant to be. You have just created a new blank display within your existing X session.
Now it's time to make the connection to your host system. This is done by:
```bash
DISPLAY=:1 ssh -Y <user>@<host>
```
Translation: set the display environment variable to `:1` and start a ssh connection with the host. The `-Y` opens a trusted X forwarding connection. Due to the setting of the display variable the X forwarding connects to your Xephyr session, which is what we want.
Now you can start up any window manager in the ssh console, preferably something lighweight like [awesome](http://awesome.naquadah.org/).

View File

@ -0,0 +1,14 @@
---
title: New DIY Watch project
author: nek0
tags: english, projects, hardware
description: Another crazy project by me
---
After long hours of browsing in the depths of the internet I stumbeled upon the ["Chronode VFD"](http://www.johngineer.com/blog/?p=1595) watch.
The first time I saw it I was completely baffled. I immediately wanted one of my own, but with some alterations. Problem is: I have absolutely no experience in hardware hacking. Luckily as a frequent visitor of my local hackerspace I know some people who have experience.
First I want to build a simplified version without that gorgeous vacuum fluorescence tube using LED-Modules as display and thus give it a longer battery life.
For now I am creating a bill of materials and looking for parts. you can check the progress at the [github project](https://github.com/nek0/pentawatch) I created and occasionally I will post the progress here.

View File

@ -0,0 +1,16 @@
---
title: Frohes Fest?
author: nek0
tags: deutsch
description:
---
##oder: was im Moment ziemlich schief läuft.
Zuallererst: Frohe Weihnachten. Es gibt ja Menschen die auf so etwas Wert legen. Ich komme um Weihnachten herum nie wirklich in Feierstimmung, aber das heißt nicht, dass ich die Laune jedem verderben möchte.
Warum ich heute eigentlich schreibe ist, dass in den letzten Wochen eine nette Vereinigung brauner und bräunlich gesinnter Menschen in meiner Umgebung ihr Unwesen treibt. Die Rede ist konkret von der Vereinigung "PEGIDA", aufgeschlüsselt heißt das "Patriotische Europäer gegen die Islamisierung des Abendlandes", wobei ich stark bezweifle, dass die dort Teilnehmenden das Akronym überhaupt aufschlüsseln können. Das würde auch erklären, warum sich dort auch Menschen wiederfinden, die gegen die GEZ demonstrieren. Oder gegen die grenzenlose Bankenrettung. Da fragt min sich schon, ob diese Menschen wissen, wo sie sich gerade befinden.
Das die Menschen unzufrieden sind, ist verständlich. Ich bin es auch. Aber die PEGIDA ist keine Plattform für den Normalbürger, um seine Wut über die Politik zum Ausdruck zu bringen. Das zum einen. Zum anderen braucht das Abendland gegen eine Islamisierung nicht verteidigt werden. und schon gar nicht in Sachsen, wo es eh nur 2% Ausländische Menschen gibt.
Eigentlich wollte ich meinen Blog unpolitisch belassen, aber bei derartig grobem Unfug der da gerade passiert bin ich der Meinung, auch etwas sagen zu müssen. Am Ende würde ich aber durch mein Stillschweigen derartige Aktionen billigen.

View File

@ -0,0 +1,22 @@
---
title: Eidolon
author: nek0
tags: english, projects, programming
description: introducing my very own gallery service
---
Those who follow my actions on [GitHub](https://github.com/nek0) may know it already, but for those who don't it's new, that I was working on a gallery system called [Eidolon](https://github.com/nek0/eidolon) for some time. It is a project which I started in the late phase of my commentary system [Yacs](https://github.com/nek0/yacs) due to my growing discomfort with [Mediagoblin](http://mediagoblin.org/), which is currently in use at our hackerspace.
The name derives from the same greek word which means something like mirage or illusion. I can't really say, why I named it like that, but I'm quite happy with the name.
The gallery system is almost complete and I will start stress testing it in the next year. The images in the gallery are organized in albums, which themselves belong to certain users. Additional features include at the moment:
* Commenting pictures
* Tagging pictures
* sharing albums with other users
* Atom and RSS feeds of the whole gallery, users, albums and picture comments.
* HMAC-SHA user authentication
The whole system is set up as a [Yesod](http://www.yesodweb.com/) webapp and is written mostly in Haskell.
I have been working with Yesod for quite some time now, mostly for learning Haskell, but I found it also entertaining to make some web-development. I would really recommend using this framework. The static typing of Haskell might be a bit of a pain in the butt at first, but it also grants your applications level of security, which I haven't observed anywhere else.

View File

@ -0,0 +1,14 @@
---
title: Pending data loss
author: nek0
tags: english, meta
description: Due to a software upgrade the commenting system will lose all comments
---
I have an unfortunate announcement to make. Due to a software upgrade the commenting system will lose all comments. This has to do something with the upgrade of the package dependency on `persistent` to a version greater than 2.0.
I will wait until my issues with other dependencies are closed for pushing some dependency boundaries, so it will build on the server without dependency hell.
***EDIT from 30.12.2014:***
After looking deeper into that matter, I have fund out, that I will be able to migrate the data. So no dataloss will happen. Sorry for the hassle.

View File

@ -0,0 +1,12 @@
---
title: Gallery is now online!
author: nek0
tags: english, projects, programming
description: Eidolon is now active
---
As I promised by the end of last year, I am happy tp announce, that the gallery system "Eidolon" is now up for testing.
You can reach it over [eidolon.nek0.eu](http://eidolon.nek0.eu) or [nek0.zeigt.photos](http://nek0.zeigt.photos). Feel free to sign up and test it out. It may look a bit barren at first, but I haven't worked much on the appearance yet.
Should you encounter any errors or miss some features, I would be glad receiving an issue at the [github project page](https://github.com/nek0/eidolon)

View File

@ -0,0 +1,20 @@
---
title: Sicherheitsprobleme in Sachsen
author: nek0
tags: deutsch, crypto, misc
description:
---
Ich betreibe ja schon seit einiger Zeit mit Freunden einen Server, auf welchem ich mich vornehmlich für die Email-Infrastruktur verantwortlich fühle.
Neulich wurde ich auf ein Problem aufmerksam gemacht, dass der Emailverkehr mit den Hochschulen zum Erliegen gekommen ist. Zuerst vermutete ich einen Fehler in unserer Konfiguration, doch die Wahrheit war schlimmer. Die Hochschulen und Universitäten können kein TLS.
Warum dieser Fehler erst jetzt aufgekommen ist, ist schnell erklärt. Aus Kompatibilitätsgründen hatten wir Unterstützung für SSLv3 aktiv gehabt. Kurz nach dem bekannt werden der [Poodle Attacke][Poodle], welche auch die letzten Stückchen Sicherheit im SSL-Protokol aushebelt, habe ich bei unserem Server die Unterstützung für das Protokoll abgeschaltet, in dem Vertrauen, dass andere Betreiber von Mailservern zeitgemäße Sicherheitsstandards bei sich durchsetzen.
Leider werde ich im Moment von den Einrichtungen, welche eigentlich für Innovation und technologische Vorreiter stehen enttäuscht. Nicht nur dass diese immer noch das veraltete SSL-Protokoll unterstützen. Sie unterstützen gar kein TLS im Mailverkehr. Überhaupt nicht. Auch die hochgelobte Exzellenz-Universität in Dresden nicht.
Es kann doch nicht sein, dass die Rechenzentren an Hochschulen keine zeitgemäße Sicherheit anbieten. Nicht nur das, sie arbeiten technisch wörtlich auf dem Stand des letzten Jahrtausends, denn immerhin stammt TLS aus dem Jahre 1999. Es ist also zwischendurch genug Zeit gewesen die Konfigurationen anzupassen.
&lt;/rant&gt;
[Poodle]: http://de.wikipedia.org/wiki/Poodle

View File

@ -0,0 +1,18 @@
---
title: Long time no see
author: nek0
tags: english, meta
description: It's been a while
---
Hi folks, it has been a while since my last entry here. For that I want to apologize.
The last two months have been tough, but I was able to manage it. First of all I moved to a new flat and my job as student assistant demands more performance from me. I don't see that negatively since I have the feeling of being trusted by my boss and colleagues.
Because of all the other action, my leisure time coding went down, but I still make progress. I have added the feature of pagination on the front page to my gallery system [Eidolon][Eidolon] and worked with the medium site so now all mozilla-based browsers now correctly switch the background image. This was up until now only possible with webkit browsers.
Just recently while browsing through my older posts I realized that this blog exists now for far more than a year. I recall myself wondering at the beginning, whether I would be able to update this blog regularly and I'm glad I could. So thanks to you all out there bearing with me.
(Well I at least hope, that there are some people out there reading this. I have no clue because I don't have any form of user tracking.)
[Eidolon]: https://github.com/nek0/eidolon

View File

@ -0,0 +1,16 @@
---
title: Bitcoin stuff
author: nek0
tags: bitcoin, meta
description: some thoughts about bitcoin.
---
After poking around in my files on my computer I found something interesting. Something I thought I had lost it. my trusty old [Bitcoin][wikibit] wallet.
I am far from being an early adopter, but there was a time in 2012 where I was mining a little bit on my graphics card. It was not very effective, but it still has its worth (especially nowadays, where almost everybody is speculating with them).
I personally dislike the idea of speculating mith my bitcoins like in a stock exchange. The case of Mt. Gox has shown how badly things can end. That's why I'm keeping my Bitcoins only on my own devices.
With the reappearence of my wallet and my newly emerged interest in the Bitcoin matter I decided to implement an address for Bitcoin donations. I don't think it will come to great use, but feel free to surprise me.
[wikibit]: http://en.wikipedia.org/wiki/Bitcoin

18
posts/2015-03-31-DN42.md Normal file
View File

@ -0,0 +1,18 @@
---
title: DN42
author: nek0
tags: english, meta
description: Now serving my site in DN42
---
Good news everyone! ^^
The server I maintain with a few friends is Member of the [DN42][DN42] network and we decided to make some of our services also available there.
This means, when you come from within DN42 you can resolve the address [nek0.dn42][here] and will be led here to my blog. I also pushed my gallery into DN42, so it is now available on [eidolon.nek0.dn42][eidolon].
There is not much to say on other news. I'm still working, so my free time is a bit limited.
[DN42]: https://dn42.net/Home
[here]: http://nek0.dn42
[eidolon]: http://eidolon.nek0.dn42

View File

@ -0,0 +1,12 @@
---
title: Back again
author: nek0
tags: english, meta
description: Back online after some Domain related problems.
---
Hi folks. You might have wondered where my blog has gone in the past few days.
The truth is: It hasn't gone anywhere. It was still there, but the domain name was no longer resolved due to the fact, that i forgot to renew it in time. I'll do my best not to let that happen again.
On the personal side I haven't been at all well. I don't want to go into more detail, but mental illness is no fun at all.

View File

@ -0,0 +1,55 @@
---
title: New sticky footer
author: nek0
tags: english, programming, meta
description: new method for sticky footer
---
Hello again.
A friend of mine, who is active in web-development, pointed out, that my method for creating a sticky foooter is a bit obsolete and showed me the proper CSS3 way to do it, which I would like to share.
First you need to prepare your site for the footer, which in the simplest terms may look like this:
```html
<html>
<head> some info </head>
<body class="site">
<div class="wrapper">
<header> Your header here </header>
<article> Content here </article>
</div>
<footer> Your awesome sticky footer </footer>
<body>
</html>
```
You simply wrap your entire content apart from your footer inside a `div`.
Next we're going to look on your css rules.
The `site` class needs a little setup:
```css
.site {
display: flex;
min-height: 100vh;
flex-direction: column;
}
```
This rules put your whole site in a so called flexbox, which in our case expands vertically by setting the `flex-direction`. By doing so, wee need to specify the height of the flexbox, in our case `100vh`, which is the complete height of the viewport.
Next is the setup of the wrapper:
```css
.wrapper {
flex: 1;
}
```
This is it!
Now your wrapper should be docked always on the bottom of your page or at the bottom of your content, when your content gets longer than your viewport.
The great advantage of this method over my old setup is, that you don't need to know the height of your footer, it will fit in automagically.

View File

@ -0,0 +1,17 @@
---
title: Version bump
author: nek0
tags: english, meta
description: Transition to new version of Hakyll and a resulting new feature.
---
After roaming around on the internet checking out some of my favourite software projects I realised, that my blog is running on an outdated version of Hakyll, so I bumped it to the newest available version.
This upgrade made it possible to implement Hakyll's relatively new pagination feature into my blog. After tinkering around on it for about a day I finally succeeded.
This means in conclusion, that you can skip from one blogpost to its two chronological neighbours with just one click. Pretty neat.
The next thing I would like to do ist transitioning my markup language for authoring my posts from Markdown to [AsciiDoc][wiki1]. It has some interesting features, which I would like to use. Unfortunately the [Pandoc][wiki2] project does not support reading Asciidoc yet, so I will have to wait.
[wiki1]: http://en.wikipedia.org/wiki/AsciiDoc
[wiki2]: http://en.wikipedia.org/wiki/Pandoc

View File

@ -0,0 +1,10 @@
---
title: We have SSL again
author: nek0
tags: english, meta
description: Site now under SSL again
---
I bid you all a well-encrypted welcome.
After a configuration marathon I managed to create a working configuration for my new web server. This means that all my websites are now served via SSL. Additionally the community I share the server with has an easy way to configure their certificates now, too.

View File

@ -0,0 +1,24 @@
---
title: Über das Schreiben
author: nek0
tags: deutsch, writing
description:
---
OK. Hier mal etwas anderes. Etwas, was es hier bisher noch nicht gab.
Einige, die mich persönlich kennen, wissen, dass ich an einem Buch schreibe. Das mache ich schon seit etwa drei Jahren und bin immer noch nicht sehr weit. Jedenfalls, wenn man das fertige geschriebene betrachtet. Von der Entwicklung her mit Geschichte und Personen ist es fertig und dass das so ist hat bisher die meiste Zeit beansprucht.
Ich werde in Zukunft ein wenig über den Fortschritt meines wohl größten und am längsten dauernden Projektes berichten und auch meine Erfahrungen die ich auf dem Weg sammle teilen.
Was die Erfahrungen angeht, so kann ich natürlich nicht garantieren, dass sie für jeden genauso gut funktionieren, wie für mich. Jeder ist individuell anders und was dem Einen hilft behindert den anderen eher beim Schreiben. Dem geneigten Leser ist überlassen selber zu experimentieren.
Eine sehr wichtige Lektion, die ich gleich zu Anfang meiner Bestrebungen lernte, ist, dass man nicht anfangen sollte zu schreiben, bevor man nicht genau weiß, wie und wohin sich die geschichte entwickeln wird. Zm anderen sollte man auch genau wissen, wie die Welt, in der man seine geschichte platziert, funktioniert. Beides habe ich zu Anfang nicht gewusst und habe mich sehr schnell in Widersprüche verstrickt. Ich hatte zwar eine Grobe Ahnung, aber das hat bei Weitem nicht ausgereicht.
Damit begann meine lange Planungsphase, in der ich mir Gedanken um die Geschichte, die Welt und die Personen in der Geschichte lange und gründlich Gedanken gemacht habe. Man muss nicht alles Haarklein durchplanen, damit erschlägt man nur seine Phantasie, aber es sollte alles wichtige erkennbar sein. Den Rest kann man spontan beim Schreiben entscheiden, sollte das dann aber natürlich nachträglich in seiner Planungsübersicht notieren, damit man es nicht vergisst.
Vergessen ist ein großes Problem beim Schreiben, weswegen man alles, was man sich an Gedanken gemacht hat in irgendeiner Form niederschreiben sollte. Nicht zwingend in Form von Fließtext. Ich bin beispielsweise ein großer Freund von [Mind Maps][wiki MM] für diesen Zweck.
Ich meine, dass das fürs erste reicht. Speziellere Artikel werden folgen, wobei ich gerne Themenvorschläge aus den Kommentaren berücksichtigen werde.
[wiki MM]: https://de.wikipedia.org/wiki/Mind-Map

View File

@ -0,0 +1,61 @@
---
title: Daemonize a Yesod application systemd style
author: nek0
tags: english, meta, programming
description: How to daemonize a Yesod web application in systemd
---
Hello again. With exam season finally over I finally managed to upgrade my server system and thus ending up with systemd.
I wasn't convinced initially, that it was for the better, but after handling the matter, I found the whole systemd ecosystem quite helpful. Creating your own service files is something really nice.
Since I'm surely not the only one using systemd for running Yesod applications I want to reiterate my previous tutorial on daemonizing a Yesod application, but this time with systemd.
So let's create the file `my-yesod-app.service` in the directory `/etc/systemd/service`
The typical systemd unit or service file is divided into three sections called `[Unit]`, `[Install]` and `[Service]`. The first section contains basic information about the service for the system and the user, notably the description of the service and the conditions of startup. Basically this section could look like this:
```
[Unit]
Description=My Yesod webapp
After=nginx.service
```
In this example I am assuming, that you use nginx as reverse proxy to your webapp.
This would be also the place to define your dependency on a certain database service.
The `[Install]` section contains information about the installation of the service. In our case it contains only one line, which defines, that our service will be a dependency of `multi-user.target`, which means that the service will be started when the server gets into the multi-user stage.
```
[Install]
WantedBy=multi-user.target
```
The last section contains information about the executable itself and the environment it shall run in. in our case we define the working directory and the user, which shall run the service and finally define the exact command for starting your webapp.
```
[Service]
WorkingDirectory=/absolute/path/to/directory
User=user
ExecStart=/absolute/path/to/executable config/settings.yml
```
Note that the paths **must** be absolute.
After finishing the file, you need to reload the Systemd daemon with `systemctl daemon-reload`, enable the automatic startup of your webapp service with `systemctl enable my-yesod-app` and finally start it with `systemctl start my-yesod-app`.
So much for the explanation. I hope this turns out to be helpful for others. At the end you will find the complete service file for delicious copypasta.
```
[Unit]
Description=My Yesod webapp
After=nginx.service
[Install]
WantedBy=multi-user.target
[Service]
WorkingDirectory=/absolute/path/to/directory
User=user
ExecStart=/absolute/path/to/executable config/settings.yml
```

View File

@ -0,0 +1,24 @@
---
title: Namensfindung
author: nek0
tags: deutsch, writing
description: Ein schwieriges Thema, wie ich finde.
---
Wie versprochen führe ich hier meine Posts pber das Schreiben weiter. Diesmal mit einem Schwierigerem Thema.
Ich tue mich schwer mit der Namensfindung von Chrakteren in meinen Geschichten. Sehr lange überlege ich hin und her, wie er am besten zu klingen hätte und welche Bedeutung er tragen sollte. Außerdem sollte er individuell zum Charakter passen. Um alle diese Anforderungen erfüllen zu können bedarf es eines großen Repertoires an Namen. Wie ich meines fülle möchte ich einmal darlegen.
Es gibt jede Menge Literatur über und für die Benennung von Menschen. Sie sind Betitelt mit "Die besten Babynamen" oder ähnlich. Mag kitschig klingen und auch seltsam wirken, wenn ich im Buchhandel in der tiefsten Frauenabteilung in derartiger Literatur blättere, aber beim Streifen durch diese Bücher kann einem, wenn auch selten, ein Kleinod an Namen auffallen.
Eine andere, wenn auch makabre Namensquelle sind Sterbeanzeigen. Auch dort bin ich schon häufiger fündig geworden und benutze Vor- oder Nachnamen verstorbener Leute. Genauso wie Sterbeanzeigen ist auch ein aufmerksamer Gang über den Friedhof geradezu erhellend. Insbesondere die älteren Friedhöfe. Die Namen, welche aus der Mode gekommen sind oder einfach seit einem knappen Jahrhundert nicht mehr vorkommen haben es mir besonders angetan.
Schließlich ist auch das Internet eine hervorragende Quelle für alle Aten von Namen. Es gibt ein reichhaltiges Bouquet an Ratgebern, wie man sein Kleinkind benennen sollte. Auch hier gilt: reinschauen schadet nicht, aber vertiefen sollte man sich darin nicht. Es gibt auch sehr schöne Seiten, die einem ohne viel Werbung die Wortherkunft und damit die Bedeutung der Namen verraten. Meine beliebteste Seite ist [behindthename.com][behindthename], welche auch gute Filterfunktionen hat und auch Namen zu verschiedenen Themengebieten anbietet.
So viel zu den Namensquellen. Was einem niemand abnehmen kann ist die Entscheidung für einen Namen zu treffen. Da hat wahrscheinlich jeder seine eigene Methode. Ich versuche im Namen ein wichtiges Merkmal der Person, die ich benennen möchte, einzufangen. Mal ist es eine Äußerlichkeit, häufiger aber ein Charakterzug. Nur selten vergebe ich einen namen nur rein zufällig.
Was meiner Meinung nach nicht geht, sind Namen, die entweder durch grobes draufschlagen auf die Tastatur entstanden sind oder indem man eine Meute Katzen über selbige gejagt hat. Das ist scheinbar insbesondere im Fantasy-Genre sehr beliebt und soll wohl den Anschein erwecken, dass da tatsächlich eine Sprache vom autor entwickelt wurde. Wenn diese allerdings sonst nirgendwo in größeren Mengen auftaucht, außer in Namen und ein paar Redewendungen, dann kann man es getrost sein lassen. Da rate ich eher dazu den Bereich der Namensherkunft exotisch zu wählen. Beispielsweise sind Namen für Zwerge "klassischerweise" aus dem Altnordischen entlehnt. Dadurch ist dann Namen dieser herkunft für Zwerge reserviert.
Natürlich will ich niemanden davon abhalten, sein Buch zu schreiben wie er es möchte. Wie immer gebe ich nur meine Meinung kund und versuche Ratschläge zu geben.
[behindthename]: http://www.behindthename.com/

View File

@ -0,0 +1,18 @@
---
title: Goodbye mining pool
author: nek0
tags: english, bitcoin
description: I am leaving my bitcoin pool
---
This is it. After some years (most of them spent in inactivity) I decided to leave my Buitcoin pool at [mining.bitcoin.cz][pool].
The reasons for leaving are mostly because I don't see me mining profitably in the foreseeable future. I was mining once with my graphics card three years ago, but I never had the funds to get an FPGA miner or even an ASIC miner, so i stopped mining alltogether.
I don't hold any grudges against this pool, moreover I would like to recommend it to anyone. They are very open ybout their share policy and have been always fair and secure from my point of view. They even kept an amount of rewarded bitcoins for three years for me, which I have just recently withdrawn.
My future Bitcoin income will have to depend on Donations I receive through this blog, so please give and give generously. Every little amount will be highly appreciated.
And as always I am very grateful for any advice or comments through my commenting service or via Email found in the [contact section](https://nek0.eu/contact.html).
[pool]: https://mining.bitcoin.cz/home/

View File

@ -0,0 +1,57 @@
---
title: Timing after Cron
author: nek0
tags: english, administration
description: Cron replacement for avantgardists
---
Suddenly my Cron stopped working. It was simply gone. Without warning.
With Cron simply disappearing my daily report about the visitors of my blog was gone.
I had two options:
* tedious debugging of Cron
* finding an alternative
After trying the first with no success at all, I tried to find an alternative. A friend showed me that Systemd had timer capabilities, which i could use for my problem. After some experimentation I would like to make a tutorial for Systemd timers.
Some explanation aforehand: Systemd timers are more complex than a cronjob but don't cover all functionalities, that Cron has. For Example: You have to write two files to create one Systemd timer opposed to a single line in the crontab.
To create a Systemd timer, You need a serivce file and a timer file. I already covered how to write a service file in my [Yesod Systemd tutorial][tut], but I will cover it here again, since the service files needed for timers are simpler.
Let's assume you want to create a timer for a job called … `job`. First you create as root the file `job.service` in `/etc/systemd/service` with the content:
```
[Unit]
Description=MyScript
[Service]
Type=oneshot
ExecStart=/full/path/to/script
User=user
[Install]
WantedBy=timers.target
```
The `[Unit]` section is pretty self-explanatory, so I will skip it. The `[Service]` section defines how to run our timed service. Don't be confused about the term "service". Systemd has a very broad definition of a "service". In this example we define, that your service will run just once and stop after running. in `ExecStart` is the absolute path to our executable script. `User` defines the user, whoch will run the script. This is optional, but if not given, the user will be root. The last section, the `[Install]` section just defines, that we want to start our service when all other timers get ready.
After creating the service file, we create a timer file called `job.timer` in the same directory as the service file. But first, we need to determine, what kind of timer you need. There are two kinds. First, there is the "monotonic timer", which determines its time to execute from how long the system is running. Then there is the "realtime timer", which determines its time to run from the system clock. The sekond kind is the one more similar to the behaviour of Cron, so we will generate one. The content of the file is as follows:
```
[Unit]
Description=Runs script every hour
[Timer]
OnCalendar=hourly
Persistent=true
```
I will skip again the `[Unit]` part. The `[Timer]` part is the most interesting one. in `OnCalendar` You define when to start your service. for example: a daily execution on 0:20 would be `*-*-* 00:20:00`. For more information on the time codes call `man systemd.time`. Finally the `Persistent` flag sets, what should happen, when the service *should have* run,but the system was offline. When true, the timer will run at the next possible occasion.
To start the timer, you need to call `systemctl enable job.timer` and `systemctl start job.timer`. Do not forget the `.timer` suffix.
This should be it. If I have forgotten something, please tell me in the comments.
[tut]: https://nek0.eu/posts/2015-08-28-Daemonize-a-Yesod-application-systemd-style.html

View File

@ -0,0 +1,17 @@
---
title: Goodbye Truecrypt
author: nek0
tags: english, crypto
description: After long search I finally found an alternative
---
Maybe som of you will remember, that I once [mourned the parting of the truecrypt project][0]. It was the best tool at hand i had to generate encrypted file containers.
I continued to use the software even after the death of its underlying project. Even the audit didn't reveal any critical vulnerabilities. But albeit the thorough search the auditors overlooked two major security bugs in the software, which became buplic just recently.
This sparked another attempt to find an alternative for truecrypt, which I gladly found in [veracrypt][1]. Veracrypt is based on the original code of truecrypt, but under the apache license. They fixed the vulenrabilities pretty quickly after they became public.
The whole user interface reminds me strongly of truecrypt, but they overhauled the encryption and hash functions and the container generations. This means, that veracrypt containers are not compatible with truecrypt, but truecrypt containers can still be mounted in veracrypt, because of a builtin "legacy mode".
[0]: https://nek0.eu/posts/2014-06-13-Crypto-broken.html
[1]: https://veracrypt.codeplex.com/

View File

@ -0,0 +1,20 @@
---
title: Back again
author: nek0
tags: english, meta, administration
description: sorry for the recent outage
---
First of all I wish you all a pleasant new year 2016 or YOLD 3182.
I'm terribly sorry for the long outage. There were some Problems with the server my services run on. The lesson learned: Reboot your servers regularly. At least after every new kernel upgrade.
As the server was completely down and had to be reinstalled, I took the chance to make some changes to my configuration. From now on this site supports the HTTP/2.0 protocol. It is still a little shaky, but i think I will figure it out.
Another change I made was the change of my certificate issuer. I switched to [letsencrypt][le], so you, the visitors, don't need to bother with certificate imports or exceptions. This was no easy decision to make, because I personally like [CACert][cc] more and I haven't heard too good things about the letsencrypt client. So I generated my certificates manually through [gethttpsforfree][get].
Unfortunately my image gallery eidolon could not be resurrected yet, because the database has not been resurrected yet. You have to hang in there a little longer. sorry.
[le]: https://letsencrypt.org/
[cc]: http://www.cacert.org/
[get]: https://gethttpsforfree.com/

View File

@ -0,0 +1,8 @@
---
title: Gallery back online
author: nek0
tags: english, meta
description: Gallery up and running again
---
Just a small heads-up. Your favourite repository of cat pictures, my gallery is online again. Come visit [eidolon.nek0.eu](https://eidolon.nek0.eu)!

View File

@ -0,0 +1,19 @@
---
title: Bitcoin crisis
author: nek0
tags: english, bitcoin
description: Loks like the Bitcoin network is about to break
---
It has been a while, since I posted something on the topic of Bitcoin, since I am only an uninvolved bystander in the whole matter. From what I could perceive, the Bitcoin network was groing and doing rather well.
It naturally struck me with surprise, when I learned, that the Bitcoin network is in grave danger. I have read [this][bt] article by a former Bitcoin developer, which describes the current Situation rather clearly and with great detail. I will try to summarize it as good as I can, because the article is rather lengthy.
The underlying technical problem the network currently has, is the blocksize limit enforced by the protocol. But it's not the limit itself causing the problems, but rather the setting of this limit in the implementation. When Bitcoin emerged for the first time, the block size limit was arbitrarily set to 1MB and has not been changed ever since.
This does not mean, that there have not been attempts to increase this limit, most notably by the [Bitcoin XT][xt] client and the developers behind it. But the technical and philosophical divergence from the original bitcoin client was and still is not well accepted from certein influential members of the bitcoin community and a wide scale deployment of this client is now strongly discouraged because of the DDoS attacks on larger operators of this cleint in the past, which even led to the downbreak of a whole ISP network.
I hope very much, that the community as well as the developers keep in mind, what the whole Bitcoin experiment is about: The creation of a currency, which can not be controlled by a small possibly malevolent but surely selfish minority.
[bt]: https://medium.com/@octskyward/the-resolution-of-the-bitcoin-experiment-dabb30201f7
[xt]: https://en.wikipedia.org/wiki/Bitcoin_XT

View File

@ -0,0 +1,60 @@
---
title: The decline of role play
author: nek0
tags: english, misc
description:
---
In my life, I have spent ample amounts of time with role playing games. The first games I have
ever encountered in this genre was was Square Enix's, at that time called Squaresoft,
"Final Fantasy VIII". This game left a permanent impression and up to today I still find myself
seriously comparing other games with it even on technical aspects.
This doesn't mean that I view this game as the pinnacle of role playing games, but it was the first
game, that "sucked me in". I got engaged in the story, identified myself with characters and sometimes
even started making up stories of my own in this setting. This were things I experienced only with books
up to this point.
When I started studying I already had played some good role playing games, but I already missed more
intelligent interaction with other characters in the games and I missed the opportunity the express
myself and the character I was playing freely. Since I haven't had an internet connection for my free use
at home, so I have never played MMORPGs, apart from a few days when I visited my brother and was allowed
to play a little "World of Warcraft" on his account.
At that time I got first involved with two concepts of role playing at the same time. Role play as
propagated by MMORPGs and role play as experienced with pen & paper RPGs.
I started playing "Guild Wars 2" with some friends at the time and we tried to play "in character" as it
is called, but we gave up on it pretty quickly, because the surroundings did not support it. We couldn't
indulge in our role play without being distracted by other individuals conversing on broken 1337speak out
of the context or aggressively advertising shady markets to buy in-game currency. It was impossible to
maintain an atmosphere under these circumstances. We kept on playing, but I gradually lost interest.
At the same time I got to know some people looking for a new member for their pen & paper role playing
group and they convinced me to give it a shot. All I had to lose would be some hours on an evening and I
was willing to take the risk. So we set out to play "Opus Anima", a german role play system with an
intriguing steampunk setting. What I encountered was something I already had wished for: I could freely
decide my characters reactions to certain events compliant to the world he or she lived in. I had not to
follow a predefined plot. And I could let my character express him- or herself I found fitting for the
character in that situation and was not limited to a small number of arbitrarily chosen reactions.
We were fortunate having an experienced game master who could easily adapt to our reactions and change
the plot on the fly.
We kept playing for a longer period of time, eventually we changed the world to "Shadowrun", a cyberpunk
setting in the 2070s. Some people left the group and others joined, but in the second half of last year
our play came to a sudden halt as the group broke up with rather unpleasant circumstances. I have not
been able to join another group ever since, because I can't find any.
Having enjoyed this kind of role play, I sought to pursue it further, without being limited to the people
in my geographical surrounding. With my abilities I naturally sought to find role play on the internet
outside of MMORPGs. Much to my surprise I found out, that role playing was relatively closely associated
to hacker culture. I learned of play-by-email RPGs in different settings and joined one, only to find out
that this particular game was quite dead, as well as other games played this way. I learned of MUDs,
MUCKS, MUSHes and their denizens and set to explore them, only to find out, that most of them adapted to
modern MMORPGs, with mostly hack and slay gameplay, and no role play even encouraged.
So I come to the conclusion, that classical role playing, as it is played in pen & paper or those rather
ancient forms of multiplayer RPGs is on the decline. I find it saddening, that young people seemingly
throw their imagination out and accept what they are spoon-fed as role play. This could in the end lead
to an even greater decline of artistic expression in the future. Mainstream art today is rarely worth a
damn to me, but the prospect of it getting even worse is unbearable.

27
posts/transition.lua Executable file
View File

@ -0,0 +1,27 @@
#!/usr/bin/env lua
files = io.popen("ls *.md"):lines()
function main()
for file in files do
lines = io.lines(file)
header = {}
for i=1, 6 do
header[i]=lines()
end
newfile = file:gsub(".md", ".adoc")
file2 = io.open(newfile, "r")
content = file2:read("*a")
file2:close()
head = table.concat(header, "\n")
full = head .. "\n" .. content
file2 = io.open(newfile, "w")
file2:write(full)
file2:flush()
file2:close()
print(newfile, " done!")
end
end
main()

2
robots.txt Normal file
View File

@ -0,0 +1,2 @@
User-agent: *
Disallow: /imprint.html

181
src/Main.hs Normal file
View File

@ -0,0 +1,181 @@
--------------------------------------------------------------------------------
{-# LANGUAGE OverloadedStrings #-}
import Data.Monoid (mappend)
import Hakyll
import Data.Monoid ((<>), mconcat)
import Data.List (sort, delete)
import System.Directory
--------------------------------------------------------------------------------
main :: IO ()
main = do
fs <- getDirectoryContents "./posts"
is <- return $ map (fromFilePath . ("posts/" ++)) $ sort $ delete "." $ delete ".." fs
hakyllWith config $ do
--copy fonts, images etc.
match ("font/*" .||. "images/*" .||. "humans.txt" .||. "D7665688.txt" .||. "robots.txt") $ do
route idRoute
compile copyFileCompiler
match "css/*" $ do
route idRoute
compile compressCssCompiler
-- Build tags
tags <- buildTags "posts/*.md" (fromCapture "tags/*.html")
--build tagcloud
let baseCtx = tagCloudField "tagcloud" 80.0 200.0 tags <>
defaultContext
match "about.md" $ do
route $ setExtension "html"
compile $ pandocCompiler
>>= loadAndApplyTemplate "templates/default.html" baseCtx
>>= relativizeUrls
match "404.md" $ do
route $ setExtension "html"
compile $ pandocCompiler
>>= loadAndApplyTemplate "templates/default.html" baseCtx
match "imprint.md" $ do
route $ setExtension "html"
compile $ pandocCompiler
>>= loadAndApplyTemplate "templates/default.html" baseCtx
>>= relativizeUrls
match "contact.md" $ do
route $ setExtension "html"
compile $ pandocCompiler
>>= loadAndApplyTemplate "templates/default.html" baseCtx
>>= relativizeUrls
pages <- buildPaginateWith
(return . map return . sort)
"posts/*.md"
(\n -> is !! (n - 1))
paginateRules pages $ \num _ -> do
route $ setExtension "html"
compile $ do
compiled <- getResourceBody >>= myPandoc
let pageCtx = paginateContext pages num
let ctx = (postCtx tags) <> pageCtx
full <- loadAndApplyTemplate "templates/post.html" ctx compiled
_ <- saveSnapshot "content" compiled
loadAndApplyTemplate "templates/default.html" baseCtx full
>>= relativizeUrls
-- match "posts/*.md" $ do
-- route $ setExtension "html"
-- compile $ pandocCompiler $ do
-- saveSnapshot "content"
-- loadAndApplyTemplate "templates/post.html" (postCtx tags)
-- loadAndApplyTemplate "templates/default.html" baseCtx
-- relativizeUrls
-- Post tags
tagsRules tags $ \tag pattern -> do
let title = "Posts tagged " ++ tag ++ ":"
-- Copied from posts, need to refactor
route idRoute
compile $ do
posts <- recentFirst =<< loadAll pattern
let ctx = constField "title" title <>
listField "posts" (postCtx tags) (return posts) <>
baseCtx
makeItem ""
>>= loadAndApplyTemplate "templates/posts.html" ctx
>>= loadAndApplyTemplate "templates/default.html" ctx
>>= relativizeUrls
create ["archive.html"] $ do
route idRoute
compile $ do
posts <- recentFirst =<< loadAll "posts/*"
let archiveCtx = listField "posts" (postCtx tags) (return posts) <>
constField "title" "Archives" <>
baseCtx
makeItem ""
>>= loadAndApplyTemplate "templates/archive.html" archiveCtx
>>= loadAndApplyTemplate "templates/default.html" archiveCtx
>>= relativizeUrls
match "index.html" $ do
route idRoute
compile $ do
posts <- fmap (take 5) . recentFirst =<< loadAll "posts/*"
let indexCtx = listField "posts" (postCtx tags) (return posts) <>
constField "title" "Home" <>
field "tags" (\_ -> renderTagCloud 85.0 300.0 tags) <>
defaultContext
getResourceBody
>>= applyAsTemplate indexCtx
>>= loadAndApplyTemplate "templates/default.html" baseCtx
>>= relativizeUrls
match "templates/*" $ compile templateCompiler
-- feeds
create ["atom.xml"] $ do
route idRoute
compile $ do
loadAllSnapshots "posts/*" "content"
>>= fmap (take 10) . recentFirst
>>= renderAtom feedConf feedCtx
create ["rss.xml"] $ do
route idRoute
compile $ do
loadAllSnapshots "posts/*" "content"
>>= fmap (take 10) . recentFirst
>>= renderRss feedConf feedCtx
--------------------------------------------------------------------------------
postCtx :: Tags -> Context String
postCtx tags = mconcat
[ modificationTimeField "mtime" "%U"
, dateField "date" "%B %e, %Y"
, tagsField "tags" tags
, defaultContext
]
--------------------------------------------------------------------------------
feedCtx :: Context String
feedCtx = mconcat
[ bodyField "description"
, defaultContext
]
--------------------------------------------------------------------------------
feedConf :: FeedConfiguration
feedConf = FeedConfiguration
{ feedTitle = "nek0's blog"
, feedDescription = "Random things"
, feedAuthorName = "nek0"
, feedAuthorEmail = "nek0@nek0.eu"
, feedRoot = "http://nek0.eu"
}
--------------------------------------------------------------------------------
config :: Configuration
config = defaultConfiguration
{ deployCommand = "rsync --del --checksum -ave 'ssh -p 5555' \\_site/* nek0@chelnok.de:/home/nek0/www/blog"
}
--------------------------------------------------------------------------------
myPandoc :: Item String -> Compiler (Item String)
myPandoc item = do
renderPandocWith defaultHakyllReaderOptions defaultHakyllWriterOptions item

35
stack.yaml Normal file
View File

@ -0,0 +1,35 @@
# For more information, see: http://docs.haskellstack.org/en/stable/yaml_configuration.html
# Specifies the GHC version and set of packages available (e.g., lts-3.5, nightly-2015-09-21, ghc-7.10.2)
resolver: lts-5.1
# Local packages, usually specified by relative directory name
packages:
- '.'
# Packages to be pulled from upstream that are not in the resolver (e.g., acme-missiles-0.3)
extra-deps: []
# Override default flag values for local packages and extra-deps
flags: {}
# Extra package databases containing global packages
extra-package-dbs: []
# Control whether we use the GHC we find on the path
# system-ghc: true
# Require a specific version of stack, using version ranges
# require-stack-version: -any # Default
# require-stack-version: >= 1.0.0
# Override the architecture used by stack, especially useful on Windows
# arch: i386
# arch: x86_64
# Extra directories used by stack for building
# extra-include-dirs: [/path/to/dir]
# extra-lib-dirs: [/path/to/dir]
# Allow a newer minor version of GHC than the snapshot specifies
# compiler-check: newer-minor

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")$

81
templates/default.html Normal file
View File

@ -0,0 +1,81 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>My Blog - $title$</title>
<link rel="stylesheet" type="text/css" href="/css/default.css" />
<link rel="stylesheet" type="text/css" href="/css/comments.css"/>
<link rel="stylesheet" type="text/css" href="/css/synlight.css"/>
<link rel="stylesheet" type="text/css" href="/css/font.css"/>
<!-- humans.txt -->
<link rel="author" href="https://nek0,eu/humans.txt" />
<!-- RSS -->
<link rel="alternate" type="application/rss+xml" title="neko's blog" href="https://nek0.eu/rss.xml">
<!-- ATOM -->
<link rel="alternate" type="application/atom+xml" title="neko's blog" href="https://nek0.eu/atom.xml">
<!-- favicon -->
<link rel="icon" type="image/x-icon" href="/images/nekonet.ico">
<script type="text/javascript">document.domain="nek0.eu"</script>
</head>
<body class="site">
<div class="wrapper">
<header>
<a href="/">Nek0's Blog</a>
<hr>
</header>
<nav>
<ul class="navigation">
<li><a href="/">Home</a></li>
<li><a href="/about.html">About</a></li>
<li><a href="/contact.html">Contact</a></li>
<li><a href="/archive.html">Archive</a></li>
</ul>
<div class="tagcloud">
Tagcloud:<br>
$tagcloud$
</div>
</nav>
<article>
<h1>$title$</h1>
$body$
</article>
</div>
<footer>
<hr>
<span>
<svg class="bitcoin" width="1em" height="1em" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1423 640q18 182-131 258 117 28 175 103t45 214q-7 71-32.5 125t-64.5 89-97 58.5-121.5 34.5-145.5 15v255h-154v-251q-80 0-122-1v252h-154v-255q-18 0-54-.5t-55-.5h-200l31-183h111q50 0 58-51v-402h16q-6-1-16-1v-287q-13-68-89-68h-111v-164l212 1q64 0 97-1v-252h154v247q82-2 122-2v-245h154v252q79 7 140 22.5t113 45 82.5 78 36.5 114.5zm-215 545q0-36-15-64t-37-46-57.5-30.5-65.5-18.5-74-9-69-3-64.5 1-47.5 1v338q8 0 37 .5t48 .5 53-1.5 58.5-4 57-8.5 55.5-14 47.5-21 39.5-30 24.5-40 9.5-51zm-71-476q0-33-12.5-58.5t-30.5-42-48-28-55-16.5-61.5-8-58-2.5-54 1-39.5.5v307q5 0 34.5.5t46.5 0 50-2 55-5.5 51.5-11 48.5-18.5 37-27 27-38.5 9-51z"/></svg>: Bitcoin donations welcome:
<a href="bitcoin:1NGNd6tQdMbRtCNdncmXjVmG33xdnWMfcK?label=feed the cat">
1NGNd6tQdMbRtCNdncmXjVmG33xdnWMfcK
</a>
</span>
<span>
<a href="http://www.w3.org/html/logo/">
<svg width="16" height="16" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
<title>HTML5 Logo Badge</title>
<path d="m71 460l-41-460h451l-41 460-185 52" fill="#E34F26"/>
<path d="m256 472l149-41 35-394h-184" fill="#EF652A"/>
<path d="m256 208h-75l-5-58h80v-56h-1-141l1 15 14 156h127zm0 147h-1l-63-17-4-45h-30-26l7 89 116 32h1z" fill="#EBEBEB"/>
<path d="m255 208v57h70l-7 73-63 17v59l116-32 1-10 13-149 2-15h-16zm0-114v35 21h137l1-12 3-29 1-15z" fill="#FFF"/>
</svg>
</a>
</span>
<span>
Feeds:<a href="/atom.xml"> <svg class="feed" id="feed" width="1em" height="1em" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M576 1344q0 80-56 136t-136 56-136-56-56-136 56-136 136-56 136 56 56 136zm512 123q2 28-17 48-18 21-47 21h-135q-25 0-43-16.5t-20-41.5q-22-229-184.5-391.5t-391.5-184.5q-25-2-41.5-20t-16.5-43v-135q0-29 21-47 17-17 43-17h5q160 13 306 80.5t259 181.5q114 113 181.5 259t80.5 306zm512 2q2 27-18 47-18 20-46 20h-143q-26 0-44.5-17.5t-19.5-42.5q-12-215-101-408.5t-231.5-336-336-231.5-408.5-102q-25-1-42.5-19.5t-17.5-43.5v-143q0-28 20-46 18-18 44-18h3q262 13 501.5 120t425.5 294q187 186 294 425.5t120 501.5z"/></svg>Atom</a> |
<a href="/rss.xml"> <svg class="feed" width="1em" height="1em" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M576 1344q0 80-56 136t-136 56-136-56-56-136 56-136 136-56 136 56 56 136zm512 123q2 28-17 48-18 21-47 21h-135q-25 0-43-16.5t-20-41.5q-22-229-184.5-391.5t-391.5-184.5q-25-2-41.5-20t-16.5-43v-135q0-29 21-47 17-17 43-17h5q160 13 306 80.5t259 181.5q114 113 181.5 259t80.5 306zm512 2q2 27-18 47-18 20-46 20h-143q-26 0-44.5-17.5t-19.5-42.5q-12-215-101-408.5t-231.5-336-336-231.5-408.5-102q-25-1-42.5-19.5t-17.5-43.5v-143q0-28 20-46 18-18 44-18h3q262 13 501.5 120t425.5 294q187 186 294 425.5t120 501.5z"/></svg>RSS</a>
</span>
<span>
Site proudly generated by
<a href="http://jaspervdj.be/hakyll">Hakyll</a>
</span>
<span class="hidden">
<a href="/imprint.html">Impressum</a>
</span>
<br>
</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>

45
templates/post.html Normal file
View File

@ -0,0 +1,45 @@
<div class="info">
Posted on $date$
$if(author)$
by $author$
$endif$
$if(tags)$
in $tags$
$endif$
</div>
$body$
<div class="pagination">
$if(previousPageNum)$
<a class="left" href="$previousPageUrl$"><svg width="1em" height="1em" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1664 896v128q0 53-32.5 90.5t-84.5 37.5h-704l293 294q38 36 38 90t-38 90l-75 76q-37 37-90 37-52 0-91-37l-651-652q-37-37-37-90 0-52 37-91l651-650q38-38 91-38 52 0 90 38l75 74q38 38 38 91t-38 91l-293 293h704q52 0 84.5 37.5t32.5 90.5z"/></svg>previous post</a>
$endif$
$if(nextPageNum)$
<a class="right" href="$nextPageUrl$">next post<svg width="1em" height="1em" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1600 960q0 54-37 91l-651 651q-39 37-91 37-51 0-90-37l-75-75q-38-38-38-91t38-91l293-293h-704q-52 0-84.5-37.5t-32.5-90.5v-128q0-53 32.5-90.5t84.5-37.5h704l-293-294q-38-36-38-90t38-90l75-75q38-38 90-38 53 0 91 38l651 651q37 35 37 90z"/></svg></a>
$endif$
</div>
<object id="yacs" seamless data="https://yacs.nek0.eu/comments/$title$"><p>If you see this, something is wrong</p></object>
<script src="https://yacs.nek0.eu/static/js/yacs.js"></script>
<!--
<script type="text/javascript">
var slice = Array.prototype.slice;
document.addEventListener("DOMContentLoaded", function () {
slice.call(document.getElementsByTagName("object")).forEach(function (obj) {
var src = obj.getAttribute("data");
var request = new XMLHttpRequest();
request.onload = function () {
window.foo = this.responseXML;
slice.call(this.responseXML.body.children).forEach(function (child) {
obj.parentNode.insertBefore(child);
});
obj.remove();
};
request.open("GET", src);
request.responseType = "document";
request.send();
});
});
</script>
-->

2
templates/posts.html Normal file
View File

@ -0,0 +1,2 @@
<!--<h1>$title$</h1>-->
$partial("templates/post-list.html")$