<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Programming on </title>
    <link>/tags/programming/</link>
    <description>Recent content in Programming on </description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    <lastBuildDate>Fri, 24 Jan 2025 22:50:22 +0000</lastBuildDate><atom:link href="/tags/programming/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>How to Learn Technology</title>
      <link>/posts/learn-technology/</link>
      <pubDate>Fri, 24 Jan 2025 22:50:22 +0000</pubDate>
      
      <guid>/posts/learn-technology/</guid>
      <description>&lt;h1 id=&#34;introduction&#34;&gt;Introduction&lt;/h1&gt;
&lt;p&gt;So you&amp;rsquo;re wanting to get into privacy, Linux, self-hosting and/ or programming. Maybe you want to run your own cloud service or movie server where you can own your own data and use your services offline. Potentially you want to escape from the digital dystopia of Facebook, Windows, MacOS and the like.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Did you know, to date, Microsoft collect &amp;ldquo;content you type, write, or dictate on the device&amp;rdquo; as per their &lt;a href=&#34;https://www.microsoft.com/en-us/privacy/data-collection-windows&#34;&gt;privacy policy&lt;/a&gt;.&lt;/p&gt;</description>
      <content>&lt;h1 id=&#34;introduction&#34;&gt;Introduction&lt;/h1&gt;
&lt;p&gt;So you&amp;rsquo;re wanting to get into privacy, Linux, self-hosting and/ or programming. Maybe you want to run your own cloud service or movie server where you can own your own data and use your services offline. Potentially you want to escape from the digital dystopia of Facebook, Windows, MacOS and the like.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Did you know, to date, Microsoft collect &amp;ldquo;content you type, write, or dictate on the device&amp;rdquo; as per their &lt;a href=&#34;https://www.microsoft.com/en-us/privacy/data-collection-windows&#34;&gt;privacy policy&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Whatever your reason, knowing where to start and how to find good resources can be pretty tricky. Fortunately I&amp;rsquo;ve collected a list of the best &lt;strong&gt;free&lt;/strong&gt; sources to learn these skills.&lt;/p&gt;
&lt;h1 id=&#34;linux&#34;&gt;Linux&lt;/h1&gt;
&lt;h2 id=&#34;install-a-beginner-friendly-distro&#34;&gt;Install a beginner friendly distro&lt;/h2&gt;
&lt;p&gt;If you&amp;rsquo;re looking to learn Linux then I suggest installing a simple out-of-the-box distro such as &lt;a href=&#34;https://ubuntu.com/download&#34;&gt;Ubuntu&lt;/a&gt;, &lt;a href=&#34;https://www.linuxmint.com&#34;&gt;Linux Mint&lt;/a&gt; or &lt;a href=&#34;https://pop.system76.com&#34;&gt;Pop!_OS&lt;/a&gt;. They&amp;rsquo;re all relatively straightforard to install and no harder to use than Windows or MacOS. Best of all they come pre-installed with almost everything you need from web browsers to office suits and the such. Play around with the distrobution, learn about the package manager and the &lt;a href=&#34;/posts/learn-technology/#learn-the-command-line&#34;&gt;command line&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;learn-the-command-line&#34;&gt;Learn the command line&lt;/h2&gt;
&lt;p&gt;The command line is a way of interacting with your system using only text. It&amp;rsquo;s incredibly powerful and when you learn about it, you won&amp;rsquo;t want to go back. In fact I am writing this very article using the command line! It&amp;rsquo;s crucial when communicating with servers over &lt;a href=&#34;/posts/ssh/&#34;&gt;SSH&lt;/a&gt;, using &lt;a href=&#34;/posts/the-docker-handbook/&#34;&gt;Docker&lt;/a&gt; or managing a Linux system in general. Not only will it give you a great understanding of how your system works under the hood, but you&amp;rsquo;ll also become a full-on power user! The best resource for this a book by William Shotts which you can download for free &lt;a href=&#34;/books/TLCL-24.11.pdf&#34;&gt;here&lt;/a&gt; thanks to William allowing it to be distributed under the generous &lt;a href=&#34;https://creativecommons.org/licenses/by-nc-nd/3.0&#34;&gt;Creative Commons License&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;install-arch-linux&#34;&gt;Install Arch Linux&lt;/h2&gt;
&lt;p&gt;Arch Linux is a do-it-yourself distro. If forces you to configure a lot of things that are usually abstracted and thus you&amp;rsquo;ll learn a lot along the way. If you&amp;rsquo;ve read the book above and played around with some of the commands then you&amp;rsquo;re definitely in good stead to try Arch. What&amp;rsquo;s great is that you can create the system you want, however you want it. Virtually nothing comes pre-installed; no sudo, no web browser or desktop environment. It sounds ridiculous and daunting but in reality it&amp;rsquo;s not that hard and although at first you may face a few hurdles, you&amp;rsquo;ll almost certaintly appreciate knowing/ understanding everything about your system and how it works. The great thing about Arch is that it really doesn&amp;rsquo;t tend to break either but if it does, you&amp;rsquo;ll know how to fix it!&lt;/p&gt;
&lt;p&gt;There&amp;rsquo;s plenty of resources for installing Arch Linux. I recommend Mental Outlaw&amp;rsquo;s guide on installing Arch Linux which you can find on YouTube &lt;a href=&#34;https://www.youtube.com/watch?v=rUEnS1zj1DM&#34;&gt;here&lt;/a&gt;. After watching this feel free to check out lots of other Arch Install guides on the web. The &lt;a href=&#34;https://wiki.archlinux.org&#34;&gt;Arch Wiki&lt;/a&gt; is also one of the best (but not necessarily easiest to understand) resources on the web. It&amp;rsquo;s also worth reading through the &lt;a href=&#34;https://wiki.gentoo.org/wiki/Handbook:AMD64/Full/Installation&#34;&gt;Gentoo installation handbook&lt;/a&gt; as although this is a different distrobution, it&amp;rsquo;s installation process shares lots in common with Arch and I believe their installation guide is much more user-friendly.&lt;/p&gt;
&lt;h1 id=&#34;self-hosting&#34;&gt;Self hosting&lt;/h1&gt;
&lt;h2 id=&#34;alternativeto&#34;&gt;AlternativeTo&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://alternativeto.net&#34;&gt;AlternativeTo&lt;/a&gt; is a great site for finding open source, self-hostable alternatives to almost any program or service you can think of. It&amp;rsquo;s worth having a browse as you&amp;rsquo;ll soon find that many, if not all, of your favourite pieces of software can be replaced with free, privacy friendly, open source alteratives!&lt;/p&gt;
&lt;h2 id=&#34;awesome-self-hosted&#34;&gt;Awesome Self Hosted&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://awesome-selfhosted.net&#34;&gt;Awesome Self Hosted&lt;/a&gt; is a great resource to find things to self host. Try finding a few things and spinning them up!&lt;/p&gt;
&lt;h2 id=&#34;docker&#34;&gt;Docker&lt;/h2&gt;
&lt;p&gt;If you want to host your own services then I recommend learning Docker. Almost anything you want to self host will likely be built with a Docker-first approach in mind. Without going into too much detail, Docker allows you to containerize applications and deploy them in a declarative manner. If you want to run something like Mastodon (which is an open source, decentralised alternative to Twitter) then you&amp;rsquo;d need to install Mastodon, a mail server for it to use, a database (such as SQLite or PostGresSQL) for it to store users in and other data along with all the other packages and dependencies those components require. Additionally each of those will need to be configured correctly and secured with a firewall etc. Sounds complicated right? If Mastodon requires one version of a package and you are using another version on your machine then there could be conflicts, stuff will break etc, and it all becomes a mess.&lt;/p&gt;
&lt;p&gt;Docker solves this problem by creating a container which is it&amp;rsquo;s own Linux machine. The container has all the necessary packages and dependencies inside and only the bare minimum it needs to run. Not only does this mean that it&amp;rsquo;s replicable (because it&amp;rsquo;s not going to conflict with anything else on your system as it&amp;rsquo;s isolated) but it also keeps your system clutter free. Furthermore it allows for swift deployment and management. Best of all they utilise the Linux Kernel &lt;strong&gt;already&lt;/strong&gt; installed on your system which means they&amp;rsquo;re super lightweight and efficient - often being only a few megabytes in size.&lt;/p&gt;
&lt;p&gt;The persistent data for your Mastodon server (such as your configuration files, databases etc) can all be mapped to what&amp;rsquo;s called a volume. Volumes are shared directories (also known as folders) between the host system (your system/ server) and the Docker container. For instance the &lt;code&gt;/config&lt;/code&gt; directory on your Docker system can be mapped to &lt;code&gt;/home/curiousliberal/Documents/Docker/Mastodon/data/config&lt;/code&gt;. This means that data written to the &lt;code&gt;/config&lt;/code&gt; directory inside your Docker container ends up being written to the &lt;code&gt;/home/curiousliberal/Documents/Docker/Mastodon/data/config&lt;/code&gt; on your host system. This is great because you can then back this up, restore it, use it on another server. Great stuff! Don&amp;rsquo;t worry if none of this makes sense yet, &lt;a href=&#34;/posts/the-docker-handbook/&#34;&gt;The Docker Handbook&lt;/a&gt; will teach you everything you need to get started with Docker. If books aren&amp;rsquo;t your thing then I suggest checking out the Net Ninja&amp;rsquo;s &lt;a href=&#34;https://youtube.com/playlist?list=PL4cUxeGkcC9hxjeEtdHFNYMtCpjNBm3h7&#34;&gt;Docker Crash Course&lt;/a&gt; on YouTube.&lt;/p&gt;
&lt;h1 id=&#34;programming&#34;&gt;Programming&lt;/h1&gt;
&lt;p&gt;If you&amp;rsquo;re looking at getting into programming then I suggest starting out with Python. It&amp;rsquo;s very easy to learn and there&amp;rsquo;s an astronomical amount you can do with it. My favourite book is &lt;a href=&#34;https://automatetheboringstuff.com&#34;&gt;Automating the Boring Stuff with Python&lt;/a&gt; by Al Sweigart. This is by far the best book to get started with Python as it covers useful topics and by the end of it you should be capable of automating many mundane office jobs. You can download the book &lt;a href=&#34;/books/automatetheboringstuffwithpython2ndedition.pdf&#34;&gt;here&lt;/a&gt;.&lt;/p&gt;
</content>
    </item>
    
  </channel>
</rss>
