pages tagged englishdogsleg's pimentolahttps://www.pimentola.ru/tags/english/dogsleg's pimentolaikiwiki2023-11-16T17:24:43Z0039: Tor hidden servicehttps://www.pimentola.ru/posts/0039-Tor_hidden_service/2023-11-16T17:24:43Z2020-08-18T07:01:19Z
<p>Setting up a Tor hidden service is pretty straightforward. In a simple case one needs to follow <a href="https://community.torproject.org/onion-services/setup/">Tor Project's instructions</a>. Also, it is a good idea to take a look into <a href="https://riseup.net/en/security/network-security/tor/onionservices-best-practices">Riseup's Best Practices</a>.</p>
<p>So, now my website is also available as a Tor hidden service at the following address:</p>
<p><code>zdbj776sxy6szcgdaymenktgc6tada4nhsaac3dqctqsu6yiharwlfqd.onion</code></p>
<p>I've added the following settings to my <kbd>/etc/tor/torrc</kbd>:</p>
<pre><code>HiddenServiceDir /var/lib/tor/hidden_service/
HiddenServicePort 80 127.0.0.1:80
HiddenServicePort 443 127.0.0.1:443
</code></pre>
<p>Also, I had to switch off Apache's mod_status, to prevent statistics leakage through Tor hidden service. To switch it off one needs to run <kbd>a2dismod status</kbd> (it is enabled by default in Debian). Anyway I don't need it.</p>
0032: UDD to the rescuehttps://www.pimentola.ru/posts/0032-UDD_to_the_rescue/2023-03-09T10:22:38Z2020-02-09T09:39:34Z
<p>In #debian:matrix.org one person just performed stretch->buster
upgrade and asked about a way to get a list of newly added packages,
that is a list of packages in buster but not in stretch. Another
person proposed to run a VM with stretch to get a list of packages in
stretch, then run a VM with buster to get a list of packages in
buster, then do diff between them. This advise is pretty ingenious,
but I doubt that it's good way to do such a simple task. Well, there
is <a href="https://udd.debian.org/">UDD</a>, so UDD to the rescue!</p>
<p>There's a <a href="https://udd-mirror.debian.net/">public UDD mirror</a> which
allows anyone to query UDD using PostgreSQL command-line or GUI
clients. So, the mentioned task can be easily solved as follows.</p>
<ol>
<li><p>Install your PostgreSQL client of choice, say:</p>
<p> sudo apt install postgresql-client</p></li>
<li><p>Connect to the public mirror with the following command:</p>
<p> psql -U udd-mirror -h udd-mirror.debian.net -p 5432 udd</p></li>
<li><p>Run the following PostgreSQL query:</p></li>
</ol>
<div class="highlight-sql"><pre class="hl"><span class="hl kwa">SELECT</span> package <span class="hl kwa">FROM</span> packages <span class="hl kwa">WHERE release</span><span class="hl opt">=</span><span class="hl str">'buster'</span> <span class="hl kwa">AND</span> architecture<span class="hl opt">=</span><span class="hl str">'amd64'</span>
<span class="hl kwa">EXCEPT</span>
<span class="hl kwa">SELECT</span> package <span class="hl kwa">FROM</span> packages <span class="hl kwa">WHERE release</span><span class="hl opt">=</span><span class="hl str">'stretch'</span> <span class="hl kwa">AND</span> architecture<span class="hl opt">=</span><span class="hl str">'amd64'</span> <span class="hl kwa">ORDER BY</span> package<span class="hl opt">;</span>
</pre></div>
<p>This SQL query gives a list of packages in buster but not in stretch
for amd64 architecture sorted by package name.</p>
<p>That's it! Pretty easy, huh? UDD is a wonderful source of data about
Debian and I really like it.</p>
<p>More information about UDD:</p>
<p><a href="https://wiki.debian.org/UltimateDebianDatabase">Debian wikipage on UDD</a></p>
<p><a href="https://udd.debian.org/schema/udd.html">Index of UDD database</a></p>
0021: Secure your Salsa tokenhttps://www.pimentola.ru/posts/0021-Secure_your_Salsa_token/2023-03-09T10:22:38Z2019-04-23T16:49:04Z
<p><a href="https://salsa.debian.org/">Salsa</a> is Debian's collaborative
development server based on the GitLab software. Debian migrated from
previously used Alioth (FusionForge based) to Salsa in Jan 2018. I
consider this migration as an improvement. Of course, there are still
some developers who don't like Salsa. One of the reasons is too much
clicking on buttons in its web-interface, where command line is more
convenient. For those who don't like clicking buttons in a
web-interface there is
<a href="https://manpages.debian.org/stretch-backports/devscripts/salsa.1.en.html"><kbd>salsa</kbd></a>,
tool to manipulate salsa repositories and group members.</p>
<p>This tool, <kbd>salsa</kbd>, is a part of the prolific
<a href="https://tracker.debian.org/pkg/devscripts"><kbd>devscripts</kbd>
package</a>. To use it one
need a Salsa token, so one has to deal with Salsa's web-interface one
more time. One needs to open Setting, and then Access Tokens. After
that just pick a name for your brand-new Personal Access Token, choose
its expire date, and choose its scope (for the most convenience one
needs api scope, which grants complete read/write access to the API,
including all groups and projects). Then just add
<kbd>SALSA_TOKEN=your_token</kbd> to your <kbd>.devscripts</kbd>.</p>
<p>Wait. Is it secure to store such a powerful thing in a form of a plain
text? Hmmm, well… If there's a way to keep it in a more secure place
but without lots of inconvenience, then let's do it.</p>
<p>Save your Personal Access Token to a local file, say
<kbd>.salsa_key</kbd> and encrypt it with <kbd>gpg</kbd>:</p>
<p><code>$ gpg --recipient <email_associated_with_your\gpg_key> --encrypt .salsa_key</code></p>
<p>Now you have plain text <kbd>.salsa_key</kbd> file and encrypted
<kbd>.salsa_key.gpg</kbd> file. Then it is required to fix your
<kbd>.devscripts</kbd> file. Remove your token from the line starting
with <kbd>SALSA_TOKEN=</kbd> and change it to</p>
<p><code>SALSA_TOKEN=$(gpg --quiet --decrypt ~/.salsa_token.gpg)</code></p>
<p>After that just delete plain text <kbd>.salsa_key</kbd> file from
your computer. Now your Personal Access Token is secured with your GPG
key. Just try</p>
<p><code>$ salsa whoami</code></p>
<p>command, and good luck with your Debian contributions!</p>
0011: Registered a mastodon.art accounthttps://www.pimentola.ru/posts/0011-mastodon.art_account/2023-03-09T10:22:39Z2018-08-18T13:02:21Z
<p>Just registered <a href="https://mastodon.art/@skyofmywindow">another Mastodon
account</a>, this time on
<a href="https://mastodon.art/">mastodon.art</a>. I plan to publish some of my
photos there. These photos are part of my on-going amateur art
project. It is about sky and everything on it. So, it is about blue,
red, yellow and some other colors, Sun, Moon, stars, clouds, lighting,
rainbow, flying birds, flying planes and so on.</p>
<p>All of my photos are licensed under CC-BY-SA 4.0.</p>
<p>Originally some time ago I was thinking about creating a web-site for
these photos, and even invented a name for it, "Sky of My Window". But
since as I planned it it would require investing some non-trivial
amount of time (I was not able to find any free webapp suitable for my
purposes), I decided to use Mastodon for now and maybe create a
website later. So, everyone is welcome at
<a href="https://mastodon.art/@skyofmywindow">@skyofmywindow@mastodon.art</a>!</p>
0004: Debian migration to Salsa, IIhttps://www.pimentola.ru/posts/0004-migrating_to_salsa_2/2023-03-09T10:22:39Z2018-03-22T11:22:34Z
<p>As I <a href="https://www.pimentola.ru/posts/0002-migrating_to_salsa/">wrote earlier</a> Debian migrates from
<a href="https://alioth.debian.org">Alioth</a> to
<a href="https://salsa.debian.org">Salsa</a>. In the previous post I've
explained how to batch import Alioth repositories for which one has
local clones with the help of a small and ugly Perl script. But this
is just a part of what should be done. This time I modified the scipt
to change Vcs-{Browser,Git} URLs in the <kbd>debian/control</kbd>
files from Alioth to Salsa, commit changes, change git remote, and
push. Don't expect the code to be beautiful or efficient, it just
works for me.</p>
<p>So, to use the script with the other team's repositories (other than
Debian Emacs Addons Packaging Team) one needs to slightly change the
<kbd>$salsa</kbd>, <kbd>$alioth</kbd>, <kbd>$salsa_origin</kbd>
variables. Also, it is possible to black list directories with the
help of <kbd>grep</kbd> in <kbd>@dirs</kbd> declaration. If you want
to silence git, then append <kbd>>/dev/null 2>/dev/null</kbd> to the
corresponding git commands.</p>
<p>Yes, I understand that I should add this URLs updating functionality
to the original script in the first place, but at the time I wrote it
I was not ready to spend more time on it. And since the migration is
rather a one-shot thing, I don't want to polish it now. Therefore, be
careful while using it for your stuff. There are no guarantees that it
will work for you or will not break anything.</p>
<div class="highlight-perl"><pre class="hl"><span class="hl slc">#!/usr/bin/perl</span>
<span class="hl kwa">use</span> warnings<span class="hl opt">;</span>
<span class="hl kwa">use</span> strict<span class="hl opt">;</span>
<span class="hl kwa">use</span> File<span class="hl opt">::</span>Slurp<span class="hl opt">;</span>
<span class="hl kwc">my</span> <span class="hl kwb">$root</span> <span class="hl opt">=</span> <span class="hl kwb">$ARGV</span><span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">];</span>
<span class="hl kwc">my</span> <span class="hl kwb">$salsa</span> <span class="hl opt">=</span> <span class="hl str">"https://salsa.debian.org/emacsen-team/"</span><span class="hl opt">;</span>
<span class="hl kwc">my</span> <span class="hl kwb">$alioth</span> <span class="hl opt">=</span> <span class="hl kwd">qr/https:\/</span>\<span class="hl kwd">/anonscm\.debian\.org\/c</span>?git\<span class="hl kwd">/pkg-emacsen\/p</span>kg\<span class="hl kwd">//</span><span class="hl opt">;</span>
<span class="hl kwc">my</span> <span class="hl kwb">$salsa_origin</span> <span class="hl opt">=</span> <span class="hl str">'git</span><span class="hl ipl">@salsa</span><span class="hl str">.debian.org:emacsen-team/'</span><span class="hl opt">;</span>
<span class="hl kwc">my</span> <span class="hl kwb">$commit_message</span> <span class="hl opt">=</span> <span class="hl str">"Change Vcs-{Browser,Git} URL to salsa.debian.org"</span><span class="hl opt">;</span>
<span class="hl kwc">opendir my</span> <span class="hl kwb">$dh</span><span class="hl opt">,</span> <span class="hl kwb">$root</span> <span class="hl kwc">or die</span> <span class="hl str">"</span><span class="hl ipl">$0</span><span class="hl str">: opendir: $!"</span><span class="hl opt">;</span>
<span class="hl kwc">my</span> <span class="hl kwb">@dirs</span> <span class="hl opt">=</span> <span class="hl kwc">grep</span> <span class="hl opt">{ -</span>d <span class="hl str">"</span><span class="hl ipl">$root</span><span class="hl str">/</span><span class="hl ipl">$_</span><span class="hl str">"</span> <span class="hl opt">&& ! /^</span>\<span class="hl opt">.{</span><span class="hl num">1</span><span class="hl opt">,</span><span class="hl num">2</span><span class="hl opt">}$|^</span>dh<span class="hl opt">-.*(</span>elpa<span class="hl opt">)+/ }</span> <span class="hl kwc">readdir</span><span class="hl opt">(</span><span class="hl kwb">$dh</span><span class="hl opt">);</span>
<span class="hl kwc">closedir</span> <span class="hl kwb">$dh</span><span class="hl opt">;</span>
<span class="hl kwa">foreach</span> <span class="hl kwc">my</span> <span class="hl kwb">$dir</span> <span class="hl opt">(</span><span class="hl kwb">@dirs</span><span class="hl opt">) {</span>
<span class="hl kwc">chdir</span> <span class="hl kwb">$root</span> <span class="hl opt">.</span> <span class="hl kwb">$dir</span><span class="hl opt">;</span>
<span class="hl kwa">next unless</span> <span class="hl opt">(-</span>e <span class="hl kwb">$root</span> <span class="hl opt">.</span> <span class="hl kwb">$dir</span> <span class="hl opt">.</span> <span class="hl str">"/debian/control"</span><span class="hl opt">);</span>
<span class="hl kwc">system</span> <span class="hl str">"git pull origin master"</span><span class="hl opt">;</span>
<span class="hl kwc">my</span> <span class="hl kwb">@lines</span> <span class="hl opt">=</span> read_file<span class="hl opt">(</span> <span class="hl kwb">$root</span> <span class="hl opt">.</span> <span class="hl kwb">$dir</span> <span class="hl opt">.</span> <span class="hl str">"/debian/control"</span> <span class="hl opt">);</span>
<span class="hl kwc">my</span> <span class="hl kwb">$git_new_origin</span><span class="hl opt">;</span>
<span class="hl kwc">print</span> <span class="hl str">"Processing</span> <span class="hl ipl">$dir</span><span class="hl str">...</span><span class="hl esc">\n</span><span class="hl str">"</span><span class="hl opt">;</span>
<span class="hl kwa">for</span> <span class="hl opt">(</span><span class="hl kwc">my</span> <span class="hl kwb">$l</span> <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> <span class="hl kwb">$l</span> <span class="hl opt"><=</span> <span class="hl kwb">$#lines</span><span class="hl opt">;</span> <span class="hl kwb">$l</span><span class="hl opt">++) {</span>
<span class="hl kwa">unless</span> <span class="hl opt">(</span><span class="hl kwb">$lines</span><span class="hl opt">[</span><span class="hl kwb">$l</span><span class="hl opt">] =~</span> <span class="hl kwd">/$salsa/g</span><span class="hl opt">) {</span>
<span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwb">$lines</span><span class="hl opt">[</span><span class="hl kwb">$l</span><span class="hl opt">] =~</span> <span class="hl kwd">m/Vcs-Browser: $alioth/</span><span class="hl opt">) {</span>
<span class="hl kwb">$lines</span><span class="hl opt">[</span><span class="hl kwb">$l</span><span class="hl opt">] =~</span> <span class="hl kwd">s/(Vcs-Browser: ).*\/(.+)\.git\/</span><span class="hl opt">$</span><span class="hl kwd">/$1$salsa$2/g</span><span class="hl opt">;</span>
<span class="hl opt">}</span> <span class="hl kwa">elsif</span> <span class="hl opt">(</span><span class="hl kwb">$lines</span><span class="hl opt">[</span><span class="hl kwb">$l</span><span class="hl opt">] =~</span> <span class="hl kwd">m/Vcs-Git: $alioth/</span><span class="hl opt">) {</span>
<span class="hl kwb">$lines</span><span class="hl opt">[</span><span class="hl kwb">$l</span><span class="hl opt">] =~</span> <span class="hl kwd">s/(Vcs-Git: ).*\/(.+\.git)$/</span><span class="hl kwb">$1$salsa$2</span><span class="hl opt">/</span>g<span class="hl opt">;</span>
<span class="hl kwb">$git_new_origin</span> <span class="hl opt">=</span> <span class="hl str">"git remote add origin</span> <span class="hl ipl">$salsa_origin</span><span class="hl str"></span><span class="hl ipl">$2</span><span class="hl str">"</span><span class="hl opt">;</span>
<span class="hl opt">}</span>
<span class="hl opt">}</span>
<span class="hl opt">}</span>
write_file<span class="hl opt">(</span> <span class="hl kwb">$root</span> <span class="hl opt">.</span> <span class="hl kwb">$dir</span> <span class="hl opt">.</span> <span class="hl str">"/debian/control"</span><span class="hl opt">,</span> <span class="hl kwb">@lines</span> <span class="hl opt">);</span>
<span class="hl kwc">system</span> <span class="hl str">"git remote rm origin"</span><span class="hl opt">;</span>
<span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwb">$git_new_origin</span><span class="hl opt">) {</span>
<span class="hl kwc">system</span> <span class="hl kwb">$git_new_origin</span><span class="hl opt">;</span>
<span class="hl kwc">system</span> <span class="hl str">"git commit -a -m</span> <span class="hl ipl">$commit_message</span><span class="hl str">"</span><span class="hl opt">;</span>
<span class="hl kwc">system</span> <span class="hl str">"git push"</span>
<span class="hl opt">}</span> <span class="hl kwa">else</span> <span class="hl opt">{</span>
<span class="hl kwc">print</span> <span class="hl str">"No changes, skipping...</span><span class="hl esc">\n</span><span class="hl str">"</span>
<span class="hl opt">}</span>
<span class="hl opt">}</span>
</pre></div>
<p>The script gets path to the root directory, containing the local
clones, as an argument, so it should be ran as something like
<kbd>./salsa-convert.pl ~/freedom/packaging/elpa/</kbd>.</p>
0002: Debian migration to Salsa, Ihttps://www.pimentola.ru/posts/0002-migrating_to_salsa/2023-03-09T10:22:39Z2018-02-28T08:45:38Z
<p>Debian migrates from <a href="https://alioth.debian.org/">Alioth</a> to
<a href="https://salsa.debian.org/">Salsa</a>. Salsa is a
<a href="https://about.gitlab.com/">GitLab</a> instance, which is used to host
git repositories for Debian.</p>
<p>I maintain about 90 Debian packages as a member of <a href="https://pkg-emacsen.alioth.debian.org/">Debian Emacs
Addons Packaging Team</a>. So,
migrating these packages by hand can easily become a hurdle.
Fortunately, there's already some code written to ease migration. One
can find <a href="https://salsa.debian.org/mehdi/salsa-scripts">Mehdi
Dogguy</a>'s scripts,
especially his
<a href="https://salsa.debian.org/mehdi/salsa-scripts/blob/master/import.sh">import.sh</a>
script. I also found <a href="https://salsa.debian.org/enrico/salsa-scripts">Enrico
Zini</a>'s fork of the
mentioned repository. Enrico Zini's fork contains some changes for
better error handling. Since I just want to migrate a bunch of my
repositories and don't want to mess things up, I choose to stick with
the latter version of the <kbd>import.sh</kbd> script.</p>
<p>The first thing one needs to do is to generate <a href="https://salsa.debian.org/profile/personal_access_tokens">access
token</a> with
<strong>api</strong> scope. Then one needs to put that token to salsarc file in a
directory containing <kbd>import.sh</kbd> script. Now it is possible
to import Alioth repository to Salsa using something like as follows:</p>
<pre><code>./import.sh https://anonscm.debian.org/cgit/pkg-emacsen/pkg/ace-link.git/ emacsen-team
</code></pre>
<p>Now we need to grab somewhere URLs of Alioth repositories to import to
Salsa. Typically there is a Vcs-Browser field in
<kbd>debian/control</kbd> file, which contains URL in question. So, I
decided to write some small and ugly Perl script to batch process
local clones of Alioth repositories. Note that I placed all clones of
pkg-emacsen's Alioth repositories to the same directory. So, the code
batch processing can be something like as following:</p>
<div class="highlight-perl"><pre class="hl"><span class="hl slc">#!/usr/bin/perl</span>
<span class="hl kwa">use</span> warnings<span class="hl opt">;</span>
<span class="hl kwa">use</span> strict<span class="hl opt">;</span>
<span class="hl kwc">my</span> <span class="hl kwb">$root</span> <span class="hl opt">=</span> <span class="hl kwb">$ARGV</span><span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">];</span>
<span class="hl kwc">opendir my</span> <span class="hl kwb">$dh</span><span class="hl opt">,</span> <span class="hl kwb">$root</span> <span class="hl kwc">or die</span> <span class="hl str">"</span><span class="hl ipl">$0</span><span class="hl str">: opendir: $!"</span><span class="hl opt">;</span>
<span class="hl kwc">my</span> <span class="hl kwb">@dirs</span> <span class="hl opt">=</span> <span class="hl kwc">grep</span> <span class="hl opt">{ -</span>d <span class="hl str">"</span><span class="hl ipl">$root</span><span class="hl str">/</span><span class="hl ipl">$_</span><span class="hl str">"</span> <span class="hl opt">&& ! /^</span>\<span class="hl opt">.{</span><span class="hl num">1</span><span class="hl opt">,</span><span class="hl num">2</span><span class="hl opt">}$|^</span>dh<span class="hl opt">-.*(</span>elpa<span class="hl opt">)+/ }</span> <span class="hl kwc">readdir</span><span class="hl opt">(</span><span class="hl kwb">$dh</span><span class="hl opt">);</span>
<span class="hl kwc">closedir</span> <span class="hl kwb">$dh</span><span class="hl opt">;</span>
DIR<span class="hl opt">:</span> <span class="hl kwa">foreach</span> <span class="hl opt">(</span><span class="hl kwb">@dirs</span><span class="hl opt">) {</span>
<span class="hl kwc">print</span> <span class="hl str">"Processing</span> <span class="hl ipl">$_</span><span class="hl str">...</span><span class="hl esc">\n</span><span class="hl str">"</span><span class="hl opt">;</span>
<span class="hl kwc">open my</span> <span class="hl kwb">$fh</span><span class="hl opt">, (</span> <span class="hl kwb">$root</span> <span class="hl opt">.</span> <span class="hl kwb">$_</span> <span class="hl opt">.</span> <span class="hl str">"/debian/control"</span> <span class="hl opt">)</span> <span class="hl kwc">or die</span> <span class="hl str">"</span><span class="hl ipl">$0</span><span class="hl str">: open: $!"</span><span class="hl opt">;</span>
<span class="hl kwa">while</span> <span class="hl opt">(<</span><span class="hl kwb">$fh</span><span class="hl opt">>) {</span>
<span class="hl kwc">chomp</span><span class="hl opt">;</span>
<span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwd">m/(Vcs-Browser: )(.*)/</span><span class="hl opt">) {</span>
<span class="hl kwb">$_</span> <span class="hl opt">=~</span> <span class="hl kwd">s/(Vcs-Browser: )(.*)/$2/g</span><span class="hl opt">;</span>
<span class="hl kwc">system</span> <span class="hl str">"./import.sh</span> <span class="hl ipl">$_</span> <span class="hl str">emacsen-team"</span><span class="hl opt">;</span>
<span class="hl kwa">next</span> DIR<span class="hl opt">;</span>
<span class="hl opt">}</span>
<span class="hl opt">}</span>
<span class="hl kwc">close</span> <span class="hl kwb">$fh</span><span class="hl opt">;</span>
<span class="hl opt">}</span>
</pre></div>
<p>To batch process local clones one needs to run the script with the
path to the directory with the clones in question as an argument, that is</p>
<pre><code>./batch.pl /home/dogsleg/freedom/packaging/elpa/
</code></pre>
<p>You can easily adopt the script to batch import repositories of any
Debian team. Moreover, by tweaking <kbd>grep</kbd> in <kbd>@dirs</kbd>
declaration one can blacklist subdirectories that should not be
processed.</p>
<p>By the way, importing takes time. It took about 30 minutes to process
90 packages.</p>
0001: The first post in this bloghttps://www.pimentola.ru/posts/0001-first_post/2023-03-09T10:22:39Z2018-02-27T19:53:37Z
<p>This is the first post to my brave new blog. I'll try to write some
stuff there from time to time. Hope it will be useful for both the
intended and arbitrary visitors. Also, I'd like to take advantage of
the opportunity and give you some hints about myself. So...</p>
<ul>
<li><p>Currently I live in Yekaterinburg, Russia</p></li>
<li><p>I have an equivalent of Ph.D in philosophy and work as a docent of
philosophy department</p></li>
<li><p>My professional interests are in such fields as the foundations of
mathematics, logic, theory of knowledge, and metaphysics</p></li>
<li><p>I'm passionate about free and open source software, I'm a Debian
Developer</p></li>
<li><p>Although I'm OK with monotonous and boring work, I also like to
program, so machines are involved in doing some boring stuff</p></li>
<li><p>I know some bits of Agda, Bash, C, Coq, Emacs Lisp, Haskell, Perl,
Prolog, Python; and yes, I know many other geeky words too</p></li>
<li><p>Besides all of the stuff mentioned above I'm interested in genealogy
and using genetics to reveal genealogical mysteries of the past</p></li>
<li><p>So, my Y-haplogroup is N1a2b (N-P43, VL97+), and my Mt-haplogroup is
H1b2</p></li>
<li><p>I don't believe in psychological classifications stuff, but to make
some fun of it I did several tests, and was classified as a logical
intuitive introvert</p></li>
<li><p>And still there's some grains of truth in the above classification,
e. g., it is typically hard for me to talk and deal face to face
with strangers</p></li>
<li><p>In many activities I consider myself to be a kind of <a href="https://en.wikipedia.org/wiki/Wikipedia%3AWikiGnome">Wikipedia:WikiGnome</a></p></li>
<li><p>Also, I'm inspired by the beauty of nature</p></li>
</ul>