<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: nickmaris</title>
    <description>The latest articles on DEV Community by nickmaris (@nickmaris).</description>
    <link>https://dev.to/nickmaris</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F491876%2Fe50ca07a-a570-45e8-8f19-5073bce19df8.png</url>
      <title>DEV Community: nickmaris</title>
      <link>https://dev.to/nickmaris</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/nickmaris"/>
    <language>en</language>
    <item>
      <title>Scammer at dev.to?</title>
      <dc:creator>nickmaris</dc:creator>
      <pubDate>Sat, 06 Nov 2021 23:29:22 +0000</pubDate>
      <link>https://dev.to/nickmaris/scammer-at-devto-3pdb</link>
      <guid>https://dev.to/nickmaris/scammer-at-devto-3pdb</guid>
      <description>&lt;p&gt;Update: My bad! I was displaying my email at my dev.to profile... Still it's good to know a scammer who is around, this happened just a few minutes ago...&lt;/p&gt;

&lt;p&gt;I have a unique email through &lt;a href="https://burnermail.io"&gt;burnermail&lt;/a&gt; for most services I use, including dev.to.&lt;/p&gt;

&lt;p&gt;Recently I got an email with body "hola" and an empty subject from a &lt;a href="https://datingscams.cc/search/capttkatiepetronio@gmail.com"&gt;scammer&lt;/a&gt; and to my surprise it was towards my dev.to email address? How did they find it? I haven't used it anywhere else and I haven't published it anywhere.&lt;/p&gt;

&lt;p&gt;Any ideas? Has this happened to you too?&lt;/p&gt;

</description>
      <category>watercooler</category>
    </item>
    <item>
      <title>Are you blocking any trackers manually?</title>
      <dc:creator>nickmaris</dc:creator>
      <pubDate>Sat, 03 Jul 2021 21:11:57 +0000</pubDate>
      <link>https://dev.to/nickmaris/are-you-blocking-any-trackers-manually-2jjk</link>
      <guid>https://dev.to/nickmaris/are-you-blocking-any-trackers-manually-2jjk</guid>
      <description>&lt;p&gt;Do you check whether you access domains you don't want and then block them?&lt;/p&gt;

&lt;p&gt;For example, the android app of n26 has &lt;a href="https://reports.exodus-privacy.eu.org/en/reports/de.number26.android/latest"&gt;quite a lot&lt;/a&gt; of trackers like:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://www.usebutton.com"&gt;Button&lt;/a&gt; (and &lt;a href="https://branch.io"&gt;Branch&lt;/a&gt; that &lt;a href="https://blog.usebutton.com/button-and-branch-join-hands-to-help-brands-unlock-mobile-growth-in-the-affiliate-channel"&gt;is now part of Button&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.adjust.com"&gt;Adjust&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mixpanel.com"&gt;Mixpanel&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Similarly, &lt;a href="https://reports.exodus-privacy.eu.org/en/reports/com.youneedabudget.evergreen.app/latest"&gt;ynab&lt;/a&gt; has:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://www.braze.com"&gt;Braze&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.mparticle.com"&gt;mparticle&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I didn't expect a bank app and especially a personal finance app to track me so much.&lt;/p&gt;

&lt;p&gt;They are now in my nextdns denylist along with the &lt;a href="https://github.com/nickspaargaren/no-google"&gt;nogoogle&lt;/a&gt; privacy filter of nextdns until I get rid of these apps.&lt;/p&gt;

</description>
      <category>watercooler</category>
    </item>
    <item>
      <title>DEV loses selected theme on android</title>
      <dc:creator>nickmaris</dc:creator>
      <pubDate>Wed, 17 Feb 2021 17:32:32 +0000</pubDate>
      <link>https://dev.to/nickmaris/dev-loses-selected-theme-on-android-388n</link>
      <guid>https://dev.to/nickmaris/dev-loses-selected-theme-on-android-388n</guid>
      <description>&lt;p&gt;Sometimes the android client of DEV switches to the default theme when I open it, has this happened to you? When editing a post and publishing, it should the right theme for a moment and then again goes to the default theme. It seams that something is triggering a fallback to the defaults.&lt;/p&gt;

&lt;p&gt;I use the night theme, you?&lt;/p&gt;

</description>
      <category>watercooler</category>
      <category>bug</category>
      <category>help</category>
      <category>discuss</category>
    </item>
    <item>
      <title>80% less distractions with 20% more privacy</title>
      <dc:creator>nickmaris</dc:creator>
      <pubDate>Tue, 02 Feb 2021 20:04:22 +0000</pubDate>
      <link>https://dev.to/nickmaris/80-less-distractions-with-20-more-privacy-3a13</link>
      <guid>https://dev.to/nickmaris/80-less-distractions-with-20-more-privacy-3a13</guid>
      <description>&lt;p&gt;Less notifications and less targeted ads over blocking apps/sites reduces my internet addiction and this post is about how I did that. I was addicted to distractions limiting my attention and memory span:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;recommendations by chrome to news sites, tech blogs and youtube&lt;/li&gt;
&lt;li&gt;push notifications of my gmail&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I don't know if I have &lt;a href="https://chadd.org/for-adults/diagnosis-of-adhd-in-adults"&gt;Attention Deficit Hyperactivity Disorder&lt;/a&gt; but I do know that blogging is helping me and I make friends this way too!&lt;/p&gt;

&lt;p&gt;Things started when I watched &lt;a href="https://www.thesocialdilemma.com"&gt;Social Dilemma&lt;/a&gt; and wrote my post &lt;a href="https://dev.to/nickmaris/privacy-is-not-about-addiction-2c2h"&gt;Privacy is not about addiction&lt;/a&gt;. I have realized that the root cause of my stress is internet addiction, not any lack of privacy. By taking the following measures to protect my privacy, I have managed also to reduce my internet addiction too. Now it is less trivial for any kind of recommendation system to grab my attention as:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;the content it recommends me is less relevant to me&lt;/li&gt;
&lt;li&gt;it is harder to push me to do something as there are less temptations, less Like buttons, less ads and less push notifications&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If I want something, I consciously do something about it or plan for it without wasting my time so even play-time like watching a movie is a conscious act. Sounds liberating, isn't it?&lt;/p&gt;

&lt;h2&gt;
  
  
  Search engine
&lt;/h2&gt;

&lt;p&gt;Ecosia is using Bing search engine but with an interesting &lt;a href="https://info.ecosia.org/privacy"&gt;privacy page&lt;/a&gt; and when I cannot find what I need (like a technical term), I just put 'g' as the first word in my search and it switches to google search.&lt;/p&gt;

&lt;h2&gt;
  
  
  📱 Email client
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://sparkmailapp.com"&gt;Spark&lt;/a&gt; knows for which emails received it is worth creating push notifications and which are just a matter of putting a number next to its icon at the wallpaper in my phone screen. It can block images so that you can block &lt;a href="https://en.m.wikipedia.org/wiki/Web_beacon"&gt;pixels&lt;/a&gt; too.&lt;/p&gt;

&lt;h2&gt;
  
  
  📱 Youtube client
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://newpipe.net"&gt;Newpipe&lt;/a&gt; on fdroid is a youtube client without ads and without tracking. On desktop, to avoid tracking and ads on youtube, I search for a specific video on google, copy address, paste it and go to youtubepp and download it.&lt;/p&gt;

&lt;h2&gt;
  
  
  📱 Less apps
&lt;/h2&gt;

&lt;p&gt;Log in intentionally to your social media accounts from your desktop/laptop instead of checking such apps contantly in your mobile. Delete the apps and if you cannot do so, disable them. For example, do you really need google phoyos? Delete it. Do you really need facebook and the "Google" app? Disable them.&lt;/p&gt;

&lt;p&gt;Create an email account for newsletters you care but do not add it in your mobile. Instead, plan a timing in a day/week/month to check that from your desktop/laptop.&lt;/p&gt;

&lt;p&gt;Replace your mobile homescreen with just a few key apps or notes or photos or contacts of your loved ones. Make it less tempting to distract yourself.&lt;/p&gt;

&lt;h2&gt;
  
  
  Less notifications
&lt;/h2&gt;

&lt;p&gt;Less push notifications means less distractions. Turn off notifications from all apps apart from what you really need to be notified and not just check it on demand. About any device remember, we are the masters, they are the slaves, not the opposite. Ok, you needs notifications for calls and sms but are all of your communication apps so important? Bank apps, password manager, firewall, antivirus, yes but are you calendar reminders properly configured?&lt;/p&gt;

&lt;h2&gt;
  
  
  Internet browser
&lt;/h2&gt;

&lt;p&gt;Changing browser can be a small or a big effort depending on how deep you want to go. The 4 extensions below are for firefox browser in a desktop. And if you really need chrome, keep the first 3 and use vivaldi browser or just use vivaldi without any extension in a desktop and in your mobile. In any case, I don't like syncing my browser with gmail and letting my gmail know everything I do online. Now instead of relying on syncing browsers with an account at firefox/vivaldi, I just have 1password (as a password manager and as an &lt;a href="https://support.1password.com/one-time-passwords"&gt;authenticator&lt;/a&gt; and if you don't mind filling your credentials with a &lt;a href="https://support.1password.com/keyboard-shortcuts"&gt;keyboard shortcut&lt;/a&gt; use bitwarden which is cheaper) and keep a few notes of my setup. Afterall, when I tried syncing, I found the UX a bit messy and sometimes buggy too. So the browser extensions is more a matter of diminishing returns than a core change.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://privacybadger.org"&gt;Privacy Badge&lt;/a&gt;: Blocks cookies with domains cookies collecting unique identifiers after it was sent a Do Not Track message. Focus only on google, facebook and amazon and check &lt;a href="https://github.com/ghostery/whotracks.me"&gt;whotracks.me&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.ghostery.com/ghostery-browser-extension"&gt;Ghostery&lt;/a&gt;: Blocks cookies with unique identifiers and keeps data sent in headers and the URL path &lt;a href="https://www.ghostery.com/how-we-at-ghostery-protect-users-from-web-tracking"&gt;that cannot be unique&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://addons.mozilla.org/en-US/firefox/addon/absolutedouble-trace"&gt;Trace&lt;/a&gt; is spoofing browser fingerprinting. Check &lt;a href="https://www.deviceinfo.me"&gt;here&lt;/a&gt; the section "fingerprinting resistance".&lt;/p&gt;

&lt;p&gt;&lt;a href="https://addons.mozilla.org/en-US/firefox/addon/multi-account-containers"&gt;Multi-account containers&lt;/a&gt;: Prevents one tab from reading your &lt;a href="https://wiki.mozilla.org/Security/Contextual_Identity_Project/Containers#Implementation_Details"&gt;activity&lt;/a&gt; on another tab. To get an idea, check the &lt;a href="https://browserleaks.com/social"&gt;BrowserLeaks&lt;/a&gt; tool from Pixel Privacy and their guide about &lt;a href="https://pixelprivacy.com/resources/browser-fingerprinting/"&gt;Browser Fingerprinting&lt;/a&gt;. For example, you need facebook to interract with specific individuals or groups? Fine but open it in an empty container and then logout. Same for twitter and linkedin.&lt;/p&gt;

&lt;p&gt;As regards the tracking cookies, they are usually used for advertising purposes, retargeting in particular. Retargeting is a tactic that often relies on tracking cookies to show ads to people who have previously visited a specific site or shown interest in a particular product. Tracking cookies can record all kinds of information: browsing history, search queries, purchases, device information, location, when and where you saw previous advertisements, how many times you’ve seen an ad, and what links you click on. So for sites that you always want to be logged in and you can properly manage their cookies, use their apps or find alternative services.&lt;/p&gt;

&lt;h2&gt;
  
  
  Diminishing returns
&lt;/h2&gt;

&lt;p&gt;Now the 80% of the effort for more privacy would go I guess to things like the following but it won't make any big different in e.g. the relevance of the ads I get:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Email service provider. As a rule of thumb, use an email account that people know and another one that services know. The first one is hard to change but for new services you can start using a new one and gradually move away from what you have. Zoho mail has a nice &lt;a href="https://www.zoho.com/mail/privacy.html"&gt;privacy page&lt;/a&gt; and its online versions of word, spreadsheet, powerpoint, calendar and google drive alternatives are pretty interesting and free.&lt;/li&gt;
&lt;li&gt;Delete social media accounts you don't need and ask friends not to tag you on social media you keep.&lt;/li&gt;
&lt;li&gt;Switch from google maps to &lt;a href="https://play.google.com/store/apps/details?id=net.osmand"&gt;Osmand&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Entering paranoid mode about IP...&lt;/code&gt; hide your IP with a &lt;a href="https://mullvad.net/en"&gt;VPN&lt;/a&gt; that is also sold by mozilla and its privacy policy is the most transparent I have ever seen or a new &lt;a href="https://controld.com"&gt;VPN&lt;/a&gt; that also protects you from your ISP spying on the domains you visit&lt;/li&gt;
&lt;li&gt;Use Tor on top of VPN to hide from your ISP the fact that you use Tor and &lt;a href="https://github.com/CrowdStrike/Tortilla"&gt;route&lt;/a&gt; all of your traffic through Tor. I wouldn't recommend the most popular tor-over-vpn services like nordvpn because that would defeat the purpose as for the most popular services it would be tempting to sell your data. At this point you would watch videos on which of the endless settings of your phone to disable like turning off the Samsung Customization Service from all apps.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Entering paranoid mode about GPS...&lt;/code&gt; Forget uber, buy a GPS navigator, use mainly your desktop/laptop and buy a &lt;a href="https://www.thelightphone.com"&gt;lightphone&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Entering paranoid mode about GSM...&lt;/code&gt; &lt;a href="https://www.phone.com"&gt;VoIP&lt;/a&gt; through your laptop instead of your phone to avoid &lt;a href="https://en.m.wikipedia.org/wiki/International_mobile_subscriber_identity"&gt;IMSI&lt;/a&gt; &lt;a href="https://en.m.wikipedia.org/wiki/Geo-fence"&gt;geofencing&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;When travelling, get an &lt;a href="https://www.onesimcard.com/international-sim-cards-comparison"&gt;international SIM card&lt;/a&gt; as stated &lt;a href="https://koshinan.com/goodbye-mobile-phone"&gt;here&lt;/a&gt; like &lt;a href="https://dtmf.io"&gt;this&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;The &lt;a href="https://anonymousplanet.github.io/thgtoa/guide.html"&gt;sky&lt;/a&gt; is the limit.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Personally I started following the first 3 but I didn't bother with the rest as I would need first to radically change my habits and I don't want that now. For example I managed to delete my facebook but my colleagues are on whatsapp so I still use whatsapp. Technology alone is not enough, you need discipline but the few changes above gave me less temptations for distractions.&lt;/p&gt;

</description>
      <category>privacy</category>
      <category>psychology</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Dev workflow from android</title>
      <dc:creator>nickmaris</dc:creator>
      <pubDate>Mon, 11 Jan 2021 03:24:56 +0000</pubDate>
      <link>https://dev.to/nickmaris/dev-workflow-from-android-dkd</link>
      <guid>https://dev.to/nickmaris/dev-workflow-from-android-dkd</guid>
      <description>&lt;p&gt;Yes, it's a hack and yes the speed is much worse than using a laptop but for a few weeks now I have decided to sleep 17:00-1:00 and take care of my newborn baby 1:00-9:00, so that my wife can sleep. If I sleep let's say for 1 hour when my baby manages after &lt;a href="https://en.m.wikipedia.org/wiki/Baby_colic"&gt;Colic&lt;/a&gt; pain to sleep for a bit, then it would be hard for me to wake up, so here is how I avoid falling asleep.&lt;/p&gt;

&lt;p&gt;I wanted something more than vim as the touch keyboard in my mobile phone doesn't really help and something faster than &lt;a href="https://dcoder.tech"&gt;dcoder&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Terminal
&lt;/h2&gt;

&lt;p&gt;Install the open source android app termux.&lt;/p&gt;

&lt;p&gt;Open termux, run &lt;code&gt;mkdir $HOME/projects&lt;/code&gt; to run commands there and run &lt;code&gt;pkg install git nodejs&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Code editor
&lt;/h2&gt;

&lt;p&gt;Install the open source android app acode.&lt;/p&gt;

&lt;p&gt;Open termux and run &lt;code&gt;termux-setup-storage&lt;/code&gt;. You will then be prompted to "Allow Termux access photos, media and files on your device". The contents of the created &lt;code&gt;$HOME/storage&lt;/code&gt; folder are kind of symlinks to different storage folders with the most important here being the root of the shared storage between all apps &lt;code&gt;~/storage/shared&lt;/code&gt;. In my case I have folder &lt;code&gt;~/storage/shared/Git&lt;/code&gt; to edit files.&lt;/p&gt;

&lt;h2&gt;
  
  
  Edit javascript and run it
&lt;/h2&gt;

&lt;p&gt;As the storage folders emulate fat32 you need to copy your modified files to a folder under &lt;code&gt;$HOME/projects&lt;/code&gt; that supports symlinks, so create the following &lt;code&gt;run.sh&lt;/code&gt; and &lt;code&gt;chmod +x run.sh&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#!/bin/bash

# changeme
projectName=reduce

destDirectory=$HOME/projects/
originDirectory=$HOME/storage/shared/Git/$projectName
cp $originDirectory $destDirectory -Ru
cd $destDirectory/$projectName

# changeme
npm install
npm start
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Adjust the script to your needs and whenever you are ready to test your site, run the script.&lt;/p&gt;

&lt;h2&gt;
  
  
  Markdown editor
&lt;/h2&gt;

&lt;p&gt;Install the open source android app markor and note that &lt;code&gt;/storage/emulated/0&lt;/code&gt; points to &lt;code&gt;$HOME/storage/shared&lt;/code&gt; of termux and &lt;code&gt;/Internal storage/&lt;/code&gt; of acode. Its syntax highlighting and preview are amazing.&lt;/p&gt;

&lt;h2&gt;
  
  
  What about gitlab?
&lt;/h2&gt;

&lt;p&gt;I love gitlab but don't try firefox from android, cloudflare keeps reloading when loading login page. And in chrome, don't expect copy-paste to work from a mobile phone.&lt;/p&gt;

&lt;h2&gt;
  
  
  Enjoy
&lt;/h2&gt;

&lt;p&gt;Have fun!&lt;/p&gt;

&lt;p&gt;Tips to parents: &lt;a href="https://en.m.wikipedia.org/wiki/Baby_colic"&gt;Colic&lt;/a&gt; is common, just set your mobile phone to flight mode and in a few weeks time it will be gone. Trust me, it's my second one :)&lt;/p&gt;

</description>
      <category>npm</category>
      <category>android</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Reconfigure from gitlab.com</title>
      <dc:creator>nickmaris</dc:creator>
      <pubDate>Sat, 12 Dec 2020 09:00:44 +0000</pubDate>
      <link>https://dev.to/nickmaris/reconfigure-from-gitlab-com-aak</link>
      <guid>https://dev.to/nickmaris/reconfigure-from-gitlab-com-aak</guid>
      <description>&lt;p&gt;Gitlab has many features worth exploring by configuring mainly the gitlab.rb file of gitlab and the config.toml file of gitlab-runner. Reconfiguring my gitlab instance and runner from gitlab.com helped me:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;for each set of configuration parameters I consider using, now I can review and document my intention behind them and any manual steps needed, so opening an MR helped&lt;/li&gt;
&lt;li&gt;keep track of what didn't work, how it failed and why in order to avoid repeat it, so closed unmerged MRs and their build job logs helped too!&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Setup gitlab
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;One local ubuntu 18.04 VM named gitlab.prv with an &lt;a href="https://about.gitlab.com/install/#ubuntu"&gt;omnibus installation of gitlab&lt;/a&gt;. Omnibus is the recommended installation method too.&lt;/li&gt;
&lt;li&gt;Domain (a &lt;a href="http://freeddns.noip.com/?d=ddns.net&amp;amp;u=ZGRucy5uZXQv"&gt;dynamic&lt;/a&gt; one set up in my router), router forwarding ports 80 and 443 to the same ports of gitlab.prv and have let's encrypt of gitlab installer generate SSL to work from browser but also when registering a runner. Otherwise, installing gitlab would be more complicated.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Configure gitlab
&lt;/h2&gt;

&lt;p&gt;It is more safe to create a shell runner than to expose the ssh port of your gitlab and use the default shared runners of gitlab.com.&lt;/p&gt;

&lt;p&gt;At gitlab.prv assuming your user is XXX, run the following. The first command prevents &lt;a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/1379"&gt;this&lt;/a&gt; issue on debian based OS and needs &lt;code&gt;sudo -E&lt;/code&gt; to pass the env var to systemd later on.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;export GITLAB_RUNNER_DISABLE_SKEL=true
wget https://s3.amazonaws.com/gitlab-runner-downloads/master/binaries/gitlab-runner-linux-amd64
chmod +x gitlab-runner-linux-amd64
mv gitlab-runner-linux-amd64 gr
./gr run
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then in another terminal run &lt;code&gt;./gr register&lt;/code&gt; set as  coordinator &lt;a href="https://gitlab.com"&gt;https://gitlab.com&lt;/a&gt;, for the token check runners section at &lt;code&gt;/-/settings/ci_cd&lt;/code&gt; page of your project at gitlab.com that holds the gitlab.rb file in the playbook.yml and the following .gitlab-ci.yml and as executor set shell.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;reconfigure:
  script:
  - sudo cp gitlab.rb /etc/gitlab/gitlab.rb
  - sudo gitlab-ctl reconfigure
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then kill &lt;code&gt;gr&lt;/code&gt; and run it as a service:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo -E ./gr install --user XXX --syslog --config /home/XXX/.gitlab-runner/config.toml
sudo -E ./gr start
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Setup runner
&lt;/h2&gt;

&lt;p&gt;The rest of this post is overengineering but it was fun :)&lt;/p&gt;

&lt;p&gt;Reconfiguring an executor sometimes requires restarting the runner so the runner that runs the provisioner is a docker executor running ansible in a separate local VM:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;One local ubuntu 18.04 VM named runner.prv with &lt;a href="https://docs.gitlab.com/runner/install/bleeding-edge.html"&gt;amd64 binary&lt;/a&gt; of gitlab-runner.  You don't want your gitlab to be slow or go down in case your runner experience performance issues, so having it on a separate VM is recommended by gitlab too.&lt;/li&gt;
&lt;li&gt;One local ubuntu 18.04 VM named ansible.lan with docker and ssh access to the runner VM to run ansible. That could be gitlab.prv by the way as it won't be heavily used.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;A few oneoff configurations worth mentioning:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;At runner.prv &lt;code&gt;sudo EDITOR=vi visudo&lt;/code&gt; and add &lt;code&gt;NOPASSWD: ALL&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;At runner.prv &lt;code&gt;mkdir ~/.ssh&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Login with ssh from ansible.lan to runner.prv once to add it to known_hosts&lt;/li&gt;
&lt;li&gt;At ansible.lan install docker through snap so that it is set up with overlay2 and start on boot.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In case you wonder why I use ansible only for the runner, running &lt;code&gt;reconfigure&lt;/code&gt; (which triggers chef) as an ansible task was not fun as it broke the build logs in gitlab.com.&lt;/p&gt;

&lt;h2&gt;
  
  
  Configure runner
&lt;/h2&gt;

&lt;p&gt;Install the gitlab runner at ansible.lan as before but register it with type docker. Then, assuming your user is XXX, at &lt;code&gt;~/.gitlab-runner/config.toml&lt;/code&gt; set volumes in docker section as &lt;code&gt;["/home/XXX/.ansible/roles:/root/.ansible/roles", "/home/XXX/.ssh:/root/.ssh:ro"]&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;To tail logs of the systemd service: &lt;code&gt;journalctl -u gitlab-runner -f&lt;/code&gt;                                                                           &lt;/p&gt;

&lt;p&gt;To run the runner locally assuming the repository is cloned at ~/runner even with changes that are not committed: &lt;code&gt;./../gr exec docker srv-and-runner --docker-image "spy86/ansible" --docker-volumes "${PWD}:/work:ro" --docker-volumes "/home/XXX/.ansible/roles:/root/.ansible/roles" --docker-volumes "/home/XXX/.ssh:/root/.ssh:ro"&lt;/code&gt;                                                   &lt;/p&gt;

&lt;p&gt;To run it at ansible.lan: &lt;code&gt;ansible-playbook playbook.yml&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Files
&lt;/h2&gt;

&lt;p&gt;.gitlab-ci.yml&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;variables:
  PYTHONUNBUFFERED: "1"
  CI_DEBUG_TRACE: "true"
  ANSIBLE_CONFIG: "ansible.cfg"

srv-and-runner:
  script:
  - ansible-playbook playbook.yml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;playbook.yml. Note that once you register your runner to your gitlab instance, you have to copy your config.toml manually here&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;--------
- hosts: runner.prv
  name: runner
  become: yes

  tasks:
  - name: Setup
    blockinfile:
      path: /etc/gitlab-runner/config.toml
      block: |
        concurrent = 1
        check_interval = 0
        [session_server]
          session_timeout = 1900

  - name: Restart
    shell: "gitlab-runner restart"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;ansible.cfg&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[defaults]
inventory=inventory.ini
no_target_syslog = True
host_key_checking = False
retry_files_enabled = False
PY_COLORS = 1
ANSIBLE_FORCE_COLOR = 1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;inventory.ini&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[all]
runner.prv

[all:vars]
ansible_python_interpreter="/usr/bin/python3"
ansible_ssh_user="XXX"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Your turn
&lt;/h2&gt;

&lt;p&gt;Now you can try that by making 2 private projects in gitlab.com, one to configure your gitlab instance and another one to configure your runner. The first one can refer to files like prometheus rules so it can configure more things if necessary.&lt;/p&gt;

&lt;p&gt;Did you find a typo? Submit an &lt;a href="https://gitlab.com/nickmaris/android-rb"&gt;MR&lt;/a&gt; and gitlab will update this post.&lt;/p&gt;

</description>
      <category>gitlab</category>
    </item>
    <item>
      <title>Privacy is about taking informed decisions</title>
      <dc:creator>nickmaris</dc:creator>
      <pubDate>Tue, 08 Dec 2020 09:00:55 +0000</pubDate>
      <link>https://dev.to/nickmaris/privacy-is-about-taking-informed-decisions-2201</link>
      <guid>https://dev.to/nickmaris/privacy-is-about-taking-informed-decisions-2201</guid>
      <description>&lt;p&gt;About my privacy, I feel I need to be proactive and ask:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;What can go wrong? Are you trading convenience that you don't really need for a privacy level that you need? Or you have enough information to move forward? If you are doing an intervention to protect your privacy, what does it protect you from? Did other such interventions fail or led to inconvenience?&lt;/li&gt;
&lt;li&gt;What's the likelihood?&lt;/li&gt;
&lt;li&gt;How bad would that be?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;By the time you decide to install a product or signup on a service, it's too late to read the privacy policy and search for reviews.&lt;/p&gt;

&lt;h2&gt;
  
  
  Privacy is not about security
&lt;/h2&gt;

&lt;p&gt;Last but not least, another myth is that privacy and security are the same thing. In order to protect your privacy, first you need to protect your security. In my case a password manager like 1password helped me:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;generate (14 or more number, characters and symbols), store, sync between devices and share secrets like passwords with my family&lt;/li&gt;
&lt;li&gt;find which of my services (especially email providers and cloud providers) support 2 factor authentication and add it instead of authy or sms for faster copy paste&lt;/li&gt;
&lt;li&gt;put tags on thing like local services so that I focus on the rest by searching for &lt;code&gt;tag:&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>privacy</category>
    </item>
    <item>
      <title>Spark - A service that explains its privacy policy</title>
      <dc:creator>nickmaris</dc:creator>
      <pubDate>Mon, 07 Dec 2020 09:00:52 +0000</pubDate>
      <link>https://dev.to/nickmaris/spark-a-service-that-explains-its-privacy-policy-488n</link>
      <guid>https://dev.to/nickmaris/spark-a-service-that-explains-its-privacy-policy-488n</guid>
      <description>&lt;p&gt;Privacy policies are asking you to take an informed decision, so choose services that explain their privacy policy.&lt;/p&gt;

&lt;p&gt;As stated &lt;a href="https://community.humanetech.com/t/how-humane-privacy-policies-should-be-written-and-in-compliance-with-gdpr/1880/6"&gt;here&lt;/a&gt;, the GDPR specifically prohibits the use of long, convoluted terms and condition statements, particularly statements that contain legalese. Any request for consent, declaration of terms, or statement of privacy must be presented clearly and concisely, and without any ambiguity of meaning.&lt;/p&gt;

&lt;p&gt;The classical CIA information security protection goals, i.e. confidentiality (C), integrity (I) and availability (A), have been extended &lt;a href="https://www.enisa.europa.eu/publications/enisa2019s-pets-maturity-assessment-repository"&gt;here&lt;/a&gt; for privacy protection through 3 concepts and under each one I am putting related questions of the &lt;a href="https://forum.tosdr.org/t/the-checklist-from-the-github-wiki/218"&gt;checklist&lt;/a&gt; of the amazing site &lt;a href="https://tosdr.org"&gt;Terms of Service Didn't read&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Unlinkability
&lt;/h2&gt;

&lt;p&gt;As separating data and processes:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;How long do they keep your private data and what do they use it for?&lt;/li&gt;
&lt;li&gt;What happens to your data when they get acquired or when they shut down the service?&lt;/li&gt;
&lt;li&gt;Can you export your data (where applicable)?&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Transparency
&lt;/h2&gt;

&lt;p&gt;As adequate level  of clarity in the relevant data processing:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Does the service use first-party and/or third-party cookies?&lt;/li&gt;
&lt;li&gt;Can they change the terms at any time?&lt;/li&gt;
&lt;li&gt;How do they work with third parties (contractors they use)?&lt;/li&gt;
&lt;li&gt;How do they work with government requests?&lt;/li&gt;
&lt;li&gt;How do they handle decisions about suspension of your account when they feel you breached the terms?&lt;/li&gt;
&lt;li&gt;Do they (try to) prohibit you from going to court against them?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;One check I would add is: Do they share their business model, how they make money?&lt;/p&gt;

&lt;p&gt;For me, the most complicated issue to tackle is the following but at least GDPR covers the most &lt;a href="https://ico.org.uk/for-organisations/guide-to-data-protection/guide-to-the-general-data-protection-regulation-gdpr/automated-decision-making-and-profiling/what-does-the-uk-gdpr-say-about-automated-decision-making-and-profiling"&gt;obvious&lt;/a&gt; cases:&lt;/p&gt;

&lt;p&gt;Right related to automated decision making including profiling&lt;/p&gt;

&lt;p&gt;Changing habits like blocking trackers contributes not only to avoiding a &lt;a href="https://www.socialcooling.com"&gt;dystopian&lt;/a&gt; future of big data affecting my ability to get a job, a social Security scheme, or a loan but reduces also my chances of internet addiction.&lt;/p&gt;

&lt;p&gt;After all, I don't want trillion dollar companies to make money from my behavior.&lt;/p&gt;

&lt;h2&gt;
  
  
  Intervenability
&lt;/h2&gt;

&lt;p&gt;As the possibility for parties to be involved in the relevant process:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Do they claim copyright (or what sort of license) over your content (where applicable)?&lt;/li&gt;
&lt;li&gt;Do you have a right to leave the service?&lt;/li&gt;
&lt;/ol&gt;

&lt;h1&gt;
  
  
  Case study
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://sparkmailapp.com/privacy"&gt;Spark&lt;/a&gt; is an example of a service that has also an &lt;a href="https://support.readdle.com/spark/privacy/privacy-explained"&gt;explanation&lt;/a&gt; of its privacy policy, so let's read how it looked on the 4th of December 2020:&lt;/p&gt;

&lt;h2&gt;
  
  
  Buiness model
&lt;/h2&gt;

&lt;p&gt;First of all it makes clear which is the business model:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Spark’s business model is simple: It’s free for individual users, yet it makes money by offering Premium plans for teams and organizations. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Purpose
&lt;/h2&gt;

&lt;p&gt;They talk about purpose limitation&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;We don’t use your data for any other purposes. [...] We won’t ask for more data than is needed to provide you with the service.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And they summarize the purpose by saying:&lt;/p&gt;

&lt;p&gt;Some of the purposes for processing the data provided by you include:&lt;/p&gt;

&lt;p&gt;Providing you with the services&lt;br&gt;
Fraud prevention&lt;br&gt;
Improving our services&lt;br&gt;
Notifying you of any changes in our services&lt;/p&gt;

&lt;h2&gt;
  
  
  Honesty and transparency
&lt;/h2&gt;

&lt;p&gt;For example, they say "Your email is safe and we do not use it for profiling or targeting."&lt;/p&gt;

&lt;h2&gt;
  
  
  Data retention
&lt;/h2&gt;

&lt;p&gt;They clarify that "We always delete your data once it’s no longer necessary" and the retention period is specified at the section "HOW LONG PERSONAL DATA IS STORED FOR" of the policy.&lt;/p&gt;

&lt;h2&gt;
  
  
  Security
&lt;/h2&gt;

&lt;p&gt;Interestingly for a privacy policy, they have a section called "SECURITY MEASURES USED BY US".&lt;/p&gt;

&lt;p&gt;Note the Security is not Privacy, it is a precondition for Privacy otherwise what the data you provide to the service are also exposed to unethical hackers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Clear instructions on how to get access to your data or request its deletion
&lt;/h2&gt;

&lt;p&gt;"You can either exercise your rights by deleting your account and all information associated with it from your device or by emailing us at &lt;a href="mailto:dpo@readdle.com"&gt;dpo@readdle.com&lt;/a&gt;." and "Spark is GDPR and CCPA compliant, and you have the right to get access to your data or require its deletion. We are committed to dealing with all privаcy requests promptly and transparently."&lt;/p&gt;

&lt;h2&gt;
  
  
  Location
&lt;/h2&gt;

&lt;p&gt;The service is located in Germany, a country that cares about Privacy.&lt;/p&gt;

&lt;h2&gt;
  
  
  Review
&lt;/h2&gt;

&lt;p&gt;So overall, the service gives a good impression as most services have eitheir no information, or have information that you need to pay a lawyer to understand it.&lt;/p&gt;

&lt;p&gt;I haven't used this service but as you can see in my previous post, we need to read the privacy policy of services and not accept them blindly and our attention span is already limited so invest in services that help you on that by structuring or explaining their privacy policy.&lt;/p&gt;

</description>
      <category>privacy</category>
    </item>
    <item>
      <title>Privacy is not about Misinformation</title>
      <dc:creator>nickmaris</dc:creator>
      <pubDate>Sat, 05 Dec 2020 09:00:45 +0000</pubDate>
      <link>https://dev.to/nickmaris/privacy-is-not-about-misinformation-4585</link>
      <guid>https://dev.to/nickmaris/privacy-is-not-about-misinformation-4585</guid>
      <description>&lt;p&gt;Misinformation is an issue and parents and consultants of governmental policy makers need to take action but it is not privacy, so what is it?&lt;/p&gt;

&lt;p&gt;Some &lt;a href="https://www.opendemocracy.net/en/digitaliberties/how-to-fight-online-misinformation-dont-rely-on-laws-or-algorithms-try-vaccines-instead"&gt;forms of misinformation&lt;/a&gt; are:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Polarizing audiences&lt;/li&gt;
&lt;li&gt;impersonating people (or groups of people) online&lt;/li&gt;
&lt;li&gt;using emotional language when facts are expected&lt;/li&gt;
&lt;li&gt;spreading conspiracy theories&lt;/li&gt;
&lt;li&gt;discrediting opponents and deflecting criticism&lt;/li&gt;
&lt;li&gt;internet trolling&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;We analyzed polarization in the previous article extensively as it imposes the worst and most direct danger to democracy among other forms of misinformation. As for the rest, some potentials dangers are:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;health issues when following bad practices&lt;/li&gt;
&lt;li&gt;economic fraud&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  What you can do
&lt;/h2&gt;

&lt;p&gt;Read only information that helps you take action, action on anything that you really care and ignore everything irrelevant. This will help you avoid sharing misinformation which means that we need to be mindful of the things we do "for fun". For example, some memes we share might be part of a campaign for opinion making.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://firstdraftnews.org/latest/the-psychology-of-misinformation-how-to-prevent-it"&gt;First Draft&lt;/a&gt; suggests us to:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;expose people to examples of misinformation, or misinformation techniques, to help them recognize and reject them in the future.&lt;/li&gt;
&lt;li&gt;nudge people to think about accuracy before sharing. For example, saying that you heard it from a friend or from a facebook group is not enough&lt;/li&gt;
&lt;li&gt;be aware of the potential for manipulation and evaluate multiple resources before you accept something as true. Try to find official sources before you believe something.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  What is your role
&lt;/h2&gt;

&lt;p&gt;Recommendation engines now weight news with sophisticated algorithms that detect fake news based on e.g. the content of the news or the way they get propagated. However, that cannot completely replace the human eye. If you cannot judge, at least don't press any share/like button.&lt;/p&gt;

&lt;h2&gt;
  
  
  Anonymity
&lt;/h2&gt;

&lt;p&gt;As stated &lt;a href="https://blog.petrieflom.law.harvard.edu/2013/09/11/anonymity-is-not-privacy-and-why-it-matters-2"&gt;here&lt;/a&gt; under the condition of privacy, we have knowledge of a person’s identity, but not of an associated personal fact; whereas under the condition of anonymity, we have knowledge of a personal fact, but not of the associated person’s identity.&lt;/p&gt;

&lt;p&gt;Use anonymity for things like ethical journalism, not to spread misinformation.&lt;/p&gt;

</description>
      <category>privacy</category>
    </item>
    <item>
      <title>Privacy is not about Polarization</title>
      <dc:creator>nickmaris</dc:creator>
      <pubDate>Fri, 04 Dec 2020 09:00:53 +0000</pubDate>
      <link>https://dev.to/nickmaris/privacy-is-not-about-polarization-1630</link>
      <guid>https://dev.to/nickmaris/privacy-is-not-about-polarization-1630</guid>
      <description>&lt;p&gt;Polarization in social media is an issue and parents and consultants of governmental policy makers need to take action but it is not privacy, so what is it?&lt;/p&gt;

&lt;p&gt;The more attention we pay in distractions, the easier we make it to end up in a fight if we don't have the discipline to stop engaging into that yet. What is different in internet than say TV and newspaper is that internet knows you, personally. Facebook Site Integrity fake engagement team has described governments in Azerbaijan, Honduras, India, Ukraine and Bolivia using Facebook against their own citizens, employing large numbers of fake accounts to promote their own interests like elections and attack critics by buying inauthentic likes, comments, and shares. When an &lt;a href="https://www.theverge.com/interface/2020/9/16/21437942/social-dilemma-netflix-review-orlowski-sarah-zhang-memo-facebook-buzzfeed"&gt;issue&lt;/a&gt; escalated, the company said that it was less pressing than the many other issues the civic integrity team was policing at the time, in other countries all over the world.&lt;/p&gt;

&lt;h2&gt;
  
  
  What to do
&lt;/h2&gt;

&lt;p&gt;To avoid polarization, here are a few steps that require discipline based on &lt;a href="https://www.humanetech.com/take-control"&gt;humanetech&lt;/a&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;‍Unfollow outrage-chasing individuals/groups&lt;/li&gt;
&lt;li&gt;Remove sharply polarized media outlets from your news feed → &lt;a href="https://www.humanetech.com/take-control"&gt;Humanetech&lt;/a&gt; mentions MSNBC &amp;amp; FOXNews&lt;/li&gt;
&lt;li&gt;‍Check news sites whose perspectives you disagree with: &lt;a href="https://www.allsides.com/unbiased-balanced-news"&gt;AllSides&lt;/a&gt; gives readers a cross-partisan view of world events covered by the media, and sustains itself on a consciously created hybrid revenue model to avoid bias and clickbait incentives. On twitter and reddit, follow people you disagree with.&lt;/li&gt;
&lt;li&gt;Social media profits off hate and anger because it generates more engagement. Let’s fight back with compassion. ‍Pause. Don’t be so quick to unfollow or publicly argue with someone who posts something you disagree with.‍&lt;/li&gt;
&lt;li&gt;Be compassionate: Try a private message to ask why they feel that way, with genuine curiosity and a desire to understand.&lt;/li&gt;
&lt;li&gt;Essentially, you vote with your clicks. If you click on clickbait, you’re creating a financial incentive that perpetuates this existing system. Before you share, fact check. Consider the source. Do that extra Google"&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>privacy</category>
    </item>
    <item>
      <title>Privacy is not about Addiction</title>
      <dc:creator>nickmaris</dc:creator>
      <pubDate>Thu, 03 Dec 2020 16:27:29 +0000</pubDate>
      <link>https://dev.to/nickmaris/privacy-is-not-about-addiction-2c2h</link>
      <guid>https://dev.to/nickmaris/privacy-is-not-about-addiction-2c2h</guid>
      <description>&lt;p&gt;One of the reasons I am blogging about privacy at dev.to, is to see how developers can help policymakers of laws like GDPR:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;For example, we need more of &lt;a href="https://www.enisa.europa.eu/publications/privacy-and-data-protection-by-design"&gt;Privacy-preserving computations&lt;/a&gt; like Homomorphic encryption and Secure multi-party computation but also &lt;a href="https://www.enisa.europa.eu/publications/big-data-protection"&gt;Privacy preferences and sticky policies&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;We can &lt;a href="https://github.com/mikenikles/your-analytics"&gt;easily&lt;/a&gt; understand our visitors's behavior without relying on google analytics which then track users across sites more easily.&lt;/li&gt;
&lt;li&gt;For tech savvy users, split our database from a
&lt;a href="https://unhosted.org/adventures/7/Adding-remote-storage-to-unhosted-web-apps.html"&gt;remoteStorage&lt;/a&gt; hosted and owned by the user&lt;/li&gt;
&lt;li&gt;And many more Privacy Enhancing Technologies...&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;But let's start with the myths.&lt;/p&gt;

&lt;p&gt;Internet addiction is an issue and parents and consultants of governmental policy makers need to take action but it is not privacy, so what is it?&lt;/p&gt;

&lt;p&gt;A kid that empowers all websites to track its behaviour so that they can attract more of its attention, will receive things like more personalized ads and more personalized content. So far, so good but the content might be practically irrelevant as regards the happiness of the kid or even harmful to the point that the kid might end up with depression e.g. because of not enough "likes" in social media. &lt;a href="https://scrapsfromtheloft.com/2020/10/03/the-social-dilemma-movie-transcript"&gt;Social Dilemma&lt;/a&gt; says "when we are uncomfortable or lonely or uncertain or afraid, we have a digital pacifier for ourselves".&lt;/p&gt;

&lt;h2&gt;
  
  
  Steps that require discipline
&lt;/h2&gt;

&lt;p&gt;For an adult to take control and avoid addiction here are a few steps that require discipline based on &lt;a href="https://www.humanetech.com/take-control"&gt;humanetech&lt;/a&gt;:&lt;/p&gt;

&lt;h3&gt;
  
  
  Go offline
&lt;/h3&gt;

&lt;p&gt;Don't expect technology to solve non-technical problems. As stated &lt;a href="https://community.humanetech.com/t/an-answer-to-the-question-from-the-social-dilemma-intro/4969/15"&gt;here&lt;/a&gt;, people need to find things to do with their lives that don’t involve media use, in the following 3 areas:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The physical world - move your body and see things&lt;/li&gt;
&lt;li&gt;Interpersonal relationships - and social engagement (in person)&lt;/li&gt;
&lt;li&gt;Retreat and reflection - sleep and dream more&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The solution is having other things to do so you no longer care about media.&lt;/p&gt;

&lt;h3&gt;
  
  
  Set boundaries
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Clear at least your morning &amp;amp; evenings → Set clear bounded blocks of time without technology like half an hour before bedtime, all devices out.&lt;/li&gt;
&lt;li&gt;Device-free group activities at home like dinners. Create a shared charging station at home&lt;/li&gt;
&lt;li&gt;Buy a separate alarm clock → Wake up without getting sucked into your phone first thing in the morning.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Reduce notifications
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Find mobile apps that are not a big deal to delete to reduce push notifications and use your browser instead when necessary. And yes the desktop browser for those that are not mobile friendly.&lt;/li&gt;
&lt;li&gt;Remove email notifications that are not a big deal and again use your browser when You decide to do so.&lt;/li&gt;
&lt;li&gt;Create an email account for newsletters you care but do not add it in your mobile. You can also forward to this account emails that might be more of a spam than a request to take action.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Cleanup your mobile homescreen
&lt;/h3&gt;

&lt;p&gt;Replace your mobile homescreen with just a few key apps or notes or photo or contacts of your loved ones. Make it less tempting to distract yourself.&lt;/p&gt;

&lt;h2&gt;
  
  
  For the less disciplined
&lt;/h2&gt;

&lt;p&gt;If you can't stop reading "feeds" (any platform that grabs your attention by recommending you things to consume for "free"), at least limit the time you spend on:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://en.m.wikipedia.org/wiki/Big_Tech"&gt;Facebook Netflix Google Microsoft&lt;/a&gt;:&lt;/p&gt;

&lt;p&gt;Facebook feed, Snapchat, Instagram&lt;br&gt;
Netflix&lt;br&gt;
Google search, Youtube&lt;br&gt;
Xbox, Linkedin&lt;/p&gt;

&lt;p&gt;But also:&lt;/p&gt;

&lt;p&gt;Twitter&lt;br&gt;
TikTok&lt;br&gt;
Pinterest&lt;br&gt;
Reddit&lt;br&gt;
add more here...&lt;/p&gt;

&lt;h2&gt;
  
  
  For parents to assist their kids
&lt;/h2&gt;

&lt;p&gt;As stated in Social Dilemma:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;"No social media until high school. Personally, I think the age should be 16"&lt;/li&gt;
&lt;li&gt;And discuss and work out the daily hours spent on a device with your kid.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  What else?
&lt;/h2&gt;

&lt;p&gt;Did any of this help you? Have you found something else that worked for you?&lt;/p&gt;

</description>
      <category>privacy</category>
    </item>
    <item>
      <title>Post dev.to articles from gitlab</title>
      <dc:creator>nickmaris</dc:creator>
      <pubDate>Mon, 09 Nov 2020 09:01:00 +0000</pubDate>
      <link>https://dev.to/nickmaris/post-dev-to-articles-from-gitlab-1op1</link>
      <guid>https://dev.to/nickmaris/post-dev-to-articles-from-gitlab-1op1</guid>
      <description>&lt;p&gt;Whether you review your draft dev.to articles alone or with friends, markdown and gitlab make it very easy to talk about changes, so here is a way to write dev.to articles on gitlab and schedule their publishing.&lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1326907703634096129-67" src="https://platform.twitter.com/embed/Tweet.html?id=1326907703634096129"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1326907703634096129-67');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1326907703634096129&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1327198242346573826-363" src="https://platform.twitter.com/embed/Tweet.html?id=1327198242346573826"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1327198242346573826-363');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1327198242346573826&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;h2&gt;
  
  
  Instructions
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;fork &lt;a href="https://gitlab.com/nickmaris/android-rb" rel="noopener noreferrer"&gt;this&lt;/a&gt; gitlab repository&lt;/li&gt;
&lt;li&gt;at dev.to &lt;a href="https://docs.dev.to/api/#section/Authentication/api_key"&gt;generate token&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;at gitlab set masked CI env vars DEV_TO_API_KEY, DEV_TO_NAME&lt;/li&gt;
&lt;li&gt;at gitlab set personal access token with write repository permissions&lt;/li&gt;
&lt;li&gt;at gitlab set CI env vars masked GITLAB_TOKEN&lt;/li&gt;
&lt;li&gt;at gitlab set a scheduled pipeline on a daily basis&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  How it works
&lt;/h2&gt;

&lt;p&gt;Gitlab CI processes entries in state.yml of master branch daily like the following:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;- filename: update.md
  date: 2020-11-08
  slug: generated-post-19p6

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If today is &lt;code&gt;2020-11-08&lt;/code&gt; then it updates the article with title mentioned in &lt;code&gt;update.md&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;And if the article does not exist, it creates it and updates &lt;code&gt;state.yml&lt;/code&gt; with its slug so that it can update it in the future if instructed by &lt;code&gt;state.yml&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Internally, the whole logic of the &lt;a href="https://gitlab.com/nickmaris/android-rb/-/blob/master/dev_to_article.rb" rel="noopener noreferrer"&gt;ruby script&lt;/a&gt; is about putting the markdown on the body_markdown param of the dev.to API.&lt;/p&gt;

&lt;p&gt;If &lt;code&gt;GET articles/#{username}/#{slug}&lt;/code&gt; returns HTTP 200, then &lt;code&gt;PUT articles/#{id}&lt;/code&gt; otherwise &lt;code&gt;POST articles&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  The editing pipeline as a...pipeline
&lt;/h2&gt;

&lt;p&gt;Each time you want to write a new article, open a Merge Request, create an entry at &lt;code&gt;state.yml&lt;/code&gt; and a file.&lt;/p&gt;

&lt;p&gt;Then the most important step is to discuss it with others and review it in an MR like &lt;a href="https://gitlab.com/nickmaris/android-rb/-/merge_requests/4" rel="noopener noreferrer"&gt;this&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Making the editing pipeline explicit in gitlab also opens the road to storing metrics (like number of comments) on state.yml and to further automation like daily checking for &lt;a href="https://github.com/tcort/markdown-link-check" rel="noopener noreferrer"&gt;broken links&lt;/a&gt;, correcting &lt;a href="https://github.com/subosito/gingerice" rel="noopener noreferrer"&gt;spelling and grammar mistakes&lt;/a&gt;, cross-posting, etc.&lt;/p&gt;

&lt;p&gt;When ready, merge the MR. The next day in the scheduled timing it will appear at dev.to.&lt;/p&gt;

&lt;h2&gt;
  
  
  Format
&lt;/h2&gt;

&lt;p&gt;Custom variables can be set for each post, located between the triple-dashed lines in your editor. Make sure &lt;code&gt;published&lt;/code&gt; is true and that there is a unique title:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;title: the title of your article&lt;/li&gt;
&lt;li&gt;published: boolean that determines whether or not your article is published&lt;/li&gt;
&lt;li&gt;description: description area in Twitter cards and open graph cards&lt;/li&gt;
&lt;li&gt;tags: max of four tags, needs to be comma-separated&lt;/li&gt;
&lt;li&gt;canonical_url: link for the canonical version of the content&lt;/li&gt;
&lt;li&gt;cover_image: cover image for post, accepts a URL. The best size is 1000 x 420.&lt;/li&gt;
&lt;li&gt;series: post series name.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Next step
&lt;/h2&gt;

&lt;p&gt;To edit this &lt;a href="https://gitlab.com/nickmaris/android-rb/-/blob/master/post-dev.to-articles-from-gitlab.md"&gt;post&lt;/a&gt;, the &lt;a href="https://gitlab.com/nickmaris/android-rb/-/blob/master/dev_to_article.rb" rel="noopener noreferrer"&gt;ruby script&lt;/a&gt; or its &lt;a href="https://gitlab.com/nickmaris/android-rb/-/blob/master/dev_to_article_spec.rb" rel="noopener noreferrer"&gt;tests&lt;/a&gt;, feel free to &lt;a href="https://gitlab.com/nickmaris/android-rb/-/issues/new?issue%5Bassignee_id%5D=&amp;amp;issue%5Bmilestone_id%5D=" rel="noopener noreferrer"&gt;open an issue&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>gitlab</category>
    </item>
  </channel>
</rss>
