41554 blogs · [ { "id": "01a0e539-4ac9-73e9-8697-44c13e695e15", "title": "Null hypothesis: AI code differs", "url": "https://bogomolov.work/blog/posts/null-hypothesis-ai-code-differs/", "published_at": "2026-09-27T10:00:00+00:00" }, { "id": "01a08757-538a-73d2-b10f-1c1aea2f0f4a", "title": "Rotten specs", "url": "https://bogomolov.work/blog/posts/rotten-specs/", "published_at": "2026-07-25T01:53:56+00:00" }, { "id": "01a08757-538a-73d2-b10f-1c1aeb2a374d", "title": "Security you can't justify is a vicious cycle", "url": "https://bogomolov.work/blog/posts/security-you-cant-justify-is-a-vicious-cycle/", "published_at": "2026-07-02T15:03:27+00:00" }, { "id": "01a08757-538a-73d2-b10f-1c1aeb68a369", "title": "24h: 250 views, 1 signup", "url": "https://bogomolov.work/blog/posts/24h-250views-1signup/", "published_at": "2026-06-20T10:16:00+00:00" }, { "id": "01a08757-538a-73d2-b10f-1c1aeb9f7f60", "title": "Real-time weather forecast", "url": "https://bogomolov.work/blog/posts/weather/", "published_at": "2026-06-02T17:09:18+00:00" }, { "id": "01a08757-538a-73d2-b10f-1c1aec391627", "title": "Runtime cost matters to me now", "url": "https://bogomolov.work/blog/posts/ai-makes-runtime-cost-matter-again/", "published_at": "2026-05-18T12:00:00+00:00" }, { "id": "01a08757-538a-73d2-b10f-1c1aec80e160", "title": "Docker images are hundreds of MB; a full game engine compiles to 35MB WASM", "url": "https://bogomolov.work/blog/posts/wasm-vs-docker/", "published_at": "2026-05-09T12:00:00+00:00" }, { "id": "01a08757-538a-73d2-b10f-1c1aed567627", "title": "AI agent architecture: model, harness and intent", "url": "https://bogomolov.work/blog/posts/ai-agent-architecture-model-harness-intent/", "published_at": "2026-04-18T00:00:00+00:00" }, { "id": "01a08757-538a-73d2-b10f-1c1aed93a0ab", "title": "The actual state of self-hosting on a VPS", "url": "https://bogomolov.work/blog/posts/the-actual-state-of-self-hosting-on-a-vps/", "published_at": "2025-12-18T12:44:19+00:00" }, { "id": "01a08757-538a-73d2-b10f-1c1aee235190", "title": "Querying documents with LLMs instead of reading them", "url": "https://bogomolov.work/blog/posts/querying-documents-with-llms-instead-of-reading-them/", "published_at": "2025-10-02T09:12:38+00:00" }, { "id": "01a08757-538a-73d2-b10f-1c1aee7346c6", "title": "JSON analyzer: find which keys bloat your payload", "url": "https://bogomolov.work/blog/posts/json-analyzer/", "published_at": "2025-09-10T03:43:41+00:00" }, { "id": "01a08757-538a-73d2-b10f-1c1aeeca043c", "title": "HTML sanitization: the double-encoding trap", "url": "https://bogomolov.work/blog/posts/html-sanitization/", "published_at": "2025-09-05T08:13:44+00:00" }, { "id": "01a08757-538a-73d2-b10f-1c1aef8adbc7", "title": "Private WireGuard VPN with selective Tor routing", "url": "https://bogomolov.work/blog/posts/howto-wireguard/", "published_at": "2025-07-12T11:04:35+00:00" }, { "id": "01a08757-538a-73d2-b10f-1c1aefc1f11a", "title": "Shadowsocks to Tor: why it failed as a VPN alternative", "url": "https://bogomolov.work/blog/posts/shadowsocks-to-tor/", "published_at": "2025-05-28T16:25:43+00:00" }, { "id": "01a08757-538a-73d2-b10f-1c1af027c527", "title": "Free online QR code generator (no signup, SVG + PNG)", "url": "https://bogomolov.work/blog/posts/free-online-qr-code-generator/", "published_at": "2025-05-24T08:47:42+00:00" }, { "id": "01a08757-538a-73d2-b10f-1c1af05a2b9c", "title": "GPT-4o behaves like a marketer", "url": "https://bogomolov.work/blog/posts/gpt-4o-behaves-like-marketer/", "published_at": "2025-04-27T15:40:27+00:00" }, { "id": "01a08757-538a-73d2-b10f-1c1af0744676", "title": "Hugo + Prettier = ❤️", "url": "https://bogomolov.work/blog/posts/hugo-code-formatting/", "published_at": "2025-04-14T19:42:48+00:00" }, { "id": "01a08757-538a-73d2-b10f-1c1af0ba7f4d", "title": "Gemini 2.5 Pro one-shots a p5.js endless runner", "url": "https://bogomolov.work/blog/posts/gemini25/", "published_at": "2025-03-25T19:18:59+00:00" }, { "id": "01a08757-538a-73d2-b10f-1c1af1570fae", "title": "PlayStation statistics: an open-source PSN tool", "url": "https://bogomolov.work/blog/posts/psn-statistics/", "published_at": "2025-03-24T19:09:56+00:00" }, { "id": "01a08757-538a-73d2-b10f-1c1af22fd810", "title": "Prompt engineering notes, after the Cursor leak", "url": "https://bogomolov.work/blog/posts/prompt-engineering-notes/", "published_at": "2025-03-20T08:00:14+00:00" }, { "id": "01a08757-538a-73d2-b10f-1c1af2a4e75c", "title": "Search engine indexing: Google, Bing and Yandex", "url": "https://bogomolov.work/blog/posts/search-engine-indexing/", "published_at": "2025-03-16T10:25:54+00:00" }, { "id": "01a08757-538a-73d2-b10f-1c1af3544d78", "title": "Will AI replace developers? Anthropic is hiring", "url": "https://bogomolov.work/blog/posts/will-ai-replace-developers/", "published_at": "2025-03-12T18:22:35+00:00" }, { "id": "01a08757-538a-73d2-b10f-1c1af3675c12", "title": "Encrypted Google Drive backup with rclone crypt (part 2)", "url": "https://bogomolov.work/blog/posts/google-drive-backup-part2/", "published_at": "2025-03-05T08:46:19+00:00" }, { "id": "01a08757-538a-73d2-b10f-1c1af4559925", "title": "(Almost) Free Google Drive backup (part 1)", "url": "https://bogomolov.work/blog/posts/google-drive-backup/", "published_at": "2025-02-27T20:12:31+00:00" }, { "id": "01a08757-538a-73d2-b10f-1c1af497ad22", "title": "Go DI container vs. service template generator", "url": "https://bogomolov.work/blog/posts/golang-di-container-vs-service-template/", "published_at": "2025-02-21T06:31:02+00:00" }, { "id": "01a08757-538a-73d2-b10f-1c1af4a11ac1", "title": "A minimal Python3 Dockerfile with uv", "url": "https://bogomolov.work/blog/posts/docker-uv/", "published_at": "2025-02-18T12:39:42+00:00" } ] posts Claim your blog
Back to The Archive | Ivan Bogomolov's personal web page: dev notes, ...
Blog · corpus.blog/blogs/bogomolov.work/posts

The Archive | Ivan Bogomolov's personal web page: dev notes, ...

bogomolov.work

2026

2025