migrates ghost blog to hugo
This commit is contained in:
@@ -0,0 +1,220 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en" dir="auto">
|
||||
|
||||
<head><meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
<title>Containers, Home Labs, and AI | dvdt.dev</title>
|
||||
<meta name="keywords" content="">
|
||||
<meta name="description" content="It’s been a while since I’ve posted! Thought I’d give an update on a recent change I made in my home lab I’m calling “The Great VM Migration” but do it as a thinly veiled demonstration of something far cooler, ChatGPT. I asked ChatGPT to write this post through a conversation. It got some things wrong, and I corrected it by saying “Not quite what I meant, …” and explaining where it got it wrong.">
|
||||
<meta name="author" content="David Lick">
|
||||
<link rel="canonical" href="https://new.dvdt.dev/2023/01/containers-home-labs-and-ai/">
|
||||
<link crossorigin="anonymous" href="/assets/css/stylesheet.5cfc680b1eeaeef9efbced92d46c2a9e876b72ee14fba85846afc4cff9e6e6f8.css" integrity="sha256-XPxoCx7q7vnvvO2S1Gwqnodrcu4U+6hYRq/Ez/nm5vg=" rel="preload stylesheet" as="style">
|
||||
<script defer crossorigin="anonymous" src="/assets/js/highlight.f413e19d0714851f6474e7ee9632408e58ac146fbdbe62747134bea2fa3415e0.js" integrity="sha256-9BPhnQcUhR9kdOfuljJAjlisFG+9vmJ0cTS+ovo0FeA="
|
||||
onload="hljs.initHighlightingOnLoad();"></script>
|
||||
<link rel="icon" href="https://new.dvdt.dev/favicon.ico">
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="https://new.dvdt.dev/favicon-16x16.png">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="https://new.dvdt.dev/favicon-32x32.png">
|
||||
<link rel="apple-touch-icon" href="https://new.dvdt.dev/apple-touch-icon.png">
|
||||
<link rel="mask-icon" href="https://new.dvdt.dev/safari-pinned-tab.svg">
|
||||
<meta name="theme-color" content="#2e2e33">
|
||||
<meta name="msapplication-TileColor" content="#2e2e33">
|
||||
<noscript>
|
||||
<style>
|
||||
#theme-toggle,
|
||||
.top-link {
|
||||
display: none;
|
||||
}
|
||||
|
||||
</style>
|
||||
<style>
|
||||
@media (prefers-color-scheme: dark) {
|
||||
:root {
|
||||
--theme: rgb(29, 30, 32);
|
||||
--entry: rgb(46, 46, 51);
|
||||
--primary: rgb(218, 218, 219);
|
||||
--secondary: rgb(155, 156, 157);
|
||||
--tertiary: rgb(65, 66, 68);
|
||||
--content: rgb(196, 196, 197);
|
||||
--hljs-bg: rgb(46, 46, 51);
|
||||
--code-bg: rgb(55, 56, 62);
|
||||
--border: rgb(51, 51, 51);
|
||||
}
|
||||
|
||||
.list {
|
||||
background: var(--theme);
|
||||
}
|
||||
|
||||
.list:not(.dark)::-webkit-scrollbar-track {
|
||||
background: 0 0;
|
||||
}
|
||||
|
||||
.list:not(.dark)::-webkit-scrollbar-thumb {
|
||||
border-color: var(--theme);
|
||||
}
|
||||
}
|
||||
|
||||
</style>
|
||||
</noscript>
|
||||
</head>
|
||||
|
||||
<body class="" id="top">
|
||||
<script>
|
||||
if (localStorage.getItem("pref-theme") === "dark") {
|
||||
document.body.classList.add('dark');
|
||||
} else if (localStorage.getItem("pref-theme") === "light") {
|
||||
document.body.classList.remove('dark')
|
||||
} else if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
|
||||
document.body.classList.add('dark');
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
<header class="header">
|
||||
<nav class="nav">
|
||||
<div class="logo">
|
||||
<a href="https://new.dvdt.dev/" accesskey="h" title="dvdt.dev (Alt + H)">dvdt.dev</a>
|
||||
<div class="logo-switches">
|
||||
<button id="theme-toggle" accesskey="t" title="(Alt + T)">
|
||||
<svg id="moon" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
|
||||
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
|
||||
stroke-linejoin="round">
|
||||
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
|
||||
</svg>
|
||||
<svg id="sun" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
|
||||
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
|
||||
stroke-linejoin="round">
|
||||
<circle cx="12" cy="12" r="5"></circle>
|
||||
<line x1="12" y1="1" x2="12" y2="3"></line>
|
||||
<line x1="12" y1="21" x2="12" y2="23"></line>
|
||||
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
|
||||
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
|
||||
<line x1="1" y1="12" x2="3" y2="12"></line>
|
||||
<line x1="21" y1="12" x2="23" y2="12"></line>
|
||||
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
|
||||
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<ul id="menu">
|
||||
<li>
|
||||
<a href="https://new.dvdt.dev/about-me/" title="about me">
|
||||
<span>about me</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="https://new.dvdt.dev/support" title="support">
|
||||
<span>support</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
||||
<main class="main">
|
||||
|
||||
<article class="post-single">
|
||||
<header class="post-header">
|
||||
|
||||
<h1 class="post-title">
|
||||
Containers, Home Labs, and AI
|
||||
</h1>
|
||||
<div class="post-meta"><span title='2023-01-14 00:00:00 +0000 UTC'>January 14, 2023</span> · David Lick
|
||||
|
||||
</div>
|
||||
</header>
|
||||
<div class="post-content"><p><img loading="lazy" src="/img/stacked-containers.jpg" alt="Photo by <a href="https://unsplash.com/@guibolduc?utm_source=ghost&amp;utm_medium=referral&amp;utm_campaign=api-credit">Guillaume Bolduc</a> / <a href="https://unsplash.com/?utm_source=ghost&amp;utm_medium=referral&amp;utm_campaign=api-credit">Unsplash</a>" />
|
||||
</p>
|
||||
<p>It’s been a while since I’ve posted! Thought I’d give an update on a recent change I made in my home lab I’m calling “The Great VM Migration” but do it as a thinly veiled demonstration of something far cooler, <a href="https://chat.openai.com/">ChatGPT</a>. I asked ChatGPT to write this post through a conversation. It got some things wrong, and I corrected it by saying “Not quite what I meant, …” and explaining where it got it wrong. And it fixed it… we’ll all be out of a job someday because of this but here we go. What follows is ChatGPT talking about updates I made to my home lab.</p>
|
||||
<blockquote>
|
||||
<p>It’s been a while since I’ve posted about my home lab, but I wanted to share some exciting news. I recently made the switch from using virtual machines (VMs) to containerization with Docker, and it’s been a game-changer.</p>
|
||||
<p>As a senior engineer, I understand the importance of a well-maintained home lab. It’s a valuable tool for experimenting with new technologies, testing out configurations, and honing our skills. However, managing multiple VMs can be a real headache. That’s why I made the switch to Docker, and it’s been a huge improvement.</p>
|
||||
<p>Docker allows developers to create, deploy, and run applications in containers. These containers are lightweight, portable, and share the host system’s kernel, making it more efficient in terms of resources. In contrast, VMs are heavyweight and require more resources to run. With Docker, I can run more services on the same hardware, making it more resource-efficient.</p>
|
||||
<p>One of the biggest advantages of using Docker over VMs is the ease of maintenance. With VMs, updating, patching and troubleshooting each individual machine can be a tedious and time-consuming task. With Docker, I can update and patch at the container level, making it much simpler to manage. Additionally, because containers are isolated from one another, it’s easy to see which containers are running and what services they are providing. This helps to reduce the clutter and make it easier to understand the overall architecture of my home lab.</p>
|
||||
<p>Another advantage of using Docker is the speed at which I can launch new services. With VMs, the process of setting up a new machine, installing the operating system, configuring the network and so on can be quite time-consuming. With Docker, I can launch new services as containers in a matter of minutes. This is particularly useful when I am experimenting with new technologies or trying out different configurations.</p>
|
||||
<p>But the benefits don’t stop there. To provide secure public access to my services on demand, I set up a cloud-based nginx reverse proxy. This reverse proxy is publicly accessible, but it connects to my home lab over a VPN, only exposing the services that I want to be public. This allows me to access my services remotely, while also keeping them secure behind a VPN connection. This is particularly useful when I need to share my services with colleagues or demonstrate them to clients.</p>
|
||||
<p>In conclusion, upgrading my home lab to use Docker containers was a wise decision. Not only does it provide a more efficient and organized solution, but it also greatly reduces the maintenance burden and decreases time to launch for services. The ease of use, speed, and portability of Docker containers make them a perfect fit for home lab environments. With the added security of a cloud-based nginx reverse proxy connecting over VPN, I am able to access my services securely and on demand. I should have done it sooner, but I’m glad I finally made the switch.</p>
|
||||
</blockquote>
|
||||
<p>I didn’t edit the above text. Any changes were conversational corrections given to ChatGPT itself and it was asked to regenerate the post. I started high level: “write me a blog post about migrating my home lab from VMs to Docker containers.” It spit out a pretty passable blog post but it didn’t have my conversational voice. So I told it, “Write that same post but more conversational and engaging.” And it did. Then I felt like it didn’t have a ton of substance (it still doesn’t but there’s more than there was); so, I asked it to provide more detail and from the perspective of a senior engineer. Now we’re getting somewhere.</p>
|
||||
<p>From there I wanted to make a specific point that by Dockerizing my home lab I’m able to spin up new services much faster. So I asked it to make that change. Added, no problem. Up until now I’m impressed and pretty beside myself that this model was able to handle everything I’d thrown at it so far. So I decided to give it something a bit harder; I asked it to “Include another section about using a cloud nginx reverse proxy over VPN to provide secure public access on demand.” It added the section and did exactly what I told it, which was “the reverse proxy is publicly accessible over the VPN” and that’s not quite right. I explained the difference by telling ChatGPT, “The nginx reverse proxy is public but connects to the home lab over VPN and only exposes the services I want to be public.” And it fixed it.</p>
|
||||
<p>This thing is some kind of arcane wizardry or black magic because it doesn’t feel real. This model is going to change the world. Maybe for the better, maybe for the worse but it is an incredible tool. It’s like having a dedicated assistant who has read every book, visited every website, and can answer any question. Maybe not always correctly, but you can ask it for sources to follow up on. Used in the right way this is a force multiplier like the world has never seen and it’s only going to get better.</p>
|
||||
<p>(And I asked it plagarism rules before posting this which it explained to me and asked me politely to please cite the original source. So thanks for the blog post, ChatGPT.)</p>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<footer class="post-footer">
|
||||
<ul class="post-tags">
|
||||
</ul>
|
||||
</footer>
|
||||
</article>
|
||||
</main>
|
||||
|
||||
<footer class="footer">
|
||||
<span>© 2023 <a href="https://new.dvdt.dev/">dvdt.dev</a></span>
|
||||
</footer>
|
||||
<a href="#top" aria-label="go to top" title="Go to Top (Alt + G)" class="top-link" id="top-link" accesskey="g">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 6" fill="currentColor">
|
||||
<path d="M12 6H0l6-6z" />
|
||||
</svg>
|
||||
</a><footer class="footer">PGP: 6FF9 2943 B795 21DC 51D2 4734 715C 88E0 E239 7C72</footer>
|
||||
|
||||
|
||||
<script>
|
||||
let menu = document.getElementById('menu')
|
||||
if (menu) {
|
||||
menu.scrollLeft = localStorage.getItem("menu-scroll-position");
|
||||
menu.onscroll = function () {
|
||||
localStorage.setItem("menu-scroll-position", menu.scrollLeft);
|
||||
}
|
||||
}
|
||||
|
||||
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
|
||||
anchor.addEventListener("click", function (e) {
|
||||
e.preventDefault();
|
||||
var id = this.getAttribute("href").substr(1);
|
||||
if (!window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
|
||||
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView({
|
||||
behavior: "smooth"
|
||||
});
|
||||
} else {
|
||||
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView();
|
||||
}
|
||||
if (id === "top") {
|
||||
history.replaceState(null, null, " ");
|
||||
} else {
|
||||
history.pushState(null, null, `#${id}`);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
</script>
|
||||
<script>
|
||||
var mybutton = document.getElementById("top-link");
|
||||
window.onscroll = function () {
|
||||
if (document.body.scrollTop > 800 || document.documentElement.scrollTop > 800) {
|
||||
mybutton.style.visibility = "visible";
|
||||
mybutton.style.opacity = "1";
|
||||
} else {
|
||||
mybutton.style.visibility = "hidden";
|
||||
mybutton.style.opacity = "0";
|
||||
}
|
||||
};
|
||||
|
||||
</script>
|
||||
<script>
|
||||
document.getElementById("theme-toggle").addEventListener("click", () => {
|
||||
if (document.body.className.includes("dark")) {
|
||||
document.body.classList.remove('dark');
|
||||
localStorage.setItem("pref-theme", 'light');
|
||||
} else {
|
||||
document.body.classList.add('dark');
|
||||
localStorage.setItem("pref-theme", 'dark');
|
||||
}
|
||||
})
|
||||
|
||||
</script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,220 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en" dir="auto">
|
||||
|
||||
<head><meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
<title>Sorting Digital Life | dvdt.dev</title>
|
||||
<meta name="keywords" content="">
|
||||
<meta name="description" content="Sorting out your digital life How many people feel like they have a handle on their digital selves? I remember years ago before I embarked on a journey of “digital hygiene” that I knew that I was just leaking information everywhere. Facebook, Snapchat, Google/Gmail.. Data everywhere, under control from big corporations. It was a feeling of being bare and vulnerable but I didn’t quite understand why I should care. Google’s motto was “Do no evil” so they’re trustworthy, right?">
|
||||
<meta name="author" content="">
|
||||
<link rel="canonical" href="https://new.dvdt.dev/2023/03/sorting-digital-life/">
|
||||
<link crossorigin="anonymous" href="/assets/css/stylesheet.5cfc680b1eeaeef9efbced92d46c2a9e876b72ee14fba85846afc4cff9e6e6f8.css" integrity="sha256-XPxoCx7q7vnvvO2S1Gwqnodrcu4U+6hYRq/Ez/nm5vg=" rel="preload stylesheet" as="style">
|
||||
<script defer crossorigin="anonymous" src="/assets/js/highlight.f413e19d0714851f6474e7ee9632408e58ac146fbdbe62747134bea2fa3415e0.js" integrity="sha256-9BPhnQcUhR9kdOfuljJAjlisFG+9vmJ0cTS+ovo0FeA="
|
||||
onload="hljs.initHighlightingOnLoad();"></script>
|
||||
<link rel="icon" href="https://new.dvdt.dev/favicon.ico">
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="https://new.dvdt.dev/favicon-16x16.png">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="https://new.dvdt.dev/favicon-32x32.png">
|
||||
<link rel="apple-touch-icon" href="https://new.dvdt.dev/apple-touch-icon.png">
|
||||
<link rel="mask-icon" href="https://new.dvdt.dev/safari-pinned-tab.svg">
|
||||
<meta name="theme-color" content="#2e2e33">
|
||||
<meta name="msapplication-TileColor" content="#2e2e33">
|
||||
<noscript>
|
||||
<style>
|
||||
#theme-toggle,
|
||||
.top-link {
|
||||
display: none;
|
||||
}
|
||||
|
||||
</style>
|
||||
<style>
|
||||
@media (prefers-color-scheme: dark) {
|
||||
:root {
|
||||
--theme: rgb(29, 30, 32);
|
||||
--entry: rgb(46, 46, 51);
|
||||
--primary: rgb(218, 218, 219);
|
||||
--secondary: rgb(155, 156, 157);
|
||||
--tertiary: rgb(65, 66, 68);
|
||||
--content: rgb(196, 196, 197);
|
||||
--hljs-bg: rgb(46, 46, 51);
|
||||
--code-bg: rgb(55, 56, 62);
|
||||
--border: rgb(51, 51, 51);
|
||||
}
|
||||
|
||||
.list {
|
||||
background: var(--theme);
|
||||
}
|
||||
|
||||
.list:not(.dark)::-webkit-scrollbar-track {
|
||||
background: 0 0;
|
||||
}
|
||||
|
||||
.list:not(.dark)::-webkit-scrollbar-thumb {
|
||||
border-color: var(--theme);
|
||||
}
|
||||
}
|
||||
|
||||
</style>
|
||||
</noscript>
|
||||
</head>
|
||||
|
||||
<body class="" id="top">
|
||||
<script>
|
||||
if (localStorage.getItem("pref-theme") === "dark") {
|
||||
document.body.classList.add('dark');
|
||||
} else if (localStorage.getItem("pref-theme") === "light") {
|
||||
document.body.classList.remove('dark')
|
||||
} else if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
|
||||
document.body.classList.add('dark');
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
<header class="header">
|
||||
<nav class="nav">
|
||||
<div class="logo">
|
||||
<a href="https://new.dvdt.dev/" accesskey="h" title="dvdt.dev (Alt + H)">dvdt.dev</a>
|
||||
<div class="logo-switches">
|
||||
<button id="theme-toggle" accesskey="t" title="(Alt + T)">
|
||||
<svg id="moon" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
|
||||
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
|
||||
stroke-linejoin="round">
|
||||
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
|
||||
</svg>
|
||||
<svg id="sun" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
|
||||
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
|
||||
stroke-linejoin="round">
|
||||
<circle cx="12" cy="12" r="5"></circle>
|
||||
<line x1="12" y1="1" x2="12" y2="3"></line>
|
||||
<line x1="12" y1="21" x2="12" y2="23"></line>
|
||||
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
|
||||
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
|
||||
<line x1="1" y1="12" x2="3" y2="12"></line>
|
||||
<line x1="21" y1="12" x2="23" y2="12"></line>
|
||||
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
|
||||
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<ul id="menu">
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
||||
<main class="main">
|
||||
|
||||
<article class="post-single">
|
||||
<header class="post-header">
|
||||
|
||||
<h1 class="post-title">
|
||||
Sorting Digital Life
|
||||
</h1>
|
||||
<div class="post-meta"><span title='2023-03-19 00:00:00 +0000 UTC'>March 19, 2023</span>
|
||||
|
||||
</div>
|
||||
</header>
|
||||
<div class="post-content"><h2 id="sorting-out-your-digital-life">Sorting out your digital life<a hidden class="anchor" aria-hidden="true" href="#sorting-out-your-digital-life">#</a></h2>
|
||||
<p>How many people feel like they have a handle on their digital selves? I remember years ago before I embarked on a journey of “digital hygiene” that I knew that I was just leaking information everywhere. Facebook, Snapchat, Google/Gmail.. Data everywhere, under control from big corporations. It was a feeling of being bare and vulnerable but I didn’t quite understand why I should care. Google’s motto was “Do no evil” so they’re trustworthy, right? Cambridge Analytica was the real kick in the pants I needed to sort out my digital life.</p>
|
||||
<h3 id="cleaning-up">Cleaning up<a hidden class="anchor" aria-hidden="true" href="#cleaning-up">#</a></h3>
|
||||
<p>Starting a privacy journey there’s an overwhelming feeling of “My data is already out there so there’s nothing I can do now.” The value of your data is in the current picture of you, your interests, your thoughts which companies use to make predictions. You don’t have to continue to feed the system; you have to break that link.</p>
|
||||
<p>You have two options:</p>
|
||||
<ul>
|
||||
<li>You can delete the accounts and find ways to solve for the functionality they provided as you go. This is what I did and it was hard but the privacy benefit was immediate. It also kept me accountable and made it difficult to return to the walled gardens.</li>
|
||||
<li>You can find services that replace centralized services and stop using them piecemeal. You may find this easier to do because you don’t hard-cut the functionality you’ve come to rely on. It will take a long time and there will be myriad ways to backslide into giving up.</li>
|
||||
</ul>
|
||||
<p>This first step is probably the biggest benefit you can have by not participating in privacy violating services in the first place. Diminishing returns and the <a href="https://en.wikipedia.org/wiki/Pareto_principle">80/20 rule</a> is in play here: 80% of the benefit can be had with 20% of the work just by deleting and not using the obvious big offenders. The rest of the points here will be 80% of the work (and cost) to claw back that last remaining 10-20% of your privacy.</p>
|
||||
<h3 id="stopping-tracking">Stopping tracking<a hidden class="anchor" aria-hidden="true" href="#stopping-tracking">#</a></h3>
|
||||
<p>Most of you probably haven’t seen the telemetry that your devices are sending. Out of sight; out of mind. Something that was very eye-opening to me was installing a <a href="https://pi-hole.net/">Pi-Hole</a> on my home network. Seeing hundreds of thousands of phone-home requests going out to places all around the Internet was haunting to see. Some devices were contacting tracking services constantly. Pi-Hole is a great device to stop those requests getting out.</p>
|
||||
<p><a href="https://ublockorigin.com">UBlock Origin</a> gets installed on all my browsers, desktop and mobile, with every list enabled. This blocks sites loading scripts. You can go too far with this by blocking all scripts which will break most sites. I tried that for some time and the downsides for usability weren’t worth the few extra percentage points of privacy.</p>
|
||||
<p>One of the easiest things you can do is use Firefox and turn on <a href="https://support.mozilla.org/en-US/kb/enhanced-tracking-protection-firefox-desktop">Enhanced Tracking Protection</a> at it’s strict setting. This blocks most <a href="https://en.wikipedia.org/wiki/Device_fingerprint">device fingerprinting</a>, that can uniquely identify you as you travel around the Internet, and cross site cookies and trackers.</p>
|
||||
<h3 id="device-security">Device security<a hidden class="anchor" aria-hidden="true" href="#device-security">#</a></h3>
|
||||
<p>This deserves a whole series of posts on its own but if you don’t fully control the devices you can’t ever really be secure and private. Windows and MacOS both leak all kinds of data to their parent companies. The telemetry and data collection are baked into the operating systems and you can never really get rid of it.</p>
|
||||
<p>Running Linux is the only way to have full control over your systems. Again, you can go really deep and refuse to run any closed-source software (ahem.. <a href="https://en.wikipedia.org/wiki/Richard_Stallman">Richard Stallman</a>). That pesky 80/20 rule shows up here again and you’ll have to decide the trade-offs you’re willing to make for convenience and usability. If you run a mainstream distro like Ubuntu or Fedora you’ll get enough benefit for most people.</p>
|
||||
<p>Privacy with mobile devices has come a long way. I choose to run <a href="https://calyxos.org/">CalyxOS</a> on a Pixel phone for a 100% de-Googled experience. I can download all the apps in the Google Play Store without a Google account with the <a href="https://gitlab.com/AuroraOSS/AuroraStore">Aurora Store</a>. CalyxOS has an option to install with <a href="https://microg.org/">MicroG</a> which is a privacy respecting implementation of Google Play Services which sends as little data as possible to Google. This makes things like push notifications and maps/GPS possible. But I choose apps from the open source <a href="https://f-droid.org/">F-Droid</a> store where ever possible since they’re open source.</p>
|
||||
<h3 id="hosting">Hosting<a hidden class="anchor" aria-hidden="true" href="#hosting">#</a></h3>
|
||||
<p>One of the biggest digital life boons for me has been running a personal server. It lets me host my own privacy respecting FOSS services that replicate all kinds of centralized services. Google Drive replacement? <a href="https://nextcloud.com/">Nextcloud</a>. GitHub replacement? <a href="https://gitea.io/en-us/">Gitea</a>. 1Password/LastPass replacement? <a href="https://github.com/dani-garcia/vaultwarden">Vaultwarden</a>. Netflix/Hulu/etc replacement? <a href="https://www.plex.tv/">Plex</a> or <a href="https://jellyfin.org/">Jellyfin</a>. News/Feedly replacement? <a href="https://www.freshrss.org/">FreshRSS</a>. FB Messenger replacement? <a href="https://matrix.org/">Matrix</a>. Find My iPhone replacement? <a href="https://github.com/bilde2910/Hauk">Hauk</a>. And dozens of other different services like a <a href="https://dvdt.dev/running-a-bitcoin-full-node/">Bitcoin node</a>, a <a href="https://suredbits.com/lightning-101-what-is-a-lightning-node/">Lightning node</a>, a <a href="https://nostr.com/relays">Nostr relay</a> and so on.</p>
|
||||
<h3 id="conclusion">Conclusion<a hidden class="anchor" aria-hidden="true" href="#conclusion">#</a></h3>
|
||||
<p>These days I feel like I have largely achieved the level of privacy I set out for. That doesn’t mean I’m a recluse or a luddite; far from it. But it means I can selectively provide information that I want. Our data is atomically who we are, it’s our lives. And my data is under my own control and that’s freedom. It’s been by far the most rewarding, and fulfilling thing I have done in my life. It’s a topic that’s as wide as it is deep, and I know I’ll never be done learning and growing and I’m glad to be on the journey.</p>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<footer class="post-footer">
|
||||
<ul class="post-tags">
|
||||
</ul>
|
||||
</footer>
|
||||
</article>
|
||||
</main>
|
||||
|
||||
<footer class="footer">
|
||||
<span>© 2023 <a href="https://new.dvdt.dev/">dvdt.dev</a></span>
|
||||
<span>
|
||||
Powered by
|
||||
<a href="https://gohugo.io/" rel="noopener noreferrer" target="_blank">Hugo</a> &
|
||||
<a href="https://github.com/adityatelange/hugo-PaperMod/" rel="noopener" target="_blank">PaperMod</a>
|
||||
</span>
|
||||
</footer>
|
||||
<a href="#top" aria-label="go to top" title="Go to Top (Alt + G)" class="top-link" id="top-link" accesskey="g">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 6" fill="currentColor">
|
||||
<path d="M12 6H0l6-6z" />
|
||||
</svg>
|
||||
</a>
|
||||
|
||||
<script>
|
||||
let menu = document.getElementById('menu')
|
||||
if (menu) {
|
||||
menu.scrollLeft = localStorage.getItem("menu-scroll-position");
|
||||
menu.onscroll = function () {
|
||||
localStorage.setItem("menu-scroll-position", menu.scrollLeft);
|
||||
}
|
||||
}
|
||||
|
||||
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
|
||||
anchor.addEventListener("click", function (e) {
|
||||
e.preventDefault();
|
||||
var id = this.getAttribute("href").substr(1);
|
||||
if (!window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
|
||||
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView({
|
||||
behavior: "smooth"
|
||||
});
|
||||
} else {
|
||||
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView();
|
||||
}
|
||||
if (id === "top") {
|
||||
history.replaceState(null, null, " ");
|
||||
} else {
|
||||
history.pushState(null, null, `#${id}`);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
</script>
|
||||
<script>
|
||||
var mybutton = document.getElementById("top-link");
|
||||
window.onscroll = function () {
|
||||
if (document.body.scrollTop > 800 || document.documentElement.scrollTop > 800) {
|
||||
mybutton.style.visibility = "visible";
|
||||
mybutton.style.opacity = "1";
|
||||
} else {
|
||||
mybutton.style.visibility = "hidden";
|
||||
mybutton.style.opacity = "0";
|
||||
}
|
||||
};
|
||||
|
||||
</script>
|
||||
<script>
|
||||
document.getElementById("theme-toggle").addEventListener("click", () => {
|
||||
if (document.body.className.includes("dark")) {
|
||||
document.body.classList.remove('dark');
|
||||
localStorage.setItem("pref-theme", 'light');
|
||||
} else {
|
||||
document.body.classList.add('dark');
|
||||
localStorage.setItem("pref-theme", 'dark');
|
||||
}
|
||||
})
|
||||
|
||||
</script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,227 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en" dir="auto">
|
||||
|
||||
<head><meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
<title>Sorting Out Your Digital Life | dvdt.dev</title>
|
||||
<meta name="keywords" content="">
|
||||
<meta name="description" content="How many people feel like they have a handle on their digital selves? I remember years ago before I embarked on a journey of “digital hygiene” that I knew that I was just leaking information everywhere. Facebook, Snapchat, Google/Gmail.. Data everywhere, under control from big corporations. It was a feeling of being bare and vulnerable but I didn’t quite understand why I should care. Google’s motto was “Do no evil” so they’re trustworthy, right?">
|
||||
<meta name="author" content="David Lick">
|
||||
<link rel="canonical" href="https://new.dvdt.dev/2023/03/sorting-out-your-digital-life/">
|
||||
<link crossorigin="anonymous" href="/assets/css/stylesheet.5cfc680b1eeaeef9efbced92d46c2a9e876b72ee14fba85846afc4cff9e6e6f8.css" integrity="sha256-XPxoCx7q7vnvvO2S1Gwqnodrcu4U+6hYRq/Ez/nm5vg=" rel="preload stylesheet" as="style">
|
||||
<script defer crossorigin="anonymous" src="/assets/js/highlight.f413e19d0714851f6474e7ee9632408e58ac146fbdbe62747134bea2fa3415e0.js" integrity="sha256-9BPhnQcUhR9kdOfuljJAjlisFG+9vmJ0cTS+ovo0FeA="
|
||||
onload="hljs.initHighlightingOnLoad();"></script>
|
||||
<link rel="icon" href="https://new.dvdt.dev/favicon.ico">
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="https://new.dvdt.dev/favicon-16x16.png">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="https://new.dvdt.dev/favicon-32x32.png">
|
||||
<link rel="apple-touch-icon" href="https://new.dvdt.dev/apple-touch-icon.png">
|
||||
<link rel="mask-icon" href="https://new.dvdt.dev/safari-pinned-tab.svg">
|
||||
<meta name="theme-color" content="#2e2e33">
|
||||
<meta name="msapplication-TileColor" content="#2e2e33">
|
||||
<noscript>
|
||||
<style>
|
||||
#theme-toggle,
|
||||
.top-link {
|
||||
display: none;
|
||||
}
|
||||
|
||||
</style>
|
||||
<style>
|
||||
@media (prefers-color-scheme: dark) {
|
||||
:root {
|
||||
--theme: rgb(29, 30, 32);
|
||||
--entry: rgb(46, 46, 51);
|
||||
--primary: rgb(218, 218, 219);
|
||||
--secondary: rgb(155, 156, 157);
|
||||
--tertiary: rgb(65, 66, 68);
|
||||
--content: rgb(196, 196, 197);
|
||||
--hljs-bg: rgb(46, 46, 51);
|
||||
--code-bg: rgb(55, 56, 62);
|
||||
--border: rgb(51, 51, 51);
|
||||
}
|
||||
|
||||
.list {
|
||||
background: var(--theme);
|
||||
}
|
||||
|
||||
.list:not(.dark)::-webkit-scrollbar-track {
|
||||
background: 0 0;
|
||||
}
|
||||
|
||||
.list:not(.dark)::-webkit-scrollbar-thumb {
|
||||
border-color: var(--theme);
|
||||
}
|
||||
}
|
||||
|
||||
</style>
|
||||
</noscript>
|
||||
</head>
|
||||
|
||||
<body class="" id="top">
|
||||
<script>
|
||||
if (localStorage.getItem("pref-theme") === "dark") {
|
||||
document.body.classList.add('dark');
|
||||
} else if (localStorage.getItem("pref-theme") === "light") {
|
||||
document.body.classList.remove('dark')
|
||||
} else if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
|
||||
document.body.classList.add('dark');
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
<header class="header">
|
||||
<nav class="nav">
|
||||
<div class="logo">
|
||||
<a href="https://new.dvdt.dev/" accesskey="h" title="dvdt.dev (Alt + H)">dvdt.dev</a>
|
||||
<div class="logo-switches">
|
||||
<button id="theme-toggle" accesskey="t" title="(Alt + T)">
|
||||
<svg id="moon" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
|
||||
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
|
||||
stroke-linejoin="round">
|
||||
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
|
||||
</svg>
|
||||
<svg id="sun" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
|
||||
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
|
||||
stroke-linejoin="round">
|
||||
<circle cx="12" cy="12" r="5"></circle>
|
||||
<line x1="12" y1="1" x2="12" y2="3"></line>
|
||||
<line x1="12" y1="21" x2="12" y2="23"></line>
|
||||
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
|
||||
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
|
||||
<line x1="1" y1="12" x2="3" y2="12"></line>
|
||||
<line x1="21" y1="12" x2="23" y2="12"></line>
|
||||
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
|
||||
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<ul id="menu">
|
||||
<li>
|
||||
<a href="https://new.dvdt.dev/about-me/" title="about me">
|
||||
<span>about me</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="https://new.dvdt.dev/support" title="support">
|
||||
<span>support</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
||||
<main class="main">
|
||||
|
||||
<article class="post-single">
|
||||
<header class="post-header">
|
||||
|
||||
<h1 class="post-title">
|
||||
Sorting Out Your Digital Life
|
||||
</h1>
|
||||
<div class="post-meta"><span title='2023-03-19 00:00:00 +0000 UTC'>March 19, 2023</span> · David Lick
|
||||
|
||||
</div>
|
||||
</header>
|
||||
<div class="post-content"><p><img loading="lazy" src="/img/matrix-code.jpg" alt="Photo by <a href="https://unsplash.com/@markusspiske?utm_source=ghost&amp;utm_medium=referral&amp;utm_campaign=api-credit">Markus Spiske</a> / <a href="https://unsplash.com/?utm_source=ghost&amp;utm_medium=referral&amp;utm_campaign=api-credit">Unsplash</a>" />
|
||||
</p>
|
||||
<p>How many people feel like they have a handle on their digital selves? I remember years ago before I embarked on a journey of “digital hygiene” that I knew that I was just leaking information everywhere. Facebook, Snapchat, Google/Gmail.. Data everywhere, under control from big corporations. It was a feeling of being bare and vulnerable but I didn’t quite understand why I should care. Google’s motto was “Do no evil” so they’re trustworthy, right? Cambridge Analytica was the real kick in the pants I needed to sort out my digital life.</p>
|
||||
<h3 id="cleaning-up">Cleaning up<a hidden class="anchor" aria-hidden="true" href="#cleaning-up">#</a></h3>
|
||||
<p>Starting a privacy journey there’s an overwhelming feeling of “My data is already out there so there’s nothing I can do now.” The value of your data is in the current picture of you, your interests, your thoughts which companies use to make predictions. You don’t have to continue to feed the system; you have to break that link.</p>
|
||||
<p>You have two options:</p>
|
||||
<ul>
|
||||
<li>You can delete the accounts and find ways to solve for the functionality they provided as you go. This is what I did and it was hard but the privacy benefit was immediate. It also kept me accountable and made it difficult to return to the walled gardens.</li>
|
||||
<li>You can find services that replace centralized services and stop using them piecemeal. You may find this easier to do because you don’t hard-cut the functionality you’ve come to rely on. It will take a long time and there will be myriad ways to backslide into giving up.</li>
|
||||
</ul>
|
||||
<p>This first step is probably the biggest benefit you can have by not participating in privacy violating services in the first place. Diminishing returns and the <a href="https://en.wikipedia.org/wiki/Pareto_principle">80/20 rule</a> is in play here: 80% of the benefit can be had with 20% of the work just by deleting and not using the obvious big offenders. The rest of the points here will be 80% of the work (and cost) to claw back that last remaining 10-20% of your privacy.</p>
|
||||
<h3 id="stopping-tracking">Stopping tracking<a hidden class="anchor" aria-hidden="true" href="#stopping-tracking">#</a></h3>
|
||||
<p>Most of you probably haven’t seen the telemetry that your devices are sending. Out of sight; out of mind. Something that was very eye-opening to me was installing a <a href="https://pi-hole.net/">Pi-Hole</a> on my home network. Seeing hundreds of thousands of phone-home requests going out to places all around the Internet was haunting to see. Some devices were contacting tracking services constantly. Pi-Hole is a great device to stop those requests getting out.</p>
|
||||
<p><a href="https://ublockorigin.com">UBlock Origin</a> gets installed on all my browsers, desktop and mobile, with every list enabled. This blocks sites loading scripts. You can go too far with this by blocking all scripts which will break most sites. I tried that for some time and the downsides for usability weren’t worth the few extra percentage points of privacy.</p>
|
||||
<p>One of the easiest things you can do is use Firefox and turn on <a href="https://support.mozilla.org/en-US/kb/enhanced-tracking-protection-firefox-desktop">Enhanced Tracking Protection</a> at it’s strict setting. This blocks most <a href="https://en.wikipedia.org/wiki/Device_fingerprint">device fingerprinting</a>, that can uniquely identify you as you travel around the Internet, and cross site cookies and trackers.</p>
|
||||
<h3 id="device-security">Device security<a hidden class="anchor" aria-hidden="true" href="#device-security">#</a></h3>
|
||||
<p>This deserves a whole series of posts on its own but if you don’t fully control the devices you can’t ever really be secure and private. Windows and MacOS both leak all kinds of data to their parent companies. The telemetry and data collection are baked into the operating systems and you can never really get rid of it.</p>
|
||||
<p>Running Linux is the only way to have full control over your systems. Again, you can go really deep and refuse to run any closed-source software (ahem.. <a href="https://en.wikipedia.org/wiki/Richard_Stallman">Richard Stallman</a>). That pesky 80/20 rule shows up here again and you’ll have to decide the trade-offs you’re willing to make for convenience and usability. If you run a mainstream distro like Ubuntu or Fedora you’ll get enough benefit for most people.</p>
|
||||
<p>Privacy with mobile devices has come a long way. I choose to run <a href="https://calyxos.org/">CalyxOS</a> on a Pixel phone for a 100% de-Googled experience. I can download all the apps in the Google Play Store without a Google account with the <a href="https://gitlab.com/AuroraOSS/AuroraStore">Aurora Store</a>. CalyxOS has an option to install with <a href="https://microg.org/">MicroG</a> which is a privacy respecting implementation of Google Play Services which sends as little data as possible to Google. This makes things like push notifications and maps/GPS possible. But I choose apps from the open source <a href="https://f-droid.org/">F-Droid</a> store where ever possible since they’re open source.</p>
|
||||
<h3 id="hosting">Hosting<a hidden class="anchor" aria-hidden="true" href="#hosting">#</a></h3>
|
||||
<p>One of the biggest digital life boons for me has been running a personal server. It lets me host my own privacy respecting FOSS services that replicate all kinds of centralized services. Google Drive replacement? <a href="https://nextcloud.com/">Nextcloud</a>. GitHub replacement? <a href="https://gitea.io/en-us/">Gitea</a>. 1Password/LastPass replacement? <a href="https://github.com/dani-garcia/vaultwarden">Vaultwarden</a>. Netflix/Hulu/etc replacement? <a href="https://www.plex.tv/">Plex</a> or <a href="https://jellyfin.org/">Jellyfin</a>. News/Feedly replacement? <a href="https://www.freshrss.org/">FreshRSS</a>. FB Messenger replacement? <a href="https://matrix.org/">Matrix</a>. Find My iPhone replacement? <a href="https://github.com/bilde2910/Hauk">Hauk</a>. And dozens of other different services like a <a href="https://dvdt.dev/running-a-bitcoin-full-node/">Bitcoin node</a>, a <a href="https://suredbits.com/lightning-101-what-is-a-lightning-node/">Lightning node</a>, a <a href="https://nostr.com/relays">Nostr relay</a> and so on.</p>
|
||||
<h3 id="conclusion">Conclusion<a hidden class="anchor" aria-hidden="true" href="#conclusion">#</a></h3>
|
||||
<p>These days I feel like I have largely achieved the level of privacy I set out for. That doesn’t mean I’m a recluse or a luddite; far from it. But it means I can selectively provide information that I want. Our data is atomically who we are, it’s our lives. And my data is under my own control and that’s freedom. It’s been by far the most rewarding, and fulfilling thing I have done in my life. It’s a topic that’s as wide as it is deep, and I know I’ll never be done learning and growing and I’m glad to be on the journey.</p>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<footer class="post-footer">
|
||||
<ul class="post-tags">
|
||||
</ul>
|
||||
</footer>
|
||||
</article>
|
||||
</main>
|
||||
|
||||
<footer class="footer">
|
||||
<span>© 2023 <a href="https://new.dvdt.dev/">dvdt.dev</a></span>
|
||||
</footer>
|
||||
<a href="#top" aria-label="go to top" title="Go to Top (Alt + G)" class="top-link" id="top-link" accesskey="g">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 6" fill="currentColor">
|
||||
<path d="M12 6H0l6-6z" />
|
||||
</svg>
|
||||
</a><footer class="footer">PGP: 6FF9 2943 B795 21DC 51D2 4734 715C 88E0 E239 7C72</footer>
|
||||
|
||||
|
||||
<script>
|
||||
let menu = document.getElementById('menu')
|
||||
if (menu) {
|
||||
menu.scrollLeft = localStorage.getItem("menu-scroll-position");
|
||||
menu.onscroll = function () {
|
||||
localStorage.setItem("menu-scroll-position", menu.scrollLeft);
|
||||
}
|
||||
}
|
||||
|
||||
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
|
||||
anchor.addEventListener("click", function (e) {
|
||||
e.preventDefault();
|
||||
var id = this.getAttribute("href").substr(1);
|
||||
if (!window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
|
||||
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView({
|
||||
behavior: "smooth"
|
||||
});
|
||||
} else {
|
||||
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView();
|
||||
}
|
||||
if (id === "top") {
|
||||
history.replaceState(null, null, " ");
|
||||
} else {
|
||||
history.pushState(null, null, `#${id}`);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
</script>
|
||||
<script>
|
||||
var mybutton = document.getElementById("top-link");
|
||||
window.onscroll = function () {
|
||||
if (document.body.scrollTop > 800 || document.documentElement.scrollTop > 800) {
|
||||
mybutton.style.visibility = "visible";
|
||||
mybutton.style.opacity = "1";
|
||||
} else {
|
||||
mybutton.style.visibility = "hidden";
|
||||
mybutton.style.opacity = "0";
|
||||
}
|
||||
};
|
||||
|
||||
</script>
|
||||
<script>
|
||||
document.getElementById("theme-toggle").addEventListener("click", () => {
|
||||
if (document.body.className.includes("dark")) {
|
||||
document.body.classList.remove('dark');
|
||||
localStorage.setItem("pref-theme", 'light');
|
||||
} else {
|
||||
document.body.classList.add('dark');
|
||||
localStorage.setItem("pref-theme", 'dark');
|
||||
}
|
||||
})
|
||||
|
||||
</script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,218 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en" dir="auto">
|
||||
|
||||
<head><meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
<title>Freedom Tech | dvdt.dev</title>
|
||||
<meta name="keywords" content="">
|
||||
<meta name="description" content="Freedom dies by people just taking little bit more and a little bit more… we just end up in a situation people are like “How the fuck did we end up here?” And at some point down the line you have to practice civil disobedience and say: “No, I will not fucking comply.”
|
||||
Matt Odell https://odell.xyz
|
||||
Peter McCormack hosted Matt Odell on What Bitcoin Did with discussion focused around why decentralized technology is so important.">
|
||||
<meta name="author" content="David Lick">
|
||||
<link rel="canonical" href="https://new.dvdt.dev/2023/07/freedom-tech/">
|
||||
<link crossorigin="anonymous" href="/assets/css/stylesheet.5cfc680b1eeaeef9efbced92d46c2a9e876b72ee14fba85846afc4cff9e6e6f8.css" integrity="sha256-XPxoCx7q7vnvvO2S1Gwqnodrcu4U+6hYRq/Ez/nm5vg=" rel="preload stylesheet" as="style">
|
||||
<script defer crossorigin="anonymous" src="/assets/js/highlight.f413e19d0714851f6474e7ee9632408e58ac146fbdbe62747134bea2fa3415e0.js" integrity="sha256-9BPhnQcUhR9kdOfuljJAjlisFG+9vmJ0cTS+ovo0FeA="
|
||||
onload="hljs.initHighlightingOnLoad();"></script>
|
||||
<link rel="icon" href="https://new.dvdt.dev/favicon.ico">
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="https://new.dvdt.dev/favicon-16x16.png">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="https://new.dvdt.dev/favicon-32x32.png">
|
||||
<link rel="apple-touch-icon" href="https://new.dvdt.dev/apple-touch-icon.png">
|
||||
<link rel="mask-icon" href="https://new.dvdt.dev/safari-pinned-tab.svg">
|
||||
<meta name="theme-color" content="#2e2e33">
|
||||
<meta name="msapplication-TileColor" content="#2e2e33">
|
||||
<noscript>
|
||||
<style>
|
||||
#theme-toggle,
|
||||
.top-link {
|
||||
display: none;
|
||||
}
|
||||
|
||||
</style>
|
||||
<style>
|
||||
@media (prefers-color-scheme: dark) {
|
||||
:root {
|
||||
--theme: rgb(29, 30, 32);
|
||||
--entry: rgb(46, 46, 51);
|
||||
--primary: rgb(218, 218, 219);
|
||||
--secondary: rgb(155, 156, 157);
|
||||
--tertiary: rgb(65, 66, 68);
|
||||
--content: rgb(196, 196, 197);
|
||||
--hljs-bg: rgb(46, 46, 51);
|
||||
--code-bg: rgb(55, 56, 62);
|
||||
--border: rgb(51, 51, 51);
|
||||
}
|
||||
|
||||
.list {
|
||||
background: var(--theme);
|
||||
}
|
||||
|
||||
.list:not(.dark)::-webkit-scrollbar-track {
|
||||
background: 0 0;
|
||||
}
|
||||
|
||||
.list:not(.dark)::-webkit-scrollbar-thumb {
|
||||
border-color: var(--theme);
|
||||
}
|
||||
}
|
||||
|
||||
</style>
|
||||
</noscript>
|
||||
</head>
|
||||
|
||||
<body class="" id="top">
|
||||
<script>
|
||||
if (localStorage.getItem("pref-theme") === "dark") {
|
||||
document.body.classList.add('dark');
|
||||
} else if (localStorage.getItem("pref-theme") === "light") {
|
||||
document.body.classList.remove('dark')
|
||||
} else if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
|
||||
document.body.classList.add('dark');
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
<header class="header">
|
||||
<nav class="nav">
|
||||
<div class="logo">
|
||||
<a href="https://new.dvdt.dev/" accesskey="h" title="dvdt.dev (Alt + H)">dvdt.dev</a>
|
||||
<div class="logo-switches">
|
||||
<button id="theme-toggle" accesskey="t" title="(Alt + T)">
|
||||
<svg id="moon" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
|
||||
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
|
||||
stroke-linejoin="round">
|
||||
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
|
||||
</svg>
|
||||
<svg id="sun" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
|
||||
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
|
||||
stroke-linejoin="round">
|
||||
<circle cx="12" cy="12" r="5"></circle>
|
||||
<line x1="12" y1="1" x2="12" y2="3"></line>
|
||||
<line x1="12" y1="21" x2="12" y2="23"></line>
|
||||
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
|
||||
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
|
||||
<line x1="1" y1="12" x2="3" y2="12"></line>
|
||||
<line x1="21" y1="12" x2="23" y2="12"></line>
|
||||
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
|
||||
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<ul id="menu">
|
||||
<li>
|
||||
<a href="https://new.dvdt.dev/about-me/" title="about me">
|
||||
<span>about me</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="https://new.dvdt.dev/support" title="support">
|
||||
<span>support</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
||||
<main class="main">
|
||||
|
||||
<article class="post-single">
|
||||
<header class="post-header">
|
||||
|
||||
<h1 class="post-title">
|
||||
Freedom Tech
|
||||
</h1>
|
||||
<div class="post-meta"><span title='2023-07-18 00:00:00 +0000 UTC'>July 18, 2023</span> · David Lick
|
||||
|
||||
</div>
|
||||
</header>
|
||||
<div class="post-content"><p><img loading="lazy" src="/img/nostrich.jpg" alt="Photo by <a href="https://unsplash.com/@photosimon?utm_source=ghost&amp;utm_medium=referral&amp;utm_campaign=api-credit">Simon Infanger</a> / <a href="https://unsplash.com/?utm_source=ghost&amp;utm_medium=referral&amp;utm_campaign=api-credit">Unsplash</a>" />
|
||||
</p>
|
||||
<blockquote>
|
||||
<p>Freedom dies by people just taking little bit more and a little bit more… we just end up in a situation people are like “How the fuck did we end up here?” And at some point down the line you have to practice civil disobedience and say: “No, I will not fucking comply.”</p>
|
||||
<p>Matt Odell
|
||||
<a href="https://odell.xyz">https://odell.xyz</a></p>
|
||||
</blockquote>
|
||||
<p>Peter McCormack hosted Matt Odell on What Bitcoin Did with discussion focused around why decentralized technology is so important. I really enjoyed the podcast. For years now I’ve been cutting out services that someone else controls. Algorithms can be used to manipulate us. Centralized platforms can censor us. Nostr (Notes and Other Stuff Transmitted by Relays) is Freedom Tech that fixes all of the problems I’ve had with centralized platforms and I am extremely bullish on it’s future.</p>
|
||||
<p>Nostr is very simply a protocol for communicating. That’s it. Like RSS, or SMTP, or HTTP, or IP… It isn’t a platform. It isn’t an application. It doesn’t have content algorithms force feeding you things you don’t want to see. It’s a self curated feed of people you follow. It’s interoperable between clients which means I can use Amethyst and you can use Damus and we can still interact. It means I can decide to switch to another app and all my followers come with me. If app developers decide to behave badly I can write my own application in an afternoon. I host my own relay (wss://nostr.dvdt.dev) which means my notes are available for anyone to read as long as I feel like hosting them and no one can stop them.</p>
|
||||
<p>Nostr is also monetized with Bitcoin. Zaps (lightning network payments) are built into the protocol. You can charge someone satoshis to let them use your relay. You can zap posts you like to support people doing or saying things you like. And all kinds of extensions have been written through NIPs (Nostr Improvement Possibilities) that add functionality to the protocol for marketplaces, communities (Reddit), and even events a la Facebook Events.</p>
|
||||
<p>Nostr is unstoppable and it’s going to eat everything in the next few years. It’s as important and as foundational as IP.</p>
|
||||
<p>You can find this Nostrich here: npub1mcneaunh0n9qy54sse0vr06nwhejzghumfjlmu3r54ugwx83qhlshqwtll</p>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<footer class="post-footer">
|
||||
<ul class="post-tags">
|
||||
</ul>
|
||||
</footer>
|
||||
</article>
|
||||
</main>
|
||||
|
||||
<footer class="footer">
|
||||
<span>© 2023 <a href="https://new.dvdt.dev/">dvdt.dev</a></span>
|
||||
</footer>
|
||||
<a href="#top" aria-label="go to top" title="Go to Top (Alt + G)" class="top-link" id="top-link" accesskey="g">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 6" fill="currentColor">
|
||||
<path d="M12 6H0l6-6z" />
|
||||
</svg>
|
||||
</a><footer class="footer">PGP: 6FF9 2943 B795 21DC 51D2 4734 715C 88E0 E239 7C72</footer>
|
||||
|
||||
|
||||
<script>
|
||||
let menu = document.getElementById('menu')
|
||||
if (menu) {
|
||||
menu.scrollLeft = localStorage.getItem("menu-scroll-position");
|
||||
menu.onscroll = function () {
|
||||
localStorage.setItem("menu-scroll-position", menu.scrollLeft);
|
||||
}
|
||||
}
|
||||
|
||||
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
|
||||
anchor.addEventListener("click", function (e) {
|
||||
e.preventDefault();
|
||||
var id = this.getAttribute("href").substr(1);
|
||||
if (!window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
|
||||
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView({
|
||||
behavior: "smooth"
|
||||
});
|
||||
} else {
|
||||
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView();
|
||||
}
|
||||
if (id === "top") {
|
||||
history.replaceState(null, null, " ");
|
||||
} else {
|
||||
history.pushState(null, null, `#${id}`);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
</script>
|
||||
<script>
|
||||
var mybutton = document.getElementById("top-link");
|
||||
window.onscroll = function () {
|
||||
if (document.body.scrollTop > 800 || document.documentElement.scrollTop > 800) {
|
||||
mybutton.style.visibility = "visible";
|
||||
mybutton.style.opacity = "1";
|
||||
} else {
|
||||
mybutton.style.visibility = "hidden";
|
||||
mybutton.style.opacity = "0";
|
||||
}
|
||||
};
|
||||
|
||||
</script>
|
||||
<script>
|
||||
document.getElementById("theme-toggle").addEventListener("click", () => {
|
||||
if (document.body.className.includes("dark")) {
|
||||
document.body.classList.remove('dark');
|
||||
localStorage.setItem("pref-theme", 'light');
|
||||
} else {
|
||||
document.body.classList.add('dark');
|
||||
localStorage.setItem("pref-theme", 'dark');
|
||||
}
|
||||
})
|
||||
|
||||
</script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,209 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en" dir="auto">
|
||||
|
||||
<head><meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
<title>The Filter | dvdt.dev</title>
|
||||
<meta name="keywords" content="">
|
||||
<meta name="description" content="I don’t publish very frequently and it’s because I feel like this site represents my public image and the things I put here should be somewhat polished since it’s “how the world will see me.” If I write something here I tend to keep a draft for months. Write it and rewrite it again and save it to reread later and decide it’s not good enough to publish.
|
||||
But in truth, I’m not always polished.">
|
||||
<meta name="author" content="David Lick">
|
||||
<link rel="canonical" href="https://new.dvdt.dev/2023/07/the-filter/">
|
||||
<link crossorigin="anonymous" href="/assets/css/stylesheet.5cfc680b1eeaeef9efbced92d46c2a9e876b72ee14fba85846afc4cff9e6e6f8.css" integrity="sha256-XPxoCx7q7vnvvO2S1Gwqnodrcu4U+6hYRq/Ez/nm5vg=" rel="preload stylesheet" as="style">
|
||||
<script defer crossorigin="anonymous" src="/assets/js/highlight.f413e19d0714851f6474e7ee9632408e58ac146fbdbe62747134bea2fa3415e0.js" integrity="sha256-9BPhnQcUhR9kdOfuljJAjlisFG+9vmJ0cTS+ovo0FeA="
|
||||
onload="hljs.initHighlightingOnLoad();"></script>
|
||||
<link rel="icon" href="https://new.dvdt.dev/favicon.ico">
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="https://new.dvdt.dev/favicon-16x16.png">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="https://new.dvdt.dev/favicon-32x32.png">
|
||||
<link rel="apple-touch-icon" href="https://new.dvdt.dev/apple-touch-icon.png">
|
||||
<link rel="mask-icon" href="https://new.dvdt.dev/safari-pinned-tab.svg">
|
||||
<meta name="theme-color" content="#2e2e33">
|
||||
<meta name="msapplication-TileColor" content="#2e2e33">
|
||||
<noscript>
|
||||
<style>
|
||||
#theme-toggle,
|
||||
.top-link {
|
||||
display: none;
|
||||
}
|
||||
|
||||
</style>
|
||||
<style>
|
||||
@media (prefers-color-scheme: dark) {
|
||||
:root {
|
||||
--theme: rgb(29, 30, 32);
|
||||
--entry: rgb(46, 46, 51);
|
||||
--primary: rgb(218, 218, 219);
|
||||
--secondary: rgb(155, 156, 157);
|
||||
--tertiary: rgb(65, 66, 68);
|
||||
--content: rgb(196, 196, 197);
|
||||
--hljs-bg: rgb(46, 46, 51);
|
||||
--code-bg: rgb(55, 56, 62);
|
||||
--border: rgb(51, 51, 51);
|
||||
}
|
||||
|
||||
.list {
|
||||
background: var(--theme);
|
||||
}
|
||||
|
||||
.list:not(.dark)::-webkit-scrollbar-track {
|
||||
background: 0 0;
|
||||
}
|
||||
|
||||
.list:not(.dark)::-webkit-scrollbar-thumb {
|
||||
border-color: var(--theme);
|
||||
}
|
||||
}
|
||||
|
||||
</style>
|
||||
</noscript>
|
||||
</head>
|
||||
|
||||
<body class="" id="top">
|
||||
<script>
|
||||
if (localStorage.getItem("pref-theme") === "dark") {
|
||||
document.body.classList.add('dark');
|
||||
} else if (localStorage.getItem("pref-theme") === "light") {
|
||||
document.body.classList.remove('dark')
|
||||
} else if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
|
||||
document.body.classList.add('dark');
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
<header class="header">
|
||||
<nav class="nav">
|
||||
<div class="logo">
|
||||
<a href="https://new.dvdt.dev/" accesskey="h" title="dvdt.dev (Alt + H)">dvdt.dev</a>
|
||||
<div class="logo-switches">
|
||||
<button id="theme-toggle" accesskey="t" title="(Alt + T)">
|
||||
<svg id="moon" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
|
||||
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
|
||||
stroke-linejoin="round">
|
||||
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
|
||||
</svg>
|
||||
<svg id="sun" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
|
||||
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
|
||||
stroke-linejoin="round">
|
||||
<circle cx="12" cy="12" r="5"></circle>
|
||||
<line x1="12" y1="1" x2="12" y2="3"></line>
|
||||
<line x1="12" y1="21" x2="12" y2="23"></line>
|
||||
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
|
||||
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
|
||||
<line x1="1" y1="12" x2="3" y2="12"></line>
|
||||
<line x1="21" y1="12" x2="23" y2="12"></line>
|
||||
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
|
||||
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<ul id="menu">
|
||||
<li>
|
||||
<a href="https://new.dvdt.dev/about-me/" title="about me">
|
||||
<span>about me</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="https://new.dvdt.dev/support" title="support">
|
||||
<span>support</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
||||
<main class="main">
|
||||
|
||||
<article class="post-single">
|
||||
<header class="post-header">
|
||||
|
||||
<h1 class="post-title">
|
||||
The Filter
|
||||
</h1>
|
||||
<div class="post-meta"><span title='2023-07-16 00:00:00 +0000 UTC'>July 16, 2023</span> · David Lick
|
||||
|
||||
</div>
|
||||
</header>
|
||||
<div class="post-content"><p><img loading="lazy" src="/img/camera-filter-city.jpg" alt="Photo by <a href="https://unsplash.com/@eugenechystiakov?utm_source=ghost&amp;utm_medium=referral&amp;utm_campaign=api-credit">Eugene Chystiakov</a> / <a href="https://unsplash.com/?utm_source=ghost&amp;utm_medium=referral&amp;utm_campaign=api-credit">Unsplash</a>" />
|
||||
</p>
|
||||
<p>I don’t publish very frequently and it’s because I feel like this site represents my public image and the things I put here should be somewhat polished since it’s “how the world will see me.” If I write something here I tend to keep a draft for months. Write it and rewrite it again and save it to reread later and decide it’s not good enough to publish.</p>
|
||||
<p>But in truth, I’m not always polished. I don’t always have popular opinions. I don’t always have the right words to say. Which means I’m not really representing myself but a filtered version of me. And maybe what I should put out there should be a little more stream of conscious. More raw and more authentic. And more me.</p>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<footer class="post-footer">
|
||||
<ul class="post-tags">
|
||||
</ul>
|
||||
</footer>
|
||||
</article>
|
||||
</main>
|
||||
|
||||
<footer class="footer">
|
||||
<span>© 2023 <a href="https://new.dvdt.dev/">dvdt.dev</a></span>
|
||||
</footer>
|
||||
<a href="#top" aria-label="go to top" title="Go to Top (Alt + G)" class="top-link" id="top-link" accesskey="g">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 6" fill="currentColor">
|
||||
<path d="M12 6H0l6-6z" />
|
||||
</svg>
|
||||
</a><footer class="footer">PGP: 6FF9 2943 B795 21DC 51D2 4734 715C 88E0 E239 7C72</footer>
|
||||
|
||||
|
||||
<script>
|
||||
let menu = document.getElementById('menu')
|
||||
if (menu) {
|
||||
menu.scrollLeft = localStorage.getItem("menu-scroll-position");
|
||||
menu.onscroll = function () {
|
||||
localStorage.setItem("menu-scroll-position", menu.scrollLeft);
|
||||
}
|
||||
}
|
||||
|
||||
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
|
||||
anchor.addEventListener("click", function (e) {
|
||||
e.preventDefault();
|
||||
var id = this.getAttribute("href").substr(1);
|
||||
if (!window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
|
||||
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView({
|
||||
behavior: "smooth"
|
||||
});
|
||||
} else {
|
||||
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView();
|
||||
}
|
||||
if (id === "top") {
|
||||
history.replaceState(null, null, " ");
|
||||
} else {
|
||||
history.pushState(null, null, `#${id}`);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
</script>
|
||||
<script>
|
||||
var mybutton = document.getElementById("top-link");
|
||||
window.onscroll = function () {
|
||||
if (document.body.scrollTop > 800 || document.documentElement.scrollTop > 800) {
|
||||
mybutton.style.visibility = "visible";
|
||||
mybutton.style.opacity = "1";
|
||||
} else {
|
||||
mybutton.style.visibility = "hidden";
|
||||
mybutton.style.opacity = "0";
|
||||
}
|
||||
};
|
||||
|
||||
</script>
|
||||
<script>
|
||||
document.getElementById("theme-toggle").addEventListener("click", () => {
|
||||
if (document.body.className.includes("dark")) {
|
||||
document.body.classList.remove('dark');
|
||||
localStorage.setItem("pref-theme", 'light');
|
||||
} else {
|
||||
document.body.classList.add('dark');
|
||||
localStorage.setItem("pref-theme", 'dark');
|
||||
}
|
||||
})
|
||||
|
||||
</script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
Reference in New Issue
Block a user