<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Learning Log on JinerX blog</title><link>https://jinerx.github.io/learning_log/</link><description>Recent content in Learning Log on JinerX blog</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><copyright>© 2026 Jędrzej Sajnóg</copyright><lastBuildDate>Thu, 26 Mar 2026 12:21:52 +0100</lastBuildDate><atom:link href="https://jinerx.github.io/learning_log/index.xml" rel="self" type="application/rss+xml"/><item><title>Docker Operations Cheatsheet</title><link>https://jinerx.github.io/learning_log/docker-operations-cheatsheet/</link><pubDate>Thu, 26 Mar 2026 12:21:52 +0100</pubDate><guid>https://jinerx.github.io/learning_log/docker-operations-cheatsheet/</guid><description>&lt;h2 class="relative group"&gt;Theory
 &lt;div id="theory" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#theory" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;namespaces - abstraction which makes it possible for the system to isolate processes from one another. Processes internally store a pointer to a namespaces when calling specified commands &amp;ldquo;dealing with&amp;rdquo; a specific kernel resource it first checks for appropriate namespace and returns appropriate data. Some important namespaces:
&lt;ul&gt;
&lt;li&gt;PID namespaces - process isolation - container can only see processes made inside the container&lt;/li&gt;
&lt;li&gt;network namespace - netowork isolation - each container gets it&amp;rsquo;s own ports,ip addresses, etc. Connected via &lt;code&gt;docker0&lt;/code&gt; bridge to the host network.&lt;/li&gt;
&lt;li&gt;mount namespace - filesystem isolation - each container gets it&amp;rsquo;s own filesystem hierarchy, mount points etc.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;cgroups - used to limit the system resources available to the container, CPU, memory etc.&lt;/li&gt;
&lt;li&gt;union mount filesystem - filesystem technique used in docker containers. We define the filesystem in multiple layers (defined typically in &lt;code&gt;Dockerfile&lt;/code&gt;) during build we only look at the &amp;ldquo;top&amp;rdquo;. If conflicting upper layers overwrite the lower layers. All layers beside the top one are read only, the top one is read/write.&lt;/li&gt;
&lt;li&gt;docker daemon - runs in the background and manages the containers, volumes etc. We communicate with it via CLI. If docker is installed on linux we communicate with it via exposed socket at &lt;code&gt;/var/run/docker.sock&lt;/code&gt;. If installed on a different system a virtual machine with linux is setup and we communicate with the docker via socket at the same location but within the VM.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 class="relative group"&gt;Basic structures
 &lt;div id="basic-structures" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#basic-structures" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;images - contain information about how to build the container.&lt;/li&gt;
&lt;li&gt;containers - working instances where we actually operate and that do the &amp;ldquo;actual&amp;rdquo; work.&lt;/li&gt;
&lt;li&gt;volumes - data storage objects can be mounted onto containers&lt;/li&gt;
&lt;li&gt;networks - define how containers communicate with each other&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 class="relative group"&gt;Basic commands
 &lt;div id="basic-commands" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#basic-commands" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;with all of those &lt;code&gt;--help&lt;/code&gt; flag lists all available commands with a short description&lt;/p&gt;</description></item><item><title>Git Operations Cheatsheet</title><link>https://jinerx.github.io/learning_log/git-operations-cheatsheet/</link><pubDate>Sun, 22 Mar 2026 15:46:00 +0100</pubDate><guid>https://jinerx.github.io/learning_log/git-operations-cheatsheet/</guid><description>&lt;h2 class="relative group"&gt;basics and setup
 &lt;div id="basics-and-setup" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#basics-and-setup" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;git --version&lt;/code&gt; = &lt;code&gt;git -v&lt;/code&gt; - get currently installed version&lt;/li&gt;
&lt;li&gt;&lt;code&gt;git status&lt;/code&gt; - see status&lt;/li&gt;
&lt;li&gt;&lt;code&gt;git init&lt;/code&gt; - initialize a repository in the current folder&lt;/li&gt;
&lt;li&gt;&lt;code&gt;git config&lt;/code&gt; - change configuration file, add &lt;code&gt;--global&lt;/code&gt; for editing the global config&lt;/li&gt;
&lt;li&gt;&lt;code&gt;git add &amp;lt;file_name&amp;gt;&lt;/code&gt; - move the specified file to the staging area&lt;/li&gt;
&lt;li&gt;&lt;code&gt;git commit -m &amp;quot;&amp;lt;message&amp;gt;&amp;quot;&lt;/code&gt; - commiting the files currently in the staging area, if &lt;code&gt;-m&lt;/code&gt; is not used then text editor will open for message&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 class="relative group"&gt;&lt;code&gt;.git&lt;/code&gt; folder
 &lt;div id="git-folder" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#git-folder" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;.git&lt;/code&gt; folder is created in every repository. It contains data necessary for the &lt;code&gt;git&lt;/code&gt; to operate. Some of the more interesting things:&lt;/p&gt;</description></item><item><title>Local search</title><link>https://jinerx.github.io/learning_log/local-search/</link><pubDate>Thu, 19 Mar 2026 19:04:21 +0100</pubDate><guid>https://jinerx.github.io/learning_log/local-search/</guid><description>&lt;p&gt;Local search is a simple approximation algorithm, which doesn&amp;rsquo;t necessarirly lead to the best result, instead it has a tendency to get stuck in a local minimum. Still if combined with other techniques like for example use of heuristics it can cheaply with low overhead improve the quality of the found solution.&lt;/p&gt;
&lt;p&gt;pseudocode:&lt;/p&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;function local_search:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;INPUT: graph of the state G = (V,E), cost function f
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;OUTPUT: found state
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;s &amp;lt;- generate_initial_state()
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;while (true): // we might want iteration amount limit in case the state space is infinite and the optimum unreachable
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; s&amp;#39; &amp;lt;- s
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; for n in get_neighbors(s):
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; if f(n) &amp;lt; f(s&amp;#39;):
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; s&amp;#39; &amp;lt;- n
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; if (s&amp;#39; /= s):
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; s &amp;lt;- s&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; else:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; break
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;return s&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;This pseudocode was written for a graph but can easily be generalized to any general solution space. Simply instead of looking at neighbours of a state we at states we can possibly &amp;ldquo;go to&amp;rdquo;.&lt;/p&gt;</description></item><item><title>Minimum Spanning Tree</title><link>https://jinerx.github.io/learning_log/minimum-spanning-tree/</link><pubDate>Wed, 18 Mar 2026 16:25:43 +0100</pubDate><guid>https://jinerx.github.io/learning_log/minimum-spanning-tree/</guid><description>&lt;p&gt;Here we&amp;rsquo;re going to cover what are Minimum Spanning Trees (MSTs), methods for finding them and use cases.&lt;/p&gt;

&lt;h2 class="relative group"&gt;What is a tree?
 &lt;div id="what-is-a-tree" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#what-is-a-tree" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;In graph theory we call graph $T=(V,E)$ a tree if it is connected and it doesn&amp;rsquo;t have any cycles.&lt;/p&gt;
&lt;div class="admonition relative overflow-hidden rounded-lg border-l-4 my-3 px-4 py-3 shadow-sm" data-type="info"&gt;
 &lt;div class="flex items-center gap-2 font-semibold text-inherit"&gt;
 &lt;div class="flex shrink-0 h-5 w-5 items-center justify-center text-lg"&gt;&lt;span class="relative block icon"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"&gt;&lt;path fill="currentColor" d="M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 128c17.67 0 32 14.33 32 32c0 17.67-14.33 32-32 32S224 177.7 224 160C224 142.3 238.3 128 256 128zM296 384h-80C202.8 384 192 373.3 192 360s10.75-24 24-24h16v-64H224c-13.25 0-24-10.75-24-24S210.8 224 224 224h32c13.25 0 24 10.75 24 24v88h16c13.25 0 24 10.75 24 24S309.3 384 296 384z"/&gt;&lt;/svg&gt;
&lt;/span&gt;&lt;/div&gt;
 &lt;div class="grow"&gt;
 Forrest
 &lt;/div&gt;
 &lt;/div&gt;&lt;div class="admonition-content mt-3 text-base leading-relaxed text-inherit"&gt;&lt;p&gt;We call a graph with no cycles a forrest (contrary to the tree it doesn&amp;rsquo;t need to be connected). In a forrest each &lt;strong&gt;connected component&lt;/strong&gt; is a tree.&lt;/p&gt;</description></item><item><title>Introduction to Turing Machines</title><link>https://jinerx.github.io/learning_log/introduction-to-turing-machines/</link><pubDate>Fri, 06 Mar 2026 20:00:47 +0100</pubDate><guid>https://jinerx.github.io/learning_log/introduction-to-turing-machines/</guid><description>&lt;p&gt;Here we&amp;rsquo;re going to cover the very basics of what are turing machines and what they are used for. To understand this post it&amp;rsquo;s best to be familiar with finite automata DFAs, NFAs, regular languages and context free grammars.&lt;/p&gt;

&lt;h2 class="relative group"&gt;Motivation
 &lt;div id="motivation" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#motivation" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;We as programmers want to use mathematics to study algorithms efficiently, but for that we need a formal mathematical notion of what an algorithm is. Additionally we want a way to figure out if a problem is computable - does there exist an algorithm solving a problem. Because of that we need some sort of mathematical entity where the notion of algorithms makes formal sense and which allows us to analyze those algorithms. This mathematical entity is the &lt;strong&gt;Turing Machine (TM)&lt;/strong&gt;.&lt;/p&gt;</description></item><item><title>Groups Abstract Algebra</title><link>https://jinerx.github.io/learning_log/groups-abstract-algebra/</link><pubDate>Thu, 05 Mar 2026 17:25:33 +0100</pubDate><guid>https://jinerx.github.io/learning_log/groups-abstract-algebra/</guid><description>&lt;p&gt;Here we consider definition of a group and some simple properties, operations, examples.&lt;/p&gt;

&lt;h2 class="relative group"&gt;Fromal definition
 &lt;div id="fromal-definition" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#fromal-definition" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;

&lt;h3 class="relative group"&gt;Group
 &lt;div id="group" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#group" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;A pair $(X, +)$ is called a group if $X$ is a set, $+$ is a function $+:X\times X\to X$ and:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;operations are associative: $a + (b + c) = (a + b) + c$&lt;/li&gt;
&lt;li&gt;X has an identity element 0 such that $\forall x\in X$ $x + 0 = 0 + x = x$&lt;/li&gt;
&lt;li&gt;each element $x$ has an inverse $x^{-1}$: $x+ x^{-1} = x^{-1}+ x = 0$&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 class="relative group"&gt;Semigrups
 &lt;div id="semigrups" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#semigrups" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;Semigroup is a wekaer structure than the group it does not require:&lt;/p&gt;</description></item></channel></rss>