update footer, simpler css

This commit is contained in:
Yann Esposito (Yogsototh) 2020-05-01 15:25:59 +02:00
parent 8d398cb862
commit 71c6f95ce5
Signed by untrusted user who does not match committer: yogsototh
GPG key ID: 7B19A4C650D59646
8 changed files with 209 additions and 103 deletions

View file

@ -56,7 +56,8 @@ for fic in $filelist; do
done
debug CSS: $csssize
total=$(( htmlsize + imgsize + csssize ))
sizeinfos=$(print -- "Size: $(toh $total) (HTML: $(toh $htmlsize), CSS: $(toh $csssize), IMG: $(toh $imgsize))")
# the space is important before the toh total
sizeinfos=$(print -- " $(toh $total) (HTML: $(toh $htmlsize), CSS: $(toh $csssize), IMG: $(toh $imgsize))")
print -- $sizeinfos
perl -pi -e 's#(<div class="?web-file-size"?>)[^<]*(</div>)#$1'"$sizeinfos"'$2#' $fic
done

View file

@ -108,6 +108,14 @@
(apply 'concat
(mapcar 'rand-obfs txt)))
(defun keywords-to-html (keywords)
(let ((keywords (split-string keywords ",\s*")))
(format " <span class=\"keywords\">%s</span>"
(mapconcat (lambda (k)
(format "<span class=\"keyword\">#%s</span>" k))
(cl-sort keywords 'string-lessp :key 'downcase)
" "))))
(defun org-blog-postamble (info)
"Post-amble for whole blog."
(concat
@ -117,33 +125,61 @@
;; (format "<a href=\"https://comments.esy.fun/slug/%s\">comment</a>"
;; (url-hexify-string url)))
"<footer>"
(when-let ((author (get-from-info info :author)))
(if-let ((email (plist-get info :email)))
(let* ((obfs-email (obfuscate-html email))
(obfs-author (obfuscate-html author))
(obfs-title (obfuscate-html (get-from-info info :title)))
(full-email (format "%s &lt;%s&gt;" obfs-author obfs-email)))
(format "<div class=\"author\">Author: <a href=\"%s%s%s%s\">%s</a></div>"
(obfuscate-html "mailto:")
full-email
(obfuscate-html "?subject=yblog: ")
obfs-title
full-email))
(format "<div class=\"author\">Author: %s</div>" author)))
(when-let ((date (get-from-info info :date)))
(format "<div class=\"date\">Created: %s (%s)</div>" date (y-date date)))
(when-let ((keywords (plist-get info :keywords)))
(format "<div class=\"keywords\">Keywords: <code>%s</code></div>" keywords))
"<div class=\"rss\"><a rel=\"alternate\" type=\"application/rss+xml\" href=\"/rss.xml\">RSS</a>: <a href=\"https://validator.w3.org/feed/check.cgi?url=https%3A%2F%2Fher.esy.fun%2Frss.xml\">Valid RSS</a></div>"
(format "<div class=\"date\">Generated: %s</div>"
(format-time-string "%Y-%m-%d %H:%M:%S"))
"<div class=\"web-file-size\">Size: XXK (HTML: XXK, CSS: XXK, IMG: XXK)</div>"
(format (concat "<div class=\"creator\"> Generated with "
"<a href=\"https://www.gnu.org/software/emacs/\" target=\"_blank\" rel=\"noopener noreferrer\">Emacs %s</a>, "
"<a href=\"http://spacemacs.org\" target=\"_blank\" rel=\"noopener noreferrer\">Spacemacs %s</a>, "
"<a href=\"http://orgmode.org\" target=\"_blank\" rel=\"noopener noreferrer\">Org Mode %s</a>"
"</div>")
emacs-version spacemacs-version org-version)
(let* ((author (when-let ((author (get-from-info info :author)))
(if-let ((email (plist-get info :email)))
(let* ((obfs-email (obfuscate-html email))
(obfs-author (obfuscate-html author))
(obfs-title (obfuscate-html (get-from-info info :title)))
(full-email (format "%s &lt;%s&gt;" obfs-author obfs-email)))
(format "<span class=\"author\"><a href=\"%s%s%s%s\">%s</a></span>"
(obfuscate-html "mailto:")
full-email
(obfuscate-html "?subject=yblog: ")
obfs-title
full-email))
(format "<span class=\"author\">%s</span>" author))))
(date (when-let ((date (get-from-info info :date)))
(format "<div class=\"date\">Created: %s (%s)</div>" date (y-date date))))
(keywords (when-let ((keywords (plist-get info :keywords)))
(keywords-to-html keywords)))
(rss
(concat
"<div class=\"rss\">"
"<a rel=\"alternate\""
" type=\"application/rss+xml\""
" href=\"/rss.xml\">"
"RSS"
"</a>"
" (<a href=\"https://validator.w3.org/feed/check.cgi?url=https%3A%2F%2Fher.esy.fun%2Frss.xml\">"
" validate</a>)"
"</div>"))
(generated-date
(format "<div class=\"date\">%s</div>"
(format-time-string "%Y-%m-%d %H:%M:%S")))
(size
"<div class=\"web-file-size\">XXK (HTML: XXK, CSS: XXK, IMG: XXK)</div>")
(generated-with
(format (concat "<div class=\"creator\">"
"<a href=\"https://www.gnu.org/software/emacs/\" target=\"_blank\" rel=\"noopener noreferrer\">Emacs %s</a>, "
"<a href=\"http://spacemacs.org\" target=\"_blank\" rel=\"noopener noreferrer\">Spacemacs %s</a>, "
"<a href=\"http://orgmode.org\" target=\"_blank\" rel=\"noopener noreferrer\">Org Mode %s</a>"
"</div>")
emacs-version spacemacs-version org-version)))
(concat
"<table>"
(mapconcat (lambda (entry)
(when (cdr entry)
(format "<tr><td>%s</td><td>%s</td></tr>"
(car entry) (cdr entry))))
`(("Author" . ,author)
("Date" . ,date)
("Keywords" . ,keywords)
("RSS" . ,rss)
("Size" . ,size)
("Generated" . ,generated-date)
("Generated with" . ,generated-with))
" ")
"</table>"))
"</footer>"
(menu '("<a href=\"#preamble\">↑ Top ↑</a>"))
"</div>"))
@ -168,19 +204,16 @@
(when (string-match "posts/.*" entry)
(let* ((file (org-publish--expand-file-name entry project))
(title (org-publish-find-title entry project))
(date (format-time-string "%Y-%m-%d" (org-publish-find-date entry project)))
(keywords (split-string (y/get-meta file "KEYWORDS") ",\s*"))
(artdate (format-time-string "%Y-%m-%d" (org-publish-find-date entry project)))
;; (keywords (y/get-meta file "KEYWORDS"))
(description (y/get-meta file "DESCRIPTION")))
(concat
"- "
(format " [%s]" date)
(format " @@html:<span class=\"metas\">%s</span>@@: " artdate)
(format " *[[file:%s][%s]]*" file title)
(format " @@html:<div class=\"keywords\">@@%s@@html:</div>@@"
(mapconcat (lambda (k) (format "@@html:<span class=\"keyword\">@@#%s@@html:</span>@@" k))
(cl-sort keywords 'string-lessp :key 'downcase)
" "))
(format "@@html:<div class=\"description\">@@%s@@html:</div>@@" description)
(format "@@html:<br/>@@" description)))))
(format " @@html:<div class=\"description\">@@%s@@html:</div>@@" description)
(format " @@html:<div class=\"metas\">@@ ")
;; (keywords-to-html keywords)
" @@html:</div>@@\n"))))
(defun org-blog-sitemap-fn-descr (descr title list)
"Return sitemap using TITLE and LIST returned by `org-blog-sitemap-format-entry'."

Binary file not shown.

View file

@ -30,6 +30,9 @@ I try to look at my email everyday.
But sometime a few days could go without me checking them.
So I'll answer, it can just take a lot of time.
My preferred way to be contacted is via encrypted email.
This will certainly be the best way for me to notice you among notifications.
#+end_notes
[fn:dm] http://www.calnewport.com/books/digital-minimalism/
@ -39,35 +42,19 @@ So I'll answer, it can just take a lot of time.
:CUSTOM_ID: contact
:END:
- *email*: @@html: <a href="&#109;&#97;&#105;&#x6C;&#116;&#111;&#x3A;&#x79;&#x61;&#x6E;&#x6E;&#64;&#x65;&#x73;&#112;&#x6F;&#x73;&#105;&#x74;&#x6F;&#x2E;&#x68;&#x6F;&#x73;&#x74;">&#x59;&#x61;&#x6E;&#x6E;&#x20;&#x45;&#x73;&#x70;&#x6F;&#115;&#x69;&#116;&#x6F; &lt;&#x79;&#x61;&#x6E;&#x6E;&#64;&#x65;&#x73;&#112;&#x6F;&#x73;&#105;&#x74;&#x6F;&#x2E;&#x68;&#x6F;&#x73;&#x74;&gt;</a>@@
Self hosted services:
#+MACRO: pemail @@html: <a href="&#109;&#97;&#105;&#x6C;&#116;&#111;&#x3A;&#x79;&#x61;&#x6E;&#x6E;&#64;&#x65;&#x73;&#112;&#x6F;&#x73;&#105;&#x74;&#x6F;&#x2E;&#x68;&#x6F;&#x73;&#x74;">&#x59;&#x61;&#x6E;&#x6E;&#x20;&#x45;&#x73;&#x70;&#x6F;&#115;&#x69;&#116;&#x6F; &lt;&#x79;&#x61;&#x6E;&#x6E;&#64;&#x65;&#x73;&#112;&#x6F;&#x73;&#105;&#x74;&#x6F;&#x2E;&#x68;&#x6F;&#x73;&#x74;&gt;</a>@@
| programs | [[https://gitea.esy.fun/yogsototh][gitea]] |
| bookmarks | [[https://espial.esy.fun/u:yogsototh][espial public bookmarks]] |
| notes/microblog | [[https://espial.esy.fun/u:yogsototh/notes][espial public notes]] |
| email | {{{pemail}}} |
| gpg | [[file:files/publickey.txt][CB420F8005F1A662]] |
| programs | [[https://gitea.esy.fun/yogsototh][gitea]] / [[https://github.com/yogsototh][github/yogsototh]] |
| bookmarks | [[https://espial.esy.fun/u:yogsototh][espial]] / [[https://pinboard.in/u:yogsototh][pinboard/u:yogsototh]] |
| microblog | [[https://espial.esy.fun/u:yogsototh/notes][espial]] / [[https://twitter.com/yogsototh][twitter/@yogsototh]] |
| keybase | [[https://keybase.io/yogsototh][yogsototh]] |
| lobste.rs | [[https://lobste.rs/u/yogsototh][/u/yogsototh]] |
| reddit | [[https://reddit.com/u/yogsototh][/u/yogsototh]] |
| stack overflow | [[https://stackoverflow.com/users/40569/yogsototh][yogsototh]] |
** Social Platforms
:PROPERTIES:
:CUSTOM_ID: social-platforms
:END:
| keybase | [[https://keybase.io/yogsototh][yogsototh]] |
| bookmarks | [[https://pinboard.in/u:yogsototh][u:yogsototh]] |
| lobste.rs | [[https://lobste.rs/u/yogsototh][/u/yogsototh]] |
| github | [[https://github.com/yogsototh][yogsototh]] |
| twitter | [[https://twitter.com/yogsototh][@yogsototh]] |
| reddit | [[https://reddit.com/u/yogsototh][/u/yogsototh]] |
| stack overflow | [[https://stackoverflow.com/users/40569/yogsototh][yogsototh]] |
** old websites
:PROPERTIES:
:CUSTOM_ID: old-websites
:END:
- https://yannesposito.com ✞ 2016
- http://yann.esposito.free.fr ✞ 2007
* Who am I
* Who am I?
:PROPERTIES:
:CUSTOM_ID: who-am-i
:END:
@ -79,3 +66,40 @@ In particular:
- [[http://yannesposito.com/Scratch/en/blog/Haskell-the-Hard-Way/][Learn Haskell Fast and Hard]]
- [[http://yannesposito.com/Scratch/en/blog/Yesod-tutorial-for-newbies/][Haskell Web Programming]]
- [[http://yannesposito.com/Scratch/en/blog/Category-Theory-Presentation/][Category Theory Presentation]]
** Work
:PROPERTIES:
:CUSTOM_ID: work
:END:
#+MACRO: br @@html:<br/>@@
I'm a functional programmer, working remotely for Cisco.{{{br}}}
I work in Clojure and use Haskell/Purescript during the weekends.
I am part of a full remote team.
I work on the backend and I'm particularly specialized in Authentication.
I wrote a full OAuth2 and OpenID Connect Provider in Clojure.
Right now there is no plan to make it opensource.
** Tooling
:PROPERTIES:
:CUSTOM_ID: tooling
:END:
In our programmer community, tooling is essential.
- emacs (former vim user)
- spacemacs
- org-mode / org-journal / org-roam
- magit / forge / github-review
- weechat
- weeslack
* former websites
:PROPERTIES:
:CUSTOM_ID: old-websites
:END:
- https://yannesposito.com ✞ 2016
- http://yann.esposito.free.fr ✞ 2007

View file

@ -143,7 +143,7 @@ hr {
#table-of-contents {
margin-bottom: var(--lh);
}
#postamble:before, hr:after {
hr:after {
font-family: Menlo, monospace;
text-align: center;
content: "----------------------------------------------------------";
@ -191,9 +191,6 @@ figure, .figure {
#postamble {
margin-top: var(--lh);
}
.timestamp-wrapper {
font-size: 14px;
}
.todo, .done {
font-size: 14px;
font-weight: bold;
@ -232,9 +229,6 @@ figure, .figure {
label + pre {
margin-top: 0;
}
li .keywords {
font-style: italic;
}
/* COLORS */
:root {
@ -260,7 +254,7 @@ li .keywords {
--fg0: var(--b0);
--fg: var(--b02);
--rfg: #000;
--hl: var(--o);
--hl: var(--c);
}
img {
@ -278,9 +272,6 @@ h1, h2, h3, h4, h5, h6 {
a {
color: var(--hl);
}
#content a, #content a:visited {
color: var(--rfg);
}
b, strong, i, em {
color: var(--rfg);
@ -301,22 +292,10 @@ h1:before, h2:before, h3:before, h4:before, h5:before, h6:before {
nav a, nav a:visited {
color: var(--fg);
}
li .keywords,
ol > li:before, pre::after,pre::before,hr:after, label, label a, label a:visited {
color: var(--fg0);
}
#labels label:hover,
a:hover,
a:hover *,
.metas a:hover,
#content a:hover,
#content a:hover *,
nav a:hover {
color: var(--bg);
background: var(--hl);
}
abbr { border-bottom: dashed 1px;
display: inline-block;
}

52
src/files/publickey.txt Normal file
View file

@ -0,0 +1,52 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
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
knVzm9h9eZeOhQ==
=y96G
-----END PGP PUBLIC KEY BLOCK-----

View file

@ -1,4 +1,4 @@
#+TITLE: Welcome!
#+TITLE: Yann Esposito's Website
#+KEYWORDS: programming
#+AUTHOR: Yann Esposito
#+EMAIL: yann@esposito.host
@ -20,15 +20,25 @@
</span>
</nav>@@
#+MACRO: br @@html:<br/><br/>@@
#+MACRO: br @@html:<br/>@@
#+MACRO: pemail @@html: <a href="&#109;&#97;&#105;&#x6C;&#116;&#111;&#x3A;&#x79;&#x61;&#x6E;&#x6E;&#64;&#x65;&#x73;&#112;&#x6F;&#x73;&#105;&#x74;&#x6F;&#x2E;&#x68;&#x6F;&#x73;&#x74;">&#x59;&#x61;&#x6E;&#x6E;&#x20;&#x45;&#x73;&#x70;&#x6F;&#115;&#x69;&#116;&#x6F; &lt;&#x79;&#x61;&#x6E;&#x6E;&#64;&#x65;&#x73;&#112;&#x6F;&#x73;&#105;&#x74;&#x6F;&#x2E;&#x68;&#x6F;&#x73;&#x74;&gt;</a>@@
Welcome to my personal website.
I generally talk about programming, maybe movies, or miscellaneous topics.
You can follow new articles via [[https://her.esy.fun/rss.xml][RSS]].
I also expose some of my presentations here.
I'm a functional programmer, working remotely for Cisco.{{{br}}}
I work in Clojure and use Haskell/Purescript during the weekends.
- [[file:archive.org][articles]]
- [[file:slides.org][presentations]]
- [[https://gitea.esy.fun/yogsototh][I write softwares]] ([[https://github.com/yogsototh][backuped on github]]),
- [[file:archive.org][I blog]] (you can follow new articles via [[https://her.esy.fun/rss.xml][RSS]]),
- [[file:slides.org][I sometime make some presentations]]
| email | {{{pemail}}} |
| gpg | [[file:files/publickey.txt][CB420F8005F1A662]] |
| programs | [[https://gitea.esy.fun/yogsototh][gitea]] / [[https://github.com/yogsototh][github/yogsototh]] |
| bookmarks | [[https://espial.esy.fun/u:yogsototh][espial]] / [[https://pinboard.in/u:yogsototh][pinboard/u:yogsototh]] |
| microblog | [[https://espial.esy.fun/u:yogsototh/notes][espial]] / [[https://twitter.com/yogsototh][twitter/@yogsototh]] |
| keybase | [[https://keybase.io/yogsototh][yogsototh]] |
| lobste.rs | [[https://lobste.rs/u/yogsototh][/u/yogsototh]] |
| reddit | [[https://reddit.com/u/yogsototh][/u/yogsototh]] |
| stack overflow | [[https://stackoverflow.com/users/40569/yogsototh][yogsototh]] |
That website was created with the following constraints in mind by order of
priority:
@ -36,14 +46,18 @@ priority:
1. *Respect Privacy*; no tracker of any sort (no ads, no google analytics, no
referrer for all external links, etc...)
{{{br}}}
{{{br}}}
2. *Almost javascript free*; no js at all except for a single exception,
pages containing Math formulæ are displayed using mathjax.
{{{br}}}
{{{br}}}
3. *Accessibility*; should be easy to read on a text browser so people with
disabilities could easily consume it.
{{{br}}}
{{{br}}}
4. *RSS*; you should be able to get informed when I add a new blog post.
{{{br}}}
{{{br}}}
5. *Frugal*; try to minimize the resources needed to visit my website; no
javascript, no web-font, not too much CSS magic, not much images or really
compressed one.

View file

@ -22,13 +22,16 @@
* English
- [2018-10-25 Thu] [[file:slides/git-project-manager.org][Git Project Manager]] is a talk I made for the "Commission Open Source"
about how to gain back autonomy with git by providing most features
Github propose just with a few conventions. I even written a tool to help
manage issues, code review, git hosting, etc...
@@html:<span class="metas">2018-10-25</span>@@: *[[file:slides/git-project-manager.org][Git Project Manager]]*
This is a talk I made for the "Commission Open Source" about how to gain
back autonomy with git by providing most features Github propose just with
a few conventions.
I even written a tool to help manage issues, code review, git hosting,
etc...
* French
- [2018-03-15 Thu]
[[file:slides/Intro-to-FP-with-Haskell.org][Introduction à la programmation fonctionnelle avec Haskell]]
is a French talk introducing Functional programming concept with Haskell.
@@html:<span class="metas">2018-03-15</span>@@: *[[file:slides/Intro-to-FP-with-Haskell.org][Introduction à la programmation fonctionnelle avec Haskell]]*
A talk in French introducing Functional programming concept with Haskell.