<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Selim Ataballyev - Blog</title><description>Notes on engineering, AI-augmented workflows, and shipping product.</description><link>https://selim.services/</link><language>en-us</language><item><title>The PDF Tools Everyone Should Know</title><link>https://selim.services/blog/pdf-tools-guide/</link><guid isPermaLink="true">https://selim.services/blog/pdf-tools-guide/</guid><description>An engineer&apos;s trade-off guide to PDF operations: lossless vs lossy compression, client-side vs server, and which library actually fits the job.</description><pubDate>Wed, 24 Jun 2026 21:49:41 GMT</pubDate><category>pdf</category><category>tools</category></item><item><title>QR Codes 101: How They Actually Work</title><link>https://selim.services/blog/qr-codes-101/</link><guid isPermaLink="true">https://selim.services/blog/qr-codes-101/</guid><description>A developer&apos;s breakdown of how QR codes encode data, plus the error-correction, version, and static-vs-dynamic trade-offs that decide reliability.</description><pubDate>Wed, 24 Jun 2026 21:41:27 GMT</pubDate><category>qr</category><category>tools</category></item><item><title>Welcome to the blog</title><link>https://selim.services/blog/welcome/</link><guid isPermaLink="true">https://selim.services/blog/welcome/</guid><description>A short hello and a quick note on what this blog will cover.</description><pubDate>Wed, 24 Jun 2026 00:00:00 GMT</pubDate><category>meta</category><category>writing</category></item><item><title>Adding a Russian locale to an Astro blog, no CMS</title><link>https://selim.services/blog/adding-russian-locale-astro-blog/</link><guid isPermaLink="true">https://selim.services/blog/adding-russian-locale-astro-blog/</guid><description>How I added bilingual EN/RU posts to a static Astro blog without a headless CMS: route duplication, shared-slug file pairing, hreflang, and a switcher that finds the counterpart.</description><pubDate>Sun, 24 May 2026 00:00:00 GMT</pubDate><category>astro</category><category>i18n</category><category>localization</category><category>content-collections</category><category>frontend</category></item><item><title>Three things MV3 taught me about the service-worker lifecycle</title><link>https://selim.services/blog/three-things-mv3-taught-me-service-worker-lifecycle/</link><guid isPermaLink="true">https://selim.services/blog/three-things-mv3-taught-me-service-worker-lifecycle/</guid><description>Chrome Manifest V3 replaced the persistent background page with an ephemeral service worker. These are the three lifecycle lessons that cost me real debugging time.</description><pubDate>Wed, 20 May 2026 00:00:00 GMT</pubDate><category>browser-extensions</category><category>manifest-v3</category><category>service-worker</category><category>chrome</category><category>javascript</category></item><item><title>Typed content with Zod: schema as a build-time contract</title><link>https://selim.services/blog/typed-content-with-zod-build-time-contract/</link><guid isPermaLink="true">https://selim.services/blog/typed-content-with-zod-build-time-contract/</guid><description>An Astro content-collection Zod schema is not just validation - it is a build-time contract that turns a folder of MDX files into a fully typed CMS with no backend.</description><pubDate>Tue, 12 May 2026 00:00:00 GMT</pubDate><category>astro</category><category>typescript</category><category>zod</category><category>content-collections</category><category>frontend</category></item><item><title>The 6 MCP servers I keep in every Claude Code project</title><link>https://selim.services/blog/six-mcp-servers-i-keep-in-every-claude-code-project/</link><guid isPermaLink="true">https://selim.services/blog/six-mcp-servers-i-keep-in-every-claude-code-project/</guid><description>After six months of running Claude Code across 30 active repos, only 6 MCP servers survived the cull. Here is the kept set, the 14 cuts, and the rule.</description><pubDate>Sat, 02 May 2026 00:00:00 GMT</pubDate><category>claude-code</category><category>mcp</category><category>ai-engineering</category><category>workflow</category><category>tooling</category></item><item><title>Why I rewrote my portfolio from Nuxt to Astro, in numbers</title><link>https://selim.services/blog/why-i-rewrote-my-portfolio-from-nuxt-to-astro/</link><guid isPermaLink="true">https://selim.services/blog/why-i-rewrote-my-portfolio-from-nuxt-to-astro/</guid><description>I rewrote my portfolio from Nuxt 3 to Astro 5 and tracked every metric that moved. Build time, bundle, Lighthouse, dev boot - the receipts for the swap.</description><pubDate>Sun, 26 Apr 2026 00:00:00 GMT</pubDate><category>astro</category><category>nuxt</category><category>performance</category><category>portfolio</category><category>frontend</category></item><item><title>The 30-second test: what a senior client actually checks on your portfolio</title><link>https://selim.services/blog/the-30-second-test-what-clients-check-on-your-portfolio/</link><guid isPermaLink="true">https://selim.services/blog/the-30-second-test-what-clients-check-on-your-portfolio/</guid><description>The 30-second checklist that a senior client actually runs on your freelance portfolio before they decide to message you, listed in real scan order here.</description><pubDate>Sun, 19 Apr 2026 00:00:00 GMT</pubDate><category>portfolio</category><category>freelance</category><category>conversion</category><category>design</category><category>senior</category></item><item><title>A senior engineer&apos;s Lighthouse 100/100 checklist, after 30 sites</title><link>https://selim.services/blog/lighthouse-100-checklist-after-30-sites/</link><guid isPermaLink="true">https://selim.services/blog/lighthouse-100-checklist-after-30-sites/</guid><description>A checklist for hitting Lighthouse 100/100/100/100 - the architecture decisions, the boring 88-to-94 fixes, and the cargo-cult performance tactics to skip.</description><pubDate>Sun, 12 Apr 2026 00:00:00 GMT</pubDate><category>lighthouse</category><category>performance</category><category>web-vitals</category><category>seo</category><category>accessibility</category></item></channel></rss>