<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Posts on bool3max&#39;s blog</title>
		<link>https://bool3max.win/posts/</link>
		<description>Recent content in Posts on bool3max&#39;s blog</description>
		<generator>Hugo</generator>
		<language>en-us</language>
		
		
		
			<copyright>Bogdan Mitrović</copyright>
		
		
			<lastBuildDate>Sun, 13 Jul 2025 01:25:21 +0200</lastBuildDate>
		
			<atom:link href="https://bool3max.win/posts/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>The importance of a good Table-of-Contents implementation</title>
				<link>https://bool3max.win/posts/toc/</link>
				<pubDate>Sun, 13 Jul 2025 01:25:21 +0200</pubDate>
				<guid>https://bool3max.win/posts/toc/</guid>
				<description>&lt;p&gt;I&amp;rsquo;ve always found it invaluable to have a &lt;strong&gt;clear&lt;/strong&gt;, &lt;strong&gt;complete&lt;/strong&gt; and &lt;strong&gt;omnipresent&lt;/strong&gt; overview of any text-based resource I&amp;rsquo;m absorbing. Having a &amp;ldquo;bird&amp;rsquo;s eye view&amp;rdquo; of all available information aleviates&#xA;the feeling that I may have missed or skipped over something, and it helps me discern the way a section I&amp;rsquo;m reading at any given moment relates to the rest of the resource.&#xA;It gives me a sense of security that I can&amp;rsquo;t really describe.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Modifying the Spotify client to persist tracklist View style between playlists and albums</title>
				<link>https://bool3max.win/posts/spotify_ui_hacking/</link>
				<pubDate>Sat, 14 Jun 2025 18:49:37 +0200</pubDate>
				<guid>https://bool3max.win/posts/spotify_ui_hacking/</guid>
				<description>&lt;p&gt;The web and desktop versions of the Spotify client provide two distinct ways of displaying track lists when viewing a resource such as a playlist or an album:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Compact&lt;/li&gt;&#xA;&lt;li&gt;List&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;img src=&#34;imgs/ctx_menu.png&#34; alt=&#34;context menu&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;They differ primarily in the amount of padding and spacing between the individual rows representing tracks, with the &lt;strong&gt;Compact&lt;/strong&gt; mode also &lt;em&gt;omitting&#xA;the belonging album&amp;rsquo;s cover thumbnail to the left of each track&lt;/em&gt;:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;imgs/list.png&#34; alt=&#34;list&#34;&gt;&#xA;&lt;img src=&#34;imgs/compact.png&#34; alt=&#34;list&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Above you can see the difference between the two modes.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Threads and processes don&#39;t exist</title>
				<link>https://bool3max.win/posts/threads_and_processes_dont_exist/</link>
				<pubDate>Tue, 10 Dec 2024 21:07:04 +0200</pubDate>
				<guid>https://bool3max.win/posts/threads_and_processes_dont_exist/</guid>
				<description>&lt;p&gt;On Linux, threads and processes don&amp;rsquo;t actually exist. Underneath all the abstractions, the kernel knows only of &amp;ldquo;tasks&amp;rdquo; - independent flows of execution, created using the &lt;a href=&#34;https://man7.org/linux/man-pages/man2/clone.2.html&#34;&gt;&lt;code&gt;clone(2)&lt;/code&gt;&lt;/a&gt;&#xA;family of syscalls. The differences between what we call a &amp;ldquo;thread&amp;rdquo; and what we call a &amp;ldquo;process&amp;rdquo; lie in the &lt;code&gt;flags&lt;/code&gt; argument of the clone syscall, which determines many kinds of properties of the eventually spawned task.&#xA;The most notable of those is the sharing of virtual memory space, which is controlled by the &lt;code&gt;CLONE_VM&lt;/code&gt; flag of the argument.&lt;/p&gt;</description>
			</item>
			<item>
				<title>How is shell redirection implemented?</title>
				<link>https://bool3max.win/posts/how_shell_redirection_is_implemented/</link>
				<pubDate>Mon, 17 Jul 2023 09:37:12 +0200</pubDate>
				<guid>https://bool3max.win/posts/how_shell_redirection_is_implemented/</guid>
				<description>&lt;p&gt;Shell redirection allows you to redirect a process&amp;rsquo; standard streams to paths other than the controlling terminal. This post will focus on explaining how it is implemented&#xA;by shells (such as &lt;code&gt;bash&lt;/code&gt;). If you are unfamiliar with redirection and would like to familiarize yourself with the concept and syntax (as far as bash is concerned), then&#xA;&lt;a href=&#34;https://www.gnu.org/software/bash/manual/html_node/Redirections.html&#34;&gt;GNU Bash Reference Manual - Redirections&lt;/a&gt; is a good place to start.&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-fundamentals&#34;&gt;The fundamentals&lt;/h2&gt;&#xA;&lt;p&gt;A running shell process maintains a set of open standard file descriptors for stdout (1), stderr(2) and stdin (0) that are&#xA;tied to the controlling terminal. This can be observed by querying the &lt;code&gt;/proc&lt;/code&gt; virtual filesystem. For example, in &lt;code&gt;bash&lt;/code&gt;:&lt;/p&gt;</description>
			</item>
			<item>
				<title>A HashMap speedup tale: The number of allocations matters</title>
				<link>https://bool3max.win/posts/hashmap_speedup/</link>
				<pubDate>Wed, 14 Jun 2023 21:01:28 +0200</pubDate>
				<guid>https://bool3max.win/posts/hashmap_speedup/</guid>
				<description>&lt;p&gt;I recently wrote &lt;a href=&#34;https://github.com/bool3max/bhashmap&#34;&gt;&lt;strong&gt;&lt;code&gt;bhashmap&lt;/code&gt;&lt;/strong&gt;&lt;/a&gt; - a C11 hash table implementation&#xA;library. This post will document one of the latest optimizations, which is in hindsight extremely&#xA;simple to understand and implement, but which resulted in a ~30% runtime speedup.&lt;/p&gt;&#xA;&lt;h1 id=&#34;background&#34;&gt;Background&lt;/h1&gt;&#xA;&lt;p&gt;Before talking about the optimization, let&amp;rsquo;s quickly get up to speed with how things worked before.&#xA;I will focus only on the details relevant to this particular optimization.&lt;/p&gt;&#xA;&lt;p&gt;At the core of every hash table implementation is a key-value pair, and here the case is no different:&#xA;every such pair is represented by a &lt;code&gt;HashPair&lt;/code&gt; struct:&lt;/p&gt;</description>
			</item>
			<item>
				<title>How is time.sleep implemented in CPython?</title>
				<link>https://bool3max.win/posts/time_sleep_cpython_implementation/</link>
				<pubDate>Sat, 22 Apr 2023 21:25:29 +0200</pubDate>
				<guid>https://bool3max.win/posts/time_sleep_cpython_implementation/</guid>
				<description>&lt;p&gt;I recently got curious as to how the &lt;code&gt;time.sleep&lt;/code&gt; function from Python&amp;rsquo;s standard library was implemented by CPython - and as it turns out, it&amp;rsquo;s pretty easy to figure out.&lt;/p&gt;&#xA;&lt;p&gt;All I had to do was &lt;code&gt;strace&lt;/code&gt; a minimal example Python program that utlizies the function:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;strace python3 -c &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;from time import sleep; sleep(0.5); print(&amp;#34;Done!&amp;#34;);&amp;#39;&lt;/span&gt; 2&amp;gt; out.txt&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;And sure enough, near the very end of strace&amp;rsquo;s output, we see the following system call:&lt;/p&gt;</description>
			</item>
			<item>
				<title>A primer on the binary system: two&#39;s complement, IEEE-754 and more, explained</title>
				<link>https://bool3max.win/posts/ieee754_explained/</link>
				<pubDate>Sat, 18 Sep 2021 18:00:38 +0200</pubDate>
				<guid>https://bool3max.win/posts/ieee754_explained/</guid>
				<description>&lt;p&gt;Modern 64-bit processors are capable of storing $2^{64}$ different &lt;em&gt;values&lt;/em&gt; within their general-purpose registers. Each one of those possible &lt;em&gt;values&lt;/em&gt; is simply a different combination of 64&#xA;sequential bits - and each one of those bits can, of course, exist in one of two states at a single point in time.&lt;/p&gt;&#xA;&lt;p&gt;Given any number of bits $ N $, we can always conclude that the &lt;em&gt;maximum&lt;/em&gt; number of different values representable using that particular bit count is always $ 2^N $.&lt;/p&gt;</description>
			</item>
			<item>
				<title>How does &#39;man&#39; actually display the pages?</title>
				<link>https://bool3max.win/posts/man_and_pagers_plus_colors/</link>
				<pubDate>Wed, 17 Feb 2021 13:44:42 +0100</pubDate>
				<guid>https://bool3max.win/posts/man_and_pagers_plus_colors/</guid>
				<description>&lt;p&gt;When you normally execute, say &lt;code&gt;man 3 printf&lt;/code&gt;, &lt;code&gt;man&lt;/code&gt; simply does the job of looking up and fetching the particular manpage. The actual&#xA;act of &lt;em&gt;displaying&lt;/em&gt; it, is done by a &lt;strong&gt;pager&lt;/strong&gt;.&lt;/p&gt;&#xA;&lt;p&gt;The default pager that &lt;code&gt;man&lt;/code&gt; uses, &lt;strong&gt;&lt;code&gt;less&lt;/code&gt;&lt;/strong&gt;, is in essence a simple TUI program that allows for easy navigation of a particular text&#xA;buffer (scrolling, searching, etc&amp;hellip; all using vi-like keybindings). It can output stylized text (bolds, underlines, etc&amp;hellip;) which it does&#xA;by default for manpages.&lt;/p&gt;</description>
			</item>
			<item>
				<title>UTF-8</title>
				<link>https://bool3max.win/posts/utf8/</link>
				<pubDate>Thu, 03 Dec 2020 21:29:03 +0100</pubDate>
				<guid>https://bool3max.win/posts/utf8/</guid>
				<description>&lt;p&gt;As of writing, &lt;a href=&#34;https://en.wikipedia.org/wiki/Unicode&#34;&gt;Unicode&lt;/a&gt; contains &lt;strong&gt;1,112,064&lt;/strong&gt; possible codepoints.&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Actual codepoints range from 0 through 0x10FFFF though a part is reserved for backwards compatibility of other codecs with UTF-16, resulting in &lt;strong&gt;1,112,064&lt;/strong&gt; actually available codepoints.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;It&amp;rsquo;s important to note that not all (in fact most) &lt;strong&gt;codepoints&lt;/strong&gt; are not &lt;strong&gt;characters&lt;/strong&gt;. A common example is the &lt;a href=&#34;https://unicode-table.com/en/0308/&#34;&gt;Combining Diaeresis (e.g. ï)&lt;/a&gt; or the &amp;ldquo;double dot above&amp;rdquo; mark that, when rendered, simply appears above the adjecent previous character. In fact I can&amp;rsquo;t even paste it in &lt;code&gt;neovim&lt;/code&gt; on its own, it simply appears above the previously typed character.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Iterators and Generators in Python3</title>
				<link>https://bool3max.win/posts/python_generators/</link>
				<pubDate>Thu, 05 Nov 2020 00:32:02 +0100</pubDate>
				<guid>https://bool3max.win/posts/python_generators/</guid>
				<description>&lt;p&gt;Recently I needed a way to infinitely loop over a list in Python. Traditionally, this is extremely easy to do with simple indexing if the size of the list is known in advance. For example, an approach could look something like this:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;l &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;3&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;2&lt;/span&gt;&lt;span&gt;i &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;0&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;3&lt;/span&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;4&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;while&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;True&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;5&lt;/span&gt;&lt;span&gt;    &lt;span style=&#34;color:#6639ba&#34;&gt;print&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;l&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;i&lt;span style=&#34;color:#1f2328&#34;&gt;])&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;6&lt;/span&gt;&lt;span&gt;    i &lt;span style=&#34;color:#0550ae&#34;&gt;+=&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;1&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;7&lt;/span&gt;&lt;span&gt;    &lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt; i &lt;span style=&#34;color:#0550ae&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#6639ba&#34;&gt;len&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;l&lt;span style=&#34;color:#1f2328&#34;&gt;):&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;8&lt;/span&gt;&lt;span&gt;        i &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;0&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Eventually I settled on a an inbuilt approach using the &lt;code&gt;itertools&lt;/code&gt; module from the standard library. Consequently the code became a lot cleaner:&lt;/p&gt;</description>
			</item>
			<item>
				<title>Languages versus their implementations</title>
				<link>https://bool3max.win/posts/languages_versus_implementations/</link>
				<pubDate>Fri, 16 Oct 2020 14:23:54 +0200</pubDate>
				<guid>https://bool3max.win/posts/languages_versus_implementations/</guid>
				<description>&lt;p&gt;&lt;strong&gt;Python&lt;/strong&gt; is a programming language. It is nothing more but one large document of text and code examples (a &lt;em&gt;standard&lt;/em&gt;) that describes exactly how the language is to behave. You can&amp;rsquo;t run it, download it, or execute it. That&amp;rsquo;s it, it&amp;rsquo;s just text.&lt;/p&gt;&#xA;&lt;p&gt;The latest edition of it is up on the official Python website as the &lt;a href=&#34;https://docs.python.org/3/reference/index.html&#34;&gt;&lt;strong&gt;The Python Language Reference&lt;/strong&gt;&lt;/a&gt;. As Python also consists of a standard library of functions, a document that describes how the modules and their respective functions are to behave is also readily available as&#xA;&lt;a href=&#34;https://docs.python.org/3/library/index.html&#34;&gt;&lt;strong&gt;The Python Standard Library&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Why I prefer fish over bash for scripting</title>
				<link>https://bool3max.win/posts/fish_scripting_over_bash/</link>
				<pubDate>Mon, 28 Sep 2020 15:45:48 +0200</pubDate>
				<guid>https://bool3max.win/posts/fish_scripting_over_bash/</guid>
				<description>&lt;p&gt;Scripting with &lt;a href=&#34;https://github.com/fish-shell/fish-shell&#34;&gt;&lt;code&gt;fish&lt;/code&gt;&lt;/a&gt; is simple. It is readable. You don&amp;rsquo;t need to have deep experience with it in order to understand the syntax.&lt;/p&gt;&#xA;&lt;p&gt;Compared to &lt;code&gt;bash&lt;/code&gt;, it feels &lt;em&gt;intuitive&lt;/em&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;everything-is-a-builtin&#34;&gt;Everything is a builtin&lt;/h2&gt;&#xA;&lt;p&gt;&lt;code&gt;builtins&lt;/code&gt; are commands that you call from the shell, but unlike regular commands that execute external binaries and spawn new processes, they are built right into the shell (e.g. &lt;code&gt;echo&lt;/code&gt;, &lt;code&gt;math&lt;/code&gt;, &lt;code&gt;set&lt;/code&gt;, &lt;code&gt;count&lt;/code&gt;).&lt;/p&gt;&#xA;&lt;p&gt;The core syntax of &lt;code&gt;fish&lt;/code&gt; is very simple, and most all of the operations are done via calling builtins.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Understanding the ELF file structure</title>
				<link>https://bool3max.win/posts/elf/</link>
				<pubDate>Sun, 09 Aug 2020 18:54:26 +0200</pubDate>
				<guid>https://bool3max.win/posts/elf/</guid>
				<description>&lt;p&gt;I recently took it upon myself to, at least at the surface level, understand how the ELF (&amp;quot;&lt;em&gt;Executable and Linkable Format&lt;/em&gt;&amp;quot;) works.&#xA;In order to do that, I set out to create a tiny python3 module for parsing (meta-)data out of ELF files.&lt;/p&gt;&#xA;&lt;p&gt;The result of that is &lt;a href=&#34;https://github.com/bool3max/p3elf&#34;&gt;&lt;strong&gt;p3elf&lt;/strong&gt;&lt;/a&gt;, during the development of which I familiarized myself with ELF, binary IO in python, as well as &lt;code&gt;setuptools&lt;/code&gt; and publishing python packages on &lt;a href=&#34;https://pypi.org/project/p3elf&#34;&gt;PyPI&lt;/a&gt;.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Brief explanation of booting/GPT</title>
				<link>https://bool3max.win/posts/uefi_disks/</link>
				<pubDate>Wed, 18 Sep 2019 17:42:03 +0200</pubDate>
				<guid>https://bool3max.win/posts/uefi_disks/</guid>
				<description>&lt;p&gt;This document serves as a quick reference to how UEFI and GPT work in regards to booting a modern system.&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;I will not cover BIOS/MBR in this document. I will acknowledge their existence and will compare them to their modern counterparts, but I feel that it is a waste of time to dig deeper into their inner workings.  I will also not cover or mention the compatibility possibilites/issues of using UEFI/MBR or BIOS/GPT. Know that it is, in certain cases, possible, but that it is always a better idea to use either UEFI/GPT or BIOS/MBR.  The &lt;a href=&#34;https://wiki.archlinux.org&#34;&gt;ArchWiki&lt;/a&gt; and its numerous articles listed below cover the compatibility issues in more detail.&lt;/p&gt;</description>
			</item>
			<item>
				<title>The 0xFFFFFFFF problem</title>
				<link>https://bool3max.win/posts/int_problem/</link>
				<pubDate>Thu, 13 Sep 2018 02:51:42 +0200</pubDate>
				<guid>https://bool3max.win/posts/int_problem/</guid>
				<description>&lt;blockquote&gt;&#xA;&lt;p&gt;This is a pretty old document that I wrote for myself back when I was first learning C, but the explanation is pretty good so I published it here for future reference. I hope to soon push a reference document that explains some tricky concepts and things from the C standard that are not so easy to remember off the top of the head (such as type conversion, declarations, storage durations, scopes, etc&amp;hellip;)&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
