<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
    <channel>
      <title>ndato.com</title>
      <link>https://ndato.com</link>
      <description>Nicolás Dato&#x27;s personal website</description>
      <generator>Zola</generator>
      <language>en</language>
      <atom:link href="https://ndato.com/rss.xml" rel="self" type="application/rss+xml"/>
      <lastBuildDate>Fri, 01 May 2026 00:00:00 +0000</lastBuildDate>
      <item>
          <title>Inheritance in C</title>
          <pubDate>Fri, 01 May 2026 00:00:00 +0000</pubDate>
          <author>Nicolás Dato</author>
          <link>https://ndato.com/articles/inheritance-in-c/</link>
          <guid>https://ndato.com/articles/inheritance-in-c/</guid>
          <description xml:base="https://ndato.com/articles/inheritance-in-c/">&lt;p&gt;&lt;em&gt;Look what they need to mimic a fraction of our power.&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;h2 id=&quot;general-idea&quot;&gt;General Idea&lt;&#x2F;h2&gt;
&lt;p&gt;In this article, I&#x27;ll show how to create a generic structure and then implement more specific structures. This way, you can use the generic structure and the generic functions while the specific structures and functions are hidden.&lt;&#x2F;p&gt;
&lt;p&gt;I know, just use an OOP language! Anyway, in C you can mimic some kind of base-generic-class and derived-specific-classes. This won&#x27;t have all the features of an OOP language, but enough to have more abstraction in C.&lt;&#x2F;p&gt;
&lt;p&gt;As an example, in a video game you may want to have a generic structure+functions for NPCs, but different kind of specific NPCs, the engine would use the generic NPC functions without knowing (nor caring) what specific NPC it is. Another example could be if you want to handle different brands or models of a hardware device, you may want to have a generic structure+functions to use those devices without worrying about the specific API for each particular device.&lt;&#x2F;p&gt;
&lt;p&gt;To do this, you need 4 things:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;A generic structure, with function pointers that will point to the specific functions&lt;&#x2F;li&gt;
&lt;li&gt;Generic functions to operate on the generic structure and call the function pointers&lt;&#x2F;li&gt;
&lt;li&gt;The specific structures&lt;&#x2F;li&gt;
&lt;li&gt;The specific functions&lt;&#x2F;li&gt;
&lt;li&gt;Functions to create each specific structure, but returning the generic structure&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;example&quot;&gt;Example&lt;&#x2F;h3&gt;
&lt;p&gt;In this example we&#x27;ll have the generic &lt;code&gt;npc&lt;&#x2F;code&gt; structure and a &lt;code&gt;seller&lt;&#x2F;code&gt; structure which is an specific NPC.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;C&quot; style=&quot;background-color:#282828;color:#fdf4c1aa;&quot; class=&quot;language-C &quot;&gt;&lt;code class=&quot;language-C&quot; data-lang=&quot;C&quot;&gt;&lt;span style=&quot;font-style:italic;color:#928374;&quot;&gt;&#x2F;* The npc&#x2F;seller.h file *&#x2F;
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fa5c4b;&quot;&gt;#include &lt;&#x2F;span&gt;&lt;span style=&quot;color:#b8bb26;&quot;&gt;&amp;quot;npc.h&amp;quot;
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fa5c4b;&quot;&gt;struct&lt;&#x2F;span&gt;&lt;span&gt; npc &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fe8019;&quot;&gt;*&lt;&#x2F;span&gt;&lt;span style=&quot;color:#8ec07c;&quot;&gt;seller_create&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;font-style:italic;color:#928374;&quot;&gt;&#x2F;*...*&#x2F;&lt;&#x2F;span&gt;&lt;span&gt;);
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fa5c4b;&quot;&gt;int &lt;&#x2F;span&gt;&lt;span style=&quot;color:#8ec07c;&quot;&gt;seller_move&lt;&#x2F;span&gt;&lt;span&gt;(npc_seller &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fe8019;&quot;&gt;*&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fdf4c1;&quot;&gt;seller&lt;&#x2F;span&gt;&lt;span&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fa5c4b;&quot;&gt;int &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fdf4c1;&quot;&gt;x&lt;&#x2F;span&gt;&lt;span&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fa5c4b;&quot;&gt;int &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fdf4c1;&quot;&gt;y&lt;&#x2F;span&gt;&lt;span&gt;);
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;pre data-lang=&quot;C&quot; style=&quot;background-color:#282828;color:#fdf4c1aa;&quot; class=&quot;language-C &quot;&gt;&lt;code class=&quot;language-C&quot; data-lang=&quot;C&quot;&gt;&lt;span style=&quot;font-style:italic;color:#928374;&quot;&gt;&#x2F;* The npc&#x2F;seller.c file *&#x2F;
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fa5c4b;&quot;&gt;struct &lt;&#x2F;span&gt;&lt;span style=&quot;color:#8ec07c;&quot;&gt;npc_seller &lt;&#x2F;span&gt;&lt;span&gt;{
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fa5c4b;&quot;&gt;struct &lt;&#x2F;span&gt;&lt;span style=&quot;color:#8ec07c;&quot;&gt;npc&lt;&#x2F;span&gt;&lt;span&gt; *npc;
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;font-style:italic;color:#928374;&quot;&gt;&#x2F;* where the shop is *&#x2F;
&lt;&#x2F;span&gt;&lt;span&gt;    location shop;
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fa5c4b;&quot;&gt;int&lt;&#x2F;span&gt;&lt;span&gt; nstock;
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;font-style:italic;color:#928374;&quot;&gt;&#x2F;* items for sale *&#x2F;
&lt;&#x2F;span&gt;&lt;span&gt;    items &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fe8019;&quot;&gt;*&lt;&#x2F;span&gt;&lt;span&gt;sock;
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;font-style:italic;color:#928374;&quot;&gt;&#x2F;*...*&#x2F;
&lt;&#x2F;span&gt;&lt;span&gt;};
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fa5c4b;&quot;&gt;int &lt;&#x2F;span&gt;&lt;span style=&quot;color:#8ec07c;&quot;&gt;seller_move&lt;&#x2F;span&gt;&lt;span&gt;(npc_seller &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fe8019;&quot;&gt;*&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fdf4c1;&quot;&gt;seller&lt;&#x2F;span&gt;&lt;span&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fa5c4b;&quot;&gt;int &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fdf4c1;&quot;&gt;x&lt;&#x2F;span&gt;&lt;span&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fa5c4b;&quot;&gt;int &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fdf4c1;&quot;&gt;y&lt;&#x2F;span&gt;&lt;span&gt;)
&lt;&#x2F;span&gt;&lt;span&gt;{
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;font-style:italic;color:#928374;&quot;&gt;&#x2F;* keep this NPC inside its shop *&#x2F;
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fa5c4b;&quot;&gt;if &lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fdf4c1;&quot;&gt;is_outside(seller-&amp;gt;shop, x, y)&lt;&#x2F;span&gt;&lt;span&gt;) {
&lt;&#x2F;span&gt;&lt;span&gt;        &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fa5c4b;&quot;&gt;return &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fe8019;&quot;&gt;-&lt;&#x2F;span&gt;&lt;span style=&quot;color:#d3869b;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span&gt;;
&lt;&#x2F;span&gt;&lt;span&gt;    }
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;font-style:italic;color:#928374;&quot;&gt;&#x2F;*...*&#x2F;
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fa5c4b;&quot;&gt;static void &lt;&#x2F;span&gt;&lt;span style=&quot;color:#8ec07c;&quot;&gt;seller_free&lt;&#x2F;span&gt;&lt;span&gt;(npc_seller &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fe8019;&quot;&gt;**&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fdf4c1;&quot;&gt;seller&lt;&#x2F;span&gt;&lt;span&gt;)
&lt;&#x2F;span&gt;&lt;span&gt;{
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fa5c4b;&quot;&gt;if &lt;&#x2F;span&gt;&lt;span&gt;(seller &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fe8019;&quot;&gt;!= &lt;&#x2F;span&gt;&lt;span style=&quot;color:#d3869b;&quot;&gt;NULL&lt;&#x2F;span&gt;&lt;span&gt;) {
&lt;&#x2F;span&gt;&lt;span&gt;        &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fabd2f;&quot;&gt;free&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fdf4c1;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fe8019;&quot;&gt;*&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fdf4c1;&quot;&gt;seller)&lt;&#x2F;span&gt;&lt;span&gt;;
&lt;&#x2F;span&gt;&lt;span&gt;        &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fe8019;&quot;&gt;*&lt;&#x2F;span&gt;&lt;span&gt;seller &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fe8019;&quot;&gt;= &lt;&#x2F;span&gt;&lt;span style=&quot;color:#d3869b;&quot;&gt;NULL&lt;&#x2F;span&gt;&lt;span&gt;;
&lt;&#x2F;span&gt;&lt;span&gt;    }
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fa5c4b;&quot;&gt;struct&lt;&#x2F;span&gt;&lt;span&gt; npc &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fe8019;&quot;&gt;*&lt;&#x2F;span&gt;&lt;span style=&quot;color:#8ec07c;&quot;&gt;seller_create&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;font-style:italic;color:#928374;&quot;&gt;&#x2F;*...*&#x2F;&lt;&#x2F;span&gt;&lt;span&gt;)
&lt;&#x2F;span&gt;&lt;span&gt;{
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fa5c4b;&quot;&gt;struct&lt;&#x2F;span&gt;&lt;span&gt; npc &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fe8019;&quot;&gt;*&lt;&#x2F;span&gt;&lt;span&gt;npc &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fe8019;&quot;&gt;= &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fabd2f;&quot;&gt;calloc&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fdf4c1;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color:#d3869b;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fdf4c1;&quot;&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fe8019;&quot;&gt;sizeof&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fdf4c1;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fa5c4b;&quot;&gt;struct&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fdf4c1;&quot;&gt; npc))&lt;&#x2F;span&gt;&lt;span&gt;;
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fa5c4b;&quot;&gt;struct&lt;&#x2F;span&gt;&lt;span&gt; npc_seller &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fe8019;&quot;&gt;*&lt;&#x2F;span&gt;&lt;span&gt;npc_seller &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fe8019;&quot;&gt;= &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fabd2f;&quot;&gt;calloc&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fdf4c1;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color:#d3869b;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fdf4c1;&quot;&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fe8019;&quot;&gt;sizeof&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fdf4c1;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fa5c4b;&quot;&gt;struct&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fdf4c1;&quot;&gt; npc_seller))&lt;&#x2F;span&gt;&lt;span&gt;;
&lt;&#x2F;span&gt;&lt;span&gt;    npc-&amp;gt;move &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fe8019;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span&gt; seller_move;
&lt;&#x2F;span&gt;&lt;span&gt;    npc-&amp;gt;free_private &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fe8019;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span&gt; seller_free;
&lt;&#x2F;span&gt;&lt;span&gt;    npc-&amp;gt;private &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fe8019;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span&gt; npc_seller;
&lt;&#x2F;span&gt;&lt;span&gt;    npc_seller-&amp;gt;npc &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fe8019;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span&gt; npc;
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;font-style:italic;color:#928374;&quot;&gt;&#x2F;* fill npc_seller *&#x2F;
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fa5c4b;&quot;&gt;return&lt;&#x2F;span&gt;&lt;span&gt; npc;
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;pre data-lang=&quot;C&quot; style=&quot;background-color:#282828;color:#fdf4c1aa;&quot; class=&quot;language-C &quot;&gt;&lt;code class=&quot;language-C&quot; data-lang=&quot;C&quot;&gt;&lt;span style=&quot;font-style:italic;color:#928374;&quot;&gt;&#x2F;* The npc&#x2F;npc.h file *&#x2F;
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fa5c4b;&quot;&gt;typedef int &lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fe8019;&quot;&gt;*&lt;&#x2F;span&gt;&lt;span&gt;_npc_move)(&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fa5c4b;&quot;&gt;void &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fe8019;&quot;&gt;*&lt;&#x2F;span&gt;&lt;span&gt;private, &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fa5c4b;&quot;&gt;int&lt;&#x2F;span&gt;&lt;span&gt; x, &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fa5c4b;&quot;&gt;int&lt;&#x2F;span&gt;&lt;span&gt; y);
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fa5c4b;&quot;&gt;typedef int &lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fe8019;&quot;&gt;*&lt;&#x2F;span&gt;&lt;span&gt;_npc_set_name)(&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fa5c4b;&quot;&gt;void &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fe8019;&quot;&gt;*&lt;&#x2F;span&gt;&lt;span&gt;private, &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fa5c4b;&quot;&gt;const char &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fe8019;&quot;&gt;*&lt;&#x2F;span&gt;&lt;span&gt;name);
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fa5c4b;&quot;&gt;typedef void &lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fe8019;&quot;&gt;*&lt;&#x2F;span&gt;&lt;span&gt;_npc_free_private)(&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fa5c4b;&quot;&gt;void &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fe8019;&quot;&gt;*&lt;&#x2F;span&gt;&lt;span&gt;private);
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fa5c4b;&quot;&gt;struct &lt;&#x2F;span&gt;&lt;span style=&quot;color:#8ec07c;&quot;&gt;npc &lt;&#x2F;span&gt;&lt;span&gt;{
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fa5c4b;&quot;&gt;char&lt;&#x2F;span&gt;&lt;span&gt; name[&lt;&#x2F;span&gt;&lt;span style=&quot;color:#d3869b;&quot;&gt;1024&lt;&#x2F;span&gt;&lt;span&gt;];
&lt;&#x2F;span&gt;&lt;span&gt;    _npc_move move;
&lt;&#x2F;span&gt;&lt;span&gt;    _npc_set_name set_name;
&lt;&#x2F;span&gt;&lt;span&gt;    _npc_free_private free_private;
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fa5c4b;&quot;&gt;void &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fe8019;&quot;&gt;*&lt;&#x2F;span&gt;&lt;span&gt;private;
&lt;&#x2F;span&gt;&lt;span&gt;};
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fa5c4b;&quot;&gt;void &lt;&#x2F;span&gt;&lt;span style=&quot;color:#8ec07c;&quot;&gt;npc_set_name&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fa5c4b;&quot;&gt;struct&lt;&#x2F;span&gt;&lt;span&gt; npc &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fe8019;&quot;&gt;*&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fdf4c1;&quot;&gt;npc&lt;&#x2F;span&gt;&lt;span&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fa5c4b;&quot;&gt;const char &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fe8019;&quot;&gt;*&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fdf4c1;&quot;&gt;name&lt;&#x2F;span&gt;&lt;span&gt;);
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fa5c4b;&quot;&gt;int &lt;&#x2F;span&gt;&lt;span style=&quot;color:#8ec07c;&quot;&gt;npc_move&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fa5c4b;&quot;&gt;struct&lt;&#x2F;span&gt;&lt;span&gt; npc &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fe8019;&quot;&gt;*&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fdf4c1;&quot;&gt;npc&lt;&#x2F;span&gt;&lt;span&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fa5c4b;&quot;&gt;int &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fdf4c1;&quot;&gt;x&lt;&#x2F;span&gt;&lt;span&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fa5c4b;&quot;&gt;int &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fdf4c1;&quot;&gt;y&lt;&#x2F;span&gt;&lt;span&gt;);
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fa5c4b;&quot;&gt;void &lt;&#x2F;span&gt;&lt;span style=&quot;color:#8ec07c;&quot;&gt;npc_free&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fa5c4b;&quot;&gt;struct&lt;&#x2F;span&gt;&lt;span&gt; npc &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fe8019;&quot;&gt;**&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fdf4c1;&quot;&gt;npc&lt;&#x2F;span&gt;&lt;span&gt;);
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;pre data-lang=&quot;C&quot; style=&quot;background-color:#282828;color:#fdf4c1aa;&quot; class=&quot;language-C &quot;&gt;&lt;code class=&quot;language-C&quot; data-lang=&quot;C&quot;&gt;&lt;span style=&quot;font-style:italic;color:#928374;&quot;&gt;&#x2F;* The npc&#x2F;npc.c file *&#x2F;
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span style=&quot;font-style:italic;color:#928374;&quot;&gt;&#x2F;* This function sets the public name, but also calls the private function *&#x2F;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fa5c4b;&quot;&gt;void &lt;&#x2F;span&gt;&lt;span style=&quot;color:#8ec07c;&quot;&gt;npc_set_name&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fa5c4b;&quot;&gt;struct&lt;&#x2F;span&gt;&lt;span&gt; npc &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fe8019;&quot;&gt;*&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fdf4c1;&quot;&gt;npc&lt;&#x2F;span&gt;&lt;span&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fa5c4b;&quot;&gt;const char &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fe8019;&quot;&gt;*&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fdf4c1;&quot;&gt;name&lt;&#x2F;span&gt;&lt;span&gt;)
&lt;&#x2F;span&gt;&lt;span&gt;{
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fa5c4b;&quot;&gt;if &lt;&#x2F;span&gt;&lt;span&gt;(npc &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fe8019;&quot;&gt;!= &lt;&#x2F;span&gt;&lt;span style=&quot;color:#d3869b;&quot;&gt;NULL&lt;&#x2F;span&gt;&lt;span&gt;) {
&lt;&#x2F;span&gt;&lt;span&gt;        &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fabd2f;&quot;&gt;strncpy&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fdf4c1;&quot;&gt;(npc-&amp;gt;name, name, &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fe8019;&quot;&gt;sizeof&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fdf4c1;&quot;&gt;(npc-&amp;gt;name &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fe8019;&quot;&gt;- &lt;&#x2F;span&gt;&lt;span style=&quot;color:#d3869b;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fdf4c1;&quot;&gt;))&lt;&#x2F;span&gt;&lt;span&gt;;
&lt;&#x2F;span&gt;&lt;span&gt;        &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fa5c4b;&quot;&gt;if &lt;&#x2F;span&gt;&lt;span&gt;(npc-&amp;gt;set_name &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fe8019;&quot;&gt;!= &lt;&#x2F;span&gt;&lt;span style=&quot;color:#d3869b;&quot;&gt;NULL&lt;&#x2F;span&gt;&lt;span&gt;) {
&lt;&#x2F;span&gt;&lt;span&gt;            npc-&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fdf4c1;&quot;&gt;set_name(npc-&amp;gt;private, name)&lt;&#x2F;span&gt;&lt;span&gt;;
&lt;&#x2F;span&gt;&lt;span&gt;        }
&lt;&#x2F;span&gt;&lt;span&gt;    }
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span style=&quot;font-style:italic;color:#928374;&quot;&gt;&#x2F;* This function only calls the private function *&#x2F;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fa5c4b;&quot;&gt;int &lt;&#x2F;span&gt;&lt;span style=&quot;color:#8ec07c;&quot;&gt;npc_move&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fa5c4b;&quot;&gt;struct&lt;&#x2F;span&gt;&lt;span&gt; npc &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fe8019;&quot;&gt;*&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fdf4c1;&quot;&gt;npc&lt;&#x2F;span&gt;&lt;span&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fa5c4b;&quot;&gt;int &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fdf4c1;&quot;&gt;x&lt;&#x2F;span&gt;&lt;span&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fa5c4b;&quot;&gt;int &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fdf4c1;&quot;&gt;y&lt;&#x2F;span&gt;&lt;span&gt;)
&lt;&#x2F;span&gt;&lt;span&gt;{
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fa5c4b;&quot;&gt;if &lt;&#x2F;span&gt;&lt;span&gt;(npc &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fe8019;&quot;&gt;!= &lt;&#x2F;span&gt;&lt;span style=&quot;color:#d3869b;&quot;&gt;NULL &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fe8019;&quot;&gt;&amp;amp;&amp;amp;&lt;&#x2F;span&gt;&lt;span&gt; npc-&amp;gt;move &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fe8019;&quot;&gt;!= &lt;&#x2F;span&gt;&lt;span style=&quot;color:#d3869b;&quot;&gt;NULL&lt;&#x2F;span&gt;&lt;span&gt;) {
&lt;&#x2F;span&gt;&lt;span&gt;        &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fa5c4b;&quot;&gt;return&lt;&#x2F;span&gt;&lt;span&gt; npc-&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fdf4c1;&quot;&gt;move(npc-&amp;gt;private, x, y)&lt;&#x2F;span&gt;&lt;span&gt;;
&lt;&#x2F;span&gt;&lt;span&gt;    }
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fa5c4b;&quot;&gt;return &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fe8019;&quot;&gt;-&lt;&#x2F;span&gt;&lt;span style=&quot;color:#d3869b;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span&gt;;
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fa5c4b;&quot;&gt;void &lt;&#x2F;span&gt;&lt;span style=&quot;color:#8ec07c;&quot;&gt;npc_free&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fa5c4b;&quot;&gt;struct&lt;&#x2F;span&gt;&lt;span&gt; npc &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fe8019;&quot;&gt;**&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fdf4c1;&quot;&gt;npc&lt;&#x2F;span&gt;&lt;span&gt;)
&lt;&#x2F;span&gt;&lt;span&gt;{
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fa5c4b;&quot;&gt;if &lt;&#x2F;span&gt;&lt;span&gt;(npc &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fe8019;&quot;&gt;!= &lt;&#x2F;span&gt;&lt;span style=&quot;color:#d3869b;&quot;&gt;NULL&lt;&#x2F;span&gt;&lt;span&gt;) {
&lt;&#x2F;span&gt;&lt;span&gt;        &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fa5c4b;&quot;&gt;if &lt;&#x2F;span&gt;&lt;span&gt;(npc-&amp;gt;free_private &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fe8019;&quot;&gt;!= &lt;&#x2F;span&gt;&lt;span style=&quot;color:#d3869b;&quot;&gt;NULL&lt;&#x2F;span&gt;&lt;span&gt;) {
&lt;&#x2F;span&gt;&lt;span&gt;            npc-&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fdf4c1;&quot;&gt;free_private(&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fe8019;&quot;&gt;&amp;amp;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fdf4c1;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fe8019;&quot;&gt;*&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fdf4c1;&quot;&gt;npc)-&amp;gt;private)&lt;&#x2F;span&gt;&lt;span&gt;;
&lt;&#x2F;span&gt;&lt;span&gt;        }
&lt;&#x2F;span&gt;&lt;span&gt;        &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fabd2f;&quot;&gt;free&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fdf4c1;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fe8019;&quot;&gt;*&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fdf4c1;&quot;&gt;npc)&lt;&#x2F;span&gt;&lt;span&gt;;
&lt;&#x2F;span&gt;&lt;span&gt;        &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fe8019;&quot;&gt;*&lt;&#x2F;span&gt;&lt;span&gt;npc &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fe8019;&quot;&gt;= &lt;&#x2F;span&gt;&lt;span style=&quot;color:#d3869b;&quot;&gt;NULL&lt;&#x2F;span&gt;&lt;span&gt;;
&lt;&#x2F;span&gt;&lt;span&gt;    }
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;pre data-lang=&quot;C&quot; style=&quot;background-color:#282828;color:#fdf4c1aa;&quot; class=&quot;language-C &quot;&gt;&lt;code class=&quot;language-C&quot; data-lang=&quot;C&quot;&gt;&lt;span style=&quot;font-style:italic;color:#928374;&quot;&gt;&#x2F;* The main.c file *&#x2F;
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fa5c4b;&quot;&gt;#include &lt;&#x2F;span&gt;&lt;span style=&quot;color:#b8bb26;&quot;&gt;&amp;quot;npc&#x2F;npc.h&amp;quot;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fa5c4b;&quot;&gt;#include &lt;&#x2F;span&gt;&lt;span style=&quot;color:#b8bb26;&quot;&gt;&amp;quot;npc&#x2F;npc_seller.h&amp;quot;
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fa5c4b;&quot;&gt;struct&lt;&#x2F;span&gt;&lt;span&gt; npc &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fe8019;&quot;&gt;*&lt;&#x2F;span&gt;&lt;span&gt;npc &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fe8019;&quot;&gt;= &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fdf4c1;&quot;&gt;seller_create()&lt;&#x2F;span&gt;&lt;span&gt;;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fdf4c1;&quot;&gt;npc_move(npc, &lt;&#x2F;span&gt;&lt;span style=&quot;color:#d3869b;&quot;&gt;3&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fdf4c1;&quot;&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color:#d3869b;&quot;&gt;4&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fdf4c1;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span&gt;;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fdf4c1;&quot;&gt;npc_free(&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fe8019;&quot;&gt;&amp;amp;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fdf4c1;&quot;&gt;npc)&lt;&#x2F;span&gt;&lt;span&gt;;
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;the-generic-base-structure&quot;&gt;The generic (base) structure&lt;&#x2F;h2&gt;
&lt;p&gt;This generic structure would be like the interface or base class in OOP. The structure should have:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Function pointers for each generic function that the derived structures can implement or override. It could be that not all functions are implemented by all derived structures. Those function pointers would be like the methods that will be implemented or extended by subclasses&lt;&#x2F;li&gt;
&lt;li&gt;Elements that are generic for all, or almost all, specific (derived) structures. Those would be like the properties of the base class&lt;&#x2F;li&gt;
&lt;li&gt;A &lt;code&gt;void *&lt;&#x2F;code&gt; pointer that will hold the pointer to the specific (derived) structure&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;The generic structure could be opaque or public. I&#x27;m usually prone to use opaque structures. It could be a good idea to have a function to create the generic structure, even if the generic structure is public.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;the-generic-functions&quot;&gt;The generic functions&lt;&#x2F;h2&gt;
&lt;p&gt;The generic functions must receive the pointer to the generic structure, and then have different behaviors:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Only operate on the generic structure&lt;&#x2F;li&gt;
&lt;li&gt;Only call the specific function&lt;&#x2F;li&gt;
&lt;li&gt;Operate on the generic structure but also call the specific function. This isn&#x27;t how OOP usually works, if you have a derived class and call a method, it will call the derived class&#x27; method if it has one. However, you can do whatever you want.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;For instance, if the generic structure is an NPC that the player can talk to, there could be a generic function to talk and it would respond with random responses, and some special NPCs could have their own function with particular responses. In this case, the generic function can check if there is a pointer to the specific function and call it, otherwise reply with random phrases.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;the-specific-derived-structure&quot;&gt;The specific (derived) structure&lt;&#x2F;h2&gt;
&lt;p&gt;This structure would be like the derived class that &quot;inherits&quot; the base class. This should have:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;The specific elements for this structure&lt;&#x2F;li&gt;
&lt;li&gt;A pointer to the generic (base) structure&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;We can continue deriving structures if we mix the generic (base) structure ideas and the specific (derived) structure ideas. In that case, we would add function pointers and a &lt;code&gt;void *&lt;&#x2F;code&gt; pointer.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;the-specific-functions&quot;&gt;The specific functions&lt;&#x2F;h2&gt;
&lt;p&gt;The specific functions must receive a pointer to the structure, it could be the specific or the generic structure. However, I think it&#x27;s better to receive the specific structure. If the function needs to operate on the generic structure, it can use the pointer to it.&lt;&#x2F;p&gt;
&lt;p&gt;Also, this specific function may want to call the generic function.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;considerations&quot;&gt;Considerations&lt;&#x2F;h2&gt;
&lt;p&gt;This isn&#x27;t OOP. If you need OOP, use an OOP language.&lt;&#x2F;p&gt;
&lt;p&gt;There are some examples of this patter, if I understand correctly FFmpeg and the Linux kernel use this, maybe their own way of doing it but both have an abstraction with generic and specific structures and functions.&lt;&#x2F;p&gt;
&lt;p&gt;There are some decisions you can make. Should the specific function receive the generic o the specific structure? Should it be any way to directly use the specific structure and it&#x27;s functions? Will the generic function do anything else apart from calling the specific function?&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>Oatmeal Pancake Recipe</title>
          <pubDate>Tue, 02 Dec 2025 00:00:00 +0000</pubDate>
          <author>Nicolás Dato</author>
          <link>https://ndato.com/blog/oatmeal-pancake-recipe/</link>
          <guid>https://ndato.com/blog/oatmeal-pancake-recipe/</guid>
          <description xml:base="https://ndato.com/blog/oatmeal-pancake-recipe/">&lt;p&gt;Here is a recipe to make &lt;em&gt;pancakes&lt;&#x2F;em&gt; without wheat flour.&lt;&#x2F;p&gt;
&lt;p&gt;This is how I do them, this is the result of some trial and error and reading other&#x27;s recipes.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;ingredients&quot;&gt;Ingredients&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;ratios-by-weight&quot;&gt;Ratios by weight:&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;2.5 part milk&lt;&#x2F;li&gt;
&lt;li&gt;2 part milled or rolled oats. Sometimes I buy the rolled oats and then use the blender or something to make it like grounded oats&lt;&#x2F;li&gt;
&lt;li&gt;1 part egg&lt;&#x2F;li&gt;
&lt;li&gt;3%&#x2F;oats baking powder (I&#x27;m not sure if this is too much, but it works)&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;ingredients-for-1l-milk-20-pancakes-you-can-freeze-them&quot;&gt;Ingredients for 1L milk, ~20 pancakes, you can freeze them:&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;1L&lt;&#x2F;em&gt; milk&lt;&#x2F;li&gt;
&lt;li&gt;&lt;em&gt;800gr&lt;&#x2F;em&gt; milled or rolled oats&lt;&#x2F;li&gt;
&lt;li&gt;&lt;em&gt;400gr&lt;&#x2F;em&gt; egg (I use 8 eggs, as the one I buy are ~50gr each)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;em&gt;25g&lt;&#x2F;em&gt; Baking powder&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;extras-add-as-you-wish&quot;&gt;Extras, add as you wish:&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;Honey and&#x2F;or sugar&lt;&#x2F;li&gt;
&lt;li&gt;Oil&lt;&#x2F;li&gt;
&lt;li&gt;Peanut butter&lt;&#x2F;li&gt;
&lt;li&gt;Vanilla&lt;&#x2F;li&gt;
&lt;li&gt;A pinch of salt&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;steps&quot;&gt;Steps&lt;&#x2F;h2&gt;
&lt;p&gt;Main idea: mix liquids and solids separately, then mix them, then cook them.&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;Beat the eggs, there should be bubbles (air)&lt;&#x2F;li&gt;
&lt;li&gt;Add the extras you like to the eggs, such us honey and vanilla, and continue beating&lt;&#x2F;li&gt;
&lt;li&gt;Pour the milk into the mix, continue mixing&#x2F;beating it&lt;&#x2F;li&gt;
&lt;li&gt;In another bowl mix the solids, the oats, the baking powder, and extras like sugar and maybe a bit of salt&lt;&#x2F;li&gt;
&lt;li&gt;Little by little add the solids to the liquids, mixing them. Now you have 1 bowl with the batter&lt;&#x2F;li&gt;
&lt;li&gt;Let it rest some time, 30 minutes or 1 hour. Keep it at room temperature&lt;&#x2F;li&gt;
&lt;li&gt;Preheat the pan, but once it is heated turn it down, almost completely off. This depends, in my case I have to put it almost off, very little fire. My experience is that low heat takes longer but I don&#x27;t burn the pancake&lt;&#x2F;li&gt;
&lt;li&gt;Put some batter in the pan, flip it when the borders are cooked. You&#x27;ll have to try and test when to flip it so that it can be flipped and it isn&#x27;t burned&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;h2 id=&quot;key-points&quot;&gt;Key Points&lt;&#x2F;h2&gt;
&lt;p&gt;The final batter shouldn&#x27;t be liquid (add oats in that case), and shouldn&#x27;t be solid neither (add milk&#x2F;water in that case). Be aware that letting it rest for a while will make the batter more solid. You&#x27;ll have to adapt and use more or less oats. Once you put some batter in the pan, it should slowly spread and make a circle by itself.&lt;&#x2F;p&gt;
&lt;p&gt;I managed to make them fluffy by using a lot of baking powder, beating the eggs for a long time, and using a very low heat when cooking.&lt;&#x2F;p&gt;
&lt;p&gt;You can make a lot of pancakes in one go, and freeze them.&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>Zscaler is a malware, avoid using it</title>
          <pubDate>Mon, 15 Sep 2025 00:00:00 +0000</pubDate>
          <author>Nicolás Dato</author>
          <link>https://ndato.com/blog/zscaler-malware/</link>
          <guid>https://ndato.com/blog/zscaler-malware/</guid>
          <description xml:base="https://ndato.com/blog/zscaler-malware/">&lt;p&gt;&lt;em&gt;The price of liberty is eternal vigilance&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;p&gt;&lt;em&gt;Don&#x27;t use Zscaler Client Connector, avoid it. Zscaler is a malware.&lt;&#x2F;em&gt; This goes for both sides, the employees&#x2F;clients and the company&#x2F;server.&lt;&#x2F;p&gt;
&lt;p&gt;If you are forced to use it &lt;em&gt;assume your computer is compromised and they are al least spying on you&lt;&#x2F;em&gt;. If you are the client&#x2F;employee, and you are forced to use it, then run a VM exclusively to run Zscaler and assume the VM is compromised.&lt;&#x2F;p&gt;
&lt;p&gt;Recently one of our costumers switched to Zscaler. I decided to research a bit about it and how it works, and this is what I found out.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;how-it-works&quot;&gt;How it works&lt;&#x2F;h2&gt;
&lt;p&gt;I had to use it, so I set up a Debian 12 VM using qemu and installed the client there. I had to use Debian 12 because the installer failed in Debian 13 (the latest one).&lt;&#x2F;p&gt;
&lt;p&gt;The Zscaler Client Connector made the following configuration changes (as seen by &lt;code&gt;ip route&lt;&#x2F;code&gt;):&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;It created 1700 routes. Yes, literally. I don&#x27;t know if this is an issue with the server configuration or with Zscaler&lt;&#x2F;li&gt;
&lt;li&gt;Some of those routes &lt;em&gt;redirect all traffic through their software&lt;&#x2F;em&gt; (redirect everything through the zcctun0 interface created by the Zscaler Client Connector)&lt;&#x2F;li&gt;
&lt;li&gt;The redirection of all traffic through zcctun0 (their software) is kept &lt;em&gt;even when you logout and the GUI says the Service Status is OFF&lt;&#x2F;em&gt;&lt;&#x2F;li&gt;
&lt;li&gt;If I close the software, the zcctun0 interface and the routes disappear&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;I launched Wireshark and monitored the traffic:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;If I try to see any website outside of the private network, Zscaler creates an &lt;a href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;HTTP_tunnel&quot;&gt;HTTP tunnel&lt;&#x2F;a&gt; though their servers, and &lt;em&gt;the traffic goes through their servers&lt;&#x2F;em&gt; instead of directly to the website&lt;&#x2F;li&gt;
&lt;li&gt;If I connect to a server using SSH outside of the private network, the packets first go through zcctun0 and then the normal interface. Like if the software sees the packets and decides that those should go though the normal interface directly to their original destination&lt;&#x2F;li&gt;
&lt;li&gt;&lt;em&gt;All of this still happens if you logout and the GUI says the service status is OFF&lt;&#x2F;em&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;risks-for-the-employee-client&quot;&gt;Risks for the employee&#x2F;client&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;em&gt;You are being monitored.&lt;&#x2F;em&gt; The Zscaler Client Connector watches all traffic (by the zcctun0 interface) and decides what to do. It looks like the ssh connection outside their network goes directly to their destination, but the Zscaler software is watching it. However, &lt;em&gt;every website is being redirected through their servers.&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;p&gt;It won&#x27;t surprise me if government agencies are behind Zscaler to gather information and as a backdoor.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;risks-for-the-company-server&quot;&gt;Risks for the company&#x2F;server&lt;&#x2F;h2&gt;
&lt;p&gt;If you use Zscaler they are watching your server&#x27;s traffic. Moreover, they are watching every other company that is using Zscaler. This means that there are more malicious people and more interest in breaching Zscaler than if you have your own VPN.&lt;&#x2F;p&gt;
&lt;p&gt;Think it this way: maybe your company is not the target of malicious people, but there may be other big and more important companies that malicious people may want to target, and when they do breach Zscaler every company will be compromised, not only the targeted one.&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>libtuberia</title>
          <pubDate>Sat, 16 Aug 2025 00:00:00 +0000</pubDate>
          <author>Nicolás Dato</author>
          <link>https://ndato.com/projects/libtuberia/</link>
          <guid>https://ndato.com/projects/libtuberia/</guid>
          <description xml:base="https://ndato.com/projects/libtuberia/">&lt;p&gt;This project is also available at Savannah: &lt;a href=&quot;https:&#x2F;&#x2F;savannah.nongnu.org&#x2F;projects&#x2F;libtuberia&#x2F;&quot;&gt;https:&#x2F;&#x2F;savannah.nongnu.org&#x2F;projects&#x2F;libtuberia&#x2F;&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;about-libtuberia&quot;&gt;About libtuberia&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;em&gt;libtuberia&lt;&#x2F;em&gt; is a library in C to implement a pipeline.&lt;&#x2F;p&gt;
&lt;p&gt;A pipeline would be:&lt;&#x2F;p&gt;
&lt;p&gt;&lt;em&gt;[Source] -&amp;gt; [queue_1] -&amp;gt; [Stage_1] -&amp;gt; [Queue_2] -&amp;gt; [Stage_2] -&amp;gt; [...] -&amp;gt; [Sink]&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Each source, stage, and sink runs in a thread, reads from its input queue, processes the element, and write the result to the output queue.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;motivation&quot;&gt;Motivation&lt;&#x2F;h3&gt;
&lt;p&gt;A few years ago I learned about the pipeline in the CPU, and superscalar processors. Including interesting topics like Tomasulo&#x27;s algorithm. I thought it was a good idea to do something similar in software.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;when-to-use-libtuberia&quot;&gt;When to use libtuberia&lt;&#x2F;h3&gt;
&lt;p&gt;You can benefit from this library when you have a several tasks than can run in parallel (or 1 task that you can split), and the output of one task is the input of the next task.&lt;&#x2F;p&gt;
&lt;p&gt;Instead of running them sequentially, you can run them in parallel with libtuberia. This way, as long as there are elements to be processed, all tasks will be running in parallel without waiting. While the second stage (task) of the pipeline is working on some input, the first stage can work on the next input. If this were done sequentially, the next item would have to wait until the previous item finishes the whole process.&lt;&#x2F;p&gt;
&lt;p&gt;With libtuberia you don&#x27;t have to worry about threads nor queues, libtuberia does it for you.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;get-it&quot;&gt;Get it&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;v0-1-0&quot;&gt;v0.1.0&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;download.savannah.nongnu.org&#x2F;releases&#x2F;libtuberia&#x2F;libtuberia-0.1.0.tar.gz&quot;&gt;https:&#x2F;&#x2F;download.savannah.nongnu.org&#x2F;releases&#x2F;libtuberia&#x2F;libtuberia-0.1.0.tar.gz&lt;&#x2F;a&gt; (&lt;a href=&quot;https:&#x2F;&#x2F;download.savannah.nongnu.org&#x2F;releases&#x2F;libtuberia&#x2F;libtuberia-0.1.0.tar.gz.sig&quot;&gt;gpg sig&lt;&#x2F;a&gt;)&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;git&quot;&gt;Git&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;git.ndato.com&#x2F;libtuberia&quot;&gt;https:&#x2F;&#x2F;git.ndato.com&#x2F;libtuberia&lt;&#x2F;a&gt; (you can also browse it without cloning using the same link)&lt;&#x2F;li&gt;
&lt;li&gt;Mirror: &lt;a href=&quot;https:&#x2F;&#x2F;git.savannah.nongnu.org&#x2F;git&#x2F;libtuberia.git&quot;&gt;https:&#x2F;&#x2F;git.savannah.nongnu.org&#x2F;git&#x2F;libtuberia.git&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;how-to-use-libtuberia&quot;&gt;How to use libtuberia&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;documentation&quot;&gt;Documentation&lt;&#x2F;h3&gt;
&lt;p&gt;You can read a quick guide &lt;a href=&quot;https:&#x2F;&#x2F;git.ndato.com&#x2F;libtuberia&#x2F;about&#x2F;&quot;&gt;in the &quot;about&quot; page of my git&lt;&#x2F;a&gt;, which is &lt;a href=&quot;https:&#x2F;&#x2F;git.ndato.com&#x2F;libtuberia&#x2F;tree&#x2F;README.md&quot;&gt;the README.md file&lt;&#x2F;a&gt;. There you will find how to compile it, and a quick guide.&lt;&#x2F;p&gt;
&lt;p&gt;Also, the &lt;a href=&quot;https:&#x2F;&#x2F;git.ndato.com&#x2F;libtuberia&#x2F;tree&#x2F;src&#x2F;tuberia.h&quot;&gt;tuberia.h file&lt;&#x2F;a&gt; has every structure and function documented.&lt;&#x2F;p&gt;
&lt;p&gt;And finally, if you had &lt;a href=&quot;https:&#x2F;&#x2F;www.doxygen.nl&quot;&gt;Doxygen&lt;&#x2F;a&gt; when installing libtuberia, a man page &lt;code&gt;tuberia.h&lt;&#x2F;code&gt; is also installed (you can read it with &lt;code&gt;man tuberia.h&lt;&#x2F;code&gt;) and a .html is installed in &lt;code&gt;&#x2F;usr&#x2F;doc&#x2F;libtuberia&#x2F;doxygen_html&#x2F;index.html&lt;&#x2F;code&gt;&lt;&#x2F;p&gt;
&lt;h3 id=&quot;examples&quot;&gt;Examples&lt;&#x2F;h3&gt;
&lt;p&gt;There are two examples:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;A simple and quick usage that doesn&#x27;t do anything useful: &lt;a href=&quot;https:&#x2F;&#x2F;git.ndato.com&#x2F;libtuberia&#x2F;tree&#x2F;example&#x2F;simple.c&quot;&gt;https:&#x2F;&#x2F;git.ndato.com&#x2F;libtuberia&#x2F;tree&#x2F;example&#x2F;simple.c&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;A more complex and useful example that resizes a video file: &lt;a href=&quot;https:&#x2F;&#x2F;git.ndato.com&#x2F;libtuberia&#x2F;tree&#x2F;example&#x2F;decode_resize_encode.c&quot;&gt;https:&#x2F;&#x2F;git.ndato.com&#x2F;libtuberia&#x2F;tree&#x2F;example&#x2F;decode_resize_encode.c&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Both examples are installed in &lt;code&gt;&#x2F;usr&#x2F;doc&#x2F;libtuberia&#x2F;example&#x2F;&lt;&#x2F;code&gt;&lt;&#x2F;p&gt;
&lt;h2 id=&quot;bugs&quot;&gt;Bugs&lt;&#x2F;h2&gt;
&lt;p&gt;You can submit bugs at Savannah: &lt;a href=&quot;https:&#x2F;&#x2F;savannah.nongnu.org&#x2F;projects&#x2F;libtuberia&#x2F;&quot;&gt;https:&#x2F;&#x2F;savannah.nongnu.org&#x2F;projects&#x2F;libtuberia&#x2F;&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;future-work&quot;&gt;Future work&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;Implement more complex pipelines
&lt;ul&gt;
&lt;li&gt;A stage can choose the next stage&lt;&#x2F;li&gt;
&lt;li&gt;More than one thread per stage&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</description>
      </item>
      <item>
          <title>A Tor middle relay at home, and the ignorance from the &quot;Cybersecurity&quot; team</title>
          <pubDate>Tue, 10 Jun 2025 00:00:00 +0000</pubDate>
          <author>Nicolás Dato</author>
          <link>https://ndato.com/blog/tor-at-home-experience/</link>
          <guid>https://ndato.com/blog/tor-at-home-experience/</guid>
          <description xml:base="https://ndato.com/blog/tor-at-home-experience/">&lt;h2 id=&quot;background&quot;&gt;Background&lt;&#x2F;h2&gt;
&lt;p&gt;Some years ago I decided to contribute to the Tor network by running a Tor middle relay. I decided to run it at home, in my personal computer. I knew there could be some negative consequences like some websites blocking me, or an increment in captchas I had to solve.&lt;&#x2F;p&gt;
&lt;p&gt;That personal computer is the same I use to work, and we have a client that is a big corpo. From time to time we provide technical support by connecting to their VPN. I hadn&#x27;t connect to their VPN for a long time.&lt;&#x2F;p&gt;
&lt;p&gt;When someone uses Tor, they use 3 relays in order: the guard, the middle, and the exit relay. If someone sees a connection from an IP that is an exit relay, it can be a Tor connection. &lt;em&gt;If someone sees a connection from a middle relay IP, it CAN&#x27;T be a Tor connection&lt;&#x2F;em&gt; because Tor doesn&#x27;t work like that, the middle relay connects to the exit relay and it&#x27;s the exit node that connects to the destination.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;the-call-from-the-big-corpo&quot;&gt;The call from the big corpo&lt;&#x2F;h2&gt;
&lt;p&gt;One day they changed their VPN and I had a call with them to configure the new VPN, set up the account and so on. Of course, as this is a big corpo they use proprietary software, I always try to use a free software alternative if it works, but as I was in a phone call with them I decided to boot Windows and install that proprietary VPN.  I followed all instructions, successfully connected to their VPN, disconnected, and ended the phone call.&lt;&#x2F;p&gt;
&lt;p&gt;Minutes latter I received a phone call from an unknown number. I didn&#x27;t answer but they called again so I answered. They asked me if I was me (yes) and they said they where from the cybersecurity team from that big corpo. They started asking me weird questions about which software I was using to connect to their VPN. That was a big surprise because I would expect those questions if I had used an unofficial free software from Linux, but in this case I did use Windows and the official proprietary software. I told them that I was in a phone call with them and they guided me on how to connect to the VPN and I that followed all the steps, but they kept asking about me how I connected to their VPN. I think they were hiding the real question, maybe they first wanted to gather information from me, because after some time &lt;em&gt;they finally asked if I was using Tor&lt;&#x2F;em&gt; (or something like that).&lt;&#x2F;p&gt;
&lt;p&gt;At first, I was kind of excited. &lt;em&gt;It was my moment to talk about Tor&lt;&#x2F;em&gt;. I thought it would be easy to explain, as they were the cybersecurity team they should know even more than me about Tor. So I would just say I run the middle relay, maybe explain a bit about Tor just in case, and they would be happy and I would be happy too because I could talk about Tor to someone else.&lt;&#x2F;p&gt;
&lt;p&gt;The reality was that &lt;em&gt;they knew nothing about Tor&lt;&#x2F;em&gt;, only that it was a privacy software. I tried to explain them how the guard-middle-exit relays works, and that I run a middle relay but I wasn&#x27;t using the Tor network, and that I was on Windows so there wasn&#x27;t any relay running at that time. But I couldn&#x27;t explain myself, or they didn&#x27;t want to take me explanation. They didn&#x27;t understand that if they were seeing my IP it meant that I wasn&#x27;t using Tor because I was a middle relay, if I had been using Tor they would have seen the IP of an exit relay.&lt;&#x2F;p&gt;
&lt;p&gt;Eventually they decided to consult with their manager and that they would call me back. I checked that I hadn&#x27;t run an exit relay by mistake (I wasn&#x27;t), and I tried to convince myself, to prove myself, that I wasn&#x27;t connecting through Tor (I wasn&#x27;t).&lt;&#x2F;p&gt;
&lt;p&gt;Finally, they contacted me by email and &lt;em&gt;they demanded me to stop using Tor to connect to their VPN&lt;&#x2F;em&gt;. In the email there was an screenshot showing a log with my IP and some information. I searched that line and I found literally the same line on a website that lists all the Tor relays. One of the columns was the type of relay and my IP was a middle relay, as it should be.&lt;&#x2F;p&gt;
&lt;p&gt;I didn&#x27;t like that email, it meant they didn&#x27;t know anything about Tor, and they accused me of doing something that I didn&#x27;t do, and demanded me to stop doing that thing that I wasn&#x27;t doing. I was thinking in sending an email telling them that I didn&#x27;t use Tor and writing an explanation with links to Tor&#x27;s website. But I decided the best was to follow they commands, i.e. do nothing. I told them &quot;I won&#x27;t use Tor to connect to their VPN&quot;, which was what they wanted to read from me, and somehow I was satisfied because I wasn&#x27;t lying nor saying that I did use Tor.&lt;&#x2F;p&gt;
&lt;p&gt;Anyway, I decided to stop running the Tor middle relay at home in case I needed to connect to their VPN (but I never had to connect to their VPN ever again). I knew that having it at home wasn&#x27;t good for the network because I was rebooting the computer or powering it off constantly. After that I set up a VPS (this website) &lt;a href=&quot;https:&#x2F;&#x2F;metrics.torproject.org&#x2F;rs.html#details&#x2F;7EAAA9A9A1B0B834B74C60CDBBCE306CA7F91423&quot;&gt;that runs a Tor relay&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;thoughts-about-the-cybersecurity-team-and-their-demands&quot;&gt;Thoughts about the Cybersecurity team and their demands&lt;&#x2F;h2&gt;
&lt;p&gt;At that time, when I received the phone call and then the email, I thought they were idiots, ignorants, that were in a position (cybersecurity) that they didn&#x27;t deserve, and that they were saying and demanding nonsenses.&lt;&#x2F;p&gt;
&lt;p&gt;Now I understand that they have protocols and software with alarms, and that they have to comply with that. If the software says that there was a suspicious connection, and the protocol is to stop it, I get it, no matter what I could tell them, they didn&#x27;t like my connection and I should stop doing whatever I was doing.&lt;&#x2F;p&gt;
&lt;p&gt;However, I still think they were (are) ignorants and idiots, I think they should have said something like &quot;ok, I understand that you run a middle relay and in fact the log says so. I understand that you didn&#x27;t connect through the Tor network. But you know that as we&#x27;ve got an alarm here we can&#x27;t let it go, and if you connect again the alarm will show up again. Can you stop the tor middle relay if you are going to connect to our VPN?&quot;.&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>Using typedef or not</title>
          <pubDate>Wed, 26 Mar 2025 00:00:00 +0000</pubDate>
          <author>Nicolás Dato</author>
          <link>https://ndato.com/articles/typedef-or-not/</link>
          <guid>https://ndato.com/articles/typedef-or-not/</guid>
          <description xml:base="https://ndato.com/articles/typedef-or-not/">&lt;h2 id=&quot;general-idea&quot;&gt;General Idea&lt;&#x2F;h2&gt;
&lt;p&gt;Using &lt;em&gt;typedef&lt;&#x2F;em&gt; allows us to rename a data type, and I follow these ideas:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Sticking to the current coding convention.&lt;&#x2F;li&gt;
&lt;li&gt;Using &lt;em&gt;typedef&lt;&#x2F;em&gt; for encapsulated structs (i.e. hidden, opaque).&lt;&#x2F;li&gt;
&lt;li&gt;Using it for function pointers.&lt;&#x2F;li&gt;
&lt;li&gt;Avoiding it for any other case, including normal structs and enums.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;example&quot;&gt;Example&lt;&#x2F;h3&gt;
&lt;pre data-lang=&quot;C&quot; style=&quot;background-color:#282828;color:#fdf4c1aa;&quot; class=&quot;language-C &quot;&gt;&lt;code class=&quot;language-C&quot; data-lang=&quot;C&quot;&gt;&lt;span style=&quot;font-style:italic;color:#928374;&quot;&gt;&#x2F;* The .h file *&#x2F;
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fa5c4b;&quot;&gt;struct &lt;&#x2F;span&gt;&lt;span style=&quot;color:#8ec07c;&quot;&gt;position &lt;&#x2F;span&gt;&lt;span&gt;{
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fa5c4b;&quot;&gt;int&lt;&#x2F;span&gt;&lt;span&gt; x;
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fa5c4b;&quot;&gt;int&lt;&#x2F;span&gt;&lt;span&gt; y;
&lt;&#x2F;span&gt;&lt;span&gt;};
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fa5c4b;&quot;&gt;typedef struct&lt;&#x2F;span&gt;&lt;span&gt; ctx &lt;&#x2F;span&gt;&lt;span style=&quot;color:#8ec07c;&quot;&gt;ctx&lt;&#x2F;span&gt;&lt;span&gt;;
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fa5c4b;&quot;&gt;typedef int &lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fe8019;&quot;&gt;*&lt;&#x2F;span&gt;&lt;span&gt;context_cb)(ctx &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fe8019;&quot;&gt;*&lt;&#x2F;span&gt;&lt;span&gt;ctx, &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fa5c4b;&quot;&gt;struct&lt;&#x2F;span&gt;&lt;span&gt; position &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fe8019;&quot;&gt;*&lt;&#x2F;span&gt;&lt;span&gt;position);
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;ctx &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fe8019;&quot;&gt;*&lt;&#x2F;span&gt;&lt;span style=&quot;color:#8ec07c;&quot;&gt;new_context&lt;&#x2F;span&gt;&lt;span&gt;(context_cb &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fdf4c1;&quot;&gt;cb&lt;&#x2F;span&gt;&lt;span&gt;);
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;pre data-lang=&quot;C&quot; style=&quot;background-color:#282828;color:#fdf4c1aa;&quot; class=&quot;language-C &quot;&gt;&lt;code class=&quot;language-C&quot; data-lang=&quot;C&quot;&gt;&lt;span style=&quot;font-style:italic;color:#928374;&quot;&gt;&#x2F;* The .c file *&#x2F;
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fa5c4b;&quot;&gt;struct &lt;&#x2F;span&gt;&lt;span style=&quot;color:#8ec07c;&quot;&gt;ctx &lt;&#x2F;span&gt;&lt;span&gt;{
&lt;&#x2F;span&gt;&lt;span&gt;    context_cb cb;
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;font-style:italic;color:#928374;&quot;&gt;&#x2F;*...*&#x2F;
&lt;&#x2F;span&gt;&lt;span&gt;};
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;explanation&quot;&gt;Explanation&lt;&#x2F;h2&gt;
&lt;p&gt;I kind of avoid &lt;em&gt;typedef&lt;&#x2F;em&gt;, the main problem I see is that it hides the actual type.
However, if you have an encapsulated struct then it makes sense to hide it,
because you can&#x27;t use it as a struct.&lt;&#x2F;p&gt;
&lt;p&gt;I prefer to know that the type is an enum, or an struct. This way, when it is an
struct I know that I can access its elements, and that doing it should be safe.
If the struct is meant to be accessed only by functions, then it should be
opaque and typedef should be used.&lt;&#x2F;p&gt;
&lt;p&gt;Also, it allows you to use the same name for related things,
like &lt;a href=&quot;https:&#x2F;&#x2F;www.man7.org&#x2F;linux&#x2F;man-pages&#x2F;man2&#x2F;stat.2.html&quot;&gt;stat&lt;&#x2F;a&gt;
that is a function and also the struct used in that function.&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>My List of Music</title>
          <pubDate>Wed, 26 Feb 2025 00:00:00 +0000</pubDate>
          <author>Nicolás Dato</author>
          <link>https://ndato.com/blog/music-list/</link>
          <guid>https://ndato.com/blog/music-list/</guid>
          <description xml:base="https://ndato.com/blog/music-list/">&lt;p&gt;&lt;em&gt;Without music life would be a mistake.&lt;&#x2F;em&gt; &lt;sub&gt;(&lt;a href=&quot;https:&#x2F;&#x2F;www.gutenberg.org&#x2F;cache&#x2F;epub&#x2F;52263&#x2F;pg52263-images.html#MAXIMS_AND_MISSILES&quot;&gt;Ohne Musik wäre das Leben ein Irrtum.&lt;&#x2F;a&gt; - Friedrich Nietzsche)&lt;&#x2F;sub&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Music is international, we don&#x27;t need to understand the lyrics to enjoy it. We don&#x27;t need lyrics at all. Maybe it is universal too.&lt;&#x2F;p&gt;
&lt;p&gt;Here is a list of songs and albums that I like, that I&#x27;d recomend you to listen to. There are a lot more songs that I like, but this list is about &lt;em&gt;special&lt;&#x2F;em&gt; songs, they have something different in my opinion. I&#x27;ll also include some intresting or rare songs, that maybe are not exactly good but are rare or intresting.&lt;&#x2F;p&gt;
&lt;p&gt;The list is incomplete and I&#x27;m adding more songs from time to time. I&#x27;ll try to keep this list updated.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;introduction-to-my-music-preferences&quot;&gt;Introduction to my music preferences&lt;&#x2F;h2&gt;
&lt;p&gt;I started to listen to music when I was 14. I would download songs via some p2p program like Ares or EMule. One of the first band was Oasis, and then Green Day. Today I like them but not as much as before.&lt;&#x2F;p&gt;
&lt;p&gt;Then when I was 15, some friends persuaded me into listening to Heavy Metal. Some of the first songs I downloaded were by Iron Maiden, &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=86URGgqONvA&quot;&gt;Run to the Hills&lt;&#x2F;a&gt; and &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=9qbRHY1l0vc&quot;&gt;Two Minutes to Midnight&lt;&#x2F;a&gt;. One day a friend lend me a CD with a mix of songs. If I remember correctly, it had Dream Theater, Symphony X, Rammstein, and AC&#x2F;DC. And I recall watching and listening to the &lt;a href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;S%26M_(album)&quot;&gt;S&amp;amp;M album by Metallica&lt;&#x2F;a&gt; in a friend&#x27;s house.&lt;&#x2F;p&gt;
&lt;p&gt;In the beginning, I would only listen to international bands and none from Argentina. I don&#x27;t know why I thought that argentine music was bad (it is NOT). Several years later someone mentioned me Hermética, and that led me to discover and enjoy V8 - Hermética - Almafuerte. And years leter, I would listen and enjoy Charly García, some songs by Luis Alberto Spinetta, and bands like Los Abuelos de la Nada, Bersuit Vergarabat, and others.&lt;&#x2F;p&gt;
&lt;p&gt;Now, I have a strong preference for music before the year 2000, and usually I prefer the first albums of each band. It&#x27;s like it feels to me that bands change their style and I not like them as much as before.&lt;&#x2F;p&gt;
&lt;p&gt;I like listening to covers, I like different versions of the same song or with a different voice. I also like live versions because of the same idea, live music is sometimes a bit different than the recorded version. There is a website called &lt;a href=&quot;https:&#x2F;&#x2F;secondhandsongs.com&#x2F;&quot;&gt;https:&#x2F;&#x2F;secondhandsongs.com&#x2F;&lt;&#x2F;a&gt; where you can find who composed the song and find covers of it.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;special-mention-to-some-artists&quot;&gt;Special mention to some artists&lt;&#x2F;h3&gt;
&lt;p&gt;If I have to choose some specific artists and bands, that somehow had a bigger impact in me, those are:&lt;&#x2F;p&gt;
&lt;p&gt;Ronnie James Dio, Marty Friedman, Tarja Turunen, Dream Theater, Rammstein, Rainbow, Megadeth, Judas Priest, Pink Floyd.&lt;&#x2F;p&gt;
&lt;p&gt;And from Argentina:&lt;&#x2F;p&gt;
&lt;p&gt;Ricardo Iorio, Claudio O&#x27;Connor, Charly García, Luis Alberto Spinetta.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;rock&quot;&gt;Rock&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Pink_Floyd&quot;&gt;Pink Floyd&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=QHhNt6q06_k&quot;&gt;Comfortably Numb&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;This song is one of my favourites of all, in particular the guitar solo. I think this song is the best of the best. There may be other songs that are at the same level than this, but there are no other songs above it.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=hjpF8ukSrvk&quot;&gt;Wish You Were Here&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=HrxX9TBj2zY&quot;&gt;Another Brick in the Wall, part 2&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Live, Rare: &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=HGXu1lNmL-A&quot;&gt;Comfortably Numb - David Gilmour &amp;amp; David Bowie&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Album: &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=k9ynZnEBtvw&quot;&gt;The Dark Side of the Moon&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;This is an album to listen from start to end, in order, without interruptions, all songs are awesome. This album is the best of the best.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;Album: &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=54W8kktFE_o&amp;amp;list=OLAK5uy_mzowhqljIOba8BVGEmVkeaWeL2S_bO4bw&quot;&gt;Wish You Were Here&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;Another album to listen from start to end.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;Cover: &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=oe2rLwFkuw0&quot;&gt;High Hopes - Nightwish&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Queen_(band)&quot;&gt;Queen&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;Rare: &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=fCP2-Bfhy04&quot;&gt;Under Pressure - Annie Lennox &amp;amp; David Bowie&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;This is from &lt;a href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;The_Freddie_Mercury_Tribute_Concert&quot;&gt;The Freddie Mercury Tribute Concert for AIDS Awareness&lt;&#x2F;a&gt;, 5 months after &lt;a href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Freddie_Mercury&quot;&gt;Freddie Mercury&lt;&#x2F;a&gt; died.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=bSnlKl_PoQU&quot;&gt;Bohemian Rhapsody&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=04854XqcfCY&quot;&gt;We Are the Champions&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=HgzGwKwLmgM&quot;&gt;Don&#x27;t Stop Me Now&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=hFDcoX7s6rE&quot;&gt;I Want It All&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=zO6D_BAuYCI&quot;&gt;Crazy Little Thing Called Love&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=EKpHL483Bzw&quot;&gt;Somebody to Love&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=WUOtCLOXgm8&quot;&gt;I Want to Break Free&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=2bqm4gRY3mA&quot;&gt;Love of My Life&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Cover, Live: &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=AhpU0zGMyr0&amp;amp;t=39&quot;&gt;Jailhouse Rock&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Deep_Purple&quot;&gt;Deep Purple&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=K3WAC7CZTDA&quot;&gt;Sometimes I Feel Like Screaming&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=lC4gKA4ezcU&quot;&gt;Highway Star&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=gZ_kez7WVUU&quot;&gt;Perfect Strangers&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=dUcBOw4C8xA&quot;&gt;Burn&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=BA4IApGECBA&quot;&gt;A Gypsy&#x27;s Kiss&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Cover: &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=4SrneiMeXnY&quot;&gt;Burn - W.A.S.P.&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Scorpions_(band)&quot;&gt;Scorpions&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=F_-ZuVy76yg&quot;&gt;Wind of Change&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Mr. Gorbachev, tear down this wall!&lt;&#x2F;em&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Some people think that the CIA was involved in this song.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;Cover: &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=f4Mc-NYPHaQ&quot;&gt;The Temple of the King&lt;&#x2F;a&gt; (Rainbow)
&lt;ul&gt;
&lt;li&gt;From &lt;a href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Ronnie_James_Dio_%E2%80%93_This_Is_Your_Life&quot;&gt;Ronnie James Dio - This is your Life&lt;&#x2F;a&gt; tribute album.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;Rare: &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=JD9F1X8N7rk&quot;&gt;Viento de Cambio&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;This is &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=F_-ZuVy76yg&quot;&gt;Wind of Change&lt;&#x2F;a&gt; in spanish, very intresting.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Uriah_Heep_(band)&quot;&gt;Uriah Heep&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;I don&#x27;t like much songs from them, but there are a few that I like.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=fipplWIr1SY&quot;&gt;Lady in Black&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;My favourite song by them.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=jIdmWA8hxo4&quot;&gt;Easy Livin&#x27;&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=lA4DFOCwnwk&quot;&gt;The Wizard&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=nMMrazRIdx4&quot;&gt;Look at Yourself&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Cover: &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=Y3i_zxWjFfY&quot;&gt;Dama Negra - Mago de Oz&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;Lady in Black in spanish.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;The_Beatles&quot;&gt;The Beatles&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=vWW2SzoAXMo&quot;&gt;Helter Skelter&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;Is this Heavy Metal?&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=oxwAB3SECtc&quot;&gt;I Saw Her Standing There&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;I had to sing this song in an english lesson&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=HuS5NuXRb5Y&quot;&gt;Eleanor Rigby&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=De1LCQvbqV4&quot;&gt;Octupus&#x27;s Garden&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=l7x-0c9jl4Y&quot;&gt;Lucy in the Sky with Diamonds&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;The_Who&quot;&gt;The Who&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=QRTNm6GLJYI&quot;&gt;Baba O&#x27;Riley&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Yes_(band)&quot;&gt;Yes&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=cPCLFtxpadE&quot;&gt;Roundabout&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;argentinian-rock&quot;&gt;Argentinian Rock&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Charly_Garc%C3%ADa&quot;&gt;Charly García&lt;&#x2F;a&gt; &#x2F; &lt;a href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Ser%C3%BA_Gir%C3%A1n&quot;&gt;Serú Girán&lt;&#x2F;a&gt; &#x2F; &lt;a href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Sui_Generis&quot;&gt;Sui Generis&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=7oMApe1k-o4&quot;&gt;Promesas Sobre el Bidet&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Cada cual tiene un trip en el bocho, difícil que lleguemos a ponernos de acuerdo.&lt;&#x2F;em&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=h9AHQV3pPn8&quot;&gt;Ojos de Video Tape&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=81FUY_H9vzU&quot;&gt;No Soy Un Extraño&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=DeMCz0O7-FM&quot;&gt;Demoliendo Hoteles&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=1Zjm0uh8oeA&quot;&gt;Canción Para Mi Muerte&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=qt83jtmjClM&quot;&gt;Quizás, Porque&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Live: &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=SskpYGyEDmU&quot;&gt;Seminaré&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Live: &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=kHPja5eLZdU&quot;&gt;Rezo Por Vos&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Live: &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=CVBXVBzEThg&quot;&gt;No Llores por Mí, Argentina&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;PorSuiGieco&quot;&gt;PorSuiGieco&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=SoWEVg-8kJI&quot;&gt;La Colina de la Vida&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Rare, Live: &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=viYUTyfQ1bg&quot;&gt;La Colina de la Vida w&#x2F;Merces Sosa&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Cover: &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=ThwWcDh9wWA&quot;&gt;La Colina de la Vida - Attaque 77 w&#x2F;Leon Gieco&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Luis_Alberto_Spinetta&quot;&gt;Luis Alberto Spinetta&lt;&#x2F;a&gt; &#x2F; &lt;a href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Almendra_(band)&quot;&gt;Almendra&lt;&#x2F;a&gt; &#x2F; &lt;a href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Pescado_Rabioso&quot;&gt;Pescado Rabioso&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;The live version from the DVD &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=vilYvjWzhP8&amp;amp;list=PL0Ne8_ae57M6K_QcE2Yuf817WGhxHywgc&quot;&gt;Spinetta y las Bandas Eternas&lt;&#x2F;a&gt; are awesome and even better than the original album version.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=UsNboV5bWxc&quot;&gt;Bajan&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=xrxjTWhLQUs&quot;&gt;El Anillo del Capitán Beto&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=b-u-bchAnW4&quot;&gt;Todas las Hojas son del Viento&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=W47hOuQjDag&quot;&gt;Barro Tal Vez&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Cover: &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=TPw7g2ZkpZw&quot;&gt;Barro Tal Vez - Mercedes Sosa&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Live: &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=kHPja5eLZdU&quot;&gt;Rezo por Vos&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Live: &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=D9-R22mujaM&quot;&gt;Me Gusta ese Tajo&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Live, Cover: &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=vLCEqHzJfos&quot;&gt;Mariposas de Madera&lt;&#x2F;a&gt; (Miguel Abuelo)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=Cg2EdtBguc4&quot;&gt;Ana no Duerme&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Cover: &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=vLSOeXi6F_8&quot;&gt;Ana no Duerme - O&#x27;Connor&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Los_Abuelos_de_la_Nada&quot;&gt;Los Abuelos de la Nada&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;Live: &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=J0xdIDXd2Tw&quot;&gt;Costumbres Argentinas&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Live: &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=rj2NhrfQ6uY&quot;&gt;Mil Horas&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Live: &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=C8PGUudTYRs&quot;&gt;Lunes por la Madrugada&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Miguel_Mateos&quot;&gt;Miguel Mateos&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;Live: &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=Kb21f9SJ8OY&quot;&gt;Tirá para Arriba&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Live: &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=S89ha_FxQLk&quot;&gt;Un Gato en la Ciudad&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Live: &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=NyeY0ca6vUM&quot;&gt;Perdiendo el Control&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Cover: &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=xqtIr9TQVXM&quot;&gt;Un Gato en la Ciudad - O&#x27;Connor&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;heavy-metal&quot;&gt;Heavy Metal&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Rainbow_(rock_band)&quot;&gt;Rainbow&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Dio is &lt;strong&gt;Dios&lt;&#x2F;strong&gt;&lt;&#x2F;em&gt; \m&#x2F;&lt;&#x2F;li&gt;
&lt;li&gt;The &lt;a href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Ritchie_Blackmore&quot;&gt;Ritchie Blackmore&lt;&#x2F;a&gt;&#x27;s band, and &lt;a href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Ronnie_James_Dio&quot;&gt;Ronnie James Dio&lt;&#x2F;a&gt; was here too.&lt;&#x2F;li&gt;
&lt;li&gt;I think I can listen and enjoy their first two albums entirely. The combination of Blackmore and Dio is so good. I love Dio&#x27;s voice and the way he sings. I know nothing about music, but it sounds to me that instead of singing along with the instruments, he recites the lyrics in his own way, his own melody, while the instruments play the music their own way. And it fits perfectly.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=YmJIccPWnEk&quot;&gt;Stargazer&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=B7nKzCRL_oo&quot;&gt;The Temple of the King&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=KikLLLeyVOk&quot;&gt;A Light in the Black&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=dDO-Kk9956g&quot;&gt;Tarot Woman&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Live: &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=FarJq7QGBys&quot;&gt;Sixteenth Century Greensleeves&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;I prefer the live versions over &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=wwTKtMQ-O7Y&quot;&gt;the album&#x27;s original version&lt;&#x2F;a&gt;.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;Live: &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=ghwmHEJw-kg&quot;&gt;Catch the Rainbow&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;I prefer the live versions over &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=V5QukAC-jqE&quot;&gt;the album&#x27;s original version&lt;&#x2F;a&gt;.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;Cover: &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=f4Mc-NYPHaQZ&quot;&gt;The Temple of the King - Scorpions&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Album: &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=ORnvO1VyYMk&amp;amp;list=OLAK5uy_lfO__TGZYzTrJZ66F7FbqdFww3YnHHeXk&quot;&gt;Ritchie Blackmore&#x27;s Rainbow&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Album: &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=dDO-Kk9956g&amp;amp;list=OLAK5uy_lfRIB-1n-NR3z1skG8PdOm2IJa0O6x6Ko&quot;&gt;Rising&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Megadeth&quot;&gt;Megadeth&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;Marty Friedman was here too, from 1990 until 2000.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=psu9D1Qgt_I&quot;&gt;In My Darkest Hour&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;I was introduced to this song by a friend, who really liked the part that Mustaine says &lt;em&gt;bitch&lt;&#x2F;em&gt;.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=J5o8Daw1ZsY&quot;&gt;Holy Wars... the Punishment Due&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=x5A9Aa-WU5E&quot;&gt;Hangar 18&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=sONL6QUMR9E&quot;&gt;Tornado of Souls&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;This on has a great guitar solo.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;Album: &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=9d4ui9q7eDM&amp;amp;list=OLAK5uy_lBLXRW43EViiE9xRRCR6l1Ghtj1Ko6Mhc&amp;amp;index=1&quot;&gt;Rust in Peace&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;One of the top albums of all time, and I wanted to highlight the previous 3 songs, from Rust in Peace, with Marty Friedman.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=LVhJy-CR64Q&quot;&gt;Peace Sells&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=WdoXZf-FZyA&quot;&gt;Symphony of Destruction&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Megadeth, Megadeth, aguante Megadeth!&lt;&#x2F;em&gt; This is a good song, but I specially included it because of the &lt;em&gt;aguante Megadeth&lt;&#x2F;em&gt; chant.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=69yQhlBo8iE&quot;&gt;Here is Mustaine talking about that&lt;&#x2F;a&gt;, and &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=15g7-Xx0vVw&quot;&gt;also here too&lt;&#x2F;a&gt;. He said he thought that aguante meant tequila.&lt;&#x2F;li&gt;
&lt;li&gt;It is said to have started in 1994, and Mustaine didn&#x27;t know what was going on so he stopped singing to pay attention. &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=nkhkzTUsLqI&quot;&gt;Here is the video&lt;&#x2F;a&gt;, it happens in the first 45 seconds.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=Qcy07OvWdl0&quot;&gt;She Wolf&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=kfTcE89sBXU&quot;&gt;Mechanix&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;There are two ways you can hear this next song. There is our way, and there is their way&lt;&#x2F;em&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Mustaine wrote Mechanix before joining Metallica (our way). Then Metallica used Mechanix to write the song &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=-zKOhVSERS8&quot;&gt;The Four Horsemen&lt;&#x2F;a&gt; (their way).&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;Live Album: &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=k_ud1P5Roog&amp;amp;list=OLAK5uy_kmPZMIlr6LcJuC4-l8RDtBI-N60kE_xxE&quot;&gt;That One Night: Live in Buenos Aires&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;This is a live album from 2005. I didn&#x27;t know Megadeth yet, and I was too young to understand and enjoy music. What a shame. That is a concert I would pay a ticket that takes me back to 2005.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;Cover: &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=WY7obsYYS7k&quot;&gt;Paranoid&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Rare: &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=iyzDZMyEzqg&quot;&gt;Tust (spanish version)&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;So &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=flsC1YdwARE&quot;&gt;Trust&lt;&#x2F;a&gt; but with the chorus in spanish, both versions are very good.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Black_Sabbath&quot;&gt;Black Sabbath&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;Some people say Black Sabbath is the father of Heavy Metal.&lt;&#x2F;li&gt;
&lt;li&gt;Album: &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=fWvKvOViM3g&quot;&gt;Paranoid&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Album: &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=OnWsRUKGDeo&quot;&gt;Heaven and Hell&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;Ronnie James Dio is the singer here. This is an excellent album, and Dio&#x27;s voice makes it better. I love Dio&#x27;s voice.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=hZcLIsHdvss&quot;&gt;War Pigs&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Evil minds that plot destruction. Sorcerer of death&#x27;s construction&lt;&#x2F;em&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Alternate version, a demo, with different lyrics: &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=67JcYZb8VG4&quot;&gt;Walpurgis&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=9kgQQuPZ8K0&quot;&gt;N.I.B&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;My name is Lucifer, please take my hand&lt;&#x2F;em&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=BOTIIw76qiE&quot;&gt;Paranoid&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Cover: &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=WY7obsYYS7k&quot;&gt;Paranoid - Megadeth&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=O51pOYh_rNI&quot;&gt;Heaven and Hell&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;The world is full of Kings and Queens, who blind your eyes and steal your dreams&lt;&#x2F;em&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=qtiY5z2zufU&quot;&gt;Die Young&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=suRA7ip-p2E&quot;&gt;Children of the Sea&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=b3-QqGVt-tM&quot;&gt;Iron Man&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=chxt6iZHRTs&quot;&gt;Children of the Grave&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=378aOgtrf1c&quot;&gt;Sabbra Cadabra&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=OVWW0XD6v2Q&quot;&gt;Fluff&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;I like this one because I like it, and because it is instrumental and acoustic.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;Cover, Rare: &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=3Gl5I8vWmmA&quot;&gt;Blue Suede Shoes&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Rare, Live: &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=lHyUyPPipJw&quot;&gt;Black Sabbath w&#x2F; Rob Halford&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;This is rare, but someone I don&#x27;t like Halford&#x27;s voice with Black Sabbath. I prefer Ozzy over Halford (in Black Sabbath).&lt;&#x2F;li&gt;
&lt;li&gt;There are two women kissing and one of them is flashing her boobs at 32:14&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Ozzy_Osbourne&quot;&gt;Ozzy Osbourne&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=o0RE230PlX4&quot;&gt;Mr. Crowley&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;A classic, an excellent song. What an awesome keyboard solo at the start!&lt;&#x2F;li&gt;
&lt;li&gt;There is a &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=G3LvhdFEOqs&quot;&gt;live version&lt;&#x2F;a&gt; which has a slower tempo, I prefer the original with faster (normal) tempo.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=hQ_Z-10dXSE&quot;&gt;Crazy Train&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;All aboard! hahahaha&lt;&#x2F;em&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=YwWVE84OEIA&quot;&gt;Diary of a Madman&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=lBWuLyIqUGQ&quot;&gt;Steal Away (The Night)&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=oqpBP3Tjwi4&quot;&gt;Mama, I&#x27;m Coming Home&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Ronnie_James_Dio&quot;&gt;Ronnie James Dio&lt;&#x2F;a&gt; (&lt;a href=&quot;https:&#x2F;&#x2F;ronniejamesdio.com&#x2F;&quot;&gt;his personal site&lt;&#x2F;a&gt;)
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Dio is &lt;em&gt;Dios&lt;&#x2F;em&gt;&lt;&#x2F;em&gt; \m&#x2F;&#x2F;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=2lvs2FzF64o&quot;&gt;Holy Diver&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Cover: &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=7lQ0vexsWuQ&quot;&gt;Holy Diver - Burning Witches&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;An all-female band&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;Rare: &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=G4YgA0mSF0Q&quot;&gt;Dio singing for the movie the Pick of Destiny&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Hear_&amp;#x27;n_Aid&quot;&gt;Hear &#x27;n Aid&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;This was a charity album for famine relief in Africa. It was organized by Ronnie James Dio and the members of Dio.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=G5H94GHb-10&quot;&gt;Stars&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;This would be the &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=mIqhl0rH0Wc&quot;&gt;We are the World&lt;&#x2F;a&gt; of Heavy Metal.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Judas_Priest&quot;&gt;Judas Priest&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=L397TWLwrUU&quot;&gt;Breaking the Law&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;And the video is good too!&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=_Wmz2IIB78o&quot;&gt;Here is a live version&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=O4ujW3oe_BQ&quot;&gt;And another one where only the fans sing, like a karaoke&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=nM__lPTWThU&quot;&gt;Painkiller&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=jGVuT0PPFdw&quot;&gt;And this live version&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=eGtwgYt_QnA&quot;&gt;The Hellion + Electric Eye&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Cover: &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=Hm25FhH9vqs&quot;&gt;Diamonds and Rust&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=hwu6epsjGhI&quot;&gt;Jawbreaker&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Cover: &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=Ek17qE4V9b8&quot;&gt;Jawbreaker - Burning Witches&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;An all-female band&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=l7wYGjLvgJw&quot;&gt;Eat Me Alive&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=YXJtz1TgmIM&quot;&gt;Hell Bent for Leather&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=2-vZrzbE9f4&quot;&gt;Freewheel Burning&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=v0jVb9TmfRM&quot;&gt;Ram it Down&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Cover: &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=2zxoGFjFJlk&quot;&gt;Johnny B. Goode&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Cover: &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=sFqAiiRtySc&quot;&gt;Electric Eye - Helloween&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Rammstein&quot;&gt;Rammstein&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;I like Rammstein a lot, there is something special in their songs. Maybe it&#x27;s because I don&#x27;t understand the lyrics. And I enjoy their new albums, something that usually doesn&#x27;t happen with other bands.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=x2rQzv8OWEY&quot;&gt;Engel&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=gNdnVVHfseA&quot;&gt;Mutter&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=rrmsJhf89MY&quot;&gt;Du Riechst So Gut&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=ErFOZidF6kI&quot;&gt;Weißes Fleisch&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=veZaHimbtaQ&quot;&gt;Bück Dich&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=6iaxDxHUWP8&quot;&gt;Mein Land&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;The video is also good&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=XemxFo2X_JY&quot;&gt;Feuer und Wasser&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=1f_5dnvh3d4&quot;&gt;Te Quiero Puta!&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=EOnSh3QlpbQ&quot;&gt;Ich Will&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=W3q8Od5qJio&quot;&gt;Du Hast&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;According to a german teacher I had, they play between &quot;du &lt;em&gt;hast&lt;&#x2F;em&gt; mich&quot; (you have me) and &quot;du &lt;em&gt;hasst&lt;&#x2F;em&gt; mich&quot; (you hate me).&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=srN1GsnBui8&quot;&gt;Seemann&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Cover: &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=aFpE4vKZUMQ&quot;&gt;Das Modell&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Korrekt!&lt;&#x2F;em&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;Cover: &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=v-YzdvmD2aQ&quot;&gt;Seemann - Apocalyptica&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Cover: &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=5mlARcokEJo&quot;&gt;Tu Hamster - El Reno Renardo&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;This is an spanish cover, changing the lyrics to make it funny!&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;Cover, Rare: &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=a5xSxGhlHfc&quot;&gt;Du Hast - Los Colorados&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;An ukrainian band called Los Colorados (The Gingers)&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Till_Lindemann&quot;&gt;Till Lindemann&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;Cover: &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=FtEYp7x-lI4&quot;&gt;Entre Dos Tierras&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Cover: &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=eTFd_QWncdA&quot;&gt;Helden&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;This is &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=44FId4BpMx0&quot;&gt;Heroes&lt;&#x2F;a&gt; by &lt;a href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;David_Bowie&quot;&gt;David Bowie&lt;&#x2F;a&gt;, in german, by Apocalyptica and Till.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Dream_Theater&quot;&gt;Dream Theater&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;I think this is one of the best bands. I don&#x27;t know much music, but I like and enjoy their sophistication.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=IqqRx77T4Vo&quot;&gt;Metropolis - Part I - The Miracle and the Sleeper&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;A masterpiece. Listen. Enjoy. Pay attention.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;Album: &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=H2UHWFU5uFY&amp;amp;list=OLAK5uy_mY0UJ7SdDG7n4DgXGJ_h-vG0QH9LpayaA&quot;&gt;Metropolis Pt 2: Scenes From a Memory&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;&quot;Close your eyes and begin to relax. Take a deep breath and let it out slowly. Concentrate on your breathing with each breath you become more relaxed. Imagine a brilliant white light above you, focus in on this light as it flows through your body. Allow yourself to drift off as you fall deeper and deeper into a more relaxed state of mind. Now, as I count back from ten to one, you will feel more peaceful and calm. Ten, nine, eight, seven, six. You will enter a safe place where nothing can harm you. Five, four, three, two. If at any time you need to come back, all you need to do is open your eyes. One.&lt;&#x2F;em&gt;&lt;&#x2F;li&gt;
&lt;li&gt;This is an album to listen from start to end, in order, all songs are awesome. Each song is connected to the following, and the whole album tells a story.&lt;&#x2F;li&gt;
&lt;li&gt;The album is a story about love, affair, and murder. I didn&#x27;t know that until recently as I didn&#x27;t understand much of the lyrics. I did know that there was someone called like me, Nicolás (actually Nicholas).&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;Live, Album: &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=axz4ktJnCpE&amp;amp;list=PLU1rrsc1fMcNOG8rf-iBXmczZy5tN5ECM&quot;&gt;Live Scenes from New York&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;Here is the Metropolis Pt 2 album played live&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=eYCYGpu0OxM&quot;&gt;The Dance of Eternity&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;There is a moment with drums that is very complex and awesome. &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=vswDu3IlUbg&quot;&gt;Here is Mike Portnoy showing how to count the tempo of that part&lt;&#x2F;a&gt;.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=cs8rkoouPSU&quot;&gt;Panic Attack&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=nJE9-TjYArs&quot;&gt;Stream of Consciousness&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=P9Lnan8t0v8&quot;&gt;Endless Sacrifice&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=_Q9Ss5zZU4k&quot;&gt;As I Am&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=W30yH0IdQlI&quot;&gt;The Killing Hand&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Liquid_Tension_Experiment&quot;&gt;Liquid Tension Experiment&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;One cannot mention Dream Theater without mentioning Liquid Tension Experiment.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=YLQnSULW2zI&quot;&gt;Acid Rain&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=EC7qodM5rdA&quot;&gt;Freedom of Speech&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Iron_Maiden&quot;&gt;Iron Maiden&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Up the Irons!&lt;&#x2F;em&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=WxnN05vOuSM&quot;&gt;The Number of the Beast&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.biblegateway.com&#x2F;passage&#x2F;?search=Revelation%2012%3A12&amp;amp;version=KJ21&quot;&gt;&lt;em&gt;Woe to you, o&#x27;er Earth and Sea, for the Devil sends the beast with wrath, because he knows the time is short&lt;&#x2F;em&gt;&lt;&#x2F;a&gt;. &lt;a href=&quot;https:&#x2F;&#x2F;www.biblegateway.com&#x2F;passage&#x2F;?search=Revelation%2013%3A18&amp;amp;version=KJ21&quot;&gt;&lt;em&gt;Let him who hath understanding reckon the number of the beast, for it is a human number, its number is six hundred and sixty-six&lt;&#x2F;em&gt;&lt;&#x2F;a&gt;.&lt;&#x2F;li&gt;
&lt;li&gt;Excellent song, and the introduction makes it more special. This was one of the first Heavy Metal songs I listened to.&lt;&#x2F;li&gt;
&lt;li&gt;I think this is an iconic Heavy Metal song. If one has to pick Heavy Metal songs to explain people what Heavy Metal is, this is one of those songs.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;Live: &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=X_hMZYDMps4&quot;&gt;Fear of the Dark&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;Beautiful song! And I prefer the live version over the &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=bePCRKGUwAY&quot;&gt;one from the album&lt;&#x2F;a&gt;.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=Xg9aQvjMS60&quot;&gt;Aces High&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;Another excellent song! Starting with the &lt;a href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;We_shall_fight_on_the_beaches&quot;&gt;&quot;We shall fight on the beaches&quot; Churchill&#x27;s speech&lt;&#x2F;a&gt;.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=L3OHi_vw4jY&quot;&gt;Iron Maiden&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=M6JpxDebokM&quot;&gt;The Evil That Men Do&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Album: &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=iQ5JAxPqum0&amp;amp;list=OLAK5uy_kJWCqs9IWd6VTIMEipf_f3rI0q289WDKY&quot;&gt;The Number of the Beast&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;Excellent album! Excellent &lt;a href=&quot;https:&#x2F;&#x2F;upload.wikimedia.org&#x2F;wikipedia&#x2F;en&#x2F;3&#x2F;32&#x2F;IronMaiden_NumberOfBeast.jpg&quot;&gt;cover&lt;&#x2F;a&gt;! &lt;em&gt;The best of the beast.&lt;&#x2F;em&gt;&lt;&#x2F;li&gt;
&lt;li&gt;It is said that some religious people burned the vinyls in public. But there was one group that didn&#x27;t burn them, instead they smashed them with hammers because they were afraid of inhaling the smoke, but it is unknown if their concern was based on health or religion.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;Cover: &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=FS6a0NWI0do&quot;&gt;Fear of the Dark + The Number of the Beast + Run to the Hills - Epic Symphonic Rock&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;I love symphonic covers&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;Cover: &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=VmrJmbpm0G4&quot;&gt;Hallowed be thy Name + Aces High + The Trooper - Epic Symphonic Rock&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;I love symphonic covers&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Nightwish&quot;&gt;Nighwish&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;I prefer the songs with &lt;a href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Tarja_Turunen&quot;&gt;Tarja Turunen&lt;&#x2F;a&gt; (&lt;a href=&quot;https:&#x2F;&#x2F;tarjaturunen.com&#x2F;&quot;&gt;her personal site&lt;&#x2F;a&gt;) as the singer. Fun fact, Tarja is married to an Argentine man, and &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=fuRqjrBUlKU&quot;&gt;she speaks spanish&lt;&#x2F;a&gt;.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=2ZV9Snsk3vU&quot;&gt;Wishmaster&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;Here is &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=J7N8MekeH20&quot;&gt;the live version&lt;&#x2F;a&gt; from the &lt;a href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;End_of_an_Era_(Nightwish_album)&quot;&gt;End of an Era&lt;&#x2F;a&gt; DVD.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;Live: &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=7aNW6LEmK5Y&quot;&gt;Wish I Had an Angel&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;I prefer the live version from the End of an Era DVD over &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=yGdWuOCWXcY&quot;&gt;the original version from the album Once&lt;&#x2F;a&gt;.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;Live: &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=tL25rbnvM4o&quot;&gt;Phantom of the Opera&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Cover: &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=oe2rLwFkuw0&quot;&gt;High Hopes&lt;&#x2F;a&gt; (Pink Floyd)&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Helloween&quot;&gt;Helloween&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;I went to one concert, and it was one of the best.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=FjV8SHjHvHk&quot;&gt;I Want Out&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;I want out, leave me be. I want out, to do things on my own. I want out, to live my life and to be free&lt;&#x2F;em&gt;.&lt;&#x2F;li&gt;
&lt;li&gt;Is Helloween a libertarian band?&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=rKReoD7Y_wk&quot;&gt;Eagle Fly Free&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;In the sky, a mighty eagle doesn&#x27;t care about what&#x27;s illegal&lt;&#x2F;em&gt;.&lt;&#x2F;li&gt;
&lt;li&gt;Is Helloween a libertarian band?&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=F6s7HYM0Urs&quot;&gt;Dr. Stein&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Cover: &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=sFqAiiRtySc&quot;&gt;Electric Eye&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Rush_(band)&quot;&gt;Rush&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;To be honest, I have conflicting feelings with Geddy Lee&#x27;s voice. But I like their music.&lt;&#x2F;li&gt;
&lt;li&gt;In the movie &lt;a href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;I_Love_You%2C_Man&quot;&gt;I Love You, Man&lt;&#x2F;a&gt;, Paul Rudd and Jason Segel play Tom Sawyer, and then attend a Rush concert.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=ZiRuj2_czzw&quot;&gt;Limelight&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=auLBLk4ibAk&quot;&gt;Tom Sawyer&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=iqyBq4vnuvc&quot;&gt;Leave That Thing Alone&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;Awesome instrumental. Pay attention to the bass!&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Metallica&quot;&gt;Metallica&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=FLTchCiC0T0&quot;&gt;Seek &amp;amp; Destroy&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=9HZ_tx8aWuA&quot;&gt;Fade to Black&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=ozXZnwYTMbs&quot;&gt;Nothing Else Matters&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Live Album: &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=1Ae0-5oOvG8&amp;amp;list=OLAK5uy_lVmYRHBrJ576VByPiRFn1nn1Tzo3Gs334&quot;&gt;S&amp;amp;M&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Cover: &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=boanuwUMNNQ&quot;&gt;Whiskey in the Jar&lt;&#x2F;a&gt; (Irish traditional song, also played by &lt;a href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;The_Dubliners&quot;&gt;The Dubliners&lt;&#x2F;a&gt;)&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Jason_Becker&quot;&gt;Jason Becker&lt;&#x2F;a&gt; (&lt;a href=&quot;https:&#x2F;&#x2F;jasonbecker.com&#x2F;&quot;&gt;his personal site&lt;&#x2F;a&gt;)
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=demdlhrZBtA&quot;&gt;Altitudes&lt;&#x2F;a&gt;.
&lt;ul&gt;
&lt;li&gt;I have shed a tear listening to it, with eyes closed and headsets.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Marty_Friedman&quot;&gt;Marty Friedman&lt;&#x2F;a&gt; (&lt;a href=&quot;https:&#x2F;&#x2F;martyfriedman.com&#x2F;&quot;&gt;his personal site&lt;&#x2F;a&gt;)
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=JU699mIBXmI&quot;&gt;Forbidden City&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Cacophony_(band)&quot;&gt;Cacophony&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;The band of Jason Becker &amp;amp; Marty Friedman&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=NAZcx3pU5GE&quot;&gt;Speed Metal Symphony&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Saxon_(band)&quot;&gt;Saxon&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=fnzQISf8us4&quot;&gt;Princess of the Night&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Christopher_Lee&quot;&gt;Christopher Lee&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;Sir Christopher Frank Carandini Lee. He played as Saruman in LOTR, fought in WWII, and worked with the british secret service. &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=qwOGyv7U3E0&quot;&gt;He explained to Peter Jackson (LOTR&#x27;s director) what noise happens when somebody is stabbed in the back&lt;&#x2F;a&gt;.&lt;&#x2F;li&gt;
&lt;li&gt;He worked with Rhapsody of Fire and Manowar. And he recorded two Heavy Metal albums as Charlemagne, which I find interesting.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=kfZtNVEqsBs&quot;&gt;Jingle Hell&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;Heavy Metal version of &lt;a href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Jingle_Bells&quot;&gt;Jingle Bell&lt;&#x2F;a&gt;. Is this heresy? I love it.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=ro1nk8ZKi0I&amp;amp;list=OLAK5uy_nC0iYfFZUZnWhECaOiGe-ivn3gJwYZSbM&quot;&gt;Charlemagne: By the Sword and the Cross&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=FOq7GPM74NM&amp;amp;list=OLAK5uy_ntyC2lrns6GSbZvEgsFX7Yycb2PIDeDfI&quot;&gt;Charlemagne: The Omens of Death&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Symphony_X&quot;&gt;Symphony X&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=i4p_PO8_OnY&quot;&gt;Smoke and Mirros&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Coroner_(band)&quot;&gt;Coroner&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;No so famous band. I found them on the &lt;a href=&quot;https:&#x2F;&#x2F;rateyourmusic.com&#x2F;&quot;&gt;Rate Your Music&lt;&#x2F;a&gt; website.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;W.A.S.P._(band)&quot;&gt;W.A.S.P.&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=CASxmt8CC7g&quot;&gt;Harder Faster&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;This song is a response to the &lt;a href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Parents_Music_Resource_Center&quot;&gt;PMRC (Parents Music Resource Center&lt;&#x2F;a&gt;. The PMRC was an U.S. group of conservative people, founded by the wives of men in the U.S. government. They wanted to control the access of children to music that they thought was inappropriate.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=Wh-btSHnblQ&quot;&gt;Animal (Fuck Like a Beast)&lt;&#x2F;a&gt; (&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=7COTI8k-rgo&quot;&gt;alternative video&lt;&#x2F;a&gt;)
&lt;ul&gt;
&lt;li&gt;This was one of the PMRC&#x27;s &quot;filthy 15&quot;.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Twisted_Sister&quot;&gt;Twisted Sisters&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=4xmckWVPRaI&quot;&gt;We&#x27;re Not Gonna Take It&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;This was one of the PMRC&#x27;s &quot;filthy 15&quot;.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;Rare: &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=35PocLHx534&quot;&gt;Huevos con Aceite&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;This is how &quot;we&#x27;re not gonna take it&quot; is misheard in spanish. We&#x27;re not (huevos) gonna (con a-) take it (ceite) anymore (y limón).&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Kanonenfieber&quot;&gt;Kanonenfieber&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;argentinian-heavy-metal&quot;&gt;Argentinian Heavy Metal&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Ricardo_Iorio&quot;&gt;Ricardo Iorio&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;He would be the father of argentine Heavy Metal. He founded V8, then Herética, then Almafuerte, and then he played as a solo artist.&lt;&#x2F;li&gt;
&lt;li&gt;His style, in particular with Almafuerte, was kind of folk heavy metal. Using ideas from argentinie folk music and tango.&lt;&#x2F;li&gt;
&lt;li&gt;His lyrics are very good (since Hermética).&lt;&#x2F;li&gt;
&lt;li&gt;Cover: &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=InX7BkghMTk&quot;&gt;Mariposas de Madera&lt;&#x2F;a&gt; (Miguel Abuelo)&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Herm%C3%A9tica&quot;&gt;Hermética&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;This is the best band from Argentina, ever. Only 3 albums and the 3 of them are good.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=Blk8ZqxTzbo&quot;&gt;Memoria de Siglos&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Many wear the Phrygian cap only because they are bald&lt;&#x2F;em&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=9-q5Nz1ADjk&quot;&gt;Gil Trabajador&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=TKny97TvxRg&quot;&gt;Desde el Oeste&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=QDhWPz5aYAE&quot;&gt;En las Calles de Liniers&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=G__R8-FyWvY&quot;&gt;Soy de la Esquina&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=hEwKj-QVbWA&quot;&gt;Vida Impersonal&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=WlI7QuIq2tY&quot;&gt;Atravesando Todo Límite&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;I was told this song was about the disappearance of Iorio&#x27;s brother-in-law or father-in-law.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=SNuHsu67GmI&quot;&gt;Ayer Deseo, Hoy Realidad&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=rPV27S_kuvc&quot;&gt;Moraleja&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Cover: &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=mRo0M_fq3Ho&quot;&gt;Cambalache&lt;&#x2F;a&gt; (Enrique Santos Discépolo)&lt;&#x2F;li&gt;
&lt;li&gt;Cover: &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=m6WC3n-pxU8&quot;&gt;Evitando el Ablande - Aonikenk&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Album: &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=z9llA2nCGow&amp;amp;list=OLAK5uy_l7Ya56pbMfKvcwWWMI5IciPiaBKb5VfQw&quot;&gt;Hermética&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Album: &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=POhDm4wcQFo&amp;amp;list=OLAK5uy_krjPZvCo3YEuRIXdvEY1Q6UwayZko0by8&quot;&gt;Ácido Argentino&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Album: &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=G__R8-FyWvY&amp;amp;list=OLAK5uy_n9UZzbHnSW0od6be-_M0buYuMctfLr_mo&quot;&gt;Víctimas del Vaciamiento&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Almafuerte_(band)&quot;&gt;Almafuerte&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;Live: &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=yL69XXgKuMI&quot;&gt;Popurrí&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;This is a medley (aka &lt;strong&gt;popurrí&lt;&#x2F;strong&gt;) of songs that Iorio composed when he was younger (as he said just before starting this medley).&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=_0DQZLsUc8c&quot;&gt;Se Vos&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Be yourself and nothing more, even when others make it hard.&lt;&#x2F;em&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;V8_(band)&quot;&gt;V8&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;I think V8 is important because of history, but I strongly prefer Almafuerte, or even better, Hermémtica.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=hKv4dGKBPJs&quot;&gt;Brigadas Metálicas&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=jcvu8FzFh3M&quot;&gt;Destrucción&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=84XIv2pR1SU&quot;&gt;Muy Cansado Estoy&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.metal-archives.com&#x2F;bands&#x2F;Aonikenk&#x2F;8481&quot;&gt;Aonikenk&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;The &lt;a href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Tehuelche_people&quot;&gt;Aonikenk&lt;&#x2F;a&gt; are an indigenous people from the eastern patagonia. They are also known as Tehuelche.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=P4OvVsRNXRY&quot;&gt;A mi Argentina&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Cover: &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=m6WC3n-pxU8&quot;&gt;Evitando el Ablande&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Rata_Blanca&quot;&gt;Rata Blanca&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;The drummer, Gustavo Rowek, played with V8 before Rata Blanca.&lt;&#x2F;li&gt;
&lt;li&gt;Also the guitarrist, Walter Giardino, was in V8 for a few months. In the song &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=iO8GvjEZbN0&quot;&gt;Buscando Razón&lt;&#x2F;a&gt; by Hermética, the lyrics is about V8 rejecting Walter because he wrote &quot;love ballads&quot;.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=UmPTP5kvx4g&quot;&gt;El sueño de la Gitana&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Cover: &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=hxrLTbm_dQg&quot;&gt;Traveling Band&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</description>
      </item>
      <item>
          <title>Safer Pointers</title>
          <pubDate>Tue, 26 Nov 2024 00:00:00 +0000</pubDate>
          <author>Nicolás Dato</author>
          <link>https://ndato.com/articles/safer-pointers/</link>
          <guid>https://ndato.com/articles/safer-pointers/</guid>
          <description xml:base="https://ndato.com/articles/safer-pointers/">&lt;h2 id=&quot;general-idea&quot;&gt;General Idea&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;em&gt;With great power comes great resposability&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Pointers are an important feature of C, but at the same time they are prone to error.
To reduce errors, and make them safer to use, I propose the following 4 tips:&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;Encapsulating the &lt;em&gt;malloc()&lt;&#x2F;em&gt; and &lt;em&gt;free()&lt;&#x2F;em&gt; functions.&lt;&#x2F;li&gt;
&lt;li&gt;Using &lt;em&gt;calloc()&lt;&#x2F;em&gt; in the new alloc function, and making the structure &quot;fail-safe&quot; when everything is zero.&lt;&#x2F;li&gt;
&lt;li&gt;Making the new &lt;em&gt;free&lt;&#x2F;em&gt; function set the freed pointer to &lt;em&gt;NULL&lt;&#x2F;em&gt;.&lt;&#x2F;li&gt;
&lt;li&gt;Every time a pointer is passed to another function, deciding who &lt;em&gt;owns&lt;&#x2F;em&gt; the pointer.&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;h3 id=&quot;example&quot;&gt;Example&lt;&#x2F;h3&gt;
&lt;pre data-lang=&quot;C&quot; style=&quot;background-color:#282828;color:#fdf4c1aa;&quot; class=&quot;language-C &quot;&gt;&lt;code class=&quot;language-C&quot; data-lang=&quot;C&quot;&gt;&lt;span style=&quot;color:#fa5c4b;&quot;&gt;#include &lt;&#x2F;span&gt;&lt;span style=&quot;color:#b8bb26;&quot;&gt;&amp;lt;stdio.h&amp;gt;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fa5c4b;&quot;&gt;#include &lt;&#x2F;span&gt;&lt;span style=&quot;color:#b8bb26;&quot;&gt;&amp;lt;stdlib.h&amp;gt;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fa5c4b;&quot;&gt;#include &lt;&#x2F;span&gt;&lt;span style=&quot;color:#b8bb26;&quot;&gt;&amp;lt;string.h&amp;gt;
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fa5c4b;&quot;&gt;struct &lt;&#x2F;span&gt;&lt;span style=&quot;color:#8ec07c;&quot;&gt;s &lt;&#x2F;span&gt;&lt;span&gt;{
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fa5c4b;&quot;&gt;int&lt;&#x2F;span&gt;&lt;span&gt; i;
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fa5c4b;&quot;&gt;char&lt;&#x2F;span&gt;&lt;span&gt; c;
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fa5c4b;&quot;&gt;char &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fe8019;&quot;&gt;*&lt;&#x2F;span&gt;&lt;span&gt;s;
&lt;&#x2F;span&gt;&lt;span&gt;};
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fa5c4b;&quot;&gt;struct&lt;&#x2F;span&gt;&lt;span&gt; s &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fe8019;&quot;&gt;*&lt;&#x2F;span&gt;&lt;span style=&quot;color:#8ec07c;&quot;&gt;s_alloc&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fa5c4b;&quot;&gt;const char &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fe8019;&quot;&gt;*&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fdf4c1;&quot;&gt;msg&lt;&#x2F;span&gt;&lt;span&gt;)
&lt;&#x2F;span&gt;&lt;span&gt;{
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fa5c4b;&quot;&gt;struct&lt;&#x2F;span&gt;&lt;span&gt; s &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fe8019;&quot;&gt;*&lt;&#x2F;span&gt;&lt;span&gt;s;
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;    s &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fe8019;&quot;&gt;= &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fabd2f;&quot;&gt;calloc&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fdf4c1;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color:#d3869b;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fdf4c1;&quot;&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fe8019;&quot;&gt;sizeof&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fdf4c1;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fe8019;&quot;&gt;*&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fdf4c1;&quot;&gt;s))&lt;&#x2F;span&gt;&lt;span&gt;;
&lt;&#x2F;span&gt;&lt;span&gt;    s-&amp;gt;s &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fe8019;&quot;&gt;= &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fdf4c1;&quot;&gt;strdup(msg)&lt;&#x2F;span&gt;&lt;span&gt;;
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fa5c4b;&quot;&gt;return&lt;&#x2F;span&gt;&lt;span&gt; s;
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fa5c4b;&quot;&gt;void &lt;&#x2F;span&gt;&lt;span style=&quot;color:#8ec07c;&quot;&gt;s_free&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fa5c4b;&quot;&gt;struct&lt;&#x2F;span&gt;&lt;span&gt; s &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fe8019;&quot;&gt;**&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fdf4c1;&quot;&gt;s&lt;&#x2F;span&gt;&lt;span&gt;)
&lt;&#x2F;span&gt;&lt;span&gt;{
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fa5c4b;&quot;&gt;if &lt;&#x2F;span&gt;&lt;span&gt;(s &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fe8019;&quot;&gt;!= &lt;&#x2F;span&gt;&lt;span style=&quot;color:#d3869b;&quot;&gt;NULL &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fe8019;&quot;&gt;&amp;amp;&amp;amp; *&lt;&#x2F;span&gt;&lt;span&gt;s &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fe8019;&quot;&gt;!= &lt;&#x2F;span&gt;&lt;span style=&quot;color:#d3869b;&quot;&gt;NULL&lt;&#x2F;span&gt;&lt;span&gt;) {
&lt;&#x2F;span&gt;&lt;span&gt;        &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fabd2f;&quot;&gt;free&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fdf4c1;&quot;&gt;((&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fe8019;&quot;&gt;*&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fdf4c1;&quot;&gt;s)-&amp;gt;s)&lt;&#x2F;span&gt;&lt;span&gt;;
&lt;&#x2F;span&gt;&lt;span&gt;        &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fabd2f;&quot;&gt;free&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fdf4c1;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fe8019;&quot;&gt;*&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fdf4c1;&quot;&gt;s)&lt;&#x2F;span&gt;&lt;span&gt;;
&lt;&#x2F;span&gt;&lt;span&gt;        &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fe8019;&quot;&gt;*&lt;&#x2F;span&gt;&lt;span&gt;s &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fe8019;&quot;&gt;= &lt;&#x2F;span&gt;&lt;span style=&quot;color:#d3869b;&quot;&gt;NULL&lt;&#x2F;span&gt;&lt;span&gt;;
&lt;&#x2F;span&gt;&lt;span&gt;    }
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fa5c4b;&quot;&gt;void &lt;&#x2F;span&gt;&lt;span style=&quot;color:#8ec07c;&quot;&gt;print_s&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fa5c4b;&quot;&gt;const struct&lt;&#x2F;span&gt;&lt;span&gt; s &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fe8019;&quot;&gt;*&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fdf4c1;&quot;&gt;s&lt;&#x2F;span&gt;&lt;span&gt;)
&lt;&#x2F;span&gt;&lt;span&gt;{
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fa5c4b;&quot;&gt;if &lt;&#x2F;span&gt;&lt;span&gt;(s &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fe8019;&quot;&gt;!= &lt;&#x2F;span&gt;&lt;span style=&quot;color:#d3869b;&quot;&gt;NULL&lt;&#x2F;span&gt;&lt;span&gt;) {
&lt;&#x2F;span&gt;&lt;span&gt;        &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fabd2f;&quot;&gt;printf&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fdf4c1;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color:#b8bb26;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fdf4c1;&quot;&gt;%s&lt;&#x2F;span&gt;&lt;span style=&quot;color:#b8bb26;&quot;&gt;\n&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fdf4c1;&quot;&gt;, s-&amp;gt;s)&lt;&#x2F;span&gt;&lt;span&gt;;
&lt;&#x2F;span&gt;&lt;span&gt;    }
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fa5c4b;&quot;&gt;int &lt;&#x2F;span&gt;&lt;span style=&quot;color:#8ec07c;&quot;&gt;main&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fa5c4b;&quot;&gt;int &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fdf4c1;&quot;&gt;argc&lt;&#x2F;span&gt;&lt;span&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fa5c4b;&quot;&gt;char &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fe8019;&quot;&gt;**&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fdf4c1;&quot;&gt;argv&lt;&#x2F;span&gt;&lt;span&gt;)
&lt;&#x2F;span&gt;&lt;span&gt;{
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fa5c4b;&quot;&gt;struct&lt;&#x2F;span&gt;&lt;span&gt; s &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fe8019;&quot;&gt;*&lt;&#x2F;span&gt;&lt;span&gt;s;
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;    s &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fe8019;&quot;&gt;= &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fdf4c1;&quot;&gt;s_alloc(&lt;&#x2F;span&gt;&lt;span style=&quot;color:#b8bb26;&quot;&gt;&amp;quot;Hello, world!&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fdf4c1;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span&gt;;
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fdf4c1;&quot;&gt;print_s(s)&lt;&#x2F;span&gt;&lt;span&gt;;
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fdf4c1;&quot;&gt;s_free(&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fe8019;&quot;&gt;&amp;amp;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fdf4c1;&quot;&gt;s)&lt;&#x2F;span&gt;&lt;span&gt;;
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fa5c4b;&quot;&gt;return &lt;&#x2F;span&gt;&lt;span style=&quot;color:#d3869b;&quot;&gt;0&lt;&#x2F;span&gt;&lt;span&gt;;
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;encapsulating-malloc-and-free-and-using-calloc&quot;&gt;Encapsulating malloc and free, and using calloc&lt;&#x2F;h2&gt;
&lt;p&gt;When allocating data structures, or new types, always create a new malloc and free functions for that structure.&lt;&#x2F;p&gt;
&lt;p&gt;This way, if the structure changes you only need to update one malloc and one free function. Also, this will hide how the structure is supposed to be allocated and freed.&lt;&#x2F;p&gt;
&lt;p&gt;And using &lt;em&gt;calloc&lt;&#x2F;em&gt; (instead of malloc) will automatically set all memory to 0. This can be beneficial if the structure is safe when everything is 0, like pointers.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;setting-the-pointer-to-null-in-the-new-free-function&quot;&gt;Setting the pointer to NULL in the new free function&lt;&#x2F;h2&gt;
&lt;p&gt;The new &lt;em&gt;free&lt;&#x2F;em&gt; function should invalidate the pointer that was freed. Usually this is setting it to &lt;em&gt;NULL&lt;&#x2F;em&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;This way, it is easy check if the pointer is valid or not (or was freed or not). Also, it prevents the access to a freed section of memory, which sometimes doesn&#x27;t rise any error but produces unexpected behaviour or security issues.&lt;&#x2F;p&gt;
&lt;p&gt;For instance, FFmpeg use this method with the &lt;a href=&quot;https:&#x2F;&#x2F;git.ffmpeg.org&#x2F;gitweb&#x2F;ffmpeg.git&#x2F;blob&#x2F;e3b355c0be85ec47ee8b3d7790ad4c4fa26827c0:&#x2F;libavutil&#x2F;mem.h#l378&quot;&gt;av_freep()&lt;&#x2F;a&gt; function.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;deciding-who-owns-the-pointer&quot;&gt;Deciding who owns the pointer&lt;&#x2F;h2&gt;
&lt;p&gt;Owning the pointer means who has the resposibility of freeing it, maybe in that moment or later. Each function or program module working with pointers must know who owns them. I try to keep the owner to whoever allocs it. So if a module creates the pointer, that module owns it. Then if that pointer is passed to another module, it should still be owned by the original module if possible.&lt;&#x2F;p&gt;
&lt;p&gt;If a function doesn&#x27;t take the ownership, it should receive a &lt;em&gt;const&lt;&#x2F;em&gt; pointer when possible.&lt;&#x2F;p&gt;
&lt;p&gt;If a function takes the ownership of a pointer, it should receive a pointer-to-pointer and set it to &lt;em&gt;NULL&lt;&#x2F;em&gt;. The proposed free function works that way, it must take ownership of the function (to free it) so it sets the pointer to NULL.&lt;&#x2F;p&gt;
</description>
      </item>
    </channel>
</rss>
