<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>The Archive</title><link>https://bogomolov.work/</link><description>Recent content on The Archive</description><generator>Hugo -- 0.154.5</generator><language>en</language><lastBuildDate>Sun, 04 Jan 2026 08:47:42 +0000</lastBuildDate><atom:link href="https://bogomolov.work/index.xml" rel="self" type="application/rss+xml"/><item><title>/uses</title><link>https://bogomolov.work/uses/</link><pubDate>Sun, 04 Jan 2026 08:47:42 +0000</pubDate><guid>https://bogomolov.work/uses/</guid><description>Inspired by uses.tech. For work context, see /about.
# Hardware 15" MacBook Air M4
ASUS ROG Flow Z13 (GZ301ZE-LC175W)
Raspberry Pi 5 Model B Rev 1.1
Flow84 mechanical keyboard
Random
display mouse sennheiser/marshall iPhone 13</description></item><item><title>/about</title><link>https://bogomolov.work/about/</link><pubDate>Sat, 03 Jan 2026 08:47:42 +0000</pubDate><guid>https://bogomolov.work/about/</guid><description>I’m Ivan Bogomolov, a software engineer. I still enjoy working with technology, and this blog is where that interest ends up.
Most of my work lives between architecture and operations: choosing simple designs, knowing when not to add microservices, and fixing systems that already exist. Coding is still the best part; I make room for it here.</description></item><item><title>The actual state of self-hosting on a VPS</title><link>https://bogomolov.work/blog/posts/the-actual-state-of-self-hosting-on-a-vps/</link><pubDate>Thu, 18 Dec 2025 12:44:19 +0000</pubDate><guid>https://bogomolov.work/blog/posts/the-actual-state-of-self-hosting-on-a-vps/</guid><description>I recently ran into a claim: Docker Compose is outdated and K3s is the king for my 1Gb VPS.
At the same time, docker-compose.py is effectively deprecated, with Compose now shipped as a built-in docker compose command. That alone is not a problem, but it raised a reasonable question: has the role of Docker Compose actually changed, or is this just noise from the Kubernetes church?</description></item><item><title>Querying documents with LLMs instead of reading them</title><link>https://bogomolov.work/blog/posts/querying-documents-with-llms-instead-of-reading-them/</link><pubDate>Thu, 02 Oct 2025 09:12:38 +0000</pubDate><guid>https://bogomolov.work/blog/posts/querying-documents-with-llms-instead-of-reading-them/</guid><description>Reading a technical doc cover-to-cover is like running a full table scan. A 64-page guide might only have five pages of signal, but you grind through all 64 anyway.
I tried something different on Google’s Startup technical guide: AI agents. Instead of reading, I queried it. Treat the doc like a database.</description></item><item><title>JSON analyzer</title><link>https://bogomolov.work/blog/posts/json-analyzer/</link><pubDate>Wed, 10 Sep 2025 03:43:41 +0000</pubDate><guid>https://bogomolov.work/blog/posts/json-analyzer/</guid><description>A free, client-side tool to analyze large JSON data. Paste your JSON to instantly find the heaviest fields, see a breakdown by key name, and optimize your payload size. No data is ever uploaded.</description></item><item><title>HTML sanitization: Avoiding the double-encoding issue</title><link>https://bogomolov.work/blog/posts/html-sanitization/</link><pubDate>Fri, 05 Sep 2025 08:13:44 +0000</pubDate><guid>https://bogomolov.work/blog/posts/html-sanitization/</guid><description>Once upon a time, I went through another security audit on a project that wasn’t particularly old but had passed through the hands of several teams. After the first round of penetration testing, the auditing team found a lack of data sanitization on the backend side.</description></item><item><title>How-to: A private WireGuard VPN with selective Tor routing</title><link>https://bogomolov.work/blog/posts/howto-wireguard/</link><pubDate>Sat, 12 Jul 2025 11:04:35 +0000</pubDate><guid>https://bogomolov.work/blog/posts/howto-wireguard/</guid><description>When planning a VPN, OpenVPN is often the default choice. However, in this post, I’ll document the process of building a private VPN using WireGuard to unite different devices (servers, a notebook, and a phone) into a single, secure network. Additionally, I will selectively route all internet traffic from my notebook and phone through the Tor network, while allowing other servers on the VPN to communicate normally without being routed through Tor.</description></item><item><title>Shadowsocks to Tor: Why it failed as a VPN alternative</title><link>https://bogomolov.work/blog/posts/shadowsocks-to-tor/</link><pubDate>Wed, 28 May 2025 16:25:43 +0000</pubDate><guid>https://bogomolov.work/blog/posts/shadowsocks-to-tor/</guid><description>Well, the time has come, and I’ve decided to update, clean up, and generally re-think my “home” infrastructure. This part is only about a (mostly failed) networking setup.
What do I have and what do I want? I have a few virtual private servers (VPS) from different hosting providers, a Raspberry Pi, a PlayStation, some PCs at home, and mobile phones. The goal is to set up simple monitoring of the VPSs, build a dashboard on the Raspberry Pi, and have the ability to deploy services without constantly worrying about security. I also want to occasionally access the internet from third-party regions and IP addresses, with the ability to add more infrastructure without pain. Something similar to the scheme below:</description></item><item><title>Free online QR code generator</title><link>https://bogomolov.work/blog/posts/free-online-qr-code-generator/</link><pubDate>Sat, 24 May 2025 08:47:42 +0000</pubDate><guid>https://bogomolov.work/blog/posts/free-online-qr-code-generator/</guid><description>What a shame – nowadays, one quick request to GPT spits out a proper HTML page with a full-fledged QR code generator…1 and yet I wasted way more time Googling for a free generator that could give me png and svg. Every single one wants registration, logging in through some OAuth nonsense, or worst of all, a payment just for an svg 🤦🏼.</description></item><item><title>GPT-4o behaves like a marketer</title><link>https://bogomolov.work/blog/posts/gpt-4o-behaves-like-marketer/</link><pubDate>Sun, 27 Apr 2025 15:40:27 +0000</pubDate><guid>https://bogomolov.work/blog/posts/gpt-4o-behaves-like-marketer/</guid><description>OpenAI, too, likely breaks trust with this approach. This X post gave me an idea to check. And now it’s real: GPT-4o behaves like a marketer.
My dialogue with GPT-4o https://chatgpt.com/share/680e5956-6918-8005-bd3b-60fecf9aeb17</description></item><item><title>Hugo static site generator + Prettier code formatter = ❤️</title><link>https://bogomolov.work/blog/posts/hugo-code-formatting/</link><pubDate>Mon, 14 Apr 2025 19:42:48 +0000</pubDate><guid>https://bogomolov.work/blog/posts/hugo-code-formatting/</guid><description>I like my code nicely formatted, and since I’m using Hugo here 👇, I figured it was a good idea to finally set it up properly. But I hit a little problem – Hugo templates aren’t just Markdown; they’re a mix of YAML/JSON, HTML/CSS/JS, Go’s template syntax. Before I found the real solution, I had actually prepared myself to fork shurcooL/markdownfmt and add support for Hugo’s template syntax myself.</description></item><item><title>Gemini 2.5 Pro</title><link>https://bogomolov.work/blog/posts/gemini25/</link><pubDate>Tue, 25 Mar 2025 19:18:59 +0000</pubDate><guid>https://bogomolov.work/blog/posts/gemini25/</guid><description> 2.5 Pro can use its reasoning capabilities to create a video game by producing the executable code from a single line prompt
https://blog.google/technology/google-deepmind/gemini-model-thinking-updates-march-2025/#advanced-coding
# Prompt And it’s really works, in one shot:</description></item><item><title>PlayStation statistics</title><link>https://bogomolov.work/blog/posts/psn-statistics/</link><pubDate>Mon, 24 Mar 2025 19:09:56 +0000</pubDate><guid>https://bogomolov.work/blog/posts/psn-statistics/</guid><description> Here’s a tool to peek at your PlayStation life-hours played, games beaten, the works. It’s open-source, so feel free to mess with it and add your own spin.
https://github.com/irr123/psn-games-stats/tree/argparse</description></item><item><title>Prompt engineering notes</title><link>https://bogomolov.work/blog/posts/prompt-engineering-notes/</link><pubDate>Thu, 20 Mar 2025 08:00:14 +0000</pubDate><guid>https://bogomolov.work/blog/posts/prompt-engineering-notes/</guid><description>If you weren’t aware, there was a leak of Cursor and some other prompts. I’m not here to evaluate the quality of prompts, but let’s consider it as a state of the art from experienced guys.</description></item><item><title>Search engine indexing: A case study with Google, Bing and Yandex</title><link>https://bogomolov.work/blog/posts/search-engine-indexing/</link><pubDate>Sun, 16 Mar 2025 10:25:54 +0000</pubDate><guid>https://bogomolov.work/blog/posts/search-engine-indexing/</guid><description>In this article I want to share my experience of using search engine consoles, continuing an idea from a recent Telegram post. Maybe this could reduce frustration for someone, reassuring them that they’re not alone - or even save them some time.</description></item><item><title>Will AI replace developers?</title><link>https://bogomolov.work/blog/posts/will-ai-replace-developers/</link><pubDate>Wed, 12 Mar 2025 18:22:35 +0000</pubDate><guid>https://bogomolov.work/blog/posts/will-ai-replace-developers/</guid><description>A common narrative from OpenAI and similar companies (previous hype was from no-code-guys) suggests that the era of human developers is ending due to cost considerations, and that AI will replace programmers soon.</description></item><item><title>Google drive backup (part 2)</title><link>https://bogomolov.work/blog/posts/google-drive-backup-part2/</link><pubDate>Wed, 05 Mar 2025 08:46:19 +0000</pubDate><guid>https://bogomolov.work/blog/posts/google-drive-backup-part2/</guid><description>This is a continuation of the first part, where we built a basic backup solution using local storage. Now, let’s elevate our approach by integrating another cloud provider and adding robust encryption.
# Dropbox: Setting Up an Additional Cloud Provider To obtain an access token, you’ll need to configure rclone locally (because of web browser). Here’s how I did it using Docker:</description></item><item><title>(Almost) Free Google drive backup (part 1)</title><link>https://bogomolov.work/blog/posts/google-drive-backup/</link><pubDate>Thu, 27 Feb 2025 20:12:31 +0000</pubDate><guid>https://bogomolov.work/blog/posts/google-drive-backup/</guid><description>Have you truly considered the catastrophic risks of losing all your Google Drive data? Can your business afford such a loss?
Let me guide you in mitigating those risks. I asked myself the same question and searched for a reliable, out-of-the-box solution. Disappointed with Google’s suggestions, I decided to build my own. Think of it as playing with Lego-assembling the necessary components.</description></item><item><title>DI container vs. service template (generator)</title><link>https://bogomolov.work/blog/posts/golang-di-container-vs-service-template/</link><pubDate>Fri, 21 Feb 2025 06:31:02 +0000</pubDate><guid>https://bogomolov.work/blog/posts/golang-di-container-vs-service-template/</guid><description>Let’s talk about building and evolving Golang services in the enterprise. We’ll explore two approaches:
A Service Template (generator) is a common approach for unifying and quickly bootstrapping new microservices. Its popularity is evident in the community, as demonstrated by examples such as: https://github.com/evrone/go-clean-template https://www.reddit.com/r/golang/comments/1h124ee/rate_my_go_project_template/ https://dev.to/protium/github-template-for-golang-services-3o27 https://www.youtube.com/watch?v=1ZbQS6pOlSQ Dependency injection (DI)1 is an approach where objects are constructed by passing pre-initialized components to them, rather than having the objects initialize those components themselves.2 DI container automates the dependency injection process. While not the most common approach for bootstrapping new services, it offers several advantages, which I will outline. # The problem The challenge is a timeless one: accelerating the delivery of value to production. From a technical perspective, this translates to several key requirements:</description></item><item><title>Python3 Dockerfile with uv</title><link>https://bogomolov.work/blog/posts/docker-uv/</link><pubDate>Tue, 18 Feb 2025 12:39:42 +0000</pubDate><guid>https://bogomolov.work/blog/posts/docker-uv/</guid><description>I’ve been noticed that my simple python3 docker image with uv has unexpected amount of downloads, so, I descided to steal some traffic from original https://docs.astral.sh/uv/guides/integration/docker/ to it page.
# What is it uv? Long story short - it’s fast-Rust python’s pip alternative. And python3 -m venv ./venv too and maybe more at time when you’re reading it.</description></item><item><title/><link>https://bogomolov.work/blank/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://bogomolov.work/blank/</guid><description/></item></channel></rss>