<?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: HokaGue-Devs</title>
    <description>The latest articles on DEV Community by HokaGue-Devs (@hokague).</description>
    <link>https://dev.to/hokague</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4169742%2F0ca1314f-565d-4a51-87f9-09c75c4a02a9.png</url>
      <title>DEV Community: HokaGue-Devs</title>
      <link>https://dev.to/hokague</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/hokague"/>
    <language>en</language>
    <item>
      <title>A Bundle Budget Is a Product Requirement</title>
      <dc:creator>HokaGue-Devs</dc:creator>
      <pubDate>Mon, 19 Oct 2026 09:15:48 +0000</pubDate>
      <link>https://dev.to/hokague/a-bundle-budget-is-a-product-requirement-23jd</link>
      <guid>https://dev.to/hokague/a-bundle-budget-is-a-product-requirement-23jd</guid>
      <description>&lt;p&gt;A business application can be functionally correct and still fail its first impression because the initial JavaScript bundle is too large.&lt;/p&gt;

&lt;p&gt;A performance budget makes the trade-off explicit: what loads immediately, what can be split, and what belongs behind a route or interaction. It also gives a team a measurable regression signal instead of relying on anecdotes.&lt;/p&gt;

&lt;p&gt;Power Apps Code Apps deserve the same discipline as any web application. Bundle size, startup time, and data volume are part of the product quality users experience.&lt;/p&gt;

&lt;h1&gt;
  
  
  PowerPlatform #React #TypeScript #Performance #Architecture
&lt;/h1&gt;

</description>
      <category>powerplatform</category>
      <category>typescript</category>
      <category>architecture</category>
      <category>lowcode</category>
    </item>
    <item>
      <title>Server-Side Filtering Is a Scaling Decision</title>
      <dc:creator>HokaGue-Devs</dc:creator>
      <pubDate>Sat, 17 Oct 2026 09:00:00 +0000</pubDate>
      <link>https://dev.to/hokague/server-side-filtering-is-a-scaling-decision-470h</link>
      <guid>https://dev.to/hokague/server-side-filtering-is-a-scaling-decision-470h</guid>
      <description>&lt;p&gt;A list that feels fast with a few hundred rows can become unusable once the data grows.&lt;/p&gt;

&lt;p&gt;Loading everything into the browser and filtering locally increases memory use, exposes more data than necessary, and makes response time depend on the total table size.&lt;/p&gt;

&lt;p&gt;Pagination, filtering, and sorting should happen at the server boundary when the volume justifies it. The UI should request the slice it needs and keep the query aligned with the user’s permissions.&lt;/p&gt;

&lt;p&gt;Performance and security meet at the same boundary: retrieve only what the user is allowed to see and what the screen can actually display.&lt;/p&gt;

&lt;h1&gt;
  
  
  PowerPlatform #Dataverse #Performance #Architecture #LowCode
&lt;/h1&gt;

</description>
      <category>powerplatform</category>
      <category>architecture</category>
      <category>lowcode</category>
    </item>
    <item>
      <title>A Degraded Mode Is Better Than Silent Failure</title>
      <dc:creator>HokaGue-Devs</dc:creator>
      <pubDate>Fri, 16 Oct 2026 18:00:00 +0000</pubDate>
      <link>https://dev.to/hokague/a-degraded-mode-is-better-than-silent-failure-o1f</link>
      <guid>https://dev.to/hokague/a-degraded-mode-is-better-than-silent-failure-o1f</guid>
      <description>&lt;p&gt;When a connector or Power Automate flow is unavailable, the worst outcome is a screen that appears to have accepted the action.&lt;/p&gt;

&lt;p&gt;A degraded mode should make the failure visible, preserve the user’s intent when possible, and provide a next step. It should distinguish “saved,” “queued,” and “not completed.”&lt;/p&gt;

&lt;p&gt;The message is part of the business process. A user who believes a notification was sent will act differently from one who knows it is waiting for retry.&lt;/p&gt;

&lt;h1&gt;
  
  
  PowerPlatform #PowerAutomate #Dataverse #Reliability #LowCode
&lt;/h1&gt;

</description>
      <category>powerplatform</category>
      <category>powerautomate</category>
      <category>lowcode</category>
    </item>
    <item>
      <title>Reminders Need Escalation Rules</title>
      <dc:creator>HokaGue-Devs</dc:creator>
      <pubDate>Fri, 16 Oct 2026 09:00:01 +0000</pubDate>
      <link>https://dev.to/hokague/reminders-need-escalation-rules-kon</link>
      <guid>https://dev.to/hokague/reminders-need-escalation-rules-kon</guid>
      <description>&lt;p&gt;Sending one reminder does not solve a stalled approval. A useful reminder policy defines the delay, the recipient, the number of attempts, and the escalation path.&lt;/p&gt;

&lt;p&gt;The threshold should be configurable rather than buried in a flow. The history should show when the reminder was sent and when responsibility moved to a substitute or higher level.&lt;/p&gt;

&lt;p&gt;A process that can notify but cannot escalate still depends on someone noticing the notification.&lt;/p&gt;

&lt;h1&gt;
  
  
  PowerPlatform #PowerAutomate #Dataverse #Workflow #Architecture
&lt;/h1&gt;

</description>
      <category>powerplatform</category>
      <category>powerautomate</category>
      <category>architecture</category>
    </item>
    <item>
      <title>Delegation Should Have an End Date</title>
      <dc:creator>HokaGue-Devs</dc:creator>
      <pubDate>Thu, 15 Oct 2026 18:00:01 +0000</pubDate>
      <link>https://dev.to/hokague/delegation-should-have-an-end-date-2lpe</link>
      <guid>https://dev.to/hokague/delegation-should-have-an-end-date-2lpe</guid>
      <description>&lt;p&gt;Absence handling often begins as a manual change to someone’s role. That creates a second problem: nobody remembers to undo it.&lt;/p&gt;

&lt;p&gt;A proper delegation has a scope, a start date, an end date, and an audit entry. Permission resolution checks whether the delegation is active for the requested entity and workflow level.&lt;/p&gt;

&lt;p&gt;The end date is not a convenience. It is the control that prevents a temporary replacement from becoming an invisible permanent privilege.&lt;/p&gt;

&lt;h1&gt;
  
  
  PowerPlatform #Dataverse #Security #Governance #Architecture
&lt;/h1&gt;

</description>
      <category>powerplatform</category>
      <category>architecture</category>
      <category>microsoft</category>
    </item>
    <item>
      <title>Build the “What Is Waiting for Me?” View First</title>
      <dc:creator>HokaGue-Devs</dc:creator>
      <pubDate>Thu, 15 Oct 2026 09:00:00 +0000</pubDate>
      <link>https://dev.to/hokague/build-the-what-is-waiting-for-me-view-first-132h</link>
      <guid>https://dev.to/hokague/build-the-what-is-waiting-for-me-view-first-132h</guid>
      <description>&lt;p&gt;A validator should not have to browse five lists to discover the one request waiting for a decision.&lt;/p&gt;

&lt;p&gt;The most useful first screen is often not a dashboard full of decorative metrics. It is a focused view of the user’s pending actions, grouped by urgency and workflow level.&lt;/p&gt;

&lt;p&gt;That view depends on correct role resolution, entity scoping, server-side filtering, and durable state. It is therefore a good architectural test: if “what awaits me” is difficult to compute, the permissions or workflow model may be too scattered.&lt;/p&gt;

&lt;p&gt;Design the landing experience around the decision the user came to make.&lt;/p&gt;

&lt;h1&gt;
  
  
  PowerPlatform #PowerApps #Dataverse #UX #LowCode
&lt;/h1&gt;

</description>
      <category>powerplatform</category>
      <category>powerapps</category>
      <category>lowcode</category>
    </item>
    <item>
      <title>A Data Health Screen Finds Problems Before Users Do</title>
      <dc:creator>HokaGue-Devs</dc:creator>
      <pubDate>Wed, 14 Oct 2026 18:00:01 +0000</pubDate>
      <link>https://dev.to/hokague/a-data-health-screen-finds-problems-before-users-do-2783</link>
      <guid>https://dev.to/hokague/a-data-health-screen-finds-problems-before-users-do-2783</guid>
      <description>&lt;p&gt;A user should not discover that a reference table is incomplete halfway through a business process.&lt;/p&gt;

&lt;p&gt;If an entity has no responsible direction, a category has no type, or a validator is missing, the application should detect it at startup and explain the impact. Otherwise the user experiences a generic empty list or a failed notification and concludes that the application is broken.&lt;/p&gt;

&lt;p&gt;A health screen turns silent data defects into actionable checks: what is missing, who can fix it, and which workflows are affected.&lt;/p&gt;

&lt;p&gt;This is not an administration luxury. In data-driven applications, the quality of reference data determines whether the process can execute at all.&lt;/p&gt;

&lt;h1&gt;
  
  
  PowerPlatform #Dataverse #DataQuality #Governance #LowCode
&lt;/h1&gt;

</description>
      <category>powerplatform</category>
      <category>lowcode</category>
      <category>microsoft</category>
    </item>
    <item>
      <title>Import and Export Need a Contract, Not Just a Button</title>
      <dc:creator>HokaGue-Devs</dc:creator>
      <pubDate>Wed, 14 Oct 2026 09:00:01 +0000</pubDate>
      <link>https://dev.to/hokague/import-and-export-need-a-contract-not-just-a-button-3i00</link>
      <guid>https://dev.to/hokague/import-and-export-need-a-contract-not-just-a-button-3i00</guid>
      <description>&lt;p&gt;“Add import” is not a complete requirement. Users need to know which columns are accepted, which values are valid, what is mandatory, and what happens when one row fails.&lt;/p&gt;

&lt;p&gt;A reliable import workflow starts by downloading a template, validates before writing, reports errors by row, and makes retries safe. Export should preserve enough structure to be useful without leaking fields the user is not authorized to see.&lt;/p&gt;

&lt;p&gt;The template is not documentation stored somewhere else. It is part of the user experience and part of the contract between the application and its data.&lt;/p&gt;

&lt;p&gt;A good test includes an empty file, a duplicate, an invalid reference, a partial failure, and a file produced by the export itself.&lt;/p&gt;

&lt;h1&gt;
  
  
  PowerPlatform #Dataverse #PowerApps #DataQuality #LowCode
&lt;/h1&gt;

</description>
      <category>powerplatform</category>
      <category>lowcode</category>
      <category>microsoft</category>
    </item>
    <item>
      <title>Sensitive Financial Fields Need More Than Hidden Columns</title>
      <dc:creator>HokaGue-Devs</dc:creator>
      <pubDate>Tue, 13 Oct 2026 18:00:01 +0000</pubDate>
      <link>https://dev.to/hokague/sensitive-financial-fields-need-more-than-hidden-columns-17ak</link>
      <guid>https://dev.to/hokague/sensitive-financial-fields-need-more-than-hidden-columns-17ak</guid>
      <description>&lt;p&gt;A field hidden by the interface is still readable by an export, an API call, or a technical account. Visibility rules and encryption solve different problems.&lt;/p&gt;

&lt;p&gt;For sensitive financial values, the threat model should cover storage, transport, exports, logs, and operational access. A UI that masks a number while the database stores it in clear text has improved presentation, not confidentiality.&lt;/p&gt;

&lt;p&gt;A migration also needs a compatibility plan: introduce the protected field, read from the new field first, fall back to the legacy value during transition, and remove the clear field only after verification.&lt;/p&gt;

&lt;p&gt;Security decisions are architectural when the data is financial or personal. They should not depend on whether the current screen happens to display the value.&lt;/p&gt;

&lt;h1&gt;
  
  
  PowerPlatform #Dataverse #Security #Compliance #Architecture
&lt;/h1&gt;

</description>
      <category>powerplatform</category>
      <category>architecture</category>
      <category>microsoft</category>
    </item>
    <item>
      <title>Bulk Operations Must Be Safe to Retry</title>
      <dc:creator>HokaGue-Devs</dc:creator>
      <pubDate>Tue, 13 Oct 2026 12:51:31 +0000</pubDate>
      <link>https://dev.to/hokague/bulk-operations-must-be-safe-to-retry-48ek</link>
      <guid>https://dev.to/hokague/bulk-operations-must-be-safe-to-retry-48ek</guid>
      <description>&lt;p&gt;A bulk operation that fails at item 437 is not exceptional. Networks break, sessions expire, and flows time out.&lt;/p&gt;

&lt;p&gt;The dangerous design is a process that cannot be restarted safely. Run it again and it creates duplicates, sends duplicate notifications, or advances records twice.&lt;/p&gt;

&lt;p&gt;Idempotence means the same operation can be applied again without changing the final result after the first successful application. In practice, that requires stable business keys, explicit processing states, and writes that can recognize work already completed.&lt;/p&gt;

&lt;p&gt;The retry strategy should be designed before the first CSV import or mass transition. A progress log should distinguish pending, completed, and failed items, with enough detail to resume only what is necessary.&lt;/p&gt;

&lt;p&gt;“Just run it again” is a safe instruction only when idempotence has been designed deliberately.&lt;/p&gt;

&lt;h1&gt;
  
  
  PowerPlatform #PowerAutomate #Dataverse #Integration #Architecture
&lt;/h1&gt;

</description>
      <category>powerplatform</category>
      <category>architecture</category>
      <category>microsoft</category>
    </item>
    <item>
      <title>Optimistic Locking Prevents Silent Overwrites</title>
      <dc:creator>HokaGue-Devs</dc:creator>
      <pubDate>Mon, 12 Oct 2026 18:00:04 +0000</pubDate>
      <link>https://dev.to/hokague/optimistic-locking-prevents-silent-overwrites-3782</link>
      <guid>https://dev.to/hokague/optimistic-locking-prevents-silent-overwrites-3782</guid>
      <description>&lt;p&gt;Two people open the same request. Person A edits the amount. Person B edits the comment and saves later. Without optimistic locking, B can overwrite A’s change with an older snapshot.&lt;/p&gt;

&lt;p&gt;The application may report success while silently losing valid work. That is worse than an explicit conflict because nobody knows a decision was replaced.&lt;/p&gt;

&lt;p&gt;A practical approach stores a version or row timestamp and sends it with the update. The server accepts the write only if the version is still current. Otherwise, the user receives a conflict message and can compare before deciding what to keep.&lt;/p&gt;

&lt;p&gt;This is especially important for Dataverse-backed Code Apps where several screens, flows, and users can touch the same record.&lt;/p&gt;

&lt;p&gt;Concurrency is not an edge case when a process is shared. It is the normal case waiting to happen.&lt;/p&gt;

&lt;h1&gt;
  
  
  PowerPlatform #Dataverse #React #Architecture #LowCode
&lt;/h1&gt;

</description>
      <category>powerplatform</category>
      <category>architecture</category>
      <category>lowcode</category>
    </item>
    <item>
      <title>Notify the Role, Never the Person</title>
      <dc:creator>HokaGue-Devs</dc:creator>
      <pubDate>Thu, 08 Oct 2026 18:00:00 +0000</pubDate>
      <link>https://dev.to/hokague/notify-the-role-never-the-person-3o72</link>
      <guid>https://dev.to/hokague/notify-the-role-never-the-person-3o72</guid>
      <description>&lt;p&gt;A validation workflow with four levels will, sooner or later, break this rule:&lt;br&gt;
someone sends an email notification to a specific person instead of to&lt;br&gt;
whoever currently holds the role. It looks harmless - "just email the&lt;br&gt;
manager" - until that manager goes on leave, changes team, or the role gets&lt;br&gt;
reassigned, and the notification keeps going to someone who no longer has&lt;br&gt;
any say in the decision.&lt;/p&gt;
&lt;h2&gt;
  
  
  The invariant
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Notifications target a role, never a person.&lt;/strong&gt; The recipient is derived&lt;br&gt;
from the role expected at the workflow level being notified - and &lt;em&gt;every&lt;/em&gt;&lt;br&gt;
holder of that role receives it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;recipientsFor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;level&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;WorkflowLevel&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;entityId&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt; &lt;span class="nx"&gt;User&lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;// resolves to "everyone currently holding the expected role for this level&lt;/span&gt;
  &lt;span class="c1"&gt;// and entity" - never a stored person reference&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Why "just email the person" always comes back to bite
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Roles change, hardcoded emails don't.&lt;/strong&gt; The day someone leaves or
switches teams, every notification still pointing at them silently stops
reaching anyone who can act.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Delegation becomes possible for free.&lt;/strong&gt; If the recipient is "whoever
holds this role," adding a temporary delegate (someone on leave) is a
one-line change to role resolution - not a hunt through every place an
email address was hardcoded.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Auditability.&lt;/strong&gt; "Who was supposed to be notified at level 3 last March"
is answerable from role history, not from a snapshot of someone's inbox
three resignations ago.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The practical rule of thumb
&lt;/h2&gt;

&lt;p&gt;If your notification code reads a person's name, email, or user ID directly&lt;br&gt;
from a record instead of asking "who currently holds the expected role here,"&lt;br&gt;
that's the bug waiting for the next org change.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;I work on Power Platform / Dataverse architecture (Code Apps, approval&lt;br&gt;
workflows, role-based notifications). Happy to discuss your project's&lt;br&gt;
architecture if you're scoping something similar.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>powerplatform</category>
      <category>architecture</category>
      <category>lowcode</category>
      <category>microsoft</category>
    </item>
  </channel>
</rss>
