Updated blog, css, etc..
This commit is contained in:
parent
3f37793ee6
commit
e48a30d12f
3 changed files with 188 additions and 69 deletions
|
@ -272,8 +272,9 @@ navigation > a {
|
||||||
|
|
||||||
/* --main-background: #00151b; /* 0.5 darker than #002b36; */
|
/* --main-background: #00151b; /* 0.5 darker than #002b36; */
|
||||||
--main-background: var(--base03); /* 0.5 darker than #002b36; */
|
--main-background: var(--base03); /* 0.5 darker than #002b36; */
|
||||||
--main-foreground: var(--base1);
|
--main-foreground: var(--base0);
|
||||||
--second-foreground: var(--base0);
|
--second-foreground: var(--base01);
|
||||||
|
--reveal-foreground: var(--base1);
|
||||||
--reveal-background: var(--base02);
|
--reveal-background: var(--base02);
|
||||||
--soft-foreground: var(--base01);
|
--soft-foreground: var(--base01);
|
||||||
--border-color: var(--base02);
|
--border-color: var(--base02);
|
||||||
|
@ -291,8 +292,9 @@ navigation > a {
|
||||||
@media (prefers-color-scheme: light) {
|
@media (prefers-color-scheme: light) {
|
||||||
:root {
|
:root {
|
||||||
--main-background: #fefaf0; /* 0.5 lighter than #fdf6e3 */
|
--main-background: #fefaf0; /* 0.5 lighter than #fdf6e3 */
|
||||||
--main-foreground: var(--base01);
|
--main-foreground: var(--base00);
|
||||||
--second-foreground: var(--base00);
|
--second-foreground: var(--base1);
|
||||||
|
--reveal-foreground: var(--base01);
|
||||||
--reveal-background: var(--base2);
|
--reveal-background: var(--base2);
|
||||||
--soft-foreground: var(--base1);
|
--soft-foreground: var(--base1);
|
||||||
--border-color: var(--base2);
|
--border-color: var(--base2);
|
||||||
|
@ -309,13 +311,12 @@ navigation > a {
|
||||||
font-style: italic;
|
font-style: italic;
|
||||||
}
|
}
|
||||||
|
|
||||||
body > input { display:none; }
|
|
||||||
|
|
||||||
/* Light theme selected */
|
/* Light theme selected */
|
||||||
input#light:target ~ .main {
|
input#light:target ~ .main {
|
||||||
--main-background: #fefaf0; /* 0.5 lighter than #fdf6e3 */
|
--main-background: #fefaf0; /* 0.5 lighter than #fdf6e3 */
|
||||||
--main-foreground: var(--base01);
|
--main-foreground: var(--base01);
|
||||||
--second-foreground: var(--base00);
|
--second-foreground: var(--base00);
|
||||||
|
--reveal-foreground: var(--base01);
|
||||||
--reveal-background: var(--base2);
|
--reveal-background: var(--base2);
|
||||||
--soft-foreground: var(--base1);
|
--soft-foreground: var(--base1);
|
||||||
--border-color: var(--base2);
|
--border-color: var(--base2);
|
||||||
|
@ -328,9 +329,10 @@ input#light:target ~ #labels {
|
||||||
|
|
||||||
/* Dark theme selected */
|
/* Dark theme selected */
|
||||||
input#dark:target ~ .main {
|
input#dark:target ~ .main {
|
||||||
--main-background: var(--base03); /* 0.5 darker than #002b36; */
|
--main-background: var(--base03);
|
||||||
--main-foreground: var(--base1);
|
--main-foreground: var(--base0);
|
||||||
--second-foreground: var(--base0);
|
--second-foreground: var(--base01);
|
||||||
|
--reveal-foreground: var(--base1);
|
||||||
--reveal-background: var(--base02);
|
--reveal-background: var(--base02);
|
||||||
--soft-foreground: var(--base01);
|
--soft-foreground: var(--base01);
|
||||||
--border-color: var(--base02);
|
--border-color: var(--base02);
|
||||||
|
@ -344,24 +346,25 @@ input#dark:target ~ #labels {
|
||||||
/* Light raw theme selected */
|
/* Light raw theme selected */
|
||||||
input#raw:target ~ .main {
|
input#raw:target ~ .main {
|
||||||
--main-background: #fff;
|
--main-background: #fff;
|
||||||
--main-foreground: #000;
|
--main-foreground: #333;
|
||||||
--second-foreground: #000;
|
--second-foreground: #333;
|
||||||
|
--reveal-foreground: #000;
|
||||||
--reveal-background: #fff;
|
--reveal-background: #fff;
|
||||||
--soft-foreground: #000;
|
--soft-foreground: #555;
|
||||||
--border-color: #000;
|
--border-color: #333;
|
||||||
--todo-txt: #000;
|
--todo-txt: #333;
|
||||||
--color-h1: #000;
|
--color-h1: #333;
|
||||||
--color-h2: #000;
|
--color-h2: #333;
|
||||||
--color-h3: #000;
|
--color-h3: #333;
|
||||||
--color-h4: #000;
|
--color-h4: #333;
|
||||||
--color-h5: #000;
|
--color-h5: #333;
|
||||||
--color-h6: #000;
|
--color-h6: #333;
|
||||||
--color-link: var(--magenta);
|
--color-link: var(--magenta);
|
||||||
font-family: monospace;
|
font-family: monospace;
|
||||||
}
|
}
|
||||||
input#raw:target ~ #labels {
|
input#raw:target ~ #labels {
|
||||||
background: #fff;
|
background: #fff;
|
||||||
color: #000;
|
color: #333;
|
||||||
}
|
}
|
||||||
input#raw:target ~ .main code,
|
input#raw:target ~ .main code,
|
||||||
input#raw:target ~ .main pre
|
input#raw:target ~ .main pre
|
||||||
|
@ -372,7 +375,8 @@ input#raw:target ~ .main pre
|
||||||
input#modern:target ~ .main {
|
input#modern:target ~ .main {
|
||||||
--main-background: #fff;
|
--main-background: #fff;
|
||||||
--main-foreground: #444;
|
--main-foreground: #444;
|
||||||
--second-foreground: #666;
|
--second-foreground: #aaa;
|
||||||
|
--reveal-foreground: #000;
|
||||||
--reveal-background: #eee;
|
--reveal-background: #eee;
|
||||||
--soft-foreground: #888;
|
--soft-foreground: #888;
|
||||||
--border-color: #ddd;
|
--border-color: #ddd;
|
||||||
|
@ -391,7 +395,6 @@ input#modern:target ~ .main .content,
|
||||||
input#modern:target ~ .main #content {
|
input#modern:target ~ .main #content {
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
input#modern:target ~ .main blockquote:after {
|
input#modern:target ~ .main blockquote:after {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
@ -420,9 +423,16 @@ input#modern:target ~ .main h6 {
|
||||||
line-height: 1.5em;
|
line-height: 1.5em;
|
||||||
margin: 1em 0;
|
margin: 1em 0;
|
||||||
}
|
}
|
||||||
|
input#modern:target ~ .main #preamble {
|
||||||
|
border-bottom: solid 1px rgba(0,0,0,0.2);
|
||||||
|
}
|
||||||
|
input#modern:target ~ .main #postamble {
|
||||||
|
border-top: solid 1px rgba(0,0,0,0.2);
|
||||||
|
}
|
||||||
input#modern:target ~ .main #preamble h1 {
|
input#modern:target ~ .main #preamble h1 {
|
||||||
font-size: 4em;
|
font-size: 4em;
|
||||||
line-height: 1.5em;
|
line-height: 1.5em;
|
||||||
|
margin: .5em 0;
|
||||||
}
|
}
|
||||||
input#modern:target ~ .main h1::before,
|
input#modern:target ~ .main h1::before,
|
||||||
input#modern:target ~ .main h2::before,
|
input#modern:target ~ .main h2::before,
|
||||||
|
@ -445,7 +455,7 @@ input#modern:target ~ .main pre::after {
|
||||||
input#modern:target ~ .main #preamble,
|
input#modern:target ~ .main #preamble,
|
||||||
input#modern:target ~ .main #postamble {
|
input#modern:target ~ .main #postamble {
|
||||||
background-color: var(--cyan);
|
background-color: var(--cyan);
|
||||||
padding: 2em 0;
|
padding: 1em 0;
|
||||||
}
|
}
|
||||||
input#modern:target ~ .main #preamble {
|
input#modern:target ~ .main #preamble {
|
||||||
margin-bottom: 2em;
|
margin-bottom: 2em;
|
||||||
|
@ -471,24 +481,25 @@ input#modern:target ~ #labels .content {
|
||||||
/* Dark raw theme selected */
|
/* Dark raw theme selected */
|
||||||
input#darkraw:target ~ .main {
|
input#darkraw:target ~ .main {
|
||||||
--main-background: #000;
|
--main-background: #000;
|
||||||
--main-foreground: #ddd;
|
--main-foreground: #ccc;
|
||||||
--second-foreground: #ddd;
|
--second-foreground: #ccc;
|
||||||
|
--reveal-foreground: #fff;
|
||||||
--reveal-background: #000;
|
--reveal-background: #000;
|
||||||
--soft-foreground: #ddd;
|
--soft-foreground: #ccc;
|
||||||
--border-color: #ddd;
|
--border-color: #ccc;
|
||||||
--todo-txt: #ddd;
|
--todo-txt: #ccc;
|
||||||
--color-h1: #ddd;
|
--color-h1: #ccc;
|
||||||
--color-h2: #ddd;
|
--color-h2: #ccc;
|
||||||
--color-h3: #ddd;
|
--color-h3: #ccc;
|
||||||
--color-h4: #ddd;
|
--color-h4: #ccc;
|
||||||
--color-h5: #ddd;
|
--color-h5: #ccc;
|
||||||
--color-h6: #ddd;
|
--color-h6: #ccc;
|
||||||
--color-link: var(--yellow);
|
--color-link: var(--yellow);
|
||||||
font-family: monospace;
|
font-family: monospace;
|
||||||
}
|
}
|
||||||
input#darkraw:target ~ #labels {
|
input#darkraw:target ~ #labels {
|
||||||
background: #000;
|
background: #000;
|
||||||
color: #ddd;
|
color: #ccc;
|
||||||
}
|
}
|
||||||
input#darkraw:target ~ .main code,
|
input#darkraw:target ~ .main code,
|
||||||
input#darkraw:target ~ .main pre {
|
input#darkraw:target ~ .main pre {
|
||||||
|
@ -499,10 +510,11 @@ input#darkraw:target ~ .main pre {
|
||||||
input#matrix:target ~ .main {
|
input#matrix:target ~ .main {
|
||||||
--main-background: #000;
|
--main-background: #000;
|
||||||
--main-foreground: #0b0;
|
--main-foreground: #0b0;
|
||||||
--second-foreground: #0b0;
|
--second-foreground: #080;
|
||||||
|
--reveal-foreground: #0f0;
|
||||||
--reveal-background: #000;
|
--reveal-background: #000;
|
||||||
--soft-foreground: #0b0;
|
--soft-foreground: #080;
|
||||||
--border-color: #0b0;
|
--border-color: #080;
|
||||||
--todo-txt: #0b0;
|
--todo-txt: #0b0;
|
||||||
--color-h1: #0b0;
|
--color-h1: #0b0;
|
||||||
--color-h2: #0b0;
|
--color-h2: #0b0;
|
||||||
|
@ -534,9 +546,15 @@ body,.main {
|
||||||
}
|
}
|
||||||
a, a:visited,
|
a, a:visited,
|
||||||
.main a, .main a:visited {
|
.main a, .main a:visited {
|
||||||
color: var(--second-foreground);
|
color: var(--reveal-foreground);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
b, strong, i, em {
|
||||||
|
color: var(--reveal-foreground);
|
||||||
|
}
|
||||||
|
|
||||||
|
body > input { display:none; }
|
||||||
|
|
||||||
.keywords {
|
.keywords {
|
||||||
color: var(--second-foreground);
|
color: var(--second-foreground);
|
||||||
float: right;
|
float: right;
|
||||||
|
|
21
src/demo.org
21
src/demo.org
|
@ -6,6 +6,27 @@
|
||||||
#+OPTIONS: H:5
|
#+OPTIONS: H:5
|
||||||
#+OPTIONS: auto-id:t toc:t
|
#+OPTIONS: auto-id:t toc:t
|
||||||
|
|
||||||
|
* Notes
|
||||||
|
:PROPERTIES:
|
||||||
|
:CUSTOM_ID: notes-4ff2
|
||||||
|
:END:
|
||||||
|
** Spacemacs
|
||||||
|
:PROPERTIES:
|
||||||
|
:CUSTOM_ID: spacemacs
|
||||||
|
:END:
|
||||||
|
|
||||||
|
Awesome a bit unknown commands:
|
||||||
|
|
||||||
|
- =SPC f s=: save
|
||||||
|
- =SPC f f=: create/open a file
|
||||||
|
- =SPC r l=: helm resume (start at the latest projectile-find-file for example)
|
||||||
|
- =SPC s l=: resume-last-search
|
||||||
|
- =g c c=: comment out a line
|
||||||
|
- =SPC r y=: show previous yanked things
|
||||||
|
- =SPC /=: find in all project
|
||||||
|
- =SPC *=: find word under cursor in all project
|
||||||
|
- =C-o=: Jump back
|
||||||
|
- ="ay=: to yank into register =a=, then ="ap= to paste
|
||||||
* Level 1 in org-mode
|
* Level 1 in org-mode
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
:CUSTOM_ID: level-1-in-org-mode-e308
|
:CUSTOM_ID: level-1-in-org-mode-e308
|
||||||
|
|
|
@ -18,8 +18,7 @@ I do not have any social-media platform application on my phone.
|
||||||
I almost never check social media platform except GitHub.
|
I almost never check social media platform except GitHub.
|
||||||
|
|
||||||
I check my mails once in a while.
|
I check my mails once in a while.
|
||||||
It can be a few times a day, but it is not unusual not to check my mail for
|
Sometimes a few times a day, but sometime only after a few days.
|
||||||
a few days or even an entiere week.
|
|
||||||
|
|
||||||
It is a protection against real-time notifications, and urgency feeling
|
It is a protection against real-time notifications, and urgency feeling
|
||||||
that is harmful fof most people.
|
that is harmful fof most people.
|
||||||
|
@ -38,11 +37,11 @@ TL;DR:
|
||||||
- Control real-time interactions
|
- Control real-time interactions
|
||||||
#+end_notes
|
#+end_notes
|
||||||
|
|
||||||
[fn:posse]: https://indieweb.org/POSSE
|
[fn:posse] https://indieweb.org/POSSE
|
||||||
[fn:dm] http://www.calnewport.com/books/digital-minimalism/
|
[fn:dm] http://www.calnewport.com/books/digital-minimalism/
|
||||||
[fn:espial]: https://github.com/jonschoning/espial
|
[fn:espial] https://github.com/jonschoning/espial
|
||||||
[fn:node-red]: https://nodered.org
|
[fn:node-red] https://nodered.org
|
||||||
[fn:pinboard]: https://pinboard.in
|
[fn:pinboard] https://pinboard.in
|
||||||
|
|
||||||
* Intro
|
* Intro
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
|
@ -55,7 +54,7 @@ and many social platforms are really useful but at the same can harm us.
|
||||||
|
|
||||||
The harm mostly come from social anti-pattern that are mostly hacking our
|
The harm mostly come from social anti-pattern that are mostly hacking our
|
||||||
brain.
|
brain.
|
||||||
More precisely owr lower part of the brain, the one close to the instinct
|
More precisely our lower part of the brain, the one close to the instinct
|
||||||
which is quite difficult to tame.
|
which is quite difficult to tame.
|
||||||
This is why this is the preferred target of those "brain hacks".
|
This is why this is the preferred target of those "brain hacks".
|
||||||
|
|
||||||
|
@ -67,16 +66,17 @@ Anti-features are:
|
||||||
notification or if not, generate us to check quite often if our output
|
notification or if not, generate us to check quite often if our output
|
||||||
has generated social approval or not.
|
has generated social approval or not.
|
||||||
|
|
||||||
So now, I how my own blog on my own server with my own domain name.
|
Now I control the social inputs from those social medias.
|
||||||
And I publish things, but I only check the outcome once or two times a day.
|
I receive almost no notification.
|
||||||
I receive no notification, I do not have any social media application on my
|
I do not have any social media application on my phone.
|
||||||
phone.
|
Everything goes through my email, filtered in some folder.
|
||||||
The social media "reactions" are filtered in my email, put in some
|
I only check those notifications in my email once or two times a day.
|
||||||
directory and checked once in a while (no more than twice a day, generally
|
It is not exception that I don't check those for an entier week.
|
||||||
only a few times a week).
|
|
||||||
|
|
||||||
The drawback is that it can feel rude for people not to be answered fast.
|
The main drawback is that not answering immediately to feedback can make me
|
||||||
I am sorry, but it is a protection for my sanity.
|
look like a rude person.
|
||||||
|
I am just protecting myself from realtime and sychronous social interaction
|
||||||
|
on Internet.
|
||||||
|
|
||||||
* Producing
|
* Producing
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
|
@ -98,45 +98,125 @@ do all of that for himself in less than a few hours/days.
|
||||||
I wrote an [[file:new-blog.org][article]] sharing the details about my currentl blog platform.
|
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.
|
I also describe how I intend to provide a respectful blog.
|
||||||
|
|
||||||
** TODO RSS
|
** RSS
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
:CUSTOM_ID: rss
|
:CUSTOM_ID: rss
|
||||||
:END:
|
:END:
|
||||||
Describe that it is important to provide an RSS feed as a nice standardized
|
It was important for me to provide an RSS feed.
|
||||||
root to publishing.
|
So people can follow my blog via an RSS reader.
|
||||||
|
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.
|
||||||
|
|
||||||
** TODO Git Broadcast
|
But this is good enough for posting news later.
|
||||||
|
|
||||||
|
** Git Broadcast
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
:CUSTOM_ID: git-broadcast
|
:CUSTOM_ID: git-broadcast
|
||||||
:END:
|
:END:
|
||||||
How I push to both my self-hosted repository and GitHub to take advantage
|
How I push to both my self-hosted repository and GitHub to take advantage
|
||||||
of all social features offered by GitHub.
|
of all social features offered by GitHub.
|
||||||
** TODO Espial
|
|
||||||
|
I also self host a gitlab instance locally.
|
||||||
|
That way I have an infinite number of private repositories.
|
||||||
|
I can share my code to anyone.
|
||||||
|
|
||||||
|
The main drawback of my self-hosted gitlab instance, is that this is not a
|
||||||
|
social platform like Github is.
|
||||||
|
So I duplicate all of my public repositories to Github and my origin is
|
||||||
|
configured with both my own gitlab and github.
|
||||||
|
Each time I make a =git push= the push is broadcasted on both my own gitlab
|
||||||
|
instance and on GitHub.
|
||||||
|
You can configure broadcast push with:
|
||||||
|
|
||||||
|
#+begin_src
|
||||||
|
git remote set-url origin --push --add <remote-url>
|
||||||
|
git remote set-url origin --push --add <another-remote-url>
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Espial
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
:CUSTOM_ID: espial
|
:CUSTOM_ID: espial
|
||||||
:END:
|
:END:
|
||||||
Describe espial, and how I changed it.
|
[[https://github.com/jonschoning/espial][espial]] is an open-source, web-based bookmarking server.
|
||||||
** TODO node-red
|
It is a very easy to install single binary.
|
||||||
|
Perfect if you want a self-hosted bookmark web application.
|
||||||
|
|
||||||
|
This tool is written in Haskell, and I made a few pull request 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.
|
||||||
|
** node-red
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
:CUSTOM_ID: node-red
|
:CUSTOM_ID: node-red
|
||||||
:END:
|
:END:
|
||||||
Describe node-red and how I use it.
|
[[https://nodered.org][node-red]] is a tool that make it easy to write /flows/.
|
||||||
* TODO Consuming
|
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.
|
||||||
|
* Consuming
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
:CUSTOM_ID: consuming
|
:CUSTOM_ID: consuming
|
||||||
:END:
|
:END:
|
||||||
** TODO Emacs elfeed
|
So far I explained how I syndicate my content on multiple platform on the
|
||||||
|
Internet.
|
||||||
|
The main advantage is I own my data and all platform only get the link to
|
||||||
|
my content.
|
||||||
|
** Emacs elfeed
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
:CUSTOM_ID: emacs-elfeed
|
:CUSTOM_ID: emacs-elfeed
|
||||||
:END:
|
:END:
|
||||||
|
One of my most useful tool to get news is RSS.
|
||||||
|
In particular I consume it inside Spacemacs using [[https://github.com/skeeto/elfeed][elfeed]].
|
||||||
|
|
||||||
** TODO Mail
|
I also use elfeed-org to organize my feeds ans I also take care to remove
|
||||||
|
feeds with too much volume.
|
||||||
|
Generally we shouldn't read more than a few articles a day.
|
||||||
|
** Mail
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
:CUSTOM_ID: mail
|
:CUSTOM_ID: mail
|
||||||
:END:
|
:END:
|
||||||
Only use mail
|
I also use my mail to get most of my notifications.
|
||||||
|
And I generally put the social notifications inside a folder and not
|
||||||
|
directly in my inbox.
|
||||||
|
That way I do not get any direct notification.
|
||||||
|
I check my social notifications once in a while.
|
||||||
|
|
||||||
** TODO Github
|
** Github
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
:CUSTOM_ID: github
|
:CUSTOM_ID: github
|
||||||
:END:
|
:END:
|
||||||
|
I still get notifications on Github because I use it a lot for my work.
|
||||||
|
But only email and web notifications, not desktop notifications.
|
||||||
|
|
||||||
|
So even for Github, I can take a lot of time to react.
|
||||||
|
|
||||||
|
* Conclusion
|
||||||
|
:PROPERTIES:
|
||||||
|
:CUSTOM_ID: conclusion
|
||||||
|
:END:
|
||||||
|
This is how I can still use mainstreamsocial media platform while not
|
||||||
|
allowing those to optimize their attention grabbing algorithm on me.
|
||||||
|
|
||||||
|
I just take what I find positive in them, but do not pay the price of the
|
||||||
|
negativity of those platforms.
|
||||||
|
|
||||||
|
For now my system is quite tailored made, and adapted to me.
|
||||||
|
I think we could imagine that we could offer that to more people by having
|
||||||
|
a single, easy to create platform.
|
||||||
|
|
||||||
|
The bit sad state, is that I know there are a few system that try to make
|
||||||
|
it easy for more people to self-host, or host to a friend, smaller community.
|
||||||
|
But this is still reserved to technical savy people.
|
||||||
|
|
||||||
|
I think starting from espial we could create a simple small platform to
|
||||||
|
provide those feature to most people.
|
||||||
|
|
||||||
|
- ability to blog/microg blog and syndicate
|
||||||
|
- ability to publish securly private infos to a small group of friends and family
|
||||||
|
- generate RSS for different group of peoples
|
||||||
|
|
||||||
|
For me this is kind of superior to federation and mastodon, etc...
|
||||||
|
Mastodon, unfortunately replicate the anti-features of twitter, facebook,
|
||||||
|
and other social media platforms.
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue