<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:media="http://search.yahoo.com/mrss/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:georss="http://www.georss.org/georss">
  <channel>
    <title>Declaration of VAR</title>
    <link>https://decovar.dev/</link>
    <description>Recent content of Declaration of VAR</description>
    <language>en-us</language>
    <copyright>Declaration of VAR</copyright>
    
    <lastBuildDate>Tue, 11 Nov 2025 21:13:47 +0100</lastBuildDate>
    
    
        <atom:link href="https://decovar.dev/index.xml" rel="self" type="application/rss+xml" />
    
    
    <item>
      <title>C&#43;&#43; library in a .NET/C# project with CMake</title>
      <link>https://decovar.dev/blog/2025/11/11/cpp-library-in-csharp/</link>
      <pubDate>Tue, 11 Nov 2025 21:13:47 +0100</pubDate>
      <guid>https://decovar.dev/blog/2025/11/11/cpp-library-in-csharp/</guid>
      <description><![CDATA[New post: C&#43;&#43; library in a .NET/C# project with CMake]]></description>
      <content:encoded><![CDATA[<p><a href="/blog/2024/02/12/cpp-library-in-android-application/">Last time</a> I needed to use a C++ library in an Android project, and now came a request for the very same C++ library to be used in a .NET/C# project.</p>


    <img class="image-post" loading="lazy" src="/blog/2025/11/11/cpp-library-in-csharp/images/cmake-cpp-csharp.jpg" alt="CMake, C&#43;&#43; and C#">

<p>Good news is that it is possible to handle both C++ and C# targets in a single CMake project, which makes the maintenance much easier: no need to involve a yet another build system, not need to use an IDE - everything can be done with CMake and bare CLI. Bad news is that some things will work only on Windows.</p>]]></content:encoded>
    </item>
    
    <item>
      <title>Distributing iOS applications within a company from a website without App Store</title>
      <link>https://decovar.dev/blog/2025/04/03/distributing-ios-applications-without-app-store/</link>
      <pubDate>Thu, 03 Apr 2025 13:52:24 +0200</pubDate>
      <guid>https://decovar.dev/blog/2025/04/03/distributing-ios-applications-without-app-store/</guid>
      <description><![CDATA[New post: Distributing iOS applications within a company from a website without App Store]]></description>
      <content:encoded><![CDATA[<p>We&rsquo;ve been using <a href="https://appcenter.ms" rel="external">App Center</a> (<em>former HockeyApp, which got <a href="https://devblogs.microsoft.com/appcenter/hockeyapp-is-being-retired/" rel="external">retired</a> and replaced by App Center</em>) for distributing our iOS applications within the company. And when we learned about a year ago that App Center also is going to be <a href="https://learn.microsoft.com/en-us/appcenter/retirement" rel="external">retired</a> on 2025-03-31, we started looking at alternatives. Having found none that would be good enough, we decided to implement our own.</p>


    <img class="image-post" loading="lazy" src="/blog/2025/04/03/distributing-ios-applications-without-app-store/images/installing-ios-application-from-website-blurred.png" alt="Installing an iOS application from a website">

<p>Since we already had a .NET/MVC-based website for distribution-related stuff, we added this functionality there, and that turned out to be a rather trivial task. The .NET/MVC has nothing to do with it really - that&rsquo;s just what we had, and you&rsquo;ll see for yourself that this can be done with any other framework or even with a bare static website.</p>
<p>I should have published this article much earlier before the App Center retirement date, and I was intending too, but I just never found time, sorry about that.</p>]]></content:encoded>
    </item>
    
    <item>
      <title>Home Assistant on Vero V with Docker</title>
      <link>https://decovar.dev/blog/2024/08/16/home-assistant-on-vero-with-docker/</link>
      <pubDate>Fri, 16 Aug 2024 16:49:19 +0200</pubDate>
      <guid>https://decovar.dev/blog/2024/08/16/home-assistant-on-vero-with-docker/</guid>
      <description><![CDATA[New post: Home Assistant on Vero V with Docker]]></description>
      <content:encoded><![CDATA[<p>Eventually I got tired of constantly <a href="/blog/2019/12/26/appletv-kodi-network-share/#install-kodi">re-signing and re-uploading</a> Kodi to my Apple TV (<em>and <a href="/blog/2019/12/26/appletv-kodi-network-share/#updates">being stuck</a> with an old version</em>). So I got a <a href="https://osmc.tv/vero/" rel="external">Vero V</a> instead, and immediately it became clear that I should have done so from the beginning. Buying Apple TV was a mistake: like I <a href="/blog/2019/12/26/appletv-kodi-network-share/#whats-wrong-with-apple-tv">said before</a>, if not for running Kodi, Apple TV is a pretty useless device (<em>especially now that I have a TV that supports <a href="https://apple.com/airplay/" rel="external">AirPlay</a></em>).</p>


    <img class="image-post" loading="lazy" src="/blog/2024/08/16/home-assistant-on-vero-with-docker/images/vero-v-sonoff-zigbee.jpg" alt="Vero V with connected SONOFF Zigbee 3.0 USB Dongle Plus-E">

<p>Around the same time I entered the domain of home automation. At first it was just <a href="https://homely.no" rel="external">Homely</a> (<em>a norwegian home security system</em>), which comes with their own hub and a (<em>not very large</em>) set of supported devices/sensors. But soon enough I discovered that it&rsquo;s all just a <a href="https://en.wikipedia.org/wiki/Zigbee" rel="external">Zigbee</a> network wrapped into a user-friendly package, so I could do more with my own hub and a much wider (<em>and cheaper</em>) collection of devices and sensors. Shortly after that realization I stumbled upon <a href="https://home-assistant.io" rel="external">Home Assistant</a>, as all roads lead to it, and, you guessed it right, I decided to host and run it on that same Vero V device.</p>]]></content:encoded>
    </item>
    
    <item>
      <title>C&#43;&#43; library in an Android application</title>
      <link>https://decovar.dev/blog/2024/02/12/cpp-library-in-android-application/</link>
      <pubDate>Mon, 12 Feb 2024 13:45:43 +0100</pubDate>
      <guid>https://decovar.dev/blog/2024/02/12/cpp-library-in-android-application/</guid>
      <description><![CDATA[New post: C&#43;&#43; library in an Android application]]></description>
      <content:encoded><![CDATA[<p>We have a C++ library, which our customers are using on a variety of platforms. Mainly in desktop applications on Windows, Mac OS and GNU/Linux, but there are also web-applications (<em>for which we compile it into WebAssembly <a href="/blog/2023/11/20/webassembly-with-pthreads/">with Emscripten</a></em>), and now we got a request to make it work in Android applications too (<em>or rather to provide a binding/wrapper</em>).</p>


    <img class="image-post" loading="lazy" src="/blog/2024/02/12/cpp-library-in-android-application/images/loading-cpp-library-in-android.png" alt="Android Studio, loading C&#43;&#43; library">

<p>This particular example will be about a Kotlin-based application. I don&rsquo;t know what would be different in case of a Java-based application, but I suppose that principal things should be more or less the same in both.</p>]]></content:encoded>
    </item>
    
    <item>
      <title>Oracle Cloud is a nasty piece of shit</title>
      <link>https://decovar.dev/blog/2023/12/03/oracle-cloud-nasty-piece-of-shit/</link>
      <pubDate>Sun, 03 Dec 2023 17:29:02 +0100</pubDate>
      <guid>https://decovar.dev/blog/2023/12/03/oracle-cloud-nasty-piece-of-shit/</guid>
      <description><![CDATA[New post: Oracle Cloud is a nasty piece of shit]]></description>
      <content:encoded><![CDATA[<p>I&rsquo;ve been using Oracle Cloud <a href="https://oracle.com/cloud/free/" rel="external">Free Tier</a> (<em>&ldquo;Always Free&rdquo; resources</em>) for 2.5 years (<em>since I <a href="/blog/2021/05/30/new-server-and-remark42-comments/">moved my website</a> from GitHub pages</em>). It was indeed absolutely free of charge, and it was really great while it lasted.</p>


    <img class="image-post" loading="lazy" src="/blog/2023/12/03/oracle-cloud-nasty-piece-of-shit/images/oracle-cloud-planned-outage.png" alt="Oracle Cloud, planned outage">

<p>But two days ago my website suddenly went down along with the server and all the content on it. Without a notice/warning, with no explanation and without a way to restore the data (<em>fortunately, I haven&rsquo;t actually lost any</em>).</p>]]></content:encoded>
    </item>
    
    <item>
      <title>Compiling C&#43;&#43; into WebAssembly with pthreads</title>
      <link>https://decovar.dev/blog/2023/11/20/webassembly-with-pthreads/</link>
      <pubDate>Mon, 20 Nov 2023 14:40:47 +0100</pubDate>
      <guid>https://decovar.dev/blog/2023/11/20/webassembly-with-pthreads/</guid>
      <description><![CDATA[New post: Compiling C&#43;&#43; into WebAssembly with pthreads]]></description>
      <content:encoded><![CDATA[<p>If a C++ program utilizes multithreading via <a href="https://en.wikipedia.org/wiki/Pthreads" rel="external">pthreads</a>, then compiling it with <a href="https://emscripten.org/docs/porting/pthreads.html" rel="external">Emscripten</a> into <a href="https://webassembly.org" rel="external">WebAssembly</a> requires setting certain flags for both compiler and linker. In addition to that, web-server that will be hosting the resulting web-application also requires some configuration.</p>




<figure class="with-original">
    <img class="image-post" loading="lazy" src="/blog/2023/11/20/webassembly-with-pthreads/images/webassembly-with-pthreads.png" alt="Meepo clones dancing on top of the WebAssembly logo with pthreads">
    <footer>
        <small>
            <i><a href="https://deviantart.com/kyurikitg/art/Meepo-the-Geomancer-401539735">original Meepo picture</a></i>
        </small>
    </footer>
</figure>

<p>A couple of years ago I <a href="/blog/2021/08/29/qt-webassembly-custom-opengl/">compiled</a> a Qt-based application into WebAssembly using Emscripten, and I did mention pthreads there too, but it was very briefly and without any details. And as it turned out, there are some interesting moments in there which are worth being documented.</p>]]></content:encoded>
    </item>
    
    <item>
      <title>CMake target_link_libraries() scopes</title>
      <link>https://decovar.dev/blog/2023/07/22/cmake-target-link-libraries-scopes/</link>
      <pubDate>Sat, 22 Jul 2023 14:32:36 +0200</pubDate>
      <guid>https://decovar.dev/blog/2023/07/22/cmake-target-link-libraries-scopes/</guid>
      <description><![CDATA[New post: CMake target_link_libraries() scopes]]></description>
      <content:encoded><![CDATA[<p>The CMake&rsquo;s <a href="https://cmake.org/cmake/help/latest/command/target_link_libraries.html" rel="external">target_link_libraries()</a> function has different <a href="https://cmake.org/cmake/help/latest/manual/cmake-buildsystem.7.html#target-usage-requirements" rel="external">scopes</a> (<em><code>PRIVATE</code>/<code>INTERFACE</code>/<code>PUBLIC</code></em>), and I never understood what exactly each one of them means and how do they actually affect the final result.</p>


    <img class="image-post" loading="lazy" src="/blog/2023/07/22/cmake-target-link-libraries-scopes/images/cmake-linking.png" alt="CMake, linking 3rd-party dependency, your SDK and application">

<p>As there is a limit for how long one can postpone one&rsquo;s ignorance, it finally came a time for me to investigate the matter, which I did by (<em>reading the documentation and</em>) conducting a small experiment of my own.</p>]]></content:encoded>
    </item>
    
    <item>
      <title>Building stuff from sources on Steam Deck</title>
      <link>https://decovar.dev/blog/2023/05/28/steam-deck-building-stuff-from-sources/</link>
      <pubDate>Sun, 28 May 2023 20:46:09 +0200</pubDate>
      <guid>https://decovar.dev/blog/2023/05/28/steam-deck-building-stuff-from-sources/</guid>
      <description><![CDATA[New post: Building stuff from sources on Steam Deck]]></description>
      <content:encoded><![CDATA[<p>My <a href="/blog/2023/04/10/steam-deck/">previous article</a> about Steam Deck has exploded in size, so I decided to move the part about installing packages and building stuff into a separate article.</p>


    <img class="image-post" loading="lazy" src="/blog/2023/05/28/steam-deck-building-stuff-from-sources/images/steam-deck-dock-mouse-keyboard.jpg" alt="Steam Deck, Konsole in Desktop mode and docked with mouse and keyboard">

<p>But it&rsquo;s not just already published parts, there are some new things too: in particular, I&rsquo;ve managed to build Qt (<em>both shared and static configurations</em>) and used it to build my own applications.</p>]]></content:encoded>
    </item>
    
    <item>
      <title>Steam Deck</title>
      <link>https://decovar.dev/blog/2023/04/10/steam-deck/</link>
      <pubDate>Mon, 10 Apr 2023 14:24:31 +0200</pubDate>
      <guid>https://decovar.dev/blog/2023/04/10/steam-deck/</guid>
      <description><![CDATA[New post: Steam Deck]]></description>
      <content:encoded><![CDATA[<p>If you play games (<em>actual games, not <a href="https://files.decovar.dev/public/blog/steam-deck/drake-no-games.mp4" rel="external">press-X-to-win blurry movies</a></em>), then undoubtly you have heard about <a href="https://steamdeck.com/" rel="external">Steam Deck</a>. Otherwise you can probably better just go watch some more of your favorite titles on PS/Xbox/Switch/whatsthename instead of reading this wall of text.</p>


    <img class="image-post" loading="lazy" src="/blog/2023/04/10/steam-deck/images/steam-deck-space-rangers-screenshot.jpg" alt="Steam Deck, Космические рейнджеры">

<p>Yes, I&rsquo;ve got my very own Steam Deck too. And as many have already said, it does exceed all the expectations (<em>and then some</em>).</p>]]></content:encoded>
    </item>
    
    <item>
      <title>Норвежское гражданство</title>
      <link>https://decovar.dev/blog/2023/01/15/norway-citizenship/</link>
      <pubDate>Sun, 15 Jan 2023 18:22:10 +0100</pubDate>
      <guid>https://decovar.dev/blog/2023/01/15/norway-citizenship/</guid>
      <description><![CDATA[New post: Норвежское гражданство]]></description>
      <content:encoded><![CDATA[<p>Наконец-то получил гражданство Норвегии (<em>Королевства Норвегия!</em>).</p>


    <img class="image-post" loading="lazy" src="/blog/2023/01/15/norway-citizenship/images/norwegian-and-russian-passports.jpg" alt="Норвежский и русский паспорта">

<p>Шёл я к этому достаточно долго, и было это не очень просто. Но самой сложной частью было найти работу в Норвегии, чтобы выехать из России; а после переезда в Норвегию процесс становления гражданином протекал, можно сказать, в автоматическом режиме, потому что от меня самого требовалось довольно немного, и мало что (<em>если вообще хоть что-то</em>) могло пойти не так.</p>]]></content:encoded>
    </item>
    
    <item>
      <title>Qt на микроконтроллерах</title>
      <link>https://decovar.dev/blog/2022/12/24/qt-on-mcu-ru/</link>
      <pubDate>Sat, 24 Dec 2022 17:21:20 +0100</pubDate>
      <guid>https://decovar.dev/blog/2022/12/24/qt-on-mcu-ru/</guid>
      <description><![CDATA[New post: Qt на микроконтроллерах]]></description>
      <content:encoded><![CDATA[<p>Эта статья создавалась как перевод <a href="https://blog.qt.io/blog/2018/05/03/qt-microncontrollers-mcu/" rel="external">поста</a> (<em>который почему-то больше не доступен</em>) из блога The Qt Company для публикации на <a href="https://habr.com/" rel="external">Хабре</a>. Но НЛО сказало, что статья рекламная, и опубликовать не дало.</p>
<img class="image-post" src="/blog/2022/12/24/qt-on-mcu/images/qt-on-mcu.jpg" alt="Qt on MCU">
<p>Я бы не сказал, что это рекламная статья, хотя в ней действительно есть ссылки вида &ldquo;свяжитесь с нашими консультантами&rdquo; и там и сям упоминается коммерческая лицензия. Как бы то ни было, на Хабре статья так и не вышла, но вот теперь спустя четыре года (<em>лучше поздно, чем никогда</em>) выходит здесь.</p>
<p>This article <a href="/blog/2022/12/24/qt-on-mcu/">in english</a> 🇺🇸.</p>]]></content:encoded>
    </item>
    
    <item>
      <title>Qt on MCU</title>
      <link>https://decovar.dev/blog/2022/12/24/qt-on-mcu/</link>
      <pubDate>Sat, 24 Dec 2022 17:21:19 +0100</pubDate>
      <guid>https://decovar.dev/blog/2022/12/24/qt-on-mcu/</guid>
      <description><![CDATA[New post: Qt on MCU]]></description>
      <content:encoded><![CDATA[<p>On the 2018-05-03 there was a post published in The Qt Company blog: &ldquo;<a href="https://blog.qt.io/blog/2018/05/03/qt-microncontrollers-mcu/" rel="external">Qt on Microcontrollers</a>&rdquo;. It was about the first PoC of Qt running on several selected MCUs. I say &ldquo;was&rdquo;, because for unknown reasons that post is no longer available in the Qt blog.</p>


    <img class="image-post" loading="lazy" src="/blog/2022/12/24/qt-on-mcu/images/qt-on-mcu.jpg" alt="Qt on MCU">

<p>All the work on that PoC was single-handedly done by <a href="https://linkedin.com/in/msvetkin" rel="external">Mikhail Svetkin</a>, who was an embedded software developer in The Qt Company back at the time, and looks like the post was taken down at some point after he left the company (<em>Internet Archive has the last snapshot on <a href="http://web.archive.org/web/20190502214913/https://blog.qt.io/blog/2018/05/03/qt-microncontrollers-mcu/" rel="external">2019-05-02</a></em>). Perhaps the new project owner didn&rsquo;t like something about that article?</p>
<p>Anyway, I thought I&rsquo;ll resurrect the post and publish it here for the history. Everything below is published almost as it was in the original post in the Qt blog.</p>
<p>Эта статья <a href="/blog/2022/12/24/qt-on-mcu-ru/">на русском</a> 🇷🇺.</p>]]></content:encoded>
    </item>
    
    <item>
      <title>Managing dependencies in a C&#43;&#43; project with vcpkg</title>
      <link>https://decovar.dev/blog/2022/10/30/cpp-dependencies-with-vcpkg/</link>
      <pubDate>Sun, 30 Oct 2022 16:09:08 +0200</pubDate>
      <guid>https://decovar.dev/blog/2022/10/30/cpp-dependencies-with-vcpkg/</guid>
      <description><![CDATA[New post: Managing dependencies in a C&#43;&#43; project with vcpkg]]></description>
      <content:encoded><![CDATA[<p>More than half a year ago I was <a href="/blog/2022/02/06/cpp-dependencies-with-conan/">trying out Conan</a> package manager for resolving dependencies in our C++ project. The research went well, but we never actually proceeded with switching to Conan for the whole project. And then a couple of weeks ago I started looking into <a href="https://vcpkg.io/" rel="external">vcpkg</a>.</p>


    <img class="image-post" loading="lazy" src="/blog/2022/10/30/cpp-dependencies-with-vcpkg/images/vcpkg.png" alt="vcpkg logo">

<p>I&rsquo;ve heard about vcpkg before and even tried to make a vcpkg package for one library a couple of years ago, but back then I didn&rsquo;t find documentation for this (<em>as I now understand, that&rsquo;s because one does not really create a &ldquo;package&rdquo;</em>) and abandonned the task. I never thought I&rsquo;ll be looking at vcpkg again, but recently I discovered that some teams have been switching from Conan to vcpkg, which sounded intriguing and promising, as we still needed a package manager for our projects.</p>]]></content:encoded>
    </item>
    
    <item>
      <title>Visitors analytics with Microsoft Graph</title>
      <link>https://decovar.dev/blog/2022/08/15/visitors-analytics-with-microsoft-graph/</link>
      <pubDate>Mon, 15 Aug 2022 15:50:40 +0200</pubDate>
      <guid>https://decovar.dev/blog/2022/08/15/visitors-analytics-with-microsoft-graph/</guid>
      <description><![CDATA[New post: Visitors analytics with Microsoft Graph]]></description>
      <content:encoded><![CDATA[<p>Our company uses Office 365 and <a href="https://azure.microsoft.com/en-us/services/active-directory/" rel="external">Azure Active Directory</a>, which allows us to rely on <a href="https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-saml-protocol-reference" rel="external">SAML SSO</a> for authenticating company users on our websites. At some point we got curious about what kind of users visit our websites - not quantities but kind of &ldquo;corporate demographics&rdquo;: what is their team/department name, their role/job title, their manager, country where their office is and so on.</p>


    <img class="image-post" loading="lazy" src="/blog/2022/08/15/visitors-analytics-with-microsoft-graph/images/microsoft-graph-charts.png" alt="Microsoft Graph and charts">

<p>We don&rsquo;t collect any of this data on our websites (<em>we probably could, at least on those where we control the authentication process, but we don&rsquo;t</em>). The only piece of information that we do have about our visitors (<em>aside from IP-addresses in web-servers access logs</em>) is their e-mails and GUIDs, thanks to SAML SSO. That might not seem like much, but knowing just the e-mails (<em>or GUIDs</em>) is actually quite enough, as one can use <a href="https://docs.microsoft.com/en-us/graph/overview" rel="external">Microsoft Graph</a> to query more data using those. And for the actual analytics purposes that data can then be visualized/presented using <a href="https://matplotlib.org" rel="external">Matplotlib</a> charts.</p>]]></content:encoded>
    </item>
    
    <item>
      <title>LDAP authentication in ASP.NET Core MVC</title>
      <link>https://decovar.dev/blog/2022/06/16/dotnet-ldap-authentication/</link>
      <pubDate>Thu, 16 Jun 2022 10:46:05 +0200</pubDate>
      <guid>https://decovar.dev/blog/2022/06/16/dotnet-ldap-authentication/</guid>
      <description><![CDATA[New post: LDAP authentication in ASP.NET Core MVC]]></description>
      <content:encoded><![CDATA[<p>We needed to make a (<em>yet another</em>) internal portal/website for employees, but this time, as that would be an internal resource, we decided to utilize users accounts data provided via <a href="https://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol" rel="external">LDAP</a> by our office&rsquo;s <a href="https://en.wikipedia.org/wiki/Active_Directory" rel="external">Active Directory</a>, instead of (<em>yet again</em>) implementing &ldquo;local&rdquo; user identities like we did before with <a href="/blog/2018/03/20/csharp-dotnet-core-identity-mysql/">MySQL</a> and <a href="/blog/2020/10/17/dotnet-core-identity-postgresql/">PostgreSQL</a>.</p>


    <img class="image-post" loading="lazy" src="/blog/2022/06/16/dotnet-ldap-authentication/images/dotnet-core-ldap.png" alt=".NET Core LDAP">

<p>(<em>Of course</em>) we chose <a href="https://dotnet.microsoft.com/en-us/apps/aspnet" rel="external">ASP.NET Core</a> MVC for making the portal. And as both ASP.NET and Active Directory have been around for a while, and given the fact that both come from the same vendor, one would expect that implementing Active Directory users authentication via LDAP in such a setup to be a well-known topic with detailed documentation, examples and a lot of tutorials available. But as fucking usual, it&rsquo;s not quite like that.</p>]]></content:encoded>
    </item>
    
  </channel>
</rss>
