#+TITLE: How I Internet
#+SUBTITLE: Some unexpected consequences of self-hosting
#+AUTHOR: Yann Esposito
#+EMAIL: yann@esposito.host
#+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: 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]
- Enhance not only publishing experience but consumption of Internet
  + read Digital Minimalism[fn:dm]
  + Control notifications
  + Control real-time interactions
#+end_notes

The way we use Internet as changed drastically in a few years.
A popular meme about it states:

#+begin_quote
- toilet ⇒ 5min
- toilet + smarphone ⇒ 55min
#+end_quote

The book Digital Minimalism[fn:dm] is really insightful on the subject.
In particular the apparition of attention grabbing features that target our
"social brain".

One solution to protect ourselves from the problem generated by these
platforms would be to get rid of them.
But those platforms are useful.

My current[fn:1] personal solution is to keep the useful features of these platforms while
minimizing my exposition to most /anti-features/.
Everything starts by how I produce content.
It then affects how I consume Internet.

[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
[fn:1] Writing this article helped me to improve a lot my workflow, and
I will continue to make my Internet usage evolve for a long time.

* Producing
:PROPERTIES:
:CUSTOM_ID: producing
:END:

I self-host many services.
I control my data, and then I broadcast those info to different platforms.
This is called POSSE[fn:posse].

** Articles: self-hosted blog
:PROPERTIES:
:CUSTOM_ID: self-hosting
:END:

First thing the classical /blog/.

It is more and more common now, to simply use micro-blogging, or commenting.
I think blog article format is important.
It is a longer form than a comment or a tweet.
But in the same time, it is not necessary to work on it as hard as for a
journal article.

I wrote an [[file:new-blog.org][article]] that explain the technical details behind my blog.
It also describes how I try to make it /respectful/.

To self-host anything, you should buy a domain name, and configure you DNS
correctly.
That is certainly the biggest blocker for non technical people.

** Code: Git Broadcast
:PROPERTIES:
:CUSTOM_ID: git-broadcast
:END:

I self-host the code of my open-source projects.
As Github is the de-facto developer social network, it is easier to find
contributor on Github than on your self-hosted repository.

Thus I sync my repositories between my self-hosted instance and GitHub.
If something goes wrong with Github, I could easily switch to my self
hosted repositories only.

This is how I configured my git repos to push to multiple URLs:

#+begin_src
git remote set-url origin --push --add <remote-url>
git remote set-url origin --push --add <another-remote-url>
#+end_src

** Bookmarks: Espial
:PROPERTIES:
:CUSTOM_ID: espial
:END:
I also wanted a tool to keep track of web pages I like and might want to
keep track of.
For that, I self-host [[https://espial.esy.fun/u:yogsototh][espial]][fn:espial]; an open-source, web-based
bookmarking server.

It is a very easy to install, this is a single binary.
Your bookmark are kept in a single sqlite file.

This is perfect if you want to keep a lot of bookmarks some private some
public.
But as well as I use espial I plan (I haven't done it yet) to synchronize
my bookmark from espial[fn:espial] to pinboard[fn:pinboard].

** Notes: Espial
:PROPERTIES:
:CUSTOM_ID: notes--espial
:END:
Another feature provided by espial[fn:espial] is the ability to save [[https://espial.esy.fun/u:yogsototh/notes][notes]].

You can generate public or private notes.
I intend to use those notes for my "micro-blogging" needs.
Useful, for just making some short remark without investing in a full blog
post.

** RSS for articles, bookmarks, notes
:PROPERTIES:
:CUSTOM_ID: rss
:END:
It is important for me to provide RSS feeds.
People should know when I update my content.

So my blog, bookmarks and note generate RSS feeds[fn:espialpr].

[fn:espialpr] [[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:

With those RSS, it is then quite natural to syndicate elsewhere.
For that I use node-red[fn:node-red].

This is a web-based tool that make it easy to write /flows/.
Think about it like a super IFTTT.

To give you an example, each time I save a new public bookmark, a new blog
post, a new note, I tweet it.

* Consuming
:PROPERTIES:
:CUSTOM_ID: consuming
:END:

Since I generate my content using my own, self-made environment, it also
influenced me for the best the way I consume and interact on Internet.

Before I used to read a lot of /news/ directly from my smartphone.
Most of the time using many apps dedicated to some social networks.

The natural presentation is an infinite scroll of content, with buttons to
engage in the social network with likes/upvotes/comments etc...
Most of the time, notifications where enabled by fear of missing a comment
or any kind of interaction.

Before explaining how I consume Internet news, I like to make a short
digression:

#+begin_quote
By writing this article I realized that, I mostly consume Internet content
via *news*.
More than that, now, Internet is almost synonymous to news on the Web.
Which is only a very small part of the Internet.

Consuming news via a social networks makes you a lot more passive.
I can remember being a lot more active on the Internet just a few years
ago.

This is something to keep in mind I think.
I will certainly write an article about that in the future.
#+end_quote

Here is how I consume Internet content now.

** News
:PROPERTIES:
:CUSTOM_ID: news
:END:

My entry point to news consumption are:

- highly selected RSS sources (for example HN posts with > 500 upvotes)
- [[https://lobste.rs][lobste.rs]]
- [[https://pinboard.in/popular/][popular pinboard.in bookmarks]]
- very few sub-reddit with small volume
- [[https://laarc.io][laarc.io]]
- [[https://fermatslibrary.com][Fermat's Library newsletter]]

I plan on generating RSS from those different sources with "smart filters".
Typically number of upvote filters for lobste.rs, laarc.io, sub-reddits,
but also number of bookmarks in popular pinboard, etc...

My preferred /Internet consumption environment/ is elfeed[fn:elfeed] inside Spacemacs.
I really enjoy staying inside emacs as much as I can.
This is a clean, dense, text-oriented environment.

I also use elfeed-org[fn:elfeed-org] to organize my feeds and I also take care to remove
feeds with too much volume.
Generally we shouldn't read more than a few articles a day.

[fn:elfeed] https://github.com/skeeto/elfeed
[fn:spacemacs] http://spacemacs.org
[fn:elfeed-org] https://github.com/remyhonig/elfeed-org
** Mail
:PROPERTIES:
:CUSTOM_ID: mail
:END:
Most of my notifications go through my email.
Social network notifications are moved inside a dedicated folder and are
not directly present in my inbox.
I check my social notifications once in a while.
So if you are waiting for an answer, sorry for the late reply, it might
take a while.

** Github
:PROPERTIES:
:CUSTOM_ID: github
:END:
I still get notifications on Github because I use it a lot for my work.
But only via email and the web interface.
So even for Github, I can take a few days to react.

* Conclusion
:PROPERTIES:
:CUSTOM_ID: conclusion
:END:
I described how I control my usage of social networks.
I own my data.
I am a lot less exposed to attention grabbing techniques.

For now I'm quite happy with the system I made, and I'll certainly improve
it in the future by synchronizing more and more services between a
self-hosted one and a social-network one.

I really advice anyone with sufficient tehcnical skills to do the same.
This is really worth your time.

For other people, I know some platform intented to be self-hosted and here
to provide a bunch of services for you.
But having a self made environment also enhance greatly the experience.
And really, self-hosting is still reserved to few people.

I think we could be inspired by espial[fn:espial] to create a simple small platform to
provide those feature to most people.

- ability to blog/micro-blog and syndicate
- ability to publish securely private info to a small group of friends and family
- generate RSS feeds for different groups of people

** Federation
:PROPERTIES:
:CUSTOM_ID: federation
:END:

I think I can say a few words about federated networks like Mastodon.
Somehow, Mastodon replicates the anti-features promoted by Twitter or
Facebook.

Furthermore I don't really like some details about the federation
foundations (ActivityPub).

As an example, I wrote a commenting system that I could easily self-host.
I first intended to use it for my blog.
But after a second though, I'm not sure comments are that positive.
I prefer to edit my articles with comments that people would send to me via
other communication channel, typically, my mail.

** Anti-features
:PROPERTIES:
:CUSTOM_ID: anti-features
:END:

A last note about anti-features.
I call /anti-feature/ a feature that provides very few or no benefit for the
user but provides a lot more benefits to the platform.
Generally it is a feature just here to make you stay on the platform and
many quite talented specialists work on optimizing those.

Most anti-features share the same pattern; they use /spaced random reward/:

#+begin_notes
*Spaced Random Reward*

Typically the few first random gifts in a new downloaded game.
The main way used to /hack/ your brain, is by giving it something he likes
at a random time.
Then you start to give reward with lower and lower probability.
Your brain will then be in a /search mode/ where he will /hope/ to get
another reward by staying a bit longer in the system.
#+end_notes

- *notifications* ; they are here to grab your attention when you are away
  doing something else.
- *likes / upvotes / retweets / pokes...* ; those are also /Internet
  reward/ but are even stronger because they also target your "social brain".
  They reinforce a feeling of social approval.
  More than that, we generally fall for most psychological tricks with those
  and make our production oriented to short content, memes, etc...
- *infinite scrolling* ; make you brain want to look a bit more, because it
  creates a fear to miss something.
- *comments* ; Unlike likes or retweets, comments are a lot more useful,
  they can start a discussion. They still have two problems:
  1. Public comment are subject to spam, troll, attacks, etc...
  2. Generally comments are associated to real-time notifications, and thus
     break a slower, calmer, more respectful communication channel. We are
     not all meant to react instantaneously.
