Yeldar Kudaibergenov

Yeldar Kudaibergen

Podcaster, developer of ProxyFeed, DirectFlow and QRX.

11ty tags as flows

Spent some time this week cleaning up the site. Added tags – but I think of them less as labels and more as flows. If you follow what I'm building with ProxyFeed, you probably don't care about my C programming notes. If you're into QRX, you want QRX updates. Tags let you follow just the thread that matters to you.

Which is why each of the three main projects – ProxyFeed, DirectFlow, and QRX – now has its own RSS feed. Subscribe to one, ignore the rest. That felt important to me: the whole point of RSS is control over what you read, so the feeds should reflect that.

One thing I had to solve: my post frontmatter uses mixed case – QRX, DirectFlow – but URLs should be lowercase. Rather than going through every post manually, I normalized tags automatically at build time in Eleventy:

eleventyConfig.addCollection("_lowercaseTags", function(collectionApi) {
  collectionApi.getAll().forEach(item => {
    if (item.data.tags) {
      item.data.tags = item.data.tags.map(t => t.toLowerCase());
    }
  });
  return [];
});

A dummy collection that returns nothing – it just mutates the data as a side effect before everything else runs.

For the per-tag RSS feeds, I didn't want a feed for every tag – just the three projects. So I defined an allowlist and used Eleventy's pagination to generate one feed per entry:

const RSS_TAGS = ["qrx", "directflow", "proxyfeed"];
---
pagination:
  data: rssTags
  size: 1
  alias: rssTag
permalink: /tags//feed.xml
---

Eleventy generates /tags/qrx/feed.xml, /tags/directflow/feed.xml, and /tags/proxyfeed/feed.xml automatically. Clean and easy to extend.

The homepage also got a rethink. Before it was basically just a blog list – fine if you already know me, confusing if you don't. Now it leads with who I am and what I'm building, and the posts come after. Less personal diary, more actual homepage.

Small changes, but they make the site feel like it has a point of view.

Published on May 17, 2026