<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="/feed.xml" rel="self" type="application/atom+xml" /><link href="/" rel="alternate" type="text/html" /><updated>2025-08-19T18:32:27+00:00</updated><id>/feed.xml</id><title type="html">Yet another tech guy’s blog</title><subtitle>A personal blog of Sergey Grechin, a yet another tech guy, musician, and a software developer.</subtitle><entry><title type="html">New Release - Shiny Glamorous Life</title><link href="/2025/07/06/hew-release-shiny-glamorous-life.html" rel="alternate" type="text/html" title="New Release - Shiny Glamorous Life" /><published>2025-07-06T00:00:00+00:00</published><updated>2025-07-06T00:00:00+00:00</updated><id>/2025/07/06/hew-release-shiny-glamorous-life</id><content type="html" xml:base="/2025/07/06/hew-release-shiny-glamorous-life.html"><![CDATA[<p>New release at Cake Music. Two electronic tracks titled:</p>

<ol>
  <li>Shiny Glamorous Life</li>
  <li>Observation</li>
</ol>

<iframe style="border-radius:12px" src="https://open.spotify.com/embed/album/0Hi9h6ZaB02k145gIFGxLo?utm_source=generator" width="100%" height="352" frameborder="0" allowfullscreen="" allow="autoplay; clipboard-write; encrypted-media; fullscreen; picture-in-picture" loading="lazy"></iframe>

<p><a href="https://www.youtube.com/watch?v=2gVxGZGw05U&amp;list=OLAK5uy_nwlBRQCnvObeIRl7zK3CD_SP94x1uw2C0">also on YouTube</a></p>]]></content><author><name></name></author><summary type="html"><![CDATA[New release at Cake Music. Two electronic tracks titled:]]></summary></entry><entry><title type="html">5 Exercises for preparation for C2 Exam at Goethe Institut (Schreiben Teil 1)</title><link href="/2025/07/05/Excercises_for_Goethe_C2_Schreiben_Teil_1.html" rel="alternate" type="text/html" title="5 Exercises for preparation for C2 Exam at Goethe Institut (Schreiben Teil 1)" /><published>2025-07-05T00:00:00+00:00</published><updated>2025-07-05T00:00:00+00:00</updated><id>/2025/07/05/Excercises_for_Goethe_C2_Schreiben_Teil_1</id><content type="html" xml:base="/2025/07/05/Excercises_for_Goethe_C2_Schreiben_Teil_1.html"><![CDATA[<p>I want to publish something I’ve used for my preparation for C2 Exam at Goethe Institut (German language). This PDF contains 5 exercises that resemble the first task in writing test of Goethe Institut C2 exam (Grosses Deutsches Sprachdiplom), namely the one that asks you to rewrite sentences. I found surprisingly few examples in the Internet for my preparations so I decided to make some myself.  These exercises are made with Gemini AI with a few manual fixes.</p>

<p><a href="https://raw.githubusercontent.com/hq9000/goethe_c2_schreiben_teil1_uebungen/refs/heads/master/goethe_c2_schreiben_teil1_uebung.pdf">Download PDF</a></p>

<p>Each page of this document contains a small text, words to use for replacement, and a possible answer for self-check.
Feel free to use them for your preparations and good luck at your exam!</p>

<p><img width="660" height="515" alt="Image" src="https://github.com/user-attachments/assets/e65bd45f-a2d4-41a4-aa2d-3a541d2a8903" /></p>]]></content><author><name></name></author><summary type="html"><![CDATA[I want to publish something I’ve used for my preparation for C2 Exam at Goethe Institut (German language). This PDF contains 5 exercises that resemble the first task in writing test of Goethe Institut C2 exam (Grosses Deutsches Sprachdiplom), namely the one that asks you to rewrite sentences. I found surprisingly few examples in the Internet for my preparations so I decided to make some myself. These exercises are made with Gemini AI with a few manual fixes.]]></summary></entry><entry><title type="html">mkdir ignores -p parameter if it faces a broken link</title><link href="/2025/01/06/mkdir-ignores-p-parameter-if-it-faces-a-broken-link.html" rel="alternate" type="text/html" title="mkdir ignores -p parameter if it faces a broken link" /><published>2025-01-06T00:00:00+00:00</published><updated>2025-01-06T00:00:00+00:00</updated><id>/2025/01/06/mkdir-ignores--p-parameter-if-it-faces-a-broken-link</id><content type="html" xml:base="/2025/01/06/mkdir-ignores-p-parameter-if-it-faces-a-broken-link.html"><![CDATA[<p>Today I encountered a behavior of <code class="language-plaintext highlighter-rouge">mkdir</code> which I found a bit surprising.</p>

<p>As you know, <code class="language-plaintext highlighter-rouge">-p</code> makes <code class="language-plaintext highlighter-rouge">mkdir</code> ignore if directory already exists:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>-p, --parents
    no error if existing, make parent directories as needed
</code></pre></div></div>

<p>it works fine for symbolic link too as shown here:</p>

<div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span><span class="nb">mkdir </span>target
<span class="nv">$ </span><span class="nb">ln</span> <span class="nt">-s</span> target <span class="nb">link</span>
<span class="nv">$ </span><span class="nb">mkdir</span> <span class="nt">-p</span> <span class="nb">link</span>
<span class="nv">$ </span><span class="nb">echo</span> <span class="nv">$?</span>
0
<span class="nv">$ </span><span class="nb">ls</span> <span class="nt">-la</span>
total 12
drwxr-xr-x  3 sergey sergey 4096 Jan  6 18:35 <span class="nb">.</span>
drwxr-x--- 15 sergey sergey 4096 Jan  6 18:34 ..
lrwxrwxrwx  1 sergey sergey    6 Jan  6 18:35 <span class="nb">link</span> -&gt; target
drwxr-xr-x  2 sergey sergey 4096 Jan  6 18:35 target
<span class="err">$</span>
</code></pre></div></div>

<p>however, and that is what surprised me at first, if a link happens to be a <em>broken</em> link, the <code class="language-plaintext highlighter-rouge">-p</code> stops working:</p>

<div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span><span class="nb">rmdir </span>target
<span class="nv">$ </span><span class="nb">mkdir</span> <span class="nt">-p</span> <span class="nb">link
mkdir</span>: cannot create directory ‘link’: File exists
</code></pre></div></div>

<p>After some thinking, I realize that there can be no way to ignore existing directory as the only object we have is a link pointing nowhere, is it a directory? Or a file? So the fact that it fails should not have been so surprising. On the other hand, the error message could have been a bit more informative.</p>]]></content><author><name></name></author><summary type="html"><![CDATA[Today I encountered a behavior of mkdir which I found a bit surprising.]]></summary></entry><entry><title type="html">UnknownMusic.cc was launched: A random feed of all new Spotify releases</title><link href="/2025/01/01/unknownmusic.cc-was-launched.-It-is-a-random-feed-of-all-new-spotify-releases.html" rel="alternate" type="text/html" title="UnknownMusic.cc was launched: A random feed of all new Spotify releases" /><published>2025-01-01T00:00:00+00:00</published><updated>2025-01-01T00:00:00+00:00</updated><id>/2025/01/01/unknownmusic.cc-was-launched.-It-is-a-random-feed-of-all-new-spotify-releases</id><content type="html" xml:base="/2025/01/01/unknownmusic.cc-was-launched.-It-is-a-random-feed-of-all-new-spotify-releases.html"><![CDATA[<p>Recently, I had a bit of spare time and thus was able to complete something that was on my mind for quite a while.
It is a website, where you can <a href="https://unknownmusic.cc">discover new releases of lesser known artists of recent years</a>.</p>

<p>As a regular Spotify user, I was always a bit frustrated by the lack of the way off seeing “what’s new”. Yeah, they have “new releases” section, but it shows either something similar to what I have seen before, or some popular stuff. What I do sometimes want to have is just a raw stream of stuff being released, including the one from producers like me.</p>

<p>I remember the time when Yandex Music had something similar, but now it’s gone. Spotify seems to be not willing to provide this raw feed either. But why? I guess it goes against their goals of having an “average listener” spending as much time on the platform as possible. Sadly, it means that a lot of lesser known producers hardly get a chance to get heard.</p>

<p>So, this new service, which I named, hopefully aptly enough, “<a href="https://unknownmusic.cc">Unknown Music</a>”, through the use of Spotify API, maintains a small (a few thousand) selection of albums and randomly presents 8 of them to the user. It is by no means a complete feed, but, rather, a hopefully representative sample of new stuff.</p>

<p>Is it actually useful? Well, for me it is, I have already enriched my playlist with quite a few gems that I would have never discovered otherwise. Thus let me invite you to have a look as well!</p>

<p><img src="https://github.com/user-attachments/assets/e7266b8d-0f22-4c1c-8e56-c9fba9160f5d" alt="image" /></p>]]></content><author><name></name></author><summary type="html"><![CDATA[Recently, I had a bit of spare time and thus was able to complete something that was on my mind for quite a while. It is a website, where you can discover new releases of lesser known artists of recent years.]]></summary></entry><entry><title type="html">Invisible Girl album released</title><link href="/2024/11/24/Invisible-Girl-album-released.html" rel="alternate" type="text/html" title="Invisible Girl album released" /><published>2024-11-24T00:00:00+00:00</published><updated>2024-11-24T00:00:00+00:00</updated><id>/2024/11/24/Invisible-Girl-album-released</id><content type="html" xml:base="/2024/11/24/Invisible-Girl-album-released.html"><![CDATA[<p>Another release this year, and this time it’s three lyrical songs we made with russian vocalist Anastasia Shokhina with me on back vocal. The songs are:</p>

<ul>
  <li>Invisible girl</li>
  <li>Swipe me Right</li>
  <li>Invisible Girl (Acoustic version)</li>
</ul>

<p><img src="https://i.scdn.co/image/ab67616d00001e027f25e616332550c05ff07948" width="185" /></p>

<p>Feel free to have a listen on <a href="https://open.spotify.com/album/60wiorWfBWgyxw5CXgSoot">Spotify</a>, <a href="https://www.youtube.com/watch?v=Ad5R2fVmR48&amp;list=OLAK5uy_nLUpjK-RQ7uEHXrXXYLo0w_aUV2uWa47w&amp;index=1">YouTube</a> or any other platform.</p>]]></content><author><name></name></author><summary type="html"><![CDATA[Another release this year, and this time it’s three lyrical songs we made with russian vocalist Anastasia Shokhina with me on back vocal. The songs are:]]></summary></entry><entry><title type="html">New Album By Clipsandpatterns Released Passers By</title><link href="/2024/07/15/new-album-by-clipsandpatterns-released-passers-by.html" rel="alternate" type="text/html" title="New Album By Clipsandpatterns Released Passers By" /><published>2024-07-15T00:00:00+00:00</published><updated>2024-07-15T00:00:00+00:00</updated><id>/2024/07/15/new-album-by-clipsandpatterns-released-passers-by</id><content type="html" xml:base="/2024/07/15/new-album-by-clipsandpatterns-released-passers-by.html"><![CDATA[<p>So finally a new release, and this time - 3 real songs featuring me as a lyricist, a vocalist, composer and like 5 different other production roles. In other words, it was quite an effort!</p>

<p>The three songs are “Passers By”, “Closure” and “Talk To Me”.</p>

<p>I started working on the album in December 2023, made 6 drafts, 3 of which ended up as masters. The release on the platforms happened on the 29th of June. Two mics were bought and adjustments had to be made to my room to ensure adequate recording environment.</p>

<p>All in all, I’m reasonably satisfied with the results. Which means that I find them quite reflective of my current level.</p>

<p>Feel free to search for ClipsAndPatters - Passers By on the platform of your choice, below is the link to YouTube. Follow, like, subscribe or do any other buzzy thing of your choice.</p>

<iframe width="681" height="383" src="https://www.youtube.com/embed/Nd-OU6gTxOc?list=OLAK5uy_nm6NH-N_dXSelCeB7aCtHlZJxzF1CToII" title="Passers By" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen=""></iframe>]]></content><author><name></name></author><summary type="html"><![CDATA[So finally a new release, and this time - 3 real songs featuring me as a lyricist, a vocalist, composer and like 5 different other production roles. In other words, it was quite an effort!]]></summary></entry><entry><title type="html">How to clean your git working directory</title><link href="/2024/02/20/how-to-clean-your-git-working-directory.html" rel="alternate" type="text/html" title="How to clean your git working directory" /><published>2024-02-20T00:00:00+00:00</published><updated>2024-02-20T00:00:00+00:00</updated><id>/2024/02/20/how-to-clean-your-git-working-directory</id><content type="html" xml:base="/2024/02/20/how-to-clean-your-git-working-directory.html"><![CDATA[<p>Let me guess: you ended up with tons of untracked files in your working directory.
Now it’s a nightmare to actually see what to stage for your future commit? Correct?</p>

<p>This is how you solve it:</p>

<p><code class="language-plaintext highlighter-rouge">git clean -f -d</code></p>

<p>this little beast removes all untracked files, including directories, forcefully.</p>

<p>Importantly, it works in the scope of your current directory (which is not necessarily the root of your repo). Therefore, to make the untracked files removed from every corner of your repo, you run it while being in the repo’s root.</p>

<p>If it sounds a bit too scary, run <code class="language-plaintext highlighter-rouge">git clean -f -d -n</code> (the <code class="language-plaintext highlighter-rouge">-n</code> means “dry run”, makes it only print out what it <em>would</em> remove). Example:</p>

<div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span>git clean <span class="nt">-f</span> <span class="nt">-d</span> <span class="nt">-n</span>
Would remove 2022-07-19-vega-visualization-performance-benchmark.md_upd
Would remove 2024-02-20-how-to-clean-your-git-working-directory.md
Would remove 2024-02-20-how-to-disable-permission-tracking-in-git.md
</code></pre></div></div>

<p>What about staged but not yet commited files? If you have a file in staging area, it’s already considered “tracked” and therefore will not be removed. Proof:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ touch example_to_hide_in_staging.txt
$ git clean -f -d -n
Would remove example_to_hide_in_staging.txt
$ git add example_to_hide_in_staging.txt
$ git clean -f -d -
$
</code></pre></div></div>

<p>Have fun!</p>]]></content><author><name></name></author><summary type="html"><![CDATA[Let me guess: you ended up with tons of untracked files in your working directory. Now it’s a nightmare to actually see what to stage for your future commit? Correct?]]></summary></entry><entry><title type="html">How To Disable Permission Tracking In Git</title><link href="/2024/02/20/how-to-disable-permission-tracking-in-git.html" rel="alternate" type="text/html" title="How To Disable Permission Tracking In Git" /><published>2024-02-20T00:00:00+00:00</published><updated>2024-02-20T00:00:00+00:00</updated><id>/2024/02/20/how-to-disable-permission-tracking-in-git</id><content type="html" xml:base="/2024/02/20/how-to-disable-permission-tracking-in-git.html"><![CDATA[<p>Over and over google I to find this command that disable permission tracking in a git repository. Did it happen 50+ times already over the years? Or more?</p>

<p>Enough goggling, this is the command that makes my repo chmod-resistant:</p>

<p><code class="language-plaintext highlighter-rouge">git config core.fileMode false</code></p>

<p>After you’ve run it, you will not see the changes in permissions of files (i.e. after chmodding) as modifications recognized by Git.</p>]]></content><author><name></name></author><summary type="html"><![CDATA[Over and over google I to find this command that disable permission tracking in a git repository. Did it happen 50+ times already over the years? Or more?]]></summary></entry><entry><title type="html">MIDI copy to channels, a Reaper plugin useful for synth layering</title><link href="/2024/01/14/midi-copy-to-channel-reaper-jesusonic-plugin-for-synth-layering.html" rel="alternate" type="text/html" title="MIDI copy to channels, a Reaper plugin useful for synth layering" /><published>2024-01-14T00:00:00+00:00</published><updated>2024-01-14T00:00:00+00:00</updated><id>/2024/01/14/midi-copy-to-channel-reaper-jesusonic-plugin-for-synth-layering</id><content type="html" xml:base="/2024/01/14/midi-copy-to-channel-reaper-jesusonic-plugin-for-synth-layering.html"><![CDATA[<p>I have recently created a small jesusonic plugin called “MIDI copy to channels” to facilitate sound layering with multitimbral synths.</p>

<p><img src="https://github.com/hq9000/hq9000/assets/21345604/81e162be-79d3-4c30-8379-f68eb74d34fc" alt="image" /></p>

<p>Basically, it allows you, with one midi source, make several sounds played. In my case, I find it rather useful with synths like TTS-1 and Roland Sound Canvas.</p>

<p>Feel free to get the plugin here: <a href="https://github.com/hq9000/reaper_tools/blob/master/js/midi_copy_to_channels.js">https://github.com/hq9000/reaper_tools/blob/master/js/midi_copy_to_channels.js</a></p>

<p>More on that in the video below.</p>

<iframe width="560" height="315" src="https://www.youtube.com/embed/ES-OSCrsSKc?si=hcsU-Qn8PHCDq8pQ" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen=""></iframe>]]></content><author><name></name></author><summary type="html"><![CDATA[I have recently created a small jesusonic plugin called “MIDI copy to channels” to facilitate sound layering with multitimbral synths.]]></summary></entry><entry><title type="html">AI-generated book for learners of German (B1 vocabulary trainer)</title><link href="/2023/12/22/ai-generated-book-for-learners-of-german.html" rel="alternate" type="text/html" title="AI-generated book for learners of German (B1 vocabulary trainer)" /><published>2023-12-22T00:00:00+00:00</published><updated>2023-12-22T00:00:00+00:00</updated><id>/2023/12/22/ai-generated-book-for-learners-of-german</id><content type="html" xml:base="/2023/12/22/ai-generated-book-for-learners-of-german.html"><![CDATA[<p>Today I’ve finished a work I have been sporadically doing for the last couple of months.</p>

<p>It’s a massive 512 pages book, downloadable as pdf, composed of 95 “stories” highlighting parts of the german vocabulary corresponding to B1 level. Used chatGPT for that, and it was fun, though annoying at times, when it was randomly changing its responses to very similar prompts.</p>

<p>One possible way to work with this book is to study 1-2 “stories” a day. The stories come with tables highlighting the necessary words with translations into english and russian.</p>

<p>Feel free to download this <a href="https://github.com/hq9000/b1-deutsch-storybook/releases/latest/download/b1-deutsch-ai-storybook-eng-rus.pdf">german b1 vocabulary trainer</a>.</p>

<p>Also feel free to check <a href="https://github.com/hq9000/b1-deutsch-storybook">the github project</a>.</p>

<p><img src="https://github.com/hq9000/hq9000/assets/21345604/8f34b5be-a3c5-4255-ab82-cab93afc6d8a" alt="image" /></p>]]></content><author><name></name></author><summary type="html"><![CDATA[Today I’ve finished a work I have been sporadically doing for the last couple of months.]]></summary></entry></feed>