<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Блог on &gt; ~ biozz</title>
    <link>https://biozz.dev/blog/</link>
    <description>Recent content in Блог on &gt; ~ biozz</description>
    <generator>Hugo</generator>
    <language>ru-RU</language>
    <managingEditor>ielfimov@gmail.com (Ivan Elfimov)</managingEditor>
    <webMaster>ielfimov@gmail.com (Ivan Elfimov)</webMaster>
    <lastBuildDate>Sat, 27 Sep 2025 11:00:00 +0300</lastBuildDate>
    <atom:link href="https://biozz.dev/blog/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Контент должен быть простым</title>
      <link>https://biozz.dev/blog/content-should-be-easy/</link>
      <pubDate>Sat, 27 Sep 2025 11:00:00 +0300</pubDate><author>ielfimov@gmail.com (Ivan Elfimov)</author>
      <guid>https://biozz.dev/blog/content-should-be-easy/</guid>
      <description>&lt;p&gt;В последнее время я все чаще задумываюсь о том, что контент нужно создавать именно в том формате, который удобен самому автору. Эта мысль стала как никогда актуальной с появлением LLM. Например, недавно я решил посмотреть, как устроен мой блог и вспомнил, как однажды сделал его мультиязычным. Тогда я серьезно заморочился: выбрал основной язык блога, продумал систему переводов на другие языки, полностью переписал и оптимизировал конфиги Hugo. В итоге получилось здорово: сайт на первый взгляд казался англоязычным, но на уровне отдельных постов часто встречалась смесь языков.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Я заблудлися, но помню, где был</title>
      <link>https://biozz.dev/blog/geo-retrospective/</link>
      <pubDate>Tue, 16 Jul 2024 11:00:00 +0300</pubDate><author>ielfimov@gmail.com (Ivan Elfimov)</author>
      <guid>https://biozz.dev/blog/geo-retrospective/</guid>
      <description>&lt;p&gt;В 2005 году я заблудился на соревновании по спортивному ориентированию. Я «прицепился» за опытного ориентировщика и в какой-то момент выдохся. Я понял, что не уследил за азимутом. Когда теряешься, говорят, что чувствуешь себя пятном на карте, потому что не можешь поставить точку в конкретное место. Лощинки все похожи, ямки не в тех местах, просек, дорог и водоёмов не видать.&lt;/p&gt;&#xA;&lt;p&gt;Примерно 30 минут я плутал по лесу в поисках ориентиров. Затем я вышел на странную поляну. На этой поляне явно кто-то отдыхал, но не совсем обычно. На ветки кустов были надеты бутылки и пластиковые пакеты. Вокруг кострища было довольно много мусора. Я ещё больше испугался. А вдруг они сейчас вернутся?&lt;/p&gt;</description>
    </item>
    <item>
      <title>Typifications of people are pointless</title>
      <link>https://biozz.dev/blog/pointless-typifications/</link>
      <pubDate>Sun, 17 Mar 2024 14:30:00 +0300</pubDate><author>ielfimov@gmail.com (Ivan Elfimov)</author>
      <guid>https://biozz.dev/blog/pointless-typifications/</guid>
      <description>&lt;p&gt;From MBTI to Astrological Zodiacs, from Jungian archetypes to Tarot cards, from Socinics/OCEAN/RIASEC/FIRO-B to Doshas/Numerology/Colors/Animals. People come up with typifications of people all the time. That is, they come up with abstractions. And we already know from Joel Spolsky that all non-trivial abstractions are &amp;ldquo;leaky&amp;rdquo;, their rules stop working under certain conditions. Why then do we keep inventing and using typifications?&lt;/p&gt;&#xA;&lt;p&gt;Because typifications help us make a little more comprehensible chaos out of total chaos. Typifications help us to take a break, to catch our breath when there seems to be no order to things. Typifications make us look at the situation from a different perspective. In the context of a team development, typifications help us better understand the team&amp;rsquo;s potential strengths and weaknesses.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Saving pixels in NeoVim</title>
      <link>https://biozz.dev/blog/neovim-pixels/</link>
      <pubDate>Sat, 16 Mar 2024 20:00:00 +0300</pubDate><author>ielfimov@gmail.com (Ivan Elfimov)</author>
      <guid>https://biozz.dev/blog/neovim-pixels/</guid>
      <description>&lt;p&gt;I am probably at that point where I am happy about how my NeoVim looks (not really). The motivation for this post came from the discovery of &lt;a href=&#34;https://github.com/vimpostor/vim-tpipeline&#34;&gt;vimpostor/vim-tpipeline&lt;/a&gt;. I remember how I switched to &lt;code&gt;vim.opt.cmdheight = 0&lt;/code&gt; as soon as it was &lt;a href=&#34;https://github.com/neovim/neovim/pull/16251&#34;&gt;merged&lt;/a&gt; into &lt;code&gt;master&lt;/code&gt; on Jun 13, 2022. It was quite buggy at first and almost didn&amp;rsquo;t work properly. You had those annoying &lt;code&gt;Press ENTER or type command to continue&lt;/code&gt; prompts. After a couple of months &lt;a href=&#34;https://github.com/folke/noice.nvim&#34;&gt;folke/noice&lt;/a&gt; was &lt;a href=&#34;https://www.reddit.com/r/neovim/comments/xujxos/noicenvim_highly_experimental_plugin_that/&#34;&gt;announced&lt;/a&gt; and that&amp;rsquo;s when &lt;code&gt;cmdheight=0&lt;/code&gt; became usable. Becuase &lt;code&gt;noice&lt;/code&gt; has cmd line feature which also hides command line and moves it to the popup.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Дневник тимлида: завершение главы</title>
      <link>https://biozz.dev/blog/teamlead-2/</link>
      <pubDate>Sun, 03 Mar 2024 22:07:18 +0300</pubDate><author>ielfimov@gmail.com (Ivan Elfimov)</author>
      <guid>https://biozz.dev/blog/teamlead-2/</guid>
      <description>&lt;p&gt;Спустя почти пять лет после поста &lt;a href=&#34;https://biozz.dev/blog/teamlead-1&#34;&gt;Дневник тимлида: начало&lt;/a&gt; и ни одного поста в этом дневнике с тех пор, я пишу второй и, возможно, последний в нем. Получилось так, что я стал деврелом (DevRel/Developer Advocate/Developer Evangelist, как удобно, я не парюсь по вариациям этих названий).&lt;/p&gt;&#xA;&lt;p&gt;Островок сильно поменялся за 5 лет, постепенно пропадает дух стартапа. А кто-то скажет, что его уже давно нет. Вместе с этим компания сильно выросла, появилось множество новых и интересных задач. И уникальная возможность поучаствовать в масштабировании сервисов и инфраструктуры.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Django still rocks</title>
      <link>https://biozz.dev/blog/django-still-rocks/</link>
      <pubDate>Wed, 14 Feb 2024 20:48:32 +0300</pubDate><author>ielfimov@gmail.com (Ivan Elfimov)</author>
      <guid>https://biozz.dev/blog/django-still-rocks/</guid>
      <description>&lt;p&gt;I have recently been trying to do the things I usually do in Go but with Python, after finding out about &lt;a href=&#34;https://pocketbase.io/&#34;&gt;Pocketbase&lt;/a&gt;. Pocketbase is actually really cool, because it has models with migrations, API and realtime interfaces, while also having a couple of SDKs. There is nothing like that in Python &amp;hellip;except there is Django!&lt;/p&gt;&#xA;&lt;p&gt;If you look at &lt;a href=&#34;https://fastapi.tiangolo.com/&#34;&gt;FastAPI&lt;/a&gt; and &lt;a href=&#34;https://github.com/tiangolo/full-stack-fastapi-postgresql&#34;&gt;tiangolo/full-stack-fastapi-postgresql&lt;/a&gt; you would probably get lost in the amount of docker and docker-compose files. The same goes for all the other popular Python non-full-stack frameworks, that try to add full-stack features to them (e.g. &lt;a href=&#34;https://github.com/litestar-org/litestar-fullstack&#34;&gt;litestar-fullstack&lt;/a&gt;).&lt;/p&gt;</description>
    </item>
    <item>
      <title>WeeChat setup</title>
      <link>https://biozz.dev/blog/weechat-setup/</link>
      <pubDate>Sun, 07 Jan 2024 00:28:51 +0300</pubDate><author>ielfimov@gmail.com (Ivan Elfimov)</author>
      <guid>https://biozz.dev/blog/weechat-setup/</guid>
      <description>&lt;p&gt;I&amp;rsquo;m a fan of TUI (text user interface) apps. Currently, I&amp;rsquo;m writing this blog post in NeoVim and have a nice file tree open on the side. I would likely use NeoVim for all my tasks, just like Emacs users do. However, there isn&amp;rsquo;t a decent IRC plugin for NeoVim, so I resort to standalone terminal IRC clients instead.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://weechat.org/&#34;&gt;WeeChat&lt;/a&gt; looked the most appealing due to its &lt;a href=&#34;https://github.com/wee-slack/wee-slack&#34;&gt;wee-slack&lt;/a&gt; plugin. However, I will discuss plugins in more detail in a future post. In this one, I&amp;rsquo;d like to focus on installation and setup to keep everything on one page for you and future me to avoid looking throughout the internet.&lt;/p&gt;</description>
    </item>
    <item>
      <title>NeoVim Telescope Keymap Mnemonic</title>
      <link>https://biozz.dev/blog/telescope-keymap-mnemonics/</link>
      <pubDate>Thu, 07 Dec 2023 20:57:16 +0300</pubDate><author>ielfimov@gmail.com (Ivan Elfimov)</author>
      <guid>https://biozz.dev/blog/telescope-keymap-mnemonics/</guid>
      <description>&lt;p&gt;I developed a kind of mnemonic to use Telescope efficiently. It is very simple and has just one principle: &lt;code&gt;a&lt;/code&gt; is for &lt;code&gt;all&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Let&amp;rsquo;s look at the example of &amp;ldquo;Live Grep&amp;rdquo; search.&lt;/p&gt;&#xA;&lt;p&gt;I have a Django project, which is quite big (more than 500k LOC). Sometimes it is hard to find things, even though we follow a set of rules for objects and function names. In order to reduce the amount things, which show up in the output, I use &lt;code&gt;.rgignore&lt;/code&gt; config to exclude some of the files. I found useful to exclude two things: &lt;code&gt;**/migrations/*&lt;/code&gt; and &lt;code&gt;urls.py&lt;/code&gt;. That&amp;rsquo;s because we have hundreds of migrations and search results are usually polluted with them. We also have docstrings for each endpoint which contain the full URL of the view, that&amp;rsquo;s why I don&amp;rsquo;t want &lt;code&gt;urls.py&lt;/code&gt; files in the search results.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Plugins from Trixy NeoVim distro</title>
      <link>https://biozz.dev/blog/neovim-trixy/</link>
      <pubDate>Sun, 17 Sep 2023 23:54:47 +0300</pubDate><author>ielfimov@gmail.com (Ivan Elfimov)</author>
      <guid>https://biozz.dev/blog/neovim-trixy/</guid>
      <description>&lt;p&gt;It has been a couple of months since I stumbled onto &lt;a href=&#34;https://www.reddit.com/r/neovim/comments/15gw2pk/trixy_simple_yet_powerful_neovim_distro/&#34;&gt;Trixy&lt;/a&gt; NeoVim distro. I actually don&amp;rsquo;t think it is a full fledged distro, like &lt;a href=&#34;https://github.com/NvChad/NvChad&#34;&gt;NvChad&lt;/a&gt; or &lt;a href=&#34;https://github.com/LazyVim/LazyVim&#34;&gt;LazyVim&lt;/a&gt;. It is more of a set of plugins well put together.&lt;/p&gt;&#xA;&lt;p&gt;So in this post I want to highlight some of the plugins I borrowed from this build and really enjoyed using so far.&lt;/p&gt;&#xA;&lt;h2 id=&#34;hlchunk&#34;&gt;&lt;a href=&#34;https://github.com/shellRaining/hlchunk.nvim&#34;&gt;hlchunk&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;This is a really fast plugin that highlights blocks of code. And it also look really good.&lt;/p&gt;</description>
    </item>
    <item>
      <title>NeoVim and Keyboard Layouts</title>
      <link>https://biozz.dev/blog/neovim-keyboard-layouts/</link>
      <pubDate>Mon, 04 Sep 2023 11:08:06 +0300</pubDate><author>ielfimov@gmail.com (Ivan Elfimov)</author>
      <guid>https://biozz.dev/blog/neovim-keyboard-layouts/</guid>
      <description>&lt;p&gt;It is strange how English became defacto for all computer things. Or maybe not so strange. Regardless, the real life scenario for a lot of people is using two or more keyboard layouts at the same time. And I am one of those as well. This is my summary of &amp;ldquo;A State of Layouts&amp;rdquo; in (Neo)Vim ecosystem.&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-nothing-approach&#34;&gt;The Nothing approach&lt;/h2&gt;&#xA;&lt;p&gt;First of all, you don&amp;rsquo;t have to do anything special. If you want to switch the layout, you switch it manually when necessary. Most of vimmers I know don&amp;rsquo;t bother. I guess I only have one tip in that case: use one-key switching, ex. bind &lt;code&gt;CapsLock&lt;/code&gt; in your system input settings.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Treat everything the same way you treat ChatGPT</title>
      <link>https://biozz.dev/blog/treat-like-chatgpt/</link>
      <pubDate>Sun, 06 Aug 2023 13:29:17 +0300</pubDate><author>ielfimov@gmail.com (Ivan Elfimov)</author>
      <guid>https://biozz.dev/blog/treat-like-chatgpt/</guid>
      <description>&lt;p&gt;If you are reading this, then you have probably used ChatGPT. And you&amp;rsquo;ve probably been in a situation where you didn&amp;rsquo;t like the way it reacted. Try to remember how you felt when ChatGPT started to hallucinate. Were you angry? Was it funny? Did you manage to make sense of your original question?&lt;/p&gt;&#xA;&lt;p&gt;I&amp;rsquo;m pretty sure you didn&amp;rsquo;t feel angry or disappointed by ChatGPT&amp;rsquo;s responses. You probably expected this behaviour. A quick smile, a quiet sigh, moving on.&lt;/p&gt;</description>
    </item>
    <item>
      <title>New NeoVim plugin - mini.clue</title>
      <link>https://biozz.dev/blog/new-plugin-mini-clue/</link>
      <pubDate>Fri, 04 Aug 2023 00:00:00 +0300</pubDate><author>ielfimov@gmail.com (Ivan Elfimov)</author>
      <guid>https://biozz.dev/blog/new-plugin-mini-clue/</guid>
      <description>&lt;p&gt;First of all, &lt;a href=&#34;https://github.com/echasnovski/mini.nvim&#34;&gt;&lt;code&gt;mini.nvim&lt;/code&gt;&lt;/a&gt; is awesome. I am gradually switching to them and one of the latest additions is &lt;a href=&#34;https://github.com/echasnovski/mini.nvim/blob/main/readmes/mini-clue.md&#34;&gt;&lt;code&gt;mini.clue&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;When you add lots of functionality to your config you can be lost in key mappings. This is where this plugin comes in handy. There are a couple of alternatives out there:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/folke/which-key.nvim&#34;&gt;folke/which-key.nvim&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/anuvyklack/hydra.nvim&#34;&gt;anuvyklack/hydra.nvim&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;They all do great job, but I feel like &lt;code&gt;mini.nvim&lt;/code&gt; is going to conquer the most used plugins becuase of its philosophy. I bet ultimately they are going to make their own mini NeoVim distro.&lt;/p&gt;</description>
    </item>
    <item>
      <title>NeoVim Telescope Lag</title>
      <link>https://biozz.dev/blog/neovim-telescope-lag/</link>
      <pubDate>Wed, 02 Aug 2023 00:00:00 +0300</pubDate><author>ielfimov@gmail.com (Ivan Elfimov)</author>
      <guid>https://biozz.dev/blog/neovim-telescope-lag/</guid>
      <description>&lt;p&gt;Today I hit a sudden lag when using Live Grep in Telescope. You think this is impossible, but 5s spikes of 100% RAM and CPU usage on my M1 16G MacBook Air says otherwise.&lt;/p&gt;&#xA;&lt;p&gt;I have &lt;code&gt;ripgrep&lt;/code&gt; installed and I checked &lt;code&gt;htop&lt;/code&gt; and it turned out, that lag comes from NeoVim and not from &lt;code&gt;ripgrep&lt;/code&gt;. Also running &lt;code&gt;rg&lt;/code&gt; from the command line is still very fast on the same query.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Not so obvious NeoVim key mappings</title>
      <link>https://biozz.dev/blog/not-obvious-vim-mappings/</link>
      <pubDate>Fri, 21 Jul 2023 00:00:00 +0300</pubDate><author>ielfimov@gmail.com (Ivan Elfimov)</author>
      <guid>https://biozz.dev/blog/not-obvious-vim-mappings/</guid>
      <description>&lt;p&gt;One of the new hot posts on Reddit caught my attention recently: &lt;a href=&#34;https://www.reddit.com/r/neovim/comments/14haci9/your_favorite_mappings_for_cr_bs_tab_in_normal/&#34;&gt;Your favorite mappings for CR, BS, TAB in normal mode?&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Here is what I had in my config at that time:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;&amp;lt;CR&amp;gt;&lt;/code&gt; - nothing&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;&amp;lt;BS&amp;gt;&lt;/code&gt; - nothing&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;&amp;lt;TAB&amp;gt;&lt;/code&gt; - cycle through buffers (in normal mode)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;The first suggestion in the thread was about &lt;code&gt;ciw&lt;/code&gt;, but that seemed not usable at all. Then I remembered a screencast from some time ago (I can&amp;rsquo;t find the source) but the guy used some key combination to visually select the body of the function. At first I thought it was a convenience mapping involving jumping to opened/closed parens. But it turned out, that you can use &lt;code&gt;incremental_selection&lt;/code&gt; from &lt;a href=&#34;https://github.com/nvim-treesitter/nvim-treesitter&#34;&gt;nvim-treesitter&lt;/a&gt; to acheive that. And I also found another &lt;a href=&#34;https://www.reddit.com/r/neovim/comments/10c5pvw/useful_cr_map_for_normal_mode/&#34;&gt;simillar discussion&lt;/a&gt; about that.&lt;/p&gt;</description>
    </item>
    <item>
      <title>New series: NeoVim config</title>
      <link>https://biozz.dev/blog/new-series-neovim-config/</link>
      <pubDate>Thu, 20 Jul 2023 11:45:27 +0300</pubDate><author>ielfimov@gmail.com (Ivan Elfimov)</author>
      <guid>https://biozz.dev/blog/new-series-neovim-config/</guid>
      <description>&lt;p&gt;I reallised that I spend quite a lot of time on &lt;a href=&#34;https://www.reddit.com/r/neovim&#34;&gt;NeoVim&amp;rsquo;s subreddit&lt;/a&gt; and that it is a constant source of inspiration on how to improve my config and try something new.&#xA;I am constantly tweaking my config, adding things and trying to break some of the muscle memory I have developed over the years. And I want to share my experiences with the world and my future self.&lt;/p&gt;&#xA;&lt;p&gt;So I am starting a new series - NeoVim Config.&lt;/p&gt;</description>
    </item>
    <item>
      <title>opensearch.xml in 2023</title>
      <link>https://biozz.dev/blog/opensearch-xml-in-2023/</link>
      <pubDate>Mon, 10 Jul 2023 22:25:55 +0300</pubDate><author>ielfimov@gmail.com (Ivan Elfimov)</author>
      <guid>https://biozz.dev/blog/opensearch-xml-in-2023/</guid>
      <description>&lt;p&gt;I am working on a tool which optimizes my workflow accessing various web resources. It is a combination of two things you probably already know about.&lt;/p&gt;&#xA;&lt;p&gt;The first one is custom &lt;strong&gt;search engines&lt;/strong&gt;. The simpliest form is &lt;code&gt;https://google.com/?q=%s&lt;/code&gt;. &lt;code&gt;%s&lt;/code&gt; is a placeholder which can be replaced by your search query. Then you are redirected to a search results page. The second one is &lt;strong&gt;aliases&lt;/strong&gt;, when you can have some page aliased to a short word or even a letter, say. &lt;code&gt;https://google.com/&lt;/code&gt; becomes &lt;code&gt;g&lt;/code&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ansible для начинающих</title>
      <link>https://biozz.dev/blog/ansible-tutorial/</link>
      <pubDate>Sun, 02 Jul 2023 21:23:05 +0300</pubDate><author>ielfimov@gmail.com (Ivan Elfimov)</author>
      <guid>https://biozz.dev/blog/ansible-tutorial/</guid>
      <description>&lt;p&gt;Внезапный &lt;a href=&#34;https://news.ycombinator.com/item?id=36528984&#34;&gt;тренд&lt;/a&gt; &lt;a href=&#34;https://rust-lang.github.io/mdBook/&#34;&gt;mdBook&lt;/a&gt; стал поводом для релиза моего старого незавршенного проекта про обучение Ansible - &lt;a href=&#34;https://ansible.biozz.dev/&#34;&gt;Ansible для начинающих&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;На полпути переноса из заметок в mdBook, как обычно, стал думать, а есть ли альтернативы лучше. Идеальным вариантом для меня был бы &lt;a href=&#34;https://gohugo.io/&#34;&gt;Hugo&lt;/a&gt;, потому что biozz.dev на нем и он вполне всем устраивает. Но не для написания онлайн-книг. Как оказалось, нормальной темы, кроме &lt;a href=&#34;https://github.com/alex-shpak/hugo-book&#34;&gt;hugo-book&lt;/a&gt; попросту нет. А в hugo-book нет прикольных фичей, которые меня сразили в mdBook: &amp;ldquo;перелистывание&amp;rdquo; страниц и нумерация глав. Под &amp;ldquo;перелистыванием&amp;rdquo; я понимаю ссылки на следующую страницу.&lt;/p&gt;</description>
    </item>
    <item>
      <title>S3 Access Policies and MinIO client</title>
      <link>https://biozz.dev/blog/s3-access-minio-client/</link>
      <pubDate>Wed, 28 Jun 2023 15:00:00 +0300</pubDate><author>ielfimov@gmail.com (Ivan Elfimov)</author>
      <guid>https://biozz.dev/blog/s3-access-minio-client/</guid>
      <description>&lt;p&gt;When you want to use your MinIO S3 server as a makeshift CDN, as I talked about in the &lt;a href=&#34;https://biozz.dev/blog/back-to-telegraf&#34;&gt;previous post&lt;/a&gt;, you have to make sure you setup your Access Policies properly.&lt;/p&gt;&#xA;&lt;p&gt;If you do what people say on the internet and set &lt;code&gt;mc anonymous policy set download&lt;/code&gt; you are in big trouble, because:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;it shows your bucket files listing&lt;/li&gt;&#xA;&lt;li&gt;allows files modification, deletion and upload&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;How I know that? Yeah, accidentally removing a bunch of files makes you think about stuff&amp;hellip; Good thing I had my backups in place.&lt;/p&gt;</description>
    </item>
    <item>
      <title>More Telegraf</title>
      <link>https://biozz.dev/blog/more-telegraf/</link>
      <pubDate>Mon, 26 Jun 2023 15:00:00 +0300</pubDate><author>ielfimov@gmail.com (Ivan Elfimov)</author>
      <guid>https://biozz.dev/blog/more-telegraf/</guid>
      <description>&lt;p&gt;It turned out, that Telegraf can push metrics in &lt;a href=&#34;https://github.com/influxdata/telegraf/blob/master/plugins/serializers/prometheusremotewrite/README.md&#34;&gt;Prometheus format&lt;/a&gt; directly into my VictoriaMetrics server. And that made it possible to get rid of VMAgent entirely.&lt;/p&gt;&#xA;&lt;p&gt;I was a bit confused that Telegraf showed all metrics slightly less than the Node Exporter.&lt;/p&gt;&#xA;&lt;p&gt;This how it looks like at the moment:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://biozz.dev/images/2023_06_26_telegraf_grafana.png&#34; alt=&#34;Grafana dashboard&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;You probably noticed, that these metrics are not what I talked about earlier. Yes, these are from another server, just to show how universal this dashboard is.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Back to Telegraf</title>
      <link>https://biozz.dev/blog/back-to-telegraf/</link>
      <pubDate>Sun, 25 Jun 2023 15:00:00 +0300</pubDate><author>ielfimov@gmail.com (Ivan Elfimov)</author>
      <guid>https://biozz.dev/blog/back-to-telegraf/</guid>
      <description>&lt;p&gt;I am in the middle of producing the podcast, which we are doing together with &lt;a href=&#34;https://vanadium23.me&#34;&gt;vanadium23.me&lt;/a&gt;, it is called &lt;a href=&#34;https://doubleivan.ru&#34;&gt;&amp;ldquo;Два Ивана (название обсуждается)&amp;rdquo;&lt;/a&gt;. One of the things I had to solve was mp3 files hosting.&lt;/p&gt;&#xA;&lt;p&gt;I went for existing solutions and planned to use Cloudflare as much as possible, because it is what I use for all my DNS needs. R2 was compelling, but it required a credit card. The problem is that I am in Russia and there is no way to use our credit cards on foreign websites. My backup Georgian card is too valuable to waste if I am suddenly going over the free tier. So I looked for other kind-of-free solutions. Thought about Backblaze and others, but then I reallised it shouldn&amp;rsquo;t be too much trouble to run an S3 server on my own server.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Django Single File</title>
      <link>https://biozz.dev/blog/django-single-file/</link>
      <pubDate>Fri, 03 Mar 2023 15:00:00 +0300</pubDate><author>ielfimov@gmail.com (Ivan Elfimov)</author>
      <guid>https://biozz.dev/blog/django-single-file/</guid>
      <description>&lt;p&gt;Sometimes it is good to brake things to better understand what they do. And more importantly why they do.&lt;/p&gt;&#xA;&lt;p&gt;There have been a &lt;a href=&#34;https://adamj.eu/tech/2019/04/03/django-versus-flask-with-single-file-applications/&#34;&gt;couple&lt;/a&gt; of &lt;a href=&#34;http://blog.fahhem.com/2011/10/django-models-without-apps-or-everything-django-truly-in-a-single-file/&#34;&gt;attempts&lt;/a&gt; in the past to &amp;ldquo;break&amp;rdquo; Django in a way that it works like Flask, i.e. as little code as possible, using only one file.&lt;/p&gt;&#xA;&lt;p&gt;Even though they all mention Django models, they don&amp;rsquo;t include them into their examples. That&amp;rsquo;s what I am going to present to you.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Sign your commits (without GPG Suite)</title>
      <link>https://biozz.dev/blog/better-sign-your-commits/</link>
      <pubDate>Sun, 05 Feb 2023 10:00:00 +0300</pubDate><author>ielfimov@gmail.com (Ivan Elfimov)</author>
      <guid>https://biozz.dev/blog/better-sign-your-commits/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://biozz.dev/blog/sign-your-commits/&#34;&gt;Last time&lt;/a&gt; I used GPG Suite, but it became too annoying with its ads for Mail addon. So I decided to dig deeper and use console clients as much as possible.&lt;/p&gt;&#xA;&lt;p&gt;Here is a refreshed no-bullshit-no-gpg-suite guide:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;brew install gpg pinentry-mac&lt;/code&gt; - install these&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;~/.gnupg/gpg-agent.conf&lt;/code&gt; - add &lt;code&gt;pinentry-program /opt/homebrew/bin/pinentry-mac&lt;/code&gt; (or whatever does &lt;code&gt;which pinentry-mac&lt;/code&gt;)&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;killall gpg-agent&lt;/code&gt; - this will restart and new config will be used&lt;/li&gt;&#xA;&lt;li&gt;generate a key (as usual)&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;gpg --list-keys&lt;/code&gt; - chose the key you would like to use (it looks something like &lt;code&gt;ABCDEFGHE123123123&lt;/code&gt;)&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;git config user.signingkey ABCDEFGHE123123123&lt;/code&gt; - add the key to your repo config&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;git config commit.gpgsign true&lt;/code&gt; - enable commits signing&lt;/li&gt;&#xA;&lt;li&gt;commit something&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;git log --show-signature&lt;/code&gt; - check your logs to make sure it worked&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Sign your commits</title>
      <link>https://biozz.dev/blog/sign-your-commits/</link>
      <pubDate>Sun, 04 Jul 2021 21:12:34 +0300</pubDate><author>ielfimov@gmail.com (Ivan Elfimov)</author>
      <guid>https://biozz.dev/blog/sign-your-commits/</guid>
      <description>&lt;p&gt;It has been a month since I started thinking about signing my commits.&#xA;When I first noticed &amp;ldquo;Verified&amp;rdquo; tags on GitHub, I realized that I need those even if I am not committing files from the web interface.&lt;/p&gt;&#xA;&lt;p&gt;My first attempt failed completely, as I couldn&amp;rsquo;t put all pieces of the puzzle together.&#xA;So now I am returning with a no-bullshit guide, straight to the point: how to sign your commits (mostly MacOS only).&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ansible #1 - Подготовка</title>
      <link>https://biozz.dev/blog/ansible-1/</link>
      <pubDate>Sun, 12 Jul 2020 23:35:37 +0300</pubDate><author>ielfimov@gmail.com (Ivan Elfimov)</author>
      <guid>https://biozz.dev/blog/ansible-1/</guid>
      <description>&lt;h2 id=&#34;обновление-2023-07-02&#34;&gt;ОБНОВЛЕНИЕ 2023-07-02&lt;/h2&gt;&#xA;&lt;p&gt;Я выпустил эту и другие части обучения по Ansible (&lt;a href=&#34;https://biozz.dev/blog/ansible-tutorial/&#34;&gt;объявление&lt;/a&gt;) на &lt;a href=&#34;https://ansible.biozz.dev/&#34;&gt;ansible.biozz.dev&lt;/a&gt;. Там гораздо более приятный формат для чтения, рекомендую посмотреть вместо этого.&lt;/p&gt;&#xA;&lt;h2 id=&#34;определения&#34;&gt;Определения&lt;/h2&gt;&#xA;&lt;p&gt;&lt;strong&gt;Control node&lt;/strong&gt; - любой компьютер, на котором установлен Ansible. С него можно запускать команды и плейбуки.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Managed nodes&lt;/strong&gt; - устройства/серверы в сети, которыми можно управлять с помощью Ansible. Иногда называют &amp;ldquo;хост&amp;rdquo;. На них Ansible не установлен.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Inventory&lt;/strong&gt; - список, управляемых хостов/нод. Иногда инвентарь называют хостфайлом. Там указывают IP адреса серверов. В инвентаре можно объединять хосты в группы для удобства выкатывания.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Проект server</title>
      <link>https://biozz.dev/blog/project-server/</link>
      <pubDate>Mon, 24 Feb 2020 06:00:00 +0300</pubDate><author>ielfimov@gmail.com (Ivan Elfimov)</author>
      <guid>https://biozz.dev/blog/project-server/</guid>
      <description>&lt;h2 id=&#34;идея&#34;&gt;Идея&lt;/h2&gt;&#xA;&lt;p&gt;Когда я осознал мощь docker-compose, я сразу захотел сделать один большой &lt;code&gt;docker_compose.yml&lt;/code&gt; для всего. В нём была бы конфигурация всего сервера, чтобы в любой момент можно было сделать на любой тачке &lt;code&gt;docker-compose up&lt;/code&gt; и всё работает.&lt;/p&gt;&#xA;&lt;h2 id=&#34;первая-попытка---наброски-с-traefik&#34;&gt;Первая попытка - наброски с Traefik&lt;/h2&gt;&#xA;&lt;p&gt;Параллельно с изучением Docker Compose, я узнал о Traefik. И сейчас понимаю, что это было слишком много для первой попытки. Слишком много настроек и нюансов. Я как обычно начал делать сразу настолько красиво, насколько возможно. &lt;code&gt;docker_compose.yml&lt;/code&gt; разрастался, а результата не было. Да и проверить было негде, потому что локально всю специфику с https не протестировать, а вторую тачку для экспериментов было слишком лениво настраивать. В итоге несколько часов потрачено на изучение, а на выходе лишь наброски и ничего рабочего. Полный перегруз, нужно было взять паузу.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Вот такой passline.ru</title>
      <link>https://biozz.dev/blog/explore-passline/</link>
      <pubDate>Wed, 08 Jan 2020 16:00:00 +0300</pubDate><author>ielfimov@gmail.com (Ivan Elfimov)</author>
      <guid>https://biozz.dev/blog/explore-passline/</guid>
      <description>&lt;p&gt;Я ехал из дома после праздников. Сел в поезд Ярославль-Москва и айфон тут же предложил подключиться к сети &lt;code&gt;RZD&lt;/code&gt;. Подключился, зашёл и меня сразу перенаправило на свежий веб-интерфейс. &amp;ldquo;Что-то новенькое от РЖД, почему бы и нет&amp;rdquo; подумал я и вспомнил недавнюю &lt;a href=&#34;https://blog.jonlu.ca/posts/aa-tracker&#34;&gt;статью&lt;/a&gt; про исследование wi-fi сети на борту самолёта. Это был отличный шанс для меня сделать что-то похожее, ведь все новые приложения всегда будут содержать чуть больше недочётов и багов, чем те, которые провели какое-то время на бою.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Last Time I v1</title>
      <link>https://biozz.dev/blog/last-time-i/</link>
      <pubDate>Sat, 07 Dec 2019 15:15:40 +0300</pubDate><author>ielfimov@gmail.com (Ivan Elfimov)</author>
      <guid>https://biozz.dev/blog/last-time-i/</guid>
      <description>&lt;p&gt;Идея проекта: отслеживание каких-либо действий для мотивации/демотивации. Вроде как трекер привычек, но ни к чему не обязывающий. Заходишь на сайт, отмечаешь какое-то действие и париодически смотришь что да как.&lt;/p&gt;&#xA;&lt;p&gt;Например, у меня правило есть фастфуд максимум раз в неделю. Я захожу, отмечаю, что поел. И периодически заглядываю, сколько уже прошло времени. Смог продержаться дольше? Круто. Не смог? Отметился.&lt;/p&gt;&#xA;&lt;p&gt;Единственная кастомизация - это &amp;ldquo;частое&amp;rdquo; действие или нет. Пробежка это в целом неплохое полезное занятие и его нужно делать часто, поэтому оно &amp;ldquo;частое&amp;rdquo;. Напротив, &amp;ldquo;есть фастфуд&amp;rdquo; не очень полезное и нужно делать реже, то есть &amp;ldquo;не частое&amp;rdquo;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Первый пост на habr.com</title>
      <link>https://biozz.dev/blog/habr-1/</link>
      <pubDate>Sun, 14 Apr 2019 10:00:00 +0300</pubDate><author>ielfimov@gmail.com (Ivan Elfimov)</author>
      <guid>https://biozz.dev/blog/habr-1/</guid>
      <description>&lt;p&gt;На днях опубликовали мою статью для хабра - &lt;a href=&#34;https://habr.com/ru/company/ostrovok/blog/447706/&#34;&gt;Не ORMом единым&lt;/a&gt; - про то, как мы писали и оптимизровали дашборд для партнерских метрик.&lt;/p&gt;&#xA;&lt;p&gt;Очень был рад, что статья перед публикацией проходит через кучу проверок и фильтров. Мою статью проверяли коллеги, PRщики, СТО и не по одному разу. Пришлось сократить статью примерно на 20%, детально обфусцировать, чтобы не палить структуру наших бд, и привести все в читаемый вид. Кстати, в последнем пункте помогла книга &amp;ldquo;Пиши, сокращай&amp;rdquo;, которая и сейчас помогает убирать мусор из текста.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Osdrek Lutrunn</title>
      <link>https://biozz.dev/blog/osdrek-lutrunn/</link>
      <pubDate>Tue, 02 Apr 2019 20:40:03 +0300</pubDate><author>ielfimov@gmail.com (Ivan Elfimov)</author>
      <guid>https://biozz.dev/blog/osdrek-lutrunn/</guid>
      <description>&lt;p&gt;Osdrek was born in the family of a priest Bordan Lutrunn. Bordan served in a church not far from Damara.&lt;/p&gt;&#xA;&lt;p&gt;At the age of 15 Osdrek witnessed a scary scene when his farther’s church was demolished by a group of bandits.&lt;/p&gt;&#xA;&lt;p&gt;Osdrek was taught by his father and learned a lot about religion history when he was young.&#xA;At the age of 20 Osdrek moved to Damara and entered the Seminary by recommendation of his father. But he didn’t finish it and went to the army.&lt;/p&gt;</description>
    </item>
    <item>
      <title>HAL 9000</title>
      <link>https://biozz.dev/blog/hal/</link>
      <pubDate>Sun, 24 Mar 2019 21:42:00 +0300</pubDate><author>ielfimov@gmail.com (Ivan Elfimov)</author>
      <guid>https://biozz.dev/blog/hal/</guid>
      <description>&lt;p&gt;Cервис на Go под кодовым названием &lt;a href=&#34;https://ru.wikipedia.org/wiki/HAL_9000&#34;&gt;HAL 9000&lt;/a&gt;. Идея сервиса - интегрироваться с несколькими рабочими инструментами: Slack, Gitlab, Redmine, Tower, Sentry, чтобы они начали взаимодействовать так, как они действительно должны - как одна большая удобная среда для разработки.&lt;/p&gt;&#xA;&lt;p&gt;Стандартные интеграции и уведомления недостаточно конфигурируемы, не очень удобны и не вписываются в наш рабочий процесс.&lt;/p&gt;&#xA;&lt;p&gt;Что умеет:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;очень много пишет в слак о всевозможных событиях гитлаба (пуши, MR, комменты, апрувы, статусы пайплайнов)&lt;/li&gt;&#xA;&lt;li&gt;обновляет таску в редмайне&lt;/li&gt;&#xA;&lt;li&gt;реагирует на изменения тасок в редмайне и может тегать MR в gitlab&lt;/li&gt;&#xA;&lt;li&gt;редиректит ссылки с названием ветки на MR&lt;/li&gt;&#xA;&lt;li&gt;строит таймлайн рализов со ссылками на ветки/MR/авторов/таски в redmine&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Что использовал:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Дневник тимлида: начало</title>
      <link>https://biozz.dev/blog/teamlead-1/</link>
      <pubDate>Wed, 20 Mar 2019 21:50:25 +0300</pubDate><author>ielfimov@gmail.com (Ivan Elfimov)</author>
      <guid>https://biozz.dev/blog/teamlead-1/</guid>
      <description>&lt;h2 id=&#34;о-продвижении&#34;&gt;О продвижении&lt;/h2&gt;&#xA;&lt;p&gt;Почти все продвижения по карьерной лестнице и самые сложные этапы в этой же карьере происходят, когда твой руководитель уходит. Вот так примерно на 230-ом дне в островке из мидла-бекендера я стал тимлидом.&lt;/p&gt;&#xA;&lt;h2 id=&#34;о-сложностях-и-уроках&#34;&gt;О сложностях и уроках&lt;/h2&gt;&#xA;&lt;p&gt;Почти сразу же пришлось погрузиться в новую должность и проводить несколько собеседований. Ох, как же было забавно когда я сам забыл решение задачи, которую задал кандидату. Хорошо, что рядом был коллега, который перехватил инициативу. И вот сразу несколько уроков из этой ситуации:&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
