<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Artem Khvastunov</title>
    <link>https://artspb.me/</link>
    <description>Recent content on Artem Khvastunov</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    <lastBuildDate>Wed, 11 Oct 2023 08:49:25 +0200</lastBuildDate><atom:link href="https://artspb.me/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Home Assistant: home appliances</title>
      <link>https://artspb.me/posts/home-assistant-home-appliances/</link>
      <pubDate>Wed, 11 Oct 2023 08:49:25 +0200</pubDate>
      
      <guid>https://artspb.me/posts/home-assistant-home-appliances/</guid>
      <description>One thing that we instantly liked after moving to Germany is that a washing machine can be placed in the basement. Every building we lived in had a laundry room for tenants to put their appliances in. It was natural to have one in our own house, so we had to change the construction plans a bit to accommodate it.
While having Wi-Fi in a washing machine or a drier is a point of controversy, one can find a valid use case.</description>
    </item>
    
    <item>
      <title>Home Assistant: shutters</title>
      <link>https://artspb.me/posts/home-assistant-shutters/</link>
      <pubDate>Thu, 05 Oct 2023 10:42:21 +0200</pubDate>
      
      <guid>https://artspb.me/posts/home-assistant-shutters/</guid>
      <description>As my Twitter poll was inconclusive 😃 (Why do I even use Twitter nowadays?..), I made an executive decision© and went for shutters as the topic for this post. Ultimately, it all started with them, so it kinda makes sense to tell their story first.
Before I begin, there&amp;rsquo;s one thing that confuses me. If you speak German, you just say &amp;ldquo;Rolladen,&amp;rdquo; and everyone understands what you mean. But in English, there are way too many terms: blinds, roller blinds, shutters, roller shutters, shades, you name it.</description>
    </item>
    
    <item>
      <title>Home Assistant setup</title>
      <link>https://artspb.me/posts/home-assistant-setup/</link>
      <pubDate>Mon, 18 Sep 2023 09:13:05 +0200</pubDate>
      
      <guid>https://artspb.me/posts/home-assistant-setup/</guid>
      <description>In the previous post, I scratched the surface of how my smart home looks. Now, I&amp;rsquo;d like to go deeper into details. In this post, I&amp;rsquo;ll tell about my Home Assistant setup and the journey to it. It shouldn&amp;rsquo;t be long, but you can always jump right to the conclusion.
Home Assistant Link to heading Let&amp;rsquo;s start with a definition I took from the official website:
Open source home automation that puts local control and privacy first.</description>
    </item>
    
    <item>
      <title>Starting with Home Assistant</title>
      <link>https://artspb.me/posts/starting-with-home-assistant/</link>
      <pubDate>Wed, 13 Sep 2023 10:01:28 +0200</pubDate>
      
      <guid>https://artspb.me/posts/starting-with-home-assistant/</guid>
      <description>Last summer, we noticed that if we forget to close the shutters, our house gets hot pretty quickly. The temperature in the attic can easily reach 27 °C. The building is new and energy efficient. In winter, it means that it loses its temperature slowly, which is good. In summer, it does the same, which isn&amp;rsquo;t that good as we don&amp;rsquo;t have an active cooler, e.g., an AC. Fortunately, we have electric shutters, so the obvious solution was to automate them.</description>
    </item>
    
    <item>
      <title>git bisect run 0.8</title>
      <link>https://artspb.me/posts/git-bisect-run-0.8/</link>
      <pubDate>Mon, 13 Mar 2023 08:32:21 +0100</pubDate>
      
      <guid>https://artspb.me/posts/git-bisect-run-0.8/</guid>
      <description>Yesterday I released the new version 0.8 of the git bisect run plugin. It contains a few minor bug fixes and a major rework of the Bisect dialog.
Initially, the dialog was heavily inspired by a similar one for Rebase (read: copy-pasted during a hackathon). I don&amp;rsquo;t want to post its picture here, but if you&amp;rsquo;re curious, you can find it in the previous post. Even though the Bisect dialog evolved over time, it still had its old-stylish look.</description>
    </item>
    
    <item>
      <title>How to expire public key with GPG</title>
      <link>https://artspb.me/posts/how-to-expire-public-key-with-gpg/</link>
      <pubDate>Thu, 16 Jun 2022 14:50:31 +0200</pubDate>
      
      <guid>https://artspb.me/posts/how-to-expire-public-key-with-gpg/</guid>
      <description>I have a public OpenPGP key hosted on keybase.io, which is valid for one year. Every year I have the same situation: Gosh, how do I expire a key? Even though the procedure is fairly simple, it takes some time to google all the right pages. This year, I&amp;rsquo;ve decided to document the process. Now, I can also update the page when I find better ways to achieve the result.</description>
    </item>
    
    <item>
      <title>Germering. Could be nicer. Hardly better.</title>
      <link>https://artspb.me/posts/germering-could-be-nicer-hardly-better/</link>
      <pubDate>Sat, 21 May 2022 12:17:19 +0200</pubDate>
      
      <guid>https://artspb.me/posts/germering-could-be-nicer-hardly-better/</guid>
      <description>The city of Germering, where I live, introduced a motto. It translates as &amp;ldquo;Could be nicer. Hardly better.&amp;rdquo; At first glance, it doesn&amp;rsquo;t look inspiring 🙃 But it has some meaning behind it.
Germering was formed out of a few small villages nearby Munich. At the end of World War II, they were heavily bombed. The target was an aircraft factory located not so far away from the modern S-Bahn station.</description>
    </item>
    
    <item>
      <title>Debugging gopls with GoLand</title>
      <link>https://artspb.me/posts/debugging-gopls-with-goland/</link>
      <pubDate>Mon, 13 Sep 2021 16:33:53 +0200</pubDate>
      
      <guid>https://artspb.me/posts/debugging-gopls-with-goland/</guid>
      <description>In the previous issue of learning by observing, I&amp;rsquo;ve described how one can debug the Go compiler. This time, I&amp;rsquo;d like to share with you how one can debug gopls using GoLand.
gopls is a language server protocol implementation for Go. Its source code is available on GitHub. While, typically, debugging a program in GoLand is as easy as a couple of clicks, the problem with gopls is that a) it&amp;rsquo;s launched by an editor b) at an arbitrary moment in time.</description>
    </item>
    
    <item>
      <title>git bisect run 0.7</title>
      <link>https://artspb.me/posts/git-bisect-run-0.7/</link>
      <pubDate>Sat, 05 Dec 2020 16:56:01 +0100</pubDate>
      
      <guid>https://artspb.me/posts/git-bisect-run-0.7/</guid>
      <description>I wanted to find some time to work on the git bisect run plugin for quite a while already. Finally, I was able to dedicate a few days to it. As a result, today, I&amp;rsquo;ve released the biggest update since the plugin&amp;rsquo;s inception. In this post, I want to tell you about the most noticeable changes.
Test results prevail over exit code Link to heading This is probably the most requested feature.</description>
    </item>
    
    <item>
      <title>Corporate Rebels: the Book and the Trends</title>
      <link>https://artspb.me/posts/corporate-rebels-the-book-and-the-trends/</link>
      <pubDate>Sat, 16 May 2020 15:45:41 +0200</pubDate>
      
      <guid>https://artspb.me/posts/corporate-rebels-the-book-and-the-trends/</guid>
      <description>It all started with a post in our internal blog. A colleague shared with us that he has visited a workshop organized by Corporate Rebels. He briefly described who they are and invited every team to try their canvas. I read about them, but they didn&amp;rsquo;t grab my attention back then. Half a year later, another colleague proposed to do the same. I spent some time reading about the canvas again with an identical result.</description>
    </item>
    
    <item>
      <title>Using external SSD as macOS Fusion Drive</title>
      <link>https://artspb.me/posts/using-external-ssd-as-macos-fusion-drive/</link>
      <pubDate>Tue, 14 Apr 2020 10:02:50 +0200</pubDate>
      
      <guid>https://artspb.me/posts/using-external-ssd-as-macos-fusion-drive/</guid>
      <description>I have an iMac. It&amp;rsquo;s a rather old model (late 2013) that I bought 5 years ago. I&amp;rsquo;ve started using it less when I got a work MacBook. Still, it served well for Internet surfing and movies. But over time, it was getting slower and slower. The only problem was the performance of its 1TB HDD. It was huge but terribly sluggish. To make things faster, I decided to go with an external SSD and use it as Fusion Drive.</description>
    </item>
    
    <item>
      <title>Working with TinyGo in GoLand</title>
      <link>https://artspb.me/posts/working-with-tinygo-in-goland/</link>
      <pubDate>Thu, 12 Mar 2020 20:36:00 +0100</pubDate>
      
      <guid>https://artspb.me/posts/working-with-tinygo-in-goland/</guid>
      <description>Update Link to heading Since GoLand 2021.1.2, there&amp;rsquo;s a dedicated TinyGo plugin. Consider using it as it simplifies configuration.
This is what gets born when you meet two smart interns 🙃 https://t.co/plf3kplqkh
&amp;mdash; Artem Khvastunov (@art_spb) June 2, 2021 Original blog post Link to heading I believe that you&amp;rsquo;re here because you already know what GoLand and TinyGo are. In this blog post, I&amp;rsquo;ll show how to work with the latter in the former.</description>
    </item>
    
    <item>
      <title>Debugging Go compiler with GoLand</title>
      <link>https://artspb.me/posts/debugging-go-compiler-with-goland/</link>
      <pubDate>Thu, 29 Aug 2019 17:33:23 +0200</pubDate>
      
      <guid>https://artspb.me/posts/debugging-go-compiler-with-goland/</guid>
      <description>So, it happened to you. You were playing with Go&amp;rsquo;s AST or digging into escape analysis and realized that you need to know why Go compiler does what it does. There are many ways of achieving this: you can enable debugging flags or, for instance, read its source code. However, if these ways didn&amp;rsquo;t work well for you or you&amp;rsquo;re one of those who love to learn by doing, there&amp;rsquo;s one more way.</description>
    </item>
    
    <item>
      <title>Getting started with git bisect run plugin</title>
      <link>https://artspb.me/posts/getting-started-with-git-bisect-run-plugin/</link>
      <pubDate>Thu, 28 Mar 2019 12:04:27 +0100</pubDate>
      
      <guid>https://artspb.me/posts/getting-started-with-git-bisect-run-plugin/</guid>
      <description>This post continues series on git bisect command. Previously, we&amp;rsquo;ve learned how Git helps to find a commit which introduced failing tests. Now, I&amp;rsquo;d like to show how an IDE can simplify a process by hiding complexity behind literally one button. We&amp;rsquo;ll need the same example projects (one, two) we&amp;rsquo;ve used before. A plugin we&amp;rsquo;re going to examine in this post works with any JetBrains&amp;rsquo; IDE (Git plugin has to be enabled, though).</description>
    </item>
    
    <item>
      <title>Automating git-bisect</title>
      <link>https://artspb.me/posts/automating-git-bisect/</link>
      <pubDate>Wed, 27 Mar 2019 14:05:48 +0100</pubDate>
      
      <guid>https://artspb.me/posts/automating-git-bisect/</guid>
      <description>It took me a while to find time for this post. I could tell you a touchy story on how busy I was being a parent and having a full-time job at the same time. However, so many people have all this and still manage to do much more than just writing a single-page blog post. So I better shut up and proceed with the topic.
In the previous post, we&amp;rsquo;ve discussed a way to find a commit which caused tests to fail.</description>
    </item>
    
    <item>
      <title>git-bisect to the rescue</title>
      <link>https://artspb.me/posts/git-bisect-to-the-rescue/</link>
      <pubDate>Sun, 20 Jan 2019 11:09:11 +0100</pubDate>
      
      <guid>https://artspb.me/posts/git-bisect-to-the-rescue/</guid>
      <description>Today I want to tell you about a tool I use occasionally but find extremely useful. I&amp;rsquo;m sure many of you fetch, pull, checkout, commit, and perhaps push using Git on a daily basis. In the same time, I doubt you bisect more or less often. There&amp;rsquo;s even a high chance that you have never heard about this command before. If you&amp;rsquo;re now curious what it is, then you have the right page open.</description>
    </item>
    
    <item>
      <title>Binary search explained</title>
      <link>https://artspb.me/posts/binary-search-explained/</link>
      <pubDate>Sat, 05 Jan 2019 21:37:54 +0100</pubDate>
      
      <guid>https://artspb.me/posts/binary-search-explained/</guid>
      <description>As I mentioned in my welcome post, I&amp;rsquo;m going to write a couple of blogs related to git bisect. The crucial part of this command (which is even hidden in its name) is binary search. I believe that the majority of those who read this text are pretty well aware of what it is and how it works. If you&amp;rsquo;re among them or prefer to read Wiki instead feel free to close this page and return to my blog when I have something more interesting to tell.</description>
    </item>
    
    <item>
      <title>Welcome</title>
      <link>https://artspb.me/posts/welcome/</link>
      <pubDate>Sun, 30 Dec 2018 17:15:01 +0100</pubDate>
      
      <guid>https://artspb.me/posts/welcome/</guid>
      <description>I&amp;rsquo;d like to welcome everyone to my blog. Since quite some time I wanted to experiment with static site generators. I decided to pick Hugo as it&amp;rsquo;s written in Go. I agree that it doesn&amp;rsquo;t sound like a valid reason. On the other hand, as I don&amp;rsquo;t have any experience in this field any solution should work.
Some technical details: the blog is stored on GitHub and hosted on DigitalOcean. I use NGINX as a web server.</description>
    </item>
    
  </channel>
</rss>
