Six articles, 200 views. So I read the feed's source code. A developer who published six articles on DEV.to over two months received only about 200 total views, prompting an investigation into the platform's feed algorithm. By reading the open-source Forem code, the developer found that the relevance score is a product of multiple factors, with zero comments scoring 0.15 and two comments scoring 0.66, and that the age factor drops sharply after day seven. The developer concluded that the writing never got a real test due to the algorithm's design. Six articles in two months. About 200 views. Total. Here is the full table, because a postmortem without numbers is just a mood: | | Article | Views | Reactions | Comments | |---|---|---|---|---| | 1 | Coding agents should not hold write credentials | 58 | 1 | 5 | | 2 | Agent workflows need an impact boundary | 26 | 0 | 0 | | 3 | Blocked is not failed: agents need boundary feedback | 31 | 1 | 0 | | 4 | A write is not just a write | 38 | 0 | 1 | | 5 | The reasoning was right, but the world shifted | 29 | 1 | 2 | | 6 | The write was safe. The context was not. | <25 | 1 | 0 | A series is supposed to compound. Each part should bring readers to the next one. Mine did the opposite. The posts have not been live for the same amount of time, so this is not a controlled comparison. But no later part shows a clear sign of inheriting an audience from the one before. Two months in, the most-read article is still the first. The comfortable explanation is that the articles are bad. Maybe. A few readers did leave substantive comments, and another author picked up one of the terms from the series. That was encouraging, but two hundred views is far too small a sample to separate writing quality from distribution. The honest version is narrower: The writing never got a real test. Another explanation is that quiet, conceptual titles do not work in a feed. That is not enough either. "your agent can think. it can't remember." https://dev.to/ghostbuild/your-agent-can-think-it-cant-remember-5e1o had 144 reactions when I checked, so this kind of title can work. That does not mean my specific titles worked. So I stopped guessing and looked at the platform. dev.to runs on Forem, and Forem is open source. Part of the logic behind its personalized feed is public. The repository contains the query builder https://github.com/forem/forem/blob/main/app/services/articles/feeds/variant query.rb , the feed variants https://github.com/forem/forem/blob/main/config/feed-variants/20240701-variant-c.json , and the checked-in experiment mix https://github.com/forem/forem/blob/main/config/field test.yml . I write about systems that make decisions from rules, state, and context. Then I sent six articles into another rule-driven system without reading its rules once. So I read them. One caveat before the numbers. The checked-in experiment config assigns 70 percent to one variant and 10 percent to each of three others, but that does not prove which exact configuration every DEV reader saw when my articles were published. The irony of quoting potentially stale config in a series about stale state is not lost on me. Treat these numbers as a public model of the feed, not as a live production trace. The relevance score is a product, not a sum. The query builder multiplies the configured factors, which means that one value near zero can sharply pull the candidate score down even when the others are strong. For signed-in readers, discovery is also time sensitive in this variant. The age factor is 1.0 on publication day, 0.2 on day seven, and 0.02 on day eight. Candidates can still be considered for about two weeks, but the first days carry most of the weight of this factor. Discussion on the article is another factor. Zero comments score 0.15 on that component, while two comments score 0.66. That makes the comments component about 4.4 times larger, but it does not mean that the article becomes 4.4 times more visible. The final ordering also uses a feed-success score, a clickbait penalty, and a small random term. The feed is personal too. In the 70-percent public variant, the same article gets a factor of 1.0 for a signed-in reader who follows the author and 0.01 for one who does not. User-specific factors are skipped for anonymous readers, so the same article can rank very differently for different people. Reactions, tag matches, language, and recommendation signals also take part in the calculation. No single factor explains the feed, but several weak ones can combine. The code does not explain the table, but it makes one mistake in my process easier to see. I had almost no existing audience. Several posts drew no discussion, and for the others I do not know whether the comments arrived early enough to matter. Most of the time, I had no repeatable distribution process. I published, waited, and started writing the next part. The few times I joined related discussions were also the times the work reached the right readers. The feed does not have to reject an article. In this public model, silence can simply become another multiplier. The best discussions around my work did not happen under my own articles. They started under other people's posts, where I showed up as a reader with something relevant to add. That is not a ranking insight. It is a simpler one: I got more from joining an existing conversation than from pressing publish and waiting. My process mostly stopped at publish. The title lesson is mine too. For an unknown author, the title carries most of the first impression. One of my weakest entrances was "Agent workflows need an impact boundary." It gives the conclusion before it gives a stranger the problem. Article five, "The reasoning was right, but the world shifted" https://dev.to/davidloibner/the-reasoning-was-right-but-the-world-shifted-3ngk , argues that an agent must not act on a world it never actually checked. Article six, "The write was safe. The context was not." https://dev.to/davidloibner/the-agent-should-not-choose-its-own-state-view-12hl , makes a related point about the context an agent reasons from. Both are about AI agents. They also turned out to be about me on dev.to. The writing may have been fine, but it never reached enough readers to know. I had not read the context I was publishing into, so the reasoning could have been right while the world it shipped into was still a guess. I still do not know exactly why these six articles stayed small. The writing may be part of it, the titles may be part of it, and starting with almost no audience certainly did not help. Reading the code did not settle any of that. It made one mistake clear: I had measured views. I had not measured distribution. I wrote six connected ideas and expected the series label to distribute them. I did not give each article its own entrance, and I also treated publish as the end of the work. A series is supposed to compound. Mine kept asking every article to find its first reader again. I know now that publishing is not enough. I still do not know how to do the rest without taking time away from the writing.