diff --git a/project.el b/project.el index 176b976..c661bea 100644 --- a/project.el +++ b/project.el @@ -180,23 +180,23 @@ (goto-char (point-min)) (search-forward "") (insert (mapconcat 'identity - '("" - "" - "" - "" - "" - "" + '("" + "" + "" + "" + "" + "" "
" "
" "Change theme: " - "light" - "(raw," - "modern)" + "" + "(," + ")" " / " - "dark" - "(raw," - "matrix)" + "" + "(," + ")" "
" "
" "
") diff --git a/project.el.sig b/project.el.sig index feeccee..bcfda94 100644 Binary files a/project.el.sig and b/project.el.sig differ diff --git a/src/archive.org b/src/archive.org index 41f8e76..c5d31c9 100644 --- a/src/archive.org +++ b/src/archive.org @@ -2,7 +2,7 @@ #+AUTHOR: Yann Esposito #+EMAIL: yann@esposito.host #+DESCRIPTION: Articles -- [2019-09-14] *[[file:/Users/esposito/dev/her.esy.fun/src/posts/how-i-internet.org][How I Internet]]* @@html:
@@@@html:@@#blog@@html:@@ @@html:@@#minimalism@@html:@@ @@html:@@#self-hosting@@html:@@ @@html:@@#web@@html:@@ @@html:@@#zen@@html:@@@@html:
@@@@html:
@@How I protect myself against attention grabbers and many social media anti-patterns.@@html:
@@ -- [2019-08-18] *[[file:/Users/esposito/dev/her.esy.fun/src/posts/project-el/index.org][Autoload Script by project]]* @@html:
@@@@html:@@#blog@@html:@@ @@html:@@#org-mode@@html:@@ @@html:@@#programming@@html:@@@@html:
@@@@html:
@@A script I use to load safely an eLISP file when entering a new project directory.@@html:
@@ -- [2019-08-17] *[[file:/Users/esposito/dev/her.esy.fun/src/posts/troll-2/index.org][Troll 2]]* @@html:
@@@@html:@@#movie@@html:@@@@html:
@@@@html:
@@I watched what may be the worse movie of all time and I still enjoyed greatly the show.@@html:
@@ -- [2019-08-17] *[[file:/Users/esposito/dev/her.esy.fun/src/posts/new-blog.org][New Blog]]* @@html:
@@@@html:@@#blog@@html:@@ @@html:@@#css@@html:@@ @@html:@@#org-mode@@html:@@ @@html:@@#programming@@html:@@ @@html:@@#web@@html:@@@@html:
@@@@html:
@@Meta article about how I generate this blog.@@html:
@@ \ No newline at end of file +- [2019-09-23] *[[file:/Users/yaesposi/y/her.esy.fun/src/posts/how-i-internet.org][How I Internet]]* @@html:
@@@@html:@@#blog@@html:@@ @@html:@@#minimalism@@html:@@ @@html:@@#self-hosting@@html:@@ @@html:@@#web@@html:@@ @@html:@@#zen@@html:@@@@html:
@@@@html:
@@How I protect myself against attention grabbers and many social media anti-patterns.@@html:
@@ +- [2019-08-18] *[[file:/Users/yaesposi/y/her.esy.fun/src/posts/project-el/index.org][Autoload Script by project]]* @@html:
@@@@html:@@#blog@@html:@@ @@html:@@#org-mode@@html:@@ @@html:@@#programming@@html:@@@@html:
@@@@html:
@@A script I use to load safely an eLISP file when entering a new project directory.@@html:
@@ +- [2019-08-17] *[[file:/Users/yaesposi/y/her.esy.fun/src/posts/troll-2/index.org][Troll 2]]* @@html:
@@@@html:@@#movie@@html:@@@@html:
@@@@html:
@@I watched what may be the worse movie of all time and I still enjoyed greatly the show.@@html:
@@ +- [2019-08-17] *[[file:/Users/yaesposi/y/her.esy.fun/src/posts/new-blog.org][New Blog]]* @@html:
@@@@html:@@#blog@@html:@@ @@html:@@#css@@html:@@ @@html:@@#org-mode@@html:@@ @@html:@@#programming@@html:@@ @@html:@@#web@@html:@@@@html:
@@@@html:
@@Meta article about how I generate this blog.@@html:
@@ \ No newline at end of file diff --git a/src/css/minimalist.css b/src/css/minimalist.css index 59718de..a2d26e3 100644 --- a/src/css/minimalist.css +++ b/src/css/minimalist.css @@ -214,6 +214,9 @@ navigation > a { #content:first-child { margin-top: 0; } +#postamble { + margin-top: 1em; +} .timestamp-wrapper { font-size: 12px; } @@ -312,6 +315,7 @@ navigation > a { } /* Light theme selected */ +input#light:checked ~ .main , input#light:target ~ .main { --main-background: #fefaf0; /* 0.5 lighter than #fdf6e3 */ --main-foreground: var(--base01); @@ -322,12 +326,14 @@ input#light:target ~ .main { --border-color: var(--base2); --todo-txt: #FFF; } +input#light:checked ~ #labels , input#light:target ~ #labels { background: #fefaf0; color: var(--base00); } /* Dark theme selected */ +input#dark:checked ~ .main , input#dark:target ~ .main { --main-background: var(--base03); --main-foreground: var(--base0); @@ -338,13 +344,15 @@ input#dark:target ~ .main { --border-color: var(--base02); --todo-txt: #000; } +input#dark:checked ~ #labels , input#dark:target ~ #labels { background: var(--base03); color: var(--base0); } -/* Light raw theme selected */ -input#raw:target ~ .main { +/* Light simple theme selected */ +input#simple:checked ~ .main , +input#simple:target ~ .main { --main-background: #fff; --main-foreground: #333; --second-foreground: #333; @@ -360,18 +368,34 @@ input#raw:target ~ .main { --color-h5: #333; --color-h6: #333; --color-link: var(--magenta); - font-family: monospace; + font-family: "Helvetica Neue"; + font-size: 16px; + line-height: 1.5em; } -input#raw:target ~ #labels { +input#simple:checked ~ .main .content, +input#simple:target ~ .main .content, +input#simple:checked ~ .main #content , +input#simple:target ~ .main #content { + margin: 0 auto; +} +input#simple:checked ~ #labels , +input#simple:target ~ #labels { background: #fff; color: #333; + font-family: "Helvetica Neue"; + font-size: 16px; + line-height: 1.5em; } -input#raw:target ~ .main code, -input#raw:target ~ .main pre +input#simple:checked ~ .main code, +input#simple:target ~ .main code, +input#simple:checked ~ .main pre +, +input#simple:target ~ .main pre { font-family: monospace; } /* Light modern theme selected */ +input#modern:checked ~ .main , input#modern:target ~ .main { --main-background: #fff; --main-foreground: #444; @@ -388,16 +412,21 @@ input#modern:target ~ .main { line-height: 1.5em; } +input#modern:checked ~ #labels a , input#modern:target ~ #labels a { color: #fff; } +input#modern:checked ~ .main .content, input#modern:target ~ .main .content, +input#modern:checked ~ .main #content , input#modern:target ~ .main #content { margin: 0 auto; } +input#modern:checked ~ .main blockquote:after , input#modern:target ~ .main blockquote:after { display: none; } +input#modern:checked ~ .main blockquote , input#modern:target ~ .main blockquote { font-family: "Hoefler Text", Georgia, serif; font-style: italic; @@ -405,7 +434,9 @@ input#modern:target ~ .main blockquote { line-height: 30px; border-left: solid 10px; } +input#modern:checked ~ .main h1, input#modern:target ~ .main h1, +input#modern:checked ~ .main h2 , input#modern:target ~ .main h2 { font-family: "Hoefler Text", Georgia, serif; font-style: italic; @@ -414,72 +445,98 @@ input#modern:target ~ .main h2 { margin: 1em 0; } +input#modern:checked ~ .main h3, input#modern:target ~ .main h3, +input#modern:checked ~ .main h4, input#modern:target ~ .main h4, +input#modern:checked ~ .main h5, input#modern:target ~ .main h5, +input#modern:checked ~ .main h6 , input#modern:target ~ .main h6 { font-weight: 200; font-size: 1.5em; line-height: 1.5em; margin: 1em 0; } +input#modern:checked ~ .main #preamble , input#modern:target ~ .main #preamble { border-bottom: solid 1px rgba(0,0,0,0.2); } +input#modern:checked ~ .main #postamble , input#modern:target ~ .main #postamble { border-top: solid 1px rgba(0,0,0,0.2); } +input#modern:checked ~ .main #preamble h1 , input#modern:target ~ .main #preamble h1 { font-size: 4em; line-height: 1.5em; margin: .5em 0; } +input#modern:checked ~ .main h1::before, input#modern:target ~ .main h1::before, +input#modern:checked ~ .main h2::before, input#modern:target ~ .main h2::before, +input#modern:checked ~ .main h3::before, input#modern:target ~ .main h3::before, +input#modern:checked ~ .main h4::before, input#modern:target ~ .main h4::before, +input#modern:checked ~ .main h5::before, input#modern:target ~ .main h5::before, +input#modern:checked ~ .main h6::before , input#modern:target ~ .main h6::before { content: ""; } +input#modern:checked ~ .main pre , input#modern:target ~ .main pre { font-size: 14px; line-height: 1em; border-left: solid 4px var(--soft-foreground); padding-left: 1em; } +input#modern:checked ~ .main pre::before, input#modern:target ~ .main pre::before, +input#modern:checked ~ .main pre::after , input#modern:target ~ .main pre::after { content: ""; } +input#modern:checked ~ .main #preamble, input#modern:target ~ .main #preamble, +input#modern:checked ~ .main #postamble , input#modern:target ~ .main #postamble { background-color: var(--cyan); padding: 1em 0; } +input#modern:checked ~ .main #preamble , input#modern:target ~ .main #preamble { margin-bottom: 2em; } +input#modern:checked ~ .main #postamble , input#modern:target ~ .main #postamble { margin-top: 2em; } +input#modern:checked ~ .main #postamble code , input#modern:target ~ .main #postamble code { background-color: transparent; } +input#modern:checked ~ .main #preamble *, input#modern:target ~ .main #preamble *, +input#modern:checked ~ .main #postamble * , input#modern:target ~ .main #postamble * { color: #fff; } +input#modern:checked ~ #labels , input#modern:target ~ #labels { background: var(--cyan); color: #fff; } +input#modern:checked ~ #labels .content , input#modern:target ~ #labels .content { margin: 0 auto; } -/* Dark raw theme selected */ -input#darkraw:target ~ .main { +/* Dark simple theme selected */ +input#darksimple:checked ~ .main , +input#darksimple:target ~ .main { --main-background: #000; --main-foreground: #ccc; --second-foreground: #ccc; @@ -495,18 +552,35 @@ input#darkraw:target ~ .main { --color-h5: #ccc; --color-h6: #ccc; --color-link: var(--yellow); - font-family: monospace; + font-family: "Helvetica Neue", sans-serif; + font-weight: 300; + font-size: 16px; + line-height: 1.5em; } -input#darkraw:target ~ #labels { +input#darksimple:checked ~ #labels , +input#darksimple:target ~ #labels { background: #000; color: #ccc; + font-family: "Helvetica Neue", sans-serif; + font-weight: 300; + font-size: 16px; + line-height: 1.5em; } -input#darkraw:target ~ .main code, -input#darkraw:target ~ .main pre { +input#darksimple:checked ~ .main code, +input#darksimple:target ~ .main code, +input#darksimple:checked ~ .main pre , +input#darksimple:target ~ .main pre { font-family: monospace; } +input#darksimple:checked ~ .main .content, +input#darksimple:target ~ .main .content, +input#darksimple:checked ~ .main #content , +input#darksimple:target ~ .main #content { + margin: 0 auto; +} /* Dark matrix theme selected */ +input#matrix:checked ~ .main , input#matrix:target ~ .main { --main-background: #000; --main-foreground: #0b0; @@ -525,11 +599,14 @@ input#matrix:target ~ .main { --color-link: white; font-family: monospace; } +input#matrix:checked ~ #labels , input#matrix:target ~ #labels { background: #000; color: #0b0; } +input#matrix:checked ~ .main code, input#matrix:target ~ .main code, +input#matrix:checked ~ .main pre , input#matrix:target ~ .main pre { font-family: monospace; } @@ -557,11 +634,9 @@ body > input { display:none; } .keywords { color: var(--second-foreground); - float: right; } -.keyword:hover { - cursor: pointer; - color: var(--yellow); +li .keywords { + float: right; } .main ol > li:before, ol > li:before { diff --git a/src/posts/how-i-internet.org b/src/posts/how-i-internet.org index 79ab60f..28dbece 100644 --- a/src/posts/how-i-internet.org +++ b/src/posts/how-i-internet.org @@ -1,32 +1,141 @@ #+TITLE: How I Internet -#+SUBTITLE: (POSSE) Relaxing the Internet experience +#+SUBTITLE: Self hosting other advantages #+AUTHOR: Yann Esposito #+EMAIL: yann@esposito.host -#+DATE: [2019-09-14 Sat] +#+DATE: [2019-09-23 Mon] #+KEYWORDS: blog, self-hosting, web, zen, minimalism #+DESCRIPTION: How I protect myself against attention grabbers and many social media anti-patterns. #+OPTIONS: auto-id:t #+begin_notes -TL;DR: +TL;DR: Self-hosting is not only about controlling your data, it also influences +how you consume Internet for the best. - I /POSSE[fn:posse]/; Publish Own Site, Syndicate Elsewhere: + I own my data I self host my blog, notes, my repositories, my bookmarks, etc... + I use espial[fn:espial] for self-hosted bookmarks and notes + I use note-red[fn:node-red] to publish my blogs, bookmarks and notes to twitter, sync bookmarks with pinboard[fn:pinboard] -- read Digital Minimalism[fn:dm] -- Control notifications -- Control real-time interactions +- Enhance not only publishing experience but consumption of Internet + + read Digital Minimalism[fn:dm] + + Control notifications + + Control real-time interactions #+end_notes +The way I and most people use Internet as changed drastically in a few years. +It started with social networks and smartphones. +More recently, applications started to introduce "features" targetting our +"lower brain" or "social brain". +It is not unusual to stay a lot longer on our smartphone than what we +expected. + +One solution whould be to get rid of those applications, platform. +But they provide a real benefit. +Another solution is to better control our relation with them by minimizing +our exposition to the worst features, while taking advantage of the really +useful ones. + +I describe how I try to do that myself. +It start with how I produce info, then what are the consequences on how I +consume the Internet now. + [fn:posse] https://indieweb.org/POSSE [fn:dm] http://www.calnewport.com/books/digital-minimalism/ [fn:espial] https://github.com/jonschoning/espial [fn:node-red] https://nodered.org [fn:pinboard] https://pinboard.in -* Intro +* Producing +:PROPERTIES: +:CUSTOM_ID: producing +:END: + +This is how I produce most information. +Mostly have a self hosted service on which I keep my data, then syndicate +what I want on different platforms. + +** Articles: Self hosted blog +:PROPERTIES: +:CUSTOM_ID: self-hosting +:END: +I wrote an [[file:new-blog.org][article]] sharing the details about my currentl blog platform. +I also describe how I intend to provide a respectful blog. + +Technically, this is not the simplest path, still it is really efficient. +In the end there are a lot of solutions for generating static websites. + +The harder part is about self-hosting it. +You need to buy a domain name, and configure you DNS correctly. + +This is not something tremendously hard, but don't expect to do that as +easily as registering to a private service. + +** Code: Git Broadcast +:PROPERTIES: +:CUSTOM_ID: git-broadcast +:END: + +Self hosting is not reserverd for my writing but also for the code I write +on my free time projects. + +All my public repositories push to both on my self-hosted Gitlab instance +and GitHub. +That way I host my own content, while still using to my advantages the +social feature of Github. + +Here is how you can configure your git repositories to push to multiple +urls: + +#+begin_src +git remote set-url origin --push --add +git remote set-url origin --push --add +#+end_src + +** Bookmarks: Espial +:PROPERTIES: +:CUSTOM_ID: espial +:END: +[[https://github.com/jonschoning/espial][espial]] is an open-source, web-based bookmarking server. +It is a very easy to install single binary. +This is perfect if you want to keep a lot of bookmarks some private some +publics. + +** Notes: Espial +:PROPERTIES: +:CUSTOM_ID: notes--espial +:END: + +Notes, are simply text you save, you can make them public or private. I +tend to use it as my "micro-blogging". For the time when I just want to +write a short remark and not a full blog post article. + + +** RSS for articles, bookmarks, notes +:PROPERTIES: +:CUSTOM_ID: rss +:END: +It is important for me to provide an RSS feed. +People should know when I update my blog. + +I am not fully satifisfied with the state of my curren RSS feed. +It does not contain my full articles content, nor an eay mean to filter by +keyword or category yet. + +Still this is good enough for my current usage. + +[[https://github.com/jonschoning/espial][espial]] is written in Haskell, and I made a few pull requests to add RSS +feeds of my public bookmarks as well as an RSS feed for my public notes. + +** Syndicate Elsewhere: node-red +:PROPERTIES: +:CUSTOM_ID: node-red +:END: +[[https://nodered.org][node-red]] is a tool that make it easy to write /flows/. +I use it to syndicate my self-hosted content to social media platforms. + +Each time I save a new public bookmark, a new blog post, a new note, I +tweet it. +* Introduction :PROPERTIES: :CUSTOM_ID: intro :END: @@ -63,7 +172,6 @@ If people react to this on some social media, I'll get a mail that will be put in a "social" folder. I forbid myself to constantly check this social folder. - I do not have any social media application on my phone. Everything goes through my email, filtered in some folder. I only check those notifications in my email once or two times a day. @@ -166,80 +274,6 @@ But only email and web notifications, not desktop notifications. So even for Github, I can take a few days to react. -* Producing -:PROPERTIES: -:CUSTOM_ID: producing -:END: - -Another very important aspect of Internet and the Web is the ability to -produce an output and give it to someone else far away. - -For now I only have two circles, myself and fully public. - -I will certainly endup with strategies to put intermediate circles of -publications in the future. -It is good enough for now. - -** Self Hosting -:PROPERTIES: -:CUSTOM_ID: self-hosting -:END: -A first important step for me was to self host most of my data. - -I wrote an [[file:new-blog.org][article]] sharing the details about my currentl blog platform. -I also describe how I intend to provide a respectful blog. - -** RSS -:PROPERTIES: -:CUSTOM_ID: rss -:END: -It was important for me to provide an RSS feed. -So people can know when I update my blog. -For now, I am not fully satisfied with it because my current system only -provide links but not the full content in the RSS feed. - -But this is good enough for my current usage. - -** Git Broadcast -:PROPERTIES: -:CUSTOM_ID: git-broadcast -:END: -I configured all my public repositories to be pushed both on my self-hosted -Gitlab instance and GitHub. - -That way I host my own content, while still using to my advantages the -social feature of Github. - -You can configure your git repositories to push to multiple url by: - -#+begin_src -git remote set-url origin --push --add -git remote set-url origin --push --add -#+end_src - -** Espial -:PROPERTIES: -:CUSTOM_ID: espial -:END: -[[https://github.com/jonschoning/espial][espial]] is an open-source, web-based bookmarking server. -It is a very easy to install single binary. -This is perfect if you want to self-host your bookmarks while having some publics. - -This tool is written in Haskell, and I made a few pull requests to add RSS -feeds of my public bookmarks as well as an RSS feed for my public notes. - -Notes, are simply text you save, you can make them public or private. I -tend to use it as my "micro-blogging". For the time when I just want to -write a short remark and not a full blog post article. -** node-red -:PROPERTIES: -:CUSTOM_ID: node-red -:END: -[[https://nodered.org][node-red]] is a tool that make it easy to write /flows/. -I use it to syndicate my self-hosted content to social media platforms. - -Each time I save a new public bookmark, a new blog post, a new note, I -tweet it. * Conclusion :PROPERTIES: :CUSTOM_ID: conclusion