<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xml:base="https://yeldar.org/" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
  <title>Yeldar Kudaibergen – directflow</title>
  <link>https://yeldar.org/tags/directflow/</link>
  <atom:link href="https://yeldar.org/tags/directflow/feed.xml" rel="self" type="application/rss+xml"/>
  <description>Posts tagged "directflow" from Yeldar Kudaibergen</description>
  <language>en</language>
    <item>
      <title>What is .flow?</title>
      <link>https://yeldar.org/blog/wtf/</link>
      <description>&lt;p&gt;I didn&#39;t wake up one morning and decide the web needed another .f format. I was building DirectFlow to let people follow websites directly, bypassing whatever subscription system a platform decided to enforce. Then I built QRX to inspect URLs and QR codes and discover the interaction endpoints behind them—RSS feeds, podcasts, YouTube channels, social profiles, emails, APIs, calendars, and everything else an object might expose. That&#39;s when the real problem became impossible to ignore: QRX could discover all of this, but every application still had to invent its own internal representation of the result. The protocols already existed. RSS knew how to be RSS. Email knew how to be email. Git knew how to be Git. WebSocket knew how to be WebSocket. The technology wasn&#39;t missing. The directory was. What the web never got was one simple, universal way for an object to publish all of its interaction endpoints together. That missing primitive became &lt;code&gt;.flow&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Let&#39;s be very clear about what a Flow is. It isn&#39;t a feed, an API, an identity profile, a taxonomy, or another bloated metadata schema trying to describe the world. It is a published description of the ways an object can be interacted with. A Flow points to feeds, APIs, social accounts, messaging endpoints, repositories, calendars, payment addresses, or anything else an application understands. It answers exactly one question: &lt;strong&gt;How can I interact with this object?&lt;/strong&gt; A person, a website, a company, a podcast, a repository, a product, or a service can have one. Flow doesn&#39;t need to know what the object is. It doesn&#39;t define protocols, replace standards, or impose behavior. It simply exposes the interaction endpoints that already exist.&lt;/p&gt;
&lt;p&gt;A typical Flow is laughably simple:&lt;/p&gt;
&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;# FLOW
https://feed.example.com/blog
https://feed.example.com/podcast
https://youtube.com/@example
https://github.com/example
https://bsky.app/profile/example.com
https://mastodon.social/@example
https://x.com/example
https://linkedin.com/in/example
https://calendar.example.com/events.ics
https://api.example.com
wss://events.example.com
mailto:hello@example.com
tel:+15551234567
sms:+15551234567
geo:34.0522,-118.2437
bitcoin:bc1q...&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;That&#39;s it. Everything behind those endpoints remains exactly what it already is. Flow doesn&#39;t replace existing technologies; it makes them discoverable from one place. The web spent decades inventing brilliant ways to publish, subscribe, message, call, clone, stream, pay, and connect, only to scatter those endpoints across HTML, footers, profile pages, documentation, QR codes, and proprietary platforms. Flow puts the map back with the object. A Flow doesn&#39;t even have to live in a &lt;code&gt;.flow&lt;/code&gt; file—a file is simply one possible representation, and the first public Flow already lives at &lt;code&gt;https://yeldar.org/flow&lt;/code&gt;. The same information can be exposed through HTML metadata, a &lt;code&gt;/.well-known/&lt;/code&gt; endpoint, HTTP headers, DNS records, or any other discovery mechanism an application understands. The transport isn&#39;t the standard. The standard is making interaction endpoints available in a predictable, machine-readable form. If Flow reminds you of something that already exists, OPML is the closest comparison. Both are machine-readable collections of endpoints. The difference is that OPML was designed to organize lists—primarily RSS feeds. Flow is not a list of feeds; it is a directory of interaction endpoints, regardless of protocol, platform, or purpose. RSS can be part of a Flow, but so can an API, a WebSocket endpoint, a Git repository, a phone number, or something that doesn&#39;t even exist yet.&lt;/p&gt;
&lt;p&gt;Flow doesn&#39;t belong to DirectFlow. DirectFlow simply happens to understand Flow, and it can generate one from almost anything it discovers. That&#39;s the point. Flow is an open format that any application can publish, read, generate, extend, or interpret however it wants. As proof of that, I built one of the simplest possible Flow applications: a Flow Reader. Give it nothing more than the URL of a Flow, and it discovers every RSS or Atom feed inside, fetches their contents, merges every item into a single chronological timeline, and presents them as one stream. It doesn&#39;t know anything about DirectFlow. It doesn&#39;t store subscriptions, maintain a database, or require an account. It simply consumes a Flow and decides what to do with it. The same Flow could just as easily power a podcast application that automatically subscribes to every feed it finds, a browser that exposes every available interaction for a website, an AI agent that instantly discovers communication endpoints without scraping HTML, or a search engine that indexes interaction endpoints instead of trying to infer them. Each application is free to interpret the same Flow differently because Flow describes interaction endpoints, not behavior. Tomorrow, someone will build something completely different on top of Flow. Because that&#39;s the whole idea. Flow isn&#39;t a product, a platform, or even necessarily a file. It is simply a common, machine-readable way for an object to publish how the rest of the world can interact with it. &lt;strong&gt;A Flow belongs to the object it describes, not the application that happens to read it.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The ideas don&#39;t stop here. This is only a small part of what I&#39;ve been building and thinking about. There are many more pieces that haven&#39;t been published yet, more experiments, more protocols, and more applications built on the same foundation. Right now, though, most of my days are spent driving people around Los Angeles. Progress happens between airport pickups, late-night rides, and the hours I can steal for building. Flow is simply the first part that&#39;s ready to leave my laptop and become part of the web.&lt;/p&gt;
</description>
      <pubDate>Thu, 09 Jul 2026 17:00:00 PDT</pubDate>
      <dc:creator>Yeldar Kudaibergen</dc:creator>
      <guid>https://yeldar.org/blog/wtf/</guid>
    </item>
    <item>
      <title>DirectFlow is not just &#39;another&#39; notification service</title>
      <link>https://yeldar.org/blog/dfcwc/</link>
      <description>&lt;p&gt;A domain should not only open a website.&lt;/p&gt;
&lt;p&gt;That sentence sounds small, but it contains most of what I am trying to build. Today, when someone enters a domain into a browser, the expected result is simple: the browser opens the site. The domain resolves, the server responds, and &lt;code&gt;index.html&lt;/code&gt; becomes the public face of whatever lives there. This is normal. This is useful. But it is also incomplete.&lt;/p&gt;
&lt;p&gt;A domain can represent more than a homepage. It can represent a person, a company, a publication, a podcast, a community, a product, a project, a movement, or an entire public presence spread across many platforms. The website may be only one surface. The actual thing people care about may live across YouTube, Instagram, RSS, podcasts, newsletters, GitHub, calendars, messaging channels, and platforms that do not exist yet.&lt;/p&gt;
&lt;p&gt;The web already contains many of these signals. They are just scattered. DirectFlow is an attempt to make them followable.&lt;/p&gt;
&lt;p&gt;A notification service starts when there is already something to send. DirectFlow starts earlier. It asks: what is the user actually trying to follow? Which sources belong together? Which changes matter? Who controls the source? Where should the resulting signal be delivered?&lt;/p&gt;
&lt;p&gt;The important object is not the platform account.&lt;/p&gt;
&lt;p&gt;The important object is the flow.&lt;/p&gt;
&lt;h2&gt;The Existing Model&lt;/h2&gt;
&lt;p&gt;Most platforms still operate under the same basic assumption:&lt;/p&gt;
&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;Creator
  ↓
Platform
    ↓
Followers&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;A YouTube subscription belongs to YouTube. An Instagram follow belongs to Instagram. A podcast subscription belongs to a podcast app. A newsletter subscription belongs to an email provider. Every platform creates its own version of the relationship, and the audience is expected to repeat the same administrative action again and again.&lt;/p&gt;
&lt;p&gt;Follow me here. Subscribe there. Join this list. Turn on notifications. Add the podcast. Follow the backup account. Join the Telegram. Watch the website. Check the calendar.&lt;/p&gt;
&lt;p&gt;That is not a clean relationship. That is repeated manual reconstruction.&lt;/p&gt;
&lt;p&gt;Platforms can host content. They can distribute content. They can recommend content. They can monetize content. They can be useful and important. But none of that automatically means the relationship itself should belong to the platform.&lt;/p&gt;
&lt;p&gt;A creator’s public presence is bigger than any one platform.&lt;/p&gt;
&lt;p&gt;A subscriber’s intent is also bigger than any one platform.&lt;/p&gt;
&lt;h2&gt;The Flow&lt;/h2&gt;
&lt;p&gt;DirectFlow treats the relationship differently:&lt;/p&gt;
&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;Creator
    ↓
  Flow
      ↓
   Subscriber
        ↓
      Delivery&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;A flow is not just a list of links. A flow is a living declaration of the sources that belong together and the updates that can be followed from them.&lt;/p&gt;
&lt;p&gt;A creator may have a website, blog feed, podcast feed, YouTube channel, Instagram profile, newsletter, GitHub repository, Telegram channel, calendar, and future sources that do not exist yet. Today, those things are usually presented as a static list. DirectFlow treats them as one followable structure.&lt;/p&gt;
&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;Website
RSS
Podcast
YouTube
Instagram
Newsletter
GitHub
Calendar
Future channels&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The user should not have to follow the same creator separately on every platform just to preserve one relationship. The user should be able to follow the flow once, choose which sources matter, and decide where updates should arrive.&lt;/p&gt;
&lt;p&gt;That is the distinction.&lt;/p&gt;
&lt;p&gt;A static bio link shows where a creator exists.&lt;/p&gt;
&lt;p&gt;A flow shows what is alive and how to receive it.&lt;/p&gt;
&lt;p&gt;A simple example is this:&lt;/p&gt;
&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;https://yeldar.org/flow&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;That can be a public declaration of where my active surfaces are. Blog, podcast, social profiles, feeds, channels, and anything else that belongs to my public presence. A human can read it. A system can read it. DirectFlow can read it. An AI assistant can read it. A user can create one manually. A creator can publish one officially.&lt;/p&gt;
&lt;p&gt;That is the direction.&lt;/p&gt;
&lt;h2&gt;Discovery should not depend on one door&lt;/h2&gt;
&lt;p&gt;The first source does not need to be a domain.&lt;/p&gt;
&lt;p&gt;A creator may claim a domain, a YouTube channel, an RSS feed, a podcast, an Instagram profile, a newsletter, a repository, or another public source. Each claim proves control over one part of the creator’s presence. Those claimed sources can then be attached to one flow.&lt;/p&gt;
&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;Claim source
    ↓
Attach to flow
      ↓
Make the flow followable&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;A domain is still special because it is often the strongest public identity anchor. It is portable. It is owned outside the platform. It can declare the flow directly. But it should not be the only door.&lt;/p&gt;
&lt;p&gt;A YouTube channel can open the same flow.&lt;/p&gt;
&lt;p&gt;A podcast feed can open the same flow.&lt;/p&gt;
&lt;p&gt;An Instagram profile can open the same flow.&lt;/p&gt;
&lt;p&gt;A domain can open the same flow.&lt;/p&gt;
&lt;p&gt;The user may enter from anywhere, but the destination is the relationship behind the source.&lt;/p&gt;
&lt;p&gt;This matters because people do not always start from the canonical place. Someone may find a creator through a YouTube video. Someone else may discover them through a podcast episode. Someone else may enter a domain. Someone else may scan a QR code. DirectFlow should be able to start from any of those surfaces and ask: what larger flow does this source belong to?&lt;/p&gt;
&lt;h2&gt;Flow as a Web Object&lt;/h2&gt;
&lt;p&gt;The web already has defaults.&lt;/p&gt;
&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;/
  opens the website

/robots.txt
  gives crawler instructions

/sitemap.xml
  describes discoverable pages

/.well-known/
  exposes known resources for specific purposes&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;A flow can become another declared web object.&lt;/p&gt;
&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;/flow
/.well-known/flow.json&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The purpose is simple:&lt;/p&gt;
&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;This is what belongs to this public presence.
This is what can be followed.
This is where updates can be found.&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;But the flow does not have to exist only as a separate file. It can also be assembled from the page itself. A website already exposes useful signals inside &lt;code&gt;&amp;lt;head&amp;gt;&lt;/code&gt;: RSS links, alternate feeds, canonical URLs, Open Graph metadata, profile links, WebSub hubs, JSON-LD, verification tags, and other declarations. DirectFlow can read those signals and construct a partial flow even before the creator publishes an official one.&lt;/p&gt;
&lt;p&gt;That creates three practical paths.&lt;/p&gt;
&lt;p&gt;DirectFlow can discover a flow automatically from &lt;code&gt;&amp;lt;head&amp;gt;&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;A user can suggest or assemble a flow manually.&lt;/p&gt;
&lt;p&gt;A creator can publish and claim the official flow.&lt;/p&gt;
&lt;p&gt;Those paths do not conflict. They reinforce each other. Automatic discovery gives the first useful result. User suggestions create demand and fill gaps. Creator ownership turns the flow into an authoritative public object.&lt;/p&gt;
&lt;h2&gt;DirectFlow does not need to move content&lt;/h2&gt;
&lt;p&gt;DirectFlow should not become another place where creators are forced to publish.&lt;/p&gt;
&lt;p&gt;It does not need to mirror videos. It does not need to copy posts. It does not need to host podcasts. It does not need to become another container for the same work.&lt;/p&gt;
&lt;p&gt;The content stays where the creator chose to publish it.&lt;/p&gt;
&lt;p&gt;DirectFlow only needs to answer a narrower question:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Has something changed?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;If the answer is yes, DirectFlow delivers the signal to the subscriber.&lt;/p&gt;
&lt;p&gt;That is why the architecture matters. DirectFlow can watch RSS, YouTube feeds, WebSub notifications, podcast feeds, websites, newsletters, webhooks, calendars, and other sources. But the content itself remains at the source. The creator keeps publishing where they already publish. The subscriber receives updates according to their own rules.&lt;/p&gt;
&lt;p&gt;DirectFlow does not replace the source.&lt;/p&gt;
&lt;p&gt;It preserves the relationship across sources.&lt;/p&gt;
&lt;h2&gt;Delivery belongs to the Subscriber&lt;/h2&gt;
&lt;p&gt;The creator should not have to decide how every subscriber receives updates.&lt;/p&gt;
&lt;p&gt;The platform should not control that either.&lt;/p&gt;
&lt;p&gt;One subscriber may want Telegram. Another may prefer email. Another may want WhatsApp. Another may want RSS. Another may want a daily summary. Another may want a webhook. Another may want no instant messages at all.&lt;/p&gt;
&lt;p&gt;That choice belongs to the subscriber.&lt;/p&gt;
&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;Flow
  ↓
User rules
  ↓
Delivery channel&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This is why DirectFlow is not merely a feed reader, a bio-link page, or a messaging bot. It can consume protocols. It can emit protocols. It can route events between them.&lt;/p&gt;
&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;RSS in        → Telegram out
YouTube in    → WeChat
Podcast in    → WhatsApp out
Website in    → Email out
Webhook in    → Calendar out&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The specific protocol is not the center.&lt;/p&gt;
&lt;p&gt;The user’s routing intent is.&lt;/p&gt;
&lt;p&gt;This also explains why notification is only the first visible layer. The deeper product is not “send me a message.” The deeper product is “let me decide how I stay connected to this public presence.”&lt;/p&gt;
&lt;h2&gt;Creators get a new surface&lt;/h2&gt;
&lt;p&gt;For creators, the first practical product is simple:&lt;/p&gt;
&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;Claim your flow.
Add your sources.
Let people follow you once.
Deliver updates anywhere.&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;That is the creator-facing version of DirectFlow.&lt;/p&gt;
&lt;p&gt;It is a living follow page. Not a static list of links. Not another platform profile. Not another audience silo.&lt;/p&gt;
&lt;p&gt;A creator can keep publishing everywhere and still give the audience one clean way to stay connected. When the creator adds a new channel, the flow can show it. When a source breaks, the flow can show it. When new updates appear, subscribers can receive them through the channels they selected.&lt;/p&gt;
&lt;p&gt;This is especially important for independent creators, podcasters, writers, developers, educators, local communities, and small companies. Their presence is often distributed by necessity. The website is one piece. YouTube is another. The podcast feed is another. Social platforms are another. Email is another.&lt;/p&gt;
&lt;p&gt;DirectFlow gives that distributed presence a structure.&lt;/p&gt;
&lt;h2&gt;Users can help map flows&lt;/h2&gt;
&lt;p&gt;Not every flow will be official on day one.&lt;/p&gt;
&lt;p&gt;If a user enters a domain or source that DirectFlow does not understand yet, that should not be a dead end. DirectFlow can still create a pending flow. The user can follow it. The user can suggest a known source. DirectFlow can keep looking.&lt;/p&gt;
&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;We do not know this flow yet.
You can follow it now.
You can suggest a channel if you know one.
We will keep looking.&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Those suggestions are not authority. They are clues.&lt;/p&gt;
&lt;p&gt;A creator can later claim the flow, confirm the correct sources, remove wrong ones, and turn scattered public signals into an official structure.&lt;/p&gt;
&lt;p&gt;In that model, users create demand.&lt;/p&gt;
&lt;p&gt;Creators confirm authority.&lt;/p&gt;
&lt;p&gt;DirectFlow connects the two.&lt;/p&gt;
&lt;h2&gt;AI is only one participant&lt;/h2&gt;
&lt;p&gt;AI fits into this model, but it is not the center of it.&lt;/p&gt;
&lt;p&gt;An AI assistant may discover an event, classify it, summarize it, or decide that the user should know about it. But the assistant should not need to invent a separate notification system for every use case.&lt;/p&gt;
&lt;p&gt;It can publish an event into the same flow infrastructure.&lt;/p&gt;
&lt;p&gt;Just like a website.&lt;/p&gt;
&lt;p&gt;Just like a podcast feed.&lt;/p&gt;
&lt;p&gt;Just like a repository.&lt;/p&gt;
&lt;p&gt;Just like a monitoring system.&lt;/p&gt;
&lt;p&gt;AI becomes another participant in the flow, not the owner of the relationship.&lt;/p&gt;
&lt;p&gt;This is important because AI is very good at interpretation, but long-term user relationships should not depend on one assistant, one chat, or one platform. If something matters enough to follow, it should be representable outside the assistant. It should become part of a flow.&lt;/p&gt;
&lt;h2&gt;The Actual Question&lt;/h2&gt;
&lt;p&gt;The question is not only:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;How should notifications work?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;That is the operational question.&lt;/p&gt;
&lt;p&gt;The deeper question is:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Where should the follow relationship live?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;If it lives inside one platform, it is limited by that platform.&lt;/p&gt;
&lt;p&gt;If it lives inside one application, it is limited by that application.&lt;/p&gt;
&lt;p&gt;If it lives inside the flow, then platforms become sources, applications become interfaces, and delivery becomes a user choice.&lt;/p&gt;
&lt;p&gt;That is the shift DirectFlow is exploring.&lt;/p&gt;
&lt;p&gt;A domain can open a website.&lt;/p&gt;
&lt;p&gt;A source can open a flow.&lt;/p&gt;
&lt;p&gt;A flow can preserve the relationship behind the source.&lt;/p&gt;
&lt;p&gt;And once that relationship is independent of any single platform, notification is no longer the product.&lt;/p&gt;
&lt;p&gt;Notification is just the first visible proof that the relationship exists.&lt;/p&gt;
</description>
      <pubDate>Sun, 05 Jul 2026 17:00:00 PDT</pubDate>
      <dc:creator>Yeldar Kudaibergen</dc:creator>
      <guid>https://yeldar.org/blog/dfcwc/</guid>
    </item>
    <item>
      <title>Notifications and Subscriptions belong to Users</title>
      <link>https://yeldar.org/blog/dfca/</link>
      <description>&lt;p&gt;I honestly don’t remember exactly how many days have passed since the last time I wrote code for DirectFlow. For now, it is not my main job. As a newly arrived immigrant in the U.S., I currently make money driving for Uber/Lyft. And honestly, I wouldn’t be surprised if you happened to be one of my many passengers.&lt;/p&gt;
&lt;p&gt;There are a lot of ideas around DirectFlow now. They need to be not only discussed, but gradually turned into working code.&lt;/p&gt;
&lt;p&gt;Because of the pause, I noticed that I had gotten a little out of the habit of programming. But after I finally confirmed that the main idea is technically possible, something inside me switched. I decided to start with podcasting, because that is where this idea can be demonstrated most clearly. The same approach, though, can work just as well with other kinds of apps too.&lt;/p&gt;
&lt;p&gt;The main idea is this: a subscription does not have to live only inside the app where a person consumes content. The author can publish wherever and however they want, and the audience should be able to receive updates where, how, and when it is convenient for them.&lt;/p&gt;
&lt;p&gt;Again: DirectFlow does not take the content. It works with the layer of subscription, signal, and delivery.&lt;/p&gt;
&lt;p&gt;Podcasts show this very well. Different podcast apps are often just different interfaces to the same content. You can listen to the same episode on the podcast’s website, in Apple Podcasts, Spotify, Overcast, Fountain, or anywhere else. That means the podcast subscription itself does not necessarily have to be stored in the same place where the person listens to it.&lt;/p&gt;
&lt;p&gt;And what turned out to be even more interesting to me is that the same thing applies to notifications.&lt;/p&gt;
&lt;p&gt;Why should notifications live only inside a specific app or website? Why can’t you set your preferences once and receive updates from different sources in the channel that is convenient for you? For example, some in Telegram, some in WhatsApp, some by email, some through SMS, some through MCP or another interface. Even on paper, if that is more convenient for someone.&lt;/p&gt;
&lt;p&gt;DirectFlow does not forbid native subscriptions and notifications. It simply adds another layer: subscriptions and notifications can exist on the user’s side. The user decides what to subscribe to, where to receive updates, and in what form.&lt;/p&gt;
&lt;p&gt;And the most important thing: this is no longer a theoretical model, but a working product.&lt;/p&gt;
&lt;p&gt;In its simplest form, DirectFlow has two main entities: a source and a delivery channel.&lt;/p&gt;
&lt;p&gt;A source is a website, podcast, YouTube channel, blog, email newsletter, app, or basically any object where something new can appear.&lt;/p&gt;
&lt;p&gt;A delivery channel is the place where the user wants to receive the signal. It can be Telegram, WhatsApp, email, SMS, push, calendar, MCP, or something else.&lt;/p&gt;
&lt;p&gt;To describe a source, I started using a flow file. Inside it, you can list different channels where the same author, website, or project publishes updates.&lt;/p&gt;
&lt;pre class=&quot;language-flow&quot;&gt;&lt;code class=&quot;language-flow&quot;&gt;# &lt;span class=&quot;token constant&quot;&gt;FLOW&lt;/span&gt;

&lt;span class=&quot;token literal-property property&quot;&gt;https&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;feed&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;yeldar&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;org&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;blog
&lt;span class=&quot;token literal-property property&quot;&gt;https&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;feed&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;yeldar&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;org&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;podcast
&lt;span class=&quot;token literal-property property&quot;&gt;https&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;bsky&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;app&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;profile&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;yeldar&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;org
&lt;span class=&quot;token literal-property property&quot;&gt;https&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;linkedin&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;com&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;yeldar
&lt;span class=&quot;token literal-property property&quot;&gt;https&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;www&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;instagram&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;com&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;yeldarx&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;
&lt;span class=&quot;token literal-property property&quot;&gt;https&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;www&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;threads&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;com&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;@yeldarx&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;So a source can publish in several places at once, and DirectFlow can track those channels and deliver updates to the user wherever they choose: Telegram, WhatsApp, email, SMS, or another channel.&lt;/p&gt;
&lt;p&gt;At the same time, a flow file does not always have to be created manually. QRX can help recognize the source and assemble that file. Often, everything needed is already in the HTML of the page itself, more specifically inside the &lt;code&gt;&amp;lt;head&amp;gt;&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;At the current stage, DirectFlow simply notifies the user when something new appears from a source: a post, episode, video, email, event, or another signal.&lt;/p&gt;
&lt;p&gt;And here, it is not only delivery that matters, but also the precision of the notification itself. The user should not subscribe to abstract “notifications,” but to a clear signal with a precise name. Then the source gives the user exactly what the user chose.&lt;/p&gt;
&lt;p&gt;I plan to make the project’s code private, but open to people who are genuinely interested in the idea. If someone suggests improvements, I will be happy to accept them. I know for sure that there are people who write code better than I do. But for me, right now, the important thing is not to prove whose code is better, but to preserve the meaning of the idea.&lt;/p&gt;
&lt;p&gt;The idea of DirectFlow is already fairly coherent, but I still have not found its final version. The further I abstract it, the stronger it becomes.&lt;/p&gt;
&lt;p&gt;I even tried to “break” it with AI, but every time it turned out the opposite way: AI does not so much destroy this idea as it starts to look like one of DirectFlow’s possible users. And AI can be both a source and a delivery channel.&lt;/p&gt;
&lt;p&gt;At some point, that surprised me. DirectFlow can use AI as a tool, but DirectFlow itself does not have to depend on AI. It can exist and work entirely without it.&lt;/p&gt;
&lt;p&gt;When AI needs to send a notification to a user, it will be easier for it to use an existing delivery layer than to create that layer from scratch. And the user will not have to configure their preferences all over again in every new app, service, or interface.&lt;/p&gt;
&lt;p&gt;Then an even more interesting part begins: the user’s subscriptions can become not only a notification channel, but also trusted context for AI. With the user’s permission, DirectFlow will be able to show what sources the person is subscribed to, which signals matter, what exactly was used for an answer, and how it influenced the result. But that is already a separate big topic that I cannot stop thinking about.&lt;/p&gt;
&lt;p&gt;The project will definitely have an external API and MCP. That means any website, app, author, or source will be able to connect DirectFlow on their side. Users will be able to receive notifications wherever it is convenient for them, and the source itself will be able to get rid of part of the infrastructure burden.&lt;/p&gt;
&lt;p&gt;Ideally, the source will only need to send one signal, and DirectFlow will deliver it to where it needs to go, in the form in which the user wants to receive it.&lt;/p&gt;
&lt;p&gt;I even expect podcast apps, blogging platforms, and other services to appear that use DirectFlow as an external layer for subscriptions and notifications.&lt;/p&gt;
&lt;p&gt;Today I did a major refactor of the DirectFlow code and added a lot of tests. Now I need to go out and drive rideshare. I really want to spend more time on this project, and I will try to write code every day: improve the core, add new sources, and add new delivery channels.&lt;/p&gt;
&lt;p&gt;What sources would you want to subscribe to? And where would you want to receive updates?&lt;/p&gt;
&lt;p&gt;We have reached the point where subscriptions and notifications can technically be just as convenient as they are inside centralized apps, while still belonging to users, not platforms.&lt;/p&gt;
</description>
      <pubDate>Sat, 04 Jul 2026 17:00:00 PDT</pubDate>
      <dc:creator>Yeldar Kudaibergen</dc:creator>
      <guid>https://yeldar.org/blog/dfca/</guid>
    </item>
    <item>
      <title>The ⊕ Direct Follow button might actually work on any website</title>
      <link>https://yeldar.org/blog/dftg/</link>
      <description>&lt;p&gt;A few weeks ago, I &lt;a href=&quot;https://yeldar.org/blog/dfb/&quot;&gt;wrote&lt;/a&gt; that the &lt;em&gt;Follow&lt;/em&gt; button on a website should perhaps behave not as an action, but as a signal. At the time, I described it like this:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The button will become a live interface with its own signals and actions.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I think I&#39;m finally starting to understand what I meant. Most Follow buttons on the web work roughly the same way:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Click the button.&lt;/li&gt;
&lt;li&gt;Leave the website.&lt;/li&gt;
&lt;li&gt;Open another platform.&lt;/li&gt;
&lt;li&gt;Follow the source there.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This creates a strange situation. We say that we follow a website, a creator, or a project, but in reality we follow the platform through which that source is distributed. That is why I keep coming back to the idea of Direct Follow.&lt;/p&gt;
&lt;p&gt;Not following a platform.&lt;/p&gt;
&lt;p&gt;Not following an app.&lt;/p&gt;
&lt;p&gt;But following the source itself.&lt;/p&gt;
&lt;p&gt;Technically, this can be powered by many different mechanisms: RSS, podcasts, social networks, website monitoring, and many others. But the user shouldn&#39;t have to think about any of that. For the user, there is only one thing that matters: the source.&lt;/p&gt;
&lt;p&gt;If a website is interesting, the user clicks:&lt;/p&gt;
&lt;p&gt;⊕ Direct Follow&lt;/p&gt;
&lt;p&gt;And from that moment on, a relationship exists between the user and the source. The word &amp;quot;relationship&amp;quot; has become the most important word in this entire idea.&lt;/p&gt;
&lt;p&gt;In a previous post, I wrote:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The website itself becomes part of the subscription experience.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Today, I would put it even more simply. A website stops being a place that must be checked manually from time to time. It becomes a source that can be followed directly.&lt;/p&gt;
&lt;p&gt;This week I built the first local version of Direct Follow and successfully tested the core scenario for the first time. At that moment, the idea stopped being just something on paper.&lt;/p&gt;
&lt;p&gt;It became a working prototype. There is still a long road ahead before this becomes a complete product. But for the first time, I genuinely started to believe that subscribing to updates from any website might actually be possible.&lt;/p&gt;
&lt;p&gt;And if this idea succeeds, the most important part of the entire system may turn out to be a single small button:&lt;/p&gt;
&lt;p&gt;⊕ Direct Follow&lt;/p&gt;
</description>
      <pubDate>Sun, 07 Jun 2026 17:00:00 PDT</pubDate>
      <dc:creator>Yeldar Kudaibergen</dc:creator>
      <guid>https://yeldar.org/blog/dftg/</guid>
    </item>
    <item>
      <title>Clarification about DirectFlow and QRX</title>
      <link>https://yeldar.org/blog/pwr/</link>
      <description>&lt;p&gt;If I had heard about QRX for the first time on &lt;a href=&quot;https://weekly.podnews.net/1538779/episodes/19257420-spotify-s-new-features-and-why-did-bipoc-podcast-creators-close&quot;&gt;Podnews Weekly Review&lt;/a&gt;, I would probably have wondered why a simple &lt;a href=&quot;https://www.rssboard.org/rss-autodiscovery&quot;&gt;RSS autodiscovery&lt;/a&gt; feature was being called &amp;quot;flow&amp;quot; or &amp;quot;DirectFlow&amp;quot;.&lt;/p&gt;
&lt;p&gt;&#39;DirectFlow&#39; is the name of the first application built on top of &lt;a href=&quot;https://qrx.dev/&quot;&gt;QRX&lt;/a&gt; (Quick Response Experience). The name &#39;QRX&#39; came from QR codes. It was when I added QR code support to the &lt;a href=&quot;https://directflow.app/&quot;&gt;DirectFlow&lt;/a&gt; app that I realized the idea was much bigger than following websites and podcasts directly. The goal of QRX is simple: let applications discover what experiences are available from a URL.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Podcasters&lt;/strong&gt; usually don&#39;t need to do anything. Paste the website address of almost any podcast into the DirectFlow app and that&#39;s it. If the website contains a &lt;em&gt;special magic link&lt;/em&gt;, you will successfully subscribe to the podcast. This also works with links to any page on the podcast&#39;s website. To discover a special magic link automatically, DirectFlow, through QRX, uses a technology that has existed for more than 25 years.&lt;/p&gt;
&lt;p&gt;Soon, users will be able to subscribe not only from website URLs, but also by pasting or sharing links from podcast apps such as Apple Podcasts, Spotify, Overcast, Pocket Casts, and others.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Podcast applications&lt;/strong&gt; don&#39;t even need to add QR code scanning to benefit from QRX. Simply allow users to paste a website URL into the search box and automatically discover RSS feeds from the page&#39;s &lt;code&gt;&amp;lt;head&amp;gt;&lt;/code&gt; section, exactly as the DirectFlow app does today. Or simply allow users to share a website URL directly into the application.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;About flows.&lt;/strong&gt; As I continued working on QRX, RSS became just one possible result among &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/head#see_also&quot;&gt;many&lt;/a&gt;. Since &lt;code&gt;&amp;lt;head&amp;gt;&lt;/code&gt; contains other &lt;em&gt;machine-readable signals&lt;/em&gt; as well, I started using the word &amp;quot;flow&amp;quot; instead of &amp;quot;feed&amp;quot;. In the DirectFlow app, a feed is one type of flow.&lt;/p&gt;
&lt;p&gt;So QRX is the &lt;em&gt;method&lt;/em&gt;. The DirectFlow app is the first application built on top of it. I believe the DirectFlow app solved a podcast subscription problem, both technically and practically. But it is not limited to podcasts.&lt;/p&gt;
&lt;p&gt;I&#39;m curious to see what the podcast industry does with this idea. From my side, I&#39;m open to any conversations, feedback, partnerships, or experiments around it.&lt;/p&gt;
</description>
      <pubDate>Thu, 28 May 2026 17:00:00 PDT</pubDate>
      <dc:creator>Yeldar Kudaibergen</dc:creator>
      <guid>https://yeldar.org/blog/pwr/</guid>
    </item>
    <item>
      <title>( Direct follow ⊕ )</title>
      <link>https://yeldar.org/blog/dfb/</link>
      <description>&lt;p&gt;The &#39;follow&#39; button on the web probably should behave like a signal. Most buttons today work like this:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;click&lt;/li&gt;
&lt;li&gt;leave the website&lt;/li&gt;
&lt;li&gt;open another app/platform&lt;/li&gt;
&lt;li&gt;maybe subscribe there&lt;/li&gt;
&lt;li&gt;maybe come back&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;But what if following worked more like a connection state? So I started experimenting with a DirectFlow button ⊕ on my Kazakh language podcast &lt;a href=&quot;https://podcast.yeldar.org/&quot;&gt;website&lt;/a&gt;. Right now the button is in its simplest form:&lt;/p&gt;
&lt;img src=&quot;https://yeldar.org/assets/images/blog/dfb/df-btn-v1-simple.jpg&quot; alt=&quot;&quot; /&gt;
&lt;p&gt;After clicking the button, you are taken to the &lt;a href=&quot;https://directflow.app/&quot;&gt;DirectFlow&lt;/a&gt; homepage, which immediately follows the podcast for you. But in the future, it will work like this:&lt;/p&gt;
&lt;p&gt;Initial state:&lt;/p&gt;
&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;Direct follow ⊕&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;After click:&lt;/p&gt;
&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;Following...&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then:&lt;/p&gt;
&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;Followed · View&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;No “open another app/platform” step. And finally, the stable connected state:&lt;/p&gt;
&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;DirectFlow ✓&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;When you hover over it:&lt;/p&gt;
&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;Unfollow · View&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The website no longer feels separated from the web, where you can only follow it through some centralized app. The website itself becomes part of the subscription experience. The button will become a live interface with its own signals and actions. Like it becomes a tiny status widget representing the relationship between the user and the website.&lt;/p&gt;
&lt;p&gt;The button dynamically uses the &lt;em&gt;current&lt;/em&gt; page URL. Every time you click it, df will check all available flows on the website, follow the first one, and show other available options, like a comments flow. This will work on every page - at least that’s the idea for now. It means now the page itself becomes the subscription target. I think this is a very different mental model from the current web.&lt;/p&gt;
&lt;p&gt;I would already like to add this button to this website, but the RSS feed here doesn’t contain enclosures yet, and as I &lt;a href=&quot;https://yeldar.org/blog/df/&quot;&gt;mentioned&lt;/a&gt; earlier, df currently supports only those kinds of flows.&lt;/p&gt;
</description>
      <pubDate>Tue, 26 May 2026 17:00:00 PDT</pubDate>
      <dc:creator>Yeldar Kudaibergen</dc:creator>
      <guid>https://yeldar.org/blog/dfb/</guid>
    </item>
    <item>
      <title>Follow podcasts directly with QRX</title>
      <link>https://yeldar.org/blog/dfsp/</link>
      <description>&lt;p&gt;After DirectFlow was &lt;a href=&quot;https://podnews.net/update/uk-podcast-metrics-consolidation#story10&quot;&gt;mentioned&lt;/a&gt; in Podnews, I decided to explain in a bit more detail how podcast subscriptions can work now. Besides scanning a QR code or typing a website address manually, DirectFlow can already follow podcasts in several different ways.&lt;/p&gt;
&lt;p&gt;In DirectFlow, you can already follow a podcast by:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;scanning a QR code of the podcast website&lt;/li&gt;
&lt;li&gt;pasting the website link&lt;/li&gt;
&lt;li&gt;pasting a link to almost any page of the podcast website&lt;/li&gt;
&lt;li&gt;typing the domain manually and pressing Enter&lt;/li&gt;
&lt;li&gt;or using this url:&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;language-html&quot;&gt;&lt;code class=&quot;language-html&quot;&gt;https://directflow.app/follow?url=https:// podcast website/page adresss&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Soon, DirectFlow will also support following podcasts directly from links shared by podcast players and podcast apps. The important part is this: everything here revolves around the &lt;em&gt;domain&lt;/em&gt;. Once DirectFlow receives a website link, it tries to discover the podcast flow directly from the website itself. So the website becomes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;the identity;&lt;/li&gt;
&lt;li&gt;the connection point;&lt;/li&gt;
&lt;li&gt;the thing you follow directly.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And this type of interaction with domains is what I call Quick response experience — &lt;a href=&quot;https://qrx.dev/&quot;&gt;QRX&lt;/a&gt;. It&#39;s a different way of thinking about what websites and links can do.&lt;/p&gt;
&lt;p&gt;For podcast developers, podcast hosting platforms, and website owners: if you want DirectFlow to reliably discover your podcast, expose the RSS feed in the HTML &lt;code&gt;&amp;lt;head&amp;gt;&lt;/code&gt; on every page of the website.&lt;/p&gt;
&lt;p&gt;Example:&lt;/p&gt;
&lt;pre class=&quot;language-html&quot;&gt;&lt;code class=&quot;language-html&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;link&lt;/span&gt;
  &lt;span class=&quot;token attr-name&quot;&gt;rel&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;alternate&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
  &lt;span class=&quot;token attr-name&quot;&gt;type&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;application/rss+xml&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
  &lt;span class=&quot;token attr-name&quot;&gt;title&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;Podcast RSS Feed&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
  &lt;span class=&quot;token attr-name&quot;&gt;href&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;https://example.com/feed.xml&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This allows software to discover podcast feeds directly from websites, even when someone shares a random episode page, article, or other URL from the site. Feed autodiscovery reference: &lt;a href=&quot;https://www.rssboard.org/rss-autodiscovery&quot;&gt;https://www.rssboard.org/rss-autodiscovery&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;As a podcast, your RSS feed should also contain proper enclosures:&lt;/p&gt;
&lt;pre class=&quot;language-xml&quot;&gt;&lt;code class=&quot;language-xml&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;enclosure&lt;/span&gt;
  &lt;span class=&quot;token attr-name&quot;&gt;url&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;https://example.com/episode1.mp3&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
  &lt;span class=&quot;token attr-name&quot;&gt;length&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;12345678&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
  &lt;span class=&quot;token attr-name&quot;&gt;type&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;audio/mpeg&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;RSS feed enclosure reference: &lt;a href=&quot;https://www.rssboard.org/rss-specification#ltenclosuregtSubelementOfLtitemgt&quot;&gt;https://www.rssboard.org/rss-specification#ltenclosuregtSubelementOfLtitemgt&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Maybe podcasts were always meant to be followed this way - directly from websites themselves. The web already had most of the pieces. QRX is mostly about reconnecting them into a simpler interaction model.&lt;/p&gt;
</description>
      <pubDate>Mon, 25 May 2026 17:00:00 PDT</pubDate>
      <dc:creator>Yeldar Kudaibergen</dc:creator>
      <guid>https://yeldar.org/blog/dfsp/</guid>
    </item>
    <item>
      <title>DirectFlow App – follow podcasts directly</title>
      <link>https://yeldar.org/blog/df/</link>
      <description>&lt;p&gt;I’ve been experimenting with a small project called &lt;a href=&quot;https://directflow.app/&quot;&gt;DirectFlow&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Right now it looks like a simple podcast app, but the original idea behind it was actually much broader. At first, DirectFlow was an experiment around the idea that people should be able to &lt;em&gt;follow websites directly&lt;/em&gt;, without depending so heavily on platforms, directories, or centralized systems in between.&lt;/p&gt;
&lt;p&gt;The idea was simple: paste almost any website URL into a form, and the application would try to discover machine-readable flows directly from the website itself. RSS feeds, Atom feeds, JSON feeds, and other things websites already expose in their HTML metadata.&lt;/p&gt;
&lt;p&gt;But while building it, I realized something important: most people do not naturally think in terms of “following websites directly.” It is still not a familiar user experience outside of a few technical communities.&lt;/p&gt;
&lt;p&gt;Podcasting, however, immediately stood out as a place where this problem is very real.&lt;/p&gt;
&lt;p&gt;Subscribing to podcasts today is still strangely complicated compared to the rest of the modern internet. Usually you need to search inside a specific app, rely on podcast directories, or manually deal with RSS feeds that normal users were never supposed to think about in the first place.&lt;/p&gt;
&lt;p&gt;At the same time, the underlying infrastructure already exists and already works surprisingly well. Most podcast websites already expose feeds automatically. RSS already works. Open podcasting already works. The problem is mostly the user experience around it.&lt;/p&gt;
&lt;p&gt;So I decided to intentionally narrow DirectFlow down to podcasts for now.&lt;/p&gt;
&lt;p&gt;Today the idea is intentionally simple: you paste a podcast website URL into DirectFlow, scan a QR code, or share a link into the app — and DirectFlow automatically discovers the podcast feed and subscribes you to it.&lt;/p&gt;
&lt;p&gt;No searching through directories.&lt;/p&gt;
&lt;p&gt;No explaining RSS.&lt;/p&gt;
&lt;p&gt;No copying feed URLs manually.&lt;/p&gt;
&lt;p&gt;No platform lock-in.&lt;/p&gt;
&lt;p&gt;Just follow the podcast directly from its website.&lt;/p&gt;
&lt;p&gt;The current version is still very experimental, but it already supports both audio and video podcasts. If a feed contains playable audio or video enclosures, DirectFlow can detect them and play episodes directly inside the app.&lt;/p&gt;
&lt;p&gt;At some point I also realized that my own definition of podcasting had become much simpler than many industry discussions around it. To me, a podcast is basically just an open feed with playable enclosures. That’s it. If a feed contains playable audio or video files, applications should be able to discover it, subscribe to it, and play it.&lt;/p&gt;
&lt;p&gt;I also started using the word “flow” instead of only “feed,” because it feels broader and more correct for what I’m experimenting with. A feed is a technical format. A flow is more like a relationship between a website and an application.&lt;/p&gt;
&lt;p&gt;Some of these ideas later evolved into another small project called &lt;a href=&quot;https://qrx.dev/&quot;&gt;QRX&lt;/a&gt;, which experiments with discovering machine-readable flows from normal URLs and QR codes. I &lt;a href=&quot;https://yeldar.org/blog/qrx/&quot;&gt;wrote&lt;/a&gt; a bit more about that separately already.&lt;/p&gt;
&lt;p&gt;Right now DirectFlow is mostly a place where I experiment with podcast UX ideas in public. Maybe some of these ideas eventually become part of a bigger standalone application. Maybe some of them simply help existing podcast apps become better.&lt;/p&gt;
&lt;p&gt;Either way, I think podcast subscriptions should feel much more natural than they do today.&lt;/p&gt;
&lt;p&gt;I’ve been working with podcasts for many years now, both technically and creatively, and one thing I’ve seen again and again is how much friction still exists around subscriptions.&lt;/p&gt;
&lt;p&gt;I’ve had to explain RSS feeds to listeners countless times. I’ve had to explain how podcast apps work, how to copy a feed URL, where to paste it, why some apps behave differently, why searching sometimes fails, why a podcast appears on one platform but not another, and so on.&lt;/p&gt;
&lt;p&gt;And every extra step loses people.&lt;/p&gt;
&lt;p&gt;You can literally watch listeners disappear during the subscription process. Someone gets interested in a podcast, but before they actually subscribe, they already have to understand too many things that normal users should never have to think about. RSS feeds, directories, platform differences, search indexing, manual imports — all of this still leaks into the user experience.&lt;/p&gt;
&lt;p&gt;That’s one of the main reasons I started building DirectFlow.&lt;/p&gt;
&lt;p&gt;And honestly, I think I may have finally found a very simple solution to this problem.&lt;/p&gt;
&lt;p&gt;Imagine if podcast apps like Pocket Casts, Apple Podcasts, Fountain, Overcast, or others simply added a QR scanner inside the app itself. A person scans a QR code from a podcast website, poster, video, or screen — and the app immediately discovers the podcast feed and subscribes them natively.&lt;/p&gt;
&lt;p&gt;Or imagine someone simply pasting a podcast website URL into a podcast app, and the app instantly showing the podcast page and follow button automatically, without requiring the user to understand RSS at all. That changes the entire subscription experience.&lt;/p&gt;
&lt;p&gt;The really interesting part is that subscriptions would finally happen directly through the podcast’s actual open feed itself, instead of depending entirely on platform-specific IDs, internal databases, or centralized discovery systems.&lt;/p&gt;
&lt;p&gt;The infrastructure already exists. Most podcast websites already expose their feeds publicly. Applications simply need to discover and use them more naturally. I think it will be very interesting to watch how podcast subscriptions evolve from here.&lt;/p&gt;
&lt;p&gt;Podcasting has been a huge part of my life for a long time. I’ve created podcasts myself, worked with podcasters, built podcast-related tools, explained podcast infrastructure to companies and creators, and spent years thinking about how open podcasting actually works underneath the surface.&lt;/p&gt;
&lt;p&gt;I’m even writing a book about podcasting right now because I think there are still many things about this medium that people outside the industry do not fully see yet.&lt;/p&gt;
&lt;p&gt;That’s also why DirectFlow is not just a random experiment for me. It comes from years of seeing the same UX problems repeat over and over again, and finally trying to build a simpler approach around the infrastructure podcasting already has.&lt;/p&gt;
</description>
      <pubDate>Thu, 14 May 2026 17:00:00 PDT</pubDate>
      <dc:creator>Yeldar Kudaibergen</dc:creator>
      <guid>https://yeldar.org/blog/df/</guid>
    </item>
    <item>
      <title>QRX means Quick response experience</title>
      <link>https://yeldar.org/blog/qrx/</link>
      <description>&lt;p&gt;Right now I’m working on the idea that people should be able to follow sources directly, without platforms or intermediaries in between. And this is already possible. You can already subscribe to podcasts through &lt;a href=&quot;https://directflow.app/&quot;&gt;DirectFlow&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Originally, I built DirectFlow so that a person could paste almost any website URL into a form, and DirectFlow would immediately discover the main flow of that site and subscribe to it. I started using the word “flow” because it felt broader than just “feed.” A feed is more of a technical format. A flow can also represent other machine-readable relationships.&lt;/p&gt;
&lt;p&gt;At some point I started thinking: what if a user simply scanned a website QR code, and DirectFlow instantly subscribed them to it? After all, DirectFlow already discovers the main flow of a website just from its URL. The system does not really care how that URL arrives - whether it was pasted into a form, shared from another app, typed manually, or... scanned from a QR code. That was the moment everything clicked.&lt;/p&gt;
&lt;p&gt;I realized I had accidentally solved one of the fundamental UX problems of podcasting: subscription. Suddenly, subscribing to a podcast could become as natural and lightweight as following someone on social media for the first time.&lt;/p&gt;
&lt;p&gt;Then I started looking around to see who else was thinking about QR codes this way. There were hints of similar ideas, but almost all of them had the same limitation: a QR code always triggered one fixed interpretation or one predefined action.&lt;/p&gt;
&lt;p&gt;In my case, the QR code itself stayed completely unchanged, but what applications could discover from it was no longer limited. If a website exposes machine-readable flows in its HTML head or HTTP headers, then different applications can discover completely different things from the exact same URL.&lt;/p&gt;
&lt;p&gt;For example, &lt;em&gt;https://example.com&lt;/em&gt; may expose a podcast RSS feed in its head metadata. If a podcast player scans that website QR code, it can automatically discover the feed and immediately offer the user a native “Follow podcast” experience. This scenario already works in DirectFlow using the &lt;a href=&quot;https://www.npmjs.com/package/@qrxcode/js&quot;&gt;QRX JavaScript SDK&lt;/a&gt;. That was the moment &lt;a href=&quot;https://qrx.dev/&quot;&gt;QRX&lt;/a&gt; became a separate project outside of DirectFlow.&lt;/p&gt;
&lt;p&gt;About the name. At first, the working name was QR-UX, because this idea is really about changing the user experience around QR codes without changing the QR code itself or the existing web infrastructure behind it. The QR code, the URL, and the website all stay the same. What changes is the experience applications can provide after scanning. Later the name became QRX. And eventually I realized it could naturally stand for &lt;em&gt;Quick Response Experience&lt;/em&gt;, because that is exactly what this approach changes: the experience of interacting with QR codes and URLs.&lt;/p&gt;
&lt;p&gt;I’ll continue writing about QRX here. Over the last week I’ve accumulated quite a lot of thoughts, observations, and already a bit of real implementation experience.&lt;/p&gt;
</description>
      <pubDate>Thu, 14 May 2026 17:00:00 PDT</pubDate>
      <dc:creator>Yeldar Kudaibergen</dc:creator>
      <guid>https://yeldar.org/blog/qrx/</guid>
    </item>
    <item>
      <title>Learn programming through undestanding</title>
      <link>https://yeldar.org/blog/lptu/</link>
      <description>&lt;p&gt;Sometimes I think about writing a blog post and then suddenly it feels like: “this is so banal”, “who would even care about this, let alone find it useful.” But still, let me try to explain what I’m experiencing right now in my programming journey.&lt;/p&gt;
&lt;p&gt;It’s strange. I realized that even though I already built ProxyFeed (backend in TS), it feels like I’ve never actually programmed before. It turned out that, in my current understanding, programming is when you write code yourself and run the program to see whether it works or not. And a person becomes a programmer exactly at that moment. A professional programmer becomes one when somebody pays them for it — usually money, by agreement.&lt;/p&gt;
&lt;p&gt;So yeah, I came up with something again. And I’m 100% going to build it. It’s one of those “projects” that simply deserves to exist, and &lt;a href=&quot;https://yeldar.org/blog/ai-study-buddy/&quot;&gt;my buddy&lt;/a&gt; confirmed it too. The funniest and most dramatic part is that I literally cannot not build it. So yes, in a more or less sane state of mind, I’m voluntarily getting myself into this story. Let’s see what happens.&lt;/p&gt;
&lt;p&gt;Even though I had never written a single line of Go in my life, I decided that Go would become the main backend language for &lt;a href=&quot;https://directflow.app/&quot;&gt;DirectFlow&lt;/a&gt;. I looked at the situation from many different angles and it seems that, at this moment, Go is the most suitable language for me. I even realized why. It’s strange to understand the difference between TypeScript and Go not only through syntax, but through the character, logic, explanations, and style of the language itself.&lt;/p&gt;
&lt;p&gt;I was immediately surprised that &lt;code&gt;:=&lt;/code&gt; in Go means both creating and assigning a value. Previously, I had creation and assignment both through &lt;code&gt;=&lt;/code&gt;, meaning one action represented two completely different things. Anyway, I liked Go because it feels like the language is built similarly to how I am as a person. I don’t fully understand it yet myself, but I like that it works.&lt;/p&gt;
&lt;p&gt;My next realization is that we learn programming by doing it. By writing code, creating programs, and running them. Previously, it felt to me like first you learn, and &lt;em&gt;only&lt;/em&gt; then you program. As if you cannot program until you’ve learned how. Sounds logical, right?&lt;/p&gt;
&lt;p&gt;But here’s what I discovered: computers do not grow naturally like trees. Humans created computers, languages, and embedded their logic into them. Our job is simply to &lt;em&gt;understand&lt;/em&gt; how things work — not memorize syntax. Then write code. Realize why it&#39;s wrong I mean error. Again and again. That’s it.&lt;/p&gt;
&lt;p&gt;But here’s what I discovered: computers do not grow naturally like trees. Humans created computers, programming languages, and embedded their logic into them. Our job is simply to understand how things work, not memorize syntax. Then write code. See why it’s wrong, fix the error, understand it. Then write code again. Again and again. That’s what a developer’s job is, right? And apparently, this is how a person becomes a programmer. You simply write code, understand it, and when you run the program — you are a programmer.&lt;/p&gt;
&lt;p&gt;I partially understand that the “writing code” part may sound old-fashioned now, especially when it feels like AI writes code for everyone. But this is my current understanding, and I’m sure it will evolve further. And I will definitely keep writing about it here.&lt;/p&gt;
&lt;p&gt;Follow my blog directly on DirectFlow: &lt;a href=&quot;https://directflow.app/follow?url=https://yeldar.org&quot;&gt;https://directflow.app/follow?url=https://yeldar.org&lt;/a&gt;&lt;/p&gt;
</description>
      <pubDate>Sat, 09 May 2026 17:00:00 PDT</pubDate>
      <dc:creator>Yeldar Kudaibergen</dc:creator>
      <guid>https://yeldar.org/blog/lptu/</guid>
    </item>
</channel>
</rss>