<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"><channel><title>Orange Sun</title><link>https://potyarkin.com/</link><description>Unsorted ramblings, sometimes related to programming</description><lastBuildDate>Tue, 09 Jan 2024 00:00:00 +0300</lastBuildDate><item><title>Declaring bankruptcy on Advent of Purescript 2023</title><link>https://potyarkin.com/posts/2024/aoc2023-bankruptcy/</link><description>&lt;p&gt;Advent of Code is a &lt;a href="https://potyarkin.com/posts/2023/aoc2022/"&gt;fun challenge&lt;/a&gt; and this year I decided to attempt
&lt;a href="https://sio.github.io/advent-of-code/2023/"&gt;solving it in Purescript&lt;/a&gt;. Today I'm declaring this attempt a
failure. This post will serve as a postmortem.&lt;/p&gt;
&lt;h2 id="choosing-purescript"&gt;&lt;a class="toclink" href="#choosing-purescript"&gt;Choosing Purescript&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Last year I solved my first Advent of Code using Go. It was fun and I …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Vitaly Potyarkin</dc:creator><pubDate>Tue, 09 Jan 2024 00:00:00 +0300</pubDate><guid isPermaLink="false">tag:potyarkin.com,2024-01-09:/posts/2024/aoc2023-bankruptcy/</guid><category>posts</category><category>programming</category><category>purescript</category><category>advent-of-code</category></item><item><title>Benchmarking ssh-agent performance</title><link>https://potyarkin.com/posts/2023/ssh-agent-benchmark/</link><description>&lt;p&gt;I have an application idea that would require calling ssh-agent rather
frequently - but how many requests per second can it handle?&lt;/p&gt;
&lt;p&gt;To answer this question I wrote a &lt;a href="https://github.com/sio/ssh-agent-benchmark/blob/master/ssh_agent_test.go"&gt;small benchmark&lt;/a&gt; in Go.
It runs a tight loop sending messages for ssh-agent to sign.
Turns out the agent is pretty fast …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Vitaly Potyarkin</dc:creator><pubDate>Wed, 19 Jul 2023 00:00:00 +0300</pubDate><guid isPermaLink="false">tag:potyarkin.com,2023-07-19:/posts/2023/ssh-agent-benchmark/</guid><category>posts</category><category>ssh</category><category>cryptography</category><category>benchmark</category><category>go</category><category>ed25519</category></item><item><title>Many-to-many relationships in Excel data model</title><link>https://potyarkin.com/posts/2023/excel-many-to-many/</link><description>&lt;p&gt;This is a quick hack to build many-to-many relationships in Excel data model
even though they are not supported out of the box.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Create intermediate &lt;a href="https://stackoverflow.com/a/70682229"&gt;calculated table&lt;/a&gt; and use DAX to fill it
    with unique values from related columns on both sides of the relationship:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;EVALUATE
  FILTER(
    DISTINCT(
      UNION(
        VALUES …&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Vitaly Potyarkin</dc:creator><pubDate>Fri, 02 Jun 2023 00:00:00 +0300</pubDate><guid isPermaLink="false">tag:potyarkin.com,2023-06-02:/posts/2023/excel-many-to-many/</guid><category>posts</category><category>excel</category></item><item><title>A pull request 10 years in the making</title><link>https://potyarkin.com/posts/2023/10-year-pull-request/</link><description>&lt;blockquote&gt;
&lt;p&gt;Once upon a time there was a bug in a free software project that annoyed me
for long enough that I've learned C to fix it. And it felt good.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Now that we've got a TL;DR out of the way, here is the story.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://potyarkin.com/resources/pr893_timeline.svg"&gt;&lt;img alt="story timeline" src="https://potyarkin.com/resources/pr893_timeline.svg"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;There is a good torrent …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Vitaly Potyarkin</dc:creator><pubDate>Wed, 03 May 2023 00:00:00 +0300</pubDate><guid isPermaLink="false">tag:potyarkin.com,2023-05-03:/posts/2023/10-year-pull-request/</guid><category>posts</category><category>opensource</category><category>programming</category></item><item><title>Advent of Code 2022 was fun!</title><link>https://potyarkin.com/posts/2023/aoc2022/</link><description>&lt;p&gt;This was the first year I participated in &lt;a href="https://adventofcode.com"&gt;Advent of Code&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/sio/advent-of-code/tree/master/aoc2022"&gt;&lt;img alt="" src="https://potyarkin.com/resources/aoc2022.svg"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;In case you're not familiar with it, AoC is a Christmas themed programming
competition consisting of 25 challenges published daily (from December 1st to
December 25th). The web site produces personalized puzzle inputs for each user
and expects only …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Vitaly Potyarkin</dc:creator><pubDate>Thu, 09 Mar 2023 00:00:00 +0300</pubDate><guid isPermaLink="false">tag:potyarkin.com,2023-03-09:/posts/2023/aoc2022/</guid><category>posts</category><category>programming</category><category>go</category><category>advent-of-code</category></item><item><title>Negotiating down to 100Mbit between two 1Gbit devices</title><link>https://potyarkin.com/posts/2022/negotiating-down-to-100mbit/</link><description>&lt;p&gt;Connecting two gigabit-capable devices via 4-wire UTP cable is an abomination,
but sometimes we have to live with it (e.g. when a &lt;a href="https://nevalink.net/"&gt;greedy ISP&lt;/a&gt;
decides to save a few cents and pulls a cheap cable to your apartment).&lt;/p&gt;
&lt;p&gt;The fun starts when the devices try to negotiate Ethernet connection …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Vitaly Potyarkin</dc:creator><pubDate>Fri, 29 Jul 2022 00:00:00 +0300</pubDate><guid isPermaLink="false">tag:potyarkin.com,2022-07-29:/posts/2022/negotiating-down-to-100mbit/</guid><category>posts</category><category>linux</category><category>networking</category></item><item><title>"No user exists for uid" when pushing to git repo</title><link>https://potyarkin.com/posts/2022/no-user-exists-for-uid/</link><description>&lt;p&gt;Today I tried to automate pushing to a Git repository from a Docker container.
And like many others I failed with an error:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;$ git push
No user exists for uid 2918
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository …&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Vitaly Potyarkin</dc:creator><pubDate>Thu, 21 Jul 2022 00:00:00 +0300</pubDate><guid isPermaLink="false">tag:potyarkin.com,2022-07-21:/posts/2022/no-user-exists-for-uid/</guid><category>posts</category><category>linux</category><category>ssh</category><category>git</category></item><item><title>Pip-installable Pelican themes</title><link>https://potyarkin.com/posts/2022/pip-install-pelican-theme/</link><description>&lt;p&gt;Installing &lt;a href="https://blog.getpelican.com/"&gt;Pelican&lt;/a&gt; themes &lt;a href="https://docs.getpelican.com/en/3.6.3/pelican-themes.html#installing-themes"&gt;the default way&lt;/a&gt; is not very
pleasant:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You need to invoke a separate CLI tool&lt;/li&gt;
&lt;li&gt;You may need to create some symlinks and ensure that they don't go stale the
  next time you use Pelican&lt;/li&gt;
&lt;li&gt;Some people (me) have resorted to git submodules instead of official CLI …&lt;/li&gt;&lt;/ul&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Vitaly Potyarkin</dc:creator><pubDate>Fri, 10 Jun 2022 00:00:00 +0300</pubDate><guid isPermaLink="false">tag:potyarkin.com,2022-06-10:/posts/2022/pip-install-pelican-theme/</guid><category>posts</category><category>pelican</category><category>python</category><category>pip</category></item><item><title>Unexpected workaround for Libvirt VMs with cgroups v2 in Cirrus CI</title><link>https://potyarkin.com/posts/2022/libvirt-cirrusci-workaround/</link><description>&lt;blockquote&gt;
&lt;p&gt;Today I wrote a &lt;a href="https://gitlab.com/sio/server_common/-/commit/5777cfae5446e7056fd95408c10e5273cd6529fd"&gt;commit message&lt;/a&gt; that was several screens long.
I think it deserves to be a blog post of its own&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Update:&lt;/em&gt; the commit linked above required some &lt;a href="https://gitlab.com/sio/server_common/-/commit/ebde5a880fc648be382a157454bc1ab17a8e0cd5"&gt;modification&lt;/a&gt; to remove
flakiness, but the workaround still stands. Diff provided in this blog post
was updated to reflect current …&lt;/p&gt;&lt;/blockquote&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Vitaly Potyarkin</dc:creator><pubDate>Wed, 02 Mar 2022 00:00:00 +0300</pubDate><guid isPermaLink="false">tag:potyarkin.com,2022-03-02:/posts/2022/libvirt-cirrusci-workaround/</guid><category>posts</category><category>ci</category><category>automation</category><category>libvirt</category></item><item><title>D-Link DIR-825 (rev.B1) throughput test</title><link>https://potyarkin.com/posts/2022/d-link-dir-825-revb1-throughput-test/</link><description>&lt;p&gt;So, the year is 2022 and I'm still using D-Link &lt;a href="https://openwrt.org/toh/d-link/dir-825"&gt;DIR-825&lt;/a&gt;, rev.B1 as my edge
router at home.&lt;/p&gt;
&lt;p&gt;Thanks to the power of opensource it is running a modern and secure OS
(OpenWRT) long after the manufacturer has abandoned this product.
Even though OpenWRT (and Linux in general) has …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Vitaly Potyarkin</dc:creator><pubDate>Mon, 31 Jan 2022 00:00:00 +0300</pubDate><guid isPermaLink="false">tag:potyarkin.com,2022-01-31:/posts/2022/d-link-dir-825-revb1-throughput-test/</guid><category>posts</category><category>hardware</category><category>router</category></item><item><title>Ansible apt module fails to install python3-apt on Debian Testing</title><link>https://potyarkin.com/posts/2020/ansible-apt-debian-testing/</link><description>&lt;p&gt;I have encountered an unexpected Ansible failure today that turned out to be not
a bug.&lt;/p&gt;
&lt;p&gt;Ansible apt module had failed to auto install the required &lt;code&gt;python3-apt&lt;/code&gt;
package - only on Debian Testing. Same playbook worked fine with Debian
Stable.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;TASK [install some apt packages] *********************************************
[WARNING]: Updating cache and auto-installing missing …&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Vitaly Potyarkin</dc:creator><pubDate>Wed, 09 Dec 2020 00:00:00 +0300</pubDate><guid isPermaLink="false">tag:potyarkin.com,2020-12-09:/posts/2020/ansible-apt-debian-testing/</guid><category>posts</category><category>ansible</category></item><item><title>Pegatron Cape 7 nettop (thin client)</title><link>https://potyarkin.com/posts/2020/pegatron-cape-7/</link><description>&lt;blockquote&gt;
&lt;p&gt;Below are hardware details of an outdated compact computer that had since
become available for low price on second-hand market. I bought mine for $15
(in March 2020).&lt;/p&gt;
&lt;p&gt;This post is inspired by &lt;a href="https://www.parkytowers.me.uk/thin/"&gt;ParkyTowers Thin Client
Database&lt;/a&gt; - many thanks to David
Parkinson for gathering and sharing all that knowledge!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;Pegatron …&lt;/strong&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Vitaly Potyarkin</dc:creator><pubDate>Sat, 04 Apr 2020 00:00:00 +0300</pubDate><guid isPermaLink="false">tag:potyarkin.com,2020-04-04:/posts/2020/pegatron-cape-7/</guid><category>posts</category><category>hardware</category></item><item><title>Running Libvirt (KVM) in Cirrus CI</title><link>https://potyarkin.com/posts/2020/running-libvirt-kvm-in-cirrus-ci/</link><description>&lt;p&gt;Up until the middle of 2019 it was very unusual to even expect that any CI
service would allow nested virtualization. Those who required such
functionality had to maintain their own CI runners on their own
infrastructure. Things changed when Google Cloud introduced &lt;a href="https://cloud.google.com/compute/docs/instances/enable-nested-virtualization-vm-instances"&gt;nested
KVM&lt;/a&gt; support.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://cirrus-ci.org/"&gt;Cirrus CI&lt;/a&gt; was probably …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Vitaly Potyarkin</dc:creator><pubDate>Tue, 25 Feb 2020 00:00:00 +0300</pubDate><guid isPermaLink="false">tag:potyarkin.com,2020-02-25:/posts/2020/running-libvirt-kvm-in-cirrus-ci/</guid><category>posts</category><category>ci</category><category>automation</category></item><item><title>Cirrus CI integration for GitLab projects</title><link>https://potyarkin.com/posts/2020/cirrus-ci-integration-for-gitlab-projects/</link><description>&lt;p&gt;&lt;a href="https://cirrus-ci.org/"&gt;Cirrus CI&lt;/a&gt; is a relatively new hosted CI service that offers several unique
features. It's probably the only CI provider to offer full virtualization
(KVM) or FreeBSD runners for free. Currently their business model is centered
around GitHub Marketplace and only the projects hosted at GitHub are
supported.&lt;/p&gt;
&lt;p&gt;Fortunately Cirrus …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Vitaly Potyarkin</dc:creator><pubDate>Tue, 18 Feb 2020 00:00:00 +0300</pubDate><guid isPermaLink="false">tag:potyarkin.com,2020-02-18:/posts/2020/cirrus-ci-integration-for-gitlab-projects/</guid><category>posts</category><category>automation</category><category>ci</category></item><item><title>Cygwin CI journey</title><link>https://potyarkin.com/posts/2020/cygwin-ci-journey/</link><description>&lt;p&gt;Setting up Cygwin CI environment for testing one of my projects took more
than fifty trial-and-error attempts - that's why I think it will be useful to
leave some written notes on the issues I've encountered. Here is the end
&lt;a href="https://github.com/sio/Makefile.venv/blob/master/.github/workflows/test.yml"&gt;result&lt;/a&gt; - GitHub CI running some Makefile tests in Cygwin.&lt;/p&gt;
&lt;h2 id="cygwin-gotchas"&gt;&lt;a class="toclink" href="#cygwin-gotchas"&gt;Cygwin gotchas …&lt;/a&gt;&lt;/h2&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Vitaly Potyarkin</dc:creator><pubDate>Tue, 28 Jan 2020 00:00:00 +0300</pubDate><guid isPermaLink="false">tag:potyarkin.com,2020-01-28:/posts/2020/cygwin-ci-journey/</guid><category>posts</category><category>windows</category><category>cygwin</category><category>automation</category><category>ci</category></item><item><title>Don't blindly trust Docker for the selfhosted stuff</title><link>https://potyarkin.com/posts/2020/no-docker-for-selfhosted/</link><description>&lt;p&gt;It is my strong belief that you shouldn't go crazy with &lt;em&gt;all-things-docker&lt;/em&gt;
when deploying selfhosted services at home. Online forums, especially
&lt;a href="https://reddit.com/r/selfhosted/"&gt;r/selfhosted&lt;/a&gt;, seem to foster an opinion that providing a &lt;code&gt;Dockerfile&lt;/code&gt; or
better yet a &lt;code&gt;docker-compose.yml&lt;/code&gt; or even prebuilt public images on Docker Hub
is an acceptable way …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Vitaly Potyarkin</dc:creator><pubDate>Mon, 27 Jan 2020 00:00:00 +0300</pubDate><guid isPermaLink="false">tag:potyarkin.com,2020-01-27:/posts/2020/no-docker-for-selfhosted/</guid><category>posts</category><category>docker</category><category>kubernetes</category><category>automation</category></item><item><title>Manage Python virtual environment from your Makefile</title><link>https://potyarkin.com/posts/2019/manage-python-virtual-environment-from-your-makefile/</link><description>&lt;p&gt;I often use Makefiles not just as a build tool but as a handy way to execute
sequences of commands. The commands I've found myself executing again and
again lately are the ones to manage Python virtual environments:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Create new venv&lt;/li&gt;
&lt;li&gt;Update pip to the latest version that enables all …&lt;/li&gt;&lt;/ul&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Vitaly Potyarkin</dc:creator><pubDate>Tue, 01 Oct 2019 00:00:00 +0300</pubDate><guid isPermaLink="false">tag:potyarkin.com,2019-10-01:/posts/2019/manage-python-virtual-environment-from-your-makefile/</guid><category>posts</category><category>python</category><category>automation</category></item><item><title>Cygheap base mismatch in Git for Windows</title><link>https://potyarkin.com/posts/2019/cygheap-base-mismatch-in-git-for-windows/</link><description>&lt;p&gt;This error has haunted me for several months:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;4 [main] head (6660) C:\...\usr\bin\head.exe:r
*** fatal error - cygheap base mismatch detected - 0x612C7410/0xAF7410.

This problem is probably due to using incompatible versions of the cygwin DLL.
Search for cygwin1.dll using the Windows Start-&amp;gt;Find/Search facility …&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Vitaly Potyarkin</dc:creator><pubDate>Mon, 26 Aug 2019 00:00:00 +0300</pubDate><guid isPermaLink="false">tag:potyarkin.com,2019-08-26:/posts/2019/cygheap-base-mismatch-in-git-for-windows/</guid><category>posts</category><category>bash</category><category>windows</category><category>git</category></item><item><title>On dotfiles management</title><link>https://potyarkin.com/posts/2019/on-dotfiles-management/</link><description>&lt;p&gt;This will be yet another description of dotfiles management by some random
person on the Internet. I will try to explain what my setup is like and why it
is that way.&lt;/p&gt;
&lt;p&gt;If you're not yet using version control software for your configuration files
I strongly encourage you to start …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Vitaly Potyarkin</dc:creator><pubDate>Tue, 30 Jul 2019 00:00:00 +0300</pubDate><guid isPermaLink="false">tag:potyarkin.com,2019-07-30:/posts/2019/on-dotfiles-management/</guid><category>posts</category><category>linux</category><category>windows</category><category>automation</category><category>bash</category></item><item><title>Installing One by Wacom in Debian Stretch</title><link>https://potyarkin.com/posts/2018/installing-one-by-wacom-in-debian-stretch/</link><description>&lt;p&gt;I believe there are many people who run Debian Stable as their main desktop OS.
This article is a short how-to on enabling newer hardware in Debian Stable
without switching to another version or distribution.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;NOTE:&lt;/strong&gt; This article was written in 2018, new Debian Stable (Buster) has
been released since …&lt;/p&gt;&lt;/blockquote&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Vitaly Potyarkin</dc:creator><pubDate>Wed, 22 Aug 2018 00:00:00 +0300</pubDate><guid isPermaLink="false">tag:potyarkin.com,2018-08-22:/posts/2018/installing-one-by-wacom-in-debian-stretch/</guid><category>posts</category><category>linux</category><category>hardware</category><category>Debian</category></item><item><title>Enhanced file path completion in bash (like in zsh)</title><link>https://potyarkin.com/posts/2018/enhanced-file-path-completion-in-bash-like-in-zsh/</link><description>&lt;p&gt;Zsh offers a lot of significant improvements over traditional shell experience.
Some of those can also be implemented in bash, but others are not. For a long
time I've thought that advanced file path expansion is something that can't be
done in bash. Today I prove myself wrong.&lt;/p&gt;
&lt;h2 id="background"&gt;&lt;a class="toclink" href="#background"&gt;Background&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;When …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Vitaly Potyarkin</dc:creator><pubDate>Sat, 14 Jul 2018 00:00:00 +0300</pubDate><guid isPermaLink="false">tag:potyarkin.com,2018-07-14:/posts/2018/enhanced-file-path-completion-in-bash-like-in-zsh/</guid><category>posts</category><category>bash</category><category>gist</category></item><item><title>Liberating effect of Ansible</title><link>https://potyarkin.com/posts/2018/liberating-effect-of-ansible/</link><description>&lt;p&gt;Maintaining two or three Linux machines is not that hard of a task. For many
years I have thought it was not worth the effort to automate - regular backups
and version-controlled configuration files seemed to be just enough.&lt;/p&gt;
&lt;p&gt;And then Ansible had blown my mind.&lt;/p&gt;
&lt;h2 id="history"&gt;&lt;a class="toclink" href="#history"&gt;History&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;It all started with …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Vitaly Potyarkin</dc:creator><pubDate>Tue, 26 Jun 2018 00:00:00 +0300</pubDate><guid isPermaLink="false">tag:potyarkin.com,2018-06-26:/posts/2018/liberating-effect-of-ansible/</guid><category>posts</category><category>ansible</category><category>web</category><category>server</category><category>automation</category></item><item><title>Accidental submersion into web development</title><link>https://potyarkin.com/posts/2018/accidental-submersion-into-web-development/</link><description>&lt;h2 id="the-library-problem"&gt;&lt;a class="toclink" href="#the-library-problem"&gt;The Library Problem&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;I love reading books. My wife loves reading books. We enjoy shopping for books
and we live a ten minute commute away from a huge used books store. That means
we have a lot of books. Like, really a lot. A little more than one thousand.&lt;/p&gt;
&lt;p&gt;We …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Vitaly Potyarkin</dc:creator><pubDate>Sat, 16 Jun 2018 00:00:00 +0300</pubDate><guid isPermaLink="false">tag:potyarkin.com,2018-06-16:/posts/2018/accidental-submersion-into-web-development/</guid><category>posts</category><category>python</category><category>web</category><category>HomeLibraryCatalog</category></item><item><title>Excel as a CSV editor (with VBA)</title><link>https://potyarkin.com/posts/2018/excel-as-a-csv-editor-with-vba/</link><description>&lt;p&gt;One might think that Excel is a decent CSV editor as it is, but it's not. It is
a very capable CSV reader, I do not dispute that. When it comes to writing though,
Excel does not match what you'd expect from a mature application:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;It might change the delimiter …&lt;/li&gt;&lt;/ul&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Vitaly Potyarkin</dc:creator><pubDate>Fri, 01 Jun 2018 00:00:00 +0300</pubDate><guid isPermaLink="false">tag:potyarkin.com,2018-06-01:/posts/2018/excel-as-a-csv-editor-with-vba/</guid><category>posts</category><category>excel</category><category>vba</category><category>gist</category></item><item><title>Why software translation is a waste of time</title><link>https://potyarkin.com/posts/2018/why-software-translation-is-a-waste-of-time/</link><description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Disclaimer&lt;/strong&gt;: I am not a professional software developer, and my opinion
might not be as authoritative as yours.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;My native language is not English and since my first encounter with computers I
have used multiple localized and non-localized computer programs. All these
years of &lt;em&gt;"user experience"&lt;/em&gt; have led me to …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Vitaly Potyarkin</dc:creator><pubDate>Thu, 24 May 2018 00:00:00 +0300</pubDate><guid isPermaLink="false">tag:potyarkin.com,2018-05-24:/posts/2018/why-software-translation-is-a-waste-of-time/</guid><category>posts</category><category>l10n</category><category>i18n</category></item><item><title>Unit testing in Power Query M Language</title><link>https://potyarkin.com/posts/2018/unit-testing-in-power-query-m-language/</link><description>&lt;p&gt;As your code base gets bigger,
&lt;a href="https://en.wikipedia.org/wiki/Test_automation"&gt;test automation&lt;/a&gt; becomes more
and more important. This applies to any development platform, including Power
Query / PowerBI. If you reuse your code and improve some low level function
later, test automation allows you to make sure your changes did not break
anything that depends …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Vitaly Potyarkin</dc:creator><pubDate>Sun, 01 Apr 2018 12:00:00 +0300</pubDate><guid isPermaLink="false">tag:potyarkin.com,2018-04-01:/posts/2018/unit-testing-in-power-query-m-language/</guid><category>posts</category><category>m</category><category>power-query</category><category>LibPQ</category></item><item><title>Getting started with LibPQ</title><link>https://potyarkin.com/posts/2018/getting-started-with-libpq/</link><description>&lt;p&gt;This is a step by step guide to getting started with &lt;a href="https://potyarkin.com/posts/2018/expanding-power-query-standard-library-introducing-libpq/"&gt;LibPQ&lt;/a&gt;, an illustrated
version of &lt;a href="https://libpq.ml/#installation-and-usage"&gt;"Installation and usage"&lt;/a&gt; section of the official
documentation.&lt;/p&gt;
&lt;h2 id="installation"&gt;&lt;a class="toclink" href="#installation"&gt;Installation&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="libpq-source-code"&gt;&lt;a class="toclink" href="#libpq-source-code"&gt;LibPQ source code&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;The source code of the library has to be present in each workbook that uses it.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Create a new blank query: &lt;code&gt;Data …&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Vitaly Potyarkin</dc:creator><pubDate>Sun, 01 Apr 2018 00:00:00 +0300</pubDate><guid isPermaLink="false">tag:potyarkin.com,2018-04-01:/posts/2018/getting-started-with-libpq/</guid><category>posts</category><category>m</category><category>power-query</category><category>LibPQ</category></item><item><title>Roads and Bridges - sustaining modern digital infrastructure</title><link>https://potyarkin.com/posts/2018/roads-and-bridges-sustaining-modern-digital-infrastructure/</link><description>&lt;p&gt;This week I have stumbled upon a very thorough review of existing problems and
hidden costs of sustaining modern (open source) digital infrastructure. Here it
is: &lt;a href="https://www.fordfoundation.org/library/reports-and-studies/roads-and-bridges-the-unseen-labor-behind-our-digital-infrastructure/"&gt;Roads and Bridges - The Unseen Labor Behind Our Digital
Infrastructure&lt;/a&gt; by &lt;em&gt;Nadia Eghbal&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;The essay was created with support from the Ford Foundation and …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Vitaly Potyarkin</dc:creator><pubDate>Fri, 23 Feb 2018 00:00:00 +0300</pubDate><guid isPermaLink="false">tag:potyarkin.com,2018-02-23:/posts/2018/roads-and-bridges-sustaining-modern-digital-infrastructure/</guid><category>posts</category><category>bookmarks</category><category>opensource</category></item><item><title>Expanding Power Query standard library - introducing LibPQ</title><link>https://potyarkin.com/posts/2018/expanding-power-query-standard-library-introducing-libpq/</link><description>&lt;p&gt;Power Query formula language (also known as M language) is a very capable yet
not very flexible tool. It lacks some features taken for granted by developers
who are used to other programming languages such as compatibility with version
control systems, extensibility by third-party libraries, etc.&lt;/p&gt;
&lt;p&gt;That is why I …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Vitaly Potyarkin</dc:creator><pubDate>Wed, 03 Jan 2018 00:00:00 +0300</pubDate><guid isPermaLink="false">tag:potyarkin.com,2018-01-03:/posts/2018/expanding-power-query-standard-library-introducing-libpq/</guid><category>posts</category><category>m</category><category>excel</category><category>power-query</category><category>LibPQ</category></item><item><title>Loops in Power Query M language</title><link>https://potyarkin.com/posts/2017/loops-in-power-query-m-language/</link><description>&lt;p&gt;Power Query Formula Language (also known as M language) is sometimes difficult
to get your head around. This article explains how someone familiar with loops
in other programming languages can approach the same concept in M language.&lt;/p&gt;
&lt;p&gt;First of all let's look at the &lt;a href="https://docs.microsoft.com/en-us/powerquery-m/"&gt;definition&lt;/a&gt; given by Microsoft:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The Power …&lt;/p&gt;&lt;/blockquote&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Vitaly Potyarkin</dc:creator><pubDate>Tue, 31 Oct 2017 00:00:00 +0300</pubDate><guid isPermaLink="false">tag:potyarkin.com,2017-10-31:/posts/2017/loops-in-power-query-m-language/</guid><category>posts</category><category>m</category><category>excel</category><category>power-query</category></item><item><title>Temporary virtual environment for Python</title><link>https://potyarkin.com/posts/2017/temporary-virtual-environment-for-python/</link><description>&lt;p&gt;Using Python on Windows does not come as naturally as on Unix-like systems, so
any help is appreciated.&lt;/p&gt;
&lt;p&gt;I wrote a batch script to automate creation, setup and deletion of Python virtual
environment. This can come in handy when you want to test something in a clean env,
or to …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Vitaly Potyarkin</dc:creator><pubDate>Thu, 05 Oct 2017 16:50:00 +0300</pubDate><guid isPermaLink="false">tag:potyarkin.com,2017-10-05:/posts/2017/temporary-virtual-environment-for-python/</guid><category>posts</category><category>windows</category><category>script</category><category>gist</category></item><item><title>Execute the same git subcommand in all local repositories</title><link>https://potyarkin.com/posts/2017/execute-the-same-git-subcommand-in-all-local-repositories/</link><description>&lt;p&gt;If you work with more than one git project simultaneously, you often need to
do the same maintenance tasks in each cloned repository:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;check if there are some changes waiting to be pushed,&lt;/li&gt;
&lt;li&gt;check remote URLs for all repos (e.g. when considering to switch from HTTPS
  authentication with GitHub …&lt;/li&gt;&lt;/ul&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Vitaly Potyarkin</dc:creator><pubDate>Thu, 05 Oct 2017 15:40:00 +0300</pubDate><guid isPermaLink="false">tag:potyarkin.com,2017-10-05:/posts/2017/execute-the-same-git-subcommand-in-all-local-repositories/</guid><category>posts</category><category>bash</category><category>script</category><category>gist</category></item><item><title>Portable development setup for Python on Windows</title><link>https://potyarkin.com/posts/2017/portable-development-setup-for-python-on-windows/</link><description>&lt;h2 id="winpython"&gt;&lt;a class="toclink" href="#winpython"&gt;WinPython&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://winpython.github.io/"&gt;https://winpython.github.io/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;All-in-one distribution which comes with many difficult-to-build packages
preinstalled. And their ...-Zero version is great for thumb drives!&lt;/p&gt;
&lt;p&gt;Pip works just fine, but installing packages that require C compiler is
always a pain on Windows. May be I should look into conda and see if …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Vitaly Potyarkin</dc:creator><pubDate>Wed, 20 Sep 2017 00:00:00 +0300</pubDate><guid isPermaLink="false">tag:potyarkin.com,2017-09-20:/posts/2017/portable-development-setup-for-python-on-windows/</guid><category>posts</category><category>python</category><category>windows</category><category>bookmarks</category></item></channel></rss>