2019-09-16 09:42:49 +00:00
|
|
|
#+TITLE: How I Internet
|
2019-09-27 14:43:43 +00:00
|
|
|
#+SUBTITLE: Some unexpected consequences of self-hosting
|
2019-09-16 09:42:49 +00:00
|
|
|
#+AUTHOR: Yann Esposito
|
|
|
|
#+EMAIL: yann@esposito.host
|
2019-09-23 08:01:34 +00:00
|
|
|
#+DATE: [2019-09-23 Mon]
|
2019-09-16 09:42:49 +00:00
|
|
|
#+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
|
2019-09-23 08:01:34 +00:00
|
|
|
TL;DR: Self-hosting is not only about controlling your data, it also influences
|
|
|
|
how you consume Internet for the best.
|
2019-09-16 09:42:49 +00:00
|
|
|
|
|
|
|
- I /POSSE[fn:posse]/; Publish Own Site, Syndicate Elsewhere:
|
2019-09-27 14:43:43 +00:00
|
|
|
+ I own my data, I self-host my blog, notes, my repositories, my bookmarks, etc...
|
2019-09-16 09:42:49 +00:00
|
|
|
+ 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]
|
2019-09-23 08:01:34 +00:00
|
|
|
- Enhance not only publishing experience but consumption of Internet
|
|
|
|
+ read Digital Minimalism[fn:dm]
|
|
|
|
+ Control notifications
|
|
|
|
+ Control real-time interactions
|
2019-09-16 09:42:49 +00:00
|
|
|
#+end_notes
|
|
|
|
|
2019-09-25 10:11:24 +00:00
|
|
|
The way we use Internet as changed drastically in a few years.
|
2019-09-25 13:36:52 +00:00
|
|
|
A popular meme about it states:
|
2019-09-25 10:11:24 +00:00
|
|
|
|
2019-09-25 13:36:52 +00:00
|
|
|
#+begin_quote
|
|
|
|
- toilet ⇒ 5min
|
|
|
|
- toilet + smarphone ⇒ 55min
|
|
|
|
#+end_quote
|
2019-09-23 08:01:34 +00:00
|
|
|
|
2019-09-25 14:31:47 +00:00
|
|
|
The book Digital Minimalism[fn:dm] is really insightful on the subject.
|
2019-09-27 13:55:58 +00:00
|
|
|
In particular the apparition of attention grabbing features that target our
|
|
|
|
"social brain".
|
2019-09-23 08:01:34 +00:00
|
|
|
|
2019-09-26 10:54:35 +00:00
|
|
|
One solution to protect ourselves from the problem generated by these
|
|
|
|
platforms would be to get rid of them.
|
|
|
|
But those platforms are useful.
|
2019-09-25 13:36:52 +00:00
|
|
|
|
2019-09-26 10:54:35 +00:00
|
|
|
My current[fn:1] personal solution is to keep the useful features of these platforms while
|
2019-09-25 13:36:52 +00:00
|
|
|
minimizing my exposition to most /anti-features/.
|
2019-09-26 10:54:35 +00:00
|
|
|
Everything starts by how I produce content.
|
|
|
|
It then affects how I consume Internet.
|
2019-09-23 08:01:34 +00:00
|
|
|
|
2019-09-19 21:36:20 +00:00
|
|
|
[fn:posse] https://indieweb.org/POSSE
|
2019-09-16 09:42:49 +00:00
|
|
|
[fn:dm] http://www.calnewport.com/books/digital-minimalism/
|
2019-09-19 21:36:20 +00:00
|
|
|
[fn:espial] https://github.com/jonschoning/espial
|
|
|
|
[fn:node-red] https://nodered.org
|
|
|
|
[fn:pinboard] https://pinboard.in
|
2019-09-26 10:54:35 +00:00
|
|
|
[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.
|
2019-09-16 09:42:49 +00:00
|
|
|
|
2019-09-23 08:01:34 +00:00
|
|
|
* Producing
|
|
|
|
:PROPERTIES:
|
|
|
|
:CUSTOM_ID: producing
|
|
|
|
:END:
|
|
|
|
|
2019-09-27 14:43:43 +00:00
|
|
|
I self-host many services.
|
2019-09-25 08:19:30 +00:00
|
|
|
I control my data, and then I broadcast those info to different platforms.
|
2019-09-25 13:36:52 +00:00
|
|
|
This is called POSSE[fn:posse].
|
2019-09-23 08:01:34 +00:00
|
|
|
|
2019-09-27 14:43:43 +00:00
|
|
|
** Articles: self-hosted blog
|
2019-09-23 08:01:34 +00:00
|
|
|
:PROPERTIES:
|
|
|
|
:CUSTOM_ID: self-hosting
|
|
|
|
:END:
|
|
|
|
|
2019-09-25 13:36:52 +00:00
|
|
|
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.
|
2019-09-23 08:01:34 +00:00
|
|
|
|
2019-09-25 08:19:30 +00:00
|
|
|
I wrote an [[file:new-blog.org][article]] that explain the technical details behind my blog.
|
2019-09-25 13:36:52 +00:00
|
|
|
It also describes how I try to make it /respectful/.
|
2019-09-23 08:01:34 +00:00
|
|
|
|
2019-09-27 14:43:43 +00:00
|
|
|
To self-host anything, you should buy a domain name, and configure you DNS
|
2019-09-25 13:36:52 +00:00
|
|
|
correctly.
|
|
|
|
That is certainly the biggest blocker for non technical people.
|
2019-09-23 08:01:34 +00:00
|
|
|
|
|
|
|
** Code: Git Broadcast
|
|
|
|
:PROPERTIES:
|
|
|
|
:CUSTOM_ID: git-broadcast
|
|
|
|
:END:
|
|
|
|
|
2019-09-25 13:36:52 +00:00
|
|
|
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.
|
2019-09-23 08:01:34 +00:00
|
|
|
|
2019-09-25 13:36:52 +00:00
|
|
|
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.
|
2019-09-23 08:01:34 +00:00
|
|
|
|
2019-09-25 13:36:52 +00:00
|
|
|
This is how I configured my git repos to push to multiple URLs:
|
2019-09-23 08:01:34 +00:00
|
|
|
|
|
|
|
#+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:
|
2019-09-25 13:36:52 +00:00
|
|
|
I also wanted a tool to keep track of web pages I like and might want to
|
|
|
|
keep track of.
|
2019-09-27 14:43:43 +00:00
|
|
|
For that, I self-host [[https://espial.esy.fun/u:yogsototh][espial]][fn:espial]; an open-source, web-based
|
2019-09-25 13:36:52 +00:00
|
|
|
bookmarking server.
|
2019-09-25 08:19:30 +00:00
|
|
|
|
|
|
|
It is a very easy to install, this is a single binary.
|
|
|
|
Your bookmark are kept in a single sqlite file.
|
|
|
|
|
2019-09-23 08:01:34 +00:00
|
|
|
This is perfect if you want to keep a lot of bookmarks some private some
|
2019-09-25 08:19:30 +00:00
|
|
|
public.
|
2019-09-25 13:36:52 +00:00
|
|
|
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].
|
2019-09-23 08:01:34 +00:00
|
|
|
|
|
|
|
** Notes: Espial
|
|
|
|
:PROPERTIES:
|
|
|
|
:CUSTOM_ID: notes--espial
|
|
|
|
:END:
|
2019-09-25 13:36:52 +00:00
|
|
|
Another feature provided by espial[fn:espial] is the ability to save [[https://espial.esy.fun/u:yogsototh/notes][notes]].
|
2019-09-23 08:01:34 +00:00
|
|
|
|
2019-09-25 08:19:30 +00:00
|
|
|
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.
|
2019-09-23 08:01:34 +00:00
|
|
|
|
|
|
|
** RSS for articles, bookmarks, notes
|
|
|
|
:PROPERTIES:
|
|
|
|
:CUSTOM_ID: rss
|
|
|
|
:END:
|
2019-09-25 08:19:30 +00:00
|
|
|
It is important for me to provide RSS feeds.
|
|
|
|
People should know when I update my content.
|
2019-09-23 08:01:34 +00:00
|
|
|
|
2019-09-25 08:19:30 +00:00
|
|
|
So my blog, bookmarks and note generate RSS feeds[fn:espialpr].
|
2019-09-23 08:01:34 +00:00
|
|
|
|
2019-09-25 08:19:30 +00:00
|
|
|
[fn:espialpr] [[https://github.com/jonschoning/espial][espial]] is written in Haskell, and I made a few pull requests to add RSS
|
2019-09-23 08:01:34 +00:00
|
|
|
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:
|
2019-09-16 09:42:49 +00:00
|
|
|
|
2019-09-25 08:19:30 +00:00
|
|
|
With those RSS, it is then quite natural to syndicate elsewhere.
|
2019-09-25 13:36:52 +00:00
|
|
|
For that I use node-red[fn:node-red].
|
2019-09-20 13:05:56 +00:00
|
|
|
|
2019-09-25 08:19:30 +00:00
|
|
|
This is a web-based tool that make it easy to write /flows/.
|
|
|
|
Think about it like a super IFTTT.
|
2019-09-20 13:05:56 +00:00
|
|
|
|
2019-09-25 08:19:30 +00:00
|
|
|
To give you an example, each time I save a new public bookmark, a new blog
|
|
|
|
post, a new note, I tweet it.
|
2019-09-25 13:36:52 +00:00
|
|
|
|
2019-09-20 13:05:56 +00:00
|
|
|
* Consuming
|
|
|
|
:PROPERTIES:
|
|
|
|
:CUSTOM_ID: consuming
|
|
|
|
:END:
|
|
|
|
|
2019-09-25 13:36:52 +00:00
|
|
|
Since I generate my content using my own, self-made environment, it also
|
2019-09-26 10:54:35 +00:00
|
|
|
influenced me for the best the way I consume and interact on Internet.
|
2019-09-25 08:19:30 +00:00
|
|
|
|
2019-09-26 10:54:35 +00:00
|
|
|
Before I used to read a lot of /news/ directly from my smartphone.
|
2019-09-25 13:36:52 +00:00
|
|
|
Most of the time using many apps dedicated to some social networks.
|
2019-09-25 08:19:30 +00:00
|
|
|
|
|
|
|
The natural presentation is an infinite scroll of content, with buttons to
|
|
|
|
engage in the social network with likes/upvotes/comments etc...
|
2019-09-25 13:36:52 +00:00
|
|
|
Most of the time, notifications where enabled by fear of missing a comment
|
|
|
|
or any kind of interaction.
|
2019-09-20 13:05:56 +00:00
|
|
|
|
2019-09-25 08:19:30 +00:00
|
|
|
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*.
|
2019-09-26 10:54:35 +00:00
|
|
|
More than that, now, Internet is almost synonymous to news on the Web.
|
2019-09-25 08:19:30 +00:00
|
|
|
Which is only a very small part of the Internet.
|
|
|
|
|
2019-09-25 13:36:52 +00:00
|
|
|
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.
|
2019-09-25 08:19:30 +00:00
|
|
|
|
|
|
|
This is something to keep in mind I think.
|
2019-09-26 10:54:35 +00:00
|
|
|
I will certainly write an article about that in the future.
|
2019-09-25 08:19:30 +00:00
|
|
|
#+end_quote
|
|
|
|
|
2019-09-25 13:36:52 +00:00
|
|
|
Here is how I consume Internet content now.
|
|
|
|
|
|
|
|
** News
|
|
|
|
:PROPERTIES:
|
|
|
|
:CUSTOM_ID: news
|
|
|
|
:END:
|
|
|
|
|
|
|
|
My entry point to news consumption are:
|
2019-09-20 13:05:56 +00:00
|
|
|
|
|
|
|
- highly selected RSS sources (for example HN posts with > 500 upvotes)
|
|
|
|
- [[https://lobste.rs][lobste.rs]]
|
|
|
|
- [[https://pinboard.in/popular/][popular pinboard.in bookmarks]]
|
2019-09-25 08:19:30 +00:00
|
|
|
- very few sub-reddit with small volume
|
2019-09-20 13:05:56 +00:00
|
|
|
- [[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...
|
|
|
|
|
2019-09-25 13:36:52 +00:00
|
|
|
My preferred /Internet consumption environment/ is elfeed[fn:elfeed] inside Spacemacs.
|
2019-09-20 13:05:56 +00:00
|
|
|
I really enjoy staying inside emacs as much as I can.
|
|
|
|
This is a clean, dense, text-oriented environment.
|
|
|
|
|
2019-09-25 13:36:52 +00:00
|
|
|
I also use elfeed-org[fn:elfeed-org] to organize my feeds and I also take care to remove
|
2019-09-20 13:05:56 +00:00
|
|
|
feeds with too much volume.
|
|
|
|
Generally we shouldn't read more than a few articles a day.
|
2019-09-25 13:36:52 +00:00
|
|
|
|
|
|
|
[fn:elfeed] https://github.com/skeeto/elfeed
|
|
|
|
[fn:spacemacs] http://spacemacs.org
|
|
|
|
[fn:elfeed-org] https://github.com/remyhonig/elfeed-org
|
2019-09-20 13:05:56 +00:00
|
|
|
** Mail
|
|
|
|
:PROPERTIES:
|
|
|
|
:CUSTOM_ID: mail
|
|
|
|
:END:
|
2019-09-25 08:19:30 +00:00
|
|
|
Most of my notifications go through my email.
|
2019-09-25 13:36:52 +00:00
|
|
|
Social network notifications are moved inside a dedicated folder and are
|
|
|
|
not directly present in my inbox.
|
2019-09-20 13:05:56 +00:00
|
|
|
I check my social notifications once in a while.
|
2019-09-25 08:19:30 +00:00
|
|
|
So if you are waiting for an answer, sorry for the late reply, it might
|
|
|
|
take a while.
|
2019-09-20 13:05:56 +00:00
|
|
|
|
|
|
|
** Github
|
|
|
|
:PROPERTIES:
|
|
|
|
:CUSTOM_ID: github
|
|
|
|
:END:
|
|
|
|
I still get notifications on Github because I use it a lot for my work.
|
2019-09-25 08:19:30 +00:00
|
|
|
But only via email and the web interface.
|
2019-09-20 13:05:56 +00:00
|
|
|
So even for Github, I can take a few days to react.
|
2019-09-16 09:42:49 +00:00
|
|
|
|
2019-09-19 21:36:20 +00:00
|
|
|
* Conclusion
|
|
|
|
:PROPERTIES:
|
|
|
|
:CUSTOM_ID: conclusion
|
|
|
|
:END:
|
2019-09-25 13:36:52 +00:00
|
|
|
I described how I control my usage of social networks.
|
|
|
|
I own my data.
|
|
|
|
I am a lot less exposed to attention grabbing techniques.
|
2019-09-19 21:36:20 +00:00
|
|
|
|
2019-09-25 13:36:52 +00:00
|
|
|
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.
|
2019-09-19 21:36:20 +00:00
|
|
|
|
2019-09-25 13:36:52 +00:00
|
|
|
I really advice anyone with sufficient tehcnical skills to do the same.
|
|
|
|
This is really worth your time.
|
2019-09-19 21:36:20 +00:00
|
|
|
|
2019-09-25 13:36:52 +00:00
|
|
|
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.
|
2019-09-19 21:36:20 +00:00
|
|
|
|
2019-09-25 08:19:30 +00:00
|
|
|
I think we could be inspired by espial[fn:espial] to create a simple small platform to
|
2019-09-19 21:36:20 +00:00
|
|
|
provide those feature to most people.
|
|
|
|
|
2019-09-25 08:19:30 +00:00
|
|
|
- ability to blog/micro-blog and syndicate
|
|
|
|
- ability to publish securely private info to a small group of friends and family
|
2019-09-26 10:54:35 +00:00
|
|
|
- generate RSS feeds for different groups of people
|
2019-09-19 21:36:20 +00:00
|
|
|
|
2019-09-25 13:36:52 +00:00
|
|
|
** Federation
|
|
|
|
:PROPERTIES:
|
|
|
|
:CUSTOM_ID: federation
|
|
|
|
:END:
|
|
|
|
|
2019-09-27 14:43:43 +00:00
|
|
|
I think I can say a few words about federated networks like Mastodon.
|
|
|
|
Somehow, Mastodon replicates the anti-features promoted by Twitter or
|
2019-09-25 13:36:52 +00:00
|
|
|
Facebook.
|
|
|
|
|
2019-09-27 14:43:43 +00:00
|
|
|
Furthermore I don't really like some details about the federation
|
2019-09-25 13:36:52 +00:00
|
|
|
foundations (ActivityPub).
|
2019-09-20 13:05:56 +00:00
|
|
|
|
2019-09-27 14:43:43 +00:00
|
|
|
As an example, I wrote a commenting system that I could easily self-host.
|
|
|
|
I first intended to use it for my blog.
|
2019-09-25 13:36:52 +00:00
|
|
|
But after a second though, I'm not sure comments are that positive.
|
2019-09-27 14:43:43 +00:00
|
|
|
I prefer to edit my articles with comments that people would send to me via
|
|
|
|
other communication channel, typically, my mail.
|
2019-09-19 21:36:20 +00:00
|
|
|
|
2019-09-25 08:19:30 +00:00
|
|
|
** Anti-features
|
|
|
|
:PROPERTIES:
|
|
|
|
:CUSTOM_ID: anti-features
|
|
|
|
:END:
|
|
|
|
|
2019-09-25 13:36:52 +00:00
|
|
|
A last note about anti-features.
|
2019-09-26 10:54:35 +00:00
|
|
|
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.
|
2019-09-25 13:36:52 +00:00
|
|
|
Generally it is a feature just here to make you stay on the platform and
|
2019-09-26 10:54:35 +00:00
|
|
|
many quite talented specialists work on optimizing those.
|
2019-09-25 13:36:52 +00:00
|
|
|
|
|
|
|
Most anti-features share the same pattern; they use /spaced random reward/:
|
2019-09-25 08:19:30 +00:00
|
|
|
|
|
|
|
#+begin_notes
|
|
|
|
*Spaced Random Reward*
|
|
|
|
|
2019-09-25 13:36:52 +00:00
|
|
|
Typically the few first random gifts in a new downloaded game.
|
2019-09-25 08:19:30 +00:00
|
|
|
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
|
2019-09-25 14:31:47 +00:00
|
|
|
creates a fear to miss something.
|
2019-09-26 10:54:35 +00:00
|
|
|
- *comments* ; Unlike likes or retweets, comments are a lot more useful,
|
2019-09-25 08:19:30 +00:00
|
|
|
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.
|