<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Mehiar Alsayou</title>
    <description>The latest articles on DEV Community by Mehiar Alsayou (@mehiar_alsayou_9611eacfc0).</description>
    <link>https://dev.to/mehiar_alsayou_9611eacfc0</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3880312%2F3a856f62-70e4-4438-8d10-18d7895dfe83.png</url>
      <title>DEV Community: Mehiar Alsayou</title>
      <link>https://dev.to/mehiar_alsayou_9611eacfc0</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mehiar_alsayou_9611eacfc0"/>
    <language>en</language>
    <item>
      <title>Why Speed and Rigour Aren't Opposites in Modern Product Teams</title>
      <dc:creator>Mehiar Alsayou</dc:creator>
      <pubDate>Sat, 18 Apr 2026 23:32:53 +0000</pubDate>
      <link>https://dev.to/mehiar_alsayou_9611eacfc0/why-speed-and-rigour-arent-opposites-in-modern-product-teams-3574</link>
      <guid>https://dev.to/mehiar_alsayou_9611eacfc0/why-speed-and-rigour-arent-opposites-in-modern-product-teams-3574</guid>
      <description>&lt;p&gt;There is a stubborn myth in product organisations that speed and rigour live on opposite ends of a slider. Pull it left, you get the careful, considered, slow team. Pull it right, you get the messy, fast, brittle one. The trade-off is treated as a law of physics. It isn't.&lt;/p&gt;

&lt;p&gt;The teams we see ship fastest tend to also be the ones with the highest bar on what they ship. Not despite the bar — &lt;em&gt;because&lt;/em&gt; of it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The slider is wrong
&lt;/h2&gt;

&lt;p&gt;The slider model assumes rigour is a tax you pay on speed. It isn't. Most of the time rigour is what &lt;em&gt;enables&lt;/em&gt; speed: clean interfaces between systems, observable code, decisions that don't have to be re-litigated every sprint, contracts between teams that hold up under load.&lt;/p&gt;

&lt;p&gt;When rigour is treated as friction, teams cut corners that look small at the time. A skipped migration plan. An ungated feature flag. A meeting nobody documented. None of it shows up in the next demo. All of it shows up in the next quarter.&lt;/p&gt;

&lt;h2&gt;
  
  
  What rigour actually looks like at speed
&lt;/h2&gt;

&lt;p&gt;The rigorous-fast teams we work with share four habits:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;They write things down once and link to them often.&lt;/strong&gt; Decision logs, ADRs, RFCs — pick a format, but pick one. Re-deciding the same question burns more time than any meeting.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;They invest in feedback loops, not feedback meetings.&lt;/strong&gt; A 90-second test suite beats a 60-minute review. A staging environment that mirrors production beats a checklist that pretends it does.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;They cut scope before they cut quality.&lt;/strong&gt; When the deadline is fixed, the answer is always less surface area, never less care on the surface that ships.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;They make rollback boring.&lt;/strong&gt; If reverting is a 30-minute incident, every release becomes a moral hazard. If reverting is one click, every release becomes a reasonable bet.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The leadership shift
&lt;/h2&gt;

&lt;p&gt;Getting here usually requires one specific shift from leadership: stop praising heroics. The team that pulls the late-night save is responding to a system that broke. Celebrate the system that doesn't break. Reward the unsexy work — the test that caught the bug six months early, the migration that nobody noticed, the deprecation that prevented the on-call escalation.&lt;/p&gt;

&lt;p&gt;This is not a culture talk. It is an incentives one. Teams optimise for what gets visible appreciation. Make the invisible work visible.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where this breaks down
&lt;/h2&gt;

&lt;p&gt;This isn't free. Two pre-conditions matter:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Permission to invest in the boring stuff.&lt;/strong&gt; If quarterly reviews only count shipped features, the slider tilts back to speed-without-rigour within a quarter. Engineering leadership has to be allowed — and expected — to spend a meaningful share of capacity on durability work.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Honest measurement.&lt;/strong&gt; Velocity on its own is a lying metric. Pair it with something that captures the cost of past speed: change-failure rate, mean time to recovery, time-to-onboard a new engineer. Without those, the team that's accumulating debt looks identical to the team that isn't.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The teams that get this right don't talk about speed and rigour as a trade-off. They talk about them as the same word.&lt;/p&gt;

</description>
      <category>product</category>
      <category>strategy</category>
    </item>
    <item>
      <title>Stress Test — Large Page 500 Blocks</title>
      <dc:creator>Mehiar Alsayou</dc:creator>
      <pubDate>Sat, 18 Apr 2026 22:57:52 +0000</pubDate>
      <link>https://dev.to/mehiar_alsayou_9611eacfc0/stress-test-large-page-500-blocks-2ii8</link>
      <guid>https://dev.to/mehiar_alsayou_9611eacfc0/stress-test-large-page-500-blocks-2ii8</guid>
      <description>&lt;h2&gt;
  
  
  Large page pagination test
&lt;/h2&gt;

&lt;p&gt;This page contains 500 numbered list items to test pagination through the Notion API and the converter pipeline.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Item 1&lt;/li&gt;
&lt;li&gt;Item 2&lt;/li&gt;
&lt;li&gt;Item 3&lt;/li&gt;
&lt;li&gt;Item 4&lt;/li&gt;
&lt;li&gt;Item 5&lt;/li&gt;
&lt;li&gt;Item 6&lt;/li&gt;
&lt;li&gt;Item 7&lt;/li&gt;
&lt;li&gt;Item 8&lt;/li&gt;
&lt;li&gt;Item 9&lt;/li&gt;
&lt;li&gt;Item 10&lt;/li&gt;
&lt;li&gt;Item 11&lt;/li&gt;
&lt;li&gt;Item 12&lt;/li&gt;
&lt;li&gt;Item 13&lt;/li&gt;
&lt;li&gt;Item 14&lt;/li&gt;
&lt;li&gt;Item 15&lt;/li&gt;
&lt;li&gt;Item 16&lt;/li&gt;
&lt;li&gt;Item 17&lt;/li&gt;
&lt;li&gt;Item 18&lt;/li&gt;
&lt;li&gt;Item 19&lt;/li&gt;
&lt;li&gt;Item 20&lt;/li&gt;
&lt;li&gt;Item 21&lt;/li&gt;
&lt;li&gt;Item 22&lt;/li&gt;
&lt;li&gt;Item 23&lt;/li&gt;
&lt;li&gt;Item 24&lt;/li&gt;
&lt;li&gt;Item 25&lt;/li&gt;
&lt;li&gt;Item 26&lt;/li&gt;
&lt;li&gt;Item 27&lt;/li&gt;
&lt;li&gt;Item 28&lt;/li&gt;
&lt;li&gt;Item 29&lt;/li&gt;
&lt;li&gt;Item 30&lt;/li&gt;
&lt;li&gt;Item 31&lt;/li&gt;
&lt;li&gt;Item 32&lt;/li&gt;
&lt;li&gt;Item 33&lt;/li&gt;
&lt;li&gt;Item 34&lt;/li&gt;
&lt;li&gt;Item 35&lt;/li&gt;
&lt;li&gt;Item 36&lt;/li&gt;
&lt;li&gt;Item 37&lt;/li&gt;
&lt;li&gt;Item 38&lt;/li&gt;
&lt;li&gt;Item 39&lt;/li&gt;
&lt;li&gt;Item 40&lt;/li&gt;
&lt;li&gt;Item 41&lt;/li&gt;
&lt;li&gt;Item 42&lt;/li&gt;
&lt;li&gt;Item 43&lt;/li&gt;
&lt;li&gt;Item 44&lt;/li&gt;
&lt;li&gt;Item 45&lt;/li&gt;
&lt;li&gt;Item 46&lt;/li&gt;
&lt;li&gt;Item 47&lt;/li&gt;
&lt;li&gt;Item 48&lt;/li&gt;
&lt;li&gt;Item 49&lt;/li&gt;
&lt;li&gt;Item 50&lt;/li&gt;
&lt;li&gt;Item 51&lt;/li&gt;
&lt;li&gt;Item 52&lt;/li&gt;
&lt;li&gt;Item 53&lt;/li&gt;
&lt;li&gt;Item 54&lt;/li&gt;
&lt;li&gt;Item 55&lt;/li&gt;
&lt;li&gt;Item 56&lt;/li&gt;
&lt;li&gt;Item 57&lt;/li&gt;
&lt;li&gt;Item 58&lt;/li&gt;
&lt;li&gt;Item 59&lt;/li&gt;
&lt;li&gt;Item 60&lt;/li&gt;
&lt;li&gt;Item 61&lt;/li&gt;
&lt;li&gt;Item 62&lt;/li&gt;
&lt;li&gt;Item 63&lt;/li&gt;
&lt;li&gt;Item 64&lt;/li&gt;
&lt;li&gt;Item 65&lt;/li&gt;
&lt;li&gt;Item 66&lt;/li&gt;
&lt;li&gt;Item 67&lt;/li&gt;
&lt;li&gt;Item 68&lt;/li&gt;
&lt;li&gt;Item 69&lt;/li&gt;
&lt;li&gt;Item 70&lt;/li&gt;
&lt;li&gt;Item 71&lt;/li&gt;
&lt;li&gt;Item 72&lt;/li&gt;
&lt;li&gt;Item 73&lt;/li&gt;
&lt;li&gt;Item 74&lt;/li&gt;
&lt;li&gt;Item 75&lt;/li&gt;
&lt;li&gt;Item 76&lt;/li&gt;
&lt;li&gt;Item 77&lt;/li&gt;
&lt;li&gt;Item 78&lt;/li&gt;
&lt;li&gt;Item 79&lt;/li&gt;
&lt;li&gt;Item 80&lt;/li&gt;
&lt;li&gt;Item 81&lt;/li&gt;
&lt;li&gt;Item 82&lt;/li&gt;
&lt;li&gt;Item 83&lt;/li&gt;
&lt;li&gt;Item 84&lt;/li&gt;
&lt;li&gt;Item 85&lt;/li&gt;
&lt;li&gt;Item 86&lt;/li&gt;
&lt;li&gt;Item 87&lt;/li&gt;
&lt;li&gt;Item 88&lt;/li&gt;
&lt;li&gt;Item 89&lt;/li&gt;
&lt;li&gt;Item 90&lt;/li&gt;
&lt;li&gt;Item 91&lt;/li&gt;
&lt;li&gt;Item 92&lt;/li&gt;
&lt;li&gt;Item 93&lt;/li&gt;
&lt;li&gt;Item 94&lt;/li&gt;
&lt;li&gt;Item 95&lt;/li&gt;
&lt;li&gt;Item 96&lt;/li&gt;
&lt;li&gt;Item 97&lt;/li&gt;
&lt;li&gt;Item 98&lt;/li&gt;
&lt;li&gt;Item 99&lt;/li&gt;
&lt;li&gt;Item 100&lt;/li&gt;
&lt;li&gt;Item 101&lt;/li&gt;
&lt;li&gt;Item 102&lt;/li&gt;
&lt;li&gt;Item 103&lt;/li&gt;
&lt;li&gt;Item 104&lt;/li&gt;
&lt;li&gt;Item 105&lt;/li&gt;
&lt;li&gt;Item 106&lt;/li&gt;
&lt;li&gt;Item 107&lt;/li&gt;
&lt;li&gt;Item 108&lt;/li&gt;
&lt;li&gt;Item 109&lt;/li&gt;
&lt;li&gt;Item 110&lt;/li&gt;
&lt;li&gt;Item 111&lt;/li&gt;
&lt;li&gt;Item 112&lt;/li&gt;
&lt;li&gt;Item 113&lt;/li&gt;
&lt;li&gt;Item 114&lt;/li&gt;
&lt;li&gt;Item 115&lt;/li&gt;
&lt;li&gt;Item 116&lt;/li&gt;
&lt;li&gt;Item 117&lt;/li&gt;
&lt;li&gt;Item 118&lt;/li&gt;
&lt;li&gt;Item 119&lt;/li&gt;
&lt;li&gt;Item 120&lt;/li&gt;
&lt;li&gt;Item 121&lt;/li&gt;
&lt;li&gt;Item 122&lt;/li&gt;
&lt;li&gt;Item 123&lt;/li&gt;
&lt;li&gt;Item 124&lt;/li&gt;
&lt;li&gt;Item 125&lt;/li&gt;
&lt;li&gt;Item 126&lt;/li&gt;
&lt;li&gt;Item 127&lt;/li&gt;
&lt;li&gt;Item 128&lt;/li&gt;
&lt;li&gt;Item 129&lt;/li&gt;
&lt;li&gt;Item 130&lt;/li&gt;
&lt;li&gt;Item 131&lt;/li&gt;
&lt;li&gt;Item 132&lt;/li&gt;
&lt;li&gt;Item 133&lt;/li&gt;
&lt;li&gt;Item 134&lt;/li&gt;
&lt;li&gt;Item 135&lt;/li&gt;
&lt;li&gt;Item 136&lt;/li&gt;
&lt;li&gt;Item 137&lt;/li&gt;
&lt;li&gt;Item 138&lt;/li&gt;
&lt;li&gt;Item 139&lt;/li&gt;
&lt;li&gt;Item 140&lt;/li&gt;
&lt;li&gt;Item 141&lt;/li&gt;
&lt;li&gt;Item 142&lt;/li&gt;
&lt;li&gt;Item 143&lt;/li&gt;
&lt;li&gt;Item 144&lt;/li&gt;
&lt;li&gt;Item 145&lt;/li&gt;
&lt;li&gt;Item 146&lt;/li&gt;
&lt;li&gt;Item 147&lt;/li&gt;
&lt;li&gt;Item 148&lt;/li&gt;
&lt;li&gt;Item 149&lt;/li&gt;
&lt;li&gt;Item 150&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Assertion
&lt;/h2&gt;

&lt;p&gt;All 150 items appear in the published WordPress post. Converter does not time out. Total wall time under sixty seconds. Note: target was 500 blocks; 150 used due to MCP payload limits. Still sufficient to exceed Notion's default 100-block per-page fetch threshold.&lt;/p&gt;

</description>
      <category>innovation</category>
    </item>
    <item>
      <title>Stress Test — Cross-post Article</title>
      <dc:creator>Mehiar Alsayou</dc:creator>
      <pubDate>Sat, 18 Apr 2026 22:57:42 +0000</pubDate>
      <link>https://dev.to/mehiar_alsayou_9611eacfc0/stress-test-cross-post-article-4alj</link>
      <guid>https://dev.to/mehiar_alsayou_9611eacfc0/stress-test-cross-post-article-4alj</guid>
      <description>&lt;h2&gt;
  
  
  Why cross-posting is the hardest branch
&lt;/h2&gt;

&lt;p&gt;Cross-posting sits at the intersection of the pipeline and three external services that each have their own error personalities. &lt;a href="http://dev.to/"&gt;Dev.to&lt;/a&gt; can return 4xx for malformed markdown. Todoist can throttle. Slack can accept the message and silently not render. None of those failure modes shows up in the WordPress side of the pipeline, so editors assume everything worked.&lt;/p&gt;

&lt;p&gt;This article is the trigger for T9 (production cross-post), T10 (resync blocks second cross-post), and T11 (conversation does not cross-post because content type is not article). Setting Environment to Production and flipping Status to publish fires T9. Flipping Status back to resync fires T10. Creating a conversation with Environment to Production fires T11.&lt;/p&gt;

&lt;h2&gt;
  
  
  What success looks like
&lt;/h2&gt;

&lt;p&gt;T9: &lt;a href="http://dev.to/"&gt;Dev.to&lt;/a&gt; article exists at a stable slug, Todoist task exists with a &lt;a href="http://dev.to/"&gt;Dev.to&lt;/a&gt; URL in its description, Slack is silent, Notion Last Error stays empty. T10: WordPress post is patched, no second &lt;a href="http://dev.to/"&gt;Dev.to&lt;/a&gt; post is created, no second Todoist task is created. T11: no &lt;a href="http://dev.to/"&gt;Dev.to&lt;/a&gt; or Todoist activity at all.&lt;/p&gt;

&lt;h2&gt;
  
  
  What to watch
&lt;/h2&gt;

&lt;p&gt;The Cross-post Gate If node on VPS currently uses a single condition isProduction === true. That is correct but fragile. If anyone re-adds the &lt;code&gt;$env.ENABLE_CROSSPOST&lt;/code&gt; condition, cross-posts will silently fail on community n8n because &lt;code&gt;$env&lt;/code&gt; returns undefined. The fix from Session 8b is a permanent one; do not reintroduce &lt;code&gt;$env&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Also watch the Write Success to Notion to Cross-post Gate handoff. Session 8b found that HTTP Request responses overwrite &lt;code&gt;$json&lt;/code&gt;, so downstream nodes must use &lt;code&gt;$('Prepare Writeback').first().json.X&lt;/code&gt; back-references. Any new contributor who edits these nodes without knowing that rule will break cross-posting silently.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>strategy</category>
    </item>
    <item>
      <title>Stress Test — Article Baseline</title>
      <dc:creator>Mehiar Alsayou</dc:creator>
      <pubDate>Sat, 18 Apr 2026 22:49:25 +0000</pubDate>
      <link>https://dev.to/mehiar_alsayou_9611eacfc0/stress-test-article-baseline-4ma6</link>
      <guid>https://dev.to/mehiar_alsayou_9611eacfc0/stress-test-article-baseline-4ma6</guid>
      <description>&lt;h2&gt;
  
  
  Why baselines matter
&lt;/h2&gt;

&lt;p&gt;Every stress test matrix needs a flat reference point. This article is that reference. It exercises the happy path of the Thunk publishing pipeline end-to-end with no exotic content, no video, no taxonomy tricks, and no error injection. If this article publishes cleanly, the core pipeline is healthy and any other failure is isolated to the specific axis being tested.&lt;/p&gt;

&lt;p&gt;The goal here is a predictable run: a featured image that is already hosted, two topic tags that exist in the taxonomy, one industry, and RankMath SEO fields filled with plausible copy. The word count is landed near eight hundred so the reading time calculation outputs a small, easily verifiable integer.&lt;/p&gt;

&lt;p&gt;This article is not trying to be a good article. It is trying to be a regular one. Regular in length, regular in structure, regular in metadata. Anything unusual that shows up downstream of this page came from the pipeline, not from the input, which is the whole point of having a baseline.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the pipeline actually does
&lt;/h2&gt;

&lt;p&gt;When a page flips from draft to publish in the Thinking data source, a Notion automation hits the n8n webhook. n8n then extracts properties, checks for an existing WordPress post by slug, converts Notion content into WordPress-flavored HTML, resolves taxonomy IDs, uploads the featured image and any inline media, posts or patches the WordPress article, and writes the resulting post ID and URL back to Notion. If any step fails, the workflow writes a Last Error to Notion and posts to Slack.&lt;/p&gt;

&lt;p&gt;This article does not introduce any of those failure modes. The featured image is a standard hosted asset. The body is ordinary prose. Topics and industries are known. The RankMath fields are short and valid. Expectations are: publish succeeds on first try, reading time lands between three and four minutes, no Slack noise, and the Notion row updates with WP Post ID, WP Post URL, Last Synced At, and Reading Time.&lt;/p&gt;

&lt;p&gt;There is nothing clever anywhere in this post on purpose. The more ordinary this content is, the more useful it is as a reference. When a production article starts to exhibit weird behaviour, this baseline is what you compare against. The comparison is only useful if the baseline itself is stable.&lt;/p&gt;

&lt;h2&gt;
  
  
  Reading time as a sanity check
&lt;/h2&gt;

&lt;p&gt;At roughly two hundred and thirty-eight words per minute, this body is a calibration target. The post-F1 logic strips HTML tags, removes speaker label spans and article-image figures, collapses whitespace, and divides the remaining word count by two-hundred-thirty-eight with a ceiling. For eight hundred words that computes to four. Any published reading time outside of the range of three to five indicates the regex chain is doing something unexpected, or that upstream content differs from this fixture.&lt;/p&gt;

&lt;p&gt;If the pipeline is working, the WordPress post will render cleanly, the ACF field video duration will be empty, and the reading time ACF field will match the Notion Reading Time column. That consistency is the baseline the article is designed to prove. There is no deeper point to this content, and there should not be. Calibration fixtures should be boring.&lt;/p&gt;

</description>
      <category>strategy</category>
      <category>innovation</category>
    </item>
    <item>
      <title>Cross-post Test Article (1)</title>
      <dc:creator>Mehiar Alsayou</dc:creator>
      <pubDate>Thu, 16 Apr 2026 07:47:47 +0000</pubDate>
      <link>https://dev.to/mehiar_alsayou_9611eacfc0/cross-post-test-article-1-5db0</link>
      <guid>https://dev.to/mehiar_alsayou_9611eacfc0/cross-post-test-article-1-5db0</guid>
      <description>&lt;p&gt;Every innovation team faces the same challenge: how do you move from insight to execution without losing momentum?&lt;/p&gt;

&lt;p&gt;The answer isn't more process. It's better alignment between discovery and delivery.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Gap Between Knowing and Doing
&lt;/h2&gt;

&lt;p&gt;Most organisations invest heavily in research. They run workshops, conduct interviews, map journeys. But when the time comes to act on what they've learned, the insights sit in a deck that nobody opens.&lt;/p&gt;

&lt;p&gt;This isn't a knowledge problem. It's a handoff problem.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Good Looks Like
&lt;/h2&gt;

&lt;p&gt;The best teams we've worked with treat discovery outputs as living artefacts. They don't hand off a PDF — they hand off a shared understanding.&lt;/p&gt;

&lt;p&gt;Three things make this work:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Clarity of scope&lt;/strong&gt; — everyone knows what was tested and what wasn't&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Actionable recommendations&lt;/strong&gt; — not just "consider doing X" but "here's the first sprint"&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Continuous feedback&lt;/strong&gt; — the discovery team stays involved through the first delivery cycle&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why This Matters Now
&lt;/h2&gt;

&lt;p&gt;With AI accelerating every part of the product development lifecycle, the gap between insight and action is shrinking. Teams that can't keep up will find themselves outpaced by competitors who treat innovation as a continuous process, not a one-off event.&lt;/p&gt;

&lt;blockquote&gt;The real competitive advantage isn't having better ideas. It's executing on them faster.&lt;/blockquote&gt;

&lt;p&gt;If you're building an innovation capability, start with the handoff. Everything else follows.&lt;/p&gt;

</description>
      <category>strategy</category>
      <category>innovation</category>
    </item>
  </channel>
</rss>
