summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--assets/other/nonbot_pledged_logo.svg1
l---------content-org/.#emacs.org1
-rw-r--r--content-org/emacs.org31
-rw-r--r--content/about.md7
-rw-r--r--content/emacs/elfeed-literate-config.md4
-rw-r--r--content/emacs/literate-programing-in-emacs.md116
-rw-r--r--content/emacs/moving-my-rss-reading-to-emacs-with-elfeed.md4
-rw-r--r--content/emacs/notmuch.md4
-rw-r--r--content/me/contact.md12
-rw-r--r--layouts/_default/index.html13
-rw-r--r--static/style.css9
11 files changed, 172 insertions, 30 deletions
diff --git a/assets/other/nonbot_pledged_logo.svg b/assets/other/nonbot_pledged_logo.svg
new file mode 100644
index 0000000..b532b9b
--- /dev/null
+++ b/assets/other/nonbot_pledged_logo.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="100%" height="100%" viewBox="0 0 287 250" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5;"><rect id="Pending" x="0" y="0" width="286.289" height="249.785" style="fill:none;"/><g id="Pending1" serif:id="Pending"><path d="M250.123,62.996c-0,-13.806 -11.209,-25.016 -25.016,-25.016l-163.925,0c-13.807,0 -25.016,11.21 -25.016,25.016l-0,123.471c-0,13.807 11.209,25.016 25.016,25.016l163.925,-0c13.807,-0 25.016,-11.209 25.016,-25.016l-0,-123.471Z" style="fill:#fff;stroke:#525252;stroke-width:10px;"/><path d="M114.761,105.349l-11.744,-0l-18.574,-32.339l-0.209,0.07l-0,32.269l-11.813,-0l-0,-50.739l11.813,0l18.574,32.339l0.209,-0.07l-0,-32.269l11.744,0l-0,50.739Z" style="fill:#16a34a;fill-rule:nonzero;"/><path d="M164.698,84.545c-0,6.249 -1.981,11.401 -5.942,15.455c-3.961,4.054 -9.136,6.081 -15.525,6.081c-6.435,-0 -11.65,-2.027 -15.646,-6.081c-3.996,-4.054 -5.994,-9.206 -5.994,-15.455l-0,-9.13c-0,-6.227 1.992,-11.372 5.976,-15.438c3.985,-4.066 9.183,-6.098 15.595,-6.098c6.365,-0 11.546,2.032 15.542,6.098c3.996,4.066 5.994,9.211 5.994,15.438l-0,9.13Zm-11.744,-9.2c-0,-3.624 -0.854,-6.598 -2.561,-8.921c-1.708,-2.323 -4.118,-3.485 -7.231,-3.485c-3.183,0 -5.617,1.156 -7.301,3.467c-1.684,2.312 -2.526,5.291 -2.526,8.939l-0,9.2c-0,3.67 0.853,6.667 2.561,8.99c1.707,2.324 4.153,3.485 7.335,3.485c3.09,0 5.483,-1.161 7.179,-3.485c1.696,-2.323 2.544,-5.32 2.544,-8.99l-0,-9.2Z" style="fill:#16a34a;fill-rule:nonzero;"/><path d="M213.868,105.349l-11.744,-0l-18.574,-32.339l-0.209,0.07l0,32.269l-11.813,-0l-0,-50.739l11.813,0l18.574,32.339l0.209,-0.07l0,-32.269l11.744,0l0,50.739Z" style="fill:#16a34a;fill-rule:nonzero;"/><path d="M70.08,162.143l-0,-50.738l17.424,-0c6.296,-0 11.209,1.167 14.74,3.502c3.532,2.335 5.297,5.814 5.297,10.437c0,2.416 -0.569,4.565 -1.707,6.447c-1.139,1.881 -2.893,3.299 -5.262,4.251c2.973,0.674 5.169,2.027 6.586,4.06c1.417,2.033 2.126,4.373 2.126,7.022c-0,4.948 -1.661,8.688 -4.984,11.221c-3.322,2.532 -8.084,3.798 -14.287,3.798l-19.933,0Zm11.813,-21.78l0,12.72l8.12,-0c2.509,-0 4.391,-0.494 5.645,-1.481c1.255,-0.988 1.882,-2.504 1.882,-4.548c-0,-2.207 -0.54,-3.874 -1.621,-5.001c-1.08,-1.126 -2.828,-1.69 -5.244,-1.69l-8.782,0Zm0,-7.806l5.855,0c2.671,-0.046 4.669,-0.563 5.993,-1.55c1.325,-0.988 1.987,-2.434 1.987,-4.339c-0,-2.161 -0.674,-3.735 -2.021,-4.722c-1.348,-0.987 -3.415,-1.481 -6.203,-1.481l-5.611,0l0,12.092Z" style="fill:#16a34a;fill-rule:nonzero;"/><path d="M216.209,120.465l-13.382,0l0,41.678l-11.813,0l-0,-41.678l-13.277,0l-0,-9.06l38.472,-0l-0,9.06Z" style="fill:#16a34a;fill-rule:nonzero;"/><path d="M111.799,136.774l-0,12.685c-0,1.754 1.417,3.171 3.171,3.171l3.171,-0l-0,-19.027l-3.171,-0c-1.754,-0 -3.171,1.417 -3.171,3.171Zm45.981,-15.856l-11.099,0l0,-6.342c0,-1.754 -1.417,-3.171 -3.171,-3.171c-1.754,-0 -3.171,1.417 -3.171,3.171l0,6.342l-11.099,0c-4.38,0 -7.928,3.548 -7.928,7.928l0,26.955c0,3.498 2.844,6.342 6.342,6.342l31.712,0c3.498,0 6.342,-2.844 6.342,-6.342l0,-26.955c0,-4.38 -3.547,-7.928 -7.928,-7.928Zm-20.612,31.712l-6.342,-0l-0,-3.171l6.342,-0l-0,3.171Zm-3.171,-11.892c-2.19,-0 -3.964,-1.774 -3.964,-3.964c-0,-2.19 1.774,-3.964 3.964,-3.964c2.19,-0 3.964,1.774 3.964,3.964c-0,2.19 -1.774,3.964 -3.964,3.964Zm12.684,11.892l-6.342,-0l0,-3.171l6.342,-0l0,3.171Zm9.514,-0l-6.342,-0l-0,-3.171l6.342,-0l-0,3.171Zm-3.171,-11.892c-2.19,-0 -3.964,-1.774 -3.964,-3.964c-0,-2.19 1.774,-3.964 3.964,-3.964c2.19,-0 3.964,1.774 3.964,3.964c-0,2.19 -1.774,3.964 -3.964,3.964Zm19.027,-7.135l-3.172,-0l0,19.027l3.172,-0c1.754,-0 3.171,-1.417 3.171,-3.171l-0,-12.685c-0,-1.754 -1.417,-3.171 -3.171,-3.171Z" style="fill:#16a34a;fill-rule:nonzero;"/><path d="M250.123,167.69l-213.957,0.232l-0,25.084c-0,8.819 7.138,15.974 15.957,15.993c39.532,0.089 141.692,0.319 181.643,0.408c4.335,0.01 8.495,-1.705 11.564,-4.767c3.068,-3.062 4.793,-7.218 4.793,-11.553l-0,-25.397Z" style="fill:#525252;"/><g><path d="M85.449,193.252l-0,8.677l-5.895,0l0,-25.318l10.277,0c3.002,0 5.384,0.768 7.146,2.304c1.763,1.536 2.644,3.545 2.644,6.026c-0,2.492 -0.881,4.5 -2.644,6.025c-1.762,1.524 -4.144,2.286 -7.146,2.286l-4.382,0Zm-0,-4.521l4.382,0c1.275,0 2.246,-0.35 2.912,-1.052c0.667,-0.701 1,-1.602 1,-2.704c0,-1.124 -0.333,-2.046 -1,-2.764c-0.666,-0.719 -1.637,-1.079 -2.912,-1.079l-4.382,0l-0,7.599Z" style="fill:#fff;fill-rule:nonzero;"/><rect x="102.872" y="174.803" width="5.895" height="27.126" style="fill:#fff;fill-rule:nonzero;"/><path d="M120.956,202.294c-2.77,0 -4.981,-0.869 -6.633,-2.608c-1.652,-1.739 -2.478,-3.918 -2.478,-6.538l-0,-0.661c-0,-2.863 0.75,-5.202 2.252,-7.016c1.501,-1.814 3.648,-2.716 6.442,-2.704c2.55,0 4.55,0.765 5.999,2.295c1.449,1.531 2.174,3.606 2.174,6.225l-0,3.078l-10.746,0l-0.035,0.105c0.127,0.962 0.521,1.753 1.182,2.373c0.661,0.62 1.542,0.93 2.643,0.93c1.113,0 2.003,-0.087 2.669,-0.26c0.667,-0.174 1.51,-0.476 2.53,-0.905l1.392,3.582c-0.823,0.603 -1.887,1.105 -3.191,1.505c-1.304,0.399 -2.704,0.599 -4.2,0.599Zm-0.417,-15.006c-0.846,0 -1.481,0.301 -1.904,0.904c-0.423,0.603 -0.681,1.409 -0.774,2.417l0.052,0.087l5.06,0l0,-0.452c0,-0.95 -0.197,-1.681 -0.591,-2.191c-0.394,-0.51 -1.008,-0.765 -1.843,-0.765Z" style="fill:#fff;fill-rule:nonzero;"/><path d="M130.416,192.557c-0,-2.933 0.64,-5.298 1.921,-7.095c1.281,-1.797 3.087,-2.695 5.417,-2.695c0.869,0 1.655,0.2 2.356,0.6c0.701,0.4 1.33,0.971 1.887,1.713l-0,-10.277l5.877,0l0,27.126l-5.095,0l-0.417,-2.312c-0.58,0.869 -1.255,1.533 -2.026,1.991c-0.771,0.458 -1.643,0.686 -2.617,0.686c-2.318,0 -4.115,-0.857 -5.39,-2.573c-1.276,-1.716 -1.913,-3.982 -1.913,-6.799l-0,-0.365Zm5.877,0.365c0,1.53 0.223,2.721 0.67,3.573c0.446,0.852 1.197,1.278 2.251,1.278c0.615,0 1.157,-0.113 1.626,-0.339c0.47,-0.226 0.855,-0.559 1.157,-1l-0,-7.598c-0.302,-0.499 -0.684,-0.881 -1.148,-1.148c-0.464,-0.267 -0.997,-0.4 -1.6,-0.4c-1.043,0 -1.797,0.481 -2.26,1.443c-0.464,0.962 -0.696,2.238 -0.696,3.826l0,0.365Z" style="fill:#fff;fill-rule:nonzero;"/><path d="M150.43,192.557c0,-2.933 0.638,-5.298 1.913,-7.095c1.275,-1.797 3.078,-2.695 5.408,-2.695c0.997,0 1.872,0.235 2.625,0.704c0.754,0.47 1.403,1.139 1.948,2.009l0.4,-2.365l5.147,-0l-0,18.084c-0,2.516 -0.864,4.533 -2.591,6.051c-1.727,1.519 -4.052,2.278 -6.973,2.278c-0.974,0 -1.994,-0.133 -3.06,-0.4c-1.067,-0.266 -2.081,-0.626 -3.043,-1.078l0.956,-4.347c0.858,0.371 1.675,0.646 2.452,0.826c0.777,0.18 1.663,0.269 2.66,0.269c1.206,0 2.128,-0.324 2.765,-0.973c0.638,-0.65 0.957,-1.536 0.957,-2.661l-0,-0.956c-0.534,0.684 -1.154,1.203 -1.861,1.556c-0.707,0.354 -1.513,0.53 -2.417,0.53c-2.319,0 -4.112,-0.857 -5.382,-2.573c-1.269,-1.716 -1.904,-3.982 -1.904,-6.799l0,-0.365Zm5.86,0.365c0,1.53 0.223,2.721 0.67,3.573c0.446,0.852 1.196,1.278 2.251,1.278c0.638,0 1.186,-0.098 1.644,-0.295c0.458,-0.197 0.837,-0.499 1.139,-0.904l-0,-7.895c-0.29,-0.44 -0.664,-0.782 -1.122,-1.026c-0.458,-0.243 -1,-0.365 -1.626,-0.365c-1.043,0 -1.797,0.481 -2.26,1.443c-0.464,0.962 -0.696,2.238 -0.696,3.826l0,0.365Z" style="fill:#fff;fill-rule:nonzero;"/><path d="M179.817,202.294c-2.771,0 -4.982,-0.869 -6.634,-2.608c-1.652,-1.739 -2.478,-3.918 -2.478,-6.538l0,-0.661c0,-2.863 0.751,-5.202 2.252,-7.016c1.501,-1.814 3.649,-2.716 6.443,-2.704c2.55,0 4.55,0.765 5.999,2.295c1.449,1.531 2.173,3.606 2.173,6.225l0,3.078l-10.746,0l-0.035,0.105c0.128,0.962 0.522,1.753 1.183,2.373c0.661,0.62 1.542,0.93 2.643,0.93c1.113,0 2.002,-0.087 2.669,-0.26c0.667,-0.174 1.51,-0.476 2.53,-0.905l1.391,3.582c-0.823,0.603 -1.887,1.105 -3.191,1.505c-1.304,0.399 -2.704,0.599 -4.199,0.599Zm-0.417,-15.006c-0.847,0 -1.481,0.301 -1.904,0.904c-0.424,0.603 -0.682,1.409 -0.774,2.417l0.052,0.087l5.06,0l0,-0.452c0,-0.95 -0.197,-1.681 -0.591,-2.191c-0.394,-0.51 -1.009,-0.765 -1.843,-0.765Z" style="fill:#fff;fill-rule:nonzero;"/><path d="M189.276,192.557c0,-2.933 0.641,-5.298 1.922,-7.095c1.281,-1.797 3.086,-2.695 5.416,-2.695c0.87,0 1.655,0.2 2.357,0.6c0.701,0.4 1.33,0.971 1.886,1.713l0,-10.277l5.878,0l-0,27.126l-5.095,0l-0.418,-2.312c-0.579,0.869 -1.255,1.533 -2.025,1.991c-0.771,0.458 -1.644,0.686 -2.617,0.686c-2.319,0 -4.116,-0.857 -5.391,-2.573c-1.275,-1.716 -1.913,-3.982 -1.913,-6.799l0,-0.365Zm5.878,0.365c-0,1.53 0.223,2.721 0.669,3.573c0.446,0.852 1.197,1.278 2.252,1.278c0.614,0 1.156,-0.113 1.626,-0.339c0.469,-0.226 0.855,-0.559 1.156,-1l0,-7.598c-0.301,-0.499 -0.684,-0.881 -1.147,-1.148c-0.464,-0.267 -0.997,-0.4 -1.6,-0.4c-1.044,0 -1.797,0.481 -2.261,1.443c-0.463,0.962 -0.695,2.238 -0.695,3.826l-0,0.365Z" style="fill:#fff;fill-rule:nonzero;"/></g></g></svg> \ No newline at end of file
diff --git a/content-org/.#emacs.org b/content-org/.#emacs.org
new file mode 120000
index 0000000..7cd8d26
--- /dev/null
+++ b/content-org/.#emacs.org
@@ -0,0 +1 @@
+mms@voyager.24577:1705180510 \ No newline at end of file
diff --git a/content-org/emacs.org b/content-org/emacs.org
index cc5012e..5434306 100644
--- a/content-org/emacs.org
+++ b/content-org/emacs.org
@@ -148,21 +148,22 @@ The great thing about FIDO is that it, like Icomplete, uses Minibuffer API[fn:mi
#+END_SRC
[fn:minibuffer] [[https://www.gnu.org/software/emacs/manual/html_node/elisp/Minibuffer-Completion.html][Guide on Minibuffer completition]]
-** TODO Introduction to Literate programming
+** DONE Introduction to Literate programming
+CLOSED: [2024-01-30 Tue 19:10]
:PROPERTIES:
:EXPORT_FILE_NAME: literate-programing-in-emacs
-:EXPORT_HUGO_CUSTOM_FRONT_MATTER: abstract A short intro into the idea of literate programing
+:EXPORT_HUGO_CUSTOM_FRONT_MATTER: abstract A short introduction into the idea of literate programming
:EXPORT_HUGO_MENU: :menu emacs-guides :name "Literate programing"
:END:
*** Abstract
-Here I give a short, theoretical introduction to the idea of Literate programing
+In this article I give a short, theoretical introduction to the idea of Literate programming
-*** Preface
+*** Introduction
-Literate programing is not a subject that comes out often, except if you are talking with an Emacs enthusiast.
-There is a signifcant chance, that most programmers don't even know the term.
+Literate programming is not a subject that comes out often, except if you are talking with an Emacs enthusiast.
+There is a significant chance that most programmers don't even know the term.
Let's fix that with a quote:
#+begin_quote
@@ -175,8 +176,8 @@ At the most casual level, a literate program should at least make its own workin
-- Christopher Lee[fn:lee]
#+end_quote
-The idea is therefore an convertion of an entity out of which one can extract code or documentation.
-An semi-abstract in-between called "web[fn:web]".
+The idea is therefore a conversion of an entity out of which one can extract code or documentation.
+A semi-abstract in-between called "web[fn:web]".
The process of creating code is called "tangling", and generation of document is a "weave".
*** An example
@@ -208,24 +209,24 @@ And then we compile it
After the compilation finishes, add executable to your .xinit
-#+begin_src
+#+begin_src shell
echo "exec dwm" >> ~/.xinit
#+end_src
#+end_quote
So yeah, it's a blog post.
-A blog post which one can exeute.
+A blog post which one can execute.
The example assumes shell, but the actual language can be anything.
We can /tangle/ C code without any problems.
-*** Literate programing
+*** Literate programming
-This is *not* the way we do programing.
-We smack spagetti code together, add a random sentence here and there, commit is as "bug fix" and voila!
+This is *not* the way we do programming.
+We smack spaghetti code together, add a random sentence here and there, commit is as "bug fix" and voilà!
In a few months no one knows what's going on.
Success, up to the next JIRA task.
-Very often code comments are treated as an harmful or (at best) a neccessar evil.
+Very often code comments are treated as an harmful or (at best) a necessary evil.
We think that code should be self-documenting.
And this is completely valid.
A developer needs to understand what given code does, just by reading it.
@@ -241,7 +242,7 @@ Since the code coexists with documentation, the reader gets the whole picture.
[fn:lee] [[https://web.archive.org/web/20170603045917/http://vasc.ri.cmu.edu:80/old_help/Programming/Literate/literate.html]["Literate Programming -- Propaganda and Tools", Christopher Lee, 1997]]
[fn:babel] [[https://orgmode.org/worg/org-contrib/babel/intro.html][Org Babel]]
[fn:jupyter] I know that Jupyter is not strictly a literate program, but it's close enough.
-[fn:web] the name was choosen, because at the time it was not in use ralated to computing.
+[fn:web] this name was choosen, because at the time it was not in use related to computing.
We're dealing with history here!
*** Conclusion
diff --git a/content/about.md b/content/about.md
index cfa0144..9ea5555 100644
--- a/content/about.md
+++ b/content/about.md
@@ -23,13 +23,6 @@ Here are a few cool links:
More cool links can be found under [links](/links).
-### Contact
-
-I try not use social media except for YouTube. Therefore, you won't find me on Twitter, TikTok.
-
-**Email**: [contact@michal.sapka.me](mailto:contact@michal.sapka.me)
-**Mastodon**: [https://emacs.ch/@ms](https://emacs.ch/@ms)
-
### Causes
Some causes I support or believe in:
diff --git a/content/emacs/elfeed-literate-config.md b/content/emacs/elfeed-literate-config.md
index 47a4666..6ad965c 100644
--- a/content/emacs/elfeed-literate-config.md
+++ b/content/emacs/elfeed-literate-config.md
@@ -4,11 +4,11 @@ author = ["Michał Sapka"]
date = 2023-06-02T23:00:00+02:00
categories = ["emacs"]
draft = false
-weight = 2003
+weight = 2004
abstract = "Setting up config inside an org file"
[menu]
[menu.emacs-guides]
- weight = 2003
+ weight = 2004
identifier = "literate-configuration-of-elfeed"
parent = "elfeed"
name = "Literate configuration"
diff --git a/content/emacs/literate-programing-in-emacs.md b/content/emacs/literate-programing-in-emacs.md
new file mode 100644
index 0000000..8df4841
--- /dev/null
+++ b/content/emacs/literate-programing-in-emacs.md
@@ -0,0 +1,116 @@
++++
+title = "Introduction to Literate programming"
+author = ["Michał Sapka"]
+date = 2024-01-30T19:10:00+01:00
+categories = ["emacs"]
+draft = false
+weight = 2002
+abstract = "A short introduction into the idea of literate programming"
+[menu]
+ [menu.emacs-guides]
+ weight = 2002
+ identifier = "introduction-to-literate-programming"
+ name = "Literate programing"
++++
+
+## Abstract {#abstract}
+
+In this article I give a short, theoretical introduction to the idea of Literate programming
+
+
+## Introduction {#introduction}
+
+Literate programming is not a subject that comes out often, except if you are talking with an Emacs enthusiast.
+There is a significant chance that most programmers don't even know the term.
+Let's fix that with a quote:
+
+> Literate programming is an approach to programming which emphasises that programs should be written to be read by people as well as compilers.
+> From a purist standpoint, a program could be considered a publishable-quality document that argues mathematically for its own correctness.
+> A different approach is that a program could be a document that teaches programming to the reader through its own example.
+> A more casual approach to literate programming would be that a program should be documented at least well enough that someone could maintain the code properly and make informed changes in a reasonable amount of time without direct help from the author.
+> At the most casual level, a literate program should at least make its own workings plain to the author of the program so that at least the author can easily maintain the code over its lifetime.
+>
+> -- Christopher Lee[^fn:1]
+
+The idea is therefore a conversion of an entity out of which one can extract code or documentation.
+A semi-abstract in-between called "web[^fn:2]".
+The process of creating code is called "tangling", and generation of document is a "weave".
+
+
+## An example {#an-example}
+
+Let's say we want to show the reader how to install DWM.
+We can create a document in a style:
+
+> DWM is a window manager that can be changed only via source code modification.
+> Here, we will fetch and compile it.
+> First, we need to download the tarball:
+>
+> ```shell
+> wget https://dl.suckless.org/dwm/dwm-6.4.tar.gz
+> ```
+>
+> then, simply extract it
+>
+> ````shell
+> tar - xvzf dwm-6.4.tar.gz
+> ````
+>
+> And then we compile it
+>
+> `````shell
+> cd dwm-6.4
+> doas make clean install
+> `````
+>
+> After the compilation finishes, add executable to your .xinit
+>
+> ``````shell
+> echo "exec dwm" >> ~/.xinit
+> ``````
+
+So yeah, it's a blog post.
+A blog post which one can execute.
+The example assumes shell, but the actual language can be anything.
+We can _tangle_ C code without any problems.
+
+
+## Literate programming {#literate-programming}
+
+This is **not** the way we do programming.
+We smack spaghetti code together, add a random sentence here and there, commit is as "bug fix" and voilà!
+In a few months no one knows what's going on.
+Success, up to the next JIRA task.
+
+Very often code comments are treated as an harmful or (at best) a necessary evil.
+We think that code should be self-documenting.
+And this is completely valid.
+A developer needs to understand what given code does, just by reading it.
+If your function is so convoluted, nested and complicated that it's impossible to comprehend without a descriptive comment.
+
+But this is not the whole story.
+A function may be very simple, but there is always _context_ in which it is used.
+
+Literate Programming promotes telling story to the reader.
+You are free to do narration giving all extra info in one place.
+Since the code coexists with documentation, the reader gets the whole picture.
+
+
+## Conclusion {#conclusion}
+
+Now, this is not a generic fix for all programs.
+We work on massive systems with hundreds of intertwined, moving parts.
+It is impossible to create a cohesive narrative when the program jumps all over the place.
+
+Literate programing, however, found a different home.
+It is loved by scientists (just look at Jupyter Notebooks[^fn:3]) who use it for reproducible resarch.
+We, amongts Emacs crowed, use it extensively for literate configuration of our environments.
+It could be used for scripts, runbooks, debugging logs and so on.
+Wherever one can see a logical A, B and C points, we can explain the interconnections.
+
+You can learn more (including much better example) by reading the [original Knuth's paper](https://michal.sapka.me/papers/literate_programming_knuth_1984.pdf).
+
+[^fn:1]: ["Literate Programming -- Propaganda and Tools", Christopher Lee, 1997](https://web.archive.org/web/20170603045917/http://vasc.ri.cmu.edu:80/old_help/Programming/Literate/literate.html)
+[^fn:2]: this name was choosen, because at the time it was not in use related to computing.
+ We're dealing with history here!
+[^fn:3]: I know that Jupyter is not strictly a literate program, but it's close enough. \ No newline at end of file
diff --git a/content/emacs/moving-my-rss-reading-to-emacs-with-elfeed.md b/content/emacs/moving-my-rss-reading-to-emacs-with-elfeed.md
index a6925c2..f923ab5 100644
--- a/content/emacs/moving-my-rss-reading-to-emacs-with-elfeed.md
+++ b/content/emacs/moving-my-rss-reading-to-emacs-with-elfeed.md
@@ -4,11 +4,11 @@ author = ["Michał Sapka"]
date = 2023-05-19T23:00:00+02:00
categories = ["emacs"]
draft = false
-weight = 2002
+weight = 2003
abstract = "Setting up config inside an org file"
[menu]
[menu.emacs-guides]
- weight = 2002
+ weight = 2003
identifier = "elfeed"
name = "Following RSS with Elfeed"
+++
diff --git a/content/emacs/notmuch.md b/content/emacs/notmuch.md
index f7a32e1..0a7cc29 100644
--- a/content/emacs/notmuch.md
+++ b/content/emacs/notmuch.md
@@ -4,11 +4,11 @@ author = ["Michał Sapka"]
date = 2023-07-03T23:00:00+02:00
categories = ["emacs"]
draft = false
-weight = 2004
+weight = 2005
abstract = "My email based workflow for GitHub Pull Review Requests"
[menu]
[menu.emacs-guides]
- weight = 2004
+ weight = 2005
identifier = "managing-email-with-notmuch-and-emacs"
name = "Reading and automating email using Notmuch"
+++
diff --git a/content/me/contact.md b/content/me/contact.md
index 5720630..ed7bc23 100644
--- a/content/me/contact.md
+++ b/content/me/contact.md
@@ -1,5 +1,5 @@
---
-title: "GPG key"
+title: "Contact"
category:
- me
- update
@@ -7,7 +7,15 @@ abstract: Ways to contact me
date: 2023-11-30T21:52:39+01:00
draft: false
---
-### GPG keys
+
+## Contact
+
+I try not use social media except for YouTube. Therefore, you won't find me on Twitter, TikTok.
+
+**Email**: [contact@michal.sapka.me](mailto:contact@michal.sapka.me)
+**Mastodon**: [https://emacs.ch/@ms](https://emacs.ch/@ms)
+
+## GPG keys
If you want, you can use my GPG key to validate signature (all emails from me should be signed) or to encrypt a message.
You can find the key [here](/mms.gpg).
diff --git a/layouts/_default/index.html b/layouts/_default/index.html
index 4df8057..7733a2c 100644
--- a/layouts/_default/index.html
+++ b/layouts/_default/index.html
@@ -2,6 +2,19 @@
<h2>About</h2>
Hey! I'm Michał Sapka, a computer programmer living in Kraków, Poland. This website is not dedicated to any particular one thing. Instead, I write whatever interests me most at the moment. No content here is auto-generated, so any bugs, problems, or controversies are entirely on me!
+<br><br>
+<nav class="personal">
+ <a href="/me/contact/">Contact</a> //
+ <a href="/me/uses/">Uses<a> //
+ <a href="/about/">About<a> //
+ <a href="/links/">Links<a>
+</nav>
+<div>
+ <a href="https://nonbot.org/pledged/view/9b37caf2-57c1-4934-9bea-69c54eb46452" target="_blank">
+ <img style="height:128px;margin-top:10px;margin-bottom:10px;" src="https://nonbot.org/images/nonbot_pledged_logo.svg" alt="Human-made Content">
+ </a>
+</div>
+
<h2>Recent updates and publications </h2>
{{ range first 10
diff --git a/static/style.css b/static/style.css
index fc3e4cb..36cc172 100644
--- a/static/style.css
+++ b/static/style.css
@@ -304,6 +304,15 @@ article.article-abstract-list-item > a > aside {
/* article_list_end */
+/* index_start */
+nav.personal {
+}
+nav.personal > a {
+ font-weight: bold;
+}
+
+/* index_end */
+
/* legacy_code_start */
/* ---------- Main */